CN111782551B - 针对区块链项目的测试方法、装置及计算机设备 - Google Patents

针对区块链项目的测试方法、装置及计算机设备 Download PDF

Info

Publication number
CN111782551B
CN111782551B CN202010772197.6A CN202010772197A CN111782551B CN 111782551 B CN111782551 B CN 111782551B CN 202010772197 A CN202010772197 A CN 202010772197A CN 111782551 B CN111782551 B CN 111782551B
Authority
CN
China
Prior art keywords
code
test
file
proposal message
consensus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010772197.6A
Other languages
English (en)
Other versions
CN111782551A (zh
Inventor
陈金龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010772197.6A priority Critical patent/CN111782551B/zh
Publication of CN111782551A publication Critical patent/CN111782551A/zh
Application granted granted Critical
Publication of CN111782551B publication Critical patent/CN111782551B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Business, Economics & Management (AREA)
  • Databases & Information Systems (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Economics (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Marketing (AREA)
  • Development Economics (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例提供一种针对区块链项目的测试方法、装置及计算机设备,其中方法包括:测试平台针对注入了用于模拟攻击场景的逻辑代码的代码数据包进行编译,生成可执行文件,并将可执行文件发送至目标共识节点;目标共识节点在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令后,在区块链网络中广播第一测试提案消息,并将关于第一测试提案消息的共识结果和执行日志记录到测试文件中;测试平台从目标共识节点处获取测试文件,并基于测试文件分析测试结果。通过本申请实施例可以有效提高异常测试效率以及攻击场景的模拟效果和准确性。

Description

针对区块链项目的测试方法、装置及计算机设备
技术领域
本申请涉及计算机技术领域,尤其涉及针对区块链项目的测试方法、针对区块链项目的测试装置、计算机设备及计算机可读存储介质。
背景技术
区块链是一种多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、难以篡改、防止抵赖的记账技术,也就是分布式账本技术。
在区块链产品迭代周期内,研发工程师将开发好的区块链项目提测到REQ平台(即软件研发提测流程管理平台),之后触发测试执行。测试人员在对区块链项目完成基本的功能测试之后,会进一步进行异常测试,异常测试主要通过模拟攻击场景来测试区块链项目的鲁棒性,从而检测区块链项目是否存在异常。
目前,一般采用网络抓包的形式,人工过滤协议数据并篡改某些数据,从而达到模攻击场景的目的。但这样的方式工作量大,需提前了解区块链协议数据,并且存在网络拆包、分包、组包和包加密的技术风险,所以会存在异常测试效率低、数据篡改精准性差导致的攻击场景模拟效果不好等问题。
发明内容
本申请实施例提供了一种针对区块链项目的测试方法、装置及计算机设备,可以有效提高异常测试效率以及攻击场景的模拟效果和准确性。
第一方面,本申请实施例提供了一种针对区块链项目的测试方法,所述方法由区块链网络中的目标共识节点执行,所述方法包括:
获取可执行文件,所述可执行文件是对待测试区块链项目的代码数据包进行编译后得到的,所述代码数据包中包括用于模拟攻击场景的逻辑代码;
在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令后,在区块链网络中广播第一测试提案消息,并将关于所述第一测试提案消息的共识结果和执行日志记录到测试文件中;
当接收到第二测试提案消息时,对所述第二测试提案消息进行共识,并将关于所述第二测试提案消息的共识结果和执行日志记录到所述测试文件中;
响应文件获取请求,将所述测试文件发送至测试平台,以使得所述测试平台基于所述测试文件分析所述待测试区块链项目的测试结果。
第二方面,本申请实施例提供了另一种针对区块链项目的测试方法,所述方法包括:
获取待测试区块链项目的代码数据包;
从所述代码数据包的代码中确定插桩点,并在所述插桩点处注入用于模拟攻击场景的逻辑代码;
针对注入所述逻辑代码的代码数据包进行编译,生成可执行文件,并将所述可执行文件发送至区块链网络中的目标共识节点;
激活所述逻辑代码所模拟的攻击场景,以在所述目标共识节点执行所述可执行文件的过程中,在所述攻击场景下对所述待测试区块链项目进行测试。
对应于第一方面所述的方法,本申请实施例提供了一种针对区块链项目的测试装置,所述装置包括:
获取单元,用于获取可执行文件,所述可执行文件是对待测试区块链项目的代码数据包进行编译后得到的,所述代码数据包中包括用于模拟攻击场景的逻辑代码;
处理单元,用于在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令后,触发收发单元在区块链网络中广播第一测试提案消息;
记录单元,用于将关于所述第一测试提案消息的共识结果和执行日志记录到测试文件中;
所述处理单元,还用于当所述收发单元接收到第二测试提案消息时,对所述第二测试提案消息进行共识;
所述记录单元,还用于将关于所述第二测试提案消息的共识结果和执行日志记录到所述测试文件中;
所述处理单元,还用于响应文件获取请求,触发所述收发单元将所述测试文件发送至测试平台,以使得所述测试平台基于所述测试文件分析所述待测试区块链项目的测试结果。
在一实施例中,所述处理单元,具体用于:
在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令构造虚假区块提案消息;将所述虚假区块提案消息作为第一测试提案消息,并触发所述收发单元在区块链网络中广播所述第一测试提案消息。
在一实施例中,所述处理单元,具体用于:
执行所述逻辑代码所对应的指令对生成的正常区块提案消息进行篡改;将篡改后的区块提案消息作为虚假区块提案消息。
对应于第二方面所述的方法,本申请实施例提供了另一种针对区块链项目的测试装置,所述装置包括:
获取单元,用于获取待测试区块链项目的代码数据包;
处理单元,用于从所述代码数据包的代码中确定插桩点,并在所述插桩点处注入用于模拟攻击场景的逻辑代码;
所述处理单元,还用于针对注入所述逻辑代码的代码数据包进行编译,生成可执行文件;
收发单元,用于将所述可执行文件发送至区块链网络中的目标共识节点;
所述处理单元,还用于激活所述逻辑代码所模拟的攻击场景,以在所述目标共识节点执行所述可执行文件的过程中,在所述攻击场景下对所述待测试区块链项目进行测试。
在一实施例中,所述处理单元,具体用于:
从所述代码数据包的代码中确定与区块提案消息相关的第一关联代码;基于所述第一关联代码所在的位置确定插桩点;在所述插桩点处注入用于模拟构造虚假区块提案消息的攻击场景的逻辑代码。
在一实施例中,所述处理单元,具体用于:
从所述代码数据包的代码中确定与区块提案共识相关的第二关联代码;基于所述第二关联代码所在的位置确定插桩点;在所述插桩点处注入用于模拟构造虚假共识数据的攻击场景的逻辑代码。
在一实施例中,所述代码数据包中包括至少一个代码文件,所述处理单元,具体用于:
针对所述至少一个代码文件中注入所述逻辑代码的代码文件进行编译,生成中间文件;基于所述中间文件,对所述待测试区块链项目的代码数据包进行编译,生成可执行文件。
在一实施例中,所述处理单元,具体用于:
触发所述收发单元向所述目标共识节点发送激活代码,以使得所述目标共识节点通过运行所述激活代码触发所述逻辑代码所模拟的攻击场景的激活;或者,通过修改目标共识节点的环境变量触发所述逻辑代码所模拟的攻击场景的激活。
相应地,本申请实施例提供了一种计算机设备,包括:处理器、通信接口和存储器,所述处理器、所述通信接口和所述存储器相互连接,其中,所述存储器存储有可执行程序代码,所述处理器用于调用所述可执行程序代码,执行上述第一方面所述的针对区块链项目的测试方法,或者执行上述第二方面所述的针对区块链项目的测试方法。
相应地,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的针对区块链项目的测试方法,或者执行上述第二方面所述的针对区块链项目的测试方法。
相应地,本申请实施例还提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行上述第一方面所述的针对区块链项目的测试方法,或者执行上述第二方面所述的针对区块链项目的测试方法。
采用本申请实施例提供的针对区块链项目的测试方法,一方面,通过在待测试区块链项目的代码中注入用于模拟攻击场景的逻辑代码,可以在测试过程中精准篡改数据,从而保证攻击场景的模拟准确性,有效提高攻击场景的模拟效果。另一方面,可以实现区块链项目异常测试的自动化,有效提高异常测试效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种分布式***的架构示意图;
图2是本申请实施例提供的一种区块的结构示意图;
图3是本申请实施例提供的一种区块链网络的架构示意图;
图4是本申请实施例提供的另一种区块链网络的架构示意图;
图5是本申请实施例提供的一种针对区块链项目的测试方法的流程示意图;
图6示出了一种用于模拟攻击场景的逻辑代码;
图7示出了注入图6所示逻辑代码的代码文件编译后的中间文件内容;
图8是本申请实施例提供的另一种针对区块链项目的测试方法的流程示意图;
图9示出了一种异常测试流程;
图10示出了另一种异常测试流程;
图11是本申请实施例提供的又一种针对区块链项目的测试方法的流程示意图;
图12是本申请实施例提供的一种针对区块链项目的测试装置的结构示意图;
图13是本申请实施例提供的另一种针对区块链项目的测试装置的结构示意图;
图14是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先,对本申请实施例所涉及的一些关键术语进行介绍:
记账节点:又叫出块节点、主节点(Leader节点)。在区块链应用场景中,每个打包周期内,需要记账节点将若干交易列表打包成区块结构,并广播给区块链网络中的其他节点共识;记账节点也就是生成区块并发起区块提案的节点。
BFT共识:即拜占庭容错共识。拜占庭容错技术是一类分布式计算领域的容错技术,假设分布式***拥有n个节点,并假设整个分布式***中拜占庭节点不超过m台(n≥3m+1),则整个分布式***可正常运行,即容许n/3个节点出现异常。
区块提案:在区块链生命周期的开始,记账节点扫描当前节点的交易池,当交易池列表不为空时,触发生成区块提案,并基于区块提案生成区块提案消息。区块提案消息包括区块高度、区块头、merkle根、交易数据(如交易列表)等,区块提案消息广播给区块链网络中的其他节点以完成BFT共识。
P2P网络:对等网络,该网络中的节点角色既可以是客户端,也可以是服务器。即该网络中的每一台计算机既能充当网络服务的请求者,又对其它计算机的请求做出响应,提供资源、服务和内容。
FailPoint:它是FreeBSD failpoints的Golang实现,可以在代码中注入错误或异常行为,用于各种复杂***中模拟错误处理来提高***的容错性、正确性和稳定性。
REQ:软件研发提测流程管理平台,管理软件版本开发、提测、缺陷提交、回归测试、发布整个生命周期。
随着科技时代的到来和移动互联网的发展,网络变革的步伐也愈来愈快,实现同一领域或多个领域的信息融合,为客户提供全方位信息化方案的过程亦面临着体系结构的改进、支撑重心转移等新的挑战。因此,区块链技术作为分布式账本的一种特定实现,凭借其存储和管理数据的天然优势,逐渐成为各个领域存储数据和交易数据的首选方式。
区块链网络是一种分布式***,分布式***可以由多个节点通过网络通信的形式连接形成。其中,节点可以是接入网络中的任意形式的计算设备,如服务器、终端等计算机设备。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。节点之间可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
参见图1,是本申请实施例提供的分布式***应用于区块链网络的一个可选的架构示意图。区块链网络由多个节点形成,节点之间形成组成的点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。在区块链网络中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作***层和应用层。
参见图1示出的区块链网络中各节点的功能,涉及的功能包括:
1)路由,节点具有的基本功能,用于支持节点之间的通信。
节点除具有路由功能外,还可以具有以下功能:
2)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链网络中节点提交的记录数据,例如交易数据等。
参见图2,是本申请实施例提供的区块结构(Block Structure)的一个可选的示意图,每个区块中包括本区块存储数据记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链(Blockchain)。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链,本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
3)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链网络中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
3.1)钱包,用于提供进行虚拟资源的交易的功能,包括发起交易即,将当前交易的交易记录发送给区块链网络中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中。
3.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链网络中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
3.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的虚拟资源转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
4)共识,用于解决并保证每一笔交易或者数据在所有记账节点上的一致性和正确性问题。区块链的共识机制就是确定达成某种共识和维护共识的方式。区块链的共识机制使其在不依靠中心化组织的情况下,依然大规模高效协作完成运转。
参见图3,是本申请实施例提供的一种区块链网络的架构示意图。如图3所示,区块链网络中的节点可以包括银行、保险公司、政府大楼、商铺、学校以及医院等所对应的终端设备。银行、保险公司、政府大楼、商铺、学校以及医院所对应的终端设备均参与同一区块链网络的管理和处理,并且还可以参与监督交易的合法性,以达到区块链网络对交易数据的处理或存储的公平性。同时,上述提及到的银行、保险公司、政府大楼、商铺、学校以及医院都是分属于不同的领域,不同领域的信息融合和交互可以更好地提升社会工作的质量和效率。区块链网络中的任意节点可以对获取的交易数据进行校验,得到的校验结果为校验成功时,可以基于该交易数据生成区块,并将该区块发布至区块链,以使区块链网络中的其他各个终端设备均可对该区块进行分布式存储。其中,各个终端设备均可在该区块共识通过之后对该区块进行分布式存储。比如图3所示,区块链网络中的节点可以包括银行、保险公司、政府大楼、商铺、学校以及医院所对应的终端设备,并且银行、保险公司、政府大楼、商铺、学校以及医院所对应的终端设备可以对同一用户A的身份信息等进行分布式存储,因此该用户A到任意一家机构均可查询到自己的身份信息。
区块链的生命周期如下:1、客户端发送交易给节点,节点通过P2P网络广播交易到区块链网络中的其他节点。2、利用共识机制随机选出记账节点。3、记账节点将若干交易列表打包组装成区块结构,生成区块提案,并基于区块提案生成区块提案消息,然后将区块提案消息并广播给其他节点;若交易列表为空,则打包成空块广播出去。4、其他节点收到区块提案消息后,验证其携带的区块所包括的交易,并基于验证结果广播对相应区块提案的投票信息。5、针对该区块达成BFT共识后,提交该区块到区块链存储层,开始下一轮选举和共识。
在典型的基于BFT共识的区块链网络中,由记账节点加载交易池的交易列表,构造区块提案后,将区块提案广播给区块链网络中的其他节点。其他节点收到区块提案后进行验证,根据验证结果可以投赞成票或投反对票。各个节点收集对该区块提案的投票信息,验证对该区块提案投赞成票的票数是否大于或等于2/3的节点数;如果大于或等于2/3的节点数,则提交相应区块到本节点存储的区块链上;如果小于2/3的节点数,则区块链网络完成不了BFT共识,区块链网络运行状态异常,并阻塞。当区块链网络处于中间人攻击的不安全状态下,可能会构造虚假区块提案信息或者构造虚假投票信息,进而影响共识状态。传统的针对区块链项目的异常测试,一般采用网络抓包的形式,人工过滤协议数据并篡改某些数据(如构造虚假区块提案信息),从而达到模攻击场景的目的。但这样的方式工作量大,需提前了解区块链协议数据,并且存在网络拆包、分包、组包和包加密的技术风险,所以会存在异常测试效率低、数据篡改精准性差导致的攻击场景模拟效果不好等问题。
基于此,本申请实施例提供了一种针对区块链项目的测试方法,以实现区块链项目异常测试的自动化,从而有效提高异常测试效率;以通过用于模拟攻击场景的逻辑代码精准篡改数据,从而有效提高攻击场景的模拟效果。如图4所示,为所述针对区块链项目的测试方法所适用的一种***架构。所述***包括测试平台和区块链网络,区块链网络中包括多个共识节点。测试平台获取待测试区块链项目的代码数据包,从代码数据包的代码中确定插桩点,并在插桩点处注入用于模拟攻击场景的逻辑代码;然后针对注入所述逻辑代码的代码数据包进行编译,生成可执行文件,并将所述可执行文件发送至区块链网络中的目标共识节点,如图4中的共识节点A和B。目标共识节点接收测试平台发送的可执行文件,在执行所述可执行文件的过程中以及所述逻辑代码所模拟的攻击场景被激活的情况下,执行相应的攻击任务,从而对待测试区块链项目进行异常测试。在测试过程中,目标共识节点记录关于各区块提案消息的共识结果和执行日志,生成测试文件。测试平台获取目标共识节点生成的测试文件,并基于测试文件分析待测试区块链项目的测试结果。
需要说明的是,共识节点是区块链网络中具备出块功能以及共识功能的节点,可以是区块链网络中存储完整区块链的全节点。区块链网络中的共识节点可分为主节点和从节点,所谓的主节点是指当前阶段负责出块(即记账区块)的共识节点,所谓的从节点是指区块链网络中除主节点以外的共识节点。测试平台可以是REQ平台。
以上介绍了所述针对区块链项目的测试方法的主要步骤,下面对所述针对区块链项目的测试方法的各个步骤进行详细描述。
请参阅图5,为本申请实施例提供的一种针对区块链项目的测试方法的流程示意图。本申请实施例中所描述的测试方法由测试平台执行,包括但不限于如下步骤:
S501、获取待测试区块链项目的代码数据包。其中,所述代码数据包中包括用于实现所述待测试区块链项目的各项功能的代码,用于实现不同功能的代码可以存储在代码数据包的不同代码文件中。
S502、从所述代码数据包的代码中确定插桩点,并在所述插桩点处注入用于模拟攻击场景的逻辑代码。
本申请实施例中,测试平台可以显示代码数据包中的代码,并基于测试人员针对显示的代码的输入操作,确定插桩点以及在插桩点处注入用于模拟攻击场景的逻辑代码。测试平台也可以基于预设的代码注入规则以及所需模拟的攻击场景,自动从代码数据包的代码中确定插桩点以及在插桩点处注入用于模拟攻击场景的逻辑代码。其中,模拟的攻击场景可以是与区块提案消息相关的攻击场景,也可以是与区块提案共识相关的攻击场景,等等。
在一实施例中,当模拟的攻击场景是与区块提案消息相关的攻击场景时,测试平台自动确定插桩点以及在插桩点处自动注入逻辑代码的方式可以为:从代码数据包的代码中确定与区块提案消息相关的第一关联代码,例如用于构造区块提案或者广播区块提案消息的代码;基于第一关联代码所在的位置确定插桩点,例如将第一关联代码的下一代码行确定为插桩点;然后在插桩点处注入用于模拟与区块提案消息相关的攻击场景的逻辑代码。其中,与区块提案消息相关的攻击场景包括构造虚假区块提案消息。构造虚假区块提案消息包括“篡改正常的区块提案消息”或者“直接生成一虚假的区块提案消息”。
例如,如图6所示,虚线框中的代码“proposal:=csi.constructProposal(height,round,level)”为用于构造区块提案的代码,则可以在该代码的下一代码行注入用于模拟与区块提案消息相关的攻击场景的逻辑代码,注入的逻辑代码包括图6中的实线框中的代码。实线框中的逻辑代码如下:
Figure BDA0002617058810000111
上述逻辑代码的作用为在广播区块提案消息之前将区块数据(如交易数据)置空。基于上述逻辑代码,可以实现对区块提案消息的篡改,从而实现构造虚假区块提案消息的攻击场景的模拟。
在另一实施例中,当模拟的攻击场景是与区块提案共识相关的攻击场景时,测试平台自动确定插桩点以及在插桩点处自动注入逻辑代码的方式可以为:从代码数据包的代码中确定与区块提案共识相关的第二关联代码,例如用于生成关于区块提案的共识数据或者广播共识数据的代码;基于第二关联代码所在的位置确定插桩点,例如将第二关联代码的下一代码行确定为插桩点;然后在插桩点处注入用于模拟与区块提案共识相关的攻击场景的逻辑代码。其中,与区块提案共识相关的攻击场景包括构造虚假共识数据。构造虚假共识数据包括“篡改正确的共识数据”或者“直接生成一虚假的共识数据”。
在可行的实施方式中,测试平台可以基于故障模拟工具FailPoint在插桩点处注入用于模拟攻击场景的逻辑代码。
通过在待测试区块链项目的代码中注入用于模拟攻击场景的逻辑代码,有利于后续通过执行所述逻辑代码所对应的指令实现精准篡改数据,从而保证攻击场景的模拟准确性,有效提高攻击场景的模拟效果。
S503、针对注入所述逻辑代码的代码数据包进行编译,生成可执行文件。
在可行的实施例中,待测试区块链项目的代码数据包中包括至少一个代码文件,各个代码文件中的代码用于实现不同的功能,可以是其中部分代码文件的代码中被注入了用于模拟攻击场景的逻辑代码。测试平台先针对该至少一个代码文件中注入了所述逻辑代码的代码文件进行编译,生成中间文件。如图7所示,为注入了图6所示逻辑代码的代码文件所对应的中间文件的部分内容。然后基于生成的中间文件,对待测试区块链项目的代码数据包进行编译,生成可执行文件。该可执行文件可以是一个二进制文件。
S504、将所述可执行文件发送至区块链网络中的目标共识节点。
本申请实施例中,目标共识节点可以是一个或者多个。测试平台可以按照不同的BFT共识场景以及区块链网络中的共识节点总数量,确定目标共识节点的数量,然后从区块链网络中确定出相应数量的共识节点作为目标共识节点。例如,需要实现的BFT共识场景为区块链网络中超过2/3的共识节点为拜占庭节点,且区块链网络中有12个共识节点;则可以从中选取9或10个共识节点作为目标共识节点。如果需要实现的BFT共识场景为区块链网络中少于2/3的共识节点为拜占庭节点,则可以从中选取3或4个共识节点作为目标共识节点。基于此,可覆盖拜占庭节点数“大于2/3节点数”、“等2/3节点数”、“小于2/3节点数”等多种BFT共识场景。
在可行的实施方式中,测试平台也可以基于测试人员针对共识节点的选择操作,将选中的共识节点作为目标共识节点。
在确定出各个目标共识节点之后,测试平台将可执行文件分发至各个目标共识节点。
S505、激活所述逻辑代码所模拟的攻击场景,以在所述目标共识节点执行所述可执行文件的过程中,在所述攻击场景下对所述待测试区块链项目进行测试。
本申请实施例中,测试平台可以通过向目标共识节点发送激活代码,以使得目标共识节点通过运行该激活代码来触发上述逻辑代码所模拟的攻击场景的激活。或者,测试平台可以通过修改目标共识节点的环境变量来触发上述逻辑代码所模拟的攻击场景的激活。在可行的实施方式中,测试平台可以在目标共识节点接收到所述可执行文件之后,执行所述可执行文件之前,激活所述逻辑代码所模拟的攻击场景;也可以在目标共识节点执行所述可执行文件的过程中,激活所述逻辑代码所模拟的攻击场景。
测试平台触发待测试区块链项目中正常用例(如交易数据记录、区块生成、区块上链,等等)的执行,以在区块链网络中执行该正常用例。在此过程中,共识节点通过执行该可执行文件从而完成相应的正常任务。在执行该可执行文件的过程中以及所述逻辑代码所模拟的攻击场景被激活的情况下,目标共识节点执行相应的攻击任务,从而实现对待测试区块链项目的异常测试。在异常测试过程中,目标共识节点记录关于各区块提案消息的共识结果和执行日志,生成测试文件。测试平台获取目标共识节点生成的测试文件,并基于测试文件分析待测试区块链项目的测试结果。
采用上述方式,一方面,通过在待测试区块链项目的代码中注入用于模拟攻击场景的逻辑代码,可以在测试过程中精准篡改数据,从而保证攻击场景的模拟准确性,有效提高攻击场景的模拟效果。另一方面,可以实现区块链项目异常测试的自动化,有效提高异常测试效率。
上述实施例主要介绍了所述测试方法所涉及的可执行文件的生成方式,下面对所述测试方法所涉及的测试应用场景进行详细介绍。
请参阅图8,为本申请实施例提供的另一种针对区块链项目的测试方法的流程示意图。本申请实施例中所描述的测试方法由区块链网络中接收到测试平台发送的可执行文件的目标共识节点执行,针对待测试区块链项目在“构造虚假区块提案消息”的模拟攻击场景下进行异常测试,包括但不限于如下步骤:
S801、获取可执行文件。
本申请实施例中,目标共识节点接收测试平台发送的可执行文件。该可执行文件是测试平台对待测试区块链项目的代码数据包进行编译后得到的,该代码数据包中包括用于模拟攻击场景的逻辑代码。逻辑代码所模拟的攻击场景可以是与区块提案消息相关的攻击场景,包括构造虚假区块提案消息。构造虚假区块提案消息包括“篡改正常的区块提案消息”或者“直接生成一虚假的区块提案消息”。
S802、在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令后,在区块链网络中广播第一测试提案消息。
本申请实施例中,在区块链网络执行待测试区块链项目的正常用例的过程中,目标共识节点通过执行该可执行文件从而完成相应的正常任务。在执行该可执行文件的过程中以及在所述逻辑代码所模拟的攻击场景被激活的情况下,当目标共识节点被选举为当前阶段的主节点(即出块节点或者记账节点)时,目标共识节点执行所述逻辑代码所对应的指令后,在区块链网络中广播第一测试提案消息。该第一测试提案消息为虚假区块提案消息。
具体地,目标共识节点通过执行所述逻辑代码所对应的指令,构造虚假区块提案消息;将构造的虚假区块提案消息作为第一测试提案消息,并在区块链网络中广播所述第一测试提案消息。
在一实施方式中,目标共识节点通过执行所述逻辑代码所对应的指令,对目标共识节点作为主节点所生成的正常区块提案消息进行篡改,包括对区块提案消息中的区块所携带的交易数据(如交易列表)进行篡改,例如将该区块所携带的交易数据置空,等等。进一步地,目标共识节点将篡改后的区块提案消息作为虚假区块提案消息,并在区块链网络中进行广播,以使得区块链网络中的其他共识节点针对所述虚假区块提案消息所对应的区块提案进行共识。此方式中,通过用于模拟“构造虚假区块提案消息”的攻击场景的逻辑代码,可以精准篡改区块提案消息,从而准确实现“篡改区块提案消息”攻击场景的模拟。
在另一实施方式中,目标共识节点通过执行所述逻辑代码所对应的指令,直接生成一虚假区块提案消息,该虚假区块提案消息所包括的区块高度、区块头、merkle根、交易数据、区块生成时间中的一种或者多种都可以是构造的虚假数据。进一步地,目标共识节点将生成的虚假区块提案消息广播至区块链网络中,以使得区块链网络中的其他共识节点针对所述虚假区块提案消息所对应的区块提案进行共识。
S803、将关于所述第一测试提案消息的共识结果和执行日志记录到测试文件中。
本申请实施例中,收集区块链网络中的各个共识节点针对第一测试提案消息对应的区块提案进行共识所产生的共识数据,该共识数据包括针对该区块提案的投票信息,该投票信息包括投赞成票或投反对票。基于收集到的共识数据确定关于第一测试提案消息所对应的区块提案的最终共识结果,当超过预设比例(如2/3)的共识节点投了赞成票,则共识结果为共识通过;反之共识结果为不通过。获取关于第一测试提案消息的执行日志,该执行日志用于记录与第一测试提案消息相关的多个执行步骤以及各个步骤的执行者等信息,例如,由共识节点M在什么时候生成了第一测试提案消息,共识节点M在什么时候广播了第一测试提案消息,等等。进一步地,将关于第一测试提案消息的共识结果和执行日志记录到测试文件中。
S804、当接收到第二测试提案消息时,对所述第二测试提案消息进行共识。
本申请实施例中,第二测试提案消息为区块链网络中的其他共识节点发送的正常或者虚假区块提案消息。当接收到区块链网络中的其他共识节点发送的第二测试提案消息时,目标共识节点针对该第二测试提案消息所对应的区块提案进行共识,并根据共识结果生成共识数据。当共识结果为同意时,共识数据中的投票信息为投赞成票;当共识结果为不同意时,共识数据中的投票信息为投反对票。进一步地,在区块网络中广播目标共识节点针对第二测试提案消息进行共识所产生的共识数据,以使得区块链网络中的共识节点基于各个共识节点针对第二测试提案消进行共识所产生的共识数据,确定关于第二测试提案消息所对应的区块提案的共识结果。
S805、将关于所述第二测试提案消息的共识结果和执行日志记录到所述测试文件中。
本申请实施例中,收集区块链网络中的各个共识节点针对第二测试提案消所对应的区块提案进行共识所产生的共识数据,并基于收集到的共识数据确定关于第二测试提案消息所对应的区块提案的最终共识结果。获取关于第二测试提案消息的执行日志,该执行日志用于记录与第二测试提案消息相关的多个执行步骤以及各个步骤的执行者等信息,例如,由共识节点N在什么时候生成了第二测试提案消息,共识节点N在什么时候广播了该第二测试提案消息,等等。进一步地,将关于第二测试提案消息的共识结果和执行日志记录到测试文件中。
需要说明的是,步骤S802、S803与步骤S804、S805可以是交替执行的。
S806、响应文件获取请求,将所述测试文件发送至测试平台,以使得所述测试平台基于所述测试文件分析所述待测试区块链项目的测试结果。
本申请实施例中,目标共识节点在接收到测试平台发送的文件获取请求之后,响应文件获取请求,将存储的测试文件发送至测试平台。在可行的实施方式中,当目标共识节点针对新的测试提案消息,将其共识结果和执行日志记录到测试文件之后,自动将数据更新后的测试文件发送至测试平台。
测试平台基于测试文件分析待测试区块链项目的测试结果。例如,共识节点X为区块链网络中接收到测试平台发送的可执行文件的目标共识节点,由于共识节点X在作为主节点时所广播的测试提案消息为虚假区块提案消息,则在待测试区块链项目无其他异常时,关于该测试提案消息的共识结果应为不通过。如果根据测试文件分析得到该测试提案消息的共识结果为通过,则说明待测试区块链项目存在其他异常。又例如,在关于某共识节点广播的测试提案消息的共识结果为不通过时,可以认为该某共识节点为攻击节点(或者说拜占庭节点),并且在确定共识结果时需要舍弃该某共识节点针对区块提案消息的共识数据。分析区块链网络的BFT共识状态,当模拟的BFT共识场景不满足BFT的容错节点时,如一共4个共识节点,2个正常节点,2个攻击节点,则BFT不满足正常节点数“大于2/3节点数”的条件;此时如果待测试区块链项目无其他异常,则针对某区块提案消息达成不了共识,应返回错误信息。但如果根据测试文件分析得到针对该某区块提案消息达成了共识,则说明待测试区块链项目存在其他异常。
采用上述方式,一方面,可以实现区块链项目异常测试的自动化,有效提高异常测试效率。另一方面,通过在待测试区块链项目的代码中注入用于模拟“构造虚假区块提案消息”的攻击场景的逻辑代码,可以在测试过程中自动构造并广播虚假区块提案消息,从而保证“构造虚假区块提案消息”的攻击场景的模拟准确性,有效提高攻击场景的模拟效果。
为更好的理解上述测试方法,下面结合实际测试过程所涉及的一些具体步骤以及实现方式进行举例说明。
在区块链产品迭代周期内,研发工程师将开发好的区块链项目提测到REQ平台(即软件研发提测流程管理平台),之后触发测试执行。测试人员在对区块链项目完成基本的功能测试之后,会进一步进行异常测试,异常测试主要通过模拟攻击场景来测试区块链项目的鲁棒性,从而检测区块链项目是否存在异常。针对“构造虚假区块提案消息”中的“篡改区块提案消息(或者说篡改区块提案)”的模拟攻击场景可采用如图9或图10所示的流程进行异常测试,其中,图10还示出了与测试流程相关的一些其他步骤。如图9或图10所示,自动化测试平台对待测试区块链项目的测试流程如下:
1、从分布式版本控制***Git上拉取待测试区块链项目的工程,分析待测试区块链项目的源代码,导入FailPoint;针对需要模拟“篡改区块提案消息”的代码处注入FailPoint-inject插桩点,并在插桩点注入“篡改区块提案消息”攻击(或者说异常),例如图6所示。通过攻击(异常)注入可以精准篡改区块提案。然后使能enable,生成中间文件,具体可以通过激活指令激活FailPoint代码,从而生成中间文件。其中,生成的中间文件所包括的部分内容例如图7所示,激活指令例如为:
$GOPATH/src/github.com/pingcap/failpoint/bin/failpoint-ctl enable
在某些场景下,可通过清除指令清除上述中间文件,清除指令例如为:
$GOPATH/src/github.com/pingcap/failpoint/bin/failpoint-ctl disable
2、基于上述中间文件的代码,自动编译待测试区块链项目的工程,生成可执行文件,该可执行文件为二进制文件。
3、提交可执行文件下发的相关参数,比如选择单节点“篡改区块提案消息”执行,则需提交单节点的机器信息;如果选择多节点执行,则需要配置多节点的机器信息。多节点执行可以模拟各种BFT共识场景,如拜占庭节点数“大于2/3节点数”、“等于2/3节点数”、“小于2/3节点数”等BFT共识场景。按照需要模拟的BFT共识场景下发可执行文件到各个节点。
4、触发攻击场景的激活,可采用修改环境变量的方式或者代码驱动的方式触发“篡改区块提案消息”场景的激活。其中,激活指令例如为:
GO_FAILPOINTS="github.com/package/proposal_nil_error=return(true)"nohup./yourproject&
其中,package是注入用于模拟攻击的代码的文件的packag名,proposal_nil_error是“篡改区块提案消息”的故障名,yourproject是待测试区块链项目的可执行文件。
5、在自动化测试平台上触发待测试区块链项目的正常用例的执行,并在执行过程中,触发各个节点执行测试平台下发的可执行文件,以模拟“篡改区块提案消息”的攻击场景,在模拟的攻击场景下对待测试区块链项目进行异常测试;并在测试过程中,将执行日志记录到指定目录下,方便后续查询。
6、自动化测试平台分析用例的执行结果,分析是否满足BFT共识。例如,总共4个节点构成区块链网络,如果模拟单节点中间人“篡改区块提案消息”攻击,导致A节点作恶,但是BFT共识机制允许在4个节点构成的区块链网络中有一个容错节点,所以整个区块链服务依然正常运行,用例执行正常。但是如果模拟节点A和B同时执行“篡改区块提案消息”攻击,这样就不满足BFT共识,最终会导致整个区块链网络不可用,用例执行失败,区块链则会进入阻塞状态。
7、自动化测试平台结合分析的用例执行结果,以及基于执行日志确定的异常测试过程中实际的用例执行结果,生成相应的测试结果。如果两者一致,则说明待测试区块链项目异常测试通过,如果两者不一致,则说明待测试区块链项目异常测试未通过,有一些问题需要解决。在可行的实施方式中,自动化测试平台还可以结合执行日志生成相应的测试报告,以便于测试人员定位问题。
上述测试方法,即在测试阶段,定义需要模拟“篡改区块提案消息”的代码插桩点,自动扫描代码,基于FailPoint动态***“篡改区块提案消息”逻辑。其中包括各种篡改逻辑,如:构造非法提案;构造中间人提案,即改变发起人签名,提案内容不变;篡改提案内容,修改交易数据;等等。然后自动编译待测试区块链项目的工程,并可以采用代码驱动或环境变量驱动的方法触发“篡改区块提案消息”的攻击场景的激活;在区块链自动化用例驱动下,自动检测“篡改区块提案消息”对区块链BFT共识的影响范围。这种方式对源代码无侵入,自动编译和部署,可覆盖拜占庭节点数“大于2/3节点数”、“等于2/3节点数”、“小于2/3节点数”等多种BFT共识场景,自动化程度高,扩展性强,无需开发人员介入等优势。
请参阅图11,为本申请实施例提供的又一种针对区块链项目的测试方法的流程示意图。本申请实施例中所描述的测试方法由区块链网络中接收到测试平台发送的可执行文件的目标共识节点执行,针对待测试区块链项目在“构造虚假共识数据”的模拟攻击场景下进行异常测试,包括但不限于如下步骤:
S1101、获取可执行文件,并执行所述可执行文件。
本申请实施例中,目标共识节点接收测试平台发送的可执行文件。该可执行文件是测试平台对待测试区块链项目的代码数据包进行编译后得到的,该代码数据包中包括用于模拟攻击场景的逻辑代码。逻辑代码所模拟的攻击场景可以是与区块提案共识相关的攻击场景,包括构造虚假共识数据。构造虚假共识数据包括“篡改正确的共识数据”或者“直接生成一虚假的共识数据”。在区块链网络执行待测试区块链项目的正常用例的过程中,目标共识节点通过执行该可执行文件从而完成相应的正常任务。
S1102、在区块链网络中广播第一测试提案消息。
本申请实施例中,在执行该可执行文件的过程中,当目标共识节点被选举为当前阶段的主节点(即出块节点或者记账节点)时,目标共识节点在区块链网络中广播第一测试提案消息。该第一测试提案消息为目标共识节点作为主节点所生成的正常区块提案消息。
S1103、将关于所述第一测试提案消息的共识结果和执行日志记录到测试文件中。
本申请实施例中,收集区块链网络中的各个共识节点针对第一测试提案消息所对应的区块提案进行共识所产生的共识数据,并基于收集到的共识数据确定关于第一测试提案消息所对应的区块提案的共识结果。获取关于第一测试提案消息的执行日志,该执行日志用于记录与第一测试提案消息相关的多个执行步骤以及各个步骤的执行者等信息,例如,由共识节点M在什么时候生成了第一测试提案消息,共识节点M在什么时候广播了该第一测试提案消息,等等。进一步地,将关于第一测试提案消息的共识结果和执行日志记录到测试文件中。
S1104、当接收到第二测试提案消息时,执行所述逻辑代码所对应的指令后,在区块链网络中广播关于所述第二测试提案消息的共识数据。
本申请实施例中,在执行该可执行文件的过程中以及在逻辑代码所模拟的攻击场景被激活的情况下,当接收到区块链网络中的其他共识节点发送的第二测试提案消息(即区块提案消息)时,目标共识节点执行该逻辑代码所对应的指令后,在区块链网络中广播关于第二测试提案消息的共识数据。广播的共识数据为关于第二测试提案消息的虚假共识数据。
具体地,目标共识节点通过执行所述逻辑代码所对应的指令,构造虚假共识数据;然后将构造的虚假共识数据广播至区块链网络中,以使得区块链网络中的共识节点基于各个共识节点广播的关于第二测试提案消息的共识数据,确定第二测试提案消息所对应的区块提案的最终共识结果。
在一实施方式中,获取目标共识节点对第二测试提案消息所对应的区块提案进行共识所产生的正确共识数据,通过执行所述逻辑代码所对应的指令,对该正确共识数据进行篡改,包括将正确共识数据中的投票信息置空或者改为相反类型的投票(例如将赞成票改为反对票),等等。篡改后的共识数据即为构造的虚假共识数据。此方式中,通过用于模拟“构造虚假共识数据”的攻击场景的逻辑代码,可以精准篡改共识数据,从而准确实现“篡改共识数据”攻击场景的模拟。
在另一实施方式中,目标共识节点执行所述逻辑代码所对应的指令,直接生成关于第二测试提案消息的虚假共识数据,该虚假共识数据所包括的投票信息、共识数据生成时间、第二测试提案消息的相关信息(如接收时间、生成第二测试提案消息的共识节点的标识,等等)中的一种或者多种都可以是构造的虚假数据。
S1105、将关于所述第二测试提案消息的共识结果和执行日志记录到测试文件中。
本申请实施例中,收集区块链网络中的各个共识节点针对第二测试提案消所对应的区块提案进行共识所产生的共识数据,并基于收集到的共识数据确定关于第二测试提案消息所对应的区块提案的最终共识结果。获取关于第二测试提案消息的执行日志,该执行日志用于记录与第二测试提案消息相关的多个执行步骤以及各个步骤的执行者等信息,例如,共识节点Y针对第二测试提案消息所对应的区块提案投的赞成票,共识节点Y在什么时候广播了关于第二测试提案消息的共识数据,等等。进一步地,将关于第二测试提案消息的共识结果和执行日志记录到测试文件中。
需要说明的是,步骤S1102、S1103与步骤S1104、S1105可以是交替执行的。
S1106、响应文件获取请求,将所述测试文件发送至测试平台,以使得所述测试平台基于所述测试文件分析所述待测试区块链项目的测试结果。
本申请实施例中,目标共识节点在接收到测试平台发送的文件获取请求之后,响应文件获取请求,将存储的测试文件发送至测试平台。在可行的实施方式中,当目标共识节点针对新的测试提案消息,将其共识结果和执行日志记录到测试文件之后,自动将数据更新后的测试文件发送至测试平台。
测试平台基于测试文件分析待测试区块链项目的测试结果。例如,共识节点Y为区块链网络中接收到测试平台发送的可执行文件的目标共识节点,由于共识节点Y针对其他共识节点发起的区块提案的共识数据为虚假共识数据,则在待测试区块链项目无其他异常,且针对共识节点Z发起的区块提案的最终共识结果为通过时,共识节点Y针对共识节点Z发起的区块提案的投票信息应为空或者为投反对票。如果根据测试文件分析得到共识节点Y针对共识节点Z发起的区块提案的投票信息为投赞成票,则说明待测试区块链项目存在异常。又例如,当模拟的BFT共识场景不满足BFT的容错节点时,如一共4个共识节点,2个正常节点,2个攻击节点,则BFT不满足正常节点数“大于2/3节点数”的条件;此时如果待测试区块链项目无其他异常,则针对任一共识节点发起的区块提案达成不了共识,应返回错误信息。但如果根据测试文件分析得到针对区块提案达成了共识,则说明待测试区块链项目存在其他异常。
采用上述方式,一方面,可以实现区块链项目异常测试的自动化,有效提高异常测试效率。另一方面,通过在待测试区块链项目的代码中注入用于模拟“构造虚假共识数据”的攻击场景的逻辑代码,可以在测试过程中自动构造并广播虚假共识数据,从而保证“构造虚假共识数据”的攻击场景的模拟准确性,有效提高攻击场景的模拟效果。
请参阅图12,为本申请实施例提供的一种针对区块链项目的测试装置的结构示意图。本申请实施例中所描述的装置,对应于前文所述的目标共识节点,所述装置包括:
获取单元1201,用于获取可执行文件,所述可执行文件是对待测试区块链项目的代码数据包进行编译后得到的,所述代码数据包中包括用于模拟攻击场景的逻辑代码;
处理单元1202,用于在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令后,触发收发单元1203在区块链网络中广播第一测试提案消息;
记录单元1204,用于将关于所述第一测试提案消息的共识结果和执行日志记录到测试文件中;
所述处理单元1202,还用于当所述收发单元1203接收到第二测试提案消息时,对所述第二测试提案消息进行共识;
所述记录单元1204,还用于将关于所述第二测试提案消息的共识结果和执行日志记录到所述测试文件中;
所述处理单元1202,还用于响应文件获取请求,触发所述收发单元1203将所述测试文件发送至测试平台,以使得所述测试平台基于所述测试文件分析所述待测试区块链项目的测试结果。
在一实施例中,所述处理单元1202,具体用于:
在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令构造虚假区块提案消息;将所述虚假区块提案消息作为第一测试提案消息,并触发所述收发单元1203在区块链网络中广播所述第一测试提案消息。
在一实施例中,所述处理单元1202,具体用于:
执行所述逻辑代码所对应的指令对生成的正常区块提案消息进行篡改;将篡改后的区块提案消息作为虚假区块提案消息。
请参阅图13,为本申请实施例提供的另一种针对区块链项目的测试装置的结构示意图。本申请实施例中所描述的装置,对应于前文所述的测试平台,所述装置包括:
获取单元1301,用于获取待测试区块链项目的代码数据包;
处理单元1302,用于从所述代码数据包的代码中确定插桩点,并在所述插桩点处注入用于模拟攻击场景的逻辑代码;
所述处理单元1302,还用于针对注入所述逻辑代码的代码数据包进行编译,生成可执行文件;
收发单元1303,用于将所述可执行文件发送至区块链网络中的目标共识节点;
所述处理单元1302,还用于激活所述逻辑代码所模拟的攻击场景,以在所述目标共识节点执行所述可执行文件的过程中,在所述攻击场景下对所述待测试区块链项目进行测试。
在一实施例中,所述处理单元1302,具体用于:
从所述代码数据包的代码中确定与区块提案消息相关的第一关联代码;基于所述第一关联代码所在的位置确定插桩点;在所述插桩点处注入用于模拟构造虚假区块提案消息的攻击场景的逻辑代码。
在一实施例中,所述处理单元1302,具体用于:
从所述代码数据包的代码中确定与区块提案共识相关的第二关联代码;基于所述第二关联代码所在的位置确定插桩点;在所述插桩点处注入用于模拟构造虚假共识数据的攻击场景的逻辑代码。
在一实施例中,所述代码数据包中包括至少一个代码文件,所述处理单元1302,具体用于:
针对所述至少一个代码文件中注入所述逻辑代码的代码文件进行编译,生成中间文件;基于所述中间文件,对所述待测试区块链项目的代码数据包进行编译,生成可执行文件。
在一实施例中,所述处理单元1302,具体用于:
触发所述收发单元1303向所述目标共识节点发送激活代码,以使得所述目标共识节点通过运行所述激活代码触发所述逻辑代码所模拟的攻击场景的激活;或者,通过修改目标共识节点的环境变量触发所述逻辑代码所模拟的攻击场景的激活。
可以理解的是,本申请实施例的针对区块链项目的测试装置的各功能单元的功能可根据上述方法实施例中的相应方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
采用本申请实施例提供的针对区块链项目的测试装置,一方面,通过在待测试区块链项目的代码中注入用于模拟攻击场景的逻辑代码,可以在测试过程中精准篡改数据,从而保证攻击场景的模拟准确性,有效提高攻击场景的模拟效果。另一方面,可以实现区块链项目异常测试的自动化,有效提高异常测试效率。
请参阅图14,为本申请实施例提供的一种计算机设备的结构示意图。本申请实施例中所描述的计算机设备对应前文所述的目标共识节点,所述计算机设备包括:处理器1401、通信接口1402及存储器1403。其中,处理器1401、通信接口1402及存储器1403可通过总线或其他方式连接,本申请实施例以通过总线连接为例。
其中,处理器1401(或称CPU(Central Processing Unit,中央处理器))是计算机设备的计算核心以及控制核心,其可以解析计算机设备内的各类指令以及处理计算机设备的各类数据,例如:CPU可以用于解析用户向计算机设备所发送的开关机指令,并控制计算机设备进行开关机操作;再如:CPU可以在计算机设备内部结构之间传输各类交互数据,等等。通信接口1402可选的可以包括标准的有线接口、无线接口(如Wi-Fi、移动通信接口等),受处理器1401的控制用于收发数据。存储器1403(Memory)是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的存储器1403既可以包括计算机设备的内置存储器,当然也可以包括计算机设备所支持的扩展存储器。存储器1403提供存储空间,该存储空间存储了计算机设备的操作***,可包括但不限于:Android***、iOS***、Windows Phone***等等,本申请对此并不作限定。
在本申请实施例中,处理器1401通过运行存储器1403中的可执行程序代码,执行如下操作:
通过通信接口1402获取可执行文件,所述可执行文件是对待测试区块链项目的代码数据包进行编译后得到的,所述代码数据包中包括用于模拟攻击场景的逻辑代码;在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令后,通过通信接口1402在区块链网络中广播第一测试提案消息,并将关于所述第一测试提案消息的共识结果和执行日志记录到测试文件中;当通过通信接口1402接收到第二测试提案消息时,对所述第二测试提案消息进行共识,并将关于所述第二测试提案消息的共识结果和执行日志记录到所述测试文件中;响应文件获取请求,通过通信接口1402将所述测试文件发送至测试平台,以使得所述测试平台基于所述测试文件分析所述待测试区块链项目的测试结果。
在一实施例中,所述处理器1401在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令后,通过通信接口1402在区块链网络中广播第一测试提案消息时,具体用于:在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令构造虚假区块提案消息;将所述虚假区块提案消息作为第一测试提案消息,并通过通信接口1402在区块链网络中广播所述第一测试提案消息。
在一实施例中,所述处理器1401执行所述逻辑代码所对应的指令构造虚假区块提案消息时,具体用于:执行所述逻辑代码所对应的指令对生成的正常区块提案消息进行篡改;将篡改后的区块提案消息作为虚假区块提案消息。
在可行的实施例中,本申请实施例中所描述的计算机设备,可以对应于前文所述的测试平台,所述计算机设备包括的处理器1401、通信接口1402和存储器1403可以用于实现上述方法实施例中测试平台所对应的方法,具体地,处理器1401通过运行存储器1403中的可执行程序代码,执行如下操作:
获取待测试区块链项目的代码数据包;从所述代码数据包的代码中确定插桩点,并在所述插桩点处注入用于模拟攻击场景的逻辑代码;针对注入所述逻辑代码的代码数据包进行编译,生成可执行文件,并通过通信接口1402将所述可执行文件发送至区块链网络中的目标共识节点;激活所述逻辑代码所模拟的攻击场景,以在所述目标共识节点执行所述可执行文件的过程中,在所述攻击场景下对所述待测试区块链项目进行测试。
在一实施例中,所述处理器1401从所述代码数据包的代码中确定插桩点时,具体用于:从所述代码数据包的代码中确定与区块提案消息相关的第一关联代码;基于所述第一关联代码所在的位置确定插桩点;所述处理器1401在所述插桩点处注入用于模拟攻击场景的逻辑代码时,具体用于:在所述插桩点处注入用于模拟构造虚假区块提案消息的攻击场景的逻辑代码。
在一实施例中,所述处理器1401从所述代码数据包的代码中确定插桩点时,具体用于:从所述代码数据包的代码中确定与区块提案共识相关的第二关联代码;基于所述第二关联代码所在的位置确定插桩点;所述处理器1401在所述插桩点处注入用于模拟攻击场景的逻辑代码时,具体用于:在所述插桩点处注入用于模拟构造虚假共识数据的攻击场景的逻辑代码。
在一实施例中,所述代码数据包中包括至少一个代码文件,所述处理器1401针对注入所述逻辑代码的代码数据包进行编译,生成可执行文件时,具体用于:针对所述至少一个代码文件中注入所述逻辑代码的代码文件进行编译,生成中间文件;基于所述中间文件,对所述待测试区块链项目的代码数据包进行编译,生成可执行文件。
在一实施例中,所述处理器1401激活所述逻辑代码所模拟的攻击场景时,具体用于:通信接口1402向所述目标共识节点发送激活代码,以使得所述目标共识节点通过运行所述激活代码触发所述逻辑代码所模拟的攻击场景的激活;或者,通过修改目标共识节点的环境变量触发所述逻辑代码所模拟的攻击场景的激活。
在可行的实施例中,所述计算机设备还可以包括用户接口,用户接口是实现用户与计算机设备进行交互和信息交换的媒介,其具体体现可以包括用于输出的显示屏(Display)、扬声器以及用于输入的键盘(Keyboard)、触控屏、拾音设备,等等。
具体实现中,本申请实施例中所描述的处理器1401、通信接口1402及存储器1403可执行本申请实施例提供的一种针对区块链项目的测试方法中所描述的目标共识节点或者测试平台的实现方式,也可执行本申请实施例提供的针对区块链项目的测试装置中所描述的实现方式,在此不再赘述。
采用本申请实施例提供的计算机设备,一方面,通过在待测试区块链项目的代码中注入用于模拟攻击场景的逻辑代码,可以在测试过程中精准篡改数据,从而保证攻击场景的模拟准确性,有效提高攻击场景的模拟效果。另一方面,可以实现区块链项目异常测试的自动化,有效提高异常测试效率。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如本申请实施例所述的针对区块链项目的测试方法,具体实现方式可参考前文描述,此处不再赘述。
本申请实施例还提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行本申请实施例所述的针对区块链项目的测试方法,具体实现方式可参考前文描述,此处不再赘述。
需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
以上所揭露的仅为本申请部分实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (11)

1.一种针对区块链项目的测试方法,其特征在于,所述方法由区块链网络中的目标共识节点执行,所述方法包括:
获取可执行文件,所述可执行文件是对待测试区块链项目的代码数据包进行编译后得到的,所述代码数据包中包括用于模拟攻击场景的逻辑代码;
在执行所述可执行文件的过程中以及在所述逻辑代码所模拟的攻击场景被激活的情况下,执行所述逻辑代码所对应的指令后,在区块链网络中广播第一测试提案消息,并将关于所述第一测试提案消息的共识结果和执行日志记录到测试文件中;
当接收到第二测试提案消息时,对所述第二测试提案消息进行共识,并将关于所述第二测试提案消息的共识结果和执行日志记录到所述测试文件中;
响应文件获取请求,将所述测试文件发送至测试平台,以使得所述测试平台基于所述测试文件分析所述待测试区块链项目的测试结果;
其中,所述目标共识节点通过运行所述测试平台发送的激活代码触发所述逻辑代码所模拟的攻击场景的激活;或者,所述测试平台通过修改所述目标共识节点的环境变量触发所述逻辑代码所模拟的攻击场景的激活。
2.如权利要求1所述的方法,其特征在于,所述在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令后,在区块链网络中广播第一测试提案消息,包括:
在执行所述可执行文件的过程中,执行所述逻辑代码所对应的指令构造虚假区块提案消息;
将所述虚假区块提案消息作为第一测试提案消息,并在区块链网络中广播所述第一测试提案消息。
3.如权利要求1所述的方法,其特征在于,所述执行所述逻辑代码所对应的指令构造虚假区块提案消息,包括:
执行所述逻辑代码所对应的指令对生成的正常区块提案消息进行篡改;
将篡改后的区块提案消息作为虚假区块提案消息。
4.一种针对区块链项目的测试方法,其特征在于,所述方法包括:
获取待测试区块链项目的代码数据包;
从所述代码数据包的代码中确定插桩点,并在所述插桩点处注入用于模拟攻击场景的逻辑代码;
针对注入所述逻辑代码的代码数据包进行编译,生成可执行文件,并将所述可执行文件发送至区块链网络中的目标共识节点;
激活所述逻辑代码所模拟的攻击场景,以在所述目标共识节点执行所述可执行文件的过程中,在所述攻击场景下对所述待测试区块链项目进行测试;
其中,所述激活所述逻辑代码所模拟的攻击场景,包括:
向所述目标共识节点发送激活代码,以使得所述目标共识节点通过运行所述激活代码触发所述逻辑代码所模拟的攻击场景的激活;或者,通过修改所述目标共识节点的环境变量触发所述逻辑代码所模拟的攻击场景的激活。
5.如权利要求4所述的方法,其特征在于,所述从所述代码数据包的代码中确定插桩点,包括:
从所述代码数据包的代码中确定与区块提案消息相关的第一关联代码;
基于所述第一关联代码所在的位置确定插桩点;
所述在所述插桩点处注入用于模拟攻击场景的逻辑代码,包括:
在所述插桩点处注入用于模拟构造虚假区块提案消息的攻击场景的逻辑代码。
6.如权利要求4所述的方法,其特征在于,所述从所述代码数据包的代码中确定插桩点,包括:
从所述代码数据包的代码中确定与区块提案共识相关的第二关联代码;
基于所述第二关联代码所在的位置确定插桩点;
所述在所述插桩点处注入用于模拟攻击场景的逻辑代码,包括:
在所述插桩点处注入用于模拟构造虚假共识数据的攻击场景的逻辑代码。
7.如权利要求4-6任一项所述的方法,其特征在于,所述代码数据包中包括至少一个代码文件,所述针对注入所述逻辑代码的代码数据包进行编译,生成可执行文件,包括:
针对所述至少一个代码文件中注入所述逻辑代码的代码文件进行编译,生成中间文件;
基于所述中间文件,对所述待测试区块链项目的代码数据包进行编译,生成可执行文件。
8.一种针对区块链项目的测试装置,其特征在于,所述装置包括:
获取单元,用于获取可执行文件,所述可执行文件是对待测试区块链项目的代码数据包进行编译后得到的,所述代码数据包中包括用于模拟攻击场景的逻辑代码;
处理单元,用于在执行所述可执行文件的过程中以及在所述逻辑代码所模拟的攻击场景被激活的情况下,执行所述逻辑代码所对应的指令后,触发收发单元在区块链网络中广播第一测试提案消息;
记录单元,用于将关于所述第一测试提案消息的共识结果和执行日志记录到测试文件中;
所述处理单元,还用于当所述收发单元接收到第二测试提案消息时,对所述第二测试提案消息进行共识;
所述记录单元,还用于将关于所述第二测试提案消息的共识结果和执行日志记录到所述测试文件中;
所述处理单元,还用于响应文件获取请求,触发所述收发单元将所述测试文件发送至测试平台,以使得所述测试平台基于所述测试文件分析所述待测试区块链项目的测试结果;
其中,所述测试装置通过运行所述测试平台发送的激活代码触发所述逻辑代码所模拟的攻击场景的激活;或者,所述测试平台通过修改所述测试装置的环境变量触发所述逻辑代码所模拟的攻击场景的激活。
9.一种针对区块链项目的测试装置,其特征在于,所述装置包括:
获取单元,用于获取待测试区块链项目的代码数据包;
处理单元,用于从所述代码数据包的代码中确定插桩点,并在所述插桩点处注入用于模拟攻击场景的逻辑代码;
所述处理单元,还用于针对注入所述逻辑代码的代码数据包进行编译,生成可执行文件;
收发单元,用于将所述可执行文件发送至区块链网络中的目标共识节点;
所述处理单元,还用于激活所述逻辑代码所模拟的攻击场景,以在所述目标共识节点执行所述可执行文件的过程中,在所述攻击场景下对所述待测试区块链项目进行测试;
其中,所述处理单元具体用于:向所述目标共识节点发送激活代码,以使得所述目标共识节点通过运行所述激活代码触发所述逻辑代码所模拟的攻击场景的激活;或者,通过修改所述目标共识节点的环境变量触发所述逻辑代码所模拟的攻击场景的激活。
10.一种计算机设备,其特征在于,包括:处理器、通信接口和存储器,所述处理器、所述通信接口和所述存储器相互连接,其中,所述存储器存储有可执行程序代码,所述处理器用于调用所述可执行程序代码,执行如权利要求1-3任一项所述的针对区块链项目的测试方法,或者,执行如权利要求4-7任一项所述的针对区块链项目的测试方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如权利要求1-3任一项所述的针对区块链项目的测试方法,或者,执行如权利要求4-7任一项所述的针对区块链项目的测试方法。
CN202010772197.6A 2020-08-04 2020-08-04 针对区块链项目的测试方法、装置及计算机设备 Active CN111782551B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010772197.6A CN111782551B (zh) 2020-08-04 2020-08-04 针对区块链项目的测试方法、装置及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010772197.6A CN111782551B (zh) 2020-08-04 2020-08-04 针对区块链项目的测试方法、装置及计算机设备

