CN112470423A - 用于资产混合的计算机实现的***和方法 - Google Patents
用于资产混合的计算机实现的***和方法 Download PDFInfo
- Publication number
- CN112470423A CN112470423A CN201980049508.1A CN201980049508A CN112470423A CN 112470423 A CN112470423 A CN 112470423A CN 201980049508 A CN201980049508 A CN 201980049508A CN 112470423 A CN112470423 A CN 112470423A
- Authority
- CN
- China
- Prior art keywords
- participant
- transaction
- computer
- implemented method
- output
- 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
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000002156 mixing Methods 0.000 title abstract description 21
- 230000001186 cumulative effect Effects 0.000 claims abstract description 51
- 238000013515 script Methods 0.000 claims description 40
- 230000006835 compression Effects 0.000 claims 1
- 238000007906 compression Methods 0.000 claims 1
- 239000000203 mixture Substances 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 6
- 238000009825 accumulation Methods 0.000 description 4
- 150000003839 salts Chemical class 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
Images
Classifications
-
- 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
-
- 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
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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
-
- 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/40—Authorisation, 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/401—Transaction verification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- 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
- G06Q2220/00—Business processing using cryptography
-
- 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)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Finance (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Storage Device Security (AREA)
Abstract
资产混合协议允许一组参与者计算机***使用资产混合交易集来混合其资产,其中创建所述资产混合交易集时,给定参与者计算机***可能具有包括在不同资产混合交易中的输入和输出地址。使用从累积树得出的数量可以使协议安全地调节从赎回所述参与者计算机***的存款到在区块链上广播所有资产混合交易的这一过程。为防止拥有足够信息的中央协调员或交易商从所述参与者计算机***中窃取资产,提供了相应的保护措施。
Description
技术领域
本公开大体涉及通过使用记录在区块链上的多个非原子操作来产生和执行原子操作。本公开特别适合于但不限于涉及来自多个参与者的贡献的合成原子操作的执行。通常,本公开使用累积树来向个体参与者确保:在原子操作失败的情况下,将返回任何个体贡献。
背景技术
在本文中,术语“区块链”是指多种类型的基于计算机的电子分布式分类账中的任何一种。这些分类账包括基于共识的区块链和交易链技术、许可和非许可的分类账、共享分类账及其变体。虽然已提出并开发了其他区块链实施方案,但是区块链技术最广为人知的应用是比特币分类账。虽然为了方便和说明的目的在本文中可能会提及比特币网络,但应注意,本公开不限于与比特币区块链一起使用,替代性的区块链实施方案和协议也属于本公开的范围内。例如,本公开可用于具有类似于比特币网络的限制(所述限制涉及可以对交易中的哪些约束进行编码)的其他区块链实现方式中。
区块链是一种点对点的电子分类账,其实现为基于计算机的去中心化的分布式***,所述***由区块组成,而区块又由交易和其他信息组成。例如,在比特币网络中,每个交易是一种数据结构,所述数据结构对区块链***参与者之间的数字资产的控制权的转移进行编码,并且包括至少一个输入和至少一个输出。在一些实施例中,“数字资产”是指与使用权限关联的二进制数据。在一些实现方式中,可以通过将数字资产的至少一部分从第一实体重新关联到第二实体来执行数字资产的转移控制。每个区块都包括前一个区块的哈希值,因此区块被联系在一起,以创建自所述区块链创建以来写入其中的所有交易的永久性的不可更改的记录。交易包括嵌入到其输入和输出中的小程序(被称为脚本),这些小程序指定如何以及由谁访问所述交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。
为了将交易写入区块链,必须对其进行“验证”。网络节点(矿工)进行工作以确保每个交易均有效,而无效交易则被网络拒绝。不同节点可具有不同的有效性标准。因为区块链中的有效性是基于共识的,所以如果大多数节点同意某个交易是有效的,则该交易被认为是有效的。安装在节点上的软件客户端部分通过执行未花费的交易输出(UTXO)锁定和解锁脚本来对引用UTXO的交易执行此验证工作。如果锁定和解锁脚本的执行评估为“真”,并且满足其他验证条件(如果适用),则该交易被节点验证。通过验证的交易被传播到其他网络节点,以便矿工节点可以选择将交易包括在区块链中。因此,为了将交易写入区块链,该交易必须:i)由接收该交易的第一个节点进行验证—如果该交易通过验证,则此节点将其转发到网络中的其他节点;ii)添加到由矿工建造的新区块中;iii)已挖掘,即已被添加到历史交易的公共分类账中。当有足够数量的区块添加到区块链使得交易实际上不可逆时,交易被认为已被确认。
虽然区块链技术最广为人知的是用于实现加密货币,但数字企业家已经开始探索如何利用比特币所基于的加密安全***和可存储在区块链上的数据来实现新的***。如果区块链可以用于加密货币领域之外的自动任务和过程,则会非常有利。这种解决方案将能够发挥区块链的优势(例如,永久性的防篡改的事件记录、分布式处理等),同时其应用将更加广泛。
区块链交易输出包括锁定脚本和数字资产(如比特币)的所有权信息。锁定脚本(也可称为负担)通过指定为解锁输出而需要满足的条件来“锁定”数字资产。例如,锁定脚本可以要求在解锁脚本中提供某些数据,以解锁关联的数字资产。在比特币网络中,锁定脚本也被称为“scriptPubKey”(脚本公钥)。要求一方提供数据以解锁数字资产的技术涉及将数据的哈希值嵌入到锁定脚本中。然而,如果在创建锁定脚本时数据是不确定的(例如,未知且固定的),则会出现问题。
发明内容
因此,期望提供通过提供一种使用不同的非原子交易的组合来执行原子交易的方法来改进区块链技术的方法和***。现在已设计出这种改进的解决方案。因此,根据本公开,提供了一种如所附权利要求中所限定的方法。
因此,期望提供一种计算机实现的方法,包括:生成数据结构,所述数据结构在输出混洗过程中以密码识别一个参与者计算机***的集合;从所述参与者计算机***的集合中获取一个混洗输出地址的集合;确定对应于所述参与者计算机***的集合的贡献记录的集合(例如存款交易的集合)已经被提交到区块链;至少部分地基于所述混洗输出地址的集合和所述数据结构生成多个资产混合交易;以及将所述多个资产混合交易提交到所述区块链。
优选地,所要求保护的计算机实现的方法可以是这种实施例:其中还包括:在第一超时之后,确定与个体参与者计算机***关联的个体资产混合交易已经失败;以及,若确定个体资产混合交易已经失败,则向所述个体参与者计算机***提供加密信息,所述加密信息允许所述个体参与者计算机***从所述贡献记录的集合中索取(claim)补偿,或者收回(reclaim)所述个体参与者计算机***的所述贡献记录。
优选地,所要求保护的计算机实现的方法可以是这种实施例:其中每一个贡献记录的集合包括锁定脚本,并且所述锁定脚本允许由个体的参与者计算机***基于所述混洗输出地址的集合来索取交易输出。
优选地,所要求保护的计算机实现的方法可以是这种实施例:其中锁定脚本允许使用加密信息收回输入。
优选地,所要求保护的计算机实现的方法可以是锁定脚本允许在第二超时之后收回输入的实施例,其中第二超时大于第一超时。
优选地,所要求保护的计算机实现的方法可以是这种实施例:其中锁定脚本包括OP_CHECKSEQUENCEVERIFY操作符。
优选地,所要求保护的计算机实现的方法可以是这种实施例:其中通过使一个混洗输出地址的集合路由(route)到参与者计算机***的集合中的每个参与者计算机***来获取混洗输出地址的集合。
优选地,所要求保护的计算机实现的方法可以是这种实施例:其中该贡献记录的集合中的每个贡献记录包括支付给交易商的交易费用,以促进实现该计算机实现的方法。
优选地,所要求保护的计算机实现的方法可以是这种实施例:其中数据结构是累积树,其中累积树的叶节点表示参与者计算机***的集合。
优选地,所要求保护的计算机实现的方法可以是这种实施例:其中个体资产混合交易中的参与者计算机***对应于累积树的中间节点下的叶节点。
优选地,所要求保护的计算机实现的方法可以是这种实施例:其中每个参与者计算机***提供与累积树的每个叶节点关联的哈希值。
优选地,所要求保护的计算机实现的方法可以是这种实施例:其中所述资产混合交易是资产混合交易。
优选地,所要求保护的计算机实现的方法可以是这种实施例:其中每个参与者计算机***是具有一个或多个处理器和存储指令的存储器的计算机***,所述一个或多个处理器执行所述指令时,实现加密货币钱包应用。
还期望提供一种***,包括:处理器;存储器,包括可执行指令,其中所述处理器执行所述可执行指令时,使得所述***执行所要求保护的任一个方法。
还期望提供一种非暂时性计算机可读存储介质,其上存储有可执行指令,其中计算机***的一个或多个处理器执行所述可执行指令时,使得所述计算机***至少执行所要求保护的任一个方法。
本公开可以被描述为验证方法/***,和/或描述为用于经由区块链控制数字资产的交换或转移的控制方法/***。在一些实施例中,数字资产是加密货币的代币或一部分。如下所述,本公开还可以被描述为用于经由区块链网络或平台执行操作的新的,改进的和有利的方式的安全方法/***。
附图说明
本公开的这些方面和其他方面将从本文所述的实施例中变得显而易见,并参考本文所述的实施例进行阐述。现将仅通过举例的方式并参考附图对本公开的实施例进行说明,其中:
图1示出了在一个实施例中执行资产混合的***的示例;
图2示出了在一个实施例中用于一组九个元素的累积树的示例;
图3示出了在一个实施例中累积树的示例,其中每个叶节点具有关联元素ei,其中i=l...4;
图4示出了在一个实施例中,作为多CoinJoin交易的一部分执行的加密操作的示例;
图5示出了在一个实施例中,作为多CoinJoin交易的一部分执行的解密操作的示例;
图6示出了在一个实施例中,作为多CoinJoin交易的一部分执行的输出地址的重新排序的示例;
图7示出了在一个实施例中由作为多CoinJoin交易的一部分的存款的参与者生成的锁定脚本的示例;
图8示出了在一个实施例中由多CoinJoin交易中的四个参与者创建、签名和广播的贡献记录的示例;
图9示出了在一个实施例中由多CoinJoin交易中的参与者创建和签名的两个CoinJoin交易的示例;
图10示出了在一个实施例中,由于被交易商计算机***和一个或多个参与者计算机***执行,而执行多CoinJoin交易的过程的示例;
图11示出了在一个实施例中,由于被交易商计算机***和一个或多个参与者计算机***执行,而执行密钥交换并建立在多CoinJoin交易中使用的累加器树的过程的示例;
图12示出了在一个实施例中,由于被交易商计算机***和一个或多个参与者计算机***执行,而重新设置输出地址,生成存款,并为多CoinJoin交易创建CoinJoin交易的过程的示例;
图13示出了在一个实施例中,由于被交易商计算机***和一个或多个参与者计算机***执行,而处理退款并补偿多CoinJoin交易的过程的示例;以及
图14示出了可实现各种实施例的计算机***。
具体实施方式
本文描述了一种***,该***执行安全方法以使用记录在区块链上的非原子交易的组合来执行原子操作。在一个实施例中,该***识别交易商计算机***和一个参与者计算机***集。与参与者计算机***协作,交易商生成累积树,该累积树用于生成特定于每个参与者的加密信息,其中该加密信息被提供给参与者计算机***。每个参与者计算机***生成提交资源给原子操作的交易,其中该交易至少部分地基于加密信息利用锁定脚本来保护。在各种示例中,资源可以是密码密钥、代码、加密货币量、未花费交易输出。在一个实施例中,在原子操作由于任何原因而失败的情况下,锁定脚本提供在超时之后的交易输入的赎回。交易商计算机***确定是否所有参与者已经正确地满足了他们对原子操作的资源;如果是,则生成多个交易并将其提交到区块链,该区块链以总计的效果执行原子操作。如果不是所有的参与者计算机***都提交了完成原子操作所必需的资源,则交易商计算机***提供与累积树关联的特定信息,该累积树允许参与者计算机***恢复他们所提交的资源。如此一来,参与者能够获得原子操作将被完成或者提交到工作的任何资源将被退还的密码保证。
在一些示例中,该***可用于通过允许单个资产混合操作跨越区块链上的多个交易来改善资产混合操作的有效性。对于资产混合交易,从目的地址排除个人信息不一定会模糊交易中参与者的身份。非常有动机的个体可以利用公共可用分类账中的交易信息以及外部数据集来执行能够将个体与特定转移和目的地址关联的分析。本文描述的实施例通过将单个资产混合操作拆分成多个成分交易来减轻这种担忧。本文所述的资产混合***还适用于解决各种问题,其中可以在可互换资产池(例如大规模计算池,投票***和加密货币交易)中进行交换。
例如,可以使用被称为货币混合的资产混合过程来混合加密货币资产。例如,比特币混合解决方案通过汇集n个用户的比特币输入,然后将汇集的比特币输出到用户拥有的n个地址的替代集,来伪装地址之间的联系。货币混合的CoinJoin实现通过使用一个单比特币交易来执行货币混合过程,从而将用户的输入与CoinJoin交易中用户的输出正确联系的概率降低到1/n,从而简化了该过程。诸如CoinShuffle之类的混合服务提供了通过CoinJoin交易来模糊比特币网络中用户身份的解决方案,其中用户将货币发送到加入的交易,从而使得跟踪个人的货币在区块链中的流动更加困难。对交易中涉及的输出混洗的过程在交易的输入和输出之间产生模糊。通常,对于涉及n个参与者的CoinJoin交易(其中每个参与者在交易中具有一个输入和一个输出),正确地将输入与输出联系(并因此正确地猜测参与者的货币流)的概率是1/n。
在一个实现方式中,***汇集来自多个参与者的未用过的加密货币输出并重新排列输出地址的顺序,从而向每个参与者提供来自CoinJoin交易的新输出,其中CoinJoin交易更难被第三方跟踪。在一个实施例中,一组参与者向***提供一个输出地址集。***随机化输出地址的顺序,并使用重新排序的输出地址来创建多个独立的CoinJoin交易。这些交易被设置成使得每个参与者具有包括在两个不同的CoinJoin交易中的关联的输入和输出。
通常,在单个CoinJoin交易中,个体用户将具有一个(或多个)输入和一个(或多个)输出。另外,对于比特币交易,交易大小被限制为1兆字节,这限制了可以被包括在给定交易中的输入和输出的总数,从而限制了可以与交易关联的参与者的数量。
在本文描述的各种说明性示例中,***以这种方式构建多个独立的CoinJoin交易,使得交易的参与者可以使其输入和输出被包括在两个不同的交易中(诸如被写入区块链的两个不同的交易记录)。该***能够通过使交易商计算机***生成累积树来实现这一点,其中参与者由个体的叶节点表示。参与者所使用的锁定脚本强制执行交易的多阶段执行,其中如果交易在阈值时间量之后没有成功完成,则单独的参与者能够在交易商计算机***的帮助下或者在一些示例中在没有交易商计算机***的帮助下收回对失败交易作出贡献的任何资产。每个参与者都存入事先商定的比特币数量,类似于在所有独立的CoinJoin交易都包括在公共分类账中时,该参与者可以索取的CoinJoin交易中混合的数量。该协议具有安全机制,以确保如果一个CoinJoin交易未被期望在所述交易中添加其输入的参与者签名(假定在分配给该交易的子组内的参与者是恶意的),则添加输入并签名一个其他交易的参与者被合理补偿。该协议呈现了一个显著的特征,即CoinJoin交易的不可关联性,因此与基于单个CoinJoin交易的解决方案(例如CoinShuffle)相比,增加了可允许参与者的数量。这是通过使用从静态累积树(本地摘要和全局摘要)得出的量来实现的,所述静态累积树是使用参与者提供的数据建立的,以便在签名和发送网络上的CoinJoin交易之前锁定和解锁参与者进行的存款。
图1示出了在一个实施例中执行货币混合的***100的示例。货币混合是这样一种***,其中一组用户想要将他们的比特币汇集在一起,然后将他们的比特币分配给交替的比特币地址。
这些交替的地址可能是初始用户集拥有,也可能不是初始用户集拥有。***提供针对外部攻击者的防护,因为攻击者通常不能关联输入和输出地址。例如,对于n个输入和n个输出,正确连接输入与输出地址的概率大约是1/n。只要所有参与者在混合池中输入和输出相同数量的加密货币,通常情况就是如此。
在图1所示的实施例中,第一用户102操作第一客户端计算机***104,第二用户106操作第二客户端计算机***108,第三用户110操作客户端计算机***112。每个客户端计算机***可以是个人计算机、膝上型计算机、手持设备、网络连接的设备、虚拟计算机***、计算机服务器、销售点终端或其他计算设备。在一个实施例中,每个计算设备托管由存储在客户端设备上的存储器中的指令组成的客户端应用程序。所述指令被客户端计算机***执行时,实现客户端应用程序的功能。客户端应用程序与存储在分布式存储网络(例如比特币分类账或其他加密货币区块链)中的区块链分类账交互。在一些示例中,每个客户端计算机***通过发送和接收交易记录或计算机网络来与区块链交互。计算机网络可以包括有线网络,例如以太网或光纤网络,或者无线网络,例如Wi-Fi或蜂窝网络。
在一个实施例中,三个用户中的每一个都将输入和输出添加到存储在区块链114上的CoinJoin交易116。每个用户的输入和每个用户的输出都具有匹配的加密货币值,并且输出的顺序是随机排列的,因此检查区块链的攻击者将不知道最初从哪个用户那里获得了给定输出。
此解决方案的某些实现依赖于协调服务提供者,该服务提供者可能表现出某些不良的特性:
·存在协调服务提供者可能通过不将比特币输入转发到用户提供的比特币地址来窃取比特币的风险。
·协调服务提供者可获知输入资金/地址与输出地址之间的关联。如果选择这样做,则服务提供者可以有意或无意发布该信息。
·通常,协调服务将对使用货币混合服务收取费用。
本文描述的各种实施例弥补了这些和其他缺点。例如,参与者的资金在比特币地址之间的转移过程中,CoinJoin使用一个共享的比特币交易。每个用户将他们的比特币作为输入添加到比特币交易,并且每个用户将他们的目标输出比特币地址添加到交易。通过使用单个共享交易,可以降低货币混合服务的交易成本。但是,如果协调服务受损,则依赖于协调服务的实现(例如CoinJoin)可能存在失去匿名性的风险。虽然在一些实现方式中,本身不必是“中央服务器”,但是CoinJoin交易中的参与者仍然能够确定对应于交易输出的交易输入。例如,假设输入地址是{A,B,C,D},并且输出地址是{A’,B’,C’,D’}。如果用户在交易中包括他们自己的信息,则输入和输出地址通常可以同时添加到交易中。在这种情况下,交易的输出和输入地址的顺序可以按照他们被添加到交易的顺序来关联,使得交易中的参与者能够推断输入地址和对应的输出地址之间的联系。在一些实现方式中,用户可以“公告”其输出地址,通过服务将其添加到池中,然后“输出地址的顺序”被服务混洗。然而,在这种实现方式中,每个用户的输出地址的公告可以公开公告者的输入和输出地址之间的联系。为了保持匿名性,各种实现将输出地址合并到CoinJoin交易中,使得该过程不会增加第三方知道用户输出地址的概率超过1/n,其中n是CoinJoin交易中的输出数量。在一个实施例中,混洗过程产生一个混洗输出地址集,其稍后被包括在多个CoinJoin交易中。
图2示出了在一个实施例中用于一组九个元素的累积树T(ε)200示例。在所示的示例中,累积树具有九个元素和三个级别,并且每个内部节点具有三个子节点。在所示的示例中,累积树具有根节点r 202。根节点r 202具有三个子节点:第一中间节点d 204,第二中间节点e 206和第三中间节点f 208。三个中间节点中的每一个都具有三个子节点,每个子节点都是累积树的叶节点。第一中间节点d 204具有第一子节点a 210,第二子节点b 212和第三子节点c 214。第二中间节点e 206具有第一子节点g 216,第二子节点h 218和第三子节点i 220。第三中间节点f 208具有第一子节点j 222,第二子节点k 224和第三子节点l226。
在各种实施例中,密码累加器可用于将数据存储在哈希表中并执行成员身份认证。在一些实例中,累加器是基于RSA的或双线性映射累加器。在各种示例中,可以使用静态累加器(具有固定的成员集)或动态累加器(允许添加或删除集内的成员)。静态双线性映射累加器可以按以下方式实现:
设G1,G2为素数阶为p的两个循环乘法群,其生成元为g1,g2。还假设存在一个同构φ:G2→G1,使得φ(g2)=g1。给定GM,它是阶为p的循环乘法群,可以定义双线性对e:G1×G2→GM具有以下属性:
·非退化性:(g1,g2)≠1。
在下面的示例中,设置G1=G2=G和g1=g2=g,并考虑配对e:G×G→GM。基于双线性配对的双线性映射累加器可以在累加值累加一组n个元素E=(e1,..,en)∈G。该累加值是G中的一个元素,并且它在中累加元素。该元素(e′1,e′2,…,e′n)∈G是集E=(e1,..,en)∈G的原始元素的加密哈希值,即e′i=h(ei)其中 是抗碰撞哈希函数,将所述循环乘法群G的元素作为输入,并生成中的整数作为输出。最后,s代表陷门信息,该信息是保密的。
为了使用经过身份验证的数据结构有效地存储数据,通常使用累积树来提供恒定的时间更新和恒定的大小证明。与预先计算对所有可能查询的答案的各种替代方案相比,使用累积树通常提供更低的通信和验证成本以及更低的存储成本。
在各种实施例中,累积树用于验证查询中所涉及的子集的哈希值的正确性:该集的公共树摘要确认哈希值,而该哈希值反过来验证该集。
累积树表示为T(ε),其中0<ε<1。T(ε)表示具有n个叶的根树,其中存储了集E的n个元素。该累加树中的级别数可定义为其中每个节点的子节点数为O(nε)。所有叶子(或集元素)处于由级别0标识的相同级别。
对于存储一元素e∈[e1,..,e9]的树T(ε)中的每个叶节点v,将累积值ψ(v)定义为等于元素本身的值:
ψ(v)=e
对于树T(ε)中每个1<i<l级别(此处为l=2)的非叶子节点v,按如下方式定义累加:
对于属于集E的给定元素x,成员身份π(x)的证明包括一个有序的证明序列,累积树π(x)={πi,i=1,..,l}的每层一个此类证明。该证明的每个元素对应于本地摘要αi和每层元素的分支βi见证的组对:
πi=(αi,βi),i=1,…,l
对于给定层i,其中1<i<l,得到:
αi=ψ(vi-1)
其中S(vi)对应于树T(ε)中节点vi的兄弟集。例如,对于图2中的累积树,兄弟集是S(v=d)={e,f}。
对于给定层i,相应的证明元素包括以下成分:
·αi表示在将元素x联系到根r的节点P(x):x→r的路径中找到的上一层(层i-1)中节点的双线性摘要。对于层1<i<l,层i-1中存在的所有元素的αi都相同。
·βi表示“分支见证”,所述见证对从查询节点到树根的路径中丢失的节点进行身份验证。
整个累加树的全局双线性摘要为:
d=ψ(r)
其中
ψ(r)=g(h(ψ(d))+s)(h(ψ(e))+s)(h(ψ(f))+s)
且r表示树的根。
在验证阶段,用户将其证明π(x)提供给验证者。如果gs已公开,则该验证者:
1.检查α1=x;
利用双线性映射属性,第二个关系等同于验证以下相等性:
在此示例中,仅当以上所有关系均成立时,所述证明才被接受。
在本文中,使用累加树的本地和全局摘要生成公钥/私钥对,所述累加树使用所述参与者提供的数据构建而成。该密钥对被用于:在提交CoinJoin交易之前,锁定(并稍后解锁)参与者所进行的存款,以包括在区块链中。
各种实施例使用密钥交换算法来在双方之间建立共享秘密。
Diffie-Hellman密钥交换协议是一种允许两个用户通过交换公共信息来生成共享秘密的密钥交换协议。在一些实施例中,诸如Diffie-Hellman之类的密钥交换算法可用于生成与加密货币一起使用的隐身地址(stealth address)。例如,隐身地址可用于增强比特币协议的匿名性。当使用隐身地址时,(潜在)资金接收方会发布种子值,从中可以得出地址。加密货币被发送到该得到的地址(而不是接收方的已知公共地址),然后可以由预期的接收方索取。因为很难从种子中获取地址,从而提供了匿名性。在一些实施例中,如果接收方需要扫描所有待办交易(incoming transaction)TxOuts以识别正确的比特币交易,则可以限制该方法。
此处介绍了Diffie-Hellman密钥交换协议的工作原理。它建立在椭圆曲线上的广义离散对数问题的基础上,即椭圆曲线Diffie-Hellman密钥交换(“ECDH”)。
ECDH协议涉及两个用户:发送方和接收方。发送方将使用共享秘密来将一些资金转移到稍后可以被接收方赎回的衍生地址。
·接收方创建私用EC密钥d和相应的公钥Q=d×g。该公钥可广泛获得。
·发送方也生成私钥e及其对应的公钥P=e×g。
·通过交换或使公钥可公开地获得,发送方和接收方共享被定义为c=H(e×Q)=H(d×P)的秘密,其中H是加密哈希函数。
·发送方使用共享秘密以及接收方的公钥创建新的公钥:
Q′=Q+c×g。
利用EC的同态特性,该新的公钥可以重排为:
Q′=d×g+c×g=(d+c)×g=s×g
其中s=d+c是该新生成的公钥Q′所关联的私钥。
该新的公钥/私钥对的一个特征是:尽管发送方和接收方都能确定Q′,但是只有接收方知道关联的私钥s。
·在隐身地址的情形中,发送方不直接传递其公钥,而是将向新的公钥Q′发送资金,并且包括OP_RETURN交易输出,其中值P将被放置。
·接收方将假定包括在这些交易的OP_RETURN个输出的每一个中的数据是P,并且计算共享秘密c=H(d×P)。如果被考虑的交易还具有对由公钥Q+(c×g)生成的地址的支付,则该地址的私钥是d+c。只有接收方才有能力在该地址使用比特币,因为只有他知道d和c,其他人通常不知道。
本文描述了基于累加器的多货币加入交易提交(“AMCT”,Accumulators-basedMulti-CoinJoin Transaction Submission)协议,该协议包括在区块链上广播多个独立的CoinJoin交易,从而使比特币用户拥有的输入和输出地址之间的联系变得模糊。该协议涉及一个参与者集,一个被构建来浓缩参与者信息的累积树,以及一个交易商,该交易商将接收参与者信息并使用它来构建与参与者共享的秘密以及从累积树得出的值(例如本地摘要和全局摘要)。参与者对他们的输出地址进行混洗,然后将经过混洗的地址集分成用于创建一个或多个CoinJoin交易的子集。AMCT协议允许参与者被分成与输出地址的子集不相交的子组。例如,参与者可能将其输出和输入地址包括在两个不同的CoinJoin交易中。而且,CoinJoin交易的创建方式可以防止攻击者轻松地将它们联系在一起。在各种示例中,在CoinJoin交易在区块链上广播之前,使用从累积树得出的值来锁定(以及稍后解锁)参与者所进行的存款。在一个或多个参与者未签名与其参与者子组关联的CoinJoin交易的情况下,交易商可以通过透露其他参与者需要补偿的信息来承担保障作用。
在一个实施例中,交易商承担可信第三方的角色。参与者是n个参与者集S,其中n可以表示为两个整数的乘积:n=N×m。N是集S中的子组(S1,..,SN)的数量,并且m是一给定子组中的参与者的数量。参与者的每个子组Si负责在比特币区块链上广播一个CoinJoin交易
每个参与者具有一个输入和一个输出,这些输入和输出将被包括在这些CoinJoin交易之一中。参与者通常不是输出地址中的资金的接收方,即,参与者不试图将资金从其地址之一移动到其拥有其私钥的新地址。在这种情况下,可以利用接收方的签名来解锁资金。
每个CoinJoin交易包括m个输入和m个输出,这些输入和输出中的每一个花费(解锁)或接收x个比特币(BTC)。累积树T(ε)由存储由n个参与者提供的元素(e1,..,en)的交易商建立。
累积树的结构反映了子组中参与者在集S中的分布,即m是累积树的底层中的每个节点的叶子数,N是倒数第二层中的节点数(N个父节点各自具有m个叶子)。
参与者的输出地址被混洗,并且最后一个混洗输出地址集被分成N个包括m个输出地址的子集。交易商为输出地址的每个子集创建CoinJoin交易。然后,交易商将CoinJoin交易发送到参与者的子组Si,以便添加他们各自的输入和签名。在各种示例中,参与者可以将其输入和输出包括在不同的CoinJoin交易中。在其他示例中,交易商可以将单个大交易分成多个较小的交易,以克服对交易大小的限制。
在提交CoinJoin交易以包括在区块链中之前,每个参与者提交y个比特币的存款。该存款被发送到P2SH地址,并且可以通过两种不同的方式进行解锁:
-如果在给定时间点ΔT之前所有CoinJoin交易均成功包括在区块链中,则使用从累积树得出的数量。
-如果在给定时间点ΔT之后未成功将所有CoinJoin交易成功地包括在区块链中,则使用交易商公开的数量。
尽管N个CoinJoin交易应该被独立地且准同时地提交,但参与者有可能未在分配给其子组的CoinJoin交易中添加其输入,因此使所述交易不完整/无效。结果,子组中的参与者将不会解锁其输入。同时,在其他子组中,签名和提交其CoinJoin交易以包括在区块链中的参与者花费了他们的输入;并且,如果输出地址包括在区块链上没有广播的交易中,则存在在他们的输出地址中接收不到到货币的风险。可能很难或不可能强迫参与者履行其角色,即在CoinJoin交易中添加和签名其输入。
因此,在一些实施例中,提出了一种补偿参与者的机制,该参与者由于另一参与者的行为不当而已经花费了他们的输入并且没有收到货币。没有成功将自己的CoinJoin交易纳入区块链的参与者不一定是恶意的。例如,参与者可能在协议期间无意识地失去连接。还应当注意,即使一个参与者丢弃用于具有m个输入/输出的一个CoinJoin交易的协议,也可能导致交易失败。因此,与恶意参与者同属一个子组的参与者不应因为另一个参与者的不当行为而受到惩罚,也不应该从中受益。
下面详细描述AMCT协议。讨论了累积树的构建以及参与者与交易商之间的信息交换。然后,描述了对输出地址进行混洗的过程。然后,讨论了参与者存款交易的创建和提交。下一节解释了CoinJoin交易的创建和提交以及提交所有或一些CoinJoin交易之后的退款/补偿索取。
贯穿本文,参考一个涉及四个参与者的样本案例来描述实施例,其中该四个参与者分成两个参与者的两个分组。假设参与者(或序列)的随机顺序为U1,U2,..,Un,其中n=N×m,N是集的子组的数量,m是给定子组中的参与者的数量。在示例中,n=4,N=m=2。
交易商计算本地摘要,ψ(v1),..,ψ(vN),其中vi,i∈[1,N]是累积树的倒数第二层中的父节点之一。本地或全局摘要都不传送给参与者。
交易商使用摘要d作为私钥。在一个实施例中,由于全局摘要是椭圆曲线的一个点,所以交易商选择从中得出的数字v。例如,v可以是d的一个坐标(xd或yd),或二者的级联,或甚至是由全局摘要的哈希产生的数字,其中哈希函数是将来自椭圆曲线的点作为输入并在域中输出数字的函数(参与者已知)。
交易商使用对应于累积树的全局摘要的椭圆曲线中的点的x坐标。因此,将私钥v=xd定义为私钥,将Q定义为关联的公钥:Q=v×g(g是椭圆曲线的生成元)。
交易商使得Q可被参与者使用。
每个参与者Ui选择一个随机私钥yi并发布相应的公钥:Pi=yi×g。
参与者还在他们与交易商私下通信的域中选择随机数(盐)(例如,参与者可以使用交易商公开的加密密钥将他们的随机数发送给交易商,其关联的解密密钥仅为交易商所知)。将ωi表示为参与者Ui选择的盐,可以将其视为私钥。交易商和参与者Ui都可以推断出关联的公钥Wi=ωi×g。该公钥未被公开。
在本文中,用一个简单的示例来说明各种实施例,其中包括将n=4个参与者分成由两个参与者(m=2)组成的两个子组(N=2),如图3所示。
图3示出了在一个实施例中累积树的示例,其中每个叶节点具有关联元素ei,其中i=1...4。在所示的示例中,累积树具有四个元素和三个级别,并且每个内部节点具有两个子节点。在所示的示例中,累积树具有根节点r 302。根节点r 302具有两个子节点:第一中间节点a 304和第二中间节点b 306。两个中间节点中的每一个都具有两个子节点,每个子节点都是累积树的叶节点。第一中间节点a 304具有第一子节点e1 308和第二子节点e2310。第二中间节点b 306具有第一子节点e3 312和第二子节点e4 314。
前两个参与者(U1,U2)共享本地摘要ψ(a),而参与者的第二子组(U3,U4)共享本地摘要ψ(b)。本示例中的全局摘要由以下关系给出:
d=ψ(r)=g(h(ψ(a))+s)(h(ψ(b))+s)。
图4示出了在一个实施例中,作为多CoinJoin交易(multi-CoinJointransaction)的一部分执行的输出混洗的示例。在一个实施例中,将参与者给定的输出地址集进行混洗的过程包括两个阶段;加密阶段和解密阶段。
在加密阶段,每个参与者Ui具有相应的公钥/私钥对:(Ei,ki),其中Ei=ki×g(g是由协议选择的椭圆曲线的生成元)。公钥E1,E2,...,En被发送到交易商,交易商将公钥提供给其他参与者使用,使他们知道参与者的顺序U1,U2,..,Un。例如,交易商可以以有序列表或阵列的形式提供公钥。
在加密阶段,第一参与者U1用第一参与者的公钥E1加密第一参与者的输出地址O1。所得的加密输出地址包括“混洗输出集”(SSO)。
U1用下一个参与者U2的公钥E2对SSO进行加密,并将加密的SSO转发到U2。然后,U2使用k2对SSO进行解密,使用E2对U2的输出地址O2进行加密,并将该新加密的地址添加到SSO。U2混洗SSO内的加密地址的顺序,使用E3加密混洗的SSO,然后将加密的SSO转发给第三参与者U3。继续该过程直到达到Un,其中n是协议中参与者的总数。在本说明中,选择n=4来简化示例,但通常更大的n值是优选的。将最后一个参与者的加密输出地址添加到SSO后,Un执行最终混洗,使用E1对SSO加密,并将SSO发回第一个参与者U1。
在图4所示的示例中,第一参与者402对第一参与者的输出地址412进行加密,并将该地址添加到第一混洗输出集410。第一参与者402使用第二参与者404的公钥对第一混洗输出集410进行加密,并将加密的第一混洗输出集提供给第二参与者404。
第二参与者404对第二参与者的输出地址418进行加密,并将该地址添加到包括第一参与者的输出地址416的第二混洗输出集414。第二参与者404使用第三参与者406的公钥对第二混洗输出集414进行加密,并将加密的第二混洗输出集提供给第三参与者406。
第三参与者406对第三参与者的输出地址426进行加密,并将该地址添加到包括第一参与者的输出地址422和第二参与者的输出地址424的第三混洗输出集420。第三参与者406使用第四参与者408的公钥对第三混洗输出集420进行加密,并将加密的第三混洗输出集提供给第四参与者408。
第四参与者408对第四参与者的输出地址436进行加密,并将该地址添加到包括第一参与者的输出地址430,第二参与者的输出地址432和第三参与者的输出地址434的第四混洗输出集428。第四参与者408使用第一参与者402的公钥对第四混洗输出集428进行加密,并将加密的第四混洗输出集提供给第一参与者402。
图5示出了在一个实施例中,作为多CoinJoin交易的一部分执行的解密操作的示例。在一个实施例中,作为解密阶段的一部分,SSO被路由到n个原始参与者中的每一个。在第一加密混洗循环的结尾,第一参与者U1502拥有第一混洗输出集540。第一混洗输出集540包括第一加密输出地址542、第二加密输出地址544、第三加密输出地址546和第四加密开放地址548。U1502对SSO进行解密,在SSO中搜索第一参与者的加密输出地址542,并使用关联的私钥k1对该地址进行解密。
此时,第一参与者获悉其输出地址在SSO中的新位置。在解密阶段,参与者检查其输出地址的位置,以便稍后知道哪个子组负责广播包括它的CoinJoin交易。然而,参与者仍然不知道其他参与者的输出的位置。
为此目的,交易商创建一个临时公钥/私钥对:(ED,kD)并且使公钥可被参与者使用。参与者将使用ED对混洗的SSO中的输出地址(在图5中表示为集510的地址512,集520的地址522和524,集530的地址532、534和536,以及集540的地址542、544、546和548)进行加密。
随着解密阶段的进行,第一参与者使用关联的私钥k1对其输出地址进行解密,并用ED对O1进行重新加密。然后,U1用第二参与者的公钥P2加密新的SSO,并将第二加密集510转发到U2504。第二加密集510包括第一加密输出地址512、第二加密输出地址514、第三加密输出地址516和第四加密开放地址518。第二参与者使用k2对SSO进行解密,找到第二参与者的输出地址514,使用k2对其进行解密,并使用ED对其进行重新加密。然后,U2504用公钥P3加密新的SSO,并将第三加密集520转发到U3506。第三加密集520包括第一加密输出地址522、第二加密输出地址524、第三加密输出地址526和第四加密开放地址528。第三参与者使用k3来解密SSO,找到第三参与者的输出地址514,使用k3来解密SSO,并使用ED来重新加密SSO。然后,U3506用公钥P4加密新的SSO,并将第四加密集530转发到U4508。第四加密集530包括第一加密输出地址532、第二加密输出地址534、第三加密输出地址536和第四加密开放地址538。在各种示例中,该过程继续,直到每个参与者在SSO中找到其加密的输出地址,并用其相应的解密(和加密ED)值替代它。
最后一个参与者508用ED加密SSO(而不是使用E1加密),并将加密的SSO发送给交易商。然后,交易商拥有一个加密输出集。只有交易商知道私钥kD并因此可以解密该集和其中的每个输出地址。
SSO中输出地址的这种排列表示将输出包括在CoinJoin交易中的最终顺序。
图6示出了在一个实施例中,作为多CoinJoin交易的一部分执行的输出地址的重新排序的示例。在如上所述对输出地址进行混洗之后,每个参与者知道他们在序列中的初始位置和他们的输出地址的最终位置。图5示出了示例中具有四个参与者的输出地址的可能的最终顺序。在该示例中,第三参与者U3知道其输出地址是SSO中的第一元素。结果,U3知道其输出地址将被包括在第一CoinJoin交易中。
交易商将创建这两个CoinJoin交易,并将不完整的交易发送给参与者,参与者将添加他们的输入,签名交易,并将其提交以包括在区块链中。在交易商将该交易发送到参与者之前,每个参与者将创建并广播交易,其中如果所有的CoinJoin交易成功广播时协议结束,则他们将解锁稍后可收回的一些货币。在一个实施例中,第一参与者提交第一输入610,第二参与者提交第二输入612,第三参与者提交第三输入614,第四参与者提交第四输入616。如果协议过早终止(并非所有CoinJoin交易被广播),则考虑采用补偿机制。
在一个实施例中,协议确保该协议中涉及的交易是不可联系的。这意味着攻击者不能轻松地联系发送到网络的CoinJoin交易。此外,在存款交易和CoinJoin交易之间没有建立联系。因此,如下所述,使用交易商和参与者之间的共享秘密以及从累积树得出的量来生成P2SH地址。
使用公开可用的信息和Diffie-Hellman密钥交换协议,交易商为每个参与者Ui组成一个秘密ci,并与该参与者共享:
ci=H(v×Pi)=H(Q×yi)
参与者使用此共享密钥创建新的公钥:
Bi=Pi+Q+ci×g
Bi=si×g,其中si=yi+v+ci
si是与Bi关联的私钥。虽然Pi和Q是公知的,但是通常只有交易商和参与者Ui知道共享秘密ci。结果,只有交易商和参与者Ui知道公钥Bi,而没有人(参与者或交易商)知道关联的私钥si(v仅为交易商所知,并由参与者Ui对yi进行保密)。交易商可以验证Ui使用公钥Bi生成的比特币地址的有效性。为了解锁发送到该地址的资金,参与者Ui需要计算v(即,累积树的全局摘要)以便重建私钥si。这也保护了参与者免受试图窃取参与者的资金的恶意交易商的侵害。
每个参与者Ui选择随机数并将其传送给交易商ωi。参与者知道SSO中输出地址的初始和最终顺序,就可以创建以下公钥:
Ci→j=Wi+Pj=ci→j×g,其中ci→j=ωi+yj
其中i对应于输出地址的初始索引(序列中参与者Ui的实际位置),并且j对应于混洗之后的输出的索引。Pj是参与者Uj提供的公钥。尽管交易商和参与者Ui都知道公钥θi和Pj,并且这允许交易商验证从公钥Ci→j得出的任何地址的有效性,但他们都不知道相关的私钥ci→j。实际上,在协议的这一点上,没有人(参与者或交易商)知道秘密ci→j。交易商和参与者Ui知道第一部分(ωi),而只有参与者Uj知道第二部分(yj)。如果交易商要公开ωi,则仅有参与者Uj可以计算秘密ci→j并解锁发送到源自Ci→j的地址的资金。
图7示出了在一个实施例中由作为多CoinJoin交易的一部分的存款的参与者生成的锁定脚本700的示例。
为每个参与者Ui创建两个新的公钥:Bi702和Ci→j706,其有效性由交易商验证:
-Bi=si×g,其中si=yi+ci。只有参与者Ui知道私钥si。
-Ci→j=ci→j×g,其中ci→j=ωi+yj。交易商和参与者Ui都知道公钥Ci→j。请注意,参与者Uj不知道公钥Ci→j。然而,如果(在某个时间点)交易商要公开ωi,则(仅)参与者Uj可以计算秘密ci→j。
参与者Ui使用这两个公钥创建以下锁定脚本700,如图7所示。该脚本用于在完成和提交CoinJoin交易以包括在区块链中之前锁定由每个参与者进行的y个比特币的存款。
锁定时间参数使用操作码OP_CHECKSEQUENCEVERIFY定义。BIP112中引入了比特币脚本***(OP_CHECKSEQUENCEVERIFY)的新操作码;它允许根据所花费的输出时间来限制脚本的执行路径。
ΔT 704对应于在区块链上确认交易之后的一段时间,在此期间不能花费输出(尝试解锁此UTXO的任何交易将不会被挖掘,直到某个时间跨度或在区块中花费的输出的使用期限)。
图8示出了在一个实施例中由多CoinJoin交易中的四个参与者创建、签名和广播的存款交易800的示例。存款交易800被提交以包括在区块链中。一旦被包括在区块链中,交易商就可以将部分CoinJoin交易转发到参与者,以便在广播之前包括他们的输入和签名。
图8所示的实施例示出了第一存款交易802、第二存款交易804、第三存款交易806和第四存款交易808。每个存款交易由相应的参与者提交。第一存款交易802包括提交y个比特币的第一输入810。第二存款交易804包括提交y个比特币的第二输入812。第三存款交易806包括提交y个比特币的第三输入814。第四存款交易808包括提交y个比特币的第四输入816。
在一个实施例中,每个存款交易包括按三个条件之一支付y个比特币的输出。第一存款交易802包括第一输出脚本818。第二存款交易804包括第二输出脚本820。第三存款交易806包括第三输出脚本822。第四存款交易808包括第四输出脚本824。在图8所示的实施例中,可以以三种方式索取每个存款交易的输出:可以由特定参与者索取作为成功CoinJoin交易的一部分的输出,可以在特定时间量ΔT之后由存款人索取输出,或者可以在大于ΔT的第二时间量之后由存款人索取输出。
在图8所示的实施例中,包括在存款交易中解锁UTXO的第三选项,并且该选项在时间间隔ΔT′>ΔT之后可用。第三种选择是一种安全措施,如果协议过早结束,则允许参与者在某个时间点之后赎回他们的资金(例如,提供针对交易商的防护)。在该第三选项中,参与者为要解锁的资金(在ΔT′之后)提供其签名。可以修改图7中的脚本以包括该第三选项。
一旦被包括在区块链中,交易商就将部分CoinJoin交易转发给参与者。
图9示出了在一个实施例中由多CoinJoin交易中的参与者创建和签名的两个CoinJoin交易的示例。
在示例中,交易商创建CoinJoin交易902和912,包括在SSO中给出的输出地址,并且在使用OP_RETURN操作符的交易中包括额外的信息。第一CoinJoin交易包括第一输入904、第二输入906、第一输出908和第二输出910。第二CoinJoin交易包括第一输入914、第二输入916、第一输出918和第二输出920。
知道了累积树中所有元素的哈希值和陷门信息s,交易商就会计算出累积树的本地摘要(如图3所示的ψ(a)和ψ(b))。交易商将参与者子组的本地摘要添加为CoinJoin交易中可证明的可解锁输出,子组中的参与者需要在广播之前完成此交易。
然后,交易商将每个不完整的CoinJoin交易发送到每个子组中的第一参与者:在示例中,被发送到U1,被发送到U3。给定子组中的参与者可以协作并交换他们的各自的元素的哈希,以便他们可以计算其公共本地摘要并验证由交易商放入OP_RETURN脚本中的数据。
子组中的第一参与者添加他们的输入,并使用标志SIGHASH_ALL|ANYONECANPAY来签名交易。然后,它将部分签名的交易转发到下一个参与者。这一直持续到子组中的最后一个参与者添加并签名CoinJoin交易并在区块链上广播完成的CoinJoin交易为止。
在一个实施例中,图10示出了由于被交易商计算机***和一个或多个参与者计算机***执行,而执行多CoinJoin交易的过程的示例。流程图示出了在框1002处开始的过程1000。在框1004,交易商生成用于生成CoinJoin交易的累积树,并且参与者执行与交易商的密钥交换。在框1006,参与者对其输出地址进行混洗以确定CoinJoin交易的最终排序和分组。在框1008,每个参与者生成提交多个比特币的存款交易。
在判定框1010,交易商确定所有参与者是否已经将他们的存款提交到区块链。如果不是所有的参与者都已经将他们的存款提交到区块链,则执行在框1012处停止,并且CoinJoin过程被中止。如果交易商确定所有参与者已经将其存款提交到区块链,则执行进行到框1014,其中交易商生成CoinJoin交易,并且CoinJoin交易在参与者之间被路由以获得必要的签名。在框1016,交易商确定交易是否被成功地签名和提交到区块链,如果某些或全部交易存在问题,则交易商执行退还或补偿现场交易的适当参与者的操作。
在一个实施例中,在交易商和参与者之间协商时间点TI,使得在到达该时间点之前,所有CoinJoin交易应当被包括在区块链中。当到达该时间时,所有的N个CoinJoin交易将被包括在区块链中,或者不被包括在区块链中。
情况1:所有N个CoinJoin交易在TI之前都被包括在区块链中。
该CoinJoin交易都在TI之前被包括在区块链中,并且参与者在每个OP_RETURN脚本中收集数据。然后,参与者可以计算累积树的全局摘要d。实际上,在示例中,只广播两个CoinJoin交易,全局摘要可以表示为本地摘要的函数,如下所示:
d=ψ(r)=g(h(ψ(a))+s)(h(ψ(b))+s)
情况2:并非所有的N个CoinJoin交易在TI之前都被包括在区块链中。
如果由于任何原因参与者没有添加其输入并签名与其子组关联的CoinJoin交易,则该交易将永远不会被包括在区块链中。
结果,参与者将不能重建累积树的全局摘要,因此将不能像在情况1中那样解锁在他们的存款中所花费的资金。
在这种情况下,参与者分为四类:
第1类:此类参与者花费了他们的输入(他们签署的CoinJoin交易包括在区块链中),并在其输出地址接收货币(他们的输出地址包括在区块链中的CoinJoin交易之一中)。在广播一些或所有CoinJoin交易之后,这些参与者具有-y个比特币余额。
第2类:此类参与者花费他们的输入但没有收到他们的输出地址的货币。在只广播一些CoinJoin交易之后,这些参与者具有-x-y个比特币余额。
第3类:此类参与者没有解锁他们的输入(他们签名或没有签名的交易没有被发送或无效,因此没有被包括在区块链中),但是接收到他们的输出地址的货币。在只广播一些CoinJoin交易之后,这些参与者具有x-y个比特币余额。
第4类:此类参与者未将其输入解锁且未接收到他们的输出地址的货币。在广播一些或没有广播CoinJoin交易之后,这些参与者具有-y个比特币余额。
情况1对应于所有参与者属于第1类的场景。
交易商具有时间窗口[TI,ΔT],以帮助参与者收回他们的存款,并且如果他们属于第2类,则可能被补偿。
交易商公开参与者的ωi值的集合,其中这些参与者的输出地址体现在成功包括在区块链中的CoinJoin交易中。这使那些添加了输入并签名CoinJoin交易的参与者得到了应有的补偿,这些参与者可能属于第2类或第4类。
然后,其他参与者可以在某个时间点t>ΔT赎回其存款交易中发送的资金,前提是这些资金在补偿阶段仍未被其他参与者花费。
交易商应该在经过时间ΔT之前公开ωi值的子集。事实上,如果除了一个CoinJoin交易外,所有的CoinJoin交易都包含在区块链中,恶意子组中一些或所有没有广播其分配的CoinJoin交易的参与者可能知道所有的本地摘要,因此能够重建所需的全局摘要,以解锁每个参与者的存款交易中的资金支出。然后,可以想象这样一种情况:恶意参与者没有将其输入添加到分配给其组的CoinJoin交易中,而是在另一个CoinJoin交易中包括其输出地址处接收了货币(第3类)。在ΔT之后,除非已经索取在其存款交易中发送的UTXO,否则知道其本地摘要的参与者可以重建全局摘要并收集该UTXO。
在时间点Tl<t<ΔT,四个参与者的余额如下:
在时间点ΔT<t<ΔT′,四个参与者的余额已经改变,如下所示:
在时间点t>ΔT′,四个参与者的余额恢复如下:
每个存款交易花费的比特币的数量,比方说y个比特币,应该非常接近于在CoinJoin交易中混合的数量x个比特币,从而无论CoinJoin交易是否全部广播,每个参与者的总余额都接近于零。CoinJoin和存款交易中包括的矿工费用不同,可能会产生很小的差异。
图11示出了在一个实施例中,由于被交易商计算机***和一个或多个参与者计算机***执行,而执行密钥交换并建立用于多CoinJoin交易中的累加器树的过程的示例。流程图示出了过程1100,该过程在框1102处开始,其中每个参与者计算机***Ui生成元素ei,并将元素h(ei)的哈希和盐wi发送给交易商。在框1104,交易商选择陷门信息s并创建累积树。在框1106,陷门信息s由交易商保密,但是交易商发布其中这些值是从陷门信息s得出的椭圆曲线上的点,并且其中n是树中参与者的数量或叶子的数量。在框1108,交易商创建公钥Q=vxg并发布公钥(v=xD)。在框1110,交易商发布公钥ED=kDxg。在框1112,每个参与者Ui公布他们的公钥Ei=kixg和Pi=yixg。
图12示出了在一个实施例中,由于被交易商计算机***和一个或多个参与者计算机***执行,而重新设置输出地址,生成存款,以及为多CoinJoin交易创建CoinJoin交易的过程的示例。过程1200在框1202处开始,多CoinJoin交易中的每个参与者执行他们的输出地址的混洗,如图4所示。在框1204,将混洗输出地址集提供给交易商计算机***。在框1206,交易商将经混洗的输出地址分成多个子集,其中每个子集成为比特币交易。在框1208,每个参与者如上所述创建其特定的锁定脚本,并在其存款交易中提交一定量的比特币以为多重CoinJoin交易提供资金。
在框1210,交易商确定存款是否已由所有参与者提交。如果不是所有的参与者都已经提交了他们的存款,则在超时之后,执行进行到框1212,并且多CoinJoin交易被中止。在框1214,交易商计算机***为每个子集创建CoinJoin交易,然后将每个交易发送到该子集的第一参与者。在框1216,参与者在他们自己之间路由交易,并且每个参与者签名他们的交易。在框1218,交易商确定是否需要任何退款或补偿,并执行如图13中所描述的关联的操作。
图13示出了在一个实施例中,由于被交易商计算机***和一个或多个参与者计算机***执行,而处理退款并补偿多CoinJoin交易的过程的示例。过程1300开始于框1302。在判定框1304,交易商计算机***确定是否所有交易都已被广播并提交到区块链。如果所有交易已经被广播,则执行进行到判定框1306。在判定框1306处,如果第一到期时间未过期,则执行返回到判定框1304。如果第一到期时间已经到期,则执行进行到框1308,参与者确定全局摘要并解锁在存款中提交的资金,并且执行进行到框1310,在框1310,该过程结束。
在判定框1304处,如果交易商计算机***确定所有交易已经被广播并提交到区块链,则执行进行到框1312,在框1312,交易商向其输出地址被包括在成功的存款交易中但被包括在行为不端的子集中的那些参与者发布盐。在框1314,在交易中余额为负的参与者确定他们的私钥并解锁要恢复他们的存款的任何补偿。在判定框1316,***在进行到框1318之前等待直到大于第一到期时间的第二到期时间已经过期。在框1318,其余参与者解锁在其存款上花费的资金,并且执行进行到框1310,在框1310,该过程结束。
图14是可用于实现本公开的至少一个实施例的计算设备1400的示意性简化框图。在各种实施例中,所述计算设备1400可用于实现以上示出和说明的任何***。例如,所述计算设备1400可配置为用作数据服务器、网络服务器、便携式计算设备、个人计算机或任何电子计算设备。如图14所示,所述计算设备1400可包括一个或多个处理器1402。在实施例中,所述处理器1402配置为通过总线子***1404与多个***子***进行通信并可操作地耦合到所述多个***子***。在一些实施例中,这些***子***包括存储子***1406,所述存储子***1406包括存储器子***1408、文件/磁盘存储子***1410、一个或多个用户界面输入设备1412、一个或多个用户界面输出设备1414以及网络接口子***1416。该存储子***1406可用于临时或长期存储信息。
在一些实施例中,所述总线子***1404提供了一种机制,使所述计算设备1400的各种组件和子***按预期进行通信。所述总线子***1404被图示为单条总线,但在替代实施例中,所述总线子***可使用多条总线。在一些实施例中,所述网络接口子***1416提供到其他计算设备和网络的接口。在一些实施例中,所述网络接口子***1416作为接口用于从其他***接收数据并将所述计算设备1400的数据发送给其他***。在一些实施例中,所述总线子***1404用于传递细节信息、搜索项等数据。
在一些实施例中,用户界面输入设备1412包括一个或多个用户输入设备,例如键盘;指点设备,如集成鼠标、轨迹球、触摸板或图形平板电脑;扫描仪;条形码扫描仪;包括在显示器中的触摸屏;音频输入设备,如语音识别***、麦克风;以及其他类型的输入设备。
在一些实施例中,所述计算设备1400包括至少一个本地时钟1424。在一些实施例中,所述本地时钟1424是一个计数器,表示从特定日期开始的滴答声的数量。在一些实施例中,所述本地时钟1424集成在所述计算设备1400内。在各种实施例中,所述本地时钟1424用于以特定的时钟脉冲同步所述计算设备1400及其中包括的子***的处理器中的数据传递,并可用于协调所述计算设备1400和数据中心其他***之间的同步操作。在另一个实施例中,所述本地时钟是可编程间隔计时器。
Claims (15)
1.一种计算机实现的方法,包括:
生成数据结构,其中所述数据结构包括压缩信息,所述压缩信息标识在输出混洗过程中的参与者计算机***集;
从所述参与者计算机***集中,获取混洗输出地址集;
确定对应于所述参与者计算机***集的贡献记录集已经被提交到区块链;
至少部分地基于所述混洗输出地址集和所述数据结构来生成多个交易;以及,
将所述多个交易提交到所述区块链。
2.根据任一前述权利要求所述的计算机实现的方法,还包括:
在第一超时之后,确定与个体参与者计算机***集关联的个体交易已经失败;以及,
作为确定所述个体交易已经失败的结果,向所述个体参与者计算机***集提供加密信息,其中所述加密信息允许所述个体参与者计算机***集从所述贡献记录集中索取补偿,或者收回所述个体参与者计算机***的贡献记录。
3.根据任一前述权利要求所述的计算机实现的方法,其中:
每个贡献记录集包括一个锁定脚本;并且,
所述锁定脚本允许个体参与者计算机***基于所述混洗输出地址集来索取交易输出。
4.根据任一前述权利要求所述的计算机实现的方法,还包括:其中所述锁定脚本允许使用所述加密信息来收回输入。
5.根据任一前述权利要求所述的计算机实现的方法,其中所述锁定脚本允许在第二超时之后收回输入,所述第二超时大于所述第一超时。
6.根据任一前述权利要求所述的计算机实现的方法,其中所述锁定脚本包括OP_CHECKSEQUENCEVERIFY操作符。
7.根据任一前述权利要求所述的计算机实现的方法,其中通过使混洗输出地址集被路由到所述参与者计算机***集中的每个参与者计算机***来获取所述混洗输出地址集。
8.根据任一前述权利要求所述的计算机实现的方法,其中所述贡献记录集中的每条贡献记录包括支付给交易商的交易费用,以促进所述计算机实现的方法。
9.根据任一前述权利要求所述的计算机实现的方法,其中所述数据结构是累积树,其中所述累积树的叶节点表示所述参与者计算机***集,并且参与者计算机***具有所述多个交易中的输入地址和输出地址。
10.根据任一前述权利要求所述的计算机实现的方法,其中个体交易中的参与者计算机***对应于所述累积树的中间节点下方的叶节点。
11.根据任一前述权利要求所述的计算机实现的方法,其中每个参与者计算机***提供与所述累积树的每个叶节点关联的哈希值。
12.根据任一前述权利要求所述的计算机实现的方法,其中所述交易是资产混合交易。
13.根据任一前述权利要求所述的计算机实现的方法,其中每个参与者计算机***是具有一个或多个处理器以及存储指令的存储器的计算机***,所述一个或多个处理器执行所述指令时,实现加密货币钱包应用。
14.一种***,包括:
处理器;以及,
存储器,包括可执行指令,其中所述处理器执行所述可执行指令时,使得所述***执行根据任一前述权利要求所述的计算机实现的方法。
15.一种非暂时性计算机可读存储介质,其上存储有可执行指令,其中计算机***的处理器执行所述可执行指令时,使得所述计算机***至少执行根据任一前述权利要求所述的计算机实现的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1811968.5 | 2018-07-23 | ||
GBGB1811968.5A GB201811968D0 (en) | 2018-07-23 | 2018-07-23 | Computer-implemented System and Method |
PCT/IB2019/056105 WO2020021394A2 (en) | 2018-07-23 | 2019-07-17 | Computer-implemented system and method for asset mixing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112470423A true CN112470423A (zh) | 2021-03-09 |
Family
ID=63364392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980049508.1A Pending CN112470423A (zh) | 2018-07-23 | 2019-07-17 | 用于资产混合的计算机实现的***和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220086006A1 (zh) |
EP (1) | EP3827550A2 (zh) |
JP (2) | JP7414795B2 (zh) |
CN (1) | CN112470423A (zh) |
GB (1) | GB201811968D0 (zh) |
WO (1) | WO2020021394A2 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI772654B (zh) * | 2019-06-21 | 2022-08-01 | 天宿智能科技股份有限公司 | 跨區塊鏈第三方仲裁履約保證系統及其方法 |
WO2021162738A1 (en) * | 2020-02-14 | 2021-08-19 | Google Llc | Secure multi-party reach and frequency estimation |
JP2021144571A (ja) * | 2020-03-13 | 2021-09-24 | 富士通株式会社 | 情報処理装置、送信制御方法、および通信プログラム |
JP7432443B2 (ja) * | 2020-05-28 | 2024-02-16 | 株式会社日立製作所 | 移行支援システム、移行支援方法、およびノード |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010024931A1 (en) * | 2008-08-29 | 2010-03-04 | Brown University | Cryptographic accumulators for authenticated hash tables |
GB201709518D0 (en) * | 2017-06-15 | 2017-08-02 | Nchain Holdings Ltd | Computer-implemented system and method |
US20190378162A1 (en) * | 2018-06-06 | 2019-12-12 | KR8OS, Inc dba Lucidity | Systems and methods for enforcing advertising standards and digital advertisement measurements |
GB2616862A (en) * | 2022-03-22 | 2023-09-27 | Nchain Licensing Ag | Set shuffling |
-
2018
- 2018-07-23 GB GBGB1811968.5A patent/GB201811968D0/en not_active Ceased
-
2019
- 2019-07-17 CN CN201980049508.1A patent/CN112470423A/zh active Pending
- 2019-07-17 WO PCT/IB2019/056105 patent/WO2020021394A2/en unknown
- 2019-07-17 JP JP2021500693A patent/JP7414795B2/ja active Active
- 2019-07-17 EP EP19745772.4A patent/EP3827550A2/en active Pending
- 2019-07-17 US US17/262,658 patent/US20220086006A1/en active Pending
-
2023
- 2023-12-28 JP JP2023222097A patent/JP2024023991A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
GB201811968D0 (en) | 2018-09-05 |
JP2024023991A (ja) | 2024-02-21 |
JP7414795B2 (ja) | 2024-01-16 |
US20220086006A1 (en) | 2022-03-17 |
EP3827550A2 (en) | 2021-06-02 |
JP2021531689A (ja) | 2021-11-18 |
WO2020021394A2 (en) | 2020-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109937557B (zh) | 用于信息保护的***和方法 | |
Delgado-Segura et al. | A fair protocol for data trading based on bitcoin transactions | |
CN110337665B (zh) | 用于信息保护的***和方法 | |
CN110089069B (zh) | 用于信息保护的***和方法 | |
EP3364598B1 (en) | Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys | |
CN108781161B (zh) | 用于控制和分发数字内容的区块链实现的方法 | |
Ziegeldorf et al. | Coinparty: Secure multi-party mixing of bitcoins | |
CN111066283A (zh) | 对区块链网络上实体提供的数据进行通信、存储和处理的***和方法 | |
JP7449423B2 (ja) | ブラインド化された帰結選択のためのブロックチェーンで実装されるセキュリティー・システムおよび方法 | |
WO2019171270A1 (en) | Methods and systems for controlling access to, and integrity of, resources on a blockchain | |
JP7414795B2 (ja) | アセット混合のための、コンピュータにより実施されるシステム及び方法 | |
CN111819817A (zh) | 针对基于双线性映射累加器的授权的区块链实现的方法和*** | |
CN113875186A (zh) | 知识证明 | |
CN111819815A (zh) | 用于转移对数字资产的控制的计算机实现的方法和*** | |
CN111615810A (zh) | 获取数字签名的数据的计算机实现方法和*** | |
CN115053226A (zh) | 将密钥映射到区块链覆盖网络 | |
KR20230093432A (ko) | 서비스 거부 공격들의 식별 | |
CN114747172A (zh) | 加密链接身份 | |
CN114424223A (zh) | 可分割代币 | |
Sui et al. | AuxChannel: Enabling efficient bi-directional channel for scriptless blockchains | |
Pei et al. | Smart contract based multi-party computation with privacy preserving and settlement addressed | |
JP2023540739A (ja) | 分散型台帳上の、匿名性取消を伴う、セキュアな、トレース可能な、および、プライバシー保護の、デジタル通貨送金のための方法 | |
CN112384939A (zh) | 用于分布式分类账相关交易的链外交换的计算机实现的***和方法 | |
Ackerer et al. | The Underlying Technology for Cryptoassets | |
You et al. | A Multi-Party, Multi-Blockchain Atomic Swap Protocol with Universal Adaptor Secret |
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 |