本发明涉及用于区块链的计算机辅助测试的方法和装置。
背景技术:
区块链(英文:blockchain)或“分布式账本”目前是一种备受争议的技术。除了对于去中心化支付系统(例如,比特币)的应用之外,金融行业正开发新的应用可能性。特别地,企业之间的交易由此可以在无中间人或票据交换所的情况下以防操纵的方式实现。这允许没有可信中间人的新商业模型,其降低交易成本,并且可以灵活地提供新数字服务,而不必建立专门为此配置的基础设施和信任关系。受区块链保护的交易数据记录(或简称为交易)包括例如程序代码,其也可以称为所谓的“智能合约”。
技术实现要素:
本发明的目的是提供用于区块链的计算机辅助测试的方法和装置。
该目的通过独立权利要求中说明的特征来实现。在从属权利要求中描绘了本发明的有利扩展方案。
根据第一方面,本发明涉及一种用于区块链的计算机辅助测试的方法,具有以下方法步骤:
-生成规定交易和/或规定智能合约,其中规定交易和/或规定智能合约分别分配有预设值;
-将规定交易和/或规定智能合约插入区块链中;
-实施规定交易和/或规定智能合约,其中检测规定交易和/或规定智能合约的实施的测量值;
-基于预设值来测试测量值,其中在与预设值不同的情况下提供控制信号。
除非另有说明,否则在下面的描述中,术语“执行”、“计算”、“计算机辅助”、“运算”、“确定”、“生成”、“配置”、“重构”等优选地涉及操作和/或过程和/或处理步骤,其改变和/或产生数据和/或将数据转换成其他数据,其中数据尤其可以作为物理变量示出或存在,例如作为电脉冲。尤其地,表达方式“计算机”应尽可能广义地解释,以便尤其覆盖具有数据处理特性的全部电子设备。计算机因此例如可以是个人计算机、服务器、可存储器编程的控制装置(sps)、手持式计算机系统、口袋pc设备、移动无线电设备和其他可以以计算机辅助的方式处理数据的通信设备,处理器和用于数据处理的其他电子设备。
在本发明的上下文中,“计算机辅助”例如可以理解成方法的如下实现方案,在所述实现方案中,尤其是处理器实施方法的至少一个方法步骤。
在本发明的上下文中,“处理器”例如可以理解成机器或电子电路。处理器尤其可以为主处理器(英语为centralprocessingunit,cpu)、微型处理器或微型控制器,例如专用集成电路或数字信号处理器等,它们可能与用于存储程序指令的存储器单元组合。处理器例如也可以为ic(集成电路,英语为integratedcircuit),尤其fpga(英语为fieldprogrammablegatearray)或者asic(专用集成电路,英语为application-specificintegratedcircuit),或者dsp(数字信号处理器,英语为digitalsignalprocessor)或者为图像处理器gpu(graphicprocessingunit)。也可以将处理器理解成可视化处理器、虚拟机或软cpu。例如也可以为可编程的处理器,所述处理器配设有用于实施所述根据本发明的方法的配置步骤或借助配置步骤配置成,使得可编程的处理器实现本发明的方法、组件、模块或其他方面和/或子方面的根据本发明的特征。
在本发明的上下文中,“存储器单元”或“存储器模块”等例如可以理解成工作存储器形式的易失性存储器(英语为random-accessmemory,ram)或持久存储器,如硬盘或数据载体。
在本发明的上下文中,“模块”例如可以理解成处理器和/或用于存储程序指令的存储器单元。例如,处理器特定地被设计用于,实施程序指令,以便处理器实施功能,以便实行或实现根据本发明的方法或根据本发明的方法的步骤。
在本发明的上下文中,“提供”例如可以理解成在存储器模块上或从存储器模块存储或加载例如第一交易数据记录和/或控制动作交易和/或状态声明交易。
在本发明的上下文中,“校验和”(例如第一校验和、第二校验和、节点校验和、交易校验和或链检验和)例如可以理解为密码校验和或密码哈希或哈希值,特别是借助于密码哈希函数通过数据记录和/或数据和/或交易之一和/或链节头部来形成或计算所述密码校验和或密码哈希或哈希值。校验和特别地可以是哈希树(例如,merkle树、patricia树)的一个校验和(多个校验和)或哈希值(多个哈希值)。此外,其特别地也可以理解为数字签名或密码消息认证码。
在本发明的上下文中,“第一校验和”可以理解为例如通过交易的数据(记录)来计算的校验和。代替数据(例如,数据的所选部分),交易可以仅包括例如这些数据的校验和——更准确来说,相应的所属的第一校验和。例如然后可以在另外的链节的另外交易中提供相应的数据。例如,但是也可以设想的是,通过另外的通信信道来提供这些数据。节点然后可以例如借助于来自区块链的第一校验和来检查数据的完整性/真实性。除了第一校验和,例如还可以存储交易中的补充数据记录,其特别地说明可以调用数据的存储位置。为了尽可能小的保持区块链的数据大小,这是特别有利的。附加地,例如可以加快交易校验和的计算,因为在此已经存在校验和并且它们可以立即用作merkle树的叶子。在此,特别是可以省去对补充数据记录形成单独校验和。
在本发明的上下文中,“交易校验和”可以理解为特别地通过区块链的相应链节之一的相应交易和/或一个链节的在前链节/前体链节形成的校验和。附加地或可替换地,还可以特别地通过该链节的在前链节/前体链节的交易形成交易校验和。在此,还可以特别地借助于哈希树(例如,merkle树[1]或patricia树)来实现交易校验和,其中交易校验和特别地是merkle树或patricia树或二元哈希树的根校验和。特别地,借助于来自merkle树或patricia树的另外的校验和来保护交易,其中特别地,另外的校验和是merkle树或patricia树中的叶子。交易校验和可以例如借助于由另外的校验和形成根校验和来保护交易。可以特别地针对链节中的第一链节计算交易校验和。特别地,这样的交易校验和例如可以进入第一链节的后继链节,以便将该后继链节与例如其在前链节(例如,第一链节)链接,并且特别地,因此使得区块链的完整性是可检查的。
在本发明的上下文中,“链检验和”可以理解为对于区块链的相应链节说明或引用区块链的在前链节的校验和(特别地在技术术语中常称为“在前块哈希”)[1]。例如可以将链节的交易校验和用作链检验和。但是,例如也可能的是通过在前链节的头部或整个在前链节形成校验和并且将其用作链检验和。区块链的相应链节优选地分别包括针对相应链节的在前链节计算的链检验和。
在本发明的上下文中,“链接区块链的一个/多个链节”例如可以理解为链节分别包括参考或引用区块链的另一个链节或多个其他链节的信息(例如,链检验和)[1]。
在本发明的上下文中,“插入到区块链中”等例如可以理解为:特别地,一个交易或多个交易或具有其交易的链节被传输到区块链的一个或多个节点。如果这些交易例如被(例如所述一个或多个节点)成功验证真实性,则这些交易特别地作为一个/多个新链节与区块链的至少一个现有链节链接[1]。特别地,验证交易的真实性或将有效的验证过真实性的交易接纳到区块链的链节或块中或者无效交易的拒绝可以称为实施交易。通过实施测试交易,例如由区块链来处理所述测试交易。这可以特别地导致,交易作为有效的验证过真实性的交易包含在区块链中,即特别地,包含在区块链的所链接的块或链节中或在其中被引用。然而,例如也可能导致,交易在实施中被识别为无效的、非有效的,并且该交易特别地不作为有效的验证过真实性的交易包含在区块链中,即不包含在区块链的所链接的块或链节中或不在其中被引用。特别地,该验证真实性和/或链接可以由可信节点(例如,挖掘节点或区块链平台)进行。特别地,区块链平台在此可以理解为如微软或ibm特别地提出的区块链即服务(英文:blockketteasservice)。特别地,可信节点和/或节点可以分别在链节中保存节点校验和(例如数字签名),以便特别地能够实现链节的创建者的可识别性和/或能够实现将相应链节与区块链的至少一个其他链节链接的节点的可识别性。
在本发明的上下文中,“交易”和“多个交易”例如可以理解为智能合约、数据结构或交易数据记录,其特别地分别包括交易之一或多个交易。在本发明的上下文中,“交易”和“多个交易”例如也可以理解为区块链(英文:blockchain)的链节的交易的数据。交易数据记录或交易可以包括特别地实现智能合约的程序代码。在本发明的上下文中,“交易数据记录”也可以例如理解为区块链的链节的交易。
在本发明的上下文中,“程序代码”可以理解为例如特别地在交易中存储的控制命令、程序命令或控制指令。
在本发明的上下文中,“智能合约”可以理解为例如可实施程序代码。程序代码特别地是在虚拟机上可实施的。
在本发明的上下文中,“存储交易”可以理解为例如存储交易或交易数据记录中的数据(例如,数据的所选部分等)。例如也可设想的是,不直接存储数据,而是仅存储交易中相应数据的校验和(例如,第一校验和)。
在本发明的上下文中,“工作量证明”可以理解为例如计算密集任务的解决,所述计算密集任务特别地根据链节内容/第一交易数据记录的内容来解决[1]。这种计算密集任务例如也称为密码谜题。
在本发明的上下文中,“链节”可以理解为例如区块链的块,其特别地实现为数据结构并且优选地分别包括交易中的一个或多个交易。链节可以包括例如关于链节的大小(以字节计的数据大小)、链节头部(英文:blockheader,块头部)、交易计数器和一个或多个交易的说明[1]。链节头部可以包括例如版本、链检验和、交易校验和、时间戳、工作量证明和随机数(用于工作量证明的一次性值、随机值或计数器)[1]。
在本发明的上下文中,“随机数”可以理解为例如密码随机数(对于以下的缩写:“仅用一次”[2]或“一次使用的数”[3])。特别地,随机数表示单个数或字母组合,其优选地在相应上下文(例如,交易、数据传送)中使用唯一一次。
在本发明的上下文中,“区块链的(第一)链节的在前链节”可以理解为例如区块链的仅特别地直接在(第一)链节前面的链节。可替换地,“区块链的(第一)链节的在前链节”也可以特别地理解为区块链的在第一链节前面的所有链节。由此,特别是,例如可以仅通过直接在第一链节前面的链节(或其交易)或通过第一链节前面的所有链节(或其交易)形成链检验和或交易校验和。
在本发明的上下文中,“区块链节点”、“节点”、“区块链的节点”等可以理解为例如利用区块链执行操作的设备(例如,现场设备)、计算机、客户端或订户。这样的节点例如可以实施区块链或其链节的交易,或者可以借助于新链节将具有新交易的新链节插入或链接到区块链中。特别地,该验证真实性和/或链接可以由可信节点(例如,挖掘节点)或仅仅由可信节点进行。可信节点例如是具有附加安全措施(例如,防火墙、对节点的访问限制等)以便防止对节点的操纵的节点。可替换地或附加地,当新链节与区块链链接时,可信节点可以例如在新链节中存储第二校验和(例如,数字签名或证书)。因此特别可以提供一种证明,该证明说明链节已经从确定节点插入或说明其来源。
在本发明的上下文中,“计算机”可以理解为例如分别被布置在区块链外部或者不是区块链的订户的计算机(系统)、客户端、设备或服务器(也就是说,不利用区块链执行操作,或者仅询问区块连,但不执行交易、插入链节或计算工作量证明)。可替换地,计算机也可以特别地理解为区块链的节点。
该方法对于识别例如区块链实现与持续运行中的预期功能性的偏差是有利的。由此,单个客户端或用户特别可以检查分布的或提供的区块链基础设施是否如预期那样工作。如果区块链应该用于安全关键的应用(例如,诸如发电站的重要基础设施的设施控制),则这是特别有利的。特别地,本发明在运行时检查区块链是否仍然在运行/活动的(也就是说,运行未停止、被中断或区块链已经“挂起”)。例如通过多个分布式节点分布式来实现区块链。特别地,节点数目不是明确已知的,使得难以使用常规方法(例如,通过针对已知节点的网络地址的探测(ping)指令)来检查对于区块链的合规运行是否仍有足够节点在运行(这可以例如由区块链的安全指南来规定)或者是否还能完全达到区块链的其他节点并实施交易或验证交易的真实性。此外,特别可以检查是否以非预期或不容许方式修改区块链的功能性。这特别是在例如将区块链用于安全关键控制任务的长期技术系统中是必要的。
例如可以测试,规定交易是否在规定时间间隔内出现在区块链的链节中和/或规定交易是否被成功验证真实性。例如,如果做出将规定交易插入到区块链中的不成功尝试,则区块链的链节不包括规定交易。在这样的情况中,例如在测试时在规定时间间隔之后可以将所确定的值检测为测量值(例如超时)。如果例如预设值现在要求例如必须在规定时间窗口(例如,30秒)内执行规定交易的验证真实性,则将预设值与测量值进行比较时确定偏差。特别地,如果将包括规定交易的链节插入或链接到要求长于规定时间窗口(即预设值)的区块链,则这也可以以类似方式进行。
在该方法的第一实施例中,在插入时尝试将规定交易和/或规定智能合约存储在区块链的链节中并将该链节与区块链的至少一个链节链接。
对于特别是查明区块链的节点是否还能完全地验证交易的真实性,该方法是有利的。特别地,在存储时,规定交易和/或规定智能合约被链节接纳。例如,如果节点已经失效,则它们可以将链节与区块链的其他链节之一链接。由此,特别在测试规定交易时确定,规定交易根本没有出现在区块链中(未被区块链包括)。
在另外的实施方式中,区块链的链节借助于密码哈希函数(h)彼此链接。
在该方法的另外的实施方式中,该方法循环重复或通过触发器来控制。
特别地,对于定期测试区块链,该方法是有利的。例如,可以选择五小时周期用于循环重复。例如,如果通过触发器控制该方法,则这可以特别地在节点在其起始阶段期间被引导时执行。
在该方法的另外的实施方式中,在重新测试时生成具有新内容和相应新预设值的新的规定交易和/或新的规定智能合约,相应新预设值分配给所述新的规定交易和/或新的规定智能合约。
特别地,对于改变测试内容,该方法是有利的。特别地,由此实现,已经被未授权第三方操纵的节点不能容易地提供正确测量值。
在该方法的另外的实施方式中,通过测试检查区块链是否仍然是活动的。
在该方法的另外的实施方式中,通过测试检查规定交易和/或规定智能合约是否并且以多少时间延迟被包含在区块链的链节中。
在该方法的另外的实施方式中,测试由区块链的一个或多个节点执行。
特别地,对于提高测试的可靠性,该方法是有利的,因为由此可以由区块链的多个节点冗余地测试可靠性。
在该方法的另外的实施方式中,规定交易和/或规定智能合约包括随机数值。
特别地,对于当重新测试区块链时容易改变规定交易的内容,该方法是有利的。
在该方法的另外的实施方式中,测量值和/或偏差和/或预设值作为交易被插入到区块链中或与区块链链接,其中节点通过使用控制信号来进行该插入。
根据另外的方面,本发明涉及用于测试区块链的测试发生器(例如,节点),具有:
-提供模块,用于提供规定交易和/或规定智能合约,其中规定交易和/或规定智能合约分别分配有预设值;
-存储器模块,用于将规定交易和/或规定智能合约存储在区块链中;
-实施模块,用于实施规定交易和/或规定智能合约,其中检测规定交易和/或规定智能合约的实施的测量值;
-测试模块,用于基于预设值来测试测量值,其中在与预设值不同的情况下提供控制信号。
在测试发生器的另外的实施方式中,测试发生器包括传输模块,用于传输规定交易和/或规定智能合约。
特别地,对于将规定交易传输到区块链外部的节点或计算机,该方法是有利的。例如可以以面向连接方式(例如,基于tcp/ip)、以无连接方式(例如,基于udp)或基于广播/多播地进行传输。
在测试发生器的另外的实施方式中,测试发生器包括至少一个另外的模块或多个另外的模块,用于执行用于区块链的计算机辅助测试的根据本发明的方法(或所述方法的实施方式之一)。
另外,要求保护具有用于执行根据本发明的所述方法的程序命令的计算机程序产品,其中借助于计算机程序产品可以分别执行根据本发明的方法之一、根据本发明的所有方法或者根据本发明的方法的组合。
附加地,要求保护具有用于配置创建设备、例如3d打印机、计算机系统或适于创建处理器和/或设备的生产机器的程序命令的计算机程序产品的变型,其中利用程序命令来配置创建设备,使得创建根据本发明的所述测试发生器。此外,要求保护用于存储和/或提供计算机程序产品的提供装置。提供装置例如是存储和/或提供计算机程序产品的数据载体。可替换地和/或附加地,提供装置例如是网络服务、计算机系统、服务器系统(特别是分布式计算机系统、基于云的计算机系统和/或虚拟计算机系统),其优选地以数据流的形式存储和/或提供计算机程序产品。
该提供例如作为完整计算机程序产品的程序数据块和/或命令数据块(优选地作为文件、特别是作为下载文件,或作为数据流、特别是作为下载数据流)形式的下载来进行。然而,该提供例如也可以作为由多个部分组成并且特别地经由对等网络下载或作为数据流来提供的部分下载来进行。这样的计算机程序产品例如通过使用数据载体形式的提供装置被读取到系统中并实施程序命令,使得根据本发明的方法在计算机上实施或者配置创建设备使得其创建根据本发明的测试发生器。
附图说明
上面描述的本发明的特性、特征和优点和如何实现它们的方式结合下面对实施例的描述将变得更清楚且更明白地能理解,结合附图更详细解释这些实施例。在此,以示意图:
图1示出本发明的作为流程图的第一实施例;
图2示出本发明的第二实施例;
图3示出本发明的第三实施例;
图4示出本发明的作为测试发生器的第四实施例。
在附图中,除非另有说明,否则功能等同的元件配备有相同附图标记。
具体实施方式
除非另有说明或者已经说明,否则下面的实施例具有至少一个处理器和/或存储器单元,以便实现或实施方法。
尤其对于(有关的)技术人员在了解一个方法权利要求/多个方法权利要求的情况下显然也已知全部在现有技术中常见的用于实现产品的可能性或用于实行的可能性,使得尤其在说明书中不需要独立的公开内容。尤其地,所述常用的和本领域技术人员已知的实现变型可以仅经由硬件(组件)或仅经由软件(组件)实现。替选地和/或附加地,本领域技术人员在其专业知识的范围中可以选择尽可能任意的根据本发明的由硬件(组件)和软件(组件)构成的组合,以便实现根据本发明的实现变型。
由硬件(组件)和软件(组件)构成的根据本发明的组合尤其可以在如下情况下出现:根据本发明的效果的一部分优选仅通过专用硬件(例如asic或fpga形式的处理器)引起和/或另一部分通过(处理器和/或存储器辅助的)软件引起。
尤其地,由于大量的不同实现可能性而不可能并且也对于理解本发明并非主要目标的或不必要的是,提到全部这些实现可能性。就此而言,尤其全部下面的实施例应仅示例性地示出根据本发明的教导的这种实现方案可以如何表现的一些途径。
因此,尤其各个实施例的特征不限于相应的实施例,而是尤其一般性地涉及本发明。相应地,一个实施例的特征优选也可以用作为其他实施例的特征,尤其这不必明确地在相应的实施例中提出。
图1示出本发明的作为根据本发明的方法的流程图的第一实施例,所述方法用于区块链的计算机辅助测试。
该方法包括第一方法步骤110,用于生成规定交易和/或规定智能合约,其中规定交易和/或规定智能合约分别分配有预设值。规定交易在此可以包括密码随机数,所述密码随机数用作密码函数的参数并且提供针对该随机数的可复现结果(即使多次使用密码函数)。该可复现结果然后可以例如用作预设值。预设值此外还可以包含另外的数据,诸如时间窗口,在所述时间窗口内,必须将规定交易与区块链链接。预设值也可以包括另外的时间窗口,其说明规定交易的验证真实性或实施至多被允许持续多久。
该方法包括第二方法步骤,用于将规定交易和/或规定智能合约插入120到区块链中。为此,规定交易可以被传输到区块链的应验证规定交易的真实性的节点。
该方法包括第三方法步骤,用于实施130规定交易和/或规定智能合约,其中检测规定交易和/或规定智能合约的实施的测量值。在此,现在等待规定交易被包括在区块链的链节中。如果规定交易例如在规定时间窗口之后未包含在区块链的链节中,则例如检测到超时作为测量值。
该方法包括第四方法步骤,用于基于预设值来测试140测量值,其中在与预设值不同和/或与预设值一致的情况下提供控制信号。为此,预设值例如可以与测量值进行比较。预设值可以例如规定测量值不允许超过或应当遵守的阈值(例如,直至交易以成功验证真实性而包含在区块链中的持续时间、包含在区块链中的成功验证真实性的交易的数目)。
如果例如预设值要求规定交易应该在30秒内被包含在区块链的链节中并且测量值包含超时,则确定与预设值的偏差。而如果测量值包含例如20秒,则确定与预设值一致。
然后可以通过控制信号来提供结果(也就是说,一致或偏差)。控制信号在此可以包括测量值、预设值、结果或者这些数据的组合。
换言之,实现了一种方法,在所述方法中,以用于区块链的规定交易(例如,有效交易和无效交易)和/或规定智能合约的形式提供测试向量。
此外检查规定交易/智能合约是否与其相应预设值一致。这可以例如是有效交易形式的肯定测试,有效交易于是作为经验证真实性的交易被包含在区块链中。这可以例如是无效交易形式的否定测试,无效交易不允许作为有效/经成功验证真实性的交易被包含在区块链中。
该方法或测试优选地定期重复。如果重复该方法,在重复时特别是新的规定交易(或多个规定交易)可以被置于区块链中,并且给这些交易分别分配预设值。
可以例如通过一个或多个节点来实现该方法。节点可以例如将规定交易插入区块链中、在该节点被激活时尝试链接并且测试它(例如,当节点被引导时的上电测试)和/或在节点持续运行中重复地测试它。
同样可能的是,特别是智能合约生成、插入、实施并测试规定交易。可替换地,第一智能合约可以产生并插入规定交易,而第二智能合约实施并测试规定交易。
换言之,由此实现区块链的内置自测试。测试的结果可以作为交易提供给区块链(例如,在相同区块链中或在第二区块链中)。
此外,可以通过包括随机数的(例如,活力测试交易形式的)规定交易被引入到区块链中的方式来检查区块链的活力(例如,测试区块链是否有足够节点仍然是活动的/可达到的),并且检查/测试该规定交易是否并且何时(在多长时间段之后)被确认在区块链中或者作为被成功验证真实性的而存在(例如,当该规定交易包含在区块链的链节中时就确认该规定交易)。
检查/测试可以例如由以下节点进行,所述节点将活力测试交易置于区块链中并检查该交易是否被确认并且该交易以多长延迟被确认。
检查/测试也可以例如由以下节点实现,所述节点放置活力测试交易并检查其存在。
例如同样可能的是,第一节点放置活力测试交易,所述活力测试交易检查/测试一个或多个其他节点。这是特别有利的,因为当存在多个节点时,不必每个节点都单独地检查区块链的活力。
在另外的变型中,区块链或其节点的活力的测试由智能合约来实现。为此,智能合约生成规定交易(例如,活力测试交易),将其插入区块链中,实施规定交易并对照预设值来测试测量值。
在另外的变型中,设置单独的智能合约,以便生成、插入、实施并测试活力测试交易。为此,例如可以生成随机数(例如,随机数字或借助于密码秘钥生成的消息认证码或数字签名或哈希值)并将随机数作为活力检查交易形式的规定交易置于区块链中。
检查/测试在区块链中是否并且根据哪个所检测的测量值、例如直至该交易的延迟来确认该交易。于是,在这种情况下测试测量值是否遵守所分配的预设值,例如,预设值规定最大允许延迟,在该最大允许延迟内应当确认交易。在一种变型中,该测试的结果同样可以被置于区块链中(或第二区块链中)作为活力证实交易。
可以以不同方式使用控制信号:如果控制信号指示区块链中的故障,则例如可以提供声学或光学警报通知,可以提供电切换信号,或者可以将错误通知记录在错误存储器中。此外,可以通过防火墙例如在网络边界处阻止数据传送,或者使控制系统置于自检运行状态(失效安全运行状态)。
图2示出本发明的第二实施例,其由系统来实现。
具体地,图2示出具有多个(区块链)节点bcn的示例性系统,所述多个节点实现区块链(例如,比特币节点或以太坊节点)并且通过网络250(例如,lan、wan或因特网)相互连接。
在该示例中,设置测试发生器210(特殊节点或服务)(并且必要时测试发生器与网络250连接),测试发生器210尝试将一个/多个规定交易220(如这例如已经在图1中所解释的那样)置于区块链中。在此可以涉及有效交易(肯定测试)和无效交易(否定测试)。测试发生器210检查规定交易是否并且是哪些规定交易在区块链中被确认230,即被包含在区块链的经确认的链节中。检查具有肯定测试的规定交易是否被包含在区块链中,并且没有具有否定测试的规定交易被包含在区块链中。在该示例中,测试结果同样被确认为区块链的交易(例如,结果交易260)。
由此,节点bcn自身或其他设备280(例如,中继设备、防火墙、网关)可以检查结果,而它们自身不必重复测试。
图3示出本发明的第三实施例,其是适于实现前述实施例的区块链。
具体地,图3示出区块链的链节g,例如第一链节g1、第二链节g2和第三链节g3。
链节g分别包括多个交易t。例如,第一链节g1包括第一交易t1a、第二交易t1b、第三交易t1c和第四交易t1d。例如,第二链节g2包括第五交易t2a、第六交易t2b、第七交易t2c和第八交易t2d。例如,第三链节g3包括第九交易t3a、第十交易t3b、第十一交易t3c和第十二交易t3d。
链节g附加地还分别包括根据直接前体链节形成的链检验和crc。因此,第一链节g1包括其前体链节的第一链检验和crc1,第二链节g2包括第一链节g1的第二链检验和crc2,并且第三链节g3包括第二链节g2的第三链检验和crc3。链检验和优选地通过相应前体链节的链节头部来形成。链检验和crc可以优选地通过使用诸如sha-256、keccak-256或sha-3的密码哈希函数来形成。
附加地,每个链节可以包括交易校验和。所述交易校验和可以借助于哈希树来实现。
为了形成哈希树,针对链节的每个交易形成第三校验和(一般同样为根据交易/交易数据记录形成的哈希值)。通常,使用例如merkle树或patricia树的哈希树,其根哈希值/根校验和优选地作为交易校验和保存在相应链节中。
在一种变型中,交易校验和用作链检验和。
此外,链节可以具有时间戳、数字签名和工作量证明,如其在本发明的实施例中所解释的那样。
如果现在通过图3中示出的区块链来实现图1和/或图2中的根据本发明的方法,则尝试将规定交易(例如,具有肯定测试和否定测试的交易)插入到区块链中。这样,例如作为第一交易t1a、第二交易t1b和第三交易t1c的肯定测试可以借助于第一链节g1作为经成功验证真实性的交易与区块链链接。附加地,一般性交易(例如,关于支付过程的交易)可以包含在区块链中。例如,预设值现在规定区块链中只允许包含这些肯定测试或肯定测试或其交易的数目。如果例如尝试将具有否定测试的规定交易插入到区块链中并且该否定测试包含在区块链的链节g的交易t中,则将存在错误,或者确定与预设值的偏差。
此外,同样以经成功验证真实性的交易(例如,第九交易t3a)的形式来提供测试结果。
图4示出本发明的作为测试发生器的第四实施例,所述测试发生器用于区块链的计算机辅助测试。装置例如可以是图2中的测试发生器。
装置包括生成模块410、插入模块420、实施模块430、测试模块440和可选的第一通信接口404(例如,用于连接到图2中的网络),它们通过第一总线403彼此通信连接。
装置可以例如附加地还包括一个或多个另外的组件,诸如处理器、存储器单元、输入设备(特别地,计算机键盘或计算机鼠标)和显示设备(例如,监视器)。处理器可以例如包括多个另外的处理器,其中另外的处理器例如分别实现一个或多个模块。可替换地,处理器特别地实现实施例的所有模块。另外的组件(多个组件)可以例如同样地通过第一总线403彼此通信连接。
处理器可以例如是asic,其专用地针对实施例(和/或另外的实施例)的相应模块或所有模块的功能来实现,其中程序组件和程序命令特别地实现为集成电路。处理器还可以例如是fpga,其特别地借助于程序命令来配置使得fpga实现实施例(和/或另外的实施例)的相应模块或所有模块的功能。
生成模块410被配置为生成规定交易和/或规定智能合约,其中规定交易和/或规定智能合约分别分配有预设值。
生成模块410可以例如借助于处理器、存储器单元和第一程序组件来实行或实现,其中例如,通过实施第一程序组件的程序命令配置处理器,或者通过程序命令配置处理器,使得生成规定交易和/或规定智能合约。
插入模块420被配置为将规定交易和/或规定智能合约插入到区块链中。
插入模块420可以例如借助于处理器、存储器单元和第二程序组件来实行或实现,其中例如,通过实施第二程序组件的程序命令配置处理器,或者通过程序命令配置处理器,使得插入规定交易和/或规定智能合约。
实施模块430被配置为实施规定交易和/或规定智能合约,其中检测规定交易和/或规定智能合约的实施的测量值。
实施模块430可以例如借助于处理器、存储器单元和第三程序组件来实行或实现,其中例如,通过实施第三程序组件的程序命令配置处理器,或者通过程序命令配置处理器,使得实施规定交易和/或规定智能合约。
测试模块440被配置为根据预设值来测试测量值,其中在与预设值不同的情况下提供控制信号。
测试模块440可以例如借助于处理器、存储器单元和第四程序组件来实施或实现,其中例如,通过实施第四程序组件的程序命令配置处理器,或者通过程序命令配置处理器,使得测试测量值。
在这种情况下,可以例如借助于处理器本身和/或借助于初始化组件、例如加载器(英文:loader)或配置组件来实施相应模块的程序命令。
尽管本发明细节上通过实施例予以详细说明和描述,但本发明不限于公开的示例,并且其他变型形式可以由本领域技术人员从中导出,而不脱离本发明的保护范围。
参考文献
[1]
andreasm.antonopoulos“masteringbitcoin:unlockingdigitalcryptocurrencies”,o’reillymedia,december2014
[2]
rogerm.needham,michaeld.schroeder“usingencryptionforauthenticationinlargenetworksofcomputers”acm:communicationsoftheacm.volume21,no.12,december1978
[3]
rossanderson“securityengineering.aguidetobuildingdependabledistributedsystems”,wiley,2001。