Publications (2)

Publication Number Publication Date
CN111782551A CN111782551A (zh) 2020-10-16
CN111782551B true CN111782551B (zh) 2021-07-27

Family

ID=72766430

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010772197.6A Active CN111782551B (zh) 2020-08-04 2020-08-04 针对区块链项目的测试方法、装置及计算机设备

Country Status (1)

Country Link
CN (1) CN111782551B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112527905B (zh) * 2020-12-17 2023-01-17 内蒙古民族大学 一种抽油机多节点的区块链物联网数据融合方法
CN113268711B (zh) * 2021-05-25 2022-03-08 国网山东省电力公司电力科学研究院 基于Git及区块链的变电站继电保护装置软件版本管理方法
CN114091078A (zh) * 2021-11-26 2022-02-25 中国联合网络通信集团有限公司 测试报告处理方法、测试平台和用户终端
CN116107913B (zh) * 2023-04-06 2023-11-14 阿里云计算有限公司 单节点服务器的测试控制方法、装置及***

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104834590A (zh) * 2014-02-11 2015-08-12 腾讯科技(深圳)有限公司 软件测试方法和***
CN109617759A (zh) * 2018-12-04 2019-04-12 中钞***产业发展有限公司杭州区块链技术研究院 区块链***稳定性测试方法、装置、设备及存储介质
CN110868337A (zh) * 2019-11-15 2020-03-06 腾讯科技(深圳)有限公司 容错共识机制测试方法、装置、存储介质和计算机设备
WO2020103545A1 (zh) * 2018-11-19 2020-05-28 苏宁云计算有限公司 一种区块链智能合约调试发布方法及***
CN111324591A (zh) * 2020-01-20 2020-06-23 腾讯科技(深圳)有限公司 区块链分叉的检测方法及相关装置
CN111327490A (zh) * 2020-01-20 2020-06-23 腾讯科技(深圳)有限公司 区块链的拜占庭容错检测方法及相关装置
CN111444090A (zh) * 2020-03-24 2020-07-24 腾讯科技(深圳)有限公司 区块链中的合约测试方法、装置、电子设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106339309B (zh) * 2015-07-14 2020-01-31 腾讯科技(深圳)有限公司 应用程序的测试方法、客户端及***
SG11202008600YA (en) * 2018-03-18 2020-10-29 Valid Network Ltd A method and system for detecting and preventing issues in smart contracts based on historical behavior analysis
CN109189396B (zh) * 2018-08-16 2022-04-12 北京京东尚科信息技术有限公司 智能合约引擎组件、运行方法及存储介质
SG11202010736YA (en) * 2019-11-08 2020-11-27 Alipay Hangzhou Inf Tech Co Ltd System and method for blockchain-based decentralized application development
CN110933163B (zh) * 2019-11-27 2021-08-24 腾讯科技(深圳)有限公司 区块链合约部署方法、装置、设备以及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104834590A (zh) * 2014-02-11 2015-08-12 腾讯科技(深圳)有限公司 软件测试方法和***
WO2020103545A1 (zh) * 2018-11-19 2020-05-28 苏宁云计算有限公司 一种区块链智能合约调试发布方法及***
CN109617759A (zh) * 2018-12-04 2019-04-12 中钞***产业发展有限公司杭州区块链技术研究院 区块链***稳定性测试方法、装置、设备及存储介质
CN110868337A (zh) * 2019-11-15 2020-03-06 腾讯科技(深圳)有限公司 容错共识机制测试方法、装置、存储介质和计算机设备
CN111324591A (zh) * 2020-01-20 2020-06-23 腾讯科技(深圳)有限公司 区块链分叉的检测方法及相关装置
CN111327490A (zh) * 2020-01-20 2020-06-23 腾讯科技(深圳)有限公司 区块链的拜占庭容错检测方法及相关装置
CN111444090A (zh) * 2020-03-24 2020-07-24 腾讯科技(深圳)有限公司 区块链中的合约测试方法、装置、电子设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
区块链智能合约安全威胁实时防御框架;白杨;《通信技术》;20200610;第53卷(第6期);1-8 *

Also Published As

Publication number Publication date
CN111782551A (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
CN111782551B (zh) 针对区块链项目的测试方法、装置及计算机设备
KR102606945B1 (ko) 블록체인 기술과 디지털 트윈을 결합하기 위한 컴퓨터 구현 시스템 및 방법
CN110442652B (zh) 一种基于区块链的跨链数据处理方法及装置
AU2019295815B2 (en) Blockchain-based data verification method and apparatus, and electronic device
CN112073269B (zh) 区块链网络测试方法、装置、服务器及存储介质
CN111309594B (zh) 一种***测试方法、装置、设备及存储介质
US20210049715A1 (en) Blockchain-based data procesing method, apparatus, and electronic device
CN110046523B (zh) 智能合约校验方法及装置和电子设备
CN111949531B (zh) 区块链网络的测试方法、装置、介质及电子设备
CN112035350B (zh) 针对区块链***的测试方法、装置及计算机设备
CN109189396A (zh) 智能合约引擎组件、运行方法及存储介质
CN116155771A (zh) 网络异常测试方法、装置、设备、存储介质和程序
CN111429250A (zh) 一种货押贷款场景中的数据管理方法和装置
CN110738783A (zh) 投票数据的更新***、方法、装置、设备及可读存储介质
CN111917729B (zh) 动态注入测试方法及装置、相关设备
Tsai et al. Beagle: A new framework for smart contracts taking account of law
CN112202647A (zh) 区块链网络中的测试方法、装置及测试设备
CN116596551A (zh) 基于区块链的供应链产品溯源方法、存储介质和电子设备
CN117251354A (zh) 应用于区块链***的异常测试方法、装置和计算机设备
US20220050852A1 (en) Data migration method, data migration system, and node
CN110704533B (zh) 一种基于区块链和投票机制的假新闻监测方法
Buterchi et al. Dapp for rating
Kulkarni Framework for Design and Development of Blockchain Application Using Smart Contracts
CN117009345A (zh) 数据上报功能的校验方法、装置以及电子设备
Touloupou et al. Validating the Blockchain Benchmarking Framework Through Controlled Deployments of XRPL and Ethereum

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40030656

Country of ref document: HK

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant