CN115280346A - 区块链事务双重花费证明 - Google Patents

区块链事务双重花费证明 Download PDF

Info

Publication number
CN115280346A
CN115280346A CN202180020614.4A CN202180020614A CN115280346A CN 115280346 A CN115280346 A CN 115280346A CN 202180020614 A CN202180020614 A CN 202180020614A CN 115280346 A CN115280346 A CN 115280346A
Authority
CN
China
Prior art keywords
transaction
blockchain
party
network
node
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.)
Pending
Application number
CN202180020614.4A
Other languages
English (en)
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.)
Blockchain Licensing Jsc
Original Assignee
Blockchain Licensing Jsc
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 Blockchain Licensing Jsc filed Critical Blockchain Licensing Jsc
Publication of CN115280346A publication Critical patent/CN115280346A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • G06Q20/4016Transaction verification involving fraud or risk level assessment in transaction processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/12Detection or prevention of fraud
    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/22Payment schemes or models
    • G06Q20/223Payment schemes or models based on the use of peer-to-peer networks
    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3825Use of electronic signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3297Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Accounting & Taxation (AREA)
  • Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Finance (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种检验区块链事务是否为双重花费尝试的计算机实现的方法,所述方法由第一方执行并且包括:生成第一区块链事务,所述第一区块链事务包括输入,所述输入用于解锁区块链事务的输出,所述区块链事务先前传输到区块链网络的一个或更多个节点以使所述区块链事务包含在所述区块链中;基于所述第一区块链事务和一个或更多个时间指示器生成签名,每个时间指示器指示所述第一区块链事务生成和/或传输给第二方的时间;以及将所述第一区块链事务、所述签名和所述一个或更多个时间指示器传输给所述第二方,其中至少所述第一区块链事务经由链下通信信道传输给所述第二方。

Description

区块链事务双重花费证明
技术领域
本公开涉及用于证明区块链事务是否为双重花费尝试的方法。
背景技术
区块链是指一种分布式数据结构形式,其中在点对点(P2P)网络中的多个节点中的每个节点处维护区块链副本。区块链包括一系列数据区块,其中每个区块包括一个或更多个事务(transaction)。每个事务都可以回指序列中的先前事务,其可以扩展一个或更多区块。通过称为“挖掘”的过程,事务可以通过提交到网络包括在新区块中,该过程涉及多个挖掘节点中的每个挖掘节点争相执行“工作量证明”,即基于等待包括在区块中的未决事务池解决加密难题。
区块链中的事务通常用于传递数字资产,即用一定数量的数字通证。但是也可利用区块链实现区块链上的分层附加功能。例如,区块链协议可允许在事务输出中存储附加用户数据。现代区块链在单一事务中可储存的最大数据容量在不断增加,从而能够并入更复杂的数据。例如,这可用于在区块链中存储电子文档,甚至音频或视频数据。
网络中的每个节点可以具有以下三个角色中的任何一个、两个或全部:转发、挖掘和存储。转发节点在整个网络节点中传播事务。挖矿节点核实事务并将这些事务插入到候选区块中,这些事务尝试标识有效的工作量证明解。存储节点各自对区块链中的已挖掘区块存储自己的副本。为了将事务记录在区块链中,一方将该事务发送到网络中的节点中的一个节点进行传播。接收该事务的挖掘节点可以争相将该事务挖掘到新区块中。每个节点被配置为遵守相同的节点协议,该协议将包括用于确认事务有效的一个或更多个条件。无效事务将不会传播或挖掘到区块中。假定事务已经核实有效,从而在区块链上被接受,该附加用户数据将因此作为不可改变的公共记录,继续存储在P2P网络中的各个节点处。
发明内容
区块链的一项基本原则是,各方无法双重花费未花费事务输出(UTXO)。提交到区块链网络的每个区块链事务必须包含输入,所述输入引用先前提交的事务(例如,所述区块链网络上已接受的事务)的输出。所述引用的输出必须是未花费事务输出才能在所述区块链网络上被核实和接受。如果所述引用的输出已花费,所述事务将被拒绝。这可以防止双重花费所述区块链上已记录的输出。
区块链事务也可以在各方之间进行点对点发送,而无需传输到所述区块链网络。也就是说,第一方可以经由链下侧信道将区块链事务传输给第二方。例如,所述区块链事务可以是模板事务,所述第二方可以将输入添加到所述模板事务中,(例如)以为所述事务提供资金或验证所述事务的内容。又如,所述第二方可以将输出添加到所述事务中,(例如)以定义所述事务的花费条件。所述第二方可以完成所述事务,然后将其提交到所述区块链网络以便记录在所述区块链中。
所述第二方可能会(有意或无意地)试图双重花费所述新提交事务的所述输入引用的先前事务的输出。例如,在所述第二方不知情的情况下,所述第一方可能已经在所述事务模板中包含引用先前花费事务输出的输入。当所述第二方将所述已完成事务提交到所述区块链网络时(例如,将输出添加到所述事务模板中之后),所述提交的事务将被拒绝。这可能会对所述第二方产生负面影响。例如,所述第二方可能已与所述第一方进行商品或服务交易,以获取经由所述事务转移给所述第二方(或者至少被认为在将所述事务提交到所述区块链时传输给所述第二方)的数字资产。其他潜在影响包括可能受到欺诈指控或被禁止(例如,被列入黑名单)使用所述区块链。
因此,需要降低双重花费尝试(double spend attempt)的风险。
根据本公开的一个方面,提供了一种检验区块链事务是否为双重花费尝试的计算机实现的方法,所述方法由第一方执行并且包括:生成第一区块链事务,所述第一区块链事务包括输入,所述输入用于解锁区块链事务的输出,所述区块链事务先前传输到区块链网络的一个或更多个节点以使所述区块链事务包含在所述区块链中;基于所述第一区块链事务和一个或更多个时间指示器生成签名,每个时间指示器指示所述第一区块链事务生成和/或传输给第二方的时间;以及将所述第一区块链事务、所述签名和所述一个或更多个时间指示器传输给所述第二方,其中至少所述第一区块链事务经由链下通信信道传输给所述第二方。
基于上面提供的示例,所述第一方可以是客户,所述第二方可以是商家。所述第一区块链事务可以用于将数字资产转移给所述第二方,以获取所述商家提供的商品或服务。所述商家可以设置为接受0-conf事务。“0-conf”事务是指未从所述网络中的任何节点接收到关于所述事务已包含在所述区块链的区块中的任何确认的事务。
返回该示例,所述商家接受所述第一区块链事务作为商品或服务的支付,而不检查所述第一区块链事务是否已包含在所述区块链中。然而,这会带来所述第一区块链事务成为“双重花费”尝试的风险。即,所述第一区块链事务的输入花费已花费的先前区块链事务的输出。将所述第一区块链事务与所述签名和所述指示器(例如,时间戳)一起传输可以证明事务发布顺序,以降低双重花费尝试的风险。所述签名基于所述事务和所述第一事务生成和/或传输给所述商家的时间。实际上,这意味着所述第二方验证所述第一区块链事务的生成和/或传输时间。在双重花费的情况下,所述商家可以使用所述签名作为所述第一方有意双重花费先前事务输出的证明。因此,有关当局可以对所述第一方采取措施。所述商家还可以使用所述签名(例如,向所述商家的银行或保险公司)证明所述商家是欺诈的受害者。
物联网等点对点网络中也会出现双重花费尝试问题。与集中式架构相比,点对点(P2P)架构提供了更安全且更高效的方案,相邻节点之间无需使用任何集中式节点或智能体即可直接进行交互。区块链技术是安全P2P通信的基础,有望彻底改变物联网系统的发展趋势。区块链使支付和控制能够集成到一个网络中;现有基础设施可以用于捎带有关设备状态变化的消息;对网络中的数据进行分散控制可以提高用户与设备之间的交互速度。与区块链技术相结合,在现实世界中发挥作用的传统物联网设备能够同时传递消息和交换价值。公共区块链充当全域支付网络和通用商品分类账,其协议内置强大的加密安全性,可自动应对与物联网相关的多种风险。然而,如果实现下一代基于区块链的物联网设备系统,基于区块链的物联网控制方法需要克服开放式系统固有的挑战。这些挑战包括可能不是所述区块链本身固有的设备控制机制。GB1915842.7中对此类控制机制进行了描述。
为了保证节点之间的通信延迟最小,物联网控制机制可以依赖于P2P事务传播、事务延展性和0-conf事务。然而,恶意或故障节点可能希望由所述网络中的其他节点执行动作而无需支付任何费用,或者不希望将交互记录保留在链上。在这种情况下,所述恶意节点可能会创建事务Tx1,所述事务包含命令消息并且花费先前事务的某个或某些输入。同时,所述节点广播花费相同输入的另一事务Tx1,从而保证所述网络在响应节点完成Tx1之后将其拒绝。虽然在可信网络中可以假设节点不是蓄意恶意节点,但部分完成事务(partiallycomplete transaction)的接收者不能保证它们广播的事务在它们执行动作(基于所述命令消息)并且使用附加签名完成所述事务之后会被接受。此外,如果所述动作尚未执行且所述事务尚未广播,则无法阻止所述部分完成事务的创建者重新花费输入。
根据本文公开的另一方面,提供了一种确定是否接受来自第一方的区块链事务的计算机实现的方法,所述方法由第二方执行并且包括:经由链下通信信道接收来自所述第一方的第一区块链事务,所述第一区块链事务包括输入,所述输入用于解锁区块链事务的输出,所述区块链事务先前传输到区块链网络的一个或更多个节点以使所述区块链事务包含在所述区块链中;确定所述第一方是否已将以下各项传输给所述第二方:(a)基于所述第一区块链事务和一个或更多个第一时间指示器生成的签名,每个第一时间指示器指示所述第一区块链事务的生成和/或传输时间;以及(b)所述一个或更多个时间指示器;以及基于一个或更多个条件接受所述第一区块链事务,所述一个或更多个条件中的第一条件是所述第一方已传输所述签名和所述一个或更多个第一时间指示器。
本发明可降低由恶意行为者引起的双重花费尝试的风险。基于上述场景,所述第一方和所述第二方可以是物联网的节点,其中所述第一方(第一节点)使用所述第一区块链事务(“控制事务”)来指示所述第二方(第二节点)控制终端设备。例如,所述第一节点可以是主节点,而所述第二节点可以是从节点。所述节点可以设置为接受0-conf事务并对其执行动作。在恶意方已经获得对所述第一节点的控制的情况下,所述恶意方可能会尝试通过重放事务或花费先前事务的花费输出来控制所述第二节点。所述第二节点可以设置为仅接受带有所述签名和所述指示器的控制事务。或者,所述第二节点可以仅接受带有时间戳的事务,所述时间戳指示所述第一区块链事务的接收时间阈值内的时间。
应当理解的是,在许多场景下,当区块链事务在各方之间链下发送时,可能会出现双重花费尝试的风险。本发明适用于所有此类场景。
附图说明
为了帮助理解本公开的实施例并示出如何实施此类实施例,现将仅通过举例的方式参考附图进行说明,其中:
图1是一种用于实现区块链的系统的示意性框图;
图2示意性地示出了可记录在区块链中的事务的一些示例;
图3是另一种用于实现区块链的系统的示意性框图;
图4A是客户端应用程序的示意性框图;
图4B是可由图4A的客户端应用程序表示的示例性用户界面的示意性模型;
图5示意性地示出了物联网与区块链网络之间的重叠;
图6示意性地示出了分层网络拓扑结构;
图7a和图7b示意性地示出了示例性部分命令事务和完整命令事务;
图8a和图8b示意性地示出了其他示例性部分命令事务和完整命令事务;图9示意性地示出了命令请求和响应周期;以及
图10a和图10b示意性地示出了命令和请求周期,由此恶意节点发布了双重花费命令事务。
具体实施方式
示例性系统概述
图1总体地示出了一种用于实现区块链150的示例性系统100。系统100包括分组交换网络101,通常是诸如互联网的广域互联网。分组交换网络101包括多个节点104,该多个节点被设置成在分组交换网络101内形成点对点(P2P)覆盖网络106。每个节点104包括对等体的计算机设备,不同的节点104属于不同的对等体。每个节点104包括含一个或更多个处理器的处理装置,例如一个或更多个中央处理单元(CPU)、加速器处理器、特定应用程序处理器和/或现场可编程门阵列(FPGA)。每个节点还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。存储器可包括一个或更多个存储器单元,其采用一个或更多个存储器介质,例如诸如硬盘等的磁介质、诸如固态硬盘(SSD)、闪存或电可擦可编程只读存储器(EEPROM)等的电子媒介和/或诸如光盘驱动器等的光学介质。
区块链150包括一系列数据区块151,其中在P2P网络160中的多个节点中的每个节点处维护相应的区块链150副本。区块链中的每个区块151均包括一个或更多个事务(transaction)152,其中该上下文中的事务是指一种数据结构。数据结构的性质将取决于用作事务模型或计划的一部分的事务协议类型。给定的区块链通常全程使用一个特定的事务协议。在一种常见的事务协议中,每个事务152的数据结构至少包括一个输入和至少一个输出。每个输出指定一个数额,该数额表示属于输出被加密锁定的用户103的数字资产值(需要该用户的签名进行解锁,从而进行赎回或花费)。每个输入指向先前事务152的输出,从而链接这些事务。
节点104中的至少一些节点扮演转发节点104F的角色,这些节点转发并因此传播事务152。节点104中的至少一些节点扮演挖掘区块151的矿工104M的角色。节点104中的至少一些节点扮演存储节点104S(有时也称为“完整副本”节点)的角色,每个存储节点均在相应的存储器中存储相同区块链150的相应副本。每个矿工节点104M还维护等待挖掘到区块151中的事务152的池154。给定节点104可以是转发节点104、矿工104M、存储节点104S或其中两个节点或所有节点的任意组合。
在给定的当前事务152j中,输入(或每个输入)包括指针,该指针引用事务序列中先前事务152i的输出,指定该输出将在当前事务152j中被赎回或“花费”。通常,当前事务可以是池154或任何区块151中的任何事务。尽管为了确保当前事务有效,将需要存在先前事务152i并核实其有效,但是在创建当前事务152j甚至向网络106发送当前事务152j时,不必存在先前事务152i。因此,在本文中,“先前”是指由指针链接的逻辑序列中的前任,而不一定是时间序列中的创建时间或发送时间,因此,不一定排除无序创建或发送事务152i、152j的情况(参见下面关于孤立事务的讨论)。先前事务152i同样可以称为先行事务或前任事务。
当前事务152j的输入还包括先前事务152i的输出被锁定到的用户103a的签名。反过来,当前事务152j的输出可以加密锁定到新用户103b。因此,当前事务152j可将先前事务152i的输入中定义的数额转移到当前事务152j的输出中定义的新用户103b。在某些情况下,事务152可具有多个输出,以在多个用户间分割输入数额(其中一个可以是原始用户103a,以便进行变更)。在某些情况下,一个事务还可以具有多个输入,以将一个或更多个先前事务的多个输出中的数额汇总在一起,并重新分配到当前事务的一个或更多个输出。
上述可称为“基于输出的”事务协议,有时也称为未花费的事务输出(UTXO)的协议(其中输出称为UTXO)。用户的总余额不是用区块链中存储的任何一个数字定义的;相反,用户需要特殊“钱包”应用程序105,以整理该用户的所有UTXO值,这些UTXO值分散在区块链151的许多不同事务152中。
作为基于账户的事务模型的一部分,另一种类型的事务协议可称为“基于账户的”协议。在基于账户的情况下,每个事务均不通过参考过去事务序列中先前事务的UTXO来定义转移的数额,而是通过参考绝对账户余额进行定义。所有账户的当前状态由矿工单独存储到区块链中,并不断更新。在此类系统中,事务使用账户的运行事务记录(也称为“头寸”)进行排序。该值由发送者签名作为其加密签名的一部分,并作为事务引用计算的一部分进行哈希处理。此外,可选的数据字段也可以在事务中签名。例如,如果数据字段中包含先前事务的ID,则该数据字段可指向先前事务。
无论采用何种类型的事务协议,当用户103希望执行新事务152j时,其希望将新事务从其计算机终端102发送至P2P网络106的节点104中的一个(现在通常是服务器或数据中心,但原则上可以是其他用户终端)。此节点104根据在节点104中的每个节点处应用的节点协议检查事务是否有效。节点协议的详细信息将与相关区块链150中使用的事务协议类型相对应,一起形成整个事务模型。节点协议通常要求节点104检查新事务152j中的加密签名是否与预期签名相匹配,这取决于事务152的有序序列中的先前事务152i。在基于输出的情况下,这可包括检查新事务152j的输入中包含的用户加密签名是否与新事务花费的先前事务152i的输出中定义的条件相匹配,其中该条件通常包括至少检查新事务152j的输入中的加密签名是否解锁新事务的输入所指向的先前事务152i的输出。在一些事务协议中,条件可至少部分地由输入和/或输出中包含的自定义脚本定义。或者,这可仅由节点协议单独确定,或可通过其组合确定。无论采用哪种方式,如果新事务152j有效,当前节点会将其转发到P2P网络106中的一个或更多个其他节点104。这些节点104中的至少一些节点还作为转发节点104F,根据相同的节点协议应用相同的检验,从而将新事务152j转发到一个或更多个进一步的节点104,依此类推。通过这种方式,新事务在节点104的整个网络中进行传播。
在基于输出的模型中,给定输出(例如,UTXO)是否花费的定义是,根据节点协议,其是否通过另一个随后事务152j的输入有效赎回。事务有效的另一个条件是其试图花费或赎回的先前事务152i的输出尚未被另一个有效事务花费/赎回。同样,如果无效,事务152j将不会在区块链中传播或记录。这可防止重复花费,即花费者对同一个事务的输出花费超过一次。另一方面,基于账户的模型通过保持账户余额防止重复花费。因为同样存在定义的事务顺序,账户余额在任何时候均具有单一定义的状态。
除核实之外,节点104M中的至少一些节点在称为挖矿的过程中争先创建事务区块,该过程以“工作量证明”为基础。在挖矿节点104M处,将新事务添加到区块中尚未出现的有效事务的池中。然后,矿工争相通过尝试解决加密难题来组装事务池154中事务152的新的有效区块151。通常情况下,这包括搜索“随机数”值,从而当随机数与事务池154并置且进行哈希处理时,哈希值的输出满足预定条件。例如,预定条件可以是哈希值的输出具有某个预定义的前导零数。哈希函数的特性是,相对于其输入,其具有不可预测的输出。因此,该搜索只能通过强力执行,从而在试图解决难题的每个节点104M处消耗大量的处理资源。
解决难题的第一矿工节点104M在网络106上宣布难题解决,提供解决方案作为证明,然后网络中的其他节点104则可以轻松检查该解决方案(一旦给出哈希值的解决方案,就可以直接检查该解决方案是否使哈希值的输出满足条件)。基于已在每个此类节点处检查获胜者的已宣布解决方案,获胜者已为其解决该难题的事务池154之后由充当存储节点104S的节点104中的至少一些节点记录在区块链150中作为新区块151。区块指针155还分配给指向区块链中先前创建的区块151n-1的新区块151n。工作量证明有助于降低重复花费的风险,因为创建新区块151需要大量工作,并且由于包含重复花费的任何区块都可能被其他节点104拒绝,因此挖矿节点104M受到激励,不允许在其区块中包含双重花费。一旦创建,则不可修改区块151,因为其根据相同的协议在P2P网络106中的存储节点104S中的每个存储节点进行识别和维护。区块指针155还向区块151施加顺序。由于事务152记录在P2P网络106中每个存储节点104S处的有序区块中,因此提供了事务的不可变公共分类账。
应当注意的是,在任何给定时间争相解决难题的不同矿工104M可能会根据任何给定时间的未挖掘事务池154的不同快照执行该操作,具体取决于他们何时开始搜索解决方案。解决相应难题的人员首先定义新区块151n中包含的事务152,并更新当前未挖掘事务池154。然后,矿工104M继续争相从新定义的未完成池154中创建区块,依此类推。此外,还存在解决可能出现的任何“分叉”的协议,其中两名矿工104M彼此在很短的时间内解决难题,从而传播区块链的冲突视图。简言之,分叉方向最长的成为最终区块链150。
在大部分区块链中,获胜矿工104M会自动获得特殊类型的新事务作为奖励,该新事务创建新的数字资产值(与将数字资产数额从一个用户转移至另一个用户的正常事务截然相反)。因此,获胜节点被视为已“挖掘”一定数量的数字资产。这种特殊类型的事务有时称为“生成”事务,其自动形成新区块151n的一部分。该奖励可激励矿工104M争相参与工作量证明。通常情况下,常规(非生成)事务152还将在其输出中的一个输出中指定附加事务费用,以进一步奖励创建其中包含事务的区块151n的获胜矿工104M。
由于挖掘中涉及的计算资源,通常至少矿工节点104M中的每个矿工节点采用服务器的形式,该服务器包括一个或更多个物理服务器单元,甚至整个数据中心。每个转发节点104M和/或存储节点104S还可采取服务器或数据中心的形式。但是,原则上来说,任何给定节点104均可采用一个用户终端或联网在一起的一组用户终端的形式。
每个节点104的存储器均存储被配置为在节点104的处理装置上运行的软件,以根据节点协议执行其相应的角色并处理事务152。应当理解的是,在本文中归因于节点104的任何动作均可通过在相应计算机设备的处理装置上运行的软件执行。此外,在本文中使用的“区块链”一词是指一般技术类型的通用术语,不限于任何特定专有区块链、协议或服务。
扮演消费用户角色的多方103中的每一方的计算机设备102也连接到网络101。他们充当事务中的支付者和收受者,但不一定代表其他方参与挖掘或传播事务。他们不一定运行挖矿协议。出于说明目的,示出了双方103及其相应的设备102:第一方103a及其相应的计算机设备102a,以及第二方103b及其相应的计算机设备102b。应当理解的是,更多此类当事方103及其相应的计算机设备102可能存在并参与系统,但为了方便起见,未进行说明。每一方103均可以是个人或组织。仅出于说明目的,在本文中,第一方103a称为爱丽丝,第二方103b称为鲍勃,但应当理解的是,这并不仅限于爱丽丝或鲍勃,且本文对爱丽丝或鲍勃的任何引用均可分别用“第一方”和“第二方”替换。
每一方103的计算机设备102包括相应的处理装置,其包括一个或更多个处理器,例如一个或更多个CPU、图形处理单元(GPU)、其他加速器处理器、特定应用程序处理器和/或FPGA。每一方103的计算机设备102还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。该存储器可包括一个或更多个存储器单元,其采用一个或更多个存储器介质,例如诸如硬盘等磁介质、诸如SSD、闪存或EEPROM等电子媒介和/或诸如光盘驱动器等的光学介质。每一方103的计算机设备102上的存储器存储软件,其包括被设置为在处理装置上运行的至少一个客户端应用程序105的相应实例。应当理解的是,在本文中归因于给定方103的任何行动均可通过在相应计算机设备102的处理装置上运行的软件执行。每一方103的计算机设备102包括至少一个用户终端,例如台式或笔记本电脑、平板电脑、智能手机或诸如智能手表等的可穿戴设备。给定方103的计算机设备102还可包括一个或更多个其他网络资源,诸如通过用户终端访问的云计算资源。
客户端应用程序或软件105最初可通过例如从服务器下载的适当计算机可读存储介质,或通过诸如可移动SSD、闪存密钥、可移动EEPROM、可移动磁盘驱动器、软盘或磁带等的可移动存储设备、诸如CD或DVD ROM等的光盘或可移动光驱等提供至任何给定方103的计算机设备102。
客户端应用程序105至少包括“钱包”功能。这有两个主要功能。其中一个功能是使相应的用户方103创建、签名和发送拟在节点104的整个网络中传播的事务152,并因此包含在区块链150中。另一个功能是向相应方汇报其目前拥有的数字资产数额。在基于输出的系统中,该第二功能包括整理分散在区块链150中属于相关方的各种事务152的输出中定义的数额。
每个计算机设备102上的客户端应用程序105的实例可操作地耦合到P2P网络106的转发节点104F中的至少一个转发节点。这可以启用客户端105的钱包功能,以将事务152发送至网络106。客户端105还可联系一个、一些或所有存储节点104,以在区块链150中查询相应方103作为接收者的任何事务(或实际上在区块链150中检查其他方的事务,因为在实施例中,区块链150是在某种程度上通过其公开可见性提供事务信任的公共设施)。每个计算机设备102上的钱包功能被配置为根据事务协议制定和发送事务152。每个节点104运行软件,其被配置为根据节点协议核实事务152有效的软件,并且在转发节点104F的情况下转发事务152,以在整个网络106中传播此类事务。事务协议和节点协议相互对应,给定事务协议和给定节点协议一起实现给定的事务模型。区块链150中的所有事务152均采用相同的事务协议(尽管事务协议可允许其内存在不同的事务子类型)。网络106中的所有节点104采用相同的节点协议(尽管其可根据针对该子类型定义的规则区分处理不同的事务子类型,并且不同的节点还可扮演不同的角色,从而实现协议的不同对应方面)。
如上所述,区块链150包括一系列区块151,其中每个区块151包括通过如前所述的工作量证明过程创建的一个或更多个事务152的集合。每个区块151还包括区块指针155,其指向区块链中先前创建的区块151,以定义区块151的顺序。区块链150还包括有效事务池154,其等待通过工作量证明过程包含在新的区块中。每个事务152(除了一生成事务)包括指向先前事务的指针,以定义事务序列的顺序(注:事务152的序列可进行分支)。区块151的区块链一直追溯到创始区块(Gb)153,该创始区块是区块链中的第一区块。区块链150中早期的一个或更多个原始事务152指向创始区块153,而非先前事务。
当给定方103(比方说爱丽丝)希望发送拟包含在区块链150中的新事务152j时,她将根据相关事务协议(使用其客户端应用程序105中的钱包功能)制定新事务。然后,她将事务152从客户端应用程序105发送至其连接的一个或更多个转发节点104F中的一个。例如,这可以是与爱丽丝的计算机102最近或最佳连接的转发节点104F。当任何给定节点104接收新事务152j时,其将根据节点协议及其相应的角色进行处理。这包括首先检查新接收的事务152j是否满足变为“有效”的特定条件,具体示例稍后将详细讨论。在一些事务协议中,有效条件可通过事务152中包含的脚本在每个事务的基础上进行配置。或者,条件可仅仅是节点协议的内置功能,或通过组合脚本和节点协议进行定义。
如果新接收的事务152j通过有效性检验(即:“有效”的条件下),接收事务152j的任何存储节点104S将向在该节点104S处维护的区块链150的副本中的池154中添加新有效事务152。进一步地,接收事务152j的任何转发节点104F随后将有效事务152传播至P2P网络106中的一个或更多个其他节点104。由于每个转发节点104F应用相同的协议,因此假定事务152j有效,这意味着事务很快将在整个P2P网络106中传播。
一旦进入在一个或更多个存储节点104处维护的区块链150的副本中的池154中,矿工节点104M将开始竞相解决包括新事务152的池154的最新版本方面的工作量证明难题(其他矿工104M可继续尝试基于池154的旧视角解决难题,但首先解决难题的矿工将定义下一个新区块151的结束位置和新池154的开始位置,最终将有人解决包括爱丽丝的事务152j的池154的一部分的难题)。一旦包括新事务152j的池154完成工作量证明,其将不可变地成为区块链150中区块151中的一个区块的一部分。每个事务152包括指向早前事务的指针,因此事务的顺序也被不可变地记录下来。
基于UTXO的模型
图2示出了示例性事务协议。这是基于UTXO的协议的示例。事务152(简称“Tx”)是区块链150的基本数据结构(每个区块151包括一个或更多个事务152)。下面将通过参考基于输出或基于“UTXO”的协议进行描述。但这并不限于所有可能的实施例。
在基于UTXO的模型中,每个事务(“Tx”)152包括数据结构,其包括一个或更多个输入202和一个或更多个输出203。每个输出203可包括未花费的事务输出(UTXO),其可用作另一新事务的输入202的来源(如果UTXO尚未赎回)。UTXO包括指定数字资产数额的值。这表示(分布式)分类账中的一组代币。UTXO还可包含其来源事务的事务ID以及其他信息。事务数据结构还可包括标头201,其可包括输入字段202和输出字段203的大小指示符。标头201还可包括事务的ID。在实施例中,事务ID是事务数据(不含事务ID本身)的哈希值,且存储在提交至矿工104M的原始事务152的标头201中。
需要注意的是,虽然图2中的每个输出都示为UTXO,但事务可以附加地或替代地包括一个或更多个不可花费的事务输出。
比方说爱丽丝103a希望创建转移相关数字资产数额至鲍勃103b的事务152j。在图2中,爱丽丝的新事务152j标记为“Tx1”。该新事务获取在序列中先前事务152i的输出203中锁定至爱丽丝的数字资产数额,并至少将此类数额中的一部分转移至鲍勃。在图2中,先前事务152i标记为“Tx0”。Tx0和Tx1只是任意的标记,其不一定意味着Tx0指区块链151中的第一事务且Tx1指池154中的下一个事务。Tx1可指向仍具有锁定至爱丽丝的未花费输出203的任何先前(即先行)事务。
当爱丽丝创建其新事务Tx1时,或至少在她将该新事务发送至网络106时,先前事务Tx0可能已经有效并包括在区块链150中。该事务此时可能已包括在区块151中的一个区块中,或者可能仍在池154中等待,在这种情况下,该事务将很快包括在新区块151中。或者,Tx0和Tx1可以创建并一起发送至网络102;或者,如果节点协议允许缓冲“孤立”事务,Tx0甚至可以在Tx1之后发送。本文事务序列上下文中使用的“先前”和“后续”一词是指由事务中指定的事务指针定义的序列中的事务顺序(哪个事务指向哪个其他事务等等)。它们同样可以替换为“前任”和“继任”、“先行”和“后代”或“父项”和“子项”等。这不一定指其创建、发送至网络106或到达任何给定节点104的顺序。然而,指向先前事务(先行事务或“父事务”)的后续事务(后代事务或“子事务”)不会有效除非父事务有效。在父事务之前到达节点104的子事务被视为孤立事务。根据节点协议和/或矿工行为,其可被丢弃或缓冲一段时间,以等待父事务。
先前事务Tx0的一个或更多个输出203中的一个包括特定的UTXO,标记为UTXO0。每个UTXO包括指定UTXO表示的数字资产数额的值以及锁定脚本,该锁定脚本定义后续事务的输入202中的解锁脚本必须满足的条件,以使后续事务有效,从而成功赎回UTXO。通常情况下,锁定脚本将数额锁定至特定方(该数额的事务的受益者)。即,锁定脚本定义解锁条件,该解锁条件通常包括以下条件:后续事务的输入中的解锁脚本包括先前事务被锁定到的一方的加密签名。
锁定脚本(亦称scriptPubKey)是节点协议识别的域特定语言中写入的一段代码。此类语言的特定示例称为“脚本(Script)”(S大写)。锁定脚本指定花费事务输出203所需的信息,例如爱丽丝签名的要求。解锁脚本出现在事务的输出中。解锁脚本(亦称scriptSig)是提供满足锁定脚本标准所需信息的域特定语言中写入的一段代码。例如,其可包含鲍勃的签名。解锁脚本出现在事务的输入202中。
因此在示出的示例中,Tx0的输出203中的UTXO0包括锁定脚本[Checksig PA],该锁定脚本需要爱丽丝的签名Sig PA,以赎回UTXO0(严格来说,是为了使试图赎回UTXO0的后续事务有效)。[Checksig PA]包含爱丽丝的公私密钥对中的公钥PA。Tx1的输入202包括指向Tx1的指针(例如,通过其事务ID(TxID0),其在实施例中是整个事务Tx0的哈希值)。Tx1的输入202包括在Tx0中标识UTXO0的索引,以在Tx0的任何其他可能输出中对其进行标识。Tx1的输入202进一步包括解锁脚本<Sig PA>,该解锁脚本包括爱丽丝的加密签名,该签名由爱丽丝通过将其密钥对中的私钥应用于预定的部分数据(有时在密码学中称为“消息”)创建。爱丽丝需要签名以提供有效签名的数据(或“消息”)可通过锁定脚本、节点协议或其组合进行定义。
当新事务Tx1到达节点104时,该节点应用节点协议。这包括一起运行锁定脚本和解锁脚本,以检查解锁脚本是否满足锁定脚本中定义的条件(其中该条件可包括一个或更多个标准)。在实施例中,这涉及并置两个脚本:
<Sig PA><PA>||[Checksig PA]
其中“||”表示并置,“<…>”表示将数据放在堆栈上,“[…]”表示由解锁脚本组成的函数(在该示例中指基于堆栈的语言)。同样,脚本可以使用公共堆栈一个接一个地运行,而不是并置脚本。无论采用哪种方式,当一起运行时,脚本使用爱丽丝的公钥PA(包括在Tx0的输出的锁定脚本中),以认证Tx1的输入中的锁定脚本是否包含爱丽丝签名预期部分的数据时的签名。预期的部分数据本身(“消息”)也需要包括在Tx0中,以便执行此认证。在实施例中,签名的数据包括整个Tx0(因此不需要包括一个单独的元素来明文指定签名的部分数据,因为其本身便已存在)。
本领域技术人员将熟悉通过公私密码进行认证的细节。基本上而言,如果爱丽丝已通过使用其私钥加密签署消息,则给定爱丽丝的公钥和明文中的消息(未加密消息),诸如节点104等其他实体可认证加密版本的消息必须已经由爱丽丝签名。签署通常包括对消息进行散列,签署哈希值和将此标记到消息的明文版本作为签名,从而使公钥的任何持有者能够认证签名。
如果Tx1中的解锁脚本满足Tx0的锁定脚本中指定的一个或更多个条件(因此,在所示示例中,如果在Tx1中提供了爱丽丝的签名并进行认证),则节点104认为Tx1有效。如果是挖矿节点104M,这意味着其将添加至等待工作量证明的事务154池。如果是转发节点104F,则其将事务Tx1转发到网络106中的一个或更多个其他节点104,从而将在整个网络中传播。一旦Tx1有效并包括在区块链150中,这将把Tx0中的UTXO0定义为已花费。请注意,Tx1仅在花费未花费的事务输出203时才有效。如果试图花费另一事务152已经花费的输出,则即使满足所有其他条件,Tx1也将无效。因此,节点104还需要检查先前事务Tx0中引用的UTXO是否已经花费(已经形成另一有效事务的有效输入)。这是为何区块链150对事务152施加定义的顺序很重要的原因之一。在实践中,给定节点104可维护单独的数据库,标记已花费事务152的UTXO 203,但最终定义UTXO是否已花费取决于是否在区块链150中形成了另一有效事务的有效输入。
请注意,在基于UTXO的事务模型中,给定UTXO需要作为一个整体使用。不能“留下”UTXO中定义为已花费的一部分数额,而同时又花费另一部分。但UTXO的数额可以在下一个事务的多个输出之间分割。例如,Tx0的UTXO0中定义的数额可以在Tx1中的多个UTXO之间分割。因此,如果爱丽丝不想将UTXO0中定义的所有数额都给鲍勃,她可以使用剩余部分在Tx1的第二输出中自己找零,或者支付给另一方。
在实践中,爱丽丝通常还将需要包括获胜矿工的费用,因为现在仅靠生成事务的奖励币通常不足以激励挖掘。如果爱丽丝未包括矿工的费用,Tx0可能会被矿工节点104M拒绝,因此,尽管技术上有效,但仍然不会传播并包括在区块链150中(如果矿工104M不愿意,矿工协议不会强制他们接受事务152)。在一些协议中,挖掘费不需要其自身的单独输出203(即不需要单独的UTXO)。相反,给定事务152中输入202所指向的总数额与输出203所指定的总数额之间的任何差额都将自动提供给获胜矿工104。例如,假设指向UTXO0的指针是Tx1的唯一输入,而Tx1只有一个输出UTXO1。如果UTXO0中指定的数字资产的数额大于UTXO1中指定的数额,则该差额将自动提供给获胜矿工104M。替代地或附加地,这不一定排除可以在其自身事务152的其中一个UTXO 203中明确指定矿工费用。
另请注意,如果给定事务152的所有输出203中指定的总数额大于其所有输入202所指向的总数额,则这是大多数事务模型中的另一失效依据。因此,此类事务将不会传播或挖掘到区块151中。
爱丽丝和鲍勃的数字资产由区块链150中任何位置的任何事务152中的锁定至他们的未花费UTXO组成。因此,通常情况下,给定方103的资产分散在整个区块链150的各种事务152的UTXO中。区块链150中的任何位置均未存储定义给定方103的总余额的一个数字。客户端应用程序105的钱包功能的作用是将锁定至相应方且在其他随后事务中尚未花费的各种UTXO值整理在一起。通过查询在任何存储节点104S(例如,与相应方的计算机设备102最近或最佳连接的存储节点104S)处存储的区块链150副本,可以实现这一点。
请注意,脚本代码通常用示意图表示(即非精确语言)。例如,可写入[ChecksigPA]表示[Checksig PA]=OP_DUP OP_HASH160<H(Pa)>OP_EQUALVERIFY OP_CHECKSIG。“OP_...”是指脚本语言的特定操作码。OP_CHECKSIG(又称“Checksig”)是脚本操作码,其取两个输入(签名和公钥),并使用椭圆曲线数字签名算法(ECDSA)验证签名的有效性。在运行时,移除脚本中任何出现的签名(‘sig’),但在由‘sig’输入验证的事务中仍保留附加要求,诸如哈希难题。再如,OP_RETURN是脚本语言操作码,用于创建事务的不可花费输出,其可以将元数据储存在事务中,从而将元数据不可变地记录在区块链150中。例如,元数据可包括需存储在区块链中的文件。
签名PA是数字签名。在实施例中,这基于使用椭圆曲线secp256k1的ECDSA。数字签名对特定的数据段进行签名。在实施例中,对于给定事务,签名将对部分事务输入以及全部或部分事务输出进行签名。对输出的特定部分进行签名取决于SIGHASH标志。SIGHASH标志是包含在签名末尾的4字节代码,用于选择签名的输出(并因此在签名时固定)。
锁定脚本有时称为“scriptPubKey”,指其包括相应事务被锁定到的当事方的公钥。解锁脚本有时称为“scriptSig”,指其提供相应的签名。但是更通俗地说,在区块链150的所有应用中,UTXO赎回的条件并不一定包括对签名进行认证。更通俗地说,脚本语言可用于定义任何一个或更多个条件。因此,可以优选更为通用的术语“锁定脚本”和“解锁脚本”。
可选的侧信道
图3示出了用于实现区块链150的另一系统100。除了附加的通信功能外,该系统100与图1所示的内容基本相同。爱丽丝和鲍勃的每台计算机设备102a、120b上的客户端应用程序分别包括附加通信功能。也就是说,这可使爱丽丝103a建立与鲍勃103b分离的侧信道301(在任何一方或第三方的鼓动下)。侧信道301能够独立于P2P网络实现数据交换。此等通信有时候被称为“链下”通信。比如,当交换爱丽丝与鲍勃之间的事务152时不想将该事务(仍未)发布到P2P网络106或挖掘到区块150,可以采用此等通信,直到其中一方选择将该事务广播到网络106。替代地或附加地,该侧信道301可以用于交换任何其他的事务相关数据,例如密钥、协商的数额或条款、数据内容、等等。
通过与P2P覆盖网络106相同的分组交换网络101可建立侧信道301。此外/或者,通过诸如移动蜂窝网络等不同网络、或者诸如本地无线网络等局域网、或者甚至爱丽丝和鲍勃的设备1021、102b之间的直接有线或无线连接可以建立侧信道301。一般而言,本文所指的侧信道301可包括经由一种或更多种联网技术或者通信介质的任何一个或更多个链路,用于“链下”(即独立于P2P覆盖网络106)交换数据。在多个链路被使用的情况下,整个链下链路的捆绑或集合才可以被称为侧信道301。因此,需要注意的是,虽然爱丽丝和鲍勃通过侧信道301对特定的信息或数据片段或者诸如此类进行交换,但这并不一定意味着所有这些数据片段必须通过相同的链路或甚至同一类型网络进行发送。
客户端软件
图4A示出了用于实现本公开方案的实施例的客户端应用程序105的示例性实施方式。客户端应用程序105包括事务引擎401和用户界面(UI)层402。根据上文讨论的方案以及稍后将进一步详细讨论的内容,事务引擎401被配置为实现客户端105的基础事务相关功能,诸如制定事务152,通过侧信道301接收和/或发送事务和/或其他数据,和/或发送事务以通过P2P网络106传播。
该UI层402被配置为通过相应用户的计算机设备102的用户输入/输出(I/O)方式呈现用户界面,包括通过设备102的用户输出方式向相应用户103输出信息,和通过设备102的用户输入方式接收来自相应用户103的输入。例如,用户输出方式可包括提供视觉输出的一个或显示多个屏(触摸或非触摸屏)、提供音频输出的一个或更多个扬声器、和/或提供触觉输出的一个或更多个触觉输出设备等。用户输入方式可包括例如一个或更多个触摸屏的输入阵列(可与用于输出方式的那个/那些相同或不同);一个或更多个基于光标的设备,诸如鼠标、轨迹板或轨迹球;一个或更多个麦克风和语音或声音识别算法,用于接收语音或声音输入;一个或更多个基于手势的输入设备,用于接收手动或身体手势形式的输入;或者一个或更多个机械按钮、开关或控制杆等。
注:虽然本文中的各种功能可以被描述为集成到同一客户端应用程序105中,但这并不一定构成限制,相反,它们可以在两个或更多个不同应用程序组成的一套程序中实现,例如一个应用程序作为另一个应用程序的插件或经由API(应用程序编程接口)进行接口。比如,事务引擎401的功能可以在单独的应用程序中实现,而不是在UI层402中实现,或者诸如事务引擎401的给定模块的功能可以在多个应用程序之间分割。同时,也不排除部分或全部描述的功能可以在比如操作系统层实现。在本文任何位置引用单个或给定应用程序105或诸如此类的情况下,应当理解的是这只是作为示例,并且更通俗地说,所描述的功能可以在任何形式的软件中实现。
图4B给出了用户界面(UI)400的示例的模型,该UI可由客户端应用程序105a的UI层402在爱丽丝的设备102a上呈现。应当理解的是,类似的UI可以由客户端105b在鲍勃的设备102b或任何其他方的设备上呈现。
通过图示的方式,图4B从爱丽丝的角度示出了UI 400。UI 400可包括一个或更多个UI元素411、412、413,该一个或更多个UI元素通过用户输出方式呈现为不同的UI元素。
例如,UI元素可包括一个或更多个用户可选择的元素411,这些元素可以是屏幕上的不同按钮、菜单中的不同选项或者诸如此类。用户输入方式被设置成使用户103(在这种情况下为爱丽丝103a)能够选择或以其它方式操作其中一个选项,诸如通过点击或触摸屏幕上的UI元素,或者说出所需选项的名称(注:本文使用的“手动”一词仅用于与自动进行对比,而不一定限于用手执行操作)。这些选项使得用户(爱丽丝)能够生成事务并将其发送给另一用户(鲍勃),且根据所述实施例生成事务的签名。
替代地或附加地,UI元素可以包括一个或更多个数据输入字段412,通过数据输入字段412,用户可以输入要包含在所生成事务中的数据和/或要签名的消息。这些数据输入字段通过用户输出方式呈现,例如屏幕上,并且数据可通过用户输入方式输入到字段中,例如键盘或触摸屏。或者,数据可以例如基于语音识别口头地接收。
替代地或附加地,UI元素可包括向用户输出信息的一个或更多个信息元素413。例如,这/这些可以在屏幕上呈现或可听见。
应当理解的是,呈现各种UI元素、选择选项和输入数据的特定方式并不重要。这些UI元素的功能稍后将进行更详细地讨论。还应当理解的是,图4B中示出的UI 400只是一个图示模型,在实践中,它可包括一个或更多个进一步的UI元素,为了简洁起见,未对其进行说明。
双重花费证明
现在将参考图3所示的示例性系统描述本发明的实施例。第一方(爱丽丝)103a被配置为经由链下通信信道(例如,侧信道301)与第二方(103b)进行通信。应当理解的是,归因于爱丽丝103a和鲍勃103b的一些或全部动作由爱丽丝103a和鲍勃103b的相应计算机设备执行。
爱丽丝103a生成第一区块链事务Tx1。第一事务Tx1包含引用先前事务的输出的输入。如参考图2描述的,先前事务Tx0是指已传输到区块链网络106的一个或更多个节点104的事务。应当注意的是,先前事务不一定包含在区块链150的区块中。先前事务已传输到一个或更多个节点104即满足条件。当事务提交到网络106的节点104时,这些节点首先将该事务添加到其相应的事务内存池(也称为“mempool”)中。挖矿节点104M试图从包含在mempool中的事务形成区块151。
爱丽丝103a还生成消息的签名。该消息至少部分地基于第一事务Tx1。例如,待签名消息可以包括部分或全部第一事务Tx1。附加地或替代地,该消息可以包括第一事务Tx1的事务标识符TxID1。该消息还至少部分地基于一个或更多个时间指示器。每个时间指示器指示(或表示或对应于)第一事务Tx1生成和/或传输给第二方103b的时间。例如,时间指示器可以是时间戳,例如爱丽丝103a生成第一事务Tx1的时间(例如,UNIX时间)。又如,时间指示器可以是区块链150的当前区块高度。区块高度是区块链150上特定区块151之前的区块数量。例如,创始区块153的高度为零,因为在其之前的区块数量为零。此类时间指示器的平均粒度为10分钟,因为目前大约每隔10分钟向区块链150添加一次新区块。通常,时间指示器可以是至少大致指示事务生成或传输时间的任何指示器。时间指示器的其他示例包括:区块链相关时间指示器,例如提交到区块链的事务的当前总数、区块链150上未花费事务输出(UTXO)的当前总数、当前区块链大小、当前散列速率、唯一地址的总数等;和/或区块链相关时间指示器,例如当前日期和/或时间、当前GBP-USD汇率、公司股票价格、股市指数快照等。上述时间指示器中的一个、一些或全部时间指示器可以用于生成签名。
该消息可以包括与一个或更多个时间指示器级联的第一事务Tx1。附加地或替代地,该消息可以包括与一个或更多个时间指示器中的一个时间指示器级联的第一事务Tx1的标识符TxID1
爱丽丝103a将第一事务Tx1、签名以及签名所基于的一个或更多个指示器传输给鲍勃103b。爱丽丝103a经由侧信道301(即,链下信道)将第一事务Tx1发送给鲍勃103b。爱丽丝103a还可以经由同一侧信道301发送签名和一个或更多个指示器。爱丽丝103a可以改用其他侧信道。在一些示例中,爱丽丝103a可以将签名和/或一个或更多个指示器包含在其他区块链事务中,并将该事务提交到区块链网络106。在与鲍勃103b发生争议的情况下,该其他区块链事务充当签名和一个或更多个指示器的不可变记录。
在接收到来自爱丽丝103a的第一事务时,鲍勃103b检查爱丽丝103a是否还发送了签名和时间指示器。一个或更多个特定时间指示器可以由鲍勃103a或根据爱丽丝103a和鲍勃103b(意在)遵守的协议规定。
通常,爱丽丝103a可以使用任意签名方案生成签名。优选地,爱丽丝103a使用与和爱丽丝103a相关联(或可以链接到爱丽丝103a)的公钥对应的私钥对消息进行签名。爱丽丝103a可以根据椭圆曲线数字签名算法(ECDSA)使用自己的私钥对消息进行签名。公钥可以是经认证的公钥。在接收第一事务之前,公钥可以为鲍勃103b已知或可由其访问。
在一些示例中,第一事务可以是部分事务,即部分完成区块链事务。也就是说,部分事务可能缺少区块链网络106的节点104接受事务所必需的一个或更多个输入和/或输出。例如,部分事务可能不包括任何输出。又如,部分事务可以包括一个或更多个输出,该输出一起锁定的数字资产量大于部分事务的一个或更多个输入解锁的数字资产量。
在其他示例中,部分事务可以是技术上有效的事务,并且可以接受到区块链上,但也可以由鲍勃103b添加到区块链中。也就是说,部分事务可以被配置为允许鲍勃103a将一个或更多个输入或一个或更多个输出添加到事务中。爱丽丝103a可以使用不同的签名标志对事务的不同组件进行签名,从而允许鲍勃103b根据所使用的一个或更多个标志添加输入和/或输出。例如,签名标志“SIGHASH_ANYONECANPAY”是仅对当前输入进行签名的签名散列类型,从而允许鲍勃103b添加其他输入和输出。
鲍勃103b可以接受第一事务Tx1并对其执行动作,即响应于接收到第一事务而执行一个或更多个动作。例如,鲍勃103b可以向爱丽丝103a发送某物(商品、服务、(数字)资产等),或提供对某物(例如,传输网络、办公室或其他类型的建筑物)的访问权限,以获取第一事务Tx1。附加地或替代地,响应于接收到第一事务Tx1,鲍勃103b可以将一个或更多个输入和/或输出添加到第一事务Tx1中。又如,鲍勃103b可以被配置为响应于接收到第一事务Tx1而发起过程,例如,发起对可由鲍勃103b控制的设备的控制。也就是说,鲍勃103b可以被配置为控制连接到鲍勃103b(例如,通过有线或无线连接)的一个或更多个设备。下面将描述响应于接收到事务而对设备进行控制。响应于接收到第一事务Tx1,鲍勃可以自动执行上述任何动作。
鲍勃103b只能在一个或更多个条件下对第一事务执行动作。也就是说,只有满足至少一个条件时,鲍勃103b才可以选择是否接受第一事务。为确保鲍勃103b接受第一事务而必须满足的第一条件是,爱丽丝103a必须已将签名(即,基于第一事务和一个或更多个时间指示器的签名)和一个或更多个时间指示器发送给鲍勃103b。如果爱丽丝103a将签名和一个或更多个指示器与第一事务一起(例如,同时)发送,则可能满足该条件。或者,如果一个或更多个时间指示器指示第一事务的生成时间,则爱丽丝103a先前已将签名和一个或更多个时间指示器发送给鲍勃103b。如果爱丽丝103a没有发送签名和一个或更多个时间指示器,则鲍勃103b可以拒绝第一事务。
为确保鲍勃103b接受第一事务而可能必须满足的条件的另一示例是,一个或更多个时间指示器中的一个、一些或全部时间指示器指示在鲍勃103b实际接收第一事务的阈值时间段内第一事务已生成和/或传输给鲍勃103b。也就是说,鲍勃103b可以自己确定一个或更多个时间指示器(每个时间指示器对应于爱丽丝103a发送的其中一个时间指示器),然后检查接收的时间指示器与确定的时间指示器之间不存在任何较大差异。例如,爱丽丝103a可以发送生成第一事务的UNIX时间。鲍勃103b可以确定接收第一事务的UNIX时间。如果两个时间的差值超过预定(即,指定)阈值,则鲍勃103b可以拒绝第一事务。
为确保鲍勃103b接受第一事务而可能必须满足的条件的另一示例是,签名必须已使用与和爱丽丝103a相关联的公钥对应的私钥生成。本领域已知各种用于验证使用与特定公钥对应的私钥生成签名的技术。鲍勃103b可以使用预期公钥来验证签名确实已使用对应的私钥进行签名。鲍勃103b可能已经拥有爱丽丝的公钥,或者他可以从公共记录中访问该公钥。例如,爱丽丝的公钥可以由认证中心认证,并且(例如)记录在区块链事务152的(OP_RETURN)输出中。如果签名未使用与预期公钥对应的私钥生成,则鲍勃103b可以拒绝第一事务。
如上所述,第一事务可以是部分事务。如果接受第一事务的一个、一些或全部条件均已满足,则鲍勃103b可以将一个或更多个输入和/或输出添加到第一事务中以完成该事务。然后,鲍勃103b可以将已完成事务提交到区块链网络106。附加地或替代地,鲍勃可以将已完成事务发送回爱丽丝103a。然后,爱丽丝103a可以将已完成事务提交到区块链网络106。
图5示出了用于实现本发明实施例的另一示例性系统500。示例性系统500包括由一个或更多个终端设备(即,计算设备)502和一个或更多个桥接节点503(即,运行区块链客户端应用程序105并因此充当区块链网络106与第一网络501之间网桥的计算设备)组成的第一网络501。为了清楚起见,第一网络501称为物联网,即通过互联网互连的计算设备的网络。然而,应当理解的是,第一网络不需要是物联网,通常可以是任何P2P网络。通常,终端设备502和桥接节点503嵌入在日常设备中。终端设备502可以采用多种形式中的一种,例如用户设备(例如,智能电视、智能音箱、玩具、可穿戴设备等)、智能家电(例如,冰箱、洗衣机、烤箱等)、仪表或传感器(例如,智能恒温器、智能照明、安全传感器等)。同样,桥接节点503也可以采用多种形式,可以包括但不限于与终端设备可以采用的相同形式。节点503也可以采用专用服务器设备、基站、接入点、路由器等形式。在一些示例中,每个设备可以具有固定网络(例如,IP)地址。例如,一个、一些或所有终端设备可以是固定设备(例如,智能灯或智能中央加热控制器等),而不是移动设备。在该示例性系统500中,爱丽丝103a和鲍勃103b各自采用桥接节点503的形式。
物联网是分组交换网络101,通常是互联网等广域互联网。分组交换网络101中的节点503和设备502被布置成在分组交换网络101中形成点对点(P2P)覆盖网络501。每个节点503包括相应的计算机设备,每个计算机设备包括相应的处理装置,所述处理装置包括一个或更多个处理器,例如一个或更多个中央处理单元(CPU)、加速器处理器、专用处理器和/或现场可编程门阵列(FPGA)。每个节点503还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。该存储器可以包括一个或更多个存储器单元,其采用一个或更多个存储器介质,例如硬盘等磁介质;固态硬盘(SSD)、闪存或EEPROM等电子介质;和/或光盘驱动器等光学介质。
物联网中的每个节点503也是区块链节点104。这些节点503被布置成桥接节点(网关节点),充当第一网络501与区块链网络106之间的网桥(网关)。区块链节点104可以是“侦听节点”。侦听节点运行客户端应用程序105,所述应用程序保留区块链的完整副本,核实并传播新的事务和区块,但不主动挖掘或生成新的区块。替代地,节点可以是“简单支付验证节点”(SPV节点)。SPV节点运行轻量级客户端,所述轻量级客户端可以生成和广播比特币事务并间接监控地址,但不会保留区块链的完整副本。
物联网中的每个节点503用于直接或间接控制终端设备502。直接连接至终端设备502的节点503可以直接控制该设备。未直接连接至终端设备502的节点503只能间接控制该设备,例如,通过一个或更多个中间节点将控制消息转发给终端节点。每个节点503连接至一个或更多个挖矿节点104M。
图5还示出了挖矿节点104M的网络504,该网络是区块链网络106的子集。上文参考图1至图3对挖矿节点进行了讨论。挖矿节点104M用于挖掘传输至区块链150的有效事务(例如,从物联网节点传输的事务)。
如图5所示,节点503构成P2P网络501和区块链P2P网络106的一部分,而挖矿节点104M仅构成区块链P2P网络106的一部分。虽然图5中示出终端设备502仅构成P2P物联网501的一部分,但不排除终端设备502也可以是区块链节点104。
图6示出了物联网501的示例性拓扑结构。物联网501可以控制主节点503a、一个或更多个中间节点(503b、503c)中的一组或更多组(601)以及一组终端设备502。主节点502a用于控制一个或更多个中间节点(503b、503c)。如果物联网501包括多组(例如,多层)(601a、601b)中间节点,则主节点503a用于直接控制第一组(层)(601a)中间节点(“服务器节点”503b),并间接控制一组或更多组(层)(601b)其他中间节点(例如,一层“从节点”503c)。主节点503a是能够覆盖和控制服务器节点和从节点的控制节点。每个服务器节点503b是能够控制从节点503c的节点。每个从节点503c是受控于服务器节点503b和主节点503a的节点。例如,为了指示终端设备502a,主节点503a通过服务端节点503b向从节点503c发出命令。
虽然图6所示的示例性物联网仅示出了两层中间节点(服务器节点和从节点),但其他示例可以包括一组或更多组其他中间节点,例如主节点503a与服务器节点503b之间的中间节点和/或服务器节点503b与从节点503c之间的中间节点。如图所示,每个节点通过相应的连接602连接至一个或更多个其他节点,每个终端设备502通过相应的连接602连接至一个或更多个从节点。一个或更多个节点(例如,主节点)在下文中称为控制节点。每个控制节点是可以通过发出命令来指示其他节点执行操作的节点503。
物联网节点503可以对应于功能范围、指令/特权优先级和/或访问范围方面的层次结构。在一些实现方式中,一组分层SPV节点实现了具有三个层级的“物联网控制器”,对应于图5和图6所示的主节点503a、服务器节点503b和从节点503c。主节点503a指示一个或更多个服务器节点503b,每个服务器节点指示一个或更多个从节点503c。每个从节点503c接收来自一个或更多个服务器节点503b的指令。每个从节点503c与一个或更多个物联网终端设备502进行通信,这是物联网控制器503与物联网终端设备502之间的直接通信信道。物联网控制器503的执行状态记录在区块链事务Tx中。每个物联网节点(即,主节点、服务器节点或从节点)都有能力创建对应的事务Tx并将其广播到区块链网络106。每个从节点监控来自终端设备502的触发和/或确认信号,每个物联网节点503具有与任何其他物联网节点交互的能力,以执行物联网控制器的整体逻辑。
主节点、服务器节点和从节点可以分别单独连接到区块链网络106中的节点104,操作区块链钱包105(例如,监视区块链地址),并且可能运行全节点(尽管这不是必需的)。主节点503a用于监控直接和间接受其控制的其他物联网节点的活动,以区块链事务Tx的形式向这些节点发出命令,并对警报做出响应。服务器节点503b用于监视多个地址,包括不受服务器节点503b直接控制的地址。主节点503a可以命令服务器节点503b执行操作。从节点503c用于监控直接受其控制的终端设备502的活动。从节点503c受服务器节点503b的直接命令,也可以按主节点503a的命令执行操作。从节点503c充当终端设备502的网关节点(即,终端设备与区块链网络106之间的网关)。终端设备502用于连接至附近的从设备。所述从设备采用链下消息传递协议报告终端设备状态。
需要注意的是,虽然在物联网节点503与终端设备502之间进行了区分(即,终端设备502由物联网节点503控制,但其本身不控制物联网节点503),但终端设备502也可以是区块链网络106中的节点104。也就是说,在一些示例中,终端设备502可以操作区块链协议客户端或钱包应用程序105。
物联网501通过将命令和控制层次结构与区块链网络基础设施的使用相结合,在集中化与分散化之间取得了平衡。网络501的用户可以创建自己的多级控制层次结构,所述层次结构包括客户端-服务器以及设备之间的点对点关系。网络架构包括三层:物联网501;区块链P2P网络104(即,完整区块链客户端和轻量级区块链客户端,例如,所述主节点、所述服务器节点和所述从节点是操作SPV钱包105的轻量级客户端);区块链挖矿网络504(核实、传播和存储由物联网节点传播的事务的区块链P2P网络的子集)。区块链网络106充当后端基础设施,物联网501与区块链P2P网络106之间存在重叠。
第一网络(例如,物联网)包括一个或更多个桥接节点以及可由所述一个或更多个桥接节点控制的一个或更多个设备。桥接节点也是区块链网络中的节点。也就是说,桥接节点是物联网和区块链网络的一部分,从这个意义上来说,桥接节点既可以连接至物联网(例如,与其他网络节点和设备通信),也可以连接至区块链网络(例如,将事务传输到区块链,并标识和读取区块链上记录的事务)。这些节点充当第一网络与区块链网络之间的网关或网桥。此外,这些节点无需具有区块链网络中的挖矿节点、转发节点或存储节点的作用,但也不排除这种情况。在一些示例中,第一网络的设备中的一个或更多个也可以是区块链网络中的节点。
请求节点(第一桥接节点)生成区块链事务(第一事务)。该事务由请求节点签名,并且包含包括命令数据的输出。命令数据包含要控制的设备的标识符以及指定命令的命令消息。例如,设备可以是智能洗衣机,命令消息可以是启动洗涤周期的指令。该事务可以传输到区块链和/或在链下传输到第二节点(例如,响应节点或批准节点)。响应节点是直接控制具有指定标识符的终端设备的桥接节点。批准节点是有权批准终端设备控制命令的桥接节点。继续以上述洗衣机为例,第二节点可以是控制洗衣机的智能家居控制中心。例如,第一节点可以是笔记本电脑、手机等用户设备。
第一区块链事务可以是部分完成事务。在此上下文中,部分完成意味着可能需要添加额外的输入(例如,签名)来完成事务。在某些情况下,如果没有额外的输入,部分事务可能无效,这意味着部分事务在传输到区块链网络时,会被网络拒绝。
例如,响应节点从区块链本身(如果第一事务已经传输到区块链)或直接从请求节点获取第一事务。然后,响应节点使用命令数据中的设备标识符以及指定该命令的命令消息来识别要控制的设备。然后,响应节点将该命令传输到所识别的终端设备。换句话说,响应节点指示终端设备根据第一事务中的命令数据执行动作。
优选地,响应节点通过对所获取的第一事务进行签名来更新第一区块链事务,然后将更新后的事务传输到区块链网络。更新后的事务作为命令请求的记录以及对终端设备正在执行的命令的确认。
区块链事务是可以在全局网络中不受歧视地进行传播的数字签名消息的模板。节点将命令、状态更新和其他相关操作编码到事务输出(例如,不可花费输出)中,从而使用区块链作为数据载体网络。为了最大限度地减少通信延迟,在广播到区块链网络之前,点对点发送(即,在节点之间直接发送)编码命令数据的事务。
第一网络的桥接节点共同运行采用区块链事务的分散式物联网通信协议。区块链协议允许高容量、低费用的微事务吞吐量以及可扩展的网络基础设施,从而使设备能够在全域范围内可靠地连接,同时以最低成本进行通信。通过将多级控制层次结构和基于区块链的通信协议相结合,请求和物联网通信协议可实现:使用低费用微事务的大规模P2P通信;将价值转移和控制集成到一个平台中;物联网网络设备的准入门槛低;物联网通信数据的安全时间戳存储;以及可用于审计和性能监控的物联网元数据。
本公开的实施例还提供一种协议,该协议用于网络(例如,物联网)501中的节点使用区块链事务Tx发出命令请求、根据这些命令请求指示设备并发出命令确认。虽然将参照物联网501对实施例进行描述,但一般而言,本公开的教导可以应用于任何网络,该网络包括操作区块链协议客户端应用程序105的节点,以及至少可由这些节点的子集控制的终端设备。
网络501中的第一桥接节点503(例如,主节点503a或服务器节点503b)生成第一事务Tx1,该事务包括输入和输出,所述输入由所述第一节点签名,所述输出包括命令数据。所述命令数据包括要控制的终端设备502的标识符以及用于控制终端设备502的命令消息。所述第一节点可以是命令的发起者。也就是说,所述第一节点可以生成所述命令数据。
所述第一节点可以将第一事务Tx1传输至控制终端设备502的第一网络501中的第二桥接节点503(例如,从节点503c)。第一事务Tx1可以在链下传输,即,无需传输至区块链。例如,第一事务Tx1可以通过互联网等方式直接从所述第一节点发送至所述第二节点。例如,所述第一节点可以是服务器节点503b,所述第二节点可以是从节点503c。替代地,第一事务Tx1可以通过一个或更多个中间节点等间接发送。例如,第一事务Tx1可以通过服务器节点503b从主节点503a发送至从节点503c。所述第二节点可以通过有线连接或无线连接(例如,通过以太网或Wi-Fi连接)连接至终端设备502。
参考图1至图3,在这些示例中,所述第一节点可以由爱丽丝103a的计算机设备102a组成,所述第二节点可以由鲍勃103b的计算机设备102b组成。如上文所述,爱丽丝和鲍勃可以使用侧信道(例如,侧信道301)来交换事务,而无需(尚未)将该事务发布到区块链网络106上或进入链150,直到其中一方选择将其广播到网络106。
所述第二节点可以直接或间接地从所述第一节点获取第一事务Tx1,例如,第一事务Tx1可以通过一个或更多个中间节点转发给所述第二节点。所述第二节点使用所述命令数据将控制指令传输至由所述命令数据中的设备标识符(“设备ID”)标识的终端设备502。所述命令数据中的控制消息可以定义终端设备502的所需操作。所述控制消息可以用于使所述第二节点将多个可能的指令中的一个特定指令传输至终端设备502。替代地,所述第二节点可以用于向终端设备502发送单个指令,即,所述第二节点仅向所述终端设备发送相同的指令。例如,如果终端设备502是像传感器一样的简单设备,并且指令是对传感器读数的请求,则可能会出现这种情况。
命令(即,对终端设备的指令)可以通过有线连接或无线连接(例如,使用Wi-Fi)在链下传输至设备。替代地,如果该设备也是网络中的节点,则该命令可以通过区块链事务Tx传输。
在一些实施例中,设备与控制器通信的请求和响应周期可以由所述第一节点和所述第二节点实现。所述请求(命令)作为包含输出的部分完成的事务发出,所述输出包括所述命令数据(例如,OP_RETURN有效负载)。所述响应(命令确认)是对包含请求者节点和响应者节点的签名的已完成事务进行广播。事务延展性可以实现这种通信方法,因为消息接收方可以添加输入和输出,但不能更改所述命令数据(例如,OP_RETURN有效负载)。
从所述第一节点传输至所述第二节点的第一事务Tx1可以在没有第二输出的情况下传输。即,事务包括单个输出(所述输出包括所述命令数据)。为了完成部分完成的事务,该第二者可以通过向所述第一事务添加输入和输出来更新事务。所述输入包括所述第二节点的签名,即,使用所述第二节点的私钥生成的签名。所述输出是锁定至所述第二节点的公钥的输出,例如P2PKH输出。为了花费P2PKH输出,花费事务的输入必须包括公钥,使得所述公钥的哈希(例如,OP_HASH160)与所述P2PKH输出中的所述公钥哈希相匹配。P2PKH输出要求花费者提供两个项目:公钥,使得所述公钥的哈希与所述P2PKH输出中的地址相匹配;签名,对所述公钥和事务消息有效,但不一定按照该顺序。所述公钥可以对应于用于生成所述签名的所述私钥。替代地,所述签名可以链接至第一公钥,所述输出可以锁定至不同的公钥。然后,所述第二节点可以将完成的事务传输至区块链网络106。所述完成的事务(在这些实施例中称为命令事务)在区块链150中可供其他节点(例如,所述第一节点)查看,并充当设备所执行命令的记录。也就是说,广播事务后,独立观察者可以看到哪个公钥发出了命令/消息,哪个公钥对其做出了响应。
图7a和图7b示出了示例性部分第一事务Tx1(部分)和示例性更新后的第一事务Tx1(完整)。所述部分第一事务包括单个输入701a和单个输出702a。所述更新后的第一事务包括由所述第二节点添加的输入701b和输出702b。SIGHASH_SINGLE签名类型可用于实现所需级别的事务延展性。例如,具有公钥PK0的节点向具有公钥PK1的节点发送指令。该指令被编码在使用SIGHASH_SINGLE签名类型签名的事务的不可花费的输出(例如,OP_RETURN输出)中(图10a)。部分完成的事务是有效的。指令完成后,具有PK1的所述第二节点会添加锁定至其地址的输出。然后,具有PK1的所述第二节点通过使用SIGHASH_ALL签名类型对整个事务进行签名来完成事务(见图10b)。
在替代实施例中,从所述第一节点传输至所述第二节点的第一事务Tx1可以与第二输出一起传输。所述第二输出锁定至所述第二节点的公钥。例如,所述第二输出可以是锁定至所述第二节点的公钥的P2PKH。
为了完成第一事务Tx1,所述第二节点通过向所述第一事务添加输入来更新所述第一事务。第一事务Tx1现在包括两个输入和两个输出。所述第二输入包括所述第二节点的公钥。所述第二输入中的所述公钥可以与所述第二输出锁定至其上的所述公钥相同,也可以不同。完成后,所述更新后的第一事务(在这些实施例中称为命令事务)被发送至区块链网络106,以将其包含在区块链150中。广播命令事务后,独立观察者可以看到哪个公钥发出了命令/消息,哪个公钥对其做出了响应。
与所述第一事务的所述第一输入所引用的数字资产数额相比,锁定至所述第二节点的所述公钥的所述第二输出可以转移更大的数字资产数额。在这种情况下,第一事务Tx1是部分完成的事务,不会被区块链网络106的其他节点视为有效。也就是说,第一事务Tx1不会满足区块链节点所遵循的共识规则,因此不会被挖掘到区块链150的区块152中。在更新第一事务Tx1时,所述第二节点必须确保所述第一输入和所述第二输入所引用的数字资产的总数额大于锁定至所述第二输出的数字资产的数额。
图8a和图8b示出了示例性部分第一事务Tx1(部分)和示例性更新后的第一事务Tx1(完整)。所述第一事务包括锁定至所述第二节点的所述公钥的第一输出802a和第二输出802b中的命令数据。所述更新后的第一事务包括由所述第二节点添加的附加输入801b。如果具有PK0的所述第一节点向具有PK1的所述第二节点发送希望仅由具有PK1的所述第二节点执行的指令,则可以发送锁定两个输出(802a、802b)的部分完成的事务,但不支付费用(因此,该事务不会被挖掘或传播)。为了赎回锁定至PK1的数字资产,具有PK1的所述第二节点需要提供支付费用的输入801b。为了使用部分完成的事务发出命令,<SigPK0>的SIGHASH标志设置为SIGHASH_ANYONECANPAY,并包含带有所述命令数据的OP_RETURN输出。这意味着,虽然第一输出802a中包含的命令数据是固定的,但任何人都可以添加附加输入。接收到该命令的公钥可以添加附加输入801b来赎回输入801a中的资金。为了确保新输入801b的安全并防止进一步的事务延展性,资金接收者添加最小值(dust)输入,并使用SIGHASH_ALL对事务输出进行签名。
需要注意的是,SIGHASH标志是添加到事务输入的签名中的标志,用于指示所述签名对事务的哪一部分进行签名。默认为SIGHASH_ALL(对除ScriptSig以外的所有事务部分进行签名)。可以修改事务的未签名部分。
更详细地,SIGHASH标志是附加到签名结尾的单个字节,即,如果SIG是在事务中找到的签名,则SIG=[DER编码的ECDSA签名]+[1字节SIGHASH标志]。在创建散列值之前,SIGHASH 1字节也附加到事务中,即ECDSA Sig=[r s],其中
s=k-1(H(Tx||SIGHASH)+sk·r)
sk和k分别为私钥和临时密钥。
下面将参考图9、图10a和图10b提供一种示例性请求和响应算法。控制设备503b用于与网络501中的其他节点进行通信,并且可以计算出与网络上任何其他节点的最短通信路线。例如,PKserv标识出PKslave是距离具有device_ID的设备最近的控制器。
步骤1:具有公钥PKserv的控制设备503b向具有公钥PKslave的第二控制设备503c发送部分命令Tx1(见图10a)。事务中包含的物联网消息指定了命令以及具有device_ID的目标设备。
步骤2:第二控制设备(PKslave)根据网络501的规则检查事务的签名是否有效,并检查物联网消息有效负载中包含的消息是否有效。
步骤3:第二控制设备(PKslave)通过链下通信(例如,有线连接、蓝牙、IP到IP)向设备(device_ID)发送命令消息(“Msg”)。
步骤4:通过命令请求的操作完成后,设备(device_ID)将命令完成或确认消息(“ack”)发送回第二控制设备(PKslave)。
步骤5:第二控制器(PKslave)添加第二输入和签名,并完成(finalise)事务(见图10b)。这表示第二控制器确认命令完成。
步骤6:第二控制器(PKslave)将完成的事务广播到区块链(挖矿)网络504。
当所述第二节点(例如,从节点)获得命令事务时,所述第二节点向由命令数据中的设备标识符(Device_ID)标识的设备发送命令(Msg)。在一些示例中,设备502可以向所述第二节点传送确认消息(Ack),以表明其已经接收到所述命令和/或已经执行了所述命令。在这些示例中,所述第二节点只能在接收到所述设备的确认信息的情况下更新所述第一事务(然后广播更新后的事务)。这可为终端设备已经执行命令提供进一步的支持证据。
由于大多数日常小型电子设备的资源限制,可能无法轻松监控区块链150和/或甚至无法与其即时位置以外的物联网组件进行通信,因此对终端设备502的控制是在本地(第二节点到设备)和链下执行的。终端设备收发的消息可以采用原始命令数据(例如,OP_RETURN有效负载)的形式,而不需要附加事务元数据。这确保了包含消息的数据包保持较小,并且不需要计算密集型操作(例如,椭圆曲线数学)。在一些实施例中,对事务中包含的命令数据进行加密。
总之,物联网501中的节点503通过直接使用包含物联网命令数据的事务以及连接至区块链网络106进行通信,来广播事务。区块链150用作永久数据存储器,用于记录来自物联网组件的命令和状态更新,以及发出与物联网设备502相关的报告和警报。该协议可以利用以下一个或更多个特征。
如上所述,爱丽丝103a和鲍勃103b可以各自执行与图5所示的桥接节点503相关联的动作。也就是说,爱丽丝103a和鲍勃103b可以各自包括或操作相应桥接节点。爱丽丝可以是主节点503a或中间节点503b,而鲍勃可以是中间节点503b、503c。在图9所示的场景中,爱丽丝103a操作服务器节点503b,并将部分事务Tx1传输到操作从节点503c的鲍勃103b。部分事务Tx1包括用于控制终端设备502的命令。在完全可信系统中,鲍勃103b可以假设爱丽丝103a没有恶意执行动作,因此接受部分事务Tx1,基于该命令控制终端设备502,并将已完成事务Tx1提交到区块链网络106,以便在区块链150上存储该命令的记录。然而,系统可能不是完全可信系统,或者可能易受故障节点的影响。
图10a和图10b示出了已被恶意行为者1001危害的示例性系统。在图10a的示例中,将部分事务Tx1发布到从节点503c的服务器节点503b由恶意行为者1001控制。恶意行为者1001命令服务器节点503b将命令事务Tx1发布到从节点503c,同时将同一命令事务Tx1’提交到区块链网络106。也就是说,恶意行为者1001发布双重花费事务。在不知道命令事务Tx1是双重花费的情况下,从节点503指示终端设备502执行该命令。事务Tx1’将在从节点503c有机会将已完整事务Tx1发送到区块链网络106之前到达区块链网络106,如图10b所示。在图10b的示例中,终端设备502将确认消息返回到从节点503c。作为响应,从节点503c完成命令事务Tx1并将其提交到区块链网络106。然而,恶意行为者1001控制的服务器节点502b发布的命令事务Tx1’已传播到区块链网络106的其他节点104M。因此,当接收来自从节点503c的命令事务Tx1时,这些节点104M将拒绝该命令事务,因为该命令事务将是双重花费尝试。这意味着正在执行的命令的区块链上不会有任何记录。
为了降低双重花费事务的风险,鲍勃103b(例如,从节点503c)要求爱丽丝130a(例如,服务器节点503b)发送命令事务的签名和一个或更多个时间指示器。在一些示例中,鲍勃103b指示其控制下的终端设备502执行命令的条件是,爱丽丝103a已将签名和一个或更多个时间指示器与命令事务一起发送。如果爱丽丝103a没有发送签名和一个或更多个时间指示器,则鲍勃103b可以拒绝命令事务并且不将命令发布到终端设备502。又如,如果爱丽丝103a已将签名和一个或更多个时间指示器与(部分)命令事务一起发送,则鲍勃103b可以仅更新命令事务,例如完成命令事务。如果爱丽丝103a没有发送签名和一个或更多个时间指示器,鲍勃103b可以拒绝命令事务并且不更新命令事务。通过这种方式,恶意行为者1001无法使鲍勃103b控制终端设备以执行命令,而不会在区块链150上记录任何命令记录。
在一些示例中,一旦命令指令(或消息)已传输到终端设备,鲍勃103b可以仅更新部分事务并将其提交到区块链网络106。在其他示例中,一旦鲍勃103b从终端设备接收关于指令已执行的确认,他可以仅更新部分事务并将其提交到区块链网络106。
综上所述,虽然不能完全防止0-conf双重花费尝试,但本发明证明了事务发布顺序,以降低双重花费尝试的风险。具体举例来说,假设Node1希望通过将事务Tx1传播到Node2来发出命令,则将部分完成事务Tx1与另外两个数据(签名和时间戳)一起从Node1发送到Node2
Sig(TxID1||t),t,Tx1
其中,TxID1=H2(Tx1)(事务ID),H(·)是散列函数,t是UNIX时间。更具体地,H2(Tx1)=SHA256(SHA256(Tx1))。该附加签名和时间戳可以存储,然后用作Node1在大约时间t时将Tx1发送到Node2的证明。在双重花费的情况下,如果双重花费由非恶意节点执行,则该附加数据可以用于惩罚Node1或至少评估网络性能问题。应当注意的是,在物联网501的上下文中,P2P重放攻击等同于区块链网络106中的双重花费攻击。在命令事务中包含时间戳可防止真实数据回放,因为接收方节点容易检测到数据传输时间的较大差异。在一些示例中,网络中的所有设备(例如,物联网的桥接节点和终端设备)被配置为保存自TxID首次出现在该网络上时起TxID的本地时间戳列表。
结论
应当理解,上述实施例仅通过示例的方式进行描述。更通俗地说,可根据下述任何一个或更多个语句提供一种方法、装置或程序。
语句1、一种检验区块链事务是否为双重花费尝试的计算机实现的方法,所述方法由第一方执行并且包括:生成第一区块链事务,其中所述第一区块链事务包括输入,所述输入用于解锁区块链事务的输出,所述区块链事务先前传输到区块链网络的一个或更多个节点以使所述区块链事务包含在所述区块链中;基于所述第一区块链事务和一个或更多个时间指示器(time indicator)生成签名,每个时间指示器指示所述第一区块链事务生成和/或传输的时间;将所述第一区块链事务传输给第二方,将所述签名和所述一个或更多个时间指示器传输给所述第二节点,以及,其中至少所述第一区块链事务经由链下通信信道传输给所述第二方。
经由链下通信信道传输是指经由所述区块链网络以外的信道传输。例如,经由链下通信信道传输区块链事务是指传输所述事务而不将其发送到所述区块链网络中的节点,以使所述事务包含在所述区块链中。例如,所述事务可以经由TLS通信、电子邮件、消息收发应用、Wi-Fi、蓝牙、NFC等发送。
所述区块链可以包括先前区块链事务。或者,所述先前区块链事务可以是所述区块链网络的一个或更多个节点的相应内存池(mempool)中的事务。
语句2、根据语句1所述的方法,其中所述一个或更多个时间指示器包括时间戳、和/或区块链的当前区块高度。
语句3、根据语句1或语句2所述的方法,其中所述签名和/或所述至少一个时间指示器经由链下通信信道传输给所述第二方。
用于传输所述签名和/或所述至少一个时间指示器的所述链下通信信道可以是同一通信信道,也可以是不同的通信信道。
语句4、根据前述任一项语句所述的方法,其中基于所述第一区块链事务生成所述签名包括:基于所述第一区块链事务的事务标识符生成所述签名。
语句5、根据前述任一项语句所述的方法,其中所述签名是使用与和所述第一方相关联的公钥对应的私钥生成的。
语句6、根据前述任一项语句所述的方法,其中所述第一区块链事务是部分区块链事务,一个或更多个输入和/或一个或更多个输出需要添加到所述部分区块链事务中,以便所述区块链网络的一个或更多个节点接受所述部分区块链事务。
应当注意的是,部分区块链事务也可以称为部分完成区块链事务。
语句7、根据前述任一项语句所述的方法,其中所述第二方被配置为控制一个或更多个设备,所述第一区块链事务包括输出,所述输出包括命令数据,所述命令数据包括命令消息,所述命令消息用于使所述第二方控制所述一个或更多个设备中的至少一个设备。
所述命令消息可以被配置为使所述第二方将控制指令传输到所述一个或更多个设备中的至少一个设备。所述命令消息可以进行加密。
语句8、根据前述任一项语句所述的方法,其中所述第一方和所述第二方是第一网络的相应节点,所述第一网络是点对点网络。
语句9、根据前述任一项语句所述的方法,其中所述第一网络和所述区块链网络是不同的网络。
语句10、根据语句9所述的方法,其中所述第一方和所述第二方是所述第一网络和所述区块链网络的相应节点。
语句11、根据语句7和语句10所述的方法,其中所述第一网络包括所述一个或更多个设备,每个设备具有相应的设备标识符,所述命令数据包括所述一个或更多个设备中的至少一个设备的相应标识符。
语句12、根据语句11所述的方法,其中所述第一网络包括:主层,包括主节点;一个或更多个中间层,每个中间层包括多个中间节点;以及设备层,包括所述一个或更多个设备;其中所述第一方是所述多个中间节点中的相应一个中间节点或所述主节点,所述第二方是所述多个中间节点中的相应一个中间节点。
语句13、根据语句7或其任何从属语句所述的方法,其中所述一个或更多个设备是物联网设备。
语句14、一种确定是否接受来自第一方的区块链事务的计算机实现的方法,所述方法由第二方执行并且包括:经由链下通信信道接收来自所述第一方的第一区块链事务,其中,所述第一区块链事务包括输入,所述输入用于解锁区块链事务的输出,所述区块链事务先前传输到区块链网络的一个或更多个节点以使所述区块链事务包含在所述区块链中;确定所述第一方是否已将以下各项传输给所述第二方:(a)基于所述第一区块链事务和一个或更多个第一时间指示器生成的签名,每个第一时间指示器指示所述第一区块链事务的生成和/或传输的时间,和(b)所述一个或更多个时间指示器;以及,基于一个或更多个条件接受所述第一区块链事务,所述一个或更多个条件中的第一条件是所述第一方已传输所述签名和所述一个或更多个第一时间指示器。
应当注意的是,所述链下通信信道可以是传输层安全(TLS)通信信道。其他选项包括蓝牙或其他近场通信方法。
语句15、根据语句14所述的方法,包括:确定一个或更多个第二时间指示器,每个第二时间指示器指示所述第一区块链事务的接收时间,所述一个或更多个条件中的第二条件是基于所述第一时间指示器和所述第二时间指示器确定在所述第一事务的生成和/或传输的阈值时间段内已接收所述第一事务。
所述阈值时间段可以是任何合适的时间段(例如,一秒、十秒、一小时等),并且可以取决于特定使用情形。所述阈值可以由所述第二方设置,也可以根据所述第一方和所述第二方遵守的协议设置。
语句16、根据语句14或语句15所述的方法,包括:确定是否已使用与和所述第一方相关联的公钥对应的私钥生成所述签名,所述一个或更多个条件中的第三条件是已使用与和所述第一方相关联的公钥对应的私钥生成所述签名。
语句17、根据语句14至16中任一项所述的方法,其中所述第一区块链事务是部分区块链事务,部分区块链事务是需要将一个或更多个输入和/或一个或更多个添加到所述部分区块链事务中的区块链事务,以便所述区块链网络的一个或更多个节点接受所述部分区块链事务以使所述部分区块链事务包含在所述区块链中;其中所述第二方接受所述第一区块链事务包括:通过将一个或更多个输入和/或一个或更多个输出添加到所述第一区块链事务中来更新所述第一区块链事务;以及,将所述第一区块链事务传输给所述第一方和/或所述区块链网络的一个或更多个节点以使所述第一区块链事务包含在所述区块链中。
语句18、根据语句14至17中任一项所述的方法,其中所述第二方被配置为控制一个或更多个设备,所述第一区块链事务包括输出,所述输出包括命令数据,所述命令数据包括命令消息,所述命令消息用于使所述第二方控制所述一个或更多个设备中的至少一个设备;其中所述第二方接受所述第一区块链事务包括:将控制指令传输到所述一个或更多个设备中的至少一个设备。
所述控制指令可以经由链下通信信道传输到所述一个或更多个设备中的至少一个设备,所述链下通信信道可以是也可以不是所述第一区块链事务经由其从所述第一方传输到所述第二方的同一链下通信信道。
语句19、根据语句17和语句18所述的方法,其中响应于将所述控制指令传输到所述一个或更多个设备中的至少一个设备,执行所述第一区块链事务的所述更新。
语句20、根据语句19所述的方法,包括:从所述一个或更多个设备中的所述至少一个设备接收命令完成消息,并且响应于接收到所述命令完成消息,执行所述第一区块链事务的所述更新。
语句21、根据语句14至20中任一项所述的方法,其中所述第一方和所述第二方是第一网络的相应节点,所述第一网络是点对点网络。
语句22、根据语句21所述的方法,其中所述第一方和所述第二方是所述第一网络和所述区块链网络的相应节点。
所述第一网络和所述区块链网络可以是不同的网络。所述第一网络包括所述一个或更多个设备,每个设备具有相应的设备标识符,所述命令数据包括所述一个或更多个设备中的至少一个设备的相应标识符。
语句23、根据语句22所述的方法,其中所述第一网络包括:主层,包括主节点;一个或更多个中间层,每个中间层包括多个中间节点;以及设备层,包括所述一个或更多个设备;其中所述第一方是所述多个中间节点中的相应一个中间节点或所述主节点,所述第二方是所述多个中间节点中的相应一个中间节点。
语句24、一种计算机设备,所述计算机设备包括:存储器,所述存储器包括一个或更多个存储器单元;以及,处理装置,所述处理装置包括一个或更多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据语句1至23中任一项所述的方法。
语句25、一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在根据语句23所述的计算机设备上运行时,执行根据语句1至23中任一项所述的方法。
一旦给出本文的公开内容,所公开技术的其他变体或用例对于本领域技术人员可能变得显而易见。本公开的范围不受所描述的实施例限制,而仅受随附语句限制。

Claims (25)

1.一种检验区块链事务是否为双重花费尝试的计算机实现的方法,所述方法由第一方执行并且包括:
生成第一区块链事务,其中所述第一区块链事务包括输入,所述输入用于解锁区块链事务的输出,所述区块链事务先前传输到区块链网络的一个或更多个节点以使所述区块链事务包含在所述区块链中;
基于所述第一区块链事务和一个或更多个时间指示器生成签名,每个时间指示器指示所述第一区块链事务生成和/或传输给第二方的时间;以及
将所述第一区块链事务、所述签名和所述一个或更多个时间指示器传输给所述第二方,其中至少所述第一区块链事务经由链下通信信道传输给所述第二方。
2.根据权利要求1所述的方法,其中所述一个或更多个时间指示器包括时间戳、和/或区块链的当前区块高度。
3.根据权利要求1或权利要求2所述的方法,其中所述签名和/或所述至少一个时间指示器经由链下通信信道传输给所述第二方。
4.根据前述任一项权利要求所述的方法,其中基于所述第一区块链事务生成所述签名包括:基于所述第一区块链事务的事务标识符生成所述签名。
5.根据前述任一项权利要求所述的方法,其中所述签名是使用与和所述第一方相关联的公钥对应的私钥生成的。
6.根据前述任一项权利要求所述的方法,其中所述第一区块链事务是部分区块链事务,一个或更多个输入和/或一个或更多个输出需要添加到所述部分区块链事务中,以便所述区块链网络的一个或更多个节点接受所述部分区块链事务。
7.根据前述任一项权利要求所述的方法,其中所述第二方被配置为控制一个或更多个设备,所述第一区块链事务包括输出,所述输出包括命令数据,所述命令数据包括命令消息,所述命令消息用于使所述第二方控制所述一个或更多个设备中的至少一个设备。
8.根据前述任一项权利要求所述的方法,其中所述第一方和所述第二方是第一网络的相应节点,所述第一网络是点对点网络。
9.根据前述任一项权利要求所述的方法,其中所述第一网络和所述区块链网络是不同的网络。
10.根据权利要求9所述的方法,其中所述第一方和所述第二方是所述第一网络和所述区块链网络的相应节点。
11.根据权利要求7和权利要求10所述的方法,其中所述第一网络包括所述一个或更多个设备,每个设备具有相应的设备标识符,所述命令数据包括所述一个或更多个设备中的至少一个设备的相应标识符。
12.根据权利要求11所述的方法,其中所述第一网络包括:主层,包括主节点;一个或更多个中间层,每个中间层包括多个中间节点;以及设备层,包括所述一个或更多个设备;其中所述第一方是所述多个中间节点中的相应一个中间节点或所述主节点,所述第二方是所述多个中间节点中的相应一个中间节点。
13.根据权利要求7或其任何从属权利要求所述的方法,其中所述一个或更多个设备是物联网设备。
14.一种确定是否接受来自第一方的区块链事务的计算机实现的方法,所述方法由第二方执行并且包括:
经由链下通信信道接收来自所述第一方的第一区块链事务,其中,所述第一区块链事务包括输入,所述输入用于解锁区块链事务的输出,所述区块链事务先前传输到区块链网络的一个或更多个节点以使所述区块链事务包含在所述区块链中;
确定所述第一方是否已将以下各项传输给所述第二方:(a)基于所述第一区块链事务和一个或更多个第一时间指示器生成的签名,每个第一时间指示器指示所述第一区块链事务的生成和/或传输的时间,和(b)所述一个或更多个时间指示器;以及
基于一个或更多个条件接受所述第一区块链事务,所述一个或更多个条件中的第一条件是所述第一方已传输所述签名和所述一个或更多个第一时间指示器。
15.根据权利要求14所述的方法,包括:确定一个或更多个第二时间指示器,每个第二时间指示器指示所述第一区块链事务的接收时间,所述一个或更多个条件中的第二条件是基于所述第一时间指示器和所述第二时间指示器确定在所述第一事务的生成和/或传输的阈值时间段内已接收所述第一事务。
16.根据权利要求14或权利要求15所述的方法,包括:确定是否已使用与和所述第一方相关联的公钥对应的私钥生成所述签名,所述一个或更多个条件中的第三条件是已使用与和所述第一方相关联的公钥对应的私钥生成所述签名。
17.根据权利要求14至16中任一项所述的方法,其中所述第一区块链事务是部分区块链事务,部分区块链事务是需要将一个或更多个输入和/或一个或更多个添加到所述部分区块链事务中的区块链事务,以便所述区块链网络的一个或更多个节点接受所述部分区块链事务以使所述部分区块链事务包含在所述区块链中;其中所述第二方接受所述第一区块链事务包括:
通过将一个或更多个输入和/或一个或更多个输出添加到所述第一区块链事务中来更新所述第一区块链事务;以及
将所述第一区块链事务传输给所述第一方和/或所述区块链网络的一个或更多个节点以使所述第一区块链事务包含在所述区块链中。
18.根据权利要求14至17中任一项所述的方法,其中所述第二方被配置为控制一个或更多个设备,所述第一区块链事务包括输出,所述输出包括命令数据,所述命令数据包括命令消息,所述命令消息用于使所述第二方控制所述一个或更多个设备中的至少一个设备;其中所述第二方接受所述第一区块链事务包括:将控制指令传输到所述一个或更多个设备中的至少一个设备。
19.根据权利要求17和权利要求18所述的方法,其中响应于将所述控制指令传输到所述一个或更多个设备中的至少一个设备,执行所述第一区块链事务的所述更新。
20.根据权利要求19所述的方法,包括:从所述一个或更多个设备中的所述至少一个设备接收命令完成消息,并且响应于接收到所述命令完成消息,执行所述第一区块链事务的所述更新。
21.根据权利要求14至20中任一项所述的方法,其中所述第一方和所述第二方是第一网络的相应节点,所述第一网络是点对点网络。
22.根据权利要求21所述的方法,其中所述第一方和所述第二方是所述第一网络和所述区块链网络的相应节点。
23.根据权利要求22所述的方法,其中所述第一网络包括:主层,包括主节点;一个或更多个中间层,每个中间层包括多个中间节点;以及设备层,包括所述一个或更多个设备;其中所述第一方是所述多个中间节点中的相应一个中间节点或所述主节点,所述第二方是所述多个中间节点中的相应一个中间节点。
24.一种计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或更多个存储器单元;以及
处理装置,所述处理装置包括一个或更多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据权利要求1至23中任一项所述的方法。
25.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在根据权利要求23所述的计算机设备上运行时,执行根据权利要求1至23中任一项所述的方法。
CN202180020614.4A 2020-03-13 2021-02-12 区块链事务双重花费证明 Pending CN115280346A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2003658.8A GB2592980A (en) 2020-03-13 2020-03-13 Blockchain transaction double spend proof
GB2003658.8 2020-03-13
PCT/IB2021/051159 WO2021181177A1 (en) 2020-03-13 2021-02-12 Blockchain transaction double spend proof

Publications (1)

Publication Number Publication Date
CN115280346A true CN115280346A (zh) 2022-11-01

Family

ID=70453655

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180020614.4A Pending CN115280346A (zh) 2020-03-13 2021-02-12 区块链事务双重花费证明

Country Status (6)

Country Link
US (1) US20230125507A1 (zh)
EP (1) EP4088499A1 (zh)
JP (1) JP2023516466A (zh)
CN (1) CN115280346A (zh)
GB (1) GB2592980A (zh)
WO (1) WO2021181177A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111600965B (zh) * 2020-06-05 2023-10-27 支付宝(杭州)信息技术有限公司 区块链中的共识方法和系统

Also Published As

Publication number Publication date
US20230125507A1 (en) 2023-04-27
WO2021181177A1 (en) 2021-09-16
GB202003658D0 (en) 2020-04-29
JP2023516466A (ja) 2023-04-19
GB2592980A (en) 2021-09-15
EP4088499A1 (en) 2022-11-16

Similar Documents

Publication Publication Date Title
US20220393891A1 (en) Communication protocol using blockchain transactions
KR102627868B1 (ko) 블록체인에서 생성된 데이터를 인증하는 방법 및 시스템
CN115606150A (zh) 多层通信网络
CN114008969A (zh) 包含在区块链中的交易的延展性
CN115136543A (zh) 在区块链网络中使用的认证服务
US20220253821A1 (en) Streaming portions of data over a side channel
CN117480758A (zh) 用于验证区块链上的通证的计算机实现的方法和系统
CN115136560A (zh) 分层网络
US20230125507A1 (en) Blockchain transaction double spend proof
JP2023500258A (ja) ブロックチェーントランザクションを使用する要求および応答プロトコル
JP7254954B2 (ja) ブロックチェーンで生成されたデータを認証する方法およびシステム
WO2021181178A1 (en) Revoking access to a network
KR20240024113A (ko) 다중-레벨 블록체인
CN116671061A (zh) 节点版本控制
JP2023537698A (ja) ブロックチェーンネットワークとの接続
JP2023513951A (ja) 階層化ネットワークの接続の適応
CN115699676A (zh) 自定义事务脚本
GB2608840A (en) Message exchange system
Androulaki et al. A Framework for Resilient, Transparent, High-throughput, Privacy-Enabled Central Bank Digital Currencies
CN117693926A (zh) 区块链区块和存在证明
GB2614077A (en) Signature-based atomic swap
TW202301224A (zh) 電腦實施方法及系統
CN116249998A (zh) Quic事务
CN117337436A (zh) 多方区块链地址方案
CN117716365A (zh) 使用区块链形成对等连接

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination