CN115836314A - 区块链事务输出的概率成员资格测试 - Google Patents

区块链事务输出的概率成员资格测试 Download PDF

Info

Publication number
CN115836314A
CN115836314A CN202180037900.1A CN202180037900A CN115836314A CN 115836314 A CN115836314 A CN 115836314A CN 202180037900 A CN202180037900 A CN 202180037900A CN 115836314 A CN115836314 A CN 115836314A
Authority
CN
China
Prior art keywords
transaction
blockchain
filter
transactions
outputs
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
CN202180037900.1A
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 CN115836314A publication Critical patent/CN115836314A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/02Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
    • 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/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • 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/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • 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
    • 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
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • 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
    • G06Q2220/00Business processing using cryptography

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Accounting & Taxation (AREA)
  • General Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (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)。除所谓的“coinbase事务”外,每个事务都指向序列中的先前事务,该序列可以跨越一个或多个区块,直到一个或多个coinbase事务为止。coinbase事务将在下面讨论。提交给区块链网络的事务包括在新区块中。新区块的创建过程通常称为“挖掘”,该过程涉及多个节点中的每个节点争相执行“工作量证明”,即,基于等待被包括在区块链的新区块中的一组定义的有序且核实有效的未决事务的表示解决加密难题。应当注意的是,区块链可以在节点处被修剪,并且区块的发布可以通过仅发布区块头来实现。
区块链中的事务用于执行以下操作中的一个或多个:传送数字资产(即,一定数量的数字代币);对虚拟化分类账或注册表中的一组日记账分录进行排序;接收和处理时间戳条目和/或对索引指针按时间排序。也可利用区块链实现区块链上的分层附加功能。区块链协议可允许在事务中存储附加的用户数据或数据索引。能够存储在单个事务中的最大数据容量没有预先指定的限制,因此可以并入越来越复杂的数据。例如,这可用于在区块链中存储电子文档、音频或视频数据。
区块链网络的节点(通常称为“矿工”)执行分布式事务注册和验证过程,这将在下面详细描述。总之,在该过程中,节点核实事务并将这些事务插入到区块模板中,这些事务尝试为该区块模板标识有效的工作量证明解。一旦找到有效的解,新区块便会被传播到网络的其它节点,从而使得每个节点能够在区块链上记录新区块。为了将事务记录在区块链中,用户(例如,区块链客户端应用程序)将该事务发送到网络中的节点中的一个节点进行传播。接收该事务的节点可以争相寻找将核实有效的事务并入新区块的工作量证明解。每个节点被配置为执行相同的节点协议,该协议将包括用于确认事务有效的一个或多个条件。无效事务将不会传播或并入到区块中。假定事务已经核实有效,从而在区块链上被接受,则该事务(包括任何用户数据)将因此在区块链网络中的每个节点上作为不可改变的公共记录进行注册和索引。
成功解决工作量证明难题可创建最新区块的节点通常被奖励一个称为“coinbase事务”的新事务,该事务分发数字资产数额,即代币数量。无效事务的检测和拒绝是通过竞争节点的行动来执行的,这些竞争节点充当网络的代理并且通过激励报告和阻止不正当行为。信息的广泛发布使得用户可以连续地审计节点的性能。仅发布区块头使得参与者可以确保区块链具有持续完整性。
在“基于输出的”模型(有时称为基于UTXO的模型)中,给定事务的数据结构包括一个或多个输入和一个或多个输出。任何可花费输出包括指定数字资产数额的元素,该元素可从进行中的事务序列导出。可花费输出有时称为UTXO(“未花费事务输出”)。输出还可以包括锁定脚本,该锁定脚本指定输出的未来赎回条件。锁定脚本是限定核实和传送数字代币或资产所必需的条件的谓词。事务(除coinbase事务之外)的每个输入包括指向先前事务中的此类输出的指针(即引用),并且还可以包括解锁脚本,用于解锁指向输出的锁定脚本。因此,考虑一对事务,将其称为第一事务和第二事务(或“目标”事务)。第一事务包括指定数字资产数额的至少一个输出,并且包括定义解锁该输出的一个或多个条件的锁定脚本。第二目标事务包括至少一个输入和解锁脚本,该至少一个输入包括指向第一事务的输出的指针;该解锁脚本用于解锁第一事务的输出。
在此类模型中,当第二目标事务被发送到区块链网络以在区块链中传播和记录时,在每个节点处应用的有效性条件之一将是解锁脚本满足在第一事务的锁定脚本中定义的一个或多个条件中的所有条件。另一条件将是第一事务的输出尚未被另一早期有效事务赎回。根据这些条件中的任何一个条件发现目标事务无效的任何节点都不会传播该事务(作为有效事务,但可能注册无效事务),也不将该事务包括在要记录在区块链中的新区块中。
另一种事务模型是基于账户的模型。在这种情况下,每个事务均不通过参考过去事务序列中先前事务的UTXO来定义转移的数额,而是通过参考绝对账户余额进行定义。所有账户的当前状态由节点单独存储到区块链中,并不断更新。
发明内容
根据至少一些区块链协议,当区块链节点接收到新事务时,所述节点需要检查新事务的输入引用的未花费事务输出(UTXO)尚未被已在区块中发布或一组有序的已核实但未发布的事务(通常称为“内存池”)中的其他事务引用。这旨在防止双重花费。
一些用户(尤其是计算资源有限的用户)操作轻量级客户端应用程序(在本文中也称为“轻量级”客户端),以将区块链事务发送给区块链网络。与区块链节点不同,轻量级客户端不存储所述区块链,也不保留一组有序的已核实但未发布的事务。
想要检查事务有效性(具有较高概率)的轻量级客户端应查询一个或多个区块链节点,以验证所述事务引用的UTXO尚未被其他事务花费。然而,轻量级客户端可能需要接受事务,而无需等待这些事务在区块中发布,并且不必查询每个新接收事务的所述区块链节点。“0-conf事务”(也称为即时事务)是在接收到后立即接受的事务(例如,由商家用来交换商品或服务),而无需等待所述事务在区块中发布。接受0-conf事务的风险在于,恶意用户可能会双重花费同一事务,从而给商家造成损失。
因此,需要一方(例如,操作轻量级客户端应用程序的用户)能够识别新事务是否正在尝试对已花费或以其他方式分配的事务输出进行双重花费,而不必在该方每次接收到新事务时与一个或多个区块链节点通信。
根据本文公开的一个方面,提供一种计算机实现的方法,用于识别区块链事务输出的双重花费尝试,其中所述方法由发送实体执行并且包括:生成第一概率过滤器,其中所述第一概率过滤器对所述发送实体可用的第一多个已花费区块链事务输出中的每一个的相应标识符进行编码;以及,使所述第一概率过滤器对接收实体可用。
所述发送实体(例如,区块链节点)使用先前已花费区块链输出(例如,已由所述节点维护的一组有序的未发布事务中或所述区块链的已发布区块(例如,所述区块链的最后六个区块)中的事务花费的输出)的标识符来填充概率过滤器。概率过滤器(例如,布隆过滤器Bloom filter或布谷鸟过滤器Cuckoo filter)是用于测试元素是否为集合成员的概率数据结构。概率过滤器的一个特征是可能存在假阳(false positive),但不存在假阴(false negative)。也就是说,可以使用概率过滤器来确定元素是否肯定不在集合中,或者元素是否可能在集合中。通过使所述概率过滤器对接收实体(例如,轻量级客户端)可用,所述接收实体可以检查引用先前事务的一个或多个输出的事务是否肯定不是双重花费尝试或者是否可能是双重花费尝试。
使过滤器对所述接收实体可用可以包括直接向所述接收实体传输所述过滤器、发布所述过滤器(例如,在网站上)或向许多不同的接收实体广播所述过滤器。
所述接收实体也可以是区块链节点。第一区块链节点可以生成概率过滤器,所述概率过滤器包含由其一组有序的未发布事务中的事务花费的事务输出的标识符。然后,所述第一区块链节点可以与一个或多个其他区块链节点共享所述过滤器。这些区块链节点可以使用所述接收的过滤器来检查新接收事务的所述事务输出是否已由所述第一区块链节点维护的所述一组有序的未发布事务中的事务花费。
根据本文公开的另一方面,提供一种计算机实现的方法,用于识别区块链事务输出的双重花费尝试,其中所述方法由接收实体执行并且包括:从发送实体获取第一概率过滤器,其中所述第一概率过滤器对所述发送实体可用的第一多个已花费区块链事务输出中的每一个的相应标识符进行编码;获取一个或多个区块链事务输出的指示;以及,基于所述第一概率过滤器中是否存在所述一个或多个区块链事务输出的相应标识符,来确定所述一个或多个区块链事务输出是否为双重花费尝试。
本发明提高了使用轻量级客户端接受0-conf事务的商家或其他方的安全性。通过识别和防止可能的双重花费攻击,提高了安全性。轻量级客户端大部分时间都可以离线,并且在接受新的0-conf事务之前只需从区块链节点下载少量数据,从而改善了数据存储。此外,使用本发明识别双重花费尝试的一方可以报告欺诈和不诚实用户。
此外,该技术还可以用于增强区块链节点的安全性,并保护它们免受拒绝服务攻击。例如,操作轻量级钱包的设备(例如,自动售货机)可以使用简单支付验证(SPV)方法来接受支付。在不使用概率过滤器的情况下,所述轻量级钱包必须使用一组区块链节点检查每个传入事务。在这种情况下,恶意用户可能会提交多个双重花费事务(根据SPV规则,这些事务是有效的)。所述轻量级钱包将所有事务发送给所述区块链节点。接收到太多请求时,所述区块链节点可能会崩溃或禁止所述轻量级钱包(然后无法接受新的合法支付)。攻击者发送的双重花费将被拒绝,因此不会产生成本。然而,如果所述轻量级包使用了概率过滤器,则所述轻量级钱包可以在本地检查双重花费,然后拒绝它们而无需向所述区块链节点发送大量无效事务。因此,概率过滤器不仅提高了轻量级钱包的安全性,还为区块链节点提供了保护。
附图说明
为了帮助理解本公开的实施例并示出如何实施此类实施例,现将仅通过举例的方式参考附图进行说明,其中:
图1是一种用于实现区块链的系统的示意性框图;
图2示意性地示出了可记录在区块链中的事务的一些示例;
图3示意性地示出了由于非同步内存池而导致的双重花费尝试的示例;
图4示意性地示出了由于临时链分叉而导致的双重花费尝试的示例;
图5示出了用于实现本发明实施例的示例性系统的示意性框图;
图6示意性地示出了如何利用概率过滤器来允许快速检查多个节点以防止双重花费;
图7示意性地示出了如何将节点接收的新事务插入概率过滤器的示例;
图8示意性地示出了每次发现新区块时初始化新过滤器的示例;
图9示意性地示出了一种集中式本地服务器,其维护概率过滤器以验证在连接设备上接收的事务;以及
图10示出了客户端应用执行的用于识别双重花费尝试的动作的示例性流程。
具体实施方式
示例性系统概述
图1示出了一种用于实现区块链150的示例性系统100。系统100可以包括分组交换网络101,通常是诸如互联网的广域互联网。分组交换网络101包括多个区块链节点104,该多个区块链节点可以被设置成在分组交换网络101内形成对等(P2P)网络106。虽然未示出,但是区块链节点104可以被设置为近完全图。因此,每个区块链节点104高度连接到其它区块链节点104。
每个区块链节点104包括对等体的计算机设备,不同的节点104属于不同的对等体。每个区块链节点104包括处理装置,该处理装置包括一个或多个处理器,例如一个或多个中央处理单元(CPU)、加速器处理器、专用处理器和/或现场可编程门阵列(FPGA),以及其它设备,例如专用集成电路(ASIC)。每个节点还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。存储器可包括一个或多个存储器单元,其采用一个或多个存储器介质,例如诸如硬盘等磁介质、诸如固态硬盘(SSD)、闪存或电可擦可编程只读存储器(EEPROM)等电子媒介和/或诸如光盘驱动器等光学介质。
区块链150包括一系列数据区块151,其中在分布式或区块链网络160中的多个区块链节点104中的每个节点处维护区块链150的相应副本。如上所述,维护区块链150的副本不一定意味着完全存储区块链150。相反,只要每个区块链节点150存储每个区块151的区块头(下面讨论),区块链150就可以进行数据修剪。区块链中的每个区块151均包括一个或多个事务152,其中该上下文中的事务是指一种数据结构。数据结构的性质将取决于用作事务模型或计划的一部分的事务协议类型。给定的区块链全程使用一个特定的事务协议。在一种常见的事务协议中,每个事务152的数据结构至少包括一个输入和至少一个输出。每个输出指定将数字资产的数量表示为财产的数额,其一个示例是输出被密码锁定到的用户103(需要该用户的签名或其它解进行解锁,从而进行赎回或花费)。每个输入指向先前事务152的输出,从而链接这些事务。
每个区块151还包括区块指针155,其指向区块链中先前创建的区块151,以定义区块151的顺序。每个事务152(除coinbase事务之外)包括指向上一事务的指针,以定义事务序列的顺序(注:事务152的序列可进行分支)。区块151的区块链一直追溯到创始区块(Gb)153,该创始区块是区块链中的第一区块。区块链150中早期的一个或多个原始事务152指向创始区块153,而非先前事务。
每个区块链节点104被配置为将事务152转发到其它区块链节点104,从而使得事务152在整个网络106中传播。每个区块链节点104被配置为创建区块151,并将相同区块链150的相应副本存储在其相应的存储器中。每个区块链节点104还维护等待并入到区块151中的事务152的有序集154。有序集154通常称为“内存池”。在本文中,该术语并不意在限制于任何特定的区块链、协议或模型。该术语是指节点104已接受为有效的有序事务集,并且对于该有序事务集,强制节点104不接受试图花费相同输出的任何其它事务。
在给定的当前事务152j中,输入(或每个输入)包括指针,该指针引用事务序列中先前事务152i的输出,指定该输出将在当前事务152j中被赎回或“花费”。通常,先前事务可以是有序集154或任何区块151中的任何事务。尽管为了确保当前事务有效,将需要存在先前事务152i并核实其有效,但是在创建当前事务152j甚至向网络106发送当前事务152j时,不必存在先前事务152i。因此,在本文中,“先前”是指由指针链接的逻辑序列中的前任,而不一定是时间序列中的创建时间或发送时间,因此,不一定排除无序创建或发送事务152i、152j的情况(参见下面关于孤立事务的讨论)。先前事务152i同样可以称为先行事务或前任事务。
当前事务152j的输入还包括输入授权,例如先前事务152i的输出被锁定到的用户103a的签名。反过来,当前事务152j的输出可以加密锁定到新用户或实体103b。因此,当前事务152j可将先前事务152i的输入中定义的数额转移到当前事务152j的输出中定义的新用户或实体103b。在某些情况下,事务152可具有多个输出,以在多个用户或实体间分割输入数额(其中一个可以是原始用户或实体103a,以便进行变更)。在某些情况下,事务还可以具有多个输入,将一个或多个先前事务的多个输出中的数额汇总在一起,并重新分配到当前事务的一个或多个输出。
根据基于输出的事务协议,例如比特币,当诸如用户或机器这类的实体103希望执行新事务152j时,该实体将该新事务从其计算机终端102发送到接收者。实体或接收者将最终向网络106的一个或多个区块链节点104(现在通常是服务器或数据中心,但原则上也可以是其它用户终端)发送该事务。另外还不排除执行新事务152j的实体103可以将事务发送到一个或多个区块链节点104,并且在一些示例中,可以不将事务发送到接收者。接收事务的区块链节点104根据在每个区块链节点104处应用的区块链节点协议来检查事务是否有效。区块链节点协议通常要求区块链节点104检查新事务152j中的加密签名是否与预期签名相匹配,这取决于事务152的有序序列中的上一事务152i。在这种基于输出的事务协议中,这可以包括检查新事务152j的输入中包括的实体103的密码签名或其它授权是否与新事务分配的先前事务152i的输出中定义的条件匹配,其中该条件通常包括至少检查新事务152j的输入中的密码签名或其它授权是否解锁新事务的输入所链接到的上一事务152i的输出。条件可以至少部分地由包括在先前事务152i的输出中的脚本来定义。或者,这可仅由区块链节点协议单独确定,或可通过其组合确定。无论采用哪种方式,如果新事务152j有效,区块链节点104会将其转发到区块链网络106中的一个或多个其它区块链节点104。这些其它区块链节点104根据相同的区块链节点协议应用相同的测试,并因此将新事务152j转发到一个或多个其它节点104等等。通过这种方式,新事务在区块链节点104的整个网络中进行传播。
在基于输出的模型中,给定输出(例如,UTXO)是否分配的定义是,根据区块链节点协议,其是否通过另一个随后事务152j的输入有效赎回。事务有效的另一个条件是其试图分配或赎回的先前事务152i的输出尚未被另一个事务分配/赎回。同样,如果无效,则事务152j将不会在区块链150中传播(除非被标记为无效并且被传播用于提醒)或记录。这可防止重复花费,即事务处理者对同一个事务的输出分配超过一次。另一方面,基于账户的模型通过保持账户余额防止重复花费。因为同样存在定义的事务顺序,账户余额在任何时候均具有单一定义的状态。
除了核实事务有效之外,区块链节点104还争相成为在通常称为挖矿的过程中创建事务区块的第一个节点,而该过程由“工作量证明”支持。在区块链节点104处,新事务被添加到尚未出现在记录在区块链150上的区块151中的有效事务的有序集154。然后,区块链节点争相通过尝试解决加密难题以组装有序事务集154中事务152的新有效事务区块151。通常情况下,这包括搜索“随机数”值,从而当随机数与有序事务集154的表示并置且进行哈希处理时,哈希值的输出满足预定条件。例如,预定条件可以是哈希值的输出具有某个预定义的前导零数。注意,这仅仅是一种特定类型的工作量证明难题,并且不排除其它类型。哈希函数的特性是,相对于其输入,其具有不可预测的输出。因此,该搜索只能通过强力执行,从而在试图解决难题的每个区块链节点104处消耗大量的处理资源。
解决难题的第一区块链节点104在网络106上宣布难题解决,提供解决方案作为证明,然后网络中的其它区块链节点104则可以轻松检查该解决方案(一旦给出哈希值的解决方案,就可以直接检查该解决方案是否使哈希值的输出满足条件)。第一区块链节点104将一个区块传播到接受该区块的其它节点达成阈值共识,从而执行协议规则。然后,有序事务集154被每个区块链节点104记录为区块链150中的新区块151。区块指针155还分配给指向该区块链中先前创建的区块151n-1的新区块151n。创建工作量证明解所需的大量工作(例如采用哈希的形式)发出信号通知第一节点104的意图以遵循区块链协议。这些规则包括如果它分配与先前核实有效的事务相同的输出,则不接受事务为有效,否则称之为重复花费。一旦创建,区块151就不能修改,因为它在区块链网络106中的每个区块链节点104处进行标识和维护。区块指针155还向区块151施加顺序。由于事务152记录在网络106中每个区块链节点104处的有序区块中,因此提供了事务的不可改变公共分类账。
应当注意的是,在任何给定时间争相解决难题的不同区块链节点104可以基于在任何给定时间尚未发布的有序事务集154的不同快照来这样做,具体取决于它们何时开始搜索解或接收事务的顺序。解决相应难题的人员首先定义新区块151n中包括的事务152及其顺序,并且更新当前的未发布事务集154。然后,区块链节点104继续争相从新定义的未决有序未发布事务集154中创建区块,等等。此外,还存在解决可能出现的任何“分叉”的协议,其中两个区块链节点104彼此在很短的时间内解决难题,从而在节点104之间传播区块链的冲突视图。简言之,分叉方向最长的成为最终区块链150。应当注意的是,这不会影响网络的用户或代理,因为同一事务将出现在两个分叉中。
根据比特币区块链(和大多数其它区块链),成功构造新区块104的节点被授予在分配限定数量数字资产的新特殊类型事务中分配接受的数字资产数额的能力(与代理间或用户间事务相反,该事务将一定数量的数字资产从一个代理或用户转移到另一个代理或用户)。这种特殊类型的事务通常称为“coinbase事务”,但是也可以称为“启动事务”。它通常形成新区块151n的第一事务。工作量证明发出信号通知构造新区块的节点的意图以遵循协议规则,从而允许稍后赎回该特定事务。在可以赎回该特殊事务之前,区块链协议规则可能需要成熟期,例如100个区块。通常,常规(非生成)事务152还将在其输出中的一个输出中指定附加事务费用,以进一步奖励创建其中发布该事务的区块151n的区块链节点104。该费用通常称为“事务费用”,并在下文中讨论。
由于事务核实和发布中涉及的资源,通常至少每个区块链节点104采用包括一个或多个物理服务器单元的服务器的形式,或者甚至整个数据中心。但是,原则上来说,任何给定区块链节点104均可采用一个用户终端或联网在一起的一组用户终端的形式。
每个区块链节点104的存储器均存储被配置为在区块链节点104的处理装置上运行的软件,以根据区块链节点协议执行其相应的角色并处理事务152。应当理解的是,在本文中归因于区块链节点104的任何动作均可通过在相应计算机设备的处理装置上运行的软件执行。节点软件可以在应用层或诸如操作系统层或协议层的较低层或这些层任意组合的一个或多个应用中实现。
扮演消费用户角色的多方103中的每一方的计算机设备102也连接到网络101。这些用户可以与区块链网络交互,但不参与核实、构造或传播事务和区块。其中一些用户或代理103可以充当事务中的发送者和接收者。其它用户可以与区块链150交互,而不必充当发送者或接收者。例如,一些当事方可以充当存储区块链150的副本(例如,已经从区块链节点104获得区块链的副本)的存储实体。
各方103中的一些或所有当事方可以作为不同网络的一部分连接,例如覆盖在区块链网络106之上的网络。区块链网络的用户(经常称为“客户端”)可以被称为是包括区块链网络的系统的一部分;然而,这些用户不是区块链节点104,因为它们不执行区块链节点所需的角色。相反,每一方103可以与区块链网络106交互,从而通过连接到区块链节点106(即,与区块链节点106通信)来利用区块链150。出于说明目的,示出了双方103及其相应的设备102:第一方103a及其相应的计算机设备102a,以及第二方103b及其相应的计算机设备102b。应当理解的是,更多此类当事方103及其相应的计算机设备102可能存在并参与系统100,但为了方便起见,未进行说明。每一方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能够创建、授权(例如签名)事务152并将其发送到一个或多个位比特币节点104,然后在区块链节点104的网络中传播,从而包括在区块链150中。另一个功能是向相应方汇报其目前拥有的数字资产数额。在基于输出的系统中,该第二功能包括整理分散在区块链150中属于相关方的各种事务152的输出中定义的数额。
注意:虽然各种客户端功能可以描述为集成到给定客户端应用程序105中,但这不一定是限制性的,相反,在本文中所描述的任何客户端功能可以在由两个或多个不同应用程序组成的套件中实现,例如经由API进行接口连接或一个应用程序作为另一个应用程序的插件。更通俗地说,客户端功能可以在应用层或诸如操作系统的较低层或这些层的任意组合实现。下面将根据客户端应用程序105进行描述,但应当理解的是,这不是限制性的。
每个计算机设备102上的客户端应用程序或软件105的实例可操作地耦合到网络106的区块链节点104中的至少一个。这可以启用客户端105的钱包功能,以将事务152发送至网络106。客户端105还可联系区块链节点104,以在区块链150中查询相应方103作为接收者的任何事务(或实际上在区块链150中检查其它方的事务,因为在实施例中,区块链150是在某种程度上通过其公开可见性提供事务信任的公共设施)。每个计算机设备102上的钱包功能被配置为根据事务协议制定和发送事务152。如上所述,每个区块链节点104运行软件,该软件被配置为根据区块链节点协议核实事务152并转发事务152以便在区块链网络106中传播。事务协议和节点协议相互对应,给定事务协议和给定节点协议一起实现给定的事务模型。相同的事务协议用于区块链150中的所有事务152。网络106中的所有节点104使用相同的节点协议。
当给定方103(比方说爱丽丝)希望发送拟包含在区块链150中的新事务152j时,她将根据相关事务协议(使用其客户端应用程序105中的钱包功能)制定新事务。然后,她将事务152从客户端应用程序105发送到她所连接的一个或多个区块链节点104。例如,这可能是与爱丽丝的计算机102最佳连接的区块链节点104。当任何给定区块链节点104接收新事务152j时,其将根据区块链节点协议及其相应的角色进行处理。这包括首先检查新接收的事务152j是否满足变为“有效”的特定条件,具体示例稍后将详细讨论。在一些事务协议中,有效条件可通过事务152中包含的脚本在每个事务的基础上进行配置。或者,条件可仅仅是节点协议的内置功能,或通过组合脚本和节点协议进行定义。
如果新接收的事务152j通过有效性测试(即:“有效”的条件下),接收事务152j的任何区块链节点104将向在区块链节点104处维护的有序事务集154中添加新的核实有效事务152。进一步地,接收事务152j的任何区块链节点104随后将核实有效事务152传播至网络106中的一个或多个其它区块链节点104。由于每个区块链节点104应用相同的协议,因此假定事务152j有效,这意味着事务很快将在整个网络106中传播。
一旦进入在给定区块链节点104处维护的有序事务集154,该区块链节点104将开始争相解决其各自有序事务集154的最新版本上的工作量证明难题,该有序事务集154包括新的事务152(请记住,其它区块链节点104可以尝试基于不同的有序事务集154来解决难题。但是,首先解决难题的人将定义包括在最新区块151中的有序事务集。最终,区块链节点104将解决有序集154的一部分的难题,该有序集154包括爱丽丝的事务152j)。一旦包括新事务152j的有序集154完成工作量证明,其将不可变地成为区块链150中区块151中的一个区块的一部分。每个事务152包括指向早前事务的指针,因此事务的顺序也被不可变地记录下来。
不同的区块链节点104可以首先接收给定事务的不同实例,并且因此在一个实例被发布到新区块151中之前具有关于哪个实例“有效”的冲突视图,此时所有区块链节点104同意所发布的实例是唯一的有效实例。如果区块链节点104将一个实例接受为有效实例,然后发现第二实例已记录在区块链150中,则区块链节点104必须接受这一点,并将丢弃(即,视为无效)其最初接受的实例(即,在区块151中尚未公布的实例)。
作为基于账户的事务模型的一部分,由一些区块链网络操作的另一种类型的事务协议可称为“基于账户的”协议。在基于账户的情况下,每个事务均不通过参考过去事务序列中先前事务的UTXO来定义转移的数额,而是通过参考绝对账户余额进行定义。所有账户的当前状态由网络的节点单独存储到区块链中,并不断更新。在此类系统中,事务使用账户的运行事务记录(也称为“头寸”)进行排序。该值由发送者签名作为其加密签名的一部分,并作为事务引用计算的一部分进行哈希处理。此外,可选的数据字段也可以在事务中签名。例如,如果数据字段中包含上一事务的ID,该数据字段可指向上一事务。
基于UTXO的模型
图2示出了示例性事务协议。这是基于UTXO的协议的示例。事务152(简称“Tx”)是区块链150的基本数据结构(每个区块151包括一个或多个事务152)。下面将通过参考基于输出或基于“UTXO”的协议进行描述。但这并不限于所有可能的实施例。应当注意的是,虽然参考比特币描述了示例性基于UTXO的协议,但是它同样可以在其它示例区块链网络上实现。
在基于UTXO的模型中,每个事务(“Tx”)152包括数据结构,其包括一个或多个输入202和一个或多个输出203。每个输出203可包括未花费事务输出(UTXO),其可用作另一新事务的输入202的来源(如果UTXO尚未赎回)。UTXO包括指定数字资产数额的值。这表示分布式分类账上的一组代币。UTXO还可包含其来源事务的事务ID以及其它信息。事务数据结构还可包括标头201,其可包括输入字段202和输出字段203的大小指示符。标头201还可包括事务的ID。在实施例中,事务ID是事务数据(不含事务ID本身)的哈希值,且存储在提交至节点104的原始事务152的标头201中。
比方说爱丽丝103a希望创建转移相关数字资产数额至鲍勃103b的事务152j。在图2中,爱丽丝的新事务152j标记为“Tx1”。该新事务获取在序列中先前事务152i的输出203中锁定至爱丽丝的数字资产数额,并至少将此类数额中的一部分转移至鲍勃。在图2中,先前事务152i标记为“Tx0”。Tx0和Tx1只是任意的标记,其不一定意味着Tx0指区块链151中的第一事务且Tx1指池154中的下一事务。Tx1可指向仍具有锁定至爱丽丝的未花费输出203的任何先前(即先行)事务。
当爱丽丝创建其新事务Tx1时,或至少在她将该新事务发送至网络106时,先前事务Tx0可能已经有效并包括在区块链150的区块151中。该事务此时可能已包括在区块151中的一个区块中,或者可能仍在有序集154中等待,在这种情况下,该事务将很快包括在新区块151中。或者,Tx0和Tx1可以创建并一起发送至网络106;或者,如果节点协议允许缓冲“孤立”事务,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的输入中的解锁脚本是否包含爱丽丝签名预期部分的数据时的签名。也需要包括预期的部分数据本身(“消息”),以便执行此认证。在实施例中,签名的数据包括整个Tx1(因此不需要包括一个单独的元素来明文指定签名的部分数据,因为其本身便已存在)。
本领域技术人员将熟悉通过公私密码进行验证的细节。基本上而言,如果爱丽丝已使用其私钥加密签署消息,则给定爱丽丝的公钥和明文中的消息,诸如节点104等其它实体可验证消息必须已经由爱丽丝签名。签署通常包括对消息进行哈希,签署哈希值和将此标记到消息作为签名,从而使公钥的任何持有者能够验证签名。因此,应当注意的是,在实施例中,在本文中对签名特定数据片段或事务部分等的任何引用可以意味着对该数据片段或事务部分的哈希值进行签名。
如果Tx1中的解锁脚本满足Tx0的锁定脚本中指定的一个或多个条件(因此,在所示示例中,如果在Tx1中提供了爱丽丝的签名并进行验证),则区块链节点104认为Tx1有效。这意味着区块链节点104会将Tx1添加到有序事务集154。区块链节点104还会将事务Tx1转发到网络106中的一个或多个其它区块链节点104,以便其会在整个网络106中传播。一旦Tx1有效并包括在区块链150中,这会将UTXO0从Tx0定义为已花费。应当注意的是,Tx1仅在花费未花费事务输出203时才有效。如果其试图花费另一事务152已经花费的输出,则即使满足所有其它条件,Tx1也将无效。因此,区块链节点104还需要检查先前事务Tx0中引用的UTXO是否已经花费(即,其是否已经形成另一有效事务的有效输入)。这是为何区块链150对事务152施加定义的顺序很重要的原因之一。在实践中,给定区块链节点104可维护单独的数据库,标记已花费事务152的UTXO 203,但最终定义UTXO是否已花费取决于是否在区块链150中形成了另一有效事务的有效输入。
如果给定事务152的所有输出203中指定的总数额大于其所有输入202所指向的总数额,则这是大多数事务模型中的另一失效依据。因此,此类事务不会传播或包括在区块151中。
请注意,在基于UTXO的事务模型中,给定UTXO需要作为一个整体使用。不能“留下”UTXO中定义为已花费的一部分数额,而同时又花费另一部分。但UTXO的数额可以在下一事务的多个输出之间分割。例如,Tx0的UTXO0中定义的数额可以在Tx1中的多个UTXO之间分割。因此,如果爱丽丝不想将UTXO0中定义的所有数额都给鲍勃,她可以使用剩余部分在Tx1的第二输出中自己找零,或者支付给另一方。
在实践中,爱丽丝通常还需要包括用于发布其事务104的比特币节点的费用。如果爱丽丝未包括此类费用,则Tx0可能会被区块链节点104拒绝,并且因此尽管在技术上有效,但可能不会传播并且包括在区块链150中(如果区块链节点104不希望接受事务152,节点协议不强迫区块链节点104接受)。在一些协议中,事务费用不需要其自身的单独输出203(即不需要单独的UTXO)。相反,输入202指向的总数额与给定事务152的输出203指定的总数额之间的任何差额都将自动提供给发布事务的区块链节点104。例如,假设指向UTXO0的指针是Tx1的唯一输入,并且Tx1仅具有一个输出UTXO1。如果在UTXO0中指定的数字资产数额大于在UTXO1中指定的数额,则可以由发布包含UTXO1的区块的节点104分配该差值。替代地或附加地,这不一定排除可以在其自身事务152的其中一个UTXO 203中明确指定事务费用。
爱丽丝和鲍勃的数字资产由区块链150中任何位置的任何事务152中的锁定至他们的UTXO组成。因此,通常情况下,给定方103的资产分散在整个区块链150的各种事务152的UTXO中。区块链150中的任何位置均未存储定义给定方103的总余额的一个数字。客户端应用程序105的钱包功能的作用是将锁定至相应方且在其它随后事务中尚未花费的各种UTXO值整理在一起。为实现这一点,其可以查询存储在任何一个位比特币节点104处的区块链150的副本。
应当注意的是,脚本代码通常用示意图表示(即使用非精确语言)。例如,可以使用操作码(opcode)来表示特定功能。“OP_...”是指脚本语言的特定操作码。举例来说,OP_RETURN是脚本语言操作码,当在锁定脚本的开始处在操作码前加上OP_FALSE时,操作码创建事务的不可花费输出,该输出可以在事务内存储数据,从而将数据不可改变地记录在区块链150中。例如,数据可包括需存储在区块链中的文件。
通常,事务的输入包含对应于公钥PA的数字签名。在实施例中,这基于使用椭圆曲线secp256k1的ECDSA。数字签名对特定的数据段进行签名。在实施例中,对于给定事务,签名将对部分事务输入以及部分或全部事务输出进行签名。对输出的特定部分进行签名取决于SIGHASH标志。SIGHASH标志通常是包含在签名末尾的4字节代码,用于选择签名的输出(并因此在签名时固定)。
锁定脚本有时称为“scriptPubKey”,指其通常包括相应事务被锁定到的当事方的公钥。解锁脚本有时称为“scriptSig”,指其通常提供相应的签名。但是更通俗地说,在区块链150的所有应用中,UTXO赎回的条件并不一定包括对签名进行验证。更通俗地说,脚本语言可用于定义任何一个或多个条件。因此,可以优选更为通用的术语“锁定脚本”和“解锁脚本”。
如图1所示,爱丽丝和鲍勃的计算机设备102a、120b中的每个计算机设备上的客户端应用程序都可以包括附加通信功能。此附加功能可使爱丽丝103a建立与鲍勃103b的单独侧信道107(在任何一方或第三方的鼓动下)。侧信道107使得能够脱离区块链网络交换数据。此类通信有时称为“链下”通信。例如,这可用于在爱丽丝与鲍勃之间交换事务152,而不将该事务(尚未)注册到区块链网络106上或将其发布到链150上,直到其中一方选择将其广播到网络106上。以这种方式共享事务有时称为共享“事务模板”。事务模板可能缺少形成完整事务所需的一个或多个输入和/或输出。替代地或附加地,侧信道107可用于交换任何其它事务相关数据,例如密钥、议付数额或条款、数据内容等。
通过与区块链网络106相同的分组交换网络101可建立侧信道107。替代地或附加地,侧信道107可以经由诸如移动蜂窝网络的不同网络或者诸如无线局域网络的局域网建立,甚至经由爱丽丝和鲍勃的设备102a、102b之间的直接有线或无线链路建立。通常,在本文中任何地方所指的侧信道107可以包括经由一项或多项联网技术或通信介质的任何一条或多条链路,这些链路用于“链下”交换数据,即脱离区块链网络106交换数据。在使用多条链路的情况下,链下链路束或集合整体上可以称为侧信道107。因此,应当注意的是,如果说爱丽丝和鲍勃通过侧信道107交换某些信息或数据等,则这不一定意味着所有这些数据都必须通过完全相同的链路或甚至相同类型的网络发送。
预备知识
概率过滤器
概率过滤器是用于测试元素是否为集合的一部分的内存高效数据结构。永远不会出现假阴,这意味着如果将一项添加到概率过滤器中,该过滤器将始终能够辨别是否再次呈现同一项。然而,可能会出现假阳(false positive),假阳概率取决于多个因素(例如,概率过滤器的尺寸)。换言之,过滤器的空间效率与假阳概率之间存在权衡。
使用最广泛的两种概率过滤器是布隆过滤器和布谷鸟过滤器。这两种过滤器经过初始化处理,以提供目标假阳概率(fpp)和预期元素数量。这两种过滤器之间的一个根本区别在于,布隆过滤器可以容纳任意数量的元素,但是当插入的元素数量高于预期元素数量时,该过滤器的假阳概率会提高(高达100%)。相反,布谷鸟过滤器会保持目标假阳率,但不能保证可在达到预期数量之后插入新元素(插入可能被拒绝)。也就是说,过滤器的最大尺寸在创建后并不灵活;为了容纳超出最大数量的其他元素,必须创建新的过滤器。这两种过滤器之间的另一个区别在于,布谷鸟过滤器允许删除先前插入的元素,而在布隆过滤器中无法实现这一点。应当注意的是,布隆过滤器和布谷鸟过滤器只是两种概率过滤器,本发明并不仅限于这两个示例。
这两种过滤器的空间效率相似:布隆过滤器的成本(以位/元素为单位)为
Figure BDA0003962196050000151
而布谷鸟过滤器的成本为
Figure BDA0003962196050000152
其中load是过滤器负载(通常介于90%和95%之间)。
布谷鸟过滤器的时间效率更高,在O(1)中执行插入、删除和查找,其中符号O()表示算法的复杂度。O(1)表示恒定复杂度和快速算法,而O(k)表示随k增加的复杂度和较慢算法。布隆过滤器执行相同的操作(但不支持删除),在O(k)中,k是布隆过滤器的哈希函数的数量。
可能的双重花费攻击:重复花费攻击
轻量级客户端向区块链节点104传输已签署事务,然后已签署事务被广播到整个网络106。因此,在一定时间内,这些事务仅存在于网络106的一部分中(由于带宽限制)。这意味着已在一个或多个区块链节点104处花费的UTXO(即,在由那些区块链节点104维护的一组未发布事务中存在花费该UTXO的事务)仍然可以在其他区块链节点104处花费。攻击者可能会利用该漏洞在网络106的不同部分双重花费相同UTXO。双重花费最终会被检测到,并且在区块151中最终仅发布这些事务中的一个,但是接受这些0-conf事务中的另一个(花费这些UTXO中的一个)的节点104将被欺骗。
从历史上看,可能存在两种主要的重复花费攻击:
·快速重复花费:重复花费事务几乎与合法事务同时传输。
·高费用重复花费:重复花费事务以高于合法事务的事务费用传输。
在一个特定的区块链网络(比特币网络)上,对于合法事务,如果在0.5秒内广播,则快速重复花费攻击的成功概率为10%(否则成功概率接近0%)。如果在0.5秒内广播,则高费用重复花费攻击的成功概率约为28.7%;如果在1秒内广播,则成功概率下降到17.5%;如果在5秒内广播,则成功概率下降到5.5%。
因此,在大多数情况下,尤其是在商家正在广播合法事务的情况下,几乎不可能在区块链节点104处成功完成重复花费攻击。客户端不知道事务将被广播的确切时间:如果攻击者过早地执行重复花费攻击,则事务会被检测到并且合法事务会被拒绝(并且销售无法完成);如果过晚地执行重复花费攻击,则成功概率几乎为0%。然而,轻量级客户端依赖区块链节点104来核实事务,并且如果区块链节点104遇到技术困难(例如,低带宽)或如果已受到损害,则这些影响可能被放大。
在图3的示例中,区块链节点A接收花费UTXO1的事务Tx1,并将其传输给区块链节点B。区块链节点C不知道UTXO1已在Tx1中花费。攻击者通过向轻量级客户端(图3中的轻客户端1、2和3)发送包含同一UTXO1的另一个事务Tx2来双重花费UTXO1。轻量级客户端1和2会拒绝Tx2,而轻量级客户端3(依赖节点C检查事务)不会拒绝事务Tx2。如果运行轻量级客户端3的商家依赖节点C的UTXO池接受具有0-conf的Tx2,并且随后将Tx1插入有效区块中,则轻量级客户端3会丢失其数字资产。
可能的双重花费攻击:临时分叉
当两个区块链节点104同时发现同一区块时,会发生临时分叉,从而导致区块链150中出现临时分叉。最终,区块链节点104就同一版本的链达成一致(例如,使用Nakamoto共识),并且“失败”分叉上的区块链节点104会丢弃区块,接受“获胜”分叉及其区块。
一些事务可以仅广播到网络106的一小部分。例如,不会产生事务费用的事务就是这种情况(例如,与区块链节点达成特殊协议的企业可以支付固定月费以发布无限事务)。只有当包含事务的区块发布时,这些事务才对整个网络106可用:接收已发布区块的所有节点104可以检查其中包含的事务并请求缺失的事务。然而,在出现临时分叉期间,可以仅在该版本区块链150的区块中插入一个或多个事务。在解决分叉之前,运行备选版本的区块链节点104可能不知道事务。这些节点最初将接受花费已在第一版本的链中花费的相同UTXO的其他事务,然后在达成Nakamoto共识时拒绝这些事务(假设第一版本的链在竞争中获胜)。
在图4中的示例中,区块链150被临时分为两个链,即链(a)和链(b)。花费UTXO1的事务Tx1插入链(a)中的区块但不插入链(b)中,因此UTXO1仍可在链(b)上花费。攻击者可以利用这一点来执行双重花费攻击。花费UTXO1的另一事务Tx2将被区块链节点A和B拒绝,但被区块链节点C接受。依赖节点C来验证其与0-conf(甚至该示例中的1-conf)的事务的轻量级客户端3将接受Tx2。假设最终达成共识并且获胜链是链(a),则轻量级客户端3将失去其数字资产。
识别双重花费尝试
如上所述,想要接受0-conf事务的轻量级客户端(或一般用户)必须验证用作这些事务的输入的UTXO。这些UTXO必须有效并且尚未被其他事务花费,包括尚未在已发布区块151中但已在一组有序的未发布事务154中的事务。具有超过六个确认的区块151通常被视为不可变,并且如果在这些区块中的一个中已花费UTXO,则可以假设尝试花费该UTXO的事务被任何区块链节点104拒绝。事实上,该UTXO已从所有区块链节点104的UTXO池中移除。在最近花费的UTXO(例如,在区块链150的最近六个区块中的那些)中,不能做出相同的假设,并且UTXO的双重花费在理论上是可能的。此外,不同区块链节点104的多组未发布事务154未同步,这意味着事务可以仅存在于网络106的一部分中。
为了提高安全性,区块链节点104可以创建包含在内存池中的事务中花费的所有UTXO的概率过滤器(例如,布隆过滤器或布谷鸟过滤器),并将其传输给轻量级客户端。轻量级客户端105可以使用概率过滤器作为内存池成员资格测试,仅当用作输入的所有UTXO未通过成员资格测试时才接受事务(即,UTXO从未在内存池中的事务中花费,因此从未插入过滤器中)。可以扩展该过滤器以包括存在于最后x个区块(例如,最后六个或十个区块)中的事务输出。
图5中示出了用于实现本发明实施例的示例性系统500。系统500包括发送实体501和接收实体502。该系统可以包括多个不同的发送实体501(未示出)和/或多个不同的接收实体502(也未示出)。该系统还可以包括一个或多个用户503。本文中使用的术语“发送实体”501用于指代被配置为生成概率过滤器并将其传输给一个或多个接收实体的一方。类似地,术语“接收实体”502用于指代被配置为接收概率过滤器以在该过滤器内检查一个或多个事务输出的成员资格的一方。术语“用户”503用于指代被配置为向接收实体提供一个或多个区块链事务输出的一方(例如,作为事务或事务模板的一方),该一个或多个区块链事务输出可能已经或尚未被先前事务花费。
每个发送实体501、接收实体502和用户503操作相应的计算机设备(未示出)。每个发送实体501、接收实体502和用户503的相应计算机设备包括相应的处理装置,该处理装置包括一个或多个处理器,例如一个或多个CPU、GPU、其他加速器处理器、特定应用程序处理器和/或FPGA。发送实体501、接收实体502和用户503的相应计算机设备还包括存储器,即采用非瞬时性计算机可读介质形式的计算机可读存储器。该存储器可包括一个或多个存储器单元,其采用一个或多个存储器介质,例如诸如硬盘等磁介质、诸如SSD、闪存或EEPROM等电子媒介和/或诸如光盘驱动器等光学介质。相应计算机设备上的存储器存储软件,其包括被设置为在处理装置上运行的至少一个客户端应用程序105的相应实例。应当理解的是,在本文中归因于给定方的任何动作均可通过在相应计算机设备的处理装置上运行的软件执行。每个发送实体501、接收实体502和用户503的相应计算机设备可以包括至少一个用户终端,例如台式电脑或笔记本电脑、平板电脑、智能手机或诸如智能手表等可穿戴设备。给定方的计算机设备还可包括一个或多个其他网络资源,诸如通过用户终端访问的云计算资源。
在一些实施例中,用户503可以使用预载有一个或多个UTXO的离线设备向接收实体502发送事务。例如,离线设备可以采用连接到在线设备时可以加载的卡(例如,信用卡等)的形式。例如,用户503可以使用非接触卡通过接收实体502支付费用,由此该卡被配置为签署事务并使用近场通信(NFC)或类似的无线通信通道将其传输给接收实体502。
在一些实施例中,发送实体501可以操作区块链节点104。在一些实施例中,每个接收实体502可以充当客户端应用程序105的角色,或者可以至少操作被配置为运行客户端应用程序105的计算设备。例如,接收实体502可以被配置为执行上述爱丽丝103a和/或鲍勃103b的动作。类似地,每个用户503可以充当客户端应用程序105的角色,或者可以至少操作被配置为运行客户端应用程序105的计算设备。
为简洁起见,将结合客户(用户503)、商家(接收实体502)和区块链节点(发送实体501)描述本发明。然而,应当理解的是,这些标签并非旨在限制本发明。具体地,只要发送节点501能够访问一组已花费事务输出,发送实体501就不必是区块链节点104。
在图5的说明性示例中,客户503向商家502提供事务Tx1。事务Tx1包括一个或多个输入,该一个或多个输入引用一个或多个先前(即,先前生成的)事务的相应输出。例如,该事务可以旨在将一定数额的数字资产的所有权从客户503转移给商家502,以换取商品或服务。商家502想要检查Tx1的一个或多个输入引用的先前一个或多个输出尚未花费,以从区块链节点501获取概率过滤器。接收Tx1时,或者在接收Tx1之前,商家502可以向区块链节点501请求该过滤器。也就是说,商家502可能已接收到该过滤器并存储该过滤器以供日后使用。区块链节点501可以定期向商家502发送所更新的过滤器,如下所述。该过滤器包含一组标识符的压缩表示。每个标识符标识相应已花费事务输出,即已由先前事务花费的事务的输出。商家502向该过滤器提供Tx1(或者更确切地说,其相应标识符)的输出,以检查其是否包含在该过滤器中。商家502能够使用该过滤器确定Tx1引用的一个或多个输出是否肯定尚未使用(即,肯定未包括在该过滤器中),或者是否可能已花费。如果商家502发现一个或多个输出肯定尚未花费(即,用户503肯定未对Tx1进行双重花费尝试),则商家502可以接受Tx1,例如以换取商品或服务。另一方面,如果商家502发现一个或多个输出可能已花费(即,用户503可能正在对Tx1进行双重花费尝试),则商家502可以通知区块链节点501。作为响应,区块链节点501可以检查一个或多个输出是否确实被记录为正在花费,即,区块链节点501是否确实在传输给商家501的过滤器中包括这些输出的相应标识符。然后,区块链节点501可以向商家502通知结果,和/或将与双重花费尝试有关的信息传递给相关当局。
更一般地,区块链节点501被配置为生成第一概率过滤器。第一概率过滤器包括第一组先前已花费事务输出(STXO)的相应标识符的表示(或对其进行编码)。例如,第一组STXO可以由区块链节点501(或不同的区块链节点501)维护的一组有序的未发布事务中包括的部分或全部事务花费。在一些示例中,第一组STXO可以由区块链的一个或多个区块中包括的一个或多个事务(例如,区块链的最后n个区块(例如,最后六个区块)中包括的所有事务)花费。也就是说,第一组STXO可以由记录在最后n个区块中的任意一个区块中的一个或多个事务花费。应当注意的是,STXO不一定必须记录在最后n个区块中的任意一个区块中,而是可以记录在区块链的任意或全部区块中。
优选地,区块链节点为要发布的每个新区块创建新过滤器。该过滤器对已存在于一组有序事务154中的STXO以及新传入事务中的STXO的表示进行编码。区块链节点501不必添加先前区块中存在的STXO,因为它们可能已经存在于上一过滤器中。
区块链节点501使第一概率过滤器对商家502可用。例如,区块链节点501可以将该过滤器直接传输给商家502,或者将该过滤器广播给多个商家502,或者在可访问源(例如,在因特网上)上发布该过滤器,或这些或其他选项的任意组合。
第一概率过滤器编码的每个STXO由相应标识符标识。在一些示例中,该标识符可以基于包括STXO(在花费之前为UTXO)的事务。例如,STXO可以由事务的事务标识符(TxID)以及该事务内的输出索引标识,例如,与输出索引级联的TxID。在其他示例中,仅STXO本身的哈希可以用作标识符。
在一些实施例中,区块链节点501可以向商家502发送(或以其他方式提供)第二概率过滤器。第二概率过滤器包括第二组先前已花费事务输出(STXO)的相应标识符(或对其进行编码)。第一组STXO和第二组STXO可以是排他性(即,不重叠)的组。替代地,第二组STXO可以包括第一组STXO中包括的一个或多个STXO。例如,可以通过以下方式生成第二过滤器:更新第一过滤器以包括一个或多个附加STXO,例如,在生成第一过滤器后的时间内已由添加到区块链节点501的内存池中的事务引用的STXO。如果已生成第一过滤器以仅包括在生成时由内存池中的事务引用的STXO,并且这些事务现在已在区块链的区块中被接受,则可以类似方式生成第二过滤器以仅包括由当前在内存池中的事务引用的STXO。在这种情况下,第一组STXO和第二组STXO可以不重叠。在一些示例中,由区块链节点501生成并发送给商家502的每个过滤器可以基于一组不同的STXO。
商家502(例如,轻量级客户端、另一区块链节点或其他类型的区块链节点等)从区块链节点501获取一个或多个概率过滤器,例如,第一过滤器和/或第二过滤器。商家502还获取一个或多个事务输出,或者对一个或多个事务输出的相应引用。例如,商家502可以从用户503处获取事务模板,其中,该事务模板包括一个或多个输入,每个输入引用先前事务的相应输出(应当注意的是,不同的先前事务可以由模板事务的不同输入引用)。在其他示例中,用户503可以向商家502提供对一个或多个事务输出的引用,但不一定采用事务模板的形式。
应当注意的是,商家502可以任何合适的方式获取一个或多个概率过滤器以及事务输出,例如,分别直接从区块链节点501和用户503处接收。
商家502还可以从一个或多个附加(即,不同的)区块链节点501(或更一般地,发送实体)获取(例如,接收)一个或多个附加过滤器。
在获取一个或多个概率过滤器之后,商家502可以使用一个、部分或全部过滤器来确定从用户503处获取的任何事务输出是否已花费。也就是说,商家502检查一个或多个事务输出(或者更确切地说,其相应标识符)是否为概率过滤器中的一个或多个中的元素。由于过滤器的概率性质,在执行检查后,商家502可以确定所标识的事务输出不是双重花费尝试(即,它们作为未花费事务输出(UTXO)存在于区块链网络106中),或者可以向商家502提供所标识的事务输出可能是双重花费尝试的证据。
如果所标识的事务输出不存在于一个或多个概率过滤器中,则商家502可以继续与用户503开展事务,例如以换取商品、服务或数据。
如果所标识的事务输出可以存在于一个或多个概率过滤器中,则商家502可以选择停止与用户503开展事务。附加地或替代地,商家502可以向提供了一个或多个相应过滤器的一个或多个区块链节点501或向任何其他区块链节点传输通知。例如,商家502可以向区块链节点501通知可能的双重花费尝试。商家502可以请求区块链节点501确定一个或多个事务输出是否确实为双重花费尝试。
从商家502处接收通知后,区块链节点501可以确定所标识的事务输出是否确实为STXO,或者商家502使用的概率过滤器是否返回假阳。也就是说,区块链节点501检查所标识的事务输出是否由区块链节点501的内存池中包括的事务或区块链150上已发布区块中的事务引用。
区块链节点501可以将该检查的结果传输给商家502,例如,以向商家502通知所标识的事务输出是否为双重花费尝试。附加地或替代地,区块链节点501可以向相关当局通知双重花费尝试。
假设商家502获取的事务模板引用的事务输出不是双重花费尝试,商家502可以接受该事务模板。这可以包括使用数字签名对该模板进行签名和/或将该事务模板的已完成版本传输给区块链网络106。
替代地,如果商家502接受该事务模板,商家502可以请求用户503签名并返回。然后,商家502可以将事务(已由用户503签名)传输给区块链网络106。在不可信的场景中,这是必要的,因为商家502可能会以其他方式欺骗并告知UTXO是双重花费,拒绝该模板,然后向用户503请求其他UTXO。然后,商家502可以收集两组UTXO,从而使其收益翻倍(如果重复该过程,可使收益翻倍或更多倍)。为了防止这种情况,用户503仅在获得商家502批准后才能签署UTXO。
在一些实施例中,商家502可以包括获取一个或多个概率过滤器的本地服务器,以及多个轻量级客户端或其他设备,其中每一个将事务输出(或其相应标识符)传输给该服务器。该服务器将所标识的事务输出提供给一个或多个概率过滤器以检查成员资格,然后将结果返回给轻量级客户端。
如上所述,接收实体502(例如,商家或区块链节点)可以使用概率过滤器进行成员资格测试。发送实体501(例如,区块链节点)可以创建概率过滤器(例如,布隆过滤器或布谷鸟过滤器),然后将该过滤器传输给接收实体502(例如,一个或多个轻量级客户端),其中该概率过滤器包含在一组有序的未发布事务154中包括的事务中花费的所有UTXO。对于发送实体来说,与标识双重花费尝试所需的当前检查相比,维护和服务概率过滤器的计算成本更低,并且该过滤器针对每个新事务只需要更新一次(与轻量级客户端每次提出请求时检查内存池和最后六个区块相比)。
概率过滤器具有预定义假阳率,但它们永远不会出现假阴。轻量级客户端可以使用概率过滤器进行成员资格测试:如果过滤器显示“否”,则可以立即接受事务。如果过滤器显示“是”,或者更准确地显示“很可能”(由于假阳),则向用户503(例如,客户)提供选择:等待直到事务插入有效区块中或者使用其他事务支付。概率过滤器的传输和存储成本较低,从而允许对不同区块链节点进行多次快速检查(即,接收实体502可以检查UTXO是否尚未在网络的任何部分中花费)并且在先前区块(即,6-conf深度的最后六个区块)中进行多次快速检查,在这种情况下,只有当所有过滤器均显示“否”时,才接受0-conf事务。
图6示出了该架构的示例。三个区块链节点A、B和C创建并维护包含在最后x个区块中花费的UTXO的过滤器,包括在Tx1中花费的UTXO1(Tx1目前仅存在于区块链节点A和B的一组有序的未发布事务154中)。如果轻量级客户端接收到正在尝试花费UTXO1的新事务Tx2,则在接受该新事务之前,轻量级客户端会更新其过滤器并检查UTXO1的成员资格。所有轻量级客户端检测到UTXO1已在网络106中某处花费(即,由Tx1花费),并且它们都会拒绝Tx2。
由于假阳,即使某些UTXO尚未在任何位置花费,也可能被拒绝。对于这些UTXO,0-conf可能无法接受,并且想要花费这些UTXO的用户可以稍后使用它们(例如,当过滤器被替换时)或以任何方式花费它们,并且等待包含这些UTXO的事务插入有效区块中。
如上所述,为了在概率过滤器中记录UTXO,需要对它们进行唯一标识。通常,UTXO没有单独的ID。当创建新事务时,事务输入向量通过结合事务哈希(事务ID)和输出索引(其标识该事务的“vout”向量中的UTXO)来标识将消耗的UTXO。
在一些实施例中,使用类似的技术来标识正在花费的UTXO,以下称为UTXO ID。UTXO ID被定义为包含该UTXO的事务ID(transaction ID)和其输出索引(output index)的级联:
UTXO ID=transaction ID+output index
根据至少一个区块链协议,UTXO ID的大小为事务ID(32字节)和输出索引(8字节)的总和,每个UTXO ID的总大小为40字节。应当理解的是,可以使用UTXO ID的其他变型。也就是说,UTXO ID可以是TxID和输出索引的函数,但不一定是级联。
这里总结了由发送实体501(例如,区块链节点)执行以创建和维护过滤器的过程。首先,对于区块链节点正在组装的每个新候选区块:
1.区块链节点创建新的概率过滤器并将已在事务中花费的UTXO的所有UTXO ID插入内存池中。
然后,每当接收到新事务时:
2.核实该事务,如果核实有效,则:
a.将该事务插入内存池中;以及
b.将在新事务中用作输入的UTXO的ID插入过滤器中。
当发布新区块时,区块链节点将当前过滤器存档(例如,将其存储在硬盘驱动器上)并初始化新的过滤器,从而将已在事务中花费的所有UTXO插入内存池中。可以删除旧的过滤器(例如,仅保留最后6个过滤器)。应当理解的是,区块链节点存储当前过滤器并不是必需的。
图7示出了接收新事务时可能执行的过程:区块链节点核实事务(事务A)并将其插入其一组有序的未发布事务154中。同时,将在该事务中花费的UTXO插入概率过滤器n中。
如上所述,可以在每次将新事务插入一组有序的未发布事务154中时更新过滤器n,并且直到发布新区块,然后初始化新过滤器n+1。图8中示出了该序列。因此,每个区块链节点可以使用包含在最后x个区块中花费的UTXO的ID的过滤器以及当前内存池(过滤器n+1)来维护滚动窗口。应当注意的是,一组有序的未发布事务154中的所有事务都被添加到该过滤器中,与它们被插入区块中的事实无关。应当注意的是,未发布意味着该事务尚未在区块中发布,而是仅存在于节点104的内存池中。
同样地,如前所述,仅维护最后n个过滤器(例如,对于6-conf深度,n=6)意味着在比n更深的区块中花费的UTXO保证被所有UTXO池移除,而在最后n个区块中花费的UTXO仍然可以在网络106的部分中花费(例如,它们容易受到双重花费攻击和临时链分裂的影响)。例如,区块链节点可能未接收到最新区块,或者可能已接收到属于临时分叉(UTXO仍然可用)的区块。向这些节点中的一个发送事务将导致初始接受该事务,然后最终拒绝该事务。这对区块链150本身来说不是问题,但对于接受0-conf事务的商家等来说确实是个问题。
布隆过滤器和布谷鸟过滤器只是发送实体501可以使用的两种概率过滤器。由于元素删除不是必需的,因此布隆过滤器和布谷鸟过滤器特别适合。下表总结了两种过滤器的优缺点:
Figure BDA0003962196050000231
用例:销售点即时事务
运行轻量级客户端并愿意立即接受新事务(可以是也可以不是对本领域中称为“简单支付验证”的事务验证过程的补充)的商家502将验证用作事务输入的UTXO的“可花费性”。使用概率过滤器执行成员资格测试来验证UTXO可花费性,并且仅当所有结果均为阴性时,该事务才被视为可花费。为了提高安全性并防止双重花费攻击,商家能够将过滤器与多个区块链节点同步。安全级别与带宽消耗之间的权衡可以通过轻量级客户端选择。
当用户503请求商品或服务时,商家502执行验证过程,如下所示:
1.商家轻量级客户端502向一个或多个区块链节点(如果尚未接收到)请求最后x个过滤器(例如,对于6-conf深度临时分叉保护,x=6)。
2.随着时间的推移,将新事务添加到最后一个过滤器中,在接受事务之前,轻量级钱包502将最后一个过滤器与一个或多个区块链节点501同步。
3.商家502向用户503发送事务模板。该模板包括完成销售的所有条件,例如必须支付款项的地址、增值税(VAT)、消费、可选的其他成本等。输入字段留空。
用户503填写商家的模板,从而添加输入和更改,但不添加解锁资金所需的签名。然后,用户503向商家502重新传输该模板。除了所填写的模板,用户503必须传输所花费的UTXO的完整事务数据和默尔克路径。该信息证明该事务在本地存在且包含足够的资金,使得区块链节点501不需要额外的验证工作。
4.商家502检索该模板的输入字段中的所有UTXO,并验证默克尔证明是有效的。
5.执行UTXO成员资格测试(使用UTXO ID):
a.如果所有UTXO都不在任何概率过滤器中,则:
i.UTXO尚不在内存池或先前区块中(保证不存在假阴)。
ii.商家502请求用户503对该模板进行签名并接受其作为0-conf。
b.如果一个或多个UTXO在概率过滤器中,则:
i.阳性UTXO可以已在内存池或最近发布的区块中(由于过滤器假阳,导致不确定性较低)。
ii.商家502请求用户503等待确认(并且,在这种情况下,对该模板进行签名)或更新该模板以更改输入中的无效UTXO。
虽然拒绝事务并请求使用新的未花费事务输出来更新该模板看起来是一个繁琐的过程,但是如果用户503使用支持该机制的钱包支付,则可以在毫秒内自动执行检查UTXO、更新该模板并对其进行签名的整个过程。
当检测到可能的双重花费时,轻量级客户端502可以向网络106发送警报。区块链节点501执行额外检查以排除概率过滤器假阳的情况,并且如果确认双重花费,则可以报告签字人和所指控事务。包含相同UTXO作为输入的事务可以用作不诚实证明,就像是支票欺诈一样(此时当局可以选择如何干预和解决争议)。因此,上述过程可以按如下方式扩展。
执行UTXO成员资格测试,并且如果所花费的一个或多个UTXO在概率过滤器中,则:
1.商家轻量级客户端502向区块链节点发送警报。
2.区块链节点501执行最终检查,并且如果UTXO已在一组有序的未发布事务154中的事务中花费,则:
a)区块链节点501可以在整个网络106上发出警报。
b)区块链节点501可以使用两个(或更多个)已签署事务作为不诚实证明,向当局报告签字人。
本发明的一些优点如下。概率过滤器维护成本较低:可以查询多个区块链节点501,从而提高网络的安全性。运行轻量级客户端的商家502无需始终在线以检查双重花费,而只需在接收支付和接收/传输少量数据之前连接:更新最后x个概率过滤器(对于6-conf,x=6)并传输该模板。在运行轻量级客户端502的企业中愿意支付的用户503无需在线以执行支付:只需存储他们愿意花费的UTXO、他们的完整事务以及他们的默克尔证明。用户503需要最小的计算能力:他们只需签署事务。在本地使用默克尔证明和概率过滤器检测无效UTXO。运行轻量级客户端502的商家无法用于垃圾邮件攻击和DoS攻击。区块链节点501可以禁止不诚实用户并将其上报给当局。
下面将描述本发明的示例性实现方式。使用以下24小时统计示例计算过滤器的大小:
·事务输入中的平均UTXO:3个UTXO/Tx
·每秒的平均事务数:7Tx/s
·区块之间的平均时间:625s
·平均内存池大小:5MB
每个区块的平均事务数:7x 625=4375Tx
每个区块的平均UTXO数:4375x 3=13125个UTXO
为了进行比较,假设轻量级客户端希望在不使用本发明的情况下检查UTXO的可花费性,则客户端将需要完整的UTXO ID列表(UTXO ID大小为40字节):
UTXO ID列表大小:13125x 40字节=525KB
现在,使用根据本发明的过滤器:
Figure BDA0003962196050000251
Figure BDA0003962196050000252
参数:
·假阳概率(fpp)=0.1%
·过滤器负载(仅布谷鸟过滤器)=95%
布隆过滤器大小=23.5KB-与UTXO ID列表相比的压缩比:4.5%
布谷鸟过滤器大小=20.7KB-与UTXO ID列表相比的压缩比:3.9%
过滤器的大小随着预期元素数量呈线性增长。例如,假设区块具有更大的每秒事务数(即,每秒事务数的两倍),或者需要更多的发布时间(即,发布时间的两倍),在这两种情况下,过滤器的大小也会翻倍。此外,未立即添加到区块中并停留在内存池中的事务必须添加到以下过滤器中。
由于这些情况频发,因此为了避免假阳率提高(在布隆过滤器的情况下)或插入被拒绝(在布谷鸟过滤器的情况下),可以配置新的过滤器来管理每个区块平均UTXO的两倍。
在这种情况下,可以通过以下方式创建过滤器:
·fpp=0.1%
·预期元素=2*每个区块的平均UTXO=26250
布隆过滤器大小=47.0KB
布谷鸟过滤器大小=41.4KB
过滤器大小可以由发送实体501动态建立,例如,考虑最后一小时或最近24小时内的每秒平均事务数。这使得过滤器能够随着网络106上的流量相应地增长,而不浪费空间。
这里展示了所提出方法的可扩展性,假设在未来几年内,一些区块链网络可能处理大小高达1TB的块,包含多达40亿个事务。下表总结了过滤器的大小以及维护过滤器所需的带宽。假设平均事务大小为250字节,每个事务3个UTXO,并且区块之间的平均时间为10分钟。
Figure BDA0003962196050000261
从上表中可以确定以下几点:
·表示高达100MB的区块的概率过滤器的维护成本较低:需要12MB到18MB的大小来存储6个过滤器,并且最大带宽为4.7KB/s。
·表示1GB区块的概率过滤器可以由市场上现有的大多数设备处理,需要120MB到180MB的大小来存储6个过滤器,并且最大带宽为47KB/s。
上述用例针对每隔几分钟接收一次事务的小型商家进行优化。他们的唯一要求是在接受0-conf事务之前更新最新的过滤器。另一方面,大型商家可能有不同的要求:他们通常设有几个销售点(PoS),每秒处理多个事务。在每个PoS中维护概率过滤器效率不高,浪费了大量存储空间,并且增加了网络流量。在这些情况下,可能需要略微不同的架构:本地服务器1201可以存储和维护所更新的概率过滤器。服务器1201可以始终在线并持续更新。每个PoS 1202将所填写的模板以及从用户503处接收的其他信息传输给本地服务器1201进行验证。这减少了网络流量,并且降低了每个PoS 1202的计算强度。图9中示出了该架构的示例。
用例:提高区块链节点的安全性
本发明提供了一种新的方法,用于检测愿意接受0-conf事务的轻量级客户端中的无效事务和双重花费。先前的方法效率低下,因为它们需要区块链节点执行大量额外工作(轻量级客户端必须使用多个区块链节点来检查事务有效性而不是在本地执行)。此外,它们会将轻量级客户端暴露给愿意使用它们在网络106上执行拒绝服务攻击的攻击者(例如,通过创建虚假事务并迫使轻量级客户端淹没区块链节点以进行验证)。
与轻量级客户端一样,区块链节点也可以向其他区块链节点请求UTXO概率过滤器。在核实从轻量级客户端接收的新事务时,除了标准核实检查之外,区块链节点还可以测试UTXO是否已在网络的其他部分花费。这项技术可作为一种额外的安全措施来防止双重花费。此外,这项技术还能够快速检测临时链分裂和已损坏节点。
用例:简单的商家钱包
本节描述了简单的商家钱包(SMW),这是一种对计算资源有限的商家或其他方有用的轻量级钱包。SMW是本发明提出的典型用例,尤其是在即时接受区块链事务对企业至关重要的情况下。SMW是一种可供商家和PoS设备使用的轻量级钱包。SMW只需创建支付模板,将其发送给用户(例如,客户),并在用户填写后验证事务。在必须尽快核实事务的情况下,SMW尤其有用,其中在区块链上可能有0个确认,例如,咖啡馆、自动售货机等。例如,在事务插入区块链之前,咖啡馆必须验证和接受支付并提供饮料(6-conf深度核实平均需要1小时)。图10示出了通过即时SMW处理事务的示例性流程。
一旦给出本文的公开内容,所公开技术的其它变体或用例对于本领域技术人员可能变得显而易见。本公开的范围不受所描述的实施例限制,而仅受随附权利要求限制。
例如,上面的一些实施例已经根据比特币网络106、比特币区块链150和比特币节点104进行了描述。然而,应当理解的是,比特币区块链是区块链150的一个特定示例,并且上述描述通常可以应用于任何区块链。也就是说,本发明决不限于比特币区块链。更一般地,以上对比特币网络106、比特币区块链150和比特币节点104的任何引用可以分别参考区块链网络106、区块链150和区块链节点104来替换。区块链、区块链网络和/或区块链节点可以共享如上所述的比特币区块链150、比特币网络106和比特币节点104的部分或全部所述特性。
在本发明的优选实施例中,区块链网络106是比特币网络,并且比特币节点104至少执行对区块链150的区块151进行创建、发布、传播和存储中的所有所述功能。不排除可能存在仅执行这些功能中的一个或部分功能但不是全部功能的其它网络实体(或网络元件)。也就是说,网络实体可以执行传播和/或存储区块的功能,而不创建和发布区块(请记住,这些实体不被认为是优选的比特币网络106的节点)。
在本发明的非优选实施例中,区块链网络106可以不是比特币网络。在这些实施例中,不排除节点可以执行对区块链150的区块151进行创建、发布、传播和存储中的至少一个或部分功能但不是所有功能。例如,在这些其它区块链网络上,“节点”可用于指被配置为创建和发布区块151但不存储和/或传播这些区块151到其它节点的网络实体。
甚至更通俗地说,上面对术语“比特币节点”104的任何引用可以用术语“网络实体”或“网络元件”代替,其中这样的实体/元件被配置为执行对区块进行创建、发布、传播和存储中的一些或全部角色。这种网络实体/元件的功能可以在硬件中实现,方法与上面参照区块链节点104所述的方式相同。
应当理解的是,上述实施例仅通过示例的方式进行描述。更通俗地说,可根据下述任何一个或多个语句提供一种方法、装置或程序。
语句1、一种用于识别区块链事务输出的双重花费尝试的计算机实现的方法,其中所述方法由发送实体执行并且包括:
生成第一概率过滤器,其中所述第一概率过滤器对所述发送实体可用的第一多个已花费区块链事务输出(first plurality of spent blockchain transaction outputs)中的每一个的相应标识符进行编码;以及,
使所述第一概率过滤器对接收实体可用。
也就是说,所述第一概率过滤器包括所述相应标识符中的每一个的表示。应当注意的是,“可用”意味着所述发送实体能够访问所述第一多个已花费区块链事务输出,但这不意味着所述第一多个已花费区块链事务包括所述发送实体知道的每个单一已花费区块链事务输出。优选地,在每个新生成的过滤器中,仅对所述内存池中的事务所花费的事务输出进行编码。
语句2、根据语句1所述的方法,其中所述第一多个已花费事务输出包括已花费事务输出集合,所述已花费事务输出集合已由区块链节点维护的未公布事务的有序集合中存在的相应事务花费,其中事务的所述有序集合中的每个事务已由所述区块链节点核实。
例如,每次发布新区块时(并且因此当从所述一组有序的待处理事务中移除部分或全部事务时),可以生成新的过滤器。也就是说,每次生成和发布新区块时,可以生成新的过滤器,并且所述发送实体可以保留最后x个(例如,最后6个)过滤器。每个过滤器均根据该过程生成(每次创建一个新的过滤器时,丢弃最后一个过滤器)。
语句3、根据语句1或2所述的方法,其中所述第一多个已花费事务输出包括已由所述区块链的相应区块中存在的相应事务花费的相应事务输出集合。
语句4、根据语句3所述的方法,其中所述第一多个已花费事务输出包括多个相应的事务输出集合,其中每个事务输出集合已由所述区块链的多个区块中的相应一个中存在的相应事务花费。
语句5、根据前述任一项语句所述的方法,其中所述概率过滤器是布隆过滤器或布谷鸟过滤器。
语句6、根据前述任一项语句所述的方法,其中每个相应标识符基于包含所述相应已花费事务输出的相应事务的相应标识符。
语句7、根据语句6所述的方法,其中每个相应标识符还基于所述相应事务内的所述相应已花费事务输出的相应输出索引。
语句8、根据前述任一项语句所述的方法,包括:
生成第二概率过滤器,其中所述第二概率过滤器包括所述发送实体可用的第二多个已花费区块链事务输出(second plurality of spent blockchain transactionoutputs)中的每一个的相应标识符;以及,
使所述第二概率过滤器对接收实体可用。
语句9、根据语句8所述的方法,其中生成所述第二概率过滤器包括更新所述第一概率过滤器,以包括所述第一多个已花费区块链事务输出中尚未包含的所述第二多个已花费区块链事务输出中的一个或多个的相应标识符。
语句10、根据前述任一项语句所述的方法,包括:
接收通知,所述通知表明所述接收实体已接收到区块链事务输出,所述第一概率过滤器或所述第二概率过滤器指示所述区块链事务输出是双重花费尝试;以及,
确定所述区块链事务输出是否存在于所述发送实体可用的所述第一多个已花费区块链事务输出或所述第二多个已花费区块链事务输出中。
语句11、根据语句10所述的方法,包括:如果确定所述区块链事务输出不存在于所述发送实体可用的所述第一多个已花费区块链事务输出或所述第二多个已花费区块链事务输出中,则告知所述接收实体所述区块链事务不是双重花费尝试。
语句12、根据语句10所述的方法,包括:如果确定所述区块链事务输出存在于所述发送实体可用的所述第一多个已花费区块链事务输出或所述第二多个已花费区块链事务输出中,则告知所述接收实体和/或一不同实体所述区块链事务是双重花费尝试。
语句13、根据前述任一项语句所述的方法,其中所述发送实体是所述区块链节点。
语句14、根据前述任一项语句所述的方法,其中所述接收实体包括轻量级区块链客户端应用程序。
语句15、根据语句1至14中任一项所述的方法,其中所述接收实体是一不同的区块链节点。
语句16、一种用于识别区块链事务输出的双重花费尝试的计算机实现的方法,其中所述方法由接收实体执行并且包括:
从发送实体获取第一概率过滤器,其中所述第一概率过滤器对所述发送实体可用的第一多个已花费区块链事务输出中的每一个的相应标识符进行编码;
获取一个或多个区块链事务输出的指示;以及,
基于所述第一概率过滤器中是否存在所述一个或多个区块链事务输出的相应标识符,来确定所述一个或多个区块链事务输出是否为双重花费尝试。
语句17、根据语句16所述的方法,其中获取所述一个或多个区块链事务输出的所述指示包括获取事务模板(template),所述事务模板包括对所述一个或多个区块链事务输出的相应引用。
语句18、根据语句16或17所述的方法,包括:
从所述发送实体获取第二概率过滤器,其中所述第二概率过滤器包括所述发送实体可用的第二多个已花费区块链事务输出中的每一个的相应标识符;
其中,所述确定所述一个或多个区块链事务输出是否为双重花费尝试是基于所述第二概率过滤器中是否存在所述一个或多个区块链事务输出的相应标识符。
语句19、根据语句16至18中任一项所述的方法,包括:
从一个或多个不同实体获取一个或多个附加概率过滤器;
其中,所述确定所述一个或多个区块链事务输出是否为双重花费尝试是基于所述一个或多个附加概率过滤器中的一些或全部中是否存在所述一个或多个区块链事务输出的相应标识符。
优选地,所述接收实体获取至少六个过滤器。例如,所述接收实体可以从区块链节点请求所述最后六个过滤器。为了提高安全性,所述接收实体可以从不同的发送实体请求这六个过滤器,因为这些过滤器可能是不同的过滤器。
语句20、根据语句16至19中任一项所述的方法,包括:向所述发送实体传输对所述第一概率过滤器和/或所述第二概率过滤器的请求。
语句21、根据语句17或其任何从属语句所述的方法,包括:
响应于确定所述一个或多个区块链事务输出不是双重花费尝试,向区块链网络的一个或多个区块链节点传输所述区块链事务。
语句22、根据语句16至20中任一项所述的方法,包括:
响应于确定所述一个或多个区块链事务输出是双重花费尝试,向所述发送实体传输通知,所述通知表示所述第一概率过滤器指示所述一个或多个区块链事务输出是双重花费尝试。
语句23、根据语句16至22中任一项所述的方法,其中所述接收实体包括轻量级区块链客户端。
语句24、根据语句16至23中任一项所述的方法,其中所述接收实体包括多个轻量级区块链客户端,并且其中所述获取所述一个或多个区块链事务的所述指示包括从所述多个轻量级客户端中的一个获取所述指示。
例如,本地服务器可以获取所述一个或多个概率过滤器并代表所述轻量级客户端执行检查。
语句25、根据语句16至22中任一项所述的方法,其中所述接收实体包括区块链节点。
语句26、一种计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或多个存储器单元;以及,
处理装置,所述处理装置包括一个或多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据语句1至25中任一项所述的方法。
语句27、一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在根据语句26所述的计算机设备上运行时,执行根据语句1至25中任一项所述的方法。
根据本文公开的另一方面,可以提供一种方法,所述方法包括所述发送实体和所述接收实体的动作。
根据本文公开的另一方面,可以提供一种系统,所述系统包括所述发送实体和所述接收实体的所述计算机设备。

Claims (27)

1.一种用于识别区块链事务输出的双重花费尝试的计算机实现的方法,其中所述方法由发送实体执行并且包括:
生成第一概率过滤器,其中所述第一概率过滤器对所述发送实体可用的第一多个已花费区块链事务输出中的每一个的相应标识符进行编码;以及
使所述第一概率过滤器对接收实体可用。
2.根据权利要求1所述的方法,其中所述第一多个已花费事务输出包括已花费事务输出集合,所述已花费事务输出集合已由区块链节点维护的未公布事务的有序集合中存在的相应事务花费,其中事务的所述有序集合中的每个事务已由所述区块链节点核实。
3.根据权利要求1或2所述的方法,其中所述第一多个已花费事务输出包括已由所述区块链的相应区块中存在的相应事务花费的相应事务输出集合。
4.根据权利要求3所述的方法,其中所述第一多个已花费事务输出包括多个相应的事务输出集合,其中每个事务输出集合已由所述区块链的多个区块中的相应一个中存在的相应事务花费。
5.根据前述任一项权利要求所述的方法,其中所述概率过滤器是布隆过滤器或布谷鸟过滤器。
6.根据前述任一项权利要求所述的方法,其中每个相应标识符基于包含所述相应已花费事务输出的相应事务的相应标识符。
7.根据权利要求6所述的方法,其中每个相应标识符还基于所述相应事务内的所述相应已花费事务输出的相应输出索引。
8.根据前述任一项权利要求所述的方法,包括:
生成第二概率过滤器,其中所述第二概率过滤器包括所述发送实体可用的第二多个已花费区块链事务输出中的每一个的相应标识符;以及
使所述第二概率过滤器对接收实体可用。
9.根据权利要求8所述的方法,其中生成所述第二概率过滤器包括更新所述第一概率过滤器,以包括尚未包含于所述第一多个已花费区块链事务输出中的所述第二多个已花费区块链事务输出中的一个或多个的相应标识符。
10.根据前述任一项权利要求所述的方法,包括:
接收通知,所述通知表明所述接收实体已接收到区块链事务输出,所述第一概率过滤器或所述第二概率过滤器指示所述区块链事务输出是双重花费尝试;以及
确定所述区块链事务输出是否存在于所述发送实体可用的所述第一多个已花费区块链事务输出或所述第二多个已花费区块链事务输出中。
11.根据权利要求10所述的方法,包括:如果确定所述区块链事务输出不存在于所述发送实体可用的所述第一多个已花费区块链事务输出或所述第二多个已花费区块链事务输出中,则通知所述接收实体所述区块链事务不是双重花费尝试。
12.根据权利要求10所述的方法,包括:如果确定所述区块链事务输出存在于所述发送实体可用的所述第一多个已花费区块链事务输出或所述第二多个已花费区块链事务输出中,则通知所述接收实体和/或不同实体所述区块链事务是双重花费尝试。
13.根据前述任一项权利要求所述的方法,其中所述发送实体是所述区块链节点。
14.根据前述任一项权利要求所述的方法,其中所述接收实体包括轻量级区块链客户端应用程序。
15.根据权利要求1至14中任一项所述的方法,其中所述接收实体是不同的区块链节点。
16.一种用于识别区块链事务输出的双重花费尝试的计算机实现的方法,其中所述方法由接收实体执行并且包括:
从发送实体获取第一概率过滤器,其中所述第一概率过滤器对所述发送实体可用的第一多个已花费区块链事务输出中的每一个的相应标识符进行编码;
获取一个或多个区块链事务输出的指示;以及
基于所述第一概率过滤器中是否存在所述一个或多个区块链事务输出的相应标识符,来确定所述一个或多个区块链事务输出是否为双重花费尝试。
17.根据权利要求16所述的方法,其中获取所述一个或多个区块链事务输出的所述指示包括获取事务模板,所述事务模板包括对所述一个或多个区块链事务输出的相应引用。
18.根据权利要求16或17所述的方法,包括:
从所述发送实体获取第二概率过滤器,其中所述第二概率过滤器包括所述发送实体可用的第二多个已花费区块链事务输出中的每一个的相应标识符;
其中,所述确定所述一个或多个区块链事务输出是否为双重花费尝试是基于所述第二概率过滤器中是否存在所述一个或多个区块链事务输出的相应标识符。
19.根据权利要求16至18中任一项所述的方法,包括:
从一个或多个不同实体获取一个或多个附加概率过滤器;
其中,所述确定所述一个或多个区块链事务输出是否为双重花费尝试是基于所述一个或多个附加概率过滤器中的一些或全部中是否存在所述一个或多个区块链事务输出的相应标识符。
20.根据权利要求16至19中任一项所述的方法,包括:向所述发送实体传输对所述第一概率过滤器和/或所述第二概率过滤器的请求。
21.根据权利要求17或其任何从属权利要求所述的方法,包括:
响应于确定所述一个或多个区块链事务输出不是双重花费尝试,向区块链网络的一个或多个区块链节点传输所述区块链事务。
22.根据权利要求16至20中任一项所述的方法,包括:
响应于确定所述一个或多个区块链事务输出是双重花费尝试,向所述发送实体传输所述第一概率过滤器指示所述一个或多个区块链事务输出是双重花费尝试的通知。
23.根据权利要求16至22中任一项所述的方法,其中所述接收实体包括轻量级区块链客户端。
24.根据权利要求16至23中任一项所述的方法,其中所述接收实体包括多个轻量级区块链客户端,并且其中所述获取所述一个或多个区块链事务的所述指示包括从所述多个轻量级客户端中的一个获取所述指示。
25.根据权利要求16至22中任一项所述的方法,其中所述接收实体包括区块链节点。
26.一种计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或多个存储器单元;以及
处理装置,所述处理装置包括一个或多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据权利要求1至25中任一项所述的方法。
27.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在计算机设备上运行时,执行根据权利要求1至25中任一项所述的方法。
CN202180037900.1A 2020-05-28 2021-04-23 区块链事务输出的概率成员资格测试 Pending CN115836314A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2007996.8A GB2595489A (en) 2020-05-28 2020-05-28 Probabilistic membership test for blockchain transaction outputs
GB2007996.8 2020-05-28
PCT/EP2021/060654 WO2021239345A1 (en) 2020-05-28 2021-04-23 Probabilistic membership test for blockchain transaction outputs

Publications (1)

Publication Number Publication Date
CN115836314A true CN115836314A (zh) 2023-03-21

Family

ID=71526352

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180037900.1A Pending CN115836314A (zh) 2020-05-28 2021-04-23 区块链事务输出的概率成员资格测试

Country Status (6)

Country Link
US (1) US20230196373A1 (zh)
EP (1) EP4121928A1 (zh)
JP (1) JP2023527030A (zh)
CN (1) CN115836314A (zh)
GB (1) GB2595489A (zh)
WO (1) WO2021239345A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019145925A (ja) * 2018-02-16 2019-08-29 株式会社bitFlyer ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノード
JP6467540B1 (ja) * 2018-03-10 2019-02-13 株式会社bitFlyer ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノード
CN111640012A (zh) * 2019-03-01 2020-09-08 中国银联股份有限公司 一种区块链交易追溯的方法及装置
CN110378697B (zh) * 2019-07-22 2023-03-31 南京信息工程大学 一种基于rsa累加器的区块链轻节点utxo交易验证方法及其装置
CN110704438B (zh) * 2019-09-26 2023-10-03 深圳前海微众银行股份有限公司 一种区块链中布隆过滤器的生成方法及装置

Also Published As

Publication number Publication date
WO2021239345A1 (en) 2021-12-02
GB2595489A (en) 2021-12-01
US20230196373A1 (en) 2023-06-22
GB202007996D0 (en) 2020-07-15
JP2023527030A (ja) 2023-06-26
EP4121928A1 (en) 2023-01-25

Similar Documents

Publication Publication Date Title
KR20210128455A (ko) 블록체인 네트워크를 통한 이전을 구현하는 컴퓨터 구현 시스템 및 방법
WO2020157708A2 (en) Point-to-point distributed decentralized system
US20230316272A1 (en) Divisible tokens
CN115917546A (zh) 生成区块链地址
CN117480758A (zh) 用于验证区块链上的通证的计算机实现的方法和系统
US20220393871A1 (en) Multifactor authentication using blockchain transactions
US20220309504A1 (en) Multi-criteria blockchain protocol
Suliyanti et al. Evaluation of hash rate-based double-spending based on proof-of-work blockchain
US20230162176A1 (en) Method for implementing a digital coin system using a blockchain
CN118044151A (zh) 传播锁定脚本
CN117751550A (zh) 分层共识
KR20240024113A (ko) 다중-레벨 블록체인
CN117280653A (zh) 多方区块链地址方案
CN115836314A (zh) 区块链事务输出的概率成员资格测试
Yu et al. Collusion attacks and fair time-locked deposits for fast-payment transactions in Bitcoin
US20240095692A1 (en) Computer implemented method and system
WO2024052047A1 (en) Blockchain-based token protocol
WO2024052052A1 (en) Blockchain-based token protocol
WO2024041866A1 (en) Blockchain transaction
GB2621405A (en) Attesting to knowledge of blockchain transaction outputs
GB2622360A (en) Submitting transactions to a blockchain network
WO2024068187A1 (en) Blockchain based read receipt
CN117280349A (zh) 多方区块链地址方案
CN117678191A (zh) 消息交换系统
CN117337436A (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