CN115668861A - 过滤区块链事务 - Google Patents
过滤区块链事务 Download PDFInfo
- Publication number
- CN115668861A CN115668861A CN202180037902.0A CN202180037902A CN115668861A CN 115668861 A CN115668861 A CN 115668861A CN 202180037902 A CN202180037902 A CN 202180037902A CN 115668861 A CN115668861 A CN 115668861A
- Authority
- CN
- China
- Prior art keywords
- transaction
- blockchain
- blockchain transaction
- blacklisted
- filter
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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/3239—Cryptographic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/36—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Accounting & Taxation (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Strategic Management (AREA)
- Finance (AREA)
- General Business, Economics & Management (AREA)
- Signal Processing (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
一种用于处理区块链事务的计算机实现的方法,其中所述方法由接收方执行并且包括:获取一个或多个概率过滤器,其中每个概率过滤器对以下各项中的一项进行编码:i)一组或多组列入白名单的数据项,或ii)一组或多组列入黑名单的数据项;获取区块链事务,其中所述获取的区块链事务与候选数据项相关联,所述候选数据项对应于:i)所述一组或多组列入白名单的数据项中的一个,或ii)所述一组或多组列入黑名单的数据项中的一个;以及,基于所述候选数据项是否存在于所述一个或多个概率过滤器中的至少一个中来确定是否处理所述获取的区块链事务。
Description
技术领域
本公开涉及一种用于处理区块链事务的方法。
背景技术
区块链是指一种分布式数据结构,其中在分布式对等(P2P)网络(以下称为“区块链网络”)中的多个节点中的每个节点处维护区块链的副本,并且广泛公开该副本。区块链包括一系列数据区块,其中每个区块包括一个或多个事务(transaction)。除所谓的“coinbase事务”外,每个事务都指向序列中的先前事务,该序列可以跨越一个或多个区块,直到一个或多个coinbase事务为止。coinbase事务将在下面讨论。提交给区块链网络的事务包括在新区块中。新区块的创建过程通常称为“挖掘”,该过程涉及多个节点中的每个节点争相执行“工作量证明”,即,基于等待被包括在区块链的新区块中的一组定义的有序且核实有效的未决事务的表示解决加密难题。应当注意的是,区块链可以在节点处被修剪,并且区块的发布可以通过仅发布区块头来实现。
区块链中的事务用于执行以下操作中的一个或多个:传送数字资产(即,一定数量的数字代币);对虚拟化分类账或注册表中的一组日记账分录进行排序;接收和处理时间戳条目和/或对索引指针按时间排序。也可利用区块链实现区块链上的分层附加功能。区块链协议可允许在事务中存储附加的用户数据或数据索引。能够存储在单个事务中的最大数据容量没有预先指定的限制,因此可以并入越来越复杂的数据。例如,这可用于在区块链中存储电子文档、音频或视频数据。
区块链网络的节点(通常称为“矿工”)执行分布式事务注册和验证过程,这将在下面详细描述。总之,在该过程中,节点核实事务并将这些事务插入到区块模板中,这些事务尝试为该区块模板标识有效的工作量证明解。一旦找到有效的解,新区块便会被传播到网络的其它节点,从而使得每个节点能够在区块链上记录新区块。为了将事务记录在区块链中,用户(例如,区块链客户端应用程序)将该事务发送到网络中的节点中的一个节点进行传播。接收该事务的节点可以争相寻找将核实有效的事务并入新区块的工作量证明解。每个节点被配置为执行相同的节点协议,该协议将包括用于确认事务有效的一个或多个条件。无效事务将不会传播或并入到区块中。假定事务已经核实有效,从而在区块链上被接受,则该事务(包括任何用户数据)将因此在区块链网络中的每个节点上作为不可改变的公共记录进行注册和索引。
成功解决工作量证明难题可创建最新区块的节点通常被奖励一个称为“coinbase事务”的新事务,该事务分发数字资产数额,即代币数量。无效事务的检测和拒绝是通过竞争节点的行动来执行的,这些竞争节点充当网络的代理并且通过激励报告和阻止不正当行为。信息的广泛发布使得用户可以连续地审计节点的性能。仅发布区块头使得参与者可以确保区块链具有持续完整性。
在“基于输出的”模型(有时称为基于UTXO的模型)中,给定事务的数据结构包括一个或多个输入和一个或多个输出。任何可花费输出包括指定数字资产数额的元素,该元素可从进行中的事务序列导出。可花费输出有时称为UTXO(“未花费事务输出”)。输出还可以包括锁定脚本,该锁定脚本指定输出的未来赎回条件。锁定脚本是限定核实和传送数字代币或资产所必需的条件的谓词。事务(除coinbase事务之外)的每个输入包括指向先前事务中的此类输出的指针(即引用),并且还可以包括解锁脚本,用于解锁指向输出的锁定脚本。因此,考虑一对事务,将其称为第一事务和第二事务(或“目标”事务)。第一事务包括指定数字资产数额的至少一个输出,并且包括定义解锁该输出的一个或多个条件的锁定脚本。第二目标事务包括至少一个输入和解锁脚本,该至少一个输入包括指向第一事务的输出的指针;该解锁脚本用于解锁第一事务的输出。
在此类模型中,当第二目标事务被发送到区块链网络以在区块链中传播和记录时,在每个节点处应用的有效性条件之一将是解锁脚本满足在第一事务的锁定脚本中定义的一个或多个条件中的所有条件。另一条件将是第一事务的输出尚未被另一早期有效事务赎回。根据这些条件中的任何一个条件发现目标事务无效的任何节点都不会传播该事务(作为有效事务,但可能注册无效事务),也不将该事务包括在要记录在区块链中的新区块中。
另一种事务模型是基于账户的模型。在这种情况下,每个事务均不通过参考过去事务序列中先前事务的UTXO来定义转移的数额,而是通过参考绝对账户余额进行定义。所有账户的当前状态由节点单独存储到区块链中,并不断更新。
发明内容
跟踪和扣押区块链上的数字资产(例如,通证token)可能是一个复杂的过程。过去,犯罪分子利用这种复杂性通过所述区块链进行非法活动,例如,进行非法结算。一些区块链网络致力于不断减少所述区块链被用于进行犯罪活动的情况,提高透明度并保护用户和企业。为了实现这些目标,需识别和禁止恶意用户并扣押他们的数字资产。
因此,需要能够识别和禁止或防止已知或怀疑与犯罪分子相关联、参与非法活动或包含非法内容的事务。然后,所述网络的节点可以冻结这些事务,即阻止对这些事务的输出进行分配(例如,花费),从而使这些输出对当前所有者毫无意义。所述网络的节点也可以拒绝提供这些事务,例如拒绝将所述事务的部分或全部提供给请求实体。
同样需要识别已知为“安全”事务的事务,例如允许将事务输出分配给可信实体。
更一般地,需要能够将某些事务或事务内容列入白名单或黑名单,或防止或允许将事务输出分配给特定实体。
根据本文公开的一个方面,提供一种用于处理区块链事务的计算机实现的方法,其中所述方法由接收方执行并且包括:获取一个或多个概率过滤器,其中每个概率过滤器对以下各项中的一项进行编码:i)一组或多组列入白名单的数据项,或ii)一组或多组列入黑名单的数据项;获取区块链事务,其中获取到的区块链事务与候选数据项相关联,所述候选数据项对应于:i)所述一组或多组列入白名单的数据项中的一个,或ii)所述一组或多组列入黑名单的数据项中的一个;以及,基于所述候选数据项是否存在于所述一个或多个概率过滤器中的至少一个中来确定是否处理所述获取到的区块链事务。
本发明使得第一方(例如,用户或区块链节点)能够根据概率成员资格测试来处理事务。所述概率过滤器包含一组列入白名单(即,允许)的项目或一组列入黑名单(即,禁止)的项目。概率过滤器(例如,布隆过滤器或布谷鸟过滤器)是用于测试元素是否为组的成员的概率数据结构。概率过滤器的一个特征是可能存在假阳(误报)false positive,但不存在假阴(漏报)false negative。也就是说,可以使用概率过滤器来确定元素是否肯定不在组中,或者元素是否可能在组中。通过获取一个或多个概率过滤器,所述第一方可以检查与所述事务相关联的数据项是绝对不允许的(对于列入白名单的项目),还是绝对不被禁止的(对于列入黑名单的项目)。
例如,所述列入白名单的项目或所述列入黑名单的项目可以分别是允许的或被禁止的目的地址。因此,所述第一方(例如,操作客户端应用程序的用户)可以根据目的地址被视为允许的还是被禁止的目的地址,来选择分配一定数量的数字资产。相反,所述项目可以是允许的或被禁止的事务标识符。在这些示例中,所述第一方(例如,区块链节点)可以根据所述对应的事务标识符被视为允许的还是被禁止的事务标识符,来选择是否提供事务。下面提供了其他示例。
所述列入白名单的项目可以是第二方(例如,可信机构)出于一个或多个原因视为允许的项目。类似地,所述列入黑名单的项目可以是所述第二方出于一个或多个原因(例如,由于与犯罪活动相关联)视为被禁止的项目。
本发明通过防止用户和/或节点意外将其自身与非法内容等关联来提高这些用户和/或节点的安全性。例如,区块链节点可以执行成员资格测试,以检查所述节点未存储或传播包含非法材料的事务。
国家或国际法院可以提供概率过滤器(例如,包括对用作犯罪或欺诈活动一部分的输出的引用)。这使得这些法院能够冻结这些输出,并在其管辖范围内阻止非法链上内容。一方面,犯罪分子因此失去了开展非法商品事务和接收欺诈事务的动机,因为他们将无法分配这些事务。另一方面,合法实体(例如,用户和企业)之间的事务受到激励,因为他们可以相信导致向这些实体分配UTXO或从这些实体分配UTXO的事务链的合法性。
应当注意的是,除非出于法律原因,否则还需要防止提供事务。例如,用户的个人数据可能已存储在所述区块链上,无论是否获取他们的许可。该用户可能希望防止他们的数据被发送给请求实体。
根据本文公开的另一方面,提供一种用于控制对区块链事务的部分或全部的访问的计算机实现的方法,其中所述方法由发送方执行并且包括:生成一个或多个概率过滤器,其中每个概率过滤器对以下各项中的一项进行编码:i)一组或多组列入白名单的数据项,或ii)一组或多组列入黑名单的数据项;以及,将所述一个或多个概率过滤器发送至接收方。
附图说明
为了帮助理解本公开的实施例并示出如何实施此类实施例,现将仅通过举例的方式参考附图进行说明,其中:
图1是一种用于实现区块链的系统的示意性框图;
图2示意性地示出了可记录在区块链中的事务的一些示例;
图3A示出了客户端应用程序的示意性框图;
图3B示出了可由图3A的客户端应用程序表示的示例性用户界面的示意性模型;
图4示出了用于处理事务的一些节点软件的示意性框图;
图5示出了用于实现本发明实施例的系统的示意性框图;
图6a和图6b分别示意性地表示黑名单和白名单的成员资格测试;以及
图7示出了根据本发明实施例的示例性方法。
具体实施方式
示例性系统概述
图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交换某些信息或数据等,则这不一定意味着所有这些数据都必须通过完全相同的链路或甚至相同类型的网络发送。
客户端软件
图3A示出了用于实现本公开方案的实施例的客户端应用程序105的示例性实施方式。客户端应用程序105包括事务引擎401和用户界面(UI)层402。根据上文讨论的方案以及稍后将进一步详细讨论的内容,事务引擎401被配置为实现客户端105的基础事务相关功能,诸如制定事务152,通过侧信道107接收和/或发送事务和/或其他数据,和/或发送事务至一个或更多个节点104以通过区块链网络106传播。
该UI层402被配置为通过相应用户的计算机设备102的用户输入/输出(I/O)方式呈现用户界面,包括通过设备102的用户输出方式向相应用户103输出信息,和通过设备102的用户输入方式接收来自相应用户103的输入。例如,用户输出方式可包括提供视觉输出的一个或显示多个屏(触摸或非触摸屏)、提供音频输出的一个或更多个扬声器、和/或提供触觉输出的一个或更多个触觉输出设备等。用户输入方式可包括例如一个或更多个触摸屏的输入阵列(可与用于输出方式的那个/那些相同或不同);一个或更多个基于光标的设备,诸如鼠标、轨迹板或轨迹球;一个或更多个麦克风和语音或声音识别算法,用于接收语音或声音输入;一个或更多个基于手势的输入设备,用于接收手动或身体手势形式的输入;或者一个或更多个机械按钮、开关或控制杆等。
注:虽然本文中的各种功能可以被描述为集成到同一客户端应用程序105中,但这并不一定构成限制,相反,它们可以在两个或更多个不同应用程序组成的一套程序中实现,例如一个应用程序作为另一个应用程序的插件或经由API(应用程序编程接口)进行接口。比如,事务引擎401的功能可以在单独的应用程序中实现,而不是在UI层402中实现,或者诸如事务引擎401的给定模块的功能可以在多个应用程序之间分割。同时,也不排除部分或全部描述的功能可以在比如操作系统层实现。在本文任何位置引用单个或给定应用程序105或诸如此类的情况下,应当理解的是这只是作为示例,并且更通俗地说,所描述的功能可以在任何形式的软件中实现。
图3B给出了用户界面(UI)500的示例的模型,该UI可由客户端应用程序105a的UI层402在爱丽丝的设备102a上呈现。应当理解的是,类似的UI可以由客户端105b在鲍勃的设备102b或任何其他方的设备上呈现。
通过图示的方式,图3B从爱丽丝的角度示出了UI 500。该UI 500可包括一个或更多个UI元素501、502、503,该一个或更多个UI元素通过用户输出方式呈现为不同的UI元素。
例如,UI元素可包括一个或更多个用户可选择的元素501,这些元素可以是屏幕上的不同按钮、菜单中的不同选项或者诸如此类。用户输入方式被设置成使用户103(在这种情况下为爱丽丝103a)能够选择或以其它方式操作其中一个选项,诸如通过点击或触摸屏幕上的UI元素,或者说出所需选项的名称(注:本文使用的“手动”一词仅用于与自动进行对比,而不一定限于用手执行操作)。这些选项使得用户(爱丽丝)能够添加项目(例如区块链地址)至概率过滤器。
此外/或者,UI元素可包括一个或更多个数据输入字段502,用户通过该字段能够添加项目(例如区块链地址)至概率过滤器。这些数据输入字段通过用户输出方式呈现,例如屏幕上,并且数据可通过用户输入方式输入到字段中,例如键盘或触摸屏。或者,数据可以例如基于语音识别口头地接收。
此外/或者,UI元素可包括向用户输出信息的一个或更多个信息元素503。例如,这/这些可以在屏幕上呈现或可听见。
应当理解的是,呈现各种UI元素、选择选项和输入数据的特定方式并不重要。这些UI元素的功能稍后将进行更详细地讨论。还应当理解的是,图3中示出的UI 500只是一个图示模型,在实践中,它可包括一个或更多个进一步的UI元素,为了简洁起见,未对其进行说明。
节点软件
图4示出了在基于UTXO或基于输出的模型的示例中,在网络106的每个区块链节点104上运行的节点软件450的示例。应当注意的是,另一实体可以运行节点软件450,而不被分类为网络106上的节点104,即,不执行节点104所需的动作。节点软件450可以包含但不限于协议引擎451、脚本引擎452、堆栈453、应用级决策引擎454以及一个或多个区块链相关功能模块455的集合。每个节点104可以运行节点软件,该节点软件包含但不限于以下所有三个:共识模块455C(例如,工作量证明)、传播模块455P和存储模块455S(例如,数据库)。协议引擎401通常被配置为识别事务152的不同字段,并根据节点协议处理此类字段。当接收到具有指向另一先前事务152i(Txm-1)的输出(例如,UTXO)的输入的事务152j(Txj)时,协议引擎451标识Txj中的解锁脚本并将其传递给脚本引擎452。协议引擎451还基于Txj的输入中的指针来标识和检索Txi。Txi可以在区块链150上发布,在这种情况下,协议引擎可以从存储在节点104处的区块链150的区块151的副本中检索Txi。或者,Txi还可以在区块链150上发布。在这种情况下,协议引擎451可以从节点104维护的未发布有序事务集154中检索Txi。无论采用哪种方式,脚本引擎451都会标识Txi的引用输出中的锁定脚本,并将其传递给脚本引擎452。
因此,脚本引擎452具有Txi的锁定脚本和来自Txj的相应输入的解锁脚本。例如,在图2中示出了事务标记的Tx0和Tx1,但是同样的事务也可以应用于任何事务对。如前所述,脚本引擎452一起运行两个脚本,这将包括根据所使用的基于堆栈的脚本语言(例如脚本)将数据放置到堆栈453上和从堆栈453检索数据。
通过同时运行脚本,脚本引擎452确定解锁脚本是否满足锁定脚本中定义的一个或多个标准,即解锁脚本是否对包括锁定脚本的输出进行解锁?脚本引擎452将该确定的结果返回给协议引擎451。如果脚本引擎452确定解锁脚本确实满足在相应的锁定脚本中指定的一个或多个标准,则返回结果“TRUE”。否则,返回结果“FALSE”。
在基于输出的模型中,来自脚本引擎452的结果“TRUE”是事务有效性的条件之一。通常,还必须满足由协议引擎451评估的一个或多个进一步协议级条件;例如,Txj的输入中所指定的数字资产的总数额不超过其输出中指向的总数额,并且Txi的指向输出尚未被另一有效事务花费。协议引擎451评估来自脚本引擎452的结果以及一个或多个协议级条件,并且只有当它们都为TRUE时,协议引擎才核实事务Txj有效。协议引擎451将事务是否有效的指示输出到应用级决策引擎454。只有在Txj确实有效的条件下,决策引擎454才可以选择同时控制共识模块455C和传播模块455P,以执行其就Txj.的相应区块链相关功能。这包括共识模块455C,向节点的相应有序事务集154添加Txj,用于并入区块151中;以及传播模块455P,将Txj转发到网络106中的另一个区块链节点104。可选地,在实施例中,应用级决策引擎454可以在触发这些函数中的一个或两个函数之前应用一个或多个附加条件。例如,决策引擎可以只选择在事务有效且预留足够事务费用的条件下发布事务。
此外,还应当注意的是,在本文中,术语“TRUE”和“FALSE”不一定限于返回仅以单个二进制数(位)形式表示的结果,尽管这确实是一种可能的实现方式。更通俗地说,“TRUE”可以指指示成功或肯定结果的任何状态,而“FALSE”可以指指示不成功或不肯定结果的任何状态。例如,在基于账户的模型中,可以对签名的隐式协议级核实和智能合约的附加肯定输出的组合来指示结果为“TRUE”(如果两个单独的结果均为TRUE,则认为总体结果为TRUE)。
预备知识
概率过滤器是用于测试元素是否为集合的一部分的内存高效数据结构。永远不会出现假阴,这意味着如果将一项添加到概率过滤器中,该过滤器将始终能够辨别是否再次呈现同一项。然而,可能会出现假阳(false positive),假阳概率取决于多个因素(例如,概率过滤器的尺寸)。换言之,过滤器的空间效率与假阳概率之间存在权衡。
使用最广泛的两种概率过滤器是布隆过滤器和布谷鸟过滤器。这两种过滤器经过初始化处理,以提供目标假阳概率(fpp)和预期元素数量。这两种过滤器之间的一个根本区别在于,布隆过滤器可以容纳任意数量的元素,但是当插入的元素数量高于预期元素数量时,该过滤器的假阳概率会提高(高达100%)。相反,布谷鸟过滤器会保持目标假阳率,但不能保证可在达到预期数量之后插入新元素(插入可能被拒绝)。也就是说,过滤器的最大尺寸在创建后并不灵活;为了容纳超出最大数量的其他元素,必须创建新的过滤器。这两种过滤器之间的另一个区别在于,布谷鸟过滤器允许删除先前插入的元素,而在布隆过滤器中无法实现这一点。应当注意的是,布隆过滤器和布谷鸟过滤器只是两种概率过滤器,本发明并不仅限于这两个示例。
布谷鸟过滤器的时间效率更高,在O(1)中执行插入、删除和查找,其中符号O()表示算法的复杂度。O(1)表示恒定复杂度和快速算法,而O(k)表示随k增加的复杂度和较慢算法。布隆过滤器执行相同的操作(但不支持删除),在O(k)中,k是布隆过滤器的哈希函数的数量。
过滤区块链事务
本发明能够有效地将区块链事务(例如,与犯罪活动相关联的事务)列入黑名单,或者反过来,将区块链事务列入白名单。本发明不一定限于将事务全部列入黑名单或白名单,例如可以过滤事务的特定输出、组成部分或内容。本文中使用的黑名单是一种可过滤明确提及的元素(例如,区块链地址)、阻止这些元素或者阻止某人或某物访问这些元素的访问控制机制。与黑名单相反的是白名单,这是一种允许用户仅访问指定元素的访问控制机制。
本文中所公开的区块链事务的过滤涉及创建概率过滤器。概率过滤器用于对允许的数据项(如果过滤器用于列入白名单)进行编码或对禁止的数据项(如果过滤器用于列入黑名单)进行编码。本文中使用的术语“数据项”是指与区块链事务相关联的任何项。例如,数据项可以是目的地址(例如,公钥或公钥哈希)、事务标识符、输出、输出标识符(例如,基于事务标识符和输出索引)、通证、包含在事务中或适于包含在事务中的内容等。
可以列入白名单或黑名单的数据项列表可能较大。因此,为了提供轻量级存储和传输(尤其是对于轻量级钱包),使用概率过滤器对这些列表进行压缩,实现高达94%的压缩并提供快速查找。过滤器还可提高隐私保护,因为它们对数据项进行编码(即,表示)而不是存储实际数据项。
图5中示出了用于实现本发明实施例的示例性系统500。系统500包括接收方501和发送方502。该系统可以包括多个不同的接收方501(未示出)和/或多个不同的发送方502(也未示出)。该系统还可以包括一个或多个第三方503。本文中使用的术语“发送方”502用于指代被配置为生成概率过滤器并将其传输给一个或多个接收方502的一方。类似地,术语“接收方”502用于指代被配置为接收概率过滤器以在该过滤器内检查与区块链事务相关联的一个或多个候选数据项的成员资格的一方。下面将讨论第三方503的角色。
每个接收方501、发送方502和第三方503操作相应的计算机设备(未示出)。每个接收方501、发送方502和第三方503的相应计算机设备包括相应的处理装置,该处理装置包括一个或多个处理器,例如一个或多个CPU、GPU、其他加速器处理器、特定应用程序处理器和/或FPGA。接收方501、发送方502和第三方503的相应计算机设备还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。该存储器可以包括一个或多个存储器单元,其采用一个或多个存储器介质,例如诸如硬盘等磁介质、诸如SSD、闪存或EEPROM等电子媒介和/或诸如光盘驱动器等光学介质。相应计算机设备上的存储器存储软件,其包括被设置为在处理装置上运行的至少一个客户端应用程序的相应实例。应当理解的是,在本文中归因于给定方的任何动作均可通过在相应计算机设备的处理装置上运行的软件执行。每个接收方501、发送方502和第三方503的相应计算机设备可以包括至少一个用户终端,例如台式电脑或笔记本电脑、平板电脑、智能手机或诸如智能手表等可穿戴设备。给定方的计算机设备还可以包括一个或多个其他网络资源,诸如通过用户终端访问的云计算资源。
在一些示例中,接收方501可以包括操作上述客户端应用程序105的实例的用户103(例如,爱丽丝103a或鲍勃103b)。在其他示例中,接收方501可以包括或以其他方式操作区块链节点104。
在一些示例中,发送方502可以包括操作上述客户端应用程序105的实例的用户103(例如,爱丽丝103a或鲍勃103b)。在其他示例中,发送方501可以包括或以其他方式操作区块链节点104。在其他示例中,发送方501可以是可信第三方,例如国家或国际法院、认证中心、政府部门、国家或国际警察部队等法律机构。
应当注意的是,虽然图5中单独示出,但是接收方501和发送方802实际上可以是同一实体。也就是说,接收方501可以生成概率过滤器。
在一些示例中,第三方501可以包括操作客户端应用程序105的实例的用户103(例如,爱丽丝103a或鲍勃103b)或区块链节点104。
发送方502被配置为生成概率过滤器(例如,布隆过滤器或布谷鸟过滤器)。概率过滤器对一组列入白名单的数据项或一组列入黑名单的数据项进行编码。在本文中,“组set”用于指代同一类型(即,同一类别)的一个或多个数据项。例如,该组数据项可以是一组事务标识符。
在一些示例中,概率过滤器可以对多组(即,多个不同类别的)数据项进行编码。例如,第一组数据项可以是事务标识符集合,第二组数据项可以是通证集合。下面将讨论特定类型的数据项。
发送方502可以生成多个概率过滤器。多个过滤器中的一个、一些或全部可以对多组(即,不同类型的)数据项进行编码。多个过滤器中的一个、一些或全部可以对单组(即,单一类型的)数据项进行编码。
发送方502可以更新先前生成的一个或多个概率过滤器以包括附加数据项。例如,当新数据项可用时,发送方502可以周期性地(例如,以时间为单位,或按区块151)或动态地更新一个或多个过滤器。
发送方502被配置为向接收方501(以及一个或多个其他接收方501)传输一个或多个概率过滤器。发送方502可以一起或单独传输所有过滤器。可以定期(例如,在更新时)传输一个或多个过滤器。
在一些实施例中,至少一个概率过滤器可以对一组区块链地址进行编码。例如,地址可以是公钥或公钥哈希(即,公钥的哈希或双重哈希)。该组区块链地址可以是一组列入白名单的地址。或者,该组区块链地址可以是一组列入黑名单的地址。
附加地或替代地,至少一个概率过滤器可以对一组区块链事务输出(UTXO)进行编码,或更确切地说,对UTXO的相应标识符进行编码。例如,可以根据包含相应UTXO的事务的相应事务标识符来识别该UTXO。还可以根据相应事务内相应UTXO的输出索引来识别该UTXO。例如,可以通过级联事务标识符和输出索引来识别UTXO。该组区块链事务输出可以是一组列入白名单的区块链事务输出。或者,该组区块链事务输出可以是一组列入黑名单的区块链事务输出。
在一些实施例中,至少一个概率过滤器可以对一组区块链事务标识符(TxID)进行编码。通过对整个事务应用哈希函数来生成TxID。该组TxID可以是一组列入白名单的TxID。或者,该组TxID可以是一组列入黑名单的TxID。
在附加或替代实施例中,至少一个概率过滤器可以对一组区块头进行编码。通过对该区块内的一组事务应用哈希函数来生成区块头。该组区块头可以是一组列入白名单的区块头。或者,该组区块头可以是一组列入黑名单的区块头。
附加地或替代地,至少一个概率过滤器可以对一组内容项进行编码。例如,内容项可以包括以下各项中的一项或多项:音频内容、图像内容、视频内容、文档等。该组内容项可以只包括一种类型的内容,也可以包括多种不同类型的内容。应当理解的是,对过滤器中的内容项(和一般的数据项)进行编码意味着包括内容项的表示(例如,哈希),而不是内容项本身。一些数据项(例如,TxID)已经是哈希,因此不需要再次进行哈希处理,尽管其并未排除在外也是如此。内容项可以包括所发布的区块链事务中包含的内容。附加地或替代地,内容项可以包括所发布的区块链事务中未包含的内容。该组内容项可以是一组列入白名单的内容项。或者,该组内容项可以是一组列入黑名单的内容项。
在一些实施例中,至少一个概率过滤器可以对一组通证或转移通证所有权的事务进行编码。例如,发送方可以是发行或以其他方式控制通证的通证发行者(或机构)。通证是托管在现有区块链上的可编程数字资产,该可编程数字资产与该区块链的原生数字资产不同。通证是区块链上的条目(例如,包含在事务的输出中),其充当特定资产(例如,票据、优惠券、忠诚度积分、赊购卡等)的所有权的数字记录。该组通证可以是一组列入白名单的通证。或者,该组内容项可以是一组列入黑名单的通证。由于存在本机可信机构(通证发行者),因此将通证列入黑名单或白名单很容易实现,因为只有一个机构。通证发行者可以根据定制公司规则和准则维护和发布过滤器(与法院等发布的更严格过滤器相比)。
接收方501被配置为从发送方502处获取至少一个概率过滤器。在一些示例中,例如,接收方501从同一发送方502或从多个不同的发送方502处获取多个概率过滤器。接收方501可以直接从发送方501处或以其他方式获取一个或多个过滤器。
接收方501还被配置为获取区块链事务。获取区块链事务可以包括获取区块链事务的副本或对区块链事务的引用,例如该事务的事务标识符(TxID)。所获取的区块链事务可以是已在区块151中发布的事务。或者,区块链事务可以是尚未发布的事务。例如,区块链事务可以在节点104处维护的一组有序的待处理事务154中,或者区块链事务可以是事务模板,即尚未提交给区块链网络106的事务。区块链模板可能是不完整的,例如缺失一个或多个输入和/或输出,和/或缺失一个或多个签名。
所获取的区块链事务与候选数据项相关联。候选数据项可以是区块链事务的组成部分。也就是说,区块链事务可以包括候选数据项。候选数据项可以是区块链事务的函数。也就是说,可以根据候选数据项(例如,事务的TxID)来生成候选数据项。候选数据项可以由事务引用。例如,事务可以包括对候选数据项的引用。候选数据项的示例如下所示。
获取一个或多个概率过滤器和区块链事务(其顺序无关紧要)之后,接收方501根据候选数据项是否存在于概率过滤器中的一个、一些或全部中来确定是否处理区块链事务。也就是说,接收方501对候选数据项执行成员资格测试。
如果接收方501操作区块链客户端应用程序105,则处理区块链事务可以包括使用与接收方501相关联的签名(例如,使用接收方501拥有的私钥)来签署区块链事务。附加地或替代地,处理区块链事务可以包括将(已签署)事务传输给一个或多个第三方503或区块链网络106。
如果接收方501操作区块链节点104,则处理区块链事务可以包括将事务发布在区块151中和/或将事务传播到其他节点104。或者,例如,响应于对事务的请求,处理区块链事务可以包括将事务传输给一个或多个第三方503。作为另一个选项,处理区块链事务可以包括发布或传输事务的一些但并非全部。例如,可以修剪(例如,混淆)事务的一部分。
候选数据项可以是区块链地址。区块链地址对应于(即,映射到)事务的输出。更具体地,区块链地址映射到事务输出的锁定脚本。例如,如果输出是支付到公钥哈希(P2PKH)输出,则区块链地址可以是公钥或公钥哈希。
候选区块链地址可以是映射到所获取的区块链事务的输出的地址。如果由所获取的概率过滤器编码的一组列入白名单的数据项包括一组列入白名单的区块链地址,则接收方501只有在候选区块链地址是列入白名单的地址中的一个的情况下才可以处理所获取的事务。如果由所获取的概率过滤器编码的一组列入黑名单的数据项包括一组列入黑名单的区块链地址,则接收方501只有在候选区块链地址不是列入黑名单的地址中的一个的情况下才可以处理所获取的事务。在本文中,例如,处理事务可以包括签署事务,和/或将事务传输给第三方(例如,用户103或节点104),和/或将事务发布在区块151中。应当理解的是,根据接收方501的角色,例如接收方501是用户103还是节点104(如果接收方是节点104),可以使用不同的选项来处理事务。作为特定示例,如果接收方是区块链节点104,则处理事务可以包括优先处理事务以包含在区块151中,即优先于一组有序的事务154中的一个或多个其他事务。
候选数据项可以是未花费事务输出(UTXO)。也就是说,所获取的区块链事务可以引用先前事务的UTXO(例如,先前事务是已发布的事务)。先前事务的UTXO通常根据先前事务的事务标识符(TxID)和先前事务的一组输出中的输出的输出(或输出点)索引来引用。
如果由所获取的概率过滤器编码的一组列入白名单的数据项包括一组列入白名单的UTXO,则接收方501只有在候选UTXO是列入白名单的UTXO中的一个的情况下才可以处理所获取的事务。如果由所获取的概率过滤器编码的一组列入黑名单的数据项包括一组列入黑名单的UTXO,则接收方501只有在候选UTXO不是列入黑名单的地址中的一个的情况下才可以处理所获取的事务。在本文中,例如,处理事务可以包括签署事务,和/或将事务传输给第三方(例如,用户103或节点104),和/或将事务发布在区块151中(如果接收方是节点104)。如果接收方是区块链节点104,则处理事务可以包括优先处理事务以包含在区块151中,即优先于一组有序的待处理事务154中的一个或多个其他事务。
候选数据项可以是事务标识符。也就是说,所获取的区块链事务可以包括事务标识符。通过将事务数据(即,输入和输出)输入到哈希函数中来生成事务标识符(TxID)。哈希函数可以是SHA-256函数,并且有时应用两次。
如果由所获取的概率过滤器编码的一组列入白名单的数据项包括一组事务标识符,则接收方501只有在候选事务标识符是列入白名单的事务标识符中的一个的情况下才可以处理所获取的事务。如果由所获取的概率过滤器编码的一组列入黑名单的数据项包括一组列入黑名单的事务标识符,则接收方501只有在候选事务标识符不是列入黑名单的事务标识符中的一个的情况下才可以处理所获取的事务。处理所获取的事务可以包括将事务提供给第三方503,例如将事务直接传输给第三方503或以其他方式发布事务。
候选数据项可以是内容项。例如,内容项可以是图像、音频文件、文档、视频文件、文本等。内容项可以与所获取的事务相关联,因为所获取的事务(可能已发布也可能尚未发布在区块链150上)包括该内容项。在其他示例中,内容项可能尚未包含在事务中,但可能适于包含在事务中。在一些示例中,内容项可以是通证。
如果由所获取的概率过滤器编码的一组列入白名单的数据项包括一组内容项,则接收方501只有在候选内容项是列入白名单的内容项中的一个的情况下才可以处理所获取的事务。如果由所获取的概率过滤器编码的一组列入黑名单的数据项包括一组列入黑名单的内容项,则接收方501只有在候选内容项不是列入黑名单的内容项中的一个的情况下才可以处理所获取的事务。处理所获取的事务可以包括将事务提供给第三方503,例如将事务直接传输给第三方503或以其他方式发布事务。在一些示例中,即使内容项被列入黑名单,接收方501也可以处理事务。在这些示例中,例如,接收方501可以通过删除内容项或对其进行混淆处理(例如,对内容项进行哈希处理)来将事务提供给第三方503而不提供内容项。
图7示出了根据本发明的一些实施例的由接收方501实现的示例性方法700。应当理解的是,方法700的一些步骤是可选的,并且一些步骤可能未示出。在步骤701中,获取概率过滤器(例如,从发送方502处接收)。在步骤702中,获取区块链事务(例如,从用户103处接收)。在步骤703中,执行成员资格测试,即检查候选数据项是否记录在过滤器中。在步骤704中,根据成员资格测试的结果来处理事务。
示例性用例
安全钱包应用程序
钱包应用程序(即,区块链客户端应用程序)可以利用本发明来提高安全性。钱包应用程序在下文中称为“安全钱包”,其增强了安全性,以支持用户和其他实体。安全钱包应用程序是区块链应用程序,其中通过防止开展非法或未经批准的钱包事务来保护数字资产的分配。可以设计两种主要类型的安全钱包:黑名单安全钱包和白名单安全钱包。黑名单安全钱包允许将数字资产分配给所有地址,但插入特定禁用地址列表(称为黑名单)的地址除外。相反,白名单安全钱包只允许将数字资产分配给预先批准的地址列表(称为白名单)。随着黑名单或白名单中包含的地址数量增加,这些列表(由于其大小)变得不再切实可行,无法在资源(例如,移动应用程序)有限的设备中传输和存储。此外,从计算角度来看,在列表中搜索不仅速度较慢,而且还会暴露地址,从而导致隐私问题。本发明通过在概率过滤器中存储(即,表示)地址来克服这些问题,从计算和存储角度来看,概率过滤器都是非常高效的结构。由于概率过滤器是轻量级过滤器并且可以快速地传输到轻量级节点,因此可以提供多个过滤器(例如,由不同机构创建)。
黑名单可以由国家机构提供和执行。因此,概率过滤器可能取决于管辖权,从而使国家法院遵守内部条例(例如,禁止非法材料)。相反,白名单可以由公司创建以提供特定服务并增强安全性(例如,允许数字资产仅在公司钱包之间转移)。
概率过滤器的另一个优点在于,不会显式地存储和传输地址(只有创建过滤器的发送方502知道地址)。当涉及隐私时,这个方面是有益的。例如,机构可能有兴趣阻止非法资金,但不明确披露资金数额或确切地址。
根据具体应用(例如,隐私与准确性,需要删除元素),可以在安全钱包中实现布隆过滤器或布谷鸟过滤器。
黑名单安全钱包可以用于禁止与欺诈、非法内容或犯罪活动相关联的地址。可信机构502可以创建记录所有列入黑名单的地址的概率过滤器。然后,将过滤器传输到所有安全钱包应用程序501。然后,这些钱包应用程序在签署事务之前对地址进行测试:如果地址被列入黑名单,则事务不会被签署,并且转账会被拒绝。图6a示意性地示出了这一点。
由于概率过滤器永远不会出现假阴,因此如果元素不在过滤器中,则始终可以被视为是安全的。另一方面,可能需要重新检查与过滤器匹配的元素以排除假阳。这意味着实现概率黑名单的钱包应用程序可能需要快速检查所有传出事务(例如,使用过滤器)。较小比例的事务将需要开展进一步的慢速检查(例如,通过查询权威数据库),以检测地址实际上是否被列入黑名单或是否为假阳。
当钱包应用程序应该仅签署将数字资产分配给预先批准的地址的事务时,可以使用白名单安全钱包。白名单的可能应用的一个示例是商业钱包应用程序,其可能仅被允许向提供商或其他公司钱包应用程序发送数字资产。这可以防止欺诈和键入错误。类似地,游戏钱包应用程序可以设置白名单过滤器,以仅将事务发送到与同一游戏相关的地址。可以创建白名单过滤器,用于记录特定服务或应用程序所需的所有地址。只有当成员资格测试为肯定(阳性)结果时,事务才会完成。图6b示意性地示出了这一点。
由于概率过滤器会出现假阳,因此在极少数情况下,未插入白名单的地址可能会通过成员资格测试。然而,意外(例如,地址中的打字错误)或故意(例如,出于欺诈目的)生成通过成员资格测试的地址的概率接近于0。
安全区块链节点
本发明也可以由节点104使用。防止欺诈和扣押非法资金的有效方法是防止将相关数字资产分配给其他用户。黑名单安全节点是实现黑名单技术的节点104。与黑名单安全钱包一样,黑名单安全节点也可实现概率过滤器,以禁止与特定地址相关联的事务。可以对传入事务应用过滤器:当节点104接收黑名单中的事务时,将这些事务标记为无效且不予处理。如果大多数节点104同意黑名单并将来自这些钱包的事务视为无效,则在其余节点104希望其新的区块151被网络106的大部分接受的情况下,迫使它们丢弃这些事务。为了防止审查,黑名单过滤器最好由国家或国际机构提供,并经法院批准。
白名单安全节点可以用于过滤所有传入事务,仅接受来自已知地址的事务。当节点希望优先处理或仅传播从特定钱包应用程序接收的事务时,将传入事务列入白名单可能十分有用。例如,节点104可以决定出售优质服务(例如,优先确认事务、免费事务等)。对时间敏感的游戏和投注应用程序还可以设置节点104,该节点仅接收信息并向其客户提供信息。与黑名单安全节点相比,白名单安全节点不一定会使不在白名单中的事务失效。相反,当这些事务由其他节点104发布在新的区块中时,可以接受这些事务。白名单安全节点可以简单地拒绝不保留其一组有序的未发布事务154中未列入白名单的事务,因为这些事务不适用于其业务模型。
黑名单事务和事务内容
过滤地址可以在钱包应用程序级和节点级实现。然而,应禁止或允许事务的原因可能不仅仅是地址。相反,在某些情况下,特定事务可能包含非法内容,并且禁止应仅适用于这些特定事务或其中包含的特定内容。例如,地址可能已链接到包含非法内容的事务,在这种情况下,仅应禁止该特定事务,而不应禁止链接到该地址的所有先前(合法)事务。这可能是用于创建若干事务(例如,文档列表或照片)的地址的情况。如果这些地址中的一个地址的私钥被窃取并用于创建非法事务,则仅应禁止这些事务,而较旧内容应保持有效且在链上可用(因此,地址禁止将不会有效或公平)。在其他情况下,可以阻止特定内容,而不管地址或包含该地址的事务(许多用户可能会尝试提交相同的非法内容,以绕过地址或事务特定过滤器)。
为了禁止包含特定内容的事务,可以与地址相同的方式将事务ID记录在概率过滤器中。由于事务ID或整个事务会在记录在概率过滤器中之前进行哈希处理(并且哈希的格式与用于记录地址的格式相同),因此用于记录事务的概率过滤器可以与用于将地址列入黑名单的概率过滤器相同或不同。通过这项技术,不仅可以禁止地址,还可以禁止特定事务。这项技术既可以在节点级别使用(例如,以全局禁止非法内容),也可以在钱包应用程序级别使用(例如,以禁止商业环境中的特定内容)。
禁止链上非法内容的替代方法是在概率过滤器中记录有异议的事务内容(而不是事务ID)。例如,可以记录OP_RETURN指令之后的所有内容。OP_RETURN之后的问题事务中包含的所有内容都可以进行哈希处理并插入概率过滤器中。可以轻松地检测并拒绝包含相同内容的任何其他事务(如果尝试提交包含相同内容的新事务),或者在OP_RETURN之后在不包含内容的情况下提供此类事务(如果事务已发布在区块中)。这项技术的另一个优点在于,这项技术允许检测非法材料,而无需显式地存储该材料(相关机构可以保留材料记录,并且仅将概率过滤器传输到节点104和钱包应用程序105)。此外,可以预防性地创建概率过滤器,包括由公共机构识别且尚未发布在区块链150上的问题内容,从而允许在内容发布在区块中之前进行预防性控制(例如,可以将受版权保护的材料记录在过滤器中,以防止未经授权上传到区块链150)。为了防止不成熟的解决方案,例如仅更改内容中的一位(这将生成完全不同的哈希,而不会记录在概率过滤器中),可以对OP_RETURN的不同预定义部分进行哈希处理并记录。例如,一项基本技术可以是将内容分成分块,对每个分块进行哈希处理,并将这些哈希记录在过滤器中。可以逐个分块测试事务的OP_RETURN之后的所有内容,并且如果其中一个为肯定结果,则在不包含OP_RETURN内容的情况下拒绝或提供(例如,发布)该事务。此外,这项技术的可扩展性可以根据攻击者上传非法内容的尝试量身定制。也就是说,如果列入黑名单和检查与攻击者生成非法内容事务一样高效,这可能足以威慑攻击者。此外,向过滤器中添加新内容是免费的,而创建新事务会产生成本。这应该也会打击攻击者的积极性。
概率过滤器分析和示例
构建概率过滤器
下面的示例说明如何创建布隆过滤器以将三个地址列入黑名单。过滤器将具有10%的假阳概率(该示例在不失去一般性的情况下使用高假阳概率来减少哈希函数的数量并简化该示例)。
数据:
●类型:布隆过滤器
●元素的数量n=3
●ffp=10%
●哈希函数的数量k=log2(fpp)=3
作为哈希函数,使用sha256、双重sha256和三重sha256,其中元素x的双重sha256是sha256(sha256(x)),三重sha256是sha256(sha256(sha256(x)))。
●3个地址:
οAddr1=1CjMGY8MywB9W6FESTdeYpN56L4NZQVzC7
οAddr2=1CD1Hs9DBNgJLBVaTSKNFkuSmoqzEMM3BE
οAddr3=1BoikkFDhYMTsnSGFfxDkFaVgs4dV4ZqRQ
过程:
1.将新的布隆过滤器初始化为长度为m的0数组:
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
2.插入Addr1:
●sha256(Addr1)模数m=13
●双重sha256(Addr1)模数m=8
●三重sha256(Addr1)模数m=13
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
3.插入Addr2:
●sha256(Addr2)模数m=0
●双重sha256(Addr2)模数m=6
●三重sha256(Addr2)模数m=3
1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
4.插入Addr3:
●sha256(Addr3)模数m=3
●双重sha256(Addr3)模数m=10
●三重sha256(Addr3)模数m=2
1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |
这是最终的15位过滤器,其可以传输到轻量级钱包应用程序。
地址查找:
●Addr3=1BoikkFDhYMTsnSGFfxDkFaVgs4dV4ZqRQ
οsha256(Addr3)模数m=3
ο双重sha256(Addr3)模数m=10
ο三重sha256(Addr3)模数m=2
1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |
所有哈希函数对应于过滤器中设置为1的单元格,因此将该元素记录在过滤器中。如果该过滤器是黑名单过滤器,则拒绝与Addr3相关联的事务;如果该过滤器是白名单过滤器,则批准该事务。
●Addr4=1JXiyVNRx37YQgSFt13XqaU7r2R1ThNLhx
οsha256(Addr3)模数m=9
ο双重sha256(Addr3)模数m=13
ο三重sha256(Addr3)模数m=10
1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |
哈希函数中的至少一个对应于过滤器中设置为0的单元格(即,该示例中的单元格9),因此不会将该元素记录在过滤器中。如果该过滤器是黑名单过滤器,则接受与Addr4相关联的事务;如果该过滤器是白名单过滤器,则拒绝该事务。
过滤器大小和可扩展性
下面分析概率过滤器大小如何随着要插入的元素数量增长。按如下方式计算过滤器大小:
过滤器大小仅取决于假阳概率(fpp)、负载(仅布谷鸟过滤器)和要插入的元素数量。概率过滤器不依赖于输入大小,因为这些过滤器仅存储输入哈希(具有恒定大小)。
将过滤器大小与存储相同数量元素的地址列表进行比较。根据一些区块链,区块链地址的大小为25字节,由以下组成部分组成:
<version_byte><20 bytes of RIPEMD-160(SHA-256(PublicKey))><4 byteschecksum>
假设以下参数:
●假阳概率(fpp)=0.1%
●过滤器负载(仅布谷鸟过滤器)=95%
地址 | 列表大小 | 布隆过滤器大小 | 布谷鸟过滤器大小 |
100 | 2.5KB | 0.17KB | 0.15KB |
1.000 | 25KB | 1.7KB | 1.5KB |
10.000 | 250KB | 17KB | 15KB |
100.000 | 2.5MB | 170KB | 150KB |
1000000 | 25MB | 1.7MB | 1.5MB |
10000000 | 250MB | 17MB | 15MB |
100000000 | 2.5GB | 170MB | 150MB |
与地址列表相比的压缩比:
布隆过滤器=93.2%
布谷鸟过滤器=94.0%
上表显示了存储给定数量地址的列表、布隆过滤器和布谷鸟过滤器的大小。随着要存储的地址数量增加,地址列表开始出现可扩展性问题,尤其是对于轻量级应用程序(在极端情况下,这些轻量级应用程序需要接收和存储2.5GB的数据以将1亿个地址列入黑名单)。存储事务ID或事务内容(例如,OP_RETURN之后的所有内容)将需要更大空间,这使得概率过滤器的使用更加方便。如果与事务ID列表(每个32字节)相比,布隆过滤器的压缩率为94.7%,布隆过滤器的压缩率为95.4%。如果与应被禁止的事务内容(例如,图像)列表相比,压缩率甚至更显著。例如,考虑到可以链上存储的小图像(例如,每个50KB),布隆过滤器将以99.997%的压缩比记录这些图像,这意味着可以通过仅将1.5KB过滤器传输到轻量级钱包来禁止1000个图像(50MB)。
当必须处理示例性列表的大小时,节点104可以承受较少负担。然而,由于列表的查找速度较慢,并且不保护隐私(所有地址或内容将以显式方式列出),因此,用于快速进行成员资格测试的系统对于节点104也十分有用。节点104上的一种可能的实现方式可以包括将概率过滤器保持在存储器(例如,RAM)中以进行快速测试,并且保持在列表中以验证将存储在驱动器上的可能假阳(或者在涉及隐私时对权威数据库的查询)。
一旦给出本文的公开内容,所公开技术的其它变体或用例对于本领域技术人员可能变得显而易见。本公开的范围不受所描述的实施例限制,而仅受随附权利要求限制。
例如,上面的一些实施例已经根据比特币网络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、一种用于处理区块链事务的计算机实现的方法,其中所述方法由接收方执行并且包括:
获取一个或多个概率过滤器,其中每个概率过滤器对以下各项中的一项进行编码:i)列入白名单的数据项的一个或多个集合,或ii)列入黑名单的数据项的一个或多个集合;
获取区块链事务,其中所获取的区块链事务与候选数据项相关联,所述候选数据项对应于:i)所述列入白名单的数据项的一个或多个集合中的一个,或ii)所述列入黑名单的数据项的一个或多个集合中的一个;以及
基于所述候选数据项是否存在于所述一个或多个概率过滤器中的至少一个中来确定是否处理所述获取的区块链事务。
语句2、根据语句1所述的方法,其中所述列入白名单的数据项的一个或多个集合中的一个包括列入白名单的区块链地址的集合,其中所述列入黑名单的数据项的一个或多个集合中的一个包括列入黑名单的区块链地址的集合,并且其中所述候选数据项是候选区块链地址。
例如,所述候选区块链地址可以是与所述获取的区块链事务的输出对应的目的地址。或者,所述候选区块链地址可以是与所述获取的区块链事务的输入尝试花费的输出相关联的地址。
语句3、根据语句2所述的方法,其中确定是否处理所述获取的区块链事务包括:确定是否使用与所述接收方相关联的数字签名来签署所述获取的区块链事务。
语句4、根据语句3所述的方法,其中:
i)至少一个概率过滤器对所述列入白名单的区块链地址的集合进行编码,并且其中所述方法包括:在所述候选区块链地址存在于所述至少一个概率过滤器中的条件下,签署所述获取的区块链事务;或者
ii)至少一个概率过滤器对所述列入黑名单的区块链地址的集合进行编码,并且其中所述方法包括:在所述候选区块链地址不存在于所述至少一个概率过滤器中的条件下,签署所述获取的区块链事务。
也就是说,所述接收方可以是接收以下请求的用户,即使用与所述用户相关联的数字签名来签署所述获取的区块链事务。
优选地,只有在所述候选地址不存在于所述过滤器中的每个过滤器中的条件下,才签署所述获取的区块链事务。
语句5、根据语句2所述的方法,其中确定是否处理所述获取的区块链事务包括:确定是否接受所述获取的区块链事务以发布在所述区块链的区块中。
也就是说,所述接收方可以是接收以下请求的区块链节点,即将所述获取的区块链事务发布在所述区块链的新区块中。
语句6、根据语句5所述的方法,其中:
i)至少一个概率过滤器对所述列入白名单的区块链地址的集合进行编码,并且其中所述方法包括:在所述候选区块链地址存在于所述至少一个概率过滤器中的条件下,接受所述获取的区块链事务;或者
ii)至少一个概率过滤器对所述列入黑名单的区块链地址的集合进行编码,并且其中所述方法包括:在所述候选区块链地址不存在于所述至少一个概率过滤器中的条件下,接受所述获取的区块链事务。
优选地,只有在所述候选地址不存在于所述过滤器中的每个过滤器中的条件下,才接受所述获取的区块链事务。
语句7、根据语句6所述的方法,其中接受所述获取的区块链包括:使所述获取的区块链事务优先于一个或多个其他区块链事务以发布在所述区块链的区块中。
语句8、根据语句2所述的方法,其中获取所述区块链事务包括:获取包括所述区块链事务的区块,并且其中确定是否处理所述获取的区块链事务包括:确定是否核实包括所述获取的区块链事务的所述区块。
也就是说,所述接收方可以是处于以下过程的区块链节点,即核实所发布的区块,例如,由不同的区块链节点(例如,不使用所述过滤器处理事务的节点)发布的区块。所述接收方可以根据所述成员资格测试的结果接受或拒绝所述获取的区块。
语句9、根据语句8所述的方法,其中:
i)至少一个概率过滤器对所述列入白名单的区块链地址的集合进行编码,并且其中所述方法包括:在所述候选区块链地址存在于所述至少一个概率过滤器中的条件下,核实所述获取的区块;或者
ii)至少一个概率过滤器对所述列入黑名单的区块链地址的集合进行编码,并且其中所述方法包括:在所述候选区块链地址不存在于所述至少一个概率过滤器中的条件下,核实所述获取的区块。
语句10、根据前述任一项语句所述的方法,其中所述列入白名单的数据项的一个或多个集合中的一个包括列入白名单的未花费事务输出的集合,其中所述列入黑名单的数据项的一个或多个集合包括列入黑名单的未花费事务输出的集合,并且其中所述候选数据项是所述获取的区块链事务引用的候选未花费事务输出。
也就是说,所述候选未花费事务输出是所述获取的区块链事务的输入引用的先前区块链事务的输出。
语句11、根据语句10所述的方法,其中确定是否处理所述获取的区块链事务包括:确定是否签署所述事务或接受所述引用的区块链事务以发布在所述区块链的区块中。
例如,用户可以签署所述事务,或者节点可以接受所述事务。
语句12、根据语句11所述的方法,其中:
i)至少一个概率过滤器对所述列入白名单的未花费事务输出的集合进行编码,并且其中所述方法包括:在所述候选未花费区块链事务存在于所述至少一个概率过滤器中的条件下,签署或接受所述获取的区块链事务;或者
ii)至少一个概率过滤器对所述列入黑名单的未花费事务输出的集合进行编码,并且其中所述方法包括:在所述候选未花费区块链事务输出不存在于所述至少一个概率过滤器中的条件下,签署或接受所述获取的区块链事务。
语句13、根据前述任一项语句所述的方法,其中所述列入白名单的数据项的一个或多个集合包括列入白名单的区块链事务标识符的集合,其中所述列入黑名单的数据项的一个或多个集合包括列入黑名单的区块链事务标识符的集合,并且其中所述候选数据项是所述获取的区块链事务的候选事务标识符。
语句14、根据语句13所述的方法,其中确定是否处理所述获取的区块链事务包括:确定是否将所述获取的区块链事务传输至第三方。
例如,所述第三方可能已请求访问所述获取的事务。
语句15、根据语句14所述的方法,其中:
i)至少一个概率过滤器对所述列入白名单的区块链事务标识符的集合进行编码,并且其中所述方法包括:在所述候选区块链事务标识符存在于所述至少一个概率过滤器中的条件下,将所述获取的区块链事务传输至所述第三方;或者
ii)至少一个概率过滤器对所述列入黑名单的区块链事务标识符的集合进行编码,并且其中所述方法包括:在所述候选区块链事务标识符不存在于所述至少一个概率过滤器中的条件下,将所述获取的区块链事务传输至所述第三方。
语句16、根据前述任一项语句所述的方法,其中所述列入白名单的数据项的一个或多个集合包括列入白名单的事务内容的集合,其中所述列入黑名单的数据项的一个或多个集合包括列入黑名单的事务内容的集合,并且其中所述候选数据项是所述获取的区块链事务的候选事务内容项。
例如,所述事务内容可以是事务的输出(例如,OP_RETURN输出)的部分或全部。所述事务内容可以包括以下各项中的一项或多项:图像文件、音频文件、视频文件等。
语句17、根据语句16所述的方法,其中确定是否处理所述获取的区块链事务包括:确定是否将所述获取的区块链事务传输至第三方。
语句18、根据语句17所述的方法,其中:
i)至少一个概率过滤器对所述列入白名单的区块链事务内容的集合进行编码,并且其中所述方法包括:在所述候选区块链事务内容项存在于所述至少一个概率过滤器中的条件下,将所述获取的区块链事务传输至所述第三方;或者
ii)至少一个概率过滤器对所述列入黑名单的区块链事务标识符的集合进行编码,并且其中所述方法包括:在所述候选区块链事务标识符不存在于所述至少一个概率过滤器中的条件下,将所述获取的区块链事务传输至所述第三方。
语句19、根据语句16所述的方法,其中确定是否处理所述获取的区块链事务包括:确定是否接受所述获取的区块链事务,以发布在所述区块链的区块中。
语句20、根据语句19所述的方法,其中:
i)至少一个概率过滤器对所述列入白名单的区块链事务内容的集合进行编码,并且其中所述方法包括:在所述候选区块链事务内容项存在于所述至少一个概率过滤器中的条件下,接受所述获取的区块链事务;或者
ii)至少一个概率过滤器对所述列入黑名单的区块链事务标识符的集合进行编码,并且其中所述方法包括:在所述候选区块链事务标识符不存在于所述至少一个概率过滤器中的条件下,接受所述获取的区块链事务至所述第三方。
语句21、根据语句16或其从属语句中任一项所述的方法,其中所述列入白名单的事务内容项的集合包括列入白名单的通证的集合,其中所述列入黑名单的事务内容项的集合包括列入黑名单的通证的集合,并且其中所述候选数据项是候选通证。
语句22、一种用于控制对区块链事务的部分或全部的访问的计算机实现的方法,其中所述方法由发送方执行并且包括:
生成一个或多个概率过滤器,其中每个概率过滤器对以下各项中的一项进行编码:i)列入白名单的数据项的一个或多个集合,或ii)列入黑名单的数据项的一个或多个集合;以及
将所述一个或多个概率过滤器发送至接收方。
语句23、根据语句22所述的方法,其中所述列入白名单的数据项的一个或多个集合包括以下各项中的一项、一些或全部:
列入白名单的区块链地址集合,
列入白名单的未花费事务输出集合,
列入白名单的区块链事务标识符集合,
列入白名单的事务内容项集合,
列入白名单的通证集合。
语句24、根据语句22或23所述的方法,其中所述列入黑名单的数据项的一个或多个集合包括以下各项中的一项、一些或全部:
列入黑名单的区块链地址集合,
列入黑名单的未花费事务输出集合,
列入黑名单的区块链事务标识符集合,
列入黑名单的事务内容项集合,
列入黑名单的通证集合。
语句25、根据语句22至24中任一项所述的方法,其中所述发送方是第一区块链节点。
语句26、根据语句22至24中任一项所述的方法,其中所述发送方是可信机构。
例如,所述可信机构可以是合法机构或通证机构。
语句27、根据语句22至26中任一项所述的方法,其中所述接收方是第二区块链节点。
语句28、一种计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或多个存储器单元;以及
处理装置,所述处理装置包括一个或多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据语句1至27中任一项所述的方法。
语句29、一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在根据语句28所述的计算机设备上运行时,执行根据语句1至27中任一项所述的方法。
根据本文公开的另一方面,可以提供一种方法,所述方法包括所述发送实体和所述接收实体的动作。
根据本文公开的另一方面,可以提供一种系统,所述系统包括所述发送实体和所述接收实体的所述计算机设备。
Claims (29)
1.一种用于处理区块链事务的计算机实现的方法,其中所述方法由接收方执行并且包括:
获取一个或多个概率过滤器,其中每个概率过滤器对以下各项中的一项进行编码:i)一组或多组列入白名单的数据项,或ii)一组或多组列入黑名单的数据项;
获取区块链事务,其中所述获取的区块链事务与候选数据项相关联,所述候选数据项对应于:i)所述一组或多组列入白名单的数据项中的一个,或ii)所述一组或多组列入黑名单的数据项中的一个;以及
基于所述候选数据项是否存在于所述一个或多个概率过滤器中的至少一个中来确定是否处理所述获取的区块链事务。
2.根据权利要求1所述的方法,其中所述一组或多组列入白名单的数据项中的一个包括一组列入白名单的区块链地址,其中所述一组或多组列入黑名单的数据项中的一个包括一组列入黑名单的区块链地址,并且其中所述候选数据项是候选区块链地址。
3.根据权利要求2所述的方法,其中确定是否处理所述获取的区块链事务包括:确定是否使用与所述接收方相关联的数字签名来签署所述获取的区块链事务。
4.根据权利要求3所述的方法,其中:
i)至少一个概率过滤器对所述一组列入白名单的区块链地址进行编码,并且其中所述方法包括:在所述候选区块链地址存在于所述至少一个概率过滤器中的条件下,签署所述获取的区块链事务;或者
ii)至少一个概率过滤器对所述一组列入黑名单的区块链地址进行编码,并且其中所述方法包括:在所述候选区块链地址不存在于所述至少一个概率过滤器中的条件下,签署所述获取的区块链事务。
5.根据权利要求2所述的方法,其中确定是否处理所述获取的区块链事务包括:确定是否接受所述获取的区块链事务以发布在所述区块链的区块中。
6.根据权利要求5所述的方法,其中:
i)至少一个概率过滤器对所述一组列入白名单的区块链地址进行编码,并且其中所述方法包括:在所述候选区块链地址存在于所述至少一个概率过滤器中的条件下,接受所述获取的区块链事务;或者
ii)至少一个概率过滤器对所述一组列入黑名单的区块链地址进行编码,并且其中所述方法包括:在所述候选区块链地址不存在于所述至少一个概率过滤器中的条件下,接受所述获取的区块链事务。
7.根据权利要求6所述的方法,其中接受所述获取的区块链包括:使所述获取的区块链事务优先于一个或多个其他区块链事务以发布在所述区块链的区块中。
8.根据权利要求2所述的方法,其中获取所述区块链事务包括:获取包括所述区块链事务的区块,并且其中确定是否处理所述获取的区块链事务包括:确定是否核实包括所述获取的区块链事务的所述区块。
9.根据权利要求8所述的方法,其中:
i)至少一个概率过滤器对所述一组列入白名单的区块链地址进行编码,并且其中所述方法包括:在所述候选区块链地址存在于所述至少一个概率过滤器中的条件下,核实所述获取的区块;或者
ii)至少一个概率过滤器对所述一组列入黑名单的区块链地址进行编码,并且其中所述方法包括:在所述候选区块链地址不存在于所述至少一个概率过滤器中的条件下,核实所述获取的区块。
10.根据前述任一项权利要求所述的方法,其中所述一组或多组列入白名单的数据项中的一个包括一组列入白名单的未花费事务输出,其中所述一组或多组列入黑名单的数据项包括一组列入黑名单的未花费事务输出,并且其中所述候选数据项是所述获取的区块链事务引用的候选未花费事务输出。
11.根据权利要求10所述的方法,其中确定是否处理所述获取的区块链事务包括:确定是否签署所述事务或接受所述引用的区块链事务以发布在所述区块链的区块中。
12.根据权利要求11所述的方法,其中:
i)至少一个概率过滤器对所述一组列入白名单的未花费事务输出进行编码,并且其中所述方法包括:在所述候选未花费区块链事务存在于所述至少一个概率过滤器中的条件下,签署或接受所述获取的区块链事务;或者
ii)至少一个概率过滤器对所述一组列入黑名单的未花费事务输出进行编码,并且其中所述方法包括:在所述候选未花费区块链事务输出不存在于所述至少一个概率过滤器中的条件下,签署或接受所述获取的区块链事务。
13.根据前述任一项权利要求所述的方法,其中所述一组或多组列入白名单的数据项包括一组列入白名单的区块链事务标识符,其中所述一组或多组列入黑名单的数据项包括一组列入黑名单的区块链事务标识符,并且其中所述候选数据项是所述获取的区块链事务的候选事务标识符。
14.根据权利要求13所述的方法,其中确定是否处理所述获取的区块链事务包括:确定是否将所述获取的区块链事务传输至第三方。
15.根据权利要求14所述的方法,其中:
i)至少一个概率过滤器对所述一组列入白名单的区块链事务标识符进行编码,并且其中所述方法包括:在所述候选区块链事务标识符存在于所述至少一个概率过滤器中的条件下,将所述获取的区块链事务传输至所述第三方;或者
ii)至少一个概率过滤器对所述一组列入黑名单的区块链事务标识符进行编码,并且其中所述方法包括:在所述候选区块链事务标识符不存在于所述至少一个概率过滤器中的条件下,将所述获取的区块链事务传输至所述第三方。
16.根据前述任一项权利要求所述的方法,其中所述一组或多组列入白名单的数据项包括一组列入白名单的事务内容,其中所述一组或多组列入黑名单的数据项包括一组列入黑名单的事务内容,并且其中所述候选数据项是所述获取的区块链事务的候选事务内容项。
17.根据权利要求16所述的方法,其中确定是否处理所述获取的区块链事务包括:确定是否将所述获取的区块链事务传输至第三方。
18.根据权利要求17所述的方法,其中:
i)至少一个概率过滤器对所述一组列入白名单的区块链事务内容进行编码,并且其中所述方法包括:在所述候选区块链事务内容项存在于所述至少一个概率过滤器中的条件下,将所述获取的区块链事务传输至所述第三方;或者
ii)至少一个概率过滤器对所述一组列入黑名单的区块链事务标识符进行编码,并且其中所述方法包括:在所述候选区块链事务标识符不存在于所述至少一个概率过滤器中的条件下,将所述获取的区块链事务传输至所述第三方。
19.根据权利要求16所述的方法,其中确定是否处理所述获取的区块链事务包括:确定是否接受所述获取的区块链事务,以发布在所述区块链的区块中。
20.根据权利要求19所述的方法,其中:
i)至少一个概率过滤器对所述一组列入白名单的区块链事务内容进行编码,并且其中所述方法包括:在所述候选区块链事务内容项存在于所述至少一个概率过滤器中的条件下,接受所述获取的区块链事务;或者
ii)至少一个概率过滤器对所述一组列入黑名单的区块链事务标识符进行编码,并且其中所述方法包括:在所述候选区块链事务标识符不存在于所述至少一个概率过滤器中的条件下,接受所述获取的区块链事务至所述第三方。
21.根据权利要求16或其从属权利要求中任一项所述的方法,其中所述一组列入白名单的事务内容项包括一组列入白名单的通证,其中所述一组列入黑名单的事务内容项包括一组列入黑名单的通证,并且其中所述候选数据项是候选通证。
22.一种用于控制对区块链事务的部分或全部的访问的计算机实现的方法,其中所述方法由发送方执行并且包括:
生成一个或多个概率过滤器,其中每个概率过滤器对以下各项中的一项进行编码:i)一组或多组列入白名单的数据项,或ii)一组或多组列入黑名单的数据项;以及
将所述一个或多个概率过滤器发送至接收方。
23.根据权利要求22所述的方法,其中所述一组或多组列入白名单的数据项包括以下各项中的一项、一些或全部:
一组列入白名单的区块链地址,
一组列入白名单的未花费事务输出,
一组列入白名单的区块链事务标识符,
一组列入白名单的事务内容项,
一组列入白名单的通证。
24.根据权利要求22或23所述的方法,其中所述一组或多组列入黑名单的数据项包括以下各项中的一项、一些或全部:
一组列入黑名单的区块链地址,
一组列入黑名单的未花费事务输出,
一组列入黑名单的区块链事务标识符,
一组列入黑名单的事务内容项,
一组列入黑名单的通证。
25.根据权利要求22至24中任一项所述的方法,其中所述发送方是第一区块链节点。
26.根据权利要求22至24中任一项所述的方法,其中所述发送方是可信机构。
27.根据权利要求22至26中任一项所述的方法,其中所述接收方是第二区块链节点。
28.一种计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或多个存储器单元;以及
处理装置,所述处理装置包括一个或多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据权利要求1至27中任一项所述的方法。
29.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在根据权利要求28所述的计算机设备上运行时,执行根据权利要求1至27中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2007995.0 | 2020-05-28 | ||
GB2007995.0A GB2595488A (en) | 2020-05-28 | 2020-05-28 | Filtering blockchain transactions |
PCT/EP2021/060745 WO2021239354A1 (en) | 2020-05-28 | 2021-04-23 | Filtering blockchain transactions |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115668861A true CN115668861A (zh) | 2023-01-31 |
Family
ID=71526400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180037902.0A Pending CN115668861A (zh) | 2020-05-28 | 2021-04-23 | 过滤区块链事务 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP4122155A1 (zh) |
JP (1) | JP2023527713A (zh) |
CN (1) | CN115668861A (zh) |
GB (1) | GB2595488A (zh) |
WO (1) | WO2021239354A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023233013A1 (en) * | 2022-06-02 | 2023-12-07 | Nchain Licensing Ag | Methods and systems for freezing digital assets |
US20230396697A1 (en) * | 2022-06-06 | 2023-12-07 | Aclara Technologies Llc | Systems and methods for implicit device identification |
CN115860749B (zh) * | 2023-02-09 | 2023-05-16 | 支付宝(杭州)信息技术有限公司 | 一种数据处理方法、装置及设备 |
CN117892333B (zh) * | 2024-03-14 | 2024-05-14 | 快页信息技术有限公司 | 一种基于区块链的信息安全监管系统及方法 |
-
2020
- 2020-05-28 GB GB2007995.0A patent/GB2595488A/en active Pending
-
2021
- 2021-04-23 CN CN202180037902.0A patent/CN115668861A/zh active Pending
- 2021-04-23 EP EP21731392.3A patent/EP4122155A1/en active Pending
- 2021-04-23 WO PCT/EP2021/060745 patent/WO2021239354A1/en unknown
- 2021-04-23 JP JP2022569008A patent/JP2023527713A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2023527713A (ja) | 2023-06-30 |
GB202007995D0 (en) | 2020-07-15 |
EP4122155A1 (en) | 2023-01-25 |
GB2595488A (en) | 2021-12-01 |
WO2021239354A1 (en) | 2021-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220277307A1 (en) | Systems and methods for personal identification and verification | |
CN115668861A (zh) | 过滤区块链事务 | |
KR20210040078A (ko) | 안전한 보관 서비스를 위한 시스템 및 방법 | |
CN115917546A (zh) | 生成区块链地址 | |
CN117480758A (zh) | 用于验证区块链上的通证的计算机实现的方法和系统 | |
JP2023554148A (ja) | 機密データのブロック | |
CN116157796A (zh) | 警报账户 | |
CN115699003A (zh) | 文件验证系统和方法 | |
CN115552842A (zh) | 用于通过区块链高效安全地处理、访问和传输数据的计算机实现的系统和方法 | |
JP2023502057A (ja) | ブロックチェーントランザクションを使用したアイデンティティ検証プロトコル | |
Chenli et al. | Provnet: Networked blockchain for decentralized secure provenance | |
CN117795516A (zh) | 一种计算机实现的方法和系统 | |
KR20240024113A (ko) | 다중-레벨 블록체인 | |
CN117751550A (zh) | 分层共识 | |
CN117280653A (zh) | 多方区块链地址方案 | |
CN115699676A (zh) | 自定义事务脚本 | |
CN116547945A (zh) | 默克尔证明实体 | |
Tuyisenge | Blockchain technology security concerns: Literature review | |
GB2624931A (en) | Computer implemented methods and systems | |
WO2023227467A1 (en) | Blockchain-based message journaling | |
CN117136527A (zh) | 用于区块链实现的数据应用程序中的签名验证的改进方法和系统 | |
WO2023057151A1 (en) | Implementing a layer 2 token protocol using a layer 1 blockchain | |
WO2024041866A1 (en) | Blockchain transaction | |
CN115836314A (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 |