CN114424223A - 可分割代币 - Google Patents
可分割代币 Download PDFInfo
- Publication number
- CN114424223A CN114424223A CN202080066671.1A CN202080066671A CN114424223A CN 114424223 A CN114424223 A CN 114424223A CN 202080066671 A CN202080066671 A CN 202080066671A CN 114424223 A CN114424223 A CN 114424223A
- Authority
- CN
- China
- Prior art keywords
- transaction
- token
- party
- amount
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
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/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
-
- 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/02—Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
-
- 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/22—Payment schemes or models
- G06Q20/223—Payment schemes or models based on the use of peer-to-peer networks
-
- 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
- G06Q20/367—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
- G06Q20/3678—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes e-cash details, e.g. blinded, divisible or detecting double spending
-
- 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
- G06Q20/3825—Use of electronic signatures
-
- 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
-
- 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/403—Solvency checks
- G06Q20/4037—Remote solvency checks
-
- 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/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/061—Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer 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
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- 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
- 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
-
- 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/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- General Physics & Mathematics (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
一种生成用于区块链的第二交易的计算机实现的方法。所述区块链包括第一交易,所述第一交易包括第一代币和第一输出,所述第一输出在第二方和第一方之间转移数字资产数额。所述第一代币表示除所述数字资产以外的代币资产的第一数额,所述第二交易用于将表示所述代币资产的第二数额的第二代币从第一方转移至第三方。所述方法由所述第一方实施,并且包括生成所述第二交易。所述第二交易包括第一输入和第一输出,所述第一输入被配置为解锁所述第一交易的第一输出,所述第一输出包括所述第二代币。所述第二代币包括表示所述代币资产的所述第二数额的数据,所述第二数额小于所述第一数额。
Description
技术领域
本公开涉及生成可分割的代币并且在各方之间转移代币的方法。
背景技术
区块链是指一种分布式数据结构形式,其中在点对点(P2P)网络中的多个节点中的每个节点处维护区块链副本。区块链包括一系列数据区块,其中每个区块包括一笔或更多笔交易。每笔交易都可以回指序列中的先前交易,其可以扩展一个或更多区块。通过称为“挖掘”的过程,交易可以通过提交到网络包括在新区块中,该过程涉及多个挖掘节点中的每个挖掘节点争相执行“工作量证明”,即基于等待包括在区块中的未决交易池解决加密难题。
区块链中的交易通常用于传递数字资产,即用作价值储存手段的数据。但是也可利用区块链实现区块链上的分层附加功能。例如,区块链协议可允许在交易输出中存储附加用户数据。现代区块链在单一交易中可储存的最大数据容量在不断增加,从而能够并入更复杂的数据。例如,这可用于在区块链中存储电子文档,甚至音频或视频数据。
网络中的每个节点可以具有以下三个角色中的任何一个、两个或全部:转发、挖掘和存储。转发节点在整个网络节点中传播交易。挖掘节点将交易挖掘到区块中。存储节点各自对区块链中的已挖掘区块存储自己的副本。为了将交易记录在区块链中,一方将该交易发送到网络中的节点中的一个节点进行传播。接收该交易的挖掘节点可以争相将该交易挖掘到新区块中。每个节点被配置为遵守相同的节点协议,该协议将包括用于确认交易有效的一个或更多个条件。无效交易将不会传播或挖掘到区块中。假定交易已经核实有效,从而在区块链上被接受,该附加用户数据将因此作为不可改变的公共记录,继续存储在P2P网络中的各个节点处。
此前,曾有人提出过通用电子现金***,以下称为Ok-Oh***(Okamoto T.,OhtaK.(1992)通用电子现金.In:Feigenbaum J.(eds)密码学进展—CRYPTO’91.CRYPTO 1991.计算机科学讲义第576卷.Springer,柏林,海德尔堡),其中受信任银行向其客户发放电子现金。一旦该电子现金被发放,客户则可灵活地将现金分割成更小的部分。为了花费分割的部分,接收方必须依靠银行验证交易。验证后,银行将以法定方式结算交易。
发明内容
一般而言,尽管Okamoto和Ohta解决了双重花费(double spending)的问题,但未考虑到再次出现双重花费的问题。这是指客户向另一商户再次付费的情况。此外,Ok-Oh***仅限于电子现金。
本文描述的技术通过使用区块链网络的安全性来分发表示任何资产的可分割代币,从而改善了先前提出的***。与Ok-Oh***一样,可分割代币可表示电子现金。但是,根据本文公开的实施例,可分的代币不限于表示电子现金,相反可用于表示任何资产,例如公司的股份、艺术品或房地产。可分割代币还可兑换服务,例如代币可表示可从内容提供者流式传输的媒体内容的总量(例如,以分钟为单位)。
单一代币可分成多个子代币,每个均表示比单一代币更小的资产数额。这些代币可用于兑换服务、转移所有权、购买商品等。进一步地,除了提供透明度和可审计性之外,本***的一些实施例继承了Ok-Oh***的所有优点,并且解决了再次出现双重花费的问题。
根据本文公开的一方面,提供了一种生成用于区块链的第二交易的计算机实现的方法,该区块链包括第一交易,该第一交易包括第一代币和第一输出,其在第二方和第一方之间转移数字资产数额,第一代币表示除所述数字资产以外的“代币资产”(即第二资产或另外的资产)的第一数额,该第二交易用于将表示该代币资产的第二数额的第二代币从第一方转移至第三方。该方法由第一方实施并且包括:生成该第二交易,其中该第二交易包括i)第一输入,其被配置为解锁该第一交易的该第一输出,和ii)第一输出,其包括该第二代币,其中该第二代币包括表示该代币资产的该第二数额的数据,该第二数额小于该第一数额。
该第一代币不可变地存储在区块链上的第一交易中,充当已发放给第一方的代币资产的数额记录。比如,代币可以是货币(在这种情况下,指英镑)的数额(例如,100英镑)。第二交易具有用于解锁第一交易的输入,因此可向任何方证明已发放第一代币。第二交易具有存储第二代币的输出。第二代币是第一代币的分割部分。即,其表示第一代币所表示的代币资产的第二较小数额(例如,50英镑或75英镑)。为了分割第一代币,第一方在第二代币中包含表示第二数额的数据。第二数额小于第一数额。例如,数据可包含一个或更多个值。每个值表示第一数额的子数额,加起来便是第二较小数额。比如,如果第一方想转移75英镑给第三方,则第二代币可包含分别表示50英镑和25英镑的两个值。在此示例中,第三方仍然有价值25英镑的原始代币可用于其他用途。需注意,术语“代币资产”仅用作由代币所表示的资产的标签。这可以是数字的或物理的(有形的)资产,并且可以是除了作为区块链网络的区块链协议的一部分固有地转移的数字资产之外的任何资产。
再如,可向第一方(爱丽丝)发放(使用第一交易)第一代币,该第一代币表示资产的全部(即100%)所有权,例如房产。第一方可决定将房产的部分所有权转移给第三方,例如给第一方的子女查理。如果爱丽丝决定向查理转移25%的房产,则她可包含加起来表示25%的一个或更多个值。例如,表示25%的单个值。
根据本文公开的另一方面,提供了一种更新用于区块链的第二交易的计算机实现的方法,该区块链包括第一交易,该第一交易包括第一代币和第一输出,其将数字资产数额从第二方转移至第一方,该第一代币表示除所述数字资产以外的代币资产(即第二资产或另外的资产)的第一数额,该第二交易用于将表示该代币资产的第二数额的第二代币从该第一方转移至第三方。该方法由该第三方实施并且包括:获取该第二交易,其中该第二交易包括i)第一输入,其包括该第一代币,和ii)第一输出,其包括该第二代币,其中该第二代币包括一个或更多个值,每个值均用于表示该代币资产的该第一数额的相应子数额;基于a)每个值均至少基于该第一交易的标识符而生成、和b)该第二交易中的该第一代币与该第一交易中的该第一代币相同是否成立,来确定该第二代币是否为有效代币;基于所述确定,通过使用该第三方的公钥签署该第二交易来更新该第二交易;并且,将该更新的第二交易传输至该区块链网络以包含在该区块链中。
例如,第三方可收到来自第一方的第二交易。第二交易具有第一输入和第一输出。第一输入包含第一代币。这可以是上面提到的已向第一方发放的单一代币,例如通过银行。或者,第一代币本身可以是更大代币的切割部分。第一输出包含一个或更多个值,每个表示由第一代币定义的数额的子数额。例如,第一数额可表示120个单位,每个单位可兑换一分钟的视频,值可表示45个单位,例如一个值表示30个单位,并且一个值可表示15个单位。第三方实施一组检查以确定第二代币的有效性。如果第三方满意,则第三方签署第二交易(例如,通过将包括第三方签名的输入添加至第二交易)。这会更新第二交易。获取的第二交易可以是未提交至区块链的模板交易,更新的第二交易可以是实际上提交至区块链的完整交易。
一旦更新的第二交易包含在区块链中,则第二交易充当将可分割代币的特定分割部分从第一方转移到第二方的不可变的记录。因为第二交易由第三方(查理)签署,所以查理已经证明由他本人兑换的代币数额。第二代币已经从第一代币中分割出来。第三方可以自由地进一步分割第二代币。
第三方可以向第一方提供第二代币的交换物,例如价值第二代币的第二数额的物品。比如,第二数额可以是75英镑,查理可给爱丽丝价值75英镑的商品或服务。
根据本文公开的另一方面,提供了一种生成用于区块链的第一交易的计算机实现的方法,该第一交易包括第一输出,其将数字资产数额从第二方转移至第一方,该第一交易用于将第一代币从该第二方转移至该第一方,该第一代币表示除所述数字资产以外的代币资产(即第二资产或另外的资产)的第一数额。该方法由第二方实施并且包括:生成该第一交易,其中该第一交易包括i)第一输出,其被配置为当与第二交易的输入一起执行时要求该第二交易的该输入包括该第一方的第一公钥以进行解锁,和ii)第二输出,其包括该第一代币,其中该第一代币包括a)该代币资产的该第一数额,b)该第一方的加密标识符,该加密标识符通过使用该第一方的第二公钥加密该第一方的标识符而生成,其中该第二公钥包括模数,并且其中该第一代币包括c)该模数。
第二方是向第一方发放第一代币的一方。比如,服务供应商(例如,能源供应商)可以向第一代币发放可兑换一定数量的服务、内容等(例如能源)的代币。代币发放者生成第一交易,该第一交易在交易的输出中包括代币。代币本身包括至少三个数据字段,一个表示代币的全部数额,一个表示第一方的加密标识符。标识符用至少在某种程度上由模数(例如,RSA模数)定义的公钥进行加密。
附图说明
为了帮助理解本公开的实施例并示出如何实施此类实施例,现将仅通过举例的方式参考附图进行说明,其中:
图1是一种用于实现区块链的***的示意性框图;
图2示意性地示出了可记录在区块链中的交易的一些示例;
图3是另一种用于实现区块链的***的示意性框图;
图4示出了一种用于根据基于输出的模型的节点协议来处理交易的节点软件的示意性框图;
图5示意性地示出了二叉树结构;
图6示意性地示出了用于在各方之间转移可分割代币的***;
图7示出了第一区块链交易的示例性表示;
图8示出了第一代币的示例性表示;
图9示出了第二区块链交易的示例性表示;
图10示出了第二代币的示例性表示;
图11示意性地示出了代币数额与二叉树结构的节点之间的映射;
图12示意性地示出了二叉树结构,带用于计算树的节点的方程式;
图13示出了第二区块链交易的更新版本的示例性表示。
具体实施方式
示例性***概述
图1总体地示出了一种用于实现区块链150的示例性***100。***100包括分组交换网络101,通常是诸如互联网的广域互联网。分组交换网络101包括多个节点104,该多个节点被设置成在分组交换网络101内形成点对点(P2P)覆盖网络106。每个节点104包括对等体的计算机设备,不同的节点104属于不同的对等体。每个节点104包括含一个或更多个处理器的处理装置,例如一个或更多个中央处理单元(CPU)、加速器处理器、特定应用程序处理器和/或现场可编程门阵列(FPGA)。每个节点还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。存储器可包括一个或更多个存储器单元,其采用一个或更多个存储器介质,例如诸如硬盘等的磁介质、诸如固态硬盘(SSD)、闪存或电可擦可编程只读存储器(EEPROM)等的电子媒介和/或诸如光盘驱动器等的光学介质。
区块链150包括一系列数据区块151,其中在P2P网络160中的多个节点中的每个节点处维护相应的区块链150副本。区块链中的每个区块151均包括一笔或更多笔交易152,其中该上下文中的交易是指一种数据结构。数据结构的性质将取决于用作交易模型或计划的一部分的交易协议类型。给定的区块链通常全程使用一个特定的交易协议。在一种常见的交易协议中,每笔交易152的数据结构至少包括一个输入和至少一个输出。每个输出指定一个数额,该数额表示属于输出被加密锁定的用户103的数字资产值(需要该用户的签名进行解锁,从而进行赎回或花费)。每个输入指向先前交易152的输出,从而链接这些交易。
节点104中的至少一些节点扮演转发节点104F的角色,这些节点转发并因此传播交易152。节点104中的至少一些节点扮演挖掘区块151的矿工104M的角色。节点104中的至少一些节点扮演存储节点104S(有时也称为“完整副本”节点)的角色,每个存储节点均在相应的存储器中存储相同区块链150的相应副本。每个矿工节点104M还维护等待挖掘到区块151中的交易152的池154。给定节点104可以是转发节点104、矿工104M、存储节点104S或其中两个节点或所有节点的任意组合。
在给定的当前交易152j中,输入(或每个输入)包括指针,该指针引用交易序列中先前交易152i的输出,指定该输出将在当前交易152j中被赎回或“花费”。通常,当前交易可以是池154或任何区块151中的任何交易。尽管为了确保当前交易有效,将需要存在先前交易152i并核实其有效,但是在创建当前交易152j甚至向网络106发送当前交易152j时,不必存在先前交易152i。因此,在本文中,“先前”是指由指针链接的逻辑序列中的前任,而不一定是时间序列中的创建时间或发送时间,因此,不一定排除无序创建或发送交易152i、152j的情况(参见下面关于孤立交易的讨论)。先前交易152i同样可以称为先行交易或前任交易。
当前交易152j的输入还包括先前交易152i的输出被锁定到的用户103a的签名。反过来,当前交易152j的输出可以加密锁定到新用户103b。因此,当前交易152j可将先前交易152i的输入中定义的数额转移到当前交易152j的输出中定义的新用户103b。在某些情况下,交易152可具有多个输出,以在多个用户间分割输入数额(其中一个可以是原始用户103a,以便进行变更)。在某些情况下,一个交易还可以具有多个输入,以将一个或更多个先前交易的多个输出中的数额汇总在一起,并重新分配到当前交易的一个或更多个输出。
上述可称为“基于输出的”交易协议,有时也称为未花费的交易输出(UTXO)的协议(其中输出称为UTXO)。用户的总余额不是用区块链中存储的任何一个数字定义的;相反,用户需要特殊“钱包”应用程序105,以整理该用户的所有UTXO值,这些UTXO值分散在区块链151的许多不同交易152中。
作为基于账户的交易模型的一部分,另一种类型的交易协议可称为“基于账户的”协议。在基于账户的情况下,每笔交易均不通过参考过去交易序列中先前交易的UTXO来定义转移的数额,而是通过参考绝对账户余额进行定义。所有账户的当前状态由矿工单独存储到区块链中,并不断更新。在此类***中,交易使用账户的运行交易记录(也称为“头寸”)进行排序。该值由发送者签名作为其加密签名的一部分,并作为交易引用计算的一部分进行哈希处理。此外,可选的数据字段也可以在交易中签名。例如,如果数据字段中包含先前交易的ID,则该数据字段可指向先前交易。
无论采用何种类型的交易协议,当用户103希望执行新交易152j时,其希望将新交易从其计算机终端102发送至P2P网络106的节点104中的一个(现在通常是服务器或数据中心,但原则上可以是其他用户终端)。此节点104根据在节点104中的每个节点处应用的节点协议检查交易是否有效。节点协议的详细信息将与相关区块链150中使用的交易协议类型相对应,一起形成整个交易模型。节点协议通常要求节点104检查新交易152j中的加密签名是否与预期签名相匹配,这取决于交易152的有序序列中的先前交易152i。在基于输出的情况下,这可包括检查新交易152j的输入中包含的用户加密签名是否与新交易花费的先前交易152i的输出中定义的条件相匹配,其中该条件通常包括至少检查新交易152j的输入中的加密签名是否解锁新交易的输入所指向的先前交易152i的输出。在一些交易协议中,条件可至少部分地由输入和/或输出中包含的自定义脚本定义。或者,这可仅由节点协议单独确定,或可通过其组合确定。无论采用哪种方式,如果新交易152j有效,当前节点会将其转发到P2P网络106中的一个或更多个其他节点104。这些节点104中的至少一些节点还作为转发节点104F,根据相同的节点协议应用相同的测试,从而将新交易152j转发到一个或更多个进一步的节点104,依此类推。通过这种方式,新交易在节点104的整个网络中进行传播。
在基于输出的模型中,给定输出(例如,UTXO)是否花费的定义是,根据节点协议,其是否通过另一个随后交易152j的输入有效赎回。交易有效的另一个条件是其试图花费或赎回的先前交易152i的输出尚未被另一笔有效交易花费/赎回。同样,如果无效,交易152j将不会在区块链中传播或记录。这可防止重复花费,即花费者对同一笔交易的输出花费超过一次。另一方面,基于账户的模型通过保持账户余额防止重复花费。因为同样存在定义的交易顺序,账户余额在任何时候均具有单一定义的状态。
除核实之外,节点104M中的至少一些节点在称为挖矿的过程中争先创建交易区块,该过程以“工作量证明”为基础。在挖矿节点104M处,将新交易添加到区块中尚未出现的有效交易的池中。然后,矿工争相通过尝试解决加密难题来组装交易池154中交易152的新的有效区块151。通常情况下,这包括搜索“随机数”值,从而当随机数与交易池154并置且进行哈希处理时,哈希值的输出满足预定条件。例如,预定条件可以是哈希值的输出具有某个预定义的前导零数。哈希函数的特性是,相对于其输入,其具有不可预测的输出。因此,该搜索只能通过强力执行,从而在试图解决难题的每个节点104M处消耗大量的处理资源。
解决难题的第一矿工节点104M在网络106上宣布难题解决,提供解决方案作为证明,然后网络中的其他节点104则可以轻松检查该解决方案(一旦给出哈希值的解决方案,就可以直接检查该解决方案是否使哈希值的输出满足条件)。基于已在每个此类节点处检查获胜者的已宣布解决方案,获胜者已为其解决该难题的交易池154之后由充当存储节点104S的节点104中的至少一些节点记录在区块链150中作为新区块151。区块指针155还分配给指向区块链中先前创建的区块151n-1的新区块151n。工作量证明有助于降低重复花费的风险,因为创建新区块151需要大量工作,并且由于包含重复花费的任何区块都可能被其他节点104拒绝,因此挖矿节点104M受到激励,不允许在其区块中包含双重花费。一旦创建,则不可修改区块151,因为其根据相同的协议在P2P网络106中的存储节点104S中的每个存储节点进行识别和维护。区块指针155还向区块151施加顺序。由于交易152记录在P2P网络106中每个存储节点104S处的有序区块中,因此提供了交易的不可变公共分类账。
应当注意的是,在任何给定时间争相解决难题的不同矿工104M可能会根据任何给定时间的未挖掘交易池154的不同快照执行该操作,具体取决于他们何时开始搜索解决方案。解决相应难题的人员首先定义新区块151n中包含的交易152,并更新当前未挖掘交易池154。然后,矿工104M继续争相从新定义的未完成池154中创建区块,依此类推。此外,还存在解决可能出现的任何“分叉”的协议,其中两名矿工104M彼此在很短的时间内解决难题,从而传播区块链的冲突视图。简言之,分叉方向最长的成为最终区块链150。
在大部分区块链中,获胜矿工104M会自动获得特殊类型的新交易作为奖励,该新交易创建新的数字资产值(与将数字资产数额从一个用户转移至另一个用户的正常交易截然相反)。因此,获胜节点被视为已“挖掘”一定数量的数字资产。这种特殊类型的交易有时称为“生成”交易,其自动形成新区块151n的一部分。该奖励可激励矿工104M争相参与工作量证明。通常情况下,常规(非生成)交易152还将在其输出中的一个输出中指定附加交易费用,以进一步奖励创建其中包含交易的区块151n的获胜矿工104M。
由于挖掘中涉及的计算资源,通常至少矿工节点104M中的每个矿工节点采用服务器的形式,该服务器包括一个或更多个物理服务器单元,甚至整个数据中心。每个转发节点104M和/或存储节点104S还可采取服务器或数据中心的形式。但是,原则上来说,任何给定节点104均可采用一个用户终端或联网在一起的一组用户终端的形式。
每个节点104的存储器均存储被配置为在节点104的处理装置上运行的软件,以根据节点协议执行其相应的角色并处理交易152。应当理解的是,在本文中归因于节点104的任何动作均可通过在相应计算机设备的处理装置上运行的软件执行。此外,在本文中使用的“区块链”一词是指一般技术类型的通用术语,不限于任何特定专有区块链、协议或服务。
扮演消费用户角色的多方103中的每一方的计算机设备102也连接到网络101。他们充当交易中的付款人和收款人,但不一定代表其他方参与挖掘或传播交易。他们不一定运行挖矿协议。出于说明目的,示出了双方103及其相应的设备102:第一方103a及其相应的计算机设备102a,以及第二方103b及其相应的计算机设备102b。应当理解的是,更多此类当事方103及其相应的计算机设备102可能存在并参与***,但为了方便起见,未进行说明。每一方103均可以是个人或组织。仅出于说明目的,在本文中,第一方103a称为爱丽丝,第二方103b称为鲍勃,但应当理解的是,这并不仅限于爱丽丝或鲍勃,且本文对爱丽丝或鲍勃的任何引用均可分别用“第一方”和“第二方”替换。
每一方103的计算机设备102包括相应的处理装置,其包括一个或更多个处理器,例如一个或更多个CPU、图形处理单元(GPU)、其他加速器处理器、特定应用程序处理器和/或FPGA。每一方103的计算机设备102还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。该存储器可包括一个或更多个存储器单元,其采用一个或更多个存储器介质,例如诸如硬盘等磁介质、诸如SSD、闪存或EEPROM等电子媒介和/或诸如光盘驱动器等的光学介质。每一方103的计算机设备102上的存储器存储软件,其包括被设置为在处理装置上运行的至少一个客户端应用程序105的相应实例。应当理解的是,在本文中归因于给定方103的任何行动均可通过在相应计算机设备102的处理装置上运行的软件执行。每一方103的计算机设备102包括至少一个用户终端,例如台式或笔记本电脑、平板电脑、智能手机或诸如智能手表等的可穿戴设备。给定方103的计算机设备102还可包括一个或更多个其他网络资源,诸如通过用户终端访问的云计算资源。
客户端应用程序或软件105最初可通过例如从服务器下载的适当计算机可读存储介质,或通过诸如可移动SSD、闪存密钥、可移动EEPROM、可移动磁盘驱动器、软盘或磁带等的可移动存储设备、诸如CD或DVD ROM等的光盘或可移动光驱等提供至任何给定方103的计算机设备102。
客户端应用程序105至少包括“钱包”功能。这有两个主要功能。其中一个功能是使相应的用户方103创建、签名和发送拟在节点104的整个网络中传播的交易152,并因此包含在区块链150中。另一个功能是向相应方汇报其目前拥有的数字资产数额。在基于输出的***中,该第二功能包括整理分散在区块链150中属于相关方的各种交易152的输出中定义的数额。
每个计算机设备102上的客户端应用程序105的实例可操作地耦合到P2P网络106的转发节点104F中的至少一个转发节点。这可以启用客户端105的钱包功能,以将交易152发送至网络106。客户端105还可联系一个、一些或所有存储节点104,以在区块链150中查询相应方103作为接收者的任何交易(或实际上在区块链150中检查其他方的交易,因为在实施例中,区块链150是在某种程度上通过其公开可见性提供交易信任的公共设施)。每个计算机设备102上的钱包功能被配置为根据交易协议制定和发送交易152。每个节点104运行软件,其被配置为根据节点协议核实交易152有效的软件,并且在转发节点104F的情况下转发交易152,以在整个网络106中传播此类交易。交易协议和节点协议相互对应,给定交易协议和给定节点协议一起实现给定的交易模型。区块链150中的所有交易152均采用相同的交易协议(尽管交易协议可允许其内存在不同的交易子类型)。网络106中的所有节点104采用相同的节点协议(尽管其可根据针对该子类型定义的规则区分处理不同的交易子类型,并且不同的节点还可扮演不同的角色,从而实现协议的不同对应方面)。
如上所述,区块链150包括一系列区块151,其中每个区块151包括通过如前所述的工作量证明过程创建的一个或更多个交易152的集合。每个区块151还包括区块指针155,其指向区块链中先前创建的区块151,以定义区块151的顺序。区块链150还包括有效交易池154,其等待通过工作量证明过程包含在新的区块中。每笔交易152(除了一生成交易)包括指向先前交易的指针,以定义交易序列的顺序(注:交易152的序列可进行分支)。区块151的区块链一直追溯到创始区块(Gb)153,该创始区块是区块链中的第一区块。区块链150中早期的一笔或更多笔原始交易152指向创始区块153,而非先前交易。
当给定方103(比方说爱丽丝)希望发送拟包含在区块链150中的新交易152j时,她将根据相关交易协议(使用其客户端应用程序105中的钱包功能)制定新交易。然后,她将交易152从客户端应用程序105发送至其连接的一个或更多个转发节点104F中的一个。例如,这可以是与爱丽丝的计算机102最近或最佳连接的转发节点104F。当任何给定节点104接收新交易152j时,其将根据节点协议及其相应的角色进行处理。这包括首先检查新接收的交易152j是否满足变为“有效”的特定条件,具体示例稍后将详细讨论。在一些交易协议中,有效条件可通过交易152中包含的脚本在每个交易的基础上进行配置。或者,条件可仅仅是节点协议的内置功能,或通过组合脚本和节点协议进行定义。
如果新接收的交易152j通过有效性测试(即:“有效”的条件下),接收交易152j的任何存储节点104S将向在该节点104S处维护的区块链150的副本中的池154中添加新有效交易152。进一步地,接收交易152j的任何转发节点104F随后将有效交易152传播至P2P网络106中的一个或更多个其他节点104。由于每个转发节点104F应用相同的协议,因此假定交易152j有效,这意味着交易很快将在整个P2P网络106中传播。
一旦进入在一个或更多个存储节点104处维护的区块链150的副本中的池154中,矿工节点104M将开始竞相解决包括新交易152的池154的最新版本方面的工作量证明难题(其他矿工104M可继续尝试基于池154的旧视角解决难题,但首先解决难题的矿工将定义下一个新区块151的结束位置和新池154的开始位置,最终将有人解决包括爱丽丝的交易152j的池154的一部分的难题)。一旦包括新交易152j的池154完成工作量证明,其将不可变地成为区块链150中区块151中的一个区块的一部分。每笔交易152包括指向早前交易的指针,因此交易的顺序也被不可变地记录下来。
基于UTXO的模型
图2示出了示例***易协议。这是基于UTXO的协议的示例。交易152(简称“Tx”)是区块链150的基本数据结构(每个区块151包括一笔或更多笔交易152)。下面将通过参考基于输出或基于“UTXO”的协议进行描述。但这并不限于所有可能的实施例。
在基于UTXO的模型中,每笔交易(“Tx”)152包括数据结构,其包括一个或更多个输入202和一个或更多个输出203。每个输出203可包括未花费的交易输出(UTXO),其可用作另一新交易的输入202的来源(如果UTXO尚未赎回)。UTXO指定数字资产数额(价值储存手段)。它还可包含其来源交易的交易ID以及其他信息。交易数据结构还可包括标头201,其可包括输入字段202和输出字段203的大小指示符。标头201还可包括交易的ID。在实施例中,交易ID是交易数据(不含交易ID本身)的哈希值,且存储在提交至矿工104M的原始交易152的标头201中。
需注意,尽管图2中的每个输出均展示为UTXO,但交易可以附加地或替代地包括一个或更多个不可花费的交易输出。
比方说爱丽丝103a希望创建转移相关数字资产数额至鲍勃103b的交易152j。在图2中,爱丽丝的新交易152j标记为“Tx1”。该新交易获取在序列中先前交易152i的输出203中锁定至爱丽丝的数字资产数额,并至少将此类数额中的一部分转移至鲍勃。在图2中,先前交易152i标记为“Tx0”。Tx0和Tx1只是任意的标记,其不一定意味着Tx0指区块链151中的第一交易且Tx1指池154中的下一笔交易。Tx1可指向仍具有锁定至爱丽丝的未花费输出203的任何先前(即先行)交易。
当爱丽丝创建其新交易Tx1时,或至少在她将该新交易发送至网络106时,先前交易Tx0可能已经有效并包括在区块链150中。该交易此时可能已包括在区块151中的一个区块中,或者可能仍在池154中等待,在这种情况下,该交易将很快包括在新区块151中。或者,Tx0和Tx1可以创建并一起发送至网络102;或者,如果节点协议允许缓冲“孤立”交易,Tx0甚至可以在Tx1之后发送。本文交易序列上下文中使用的“先前”和“后续”一词是指由交易中指定的交易指针定义的序列中的交易顺序(哪个交易指向哪个其他交易等等)。它们同样可以替换为“前任”和“继任”、“先行”和“后代”或“父项”和“子项”等。这不一定指其创建、发送至网络106或到达任何给定节点104的顺序。然而,指向先前交易(先行交易或“父交易”)的后续交易(后代交易或“子交易”)不会有效除非父交易有效。在父交易之前到达节点104的子交易被视为孤立交易。根据节点协议和/或矿工行为,其可被丢弃或缓冲一段时间,以等待父交易。
先前交易Tx0的一个或更多个输出203中的一个包括特定的UTXO,标记为UTXO0。每个UTXO包括指定UTXO表示的数字资产数额的值以及锁定脚本,该锁定脚本定义后续交易的输入202中的解锁脚本必须满足的条件,以使后续交易有效,从而成功赎回UTXO。通常情况下,锁定脚本将数额锁定至特定方(该数额的交易的受益人)。即,锁定脚本定义解锁条件,该解锁条件通常包括以下条件:后续交易的输入中的解锁脚本包括先前交易被锁定到的一方的加密签名。
锁定脚本(亦称scriptPubKey)是节点协议识别的域特定语言中写入的一段代码。此类语言的特定示例称为“脚本(Script)”(S大写)。锁定脚本指定花费交易输出203所需的信息,例如爱丽丝签名的要求。解锁脚本出现在交易的输出中。解锁脚本(亦称scriptSig)是提供满足锁定脚本标准所需信息的域特定语言中写入的一段代码。例如,其可包含鲍勃的签名。解锁脚本出现在交易的输入202中。
因此在示出的示例中,Tx0的输出203中的UTXO0包括锁定脚本[Checksig PA],该锁定脚本需要爱丽丝的签名Sig PA,以赎回UTXO0(严格来说,是为了使试图赎回UTXO0的后续交易有效)。[Checksig PA]包含爱丽丝的公私密钥对中的公钥PA。Tx1的输入202包括指向Tx1的指针(例如,通过其交易ID(TxID0),其在实施例中是整个交易Tx0的哈希值)。Tx1的输入202包括在Tx0中标识UTXO0的索引,以在Tx0的任何其他可能输出中对其进行标识。Tx1的输入202进一步包括解锁脚本<Sig PA>,该解锁脚本包括爱丽丝的加密签名,该签名由爱丽丝通过将其密钥对中的私钥应用于预定的部分数据(有时在密码学中称为“消息”)创建。爱丽丝需要签名以提供有效签名的数据(或“消息”)可通过锁定脚本、节点协议或其组合进行定义。
当新交易Tx1到达节点104时,该节点应用节点协议。这包括一起运行锁定脚本和解锁脚本,以检查解锁脚本是否满足锁定脚本中定义的条件(其中该条件可包括一个或更多个标准)。在实施例中,这涉及并置两个脚本:
<Sig PA><PA>||[Checksig PA]
其中“||”表示并置,“<…>”表示将数据放在堆栈上,“[…]”表示由解锁脚本组成的函数(在该示例中指基于堆栈的语言)。同样,脚本可以使用公共堆栈一个接一个地运行,而不是并置脚本。无论采用哪种方式,当一起运行时,脚本使用爱丽丝的公钥PA(包括在Tx0的输出的锁定脚本中),以认证Tx1的输入中的锁定脚本是否包含爱丽丝签名预期部分的数据时的签名。预期的部分数据本身(“消息”)也需要包括在Tx0中,以便执行此认证。在实施例中,签名的数据包括整个Tx0(因此不需要包括一个单独的元素来明文指定签名的部分数据,因为其本身便已存在)。
本领域技术人员将熟悉通过公私密码进行认证的细节。基本上而言,如果爱丽丝已通过使用其私钥加密签署消息,则给定爱丽丝的公钥和明文中的消息(未加密消息),诸如节点104等其他实体可认证加密版本的消息必须已经由爱丽丝签名。签署通常包括对消息进行散列,签署哈希值和将此标记到消息的明文版本作为签名,从而使公钥的任何持有者能够认证签名。
如果Tx1中的解锁脚本满足Tx0的锁定脚本中指定的一个或更多个条件(因此,在所示示例中,如果在Tx1中提供了爱丽丝的签名并进行认证),则节点104认为Tx1有效。如果是挖矿节点104M,这意味着其将添加至等待工作量证明的交易154池。如果是转发节点104F,则其将交易Tx1转发到网络106中的一个或更多个其他节点104,从而将在整个网络中传播。一旦Tx1有效并包括在区块链150中,这将把Tx0中的UTXO0定义为已花费。请注意,Tx1仅在花费未花费的交易输出203时才有效。如果试图花费另一交易152已经花费的输出,则即使满足所有其他条件,Tx1也将无效。因此,节点104还需要检查先前交易Tx0中引用的UTXO是否已经花费(已经形成另一有效交易的有效输入)。这是为何区块链150对交易152施加定义的顺序很重要的原因之一。在实践中,给定节点104可维护单独的数据库,标记已花费交易152的UTXO 203,但最终定义UTXO是否已花费取决于是否在区块链150中形成了另一有效交易的有效输入。
请注意,在基于UTXO的交易模型中,给定UTXO需要作为一个整体使用。不能“留下”UTXO中定义为已花费的一部分数额,而同时又花费另一部分。但UTXO的数额可以在下一个交易的多个输出之间分割。例如,Tx0的UTXO0中定义的数额可以在Tx1中的多个UTXO之间分割。因此,如果爱丽丝不想将UTXO0中定义的所有数额都给鲍勃,她可以使用剩余部分在Tx1的第二输出中自己找零钱,或者支付给另一方。
在实践中,爱丽丝通常还将需要包括获胜矿工的费用,因为现在仅靠生成交易的奖励币通常不足以激励挖掘。如果爱丽丝未包括矿工的费用,Tx0可能会被矿工节点104M拒绝,因此,尽管技术上有效,但仍然不会传播并包括在区块链150中(如果矿工104M不愿意,矿工协议不会强制他们接受交易152)。在一些协议中,挖掘费不需要其自身的单独输出203(即不需要单独的UTXO)。相反,给定交易152中输入202所指向的总数额与输出203所指定的总数额之间的任何差额都将自动提供给获胜矿工104。例如,假设指向UTXO0的指针是Tx1的唯一输入,而Tx1只有一个输出UTXO1。如果UTXO0中指定的数字资产的数额大于UTXO1中指定的数额,则该差额将自动提供给获胜矿工104M。替代地或附加地,这不一定排除可以在其自身交易152的其中一个UTXO 203中明确指定矿工费用。
另请注意,如果给定交易152的所有输出203中指定的总数额大于其所有输入202所指向的总数额,则这是大多数交易模型中的另一失效依据。因此,此类交易将不会传播或挖掘到区块151中。
爱丽丝和鲍勃的数字资产由区块链150中任何位置的任何交易152中的锁定至他们的未花费UTXO组成。因此,通常情况下,给定方103的资产分散在整个区块链150的各种交易152的UTXO中。区块链150中的任何位置均未存储定义给定方103的总余额的一个数字。客户端应用程序105的钱包功能的作用是将锁定至相应方且在其他随后交易中尚未花费的各种UTXO值整理在一起。通过查询在任何存储节点104S(例如,与相应方的计算机设备102最近或最佳连接的存储节点104S)处存储的区块链150副本,可以实现这一点。
请注意,脚本代码通常用示意图表示(即非精确语言)。例如,可写入[ChecksigPA]表示[Checksig PA]=OP_DUP OP_HASH160<H(Pa)>OP_EQUALVERIFY OP_CHECKSIG。“OP_...”是指脚本语言的特定操作码。OP_CHECKSIG(又称“Checksig”)是脚本操作码,其取两个输入(签名和公钥),并使用椭圆曲线数字签名算法(ECDSA)验证签名的有效性。在运行时,移除脚本中任何出现的签名(‘sig’),但在由‘sig’输入验证的交易中仍保留附加要求,诸如哈希谜题。再如,OP_RETURN是脚本语言操作码,用于创建交易的不可花费输出,其可以将元数据储存在交易中,从而将元数据不可变地记录在区块链150中。例如,元数据可包括需存储在区块链中的文件。
签名PA是数字签名。在实施例中,这基于使用椭圆曲线secp256k1的ECDSA。数字签名对特定的数据段进行签名。在实施例中,对于给定交易,签名将对部分交易输入以及全部或部分交易输出进行签名。对输出的特定部分进行签名取决于SIGHASH标志。SIGHASH标志是包含在签名末尾的4字节代码,用于选择签名的输出(并因此在签名时固定)。
锁定脚本有时称为“scriptPubKey”,指其包括相应交易被锁定到的当事方的公钥。解锁脚本有时称为“scriptSig”,指其提供相应的签名。但是更通俗地说,在区块链150的所有应用中,UTXO赎回的条件并不一定包括对签名进行认证。更通俗地说,脚本语言可用于定义任何一个或更多个条件。因此,可以优选更为通用的术语“锁定脚本”和“解锁脚本”。
可选的侧信道
图3示出了用于实现区块链150的另一***100。除了附加的通信功能外,该***100与图1所示的内容基本相同。爱丽丝和鲍勃的每台计算机设备102a,120b上的客户端应用程序分别包括附加通信功能。也就是说,这可使爱丽丝103a建立与鲍勃103b分离的侧信道301(在任何一方或第三方的鼓动下)。侧信道301能够独立于P2P网络实现数据交换。此等通信有时候被称为“链下”通信。比如,当交换爱丽丝与鲍勃之间的交易152时不想将该交易(仍未)发布到P2P网络106或挖掘到区块150,可以采用此等通信,直到其中一方选择将该交易广播到网络106。替代地或附加地,该侧信道301可以用于交换任何其他的交易相关数据,例如密钥、协商的数额或条款、数据内容、等等。
通过与P2P覆盖网络106相同的分组交换网络101可建立侧信道301。此外/或者,通过诸如移动蜂窝网络等不同网络、或者诸如本地无线网络等局域网、或者甚至爱丽丝和鲍勃的设备1021,102b之间的直接有线或无线连接可以建立侧信道301。一般而言,本文所指的侧信道301可包括经由一种或更多种联网技术或者通信介质的任何一个或更多个链路,用于“链下”(即独立于P2P覆盖网络106)交换数据。在多个链路被使用的情况下,整个链下链路的捆绑或集合才可以被称为侧信道301。因此,需要注意的是,虽然爱丽丝和鲍勃通过侧信道301对特定的信息或数据片段或者诸如此类进行交换,但这并不一定意味着所有这些数据片段必须通过相同的链路或甚至同一类型网络进行发送。
节点软件
图4示出了在基于UTXO或基于输出的模型的示例中,在P2P网络106的每个节点104上运行的节点软件400的示例。节点软件400包括协议引擎401、脚本引擎402、堆栈403、应用级决策引擎404以及一个或更多个区块链相关功能模块的集合405。在任何给定节点104处,这些模块可以包括以下三个模块中的任何一个、两个或全部:挖掘模块405M、转发模块405F和存储模块405S(取决于该节点的一个或更多个角色)。协议引擎401被配置为识别交易152的不同字段,并根据节点协议处理此类字段。当接收到具有指向另一先前交易152m-1(Txm-1)的输出(例如,UTXO)的输入的交易152m(Txm)时,协议引擎401标识Txm中的解锁脚本并将其传递给脚本引擎402。协议引擎401还基于Txm的输入中的指针来标识和检索Txm-1。如果Txm-1尚未在区块链150上,则可以从相应节点自身的未决交易池154中检索Txm-1;或者,如果Txm-1已在区块链150上,则可以从存储在相应节点或另一节点104处的区块链150中的区块151的副本中检索。无论采用哪种方式,脚本引擎401都会标识Txm-1的指向输出中的锁定脚本,并将其传递给脚本引擎402。
因此,脚本引擎402具有Txm-1的锁定脚本和来自Txm的相应输入的解锁脚本。例如,图4中示出的Tx1和Tx2,但同样可以应用于任何交易对,诸如Tx0和Tx1等。如前所述,脚本引擎402同时运行两个脚本,这将包括根据正在使用的基于堆栈的脚本语言(例如,脚本)将数据放置到堆栈403上并从该堆栈中检索数据。
通过同时运行脚本,脚本引擎402确定解锁脚本是否满足锁定脚本中定义的一个或更多个标准,即解锁脚本是否对包括锁定脚本的输出进行解锁?脚本引擎402将该确定的结果返回给协议引擎401。如果脚本引擎402确定解锁脚本确实满足在相应的锁定脚本中指定的一个或更多个标准,则返回结果“TRUE”。否则,返回结果“FALSE”。
在基于输出的模型中,来自脚本引擎402的结果“TRUE”是交易有效性的条件之一。通常,还必须满足由协议引擎401评估的一个或更多个进一步协议级条件;例如,Txm的输出中所指向的数字资产的总数额不超过(多个)输入指定的总数额,并且Txm-1的指向输出尚未被另一有效交易花费。协议引擎401评估来自脚本引擎402的结果以及一个或更多个协议级条件,并且只有当它们都为TRUE时,协议引擎401才核实交易Txm有效。协议引擎401将交易是否有效的指示输出到应用级决策引擎404。只有在Txm确实核实有效的条件下,决策引擎404才可以选择控制挖掘模块405M和转发模块405F中的一个或两个来执行它们涉及Txm的相应区块链相关函数。这可以包括:挖掘模块405M,该挖掘模块将Txm添加到节点的相应池154以挖掘到区块151中;和/或转发模块405F,该转发模块将Txm转发到P2P网络106中的另一节点104。然而,应当注意的是,在实施例中,虽然决策引擎404不会选择转发或挖掘无效交易,相反,这并不一定意味着,仅因为交易有效,该决策引擎就必须触发该交易的挖掘或转发。可选地,在实施例中,决策引擎404可以在触发这些函数中的一个或两个函数之前应用一个或更多个附加条件。例如,如果节点是挖掘节点104M,则决策引擎可以仅在交易有效且预留足够挖掘费用的条件下选择挖掘该交易。
此外,还应当注意的是,在本文中,术语“TRUE”和“FALSE”不一定限于返回仅以单个二进制数(位)形式表示的结果,尽管这确实是一种可能的实现方式。更通俗地说,“TRUE”可以指指示成功或肯定结果的任何状态,而“FALSE”可以指指示不成功或不肯定结果的任何状态。例如,在基于账户的模型(图4中未示出)中,可以通过节点104对签名的隐式协议级核实和智能合约的附加肯定输出的组合来指示结果为“TRUE”(如果两个单独的结果均为TRUE,则认为总体结果为TRUE)。
预备内容
定义1——Rivest–Shamir–Adleman(RSA)公钥加密
鉴于两个RSA素数p和q,RSA模数N=p·q,欧拉商函数φ(N)=(p-1)(q-1)。选择加密密钥e,使得e和φ(N)为互质的,解密d计算为d=e-1modφ(N)。公钥是(e,N),私钥是d。需注意,p,q和φ(N)都是私有的,但无需解密密文。
定义2——布卢姆整数
如果对于一些素数p、q,N=pq,并且p=3 mod 4,q=3 mod 4,则整数N是布卢姆整数。
定义3——威廉整数
如果对于一些素数p、q,N=pq,并且p=3 mod 4,q=7 mod 8,则整数N是威廉整数。
推论1
威廉整数是布卢姆整数。
定义4——二次剩余
定义5——勒让德符号
推论2
定义6——雅可比符号
主张1
定义7
定义8
主张2
证据:
因此,对于一些整数k,(x1-x2)(x1+x2)=k·N。
因此,(x1-x2)和(x1+x2)都不是0 mod N。因此,其中一个必须可由p进行分割,而不是q。在不丧失一般性的情况下,假设(x1-x2)可以被p分割,但不能被q分割。然后,通过使用欧几里德算法寻找(x1-x2)和N的最大公约数来找到p。
在下文中,使用了两个不同的加密哈希函数H1和H2。每个都具有范围。需注意,具有较短范围的哈希函数可连接以实现均匀的分配模N。如果在给定完全相同的输入时生成不同的输出,则两个加密哈希函数是不同的。鉴于函数H1的输出将不同于应用H1两次或更多次的输出,应用函数H2可涉及多次应用H1。
定义9——Γ树
关于威廉整数N的Γ树是二叉树,其中每个节点的定义如图5所示。二叉树由根层或0级以及一个或更多个子层或级(1、2、……、t)组成。树包含t个级别,其中每个节点有两个子节点(除最低层外),树的顶部有一个根节点(如图5所示,或如果图5颠倒,则位于底部)。因此,i级有2i-1个节点。
对于包括根节点的0级,Γ0=<H1(N||0)>QR。对于i>0级,Ωi=<H2(N||i)>1。对于每个父节点Γparent,存在一个左子节点Γleft和一个右子节点Γright,其中
可分割代币
本公开的实施例提供了一种用于生成和转移可分割代币的协议。与之前的单一代币可兑换单一资产的代币***不同,可分割代币表示资产的初始数额,其反过来可分割以表示该资产的不同数额。比如,资产可以是电子现金或有形资产,诸如车辆、建筑物、珠宝、艺术品等。资产可以是消耗品,例如媒体内容、订阅、能源或供水等。可分割代币可以被分割任意次数,以表示比初始数额更小的数额。本文中引用将代币分割为更小的块。本质上,代币不是实物代币。术语“块”仅指代币的分割部分或一小部分,初始代币中较小的块表示较小的资产数额。
图6示出了用于实现本公开的实施例的示例性***600。示例性***包括三方,即第一方103a、第二方103b和第三方103c,每个操作相应计算机设备。每一方都是区块链网络106的一方。如上文参照图1至图3所述,第一方、第二方和第三方中的每一方都可扮演爱丽丝或鲍勃的角色。虽然图1至图3描述了示例性场景,其中爱丽丝向鲍勃发送交易,从而将数字资产数额转移给鲍勃,但应当理解的是,鲍勃也可将交易转移给爱丽丝,从而将数字资产数额转移给爱丽丝。
在下文中,第一方称为爱丽丝103a,第二方称为鲍勃,第三方称为查理。进一步地,可以理解,当需要时,引用第一方(例如,爱丽丝103a)指第一方的计算机设备。爱丽丝103a和鲍勃103b可使用链下技术彼此通信,例如经由图3所示的侧信道301。类似地,爱丽丝103a和查理103c可使用侧信道(可以是或可以不是与301相同类型的侧信道)彼此通信。虽然未示出,但鲍勃103b和查理103c还可经由侧信道通信。
需注意,虽然在此示例中示出了三方,但在一些示例中,一方可执行双方的行为。比如,鲍勃103b和查理103c可实际上是同一方,并且在一些示例中,可操作相同的计算机设备。
如下文将更详细描述的,鲍勃103b将第一交易Tx1传输至区块链网络106,爱丽丝103a可将第二交易Tx2传输给查理,并且查理可将更新的第二交易Tx2′传输至区块链网络。如上文所述,一旦交易被传输至区块链,如果交易有效,则将被包含在区块链150中。
例如,鲍勃可以是银行,爱丽丝可以是鲍勃的客户。鲍勃可向爱丽丝发放一定数额的代币,例如100英镑。爱丽丝可使用该代币向商户查理支付商品或服务的费用。
根据本文公开的一方面,鲍勃103b使用第一交易Tx1向爱丽丝103a发放第一代币。鲍勃103b在第一交易Tx1的输出中包含第一代币,使得第一交易被传输至区块链网络106。这可涉及鲍勃103b本人将第一交易Tx1传输至网络106的一个或更多个节点,或将第一交易传输至执行传输至网络106的步骤的另一方。鲍勃103b可以是可信方,诸如例如政府、银行或任何其他成熟的实体。爱丽丝103a和鲍勃103b都分别有其自己的公钥,即PA和PB。第一交易包括输入,该输入基于鲍勃的公钥进行签名。换言之,鲍勃提供他的公钥和数字签名,解锁记录在区块链中的早前交易的输出。第一交易具有输出(例如,UTXO),该输出只能用爱丽丝的公钥PA或从中衍生的密钥PA1进行解锁。换言之,第一交易从鲍勃103b发送给爱丽丝103a。
鲍勃103b可将交易Tx1发送至从爱丽丝的公钥衍生的公钥。比如,爱丽丝103a可具有经认证的公钥PA,鲍勃103b可使用经认证的公钥PA生成公钥PA1,使得爱丽丝103a和鲍勃均知道生成的公钥,但对于其他方而言,爱丽丝103a和公钥之间的链接则不明显。鲍勃可获得爱丽丝的公钥,例如从爱丽丝103a处,或者可公开获取。爱丽丝103a和鲍勃生成共享私钥SAB,例如使用Diffie-Hellman交换。然后,爱丽丝103a和鲍勃可使用爱丽丝的(经认证)公钥和共享私钥SAB生成衍生的公钥。鲍勃103b可发送第一交易Tx1至PA1。如果稍后鲍勃希望向爱丽丝发送另一代币,例如相同第一代币的第二实例,或价值不同资产数额的代币,鲍勃103b可将交易发送至相同公钥PA1或更新的衍生公钥PA2。也就是说,爱丽丝和鲍勃两者可生成密钥列表,每个均基于爱丽丝的(经认证)公钥和共享密钥。举例来说,衍生的公钥可以使用以下公式生成,
此处需注意,H是加密哈希函数,可能与H1或H2相同或不同。
第一代币可包含在与爱丽丝的公钥相同的输出或单独的输出中。优选地,第一代币包含在不可花费的交易输出中。交易可通过包含操作码来终止该输出的执行而变得不可花费,即当与后续交易的解锁脚本一起执行时。一个特定的区块链协议使用OP_RETURN操作码(或OP_FALSE操作码,后面是OP_RETURN操作码),以实现该功能。通过示例的方式,此等输出将在下文称为OP_RETURN输出,但应当理解的是,在其他实施方式或协议中,可采用其他机制将有效载荷数据以代币的形式包含在区块链交易的可花费或不可花费的输出中。
图7示出了示例性第一交易Tx1。如所示出的,第一交易(带交易标识符TxID1)包括输入列表和输出列表。在此示例中,输入列表具有一个输入701,输出列表具有三个输出702a,702b,702c。输入701包括解锁脚本,用于解锁由输出引用的早前交易的锁定脚本,在图7中标记为“输出点”。解锁脚本包括鲍勃的公钥PB和鲍勃的数字签名SigB。第一交易的第一输出702a包括第一代币<data1>。此处,“第一输出”不指特定的输出顺序,而是作为区分不同输出的标签。第二输出702b包括爱丽丝公钥PA1的支付到公钥哈希(P2PKH)。也就是说,第二输出702b包括锁定脚本,该锁定脚本被配置为要求试图解锁该锁定脚本的解锁脚本包含爱丽丝的公钥PA1。可选地,锁定脚本还可被配置为要求试图解锁该锁定脚本的解锁脚本包含对哈希值h1进行哈希处理的原像。在示例中,原像是<data1>。也就是说,后续交易的输入必须包括解锁脚本,该解锁脚本包括第一代币<data1>,以解锁第二输出。第二输出702b可将数字资产数额x转移给爱丽丝103a。需注意,数字资产与由第一代币表示的资产不同(尽管在一些实施例中,后一种资产仍然可以是不同类型的数字资产,诸如证券代币)。可选地,第三输出702c包含在第一交易Tx1中。第三输出702c包括鲍勃公钥PB的P2PKH。第三输出702c可将数字资产数额y转移给鲍勃103b。
如上所述,第一交易Tx1在输出702a中包括第一代币。第一代币<data1>可包含在不可花费的输出中。第一代币<data1>包括多个数据字段。每个数据字段包括相应数据。第一数据字段包括表示资产的第一数额的数据,即定义第一数额。例如,数据可表示数字,例如100。第二数据字段包括密文。密文表示爱丽丝103a的加密标识符。标识符可例如是爱丽丝的公钥(爱丽丝的P2PKH中包含的相同公钥或不同公钥)。密文可以用爱丽丝的公钥进行加密,但不用与标识符相同的公钥。在一些示例中,标识符和加密密钥可以是同一公钥密码***或不同的公钥密码***(例如,RSA或RSA和ECDSA两者)的一部分。在一些示例中,用于加密爱丽丝的标识符的公钥包括模数N,第一代币包括第三数据字段,该第三数据字段包括表示模数N的数据。第一代币可包括一个或更多个附加字段。
可选地,鲍勃103b可确定是否爱丽丝的公钥PA由可信机构进行认证。例如,鲍勃103b可确定是否爱丽丝103a已提供由鲍勃或另一机构,诸如银行、政府、证书颁发机构等认证的公钥。如果鲍勃确定爱丽丝的公钥PA未经认证,则鲍勃103b可决定不向爱丽丝103a发放第一代币,即鲍勃不生成第一交易Tx1,并且不将第一交易传输给爱丽丝103a。
图8示出了第一代币<data1>的示例性表示。第一代币包括第一数额(余额)、爱丽丝的公钥(e,N)的RSA模数N和加密爱丽丝的标识符PA的密文c。第一代币还包括资产的指示(在这种情况下,GBP表示英镑)。支付次数的数据字段也包含在内。对于鲍勃103b发放的初始代币<data1>,支付次数是0。支付次数表示第一代币分割成进一步代币的次数。当爱丽丝103a使用第一代币时,例如支付订阅费用,支付次数将增加一次。进一步可选数据字段可包含在内。
一旦第一交易Tx1包含在区块链150中,则爱丽丝103a可生成第二交易Tx2。鲍勃103b可首先通知爱丽丝103a第一交易已包含在区块链中,或爱丽丝可在未花费的交易输出列表(UTXO列表)中监控她的公钥PA1。爱丽丝103a可能知道鲍勃正在向她衍生的公钥发送输出,因此她监控该密钥PA1。
为了花费第一代币,或更确切地说由第一代币表示的资产的数额,爱丽丝必须遵守预定协议。协议由代币发放者(鲍勃)和爱丽丝试图向其花费资产的一方(可以是鲍勃或查理)共同遵守。
图9示出了示例性第二交易Tx2,带交易标识符TxID2。需注意,此处生成并不一定意味着从头开始生成。例如,爱丽丝103a可用交易模板进行发放,例如来自鲍勃,其可包括一个或更多个预完成字段。第二交易Tx2包括输入901,该输入被配置为解锁第一交易Tx1的输出702b。例如,输入901可包括爱丽丝的公钥PA1和数字签名SigA,用于解锁第一交易的第二输出702b。如果第一交易Tx1的第二输出702b被配置为检查是否输入包括h1的原像,则爱丽丝103a可在第二交易Tx2的输入901中包含该原像(即第一代币<data1>)。
第二交易Tx2包括一个或更多个输出902。第一输出902a包括第二代币<data2>,表示资产的第二数额。第二代币<data2>可包含在第二交易的不可花费的交易输出中,例如OP_RETURN输出。第二数额是被转移、花费、兑换等资产的数额。
第二代币<data2>包括表示第二数额的数据。比如,第二代币可包括一个或更多个X值,每个均表示第一数额的子数额(或分割部分)。比如,第二数额可以是75,并且X值可加起来表示75(例如,50和25)。下面将参考图11和图12对X值进行更详细地讨论。第二交易Tx2可包括第二输出902b。第二输出902b可以是爱丽丝公钥的P2PKH。公钥可以是之前使用的公钥PA1或新公钥PA2(例如,从PA1衍生的公钥)。与第一交易Tx1的第二输出702b一样,第二交易Tx2的第二输出902b可要求解锁脚本尝试解锁脚本以包括第二代币<data2>。换言之,锁定脚本需要哈希值h2的原像,原像是第二代币<data2>。
图10示出了第二代币<data2>的示例性表示。第二代币是第一代币<data1>的更新版本。一个或更多个X值包含在第二代币的付款字段中。第二代币<data2>的一个或更多个数据字段可能与第一代币相同。比如,表示资产类型的前缀、爱丽丝的加密标识符c和RSA模数N可保持不变。第二代币的一个或更多个数据字段可能不同于第一代币。例如,爱丽丝103a可更改表示代币的剩余数额(余额)的字段,以反映正在转移资产的第二数额。再如,付款数量字段也将进行变更,从0增加到1。爱丽丝103a还可包括与付款有关的附加信息。
一旦已经生成第二交易Tx2,则爱丽丝103a可将交易传输至区块链网络106。此外/或者,爱丽丝103a可将交易传输给鲍勃或查理103c。如果她正在代币发放者(鲍勃103b)处花费代币,则爱丽丝103a可将第二交易传输给鲍勃103b。如果她正在花费代币购买不同方(即查理)提供的资产,则爱丽丝103a可将第二交易Tx2传输给查理。
在一些实施例中,协议要求第一代币(或更确切地说,第一代币表示的数额)可根据类似二叉树的结构进行分割。在树的第0层(根层),单一根节点Γ0表示第一代币的总数额。在树的第1层(第一子层),每个子节点Γ00,Γ01表示第一代币的总数额的50%,即有两个子节点,每个子节点表示相同的总数额。在树的第2层(第二子层),每个子节点Γ000,Γ001,Γ010,Γ011,表示由第二层中的子节点表示的数额的一半(即总数额的25%)。换言之,第二子层中有四个子节点,该四个子节点加起来一起表示总数额。将给定节点表示的数额连续减半的过程可以持续任意次数。需注意,次数不一定限于可兑换资产的最小分割部分。比如,英镑的最小面额是一便士。但是,第一代币可分割成小于一便士的数额。
图11示出了如何可根据该协议分割第一代币。如所示出的,根层中的根节点1101表示100英镑,第一子层中的每个子节点1102a,1102b表示50英镑,第二子层中的每个子节点1103a-d表示25英镑。反过来,第二子层中的子节点1103a-d可以进行分割,并且这些子节点可进行分割等。换句话说,每个子节点表示(或映射到)第一数额的子数额。第一层包括两个子节点1102a,1102b。在该层中,每个子节点1102a,1102b表示第一数额的相同子数额(“第一子数额”)。第二层包括四个子节点1103a-d。第二层中的每个节点表示第一子数额的相同子数额(“第二子数额”)。第一数额、第一子数额和第二子数额是不同的数额。参考图11,100英镑(第一数额)在第一子层中分成两批50英镑(第一子数额),然后再在第二子层中分成四批25英镑(第二子数额)。合并由给定层中的每个子节点对表示的子数额,以得出在“更高层”中由其父节点表示的子数额(或数额)。
如果第一代币并且因此根节点表示第一数额A,则树的第i层包括2i-1个节点。因此,第i层中的每个节点表示数额A*21-i。
假设爱丽丝想使用第二代币转移75英镑(第二数额)给查理103c。使用图11的示例性树结构,爱丽丝将必须在第二代币中包含加起来表示75英镑的两个值。第一值将表示50英镑(第一子数额),第二值将表示25英镑。
爱丽丝103a可简单地将值50和25包含在第二代币中。但是,这将使得爱丽丝可对她的代币进行双重花费。例如,爱丽丝可将第二交易Tx2发送给查理103c,其中包含表示75英镑的代币(和值),然后向不同方发送另一交易,其中也包含表示75英镑的代币(和值),或通常而言大于她的代币剩余余额的任何数额。
为了防止这些问题,爱丽丝、鲍勃103b和查理103c同意遵守协议,其中树中的每个节点都基于特定的组件进行计算。每个子节点基于根节点。每个根节点都基于用于加密爱丽丝的公钥PA的(RSA)模数N。根节点还可基于第一交易Tx1的标识符TxID1。那样的话,根节点则链接至第一交易。在一些示例中,根节点通过将加密哈希函数H1应用于模数N和可选的第一交易标识符TxID1进行计算。
分层树结构可构造成使得节点如图12所示进行计算,并使用下列方程式。
对于包括根节点的0级,Γ0=<H1(TxID1||N||0)>QR。对于i>0级,Ωi=<H2(TxID1||N||i)>1。对于每个父节点Γparent,存在一个左子节点Γleft和一个右子节点Γright,其中
如上所述,树中的子层数量没有限制,并且因此可以构造的子节点数量没有限制。换言之,对于任何非负整数t,第一数额(由根节点表示)可以分割成2t个子节点。需注意,爱丽丝103a不一定必须计算树的每个节点。相反,爱丽丝只需计算表示使用第二代币转移给查理103c的数额所需的节点。例如,参考图11和图12,如果爱丽丝想使用第二代币转移50英镑,则爱丽丝只需计算Γ00(表示50英镑)或Γ01(表示50英镑),而不需要同时计算,尽管她可以计算。如果爱丽丝想使用第二代币转移75英镑,则爱丽丝只需计算Γ00(表示50英镑)和Γ010(表示25英镑)。爱丽丝可计算更多值,例如Γ011(表示25英镑),但这并不是必须的。
现在,爱丽丝103a可使用节点作为放置在代币中的值,以表示第二数额。但是,这将允许第三方计算爱丽丝的模数N,并且因此泄露爱丽丝的公钥PA。
为了防止此等安全隐患,优选地,对于树中表示第二数额所需的每个节点,爱丽丝生成一个节点的平方根X。所需节点的平方根值X包含在第一代币中,每个平方根值用于表示总数额的相应子数额。例如,爱丽丝计算节点Γ01的平方根X01,以表示50英镑或A/2。爱丽丝将计算节点Γ010的平方根X010,以表示25英镑或A/4,以此类推。
换言之,树表示分割的代币。当花费树的节点时,会揭露X值。验证者可计算该节点和该节点上其他节点的相应Γ值。该节点下其他节点的Γ值的任何泄露都将允许公众对N进行分解,从而揭露爱丽丝的身份。该节点上其他节点的X值的任何泄露也将具有相同的效果。
假定爱丽丝想向查理支付75英镑,例如椅子的费用。爱丽丝计算
1.Γ0=<H1(TxID1||N||0)>QR
2.Ω0=<H2(TxID1||N||0)>1
需注意,“0”在Γ0的计算中并不是必须的。在上述示例中,“0”仅用作索引,因此可由任何数据表示作为索引。当计算Ω0时,爱丽丝可应用索引(在这种情况下,“0”)。根据代币的分割情况,爱丽丝可能需要计算Ωi的其他值。在那种情况下,爱丽丝为每个Ωi应用不同的索引(例如,对于Ω01应用“01”)。
X00是Γ00的一个平方根,使得左侧分支的任何其他花费都将得出Γ00的另一明显的平方根。因此,通过主张2,N可进行分解,以揭露爱丽丝的身份。爱丽丝的身份PA被揭露,因此她可以比如受双重花费的法律含义所约束,和/或禁止鲍勃103b在未来发放代币。
如上所述,爱丽丝103a不必计算整棵树,但如果需要,则可以计算。她可以从顶部遍历路径,并根据需要计算每个节点的值。但是,重要的是她发布了所有值,因为子节点的Γ值和X值的泄露将破坏N的分解。例如,X00和Γ000将得出Γ00的两个不同平方根。
爱丽丝103a可向第二代币添加支付细节,例如,爱丽丝可提供对应于X值的索引。例如,00是X00的索引。有了这些索引和余额,查理103c可计算出期初余额(openingbalance)和由X值所表示的值。为了节省一些计算,可将期初余额的X值和对应于X值的子数额添加至第二代币。
一旦生成第二交易Tx2并且包含具有适当值的第二代币,爱丽丝则将第二交易传输给查理。换言之,爱丽丝经由交易向查理发送(X00,X010,N)。爱丽丝还可在同一交易中发送第一代币,例如先前的OP_RETURN有效载荷<data1>。需注意,爱丽丝不需要揭露Γ树。)
第二交易Tx2的输入901链接至先前交易的第二输出702b。在该字段中,爱丽丝103a可向查理103c传递第一代币(例如,第一交易Tx1的OP_RETURN数据有效载荷)。输入901还包括如果出现双重花费或违反协议规定则由爱丽丝103a负责的签名。为了给爱丽丝103a提供一定程度的隐私,用于生成签名的公钥PA1可以是衍生密钥。对公众来说,公钥看起来是随机的。但是,如果存在争议,爱丽丝和鲍勃(例如,银行)两者均可证明公钥与爱丽丝的身份之间的联系。
爱丽丝103a可配置第二交易Tx2的第一输出,以允许查理103c向第二交易添加输入。比如,根据一些区块链协议,爱丽丝103a可在她的输入中包含标识符或标志,允许将另一输入添加到交易中,而不会使交易无效。爱丽丝103a的签名可使用sighash标志SIGHASH_SINGLE(0x03)和SIGHASH_ANYONECANPAY(0x80)。此处,SIGHASH_ANYONECANPAY允许其他人为交易筹资。例如,查理103c可为交易筹资。SIGHASH_SINGLE保护爱丽丝的输入和输出。需注意,这些标志不保护任何带爱丽丝签名SigA1的OP_RETURN输出。但是,对OP_RETURN的任何修改都将导致与嵌入在第一输出中的哈希值不同的哈希值,并受签名保护。此外,对输入的任何修改,包括第一代币(data1)的修改,将导致使用先前的锁定脚本检查时会失效。
截至目前,由于没有交易费用,交易TxID2对于矿工而言可能无效。或者,爱丽丝可包含足够的费用,以使矿工满意。但是,其包含查理103c要求验证爱丽丝的付款所需的所有信息,爱丽丝的签名和哈希函数(可以是任何脚本哈希函数,诸如比如SHA256或双重SHA256)确保了所有信息的真实性和完整性。
查理103c从爱丽丝103a处获得第二交易Tx2。第二交易Tx2包含第二代币<data2>,其中包含表示拟转移至查理103c的资产的第二数额的值。查理103c可从爱丽丝103a或经由中间来源获得交易。第二代币还包括代币的剩余余额,例如查理本人可花费的余额。
查理103c确定第二交易Tx2中包含的第一代币<data1>是否与第一交易Tx1中包含的第一代币<data1>相同(例如,通过从区块链获得第一交易)。在第一交易Tx1包括输出702c并且该输入包括第一代币的哈希值h1的示例中,查理通过将加密哈希函数H1应用于第一代币(请记住,第一交易中的第一代币是第一交易的输出中包含的哈希值的原像),检查是否第二交易中的第一代币<data1>与第一交易的第一代币相匹配。如果第一代币不匹配,则查理103c知道爱丽丝103a更改了第一代币的至少一部分,因此不遵守协议。在那种情况下,查理103c将不会签署第二交易或将其提交至区块链。
查理103c还确定是否每个表示子数额的值X都基于第一交易Tx1的标识符TxID1。查理103c还可确定是否X值也基于代币中包含的(RSA)模数。例如,查理可确定是否X值基于Γ0=<H1(TxID1||N||0)>QR。为了检查这一点,查理从第一交易Tx1或第二交易Tx2获得交易标识符和模数,并且将哈希函数应用于数据。
如果查理103c满意,则查理通过使用他的公钥PC签名来更新第二交易。也就是说,查理103c将输入添加至更新的第二交易Tx2′,该更新的第二交易包括他的公钥PC和数字签名SigPC。然后,查理将更新的第二交易Tx2′提交至区块链网络106。
查理103c可确定支付给爱丽丝103a的第一交易Tx1的输出702b是否属于区块链未花费的交易输出。换言之,即输出点TxID1||0是否仍然在UTXO集合中。如果输出点未在UTXO集合中,则爱丽丝103a已试图向同一方(即查理)或不同方兑换第一代币。
如果爱丽丝103a、鲍勃103b和查理103c遵循协议,由此每个代币用图5和图11的树结构表示,则查理可基于树结构确定由X值表示的数额。在一些示例中,爱丽丝103a可能在第一代币中包含索引,将给定值映射至树结构中的特定位置。当检查第一数额、余额数额和第二数额时,查理确定由树结构中的值表示的子数额的总和是否对应于第一数额减去余额数额。
查理103c可使用第二代币中的X值计算一个或更多个“候选节点”′。每个候选节点Γ′基于值的树索引,通过对相应值X取幂来进行计算。例如,带对应于树的第一子层中的子节点的索引的值X将取4次幂,带对应于树的第二子层中的子节点的索引的值将取8次幂,带对应于树的第三子层中的子节点的索引的值X将取16次幂,以此类推。树中每个连续层的幂都会加倍。这样做的原因在于每个值X都是树中子节点的平方根。因此,值必须被平方(取2次幂)才能生成子节点。每个子节点都是树中父节点的平方根。因此,每个子节点必须被平方才能生成父节点。如果父节点本身是子节点,则该节点必须被平方,以此类推,直至达到根层。
如果候选节点Γ′是左子节点Γleft,则候选节点应通过将候选节点乘以某个值d映射到根节点。d值说明每个数字都有正平方根和负平方根。d值取决于候选节点在树中的位置,即候选节点到达根层的平方次数。比如,对于从第一子层中的左子节点Γleft生成的候选节点,d1∈N±1,±2}。如果候选节点是左子节点Γleft,则候选节点应通过将候选节点乘以某个值d映射到根节点。
如果候选节点Γ′是右子节点Γright,则候选节点也应通过将候选节点乘以某个值d映射到根节点。d值也将取决于候选节点在树中的位置。如果子节点根据进行计算,则查理需要计算Ωi。Ωi可使用从第一或第二交易获得的信息进行计算,即TxID1和N。当对应于右子节点Γright的X值被平方(一次或更多次)以生成候选节点时,候选节点将包括Ωi的因子。因此,候选节点应经由Γ″=Ωi nΓ0关系映射到根节点,其中n将取决于值所取的幂。需注意,对于每个i,需要独立计算Ωi。
如上所述,查理103c验证第二代币,并且如果满意,则提交更新的第二交易Tx2′至区块链。如果查理103c本人发放第一代币,则查理103c可向爱丽丝103a提供价值第二代币的商品、服务、内容等。例如,如果查理103c是内容提供者并且代币表示内容量,则查理可向爱丽丝103a提供价值第二代币的数额的内容。如果鲍勃103b发放第一代币,则鲍勃可向查理提供代币的第二数额。例如,鲍勃可以是银行,代币可表示电子现金。一旦更新的第二交易Tx2′出现在区块链上,鲍勃则可将价值第二数额的电子现金转移给查理103c。
下面给出了爱丽丝103a、鲍勃103b和查理在示例性场景中所采取步骤的示例性流程,其中爱丽丝103a是银行的客户,查理是期望从爱丽丝103a接收付款的商户。应当理解的是,有些步骤并不是必需的。
爱丽丝103a有表示她的身份的公钥PA(例如,ECDSA公钥),其可由可信的机构进行认证,诸如政府或成熟的实体,并且鲍勃也有公钥PB(例如,ECDSA公钥)。需注意,PA可能不会被广泛公开(例如,PA可涉及国民身份证号码或护照号码),而PB可公开获取(例如,PB可涉及网上银行网站证书)。
假设爱丽丝103a想从鲍勃103b处获得表示100英镑的代币。
步骤1:爱丽丝103a生成两个RSA素数p和q,并且计算公钥(e,N)和私钥d。
步骤2:爱丽丝103a将PA和(e,N)传递给鲍勃。鲍勃103b验证爱丽丝的身份和她的账户,即她是否有资格获得发放的100英镑代币。
步骤3:鲍勃103b可用(e,N)加密爱丽丝的公钥PA,以创建密文c。
需注意,该密文将发布在链上。如果爱丽丝103a对她的代币进行双重花费,则她的RSA私钥将可由公众衍生得出。因此,她的身份将被公开揭露,并且爱丽丝103a可能会因双重花费而受到惩罚。
步骤4:爱丽丝103a和鲍勃103b首选经由PA和PB上的Diffie-Hellman密钥交换建立共享密钥sAB。然后,两个人衍生出公钥列表 其中对于i=1,2,3,…,这些公钥将允许爱丽丝103a本人创建和花费交易。同时,鲍勃也将能够监控他所知道的交易。
步骤5:如图7所示,鲍勃103b创建向爱丽丝103a发放100英镑代币的第一区块链交易。交易的输出是彩色输出。其支付至爱丽丝的公钥为了花费输出,爱丽丝必须提供哈希值h1的原像和她可通过进行验证的ECDSA签名。在此特定的示例中,交易包含用于给输出着色的OP_RETURN输出。数据有效载荷包含公众需要知道的所有信息,以验证来自爱丽丝的付款,包括h1的原像。更准确地说,数据有效载荷可具有图8所示的格式。
应当理解,由于原像在OP_RETURN中可用,锁定脚本中的哈希谜题似乎是多余的。但是,锁定脚本中这一小部分额外数据允许任何方验证爱丽丝的付款,而无需获取整个交易。爱丽丝有责任保存和呈现数据有效载荷。当商户连接的矿工在修剪的区块链上运行时,这非常有用。需注意,所述输出均由鲍勃103b签署,并且可用可信公钥PB进行验证。因此,爱丽丝103a将无法篡改输出中的任何数据。
步骤6:假设爱丽丝103a想向商户查理支付75英镑的椅子费用。爱丽丝计算
1.Γ0=<H1(TxID1||N||0)>QR
2.Ω0=<H2(TxID1||N||0)>1
图12示出了Γ树,图11示出了Γ树的节点表示的现金数额。
如前所述,爱丽丝103a计算树的所需节点值及其平方根。爱丽丝103a不必计算整颗树。她可以从顶部遍历路径,并根据需要计算每个节点的值。重要的是,她未发布树的所有值,因为子节点的Γ值和X值的泄露将破坏N的分解。例如,X00和Γ000将得出Γ00的两个不同平方根。
然后,爱丽丝103a经由区块链交易模板向查理发送(X00,X010,N)和先前的OP_RETURN有效载荷data1。需注意,爱丽丝103a不需要揭露Γ树。图9中示出了交易,data2有效载荷可如图10所示。
为了向有效载荷添加付款详情,爱丽丝103a需要提供对应于X值的索引。例如,00是X00的索引。有了这些索引和余额,则可计算出期初余额和由X值所表示的值。但是,可通过显式地提供值来节省一些计算。也就是说,向有效载荷添加期初余额和对应于t值的值。
该交易的输入是先前交易的第一输出。在该字段中,爱丽丝103a可传递先前的OP_RETURN数据有效载荷至查理103c,以及如果出现双重花费或违反规定则由爱丽丝103a负责的签名。对公众来说,公钥看起来是随机的。但是,当存在争议时,爱丽丝103a和鲍勃103b(银行)两者均可证明公钥与爱丽丝的身份之间的联系。
爱丽丝103a的签名使用SIGHASH标志SIGHASH_SINGLE(0x03)和SIGHASH_ANYONECANPAY(0x80)。SIGHASH_ANYONECANPAY允许其他人为交易筹资。在此示例中,商户查理将为交易筹资。SIGHASH_SINGLE保护爱丽丝的输入和第一输出。需注意,OP_RETURN输出不受签名保护。但是,对OP_RETURN的任何修改都将导致与嵌入在第一输出中的哈希值不同的哈希值,受签名保护。此外,对输入的任何修改,包括data1的修改,将导致使用先前的锁定脚本检查时会失效。
截至目前,由于没有交易费用,交易TxID2对于矿工而言可能无效。但是,其包含查理103c要求验证爱丽丝103a的款项所需的所有信息,爱丽丝的签名和哈希函数确保了所有信息的真实性和完整性。
需注意,爱丽丝103a可以任何其他方式花费她的彩色输出点,因为她对其具有完全控制权。但是,如果她不遵循协议,则将失去由此输出点表示的所有代币值。
步骤7:H0表示哈希函数双重-SHA256、OP_HASH256。
查理执行以下计算和检查:
1.检查H0(data1)=h1,其中h1记录在链上,并由鲍勃在TxID1中签署。
2.输出点TxID1||0仍然在UTXO中,即未花费的。
3.解析data1,以获得N和其他信息。
4.解析data2,以获得付款信息。
9.检查Γ′=d1·H1(TxID1||N||0)是否存在d1∈{±1,±2}。(预计为Γ0)
11.检查H0(data2)=h2
12.检查余额加上付款等于期初余额。
如果通过了所有检查,则查理103c接受付款,并且通过添加他的输入和输出来更新交易。因为爱丽丝的交易使用SIGHASH_ANYONECANPAY和SIGHASH_SINGLE进行签名,所以查理可做到这一点,而不会使爱丽丝的签名无效。图13中示出了更新的交易。
第三输出仅是查理103c的更改。他的输入和变更之间的差额将是支付给矿工的交易费用。除此之外,查理的输入还用于以下目的:
1.证明爱丽丝的付款,
2.通知鲍勃谁是付款接收者,和
3.如果查理和爱丽丝勾结,则承担法律责任。
最终结算:鲍勃103b可监控公钥列表,或查理103c可告知他有来自爱丽丝103a的付款。由于TxID′2记录在区块链上,查理不需要紧急联系鲍勃103b。爱丽丝103a不可能会向查理双重支付款项,因为已经花费了对应的输出点。通过将爱丽丝账户的余额转移到查理的账户,鲍勃103b可采用法定形式完成结算。
或者,为利用区块链的可信度,查理103c可在步骤8中为他在TxID′2中的输出着色,并且花费75英镑作为可分割代币。下一接收方(假设是木材贸易商戴夫)将必须验证追溯回TxID1的所有信息。
对于任何非负整数t,将代币分割成2t部分的机制可通常应用于任何代币***。只要代币发放者确认威廉整数N,则代币所有者将按照其意愿灵活地分割代币。将交换代币所需的所有信息置于区块链上创建了一种交换代币部分的安全方式。
结论
应当理解,上述实施例仅通过示例的方式进行描述。更通俗地说,可根据以下任何一个或更多个语句提供一种方法、装置或程序。
语句1:一种生成用于区块链的第二交易的计算机实现的方法,所述区块链包括第一交易,所述第一交易包括第一代币和第一输出,所述第一输出在第二方和第一方之间转移数字资产的数额,所述第一代币表示除所述数字资产以外的代币资产的第一数额,所述第二交易用于将第二代币从第一方转移至第三方,所述第二代币表示所述代币资产的第二数额;所述方法由所述第一方实施并且包括:生成所述第二交易,其中所述第二交易包括i)第一输入和ii)第一输出,所述第二交易的所述第一输入被配置为解锁所述第一交易的第一输出,所述第二交易的所述第一输出包括第二代币,其中所述第二代币包括表示所述代币资产的所述第二数额的数据,所述第二数额小于所述第一数额。
语句2:根据语句1所述的方法,其中表示所述代币资产的所述第二数额的所述数据包括一个或更多个值,每个值用于表示所述代币资产的所述第一数额的相应子数额。
该方法可包括将所述第二交易传输至所述第二方和/或所述区块链网络以包含在所述区块链中。
语句3:根据语句2所述的方法,其中每个值均基于所述第一交易的标识符生成。
语句4:根据语句2或语句3所述的方法,其中每个值均基于所述第一方公钥的模数(modulus)生成,并且其中所述第二交易的所述输出包括所述模数。
语句5:根据语句3或语句4所述的方法,其中每个值均基于二叉树结构的根节点,所述根节点是基于所述第一交易的所述标识符和/或所述预先确定的模数而生成的,其中所述树结构包括包含根节点的根层、和一个或更多个子层的序列,每个子层包括一个或更多个子节点对,每个对都是所述结构中的上一层的相应节点的子辈,其中每个节点表示所述代币资产的相应数额,所述根节点表示所述第一数额,并且其中每个子节点对共同表示等于所述上一层的相应节点所表示的所述数额的数额。
语句6:根据语句5所述的方法,其中所述一个或更多个值中的每一个值均是所述一个或更多个所生成的节点中的相应一个节点的相应平方根。
该方法可包括生成树形结构的每个节点。或者,该方法可包括仅生成节点的子集,例如需要表示代币资产的第二数额的节点。
语句7:根据语句5或语句6所述的方法,其中所述根节点通过将第一加密哈希函数至少应用于所述第一交易的所述标识符而生成。
语句8:根据语句7所述的方法,其中所述根节点通过将所述第一加密哈希函数至少应用于所述第一交易的所述标识符和所述模数而生成。
语句9:根据语句8所述的方法,其中所述第一代币包括所述模数。
语句10:根据语句5至9中任一个所述的方法,其中所述第一代币表示第一数额A,其中所述树结构的第i层包括2i-1节点,并且其中所述第i层中的每个节点表示数额A*21-i。
语句11:根据语句5至10中任一个所述的方法,其中每个子节点对包括第一子节点和第二子节点,并且其中所述第i层中的每个第一子节点包括所述上一层的所述相应节点的平方根,并且其中所述第i层中的每个第二子节点包括所述上一层的所述相应节点的平方根,和组件,所述组件是通过将第二加密哈希函数至少应用于所述第一交易的所述标识符而生成的。
该第二加密哈希函数可至少应用于该第一交易的该标识符和该模数。
语句12:根据从属于语句7的语句11所述的方法,其中所述第一加密哈希函数与所述第二加密哈希函数是不同的加密哈希函数。
语句13:根据前述任一个语句所述的方法,其中所述相应子数额是所述第一数额的不同子数额,每个均表示所述代币资产的不同数额。
语句14:根据前述任一个语句所述的方法,其中所述第二交易的所述第一输出是不可花费的交易输出。
语句15:根据前述任一个语句所述的方法,其中所述第一交易的所述第一输出包括所述第一代币的哈希值,并且其中所述第二交易的所述第一输入包括所述第一代币。
语句16:根据前述任一个语句所述的方法,其中所述第二交易的第一输入包括所述第一方的第一公钥、和基于对应于所述第一公钥的第一私钥生成的数字签名。
语句17:根据语句16所述的方法,其中所述第一交易由所述第二方生成,并且其中所述方法包括:基于对应于所述第一方的第二公钥和所述第二方的公钥,生成共享私钥;以及,基于所述共享私钥和所述第一方的所述第二公钥,生成所述第一方的所述第一公钥。
语句18:根据语句17所述的方法,其中所述第二方和第三方是同一方。
语句19:根据从属于语句4的前述任一个语句所述的方法,包括:生成所述第一方的第三公钥,其中所述第三公钥包括所述模数;以及,将所述第一方的所述第三公钥传输至所述第二方。
语句20:根据前述任一个语句所述的方法,其中所述第二交易的所述第一输入被配置为使所述第三方能够向所述第二交易添加第二输入。
语句21:一种生成用于区块链的第二交易的计算机实现的方法,所述区块链包括第一交易,所述第一交易包括第一代币和第一输出,所述第一输出将数字资产的数额从第二方转移至第一方,所述第一代币表示除所述数字资产以外的代币资产的第一数额,所述第二交易用于将表示所述代币资产的第二数额的第二代币从所述第一方转移至第三方;所述方法由所述第三方实施并且包括:获取所述第二交易,其中所述第二交易包括i)第一输入,所述第一输入包括所述第一代币,和ii)第一输出,所述第二交易的所述第一输出包括所述第二代币,其中所述第二代币包括一个或更多个值,每个值均用于表示所述代币资产的所述第一数额的相应子数额(sub-amount);基于是否a)每个值均至少基于所述第一交易的标识符而生成、和b)所述第二交易中的所述第一代币与所述第一交易中的所述第一代币相同,来确定是否所述第二代币为有效代币;基于所述确定,通过使用所述第三方的公钥签署所述第二交易来更新所述第二交易;以及,将所述更新的第二交易传输至所述区块链网络以包含在所述区块链中。
语句22:根据语句21所述的方法,其中所述第一代币包括所述第一方的公钥的模数,并且其中所述确定包括确定是否c)每个值均至少基于所述第一交易的所述标识符和所述模数而生成。
语句23:根据语句21或语句22所述的方法,其中所述确定包括:确定是否d)每个值均基于二叉树结构的根节点,所述根节点是基于所述第一交易的所述标识符和/或所述预定的模数而生成的,其中所述树结构包括根层、和一个或更多个子层的序列,所述根层包含所述根节点,每个子层包括一个或更多个子节点对,每个对都是所述结构中上一层的相应节点的子辈,其中每个节点均表示所述代币资产的相应数额,所述根节点表示所述第一数额,并且其中每个子节点对一起表示等于所述上一层的相应节点所表示的所述数额的数额。
语句24:根据语句23所述的方法,所述方法包括:基于由对应于所述一个或更多个值的所述相应节点所表示的所述相应数额来确定所述第二代币的所述第二数额。
语句25:根据语句21至24中任一个所述的方法,其中所述第一交易包括所述第一代币的哈希值,并且其中所述确定是否a)所述第二交易中的所述第一代币与所述第一交易中的所述第一代币相同包括:确定所述第二交易中所述第一代币的哈希值与所述第一交易中的所述第一代币的所述哈希值相同。
语句26:根据语句21至25中任一个所述的方法,其中所述确定包括确定是否d)由所述第二交易的所述第一输入引用的所述第一交易的输出是未花费的交易输出。
语句27:根据语句21至26中任一个所述的方法,其中所述第二交易包括所述第二代币的哈希值,并且其中所述确定包括确定是否e)所述第二代币的哈希值等于所述第二交易中所述第二代币的所述哈希值。
语句28:根据语句21至27中任一个所述的方法,其中所述获取包括从所述第一方接收所述第二交易。
语句29:根据语句21至28中任一个所述的方法,所述方法包括:生成所述第一交易,其中所述第一交易包括i)第一输出,所述第一输出被配置为,当与所述第二交易的输入一起执行时,要求所述第二交易的所述输入包括所述第一方的第一公钥,以进行解锁;以及,将所述第一交易传输至所述区块链网络以包含在所述区块链中。
语句30:一种生成用于区块链的第一交易的计算机实现的方法,所述第一交易包括第一输出,所述第一输出将数字资产的数额从第二方转移至第一方,所述第一交易用于将第一代币从所述第二方转移至所述第一方,所述第一代币表示除所述数字资产以外的代币资产的第一数额;所述方法由所述第二方实施并且包括:生成所述第一交易,其中所述第一交易包括i)第一输出,所述第一输出被配置为当与第二交易的输入一起执行时,要求所述第二交易的输入包括所述第一方的第一公钥以进行解锁,和ii)第二输出,所述第二输出包括所述第一代币,其中所述第一代币包括a)所述代币资产的所述第一数额,b)所述第一方的加密标识符,所述加密标识符通过使用所述第一方的第二公钥加密所述第一方的标识符而生成,其中所述第二公钥包括模数,并且其中所述第一代币包括c)所述模数。
语句31:根据语句30所述的方法,其中所述第一方的所述标识符是所述第一方的第三公钥。
语句32:根据语句30或语句31所述的方法,所述方法包括:基于所述第二方的私钥和所述第一方的所述第二公钥生成共享私钥;以及,基于所述共享私钥和所述第一方的所述第二公钥生成所述第一方的所述第一公钥。
语句33:根据语句31或语句32所述的方法,所述方法包括:从所述第一方获取所述第一方的所述第二公钥和/或所述第三公钥。
语句34:根据语句30至33中任一个所述的方法,其中所述第一交易包括iii)第三输出,所述第三输出被配置为,当与第四交易的输入一起执行时,要求所述第四交易的所述输入包括所述第二方的第一公钥,以进行解锁。
语句35:根据语句30至34中任一个所述的方法,其中所述第一交易的所述第一输出包括哈希谜题,所述哈希谜题被配置为,当与所述第二交易的所述输入一起执行时,要求所述第二交易的所述输入包括所述第一代币。
语句36:根据语句30至35中任一个所述的方法,所述方法包括:将所述第一交易传输至所述区块链网络以包含在所述区块链中。
语句37:根据语句30至36中任一个所述的方法,所述方法包括:获取所述第一方的所述第二公钥;确定所述第二公钥由可信方认证;以及,所述传输包括仅当所述第二公钥被认证时传输所述第一交易。
语句38:第一方的计算机设备,所述计算机设备包括:存储器,所述存储器包括一个或更多个存储器单元;以及,处理装置,所述处理装置包括一个或更多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据语句1至20中任一个所述的方法。
语句39:一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在第一方的计算机设备上运行时,执行根据语句1至20中任一个所述的方法。
语句40:第三方的计算机设备,所述计算机设备包括:存储器,所述存储器包括一个或更多个存储器单元;以及,处理装置,所述处理装置包括一个或更多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据语句21至29中任一个所述的方法。
语句41:一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在第三方的计算机设备上运行时,执行根据语句21至29中任一个所述的方法。
语句42:第二方的计算机设备,所述计算机设备包括:存储器,所述存储器包括一个或更多个存储器单元;以及,处理装置,所述处理装置包括一个或更多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据语句30至37中任一个所述的方法。
语句43:一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在第二方的计算机设备上运行时,执行根据语句30至37中任一个所述的方法。
语句44:一种用于包含在区块链中的第一交易,所述第一交易用于将第一代币从第二方转移至第一方,所述第一代币表示代币资产的第一数额,并且其中所述第一交易包括i)第一输出,所述第一输出被配置为,当与第二交易的输入一起执行时,要求第二交易的输入包括所述第一方的第一公钥,以进行解锁,和ii)第二输出,所述第二输出包括所述第一代币,其中所述第一代币包括a)所述代币资产的所述第一数额,b)所述第一方的加密标识符,所述加密标识符通过使用所述第一方的第二公钥加密所述第一方的标识符而生成,其中所述第二公钥包括模数,并且其中所述第一代币包括c)所述模数。
语句45:一种计算机可读存储介质,其上存储有根据语句44所述的第一交易。
语句46:一种用于包含在区块链中的第二交易,该第二交易用于将表示代币资产的第二数额的第二代币从第一方转移至第三方,其中第二交易包括i)第一输入,该第一输入被配置为解锁第一交易的第一输出,该第一交易将数字资产数额从第二方转移到第一方,数字资产不同于代币资产,ii)第一输出,该第一输出包括第二代币,其中第二代币包括表示代币资产的第二数额的数据,第二数额小于第一数额。
语句47:一种计算机可读存储介质,其上存储有根据语句46所述的第一交易。
根据本文公开的教导的另一方面,可提供一种方法,该方法包括第一方、第二方、第三方中的部分或全部的措施。
根据本文公开的教导的另一方面,可提供一种***,该***包括第一方、第二方、第三方中的部分或全部的计算机设备。
根据本文公开的教导的另一方面,可提供一组交易,该组交易包括第一交易和第二交易。
一旦给出本文的公开内容,所公开技术的其他变体或用例对于本领域技术人员可能变得显而易见。本公开的范围不受所描述的实施例限制,而仅受随附语句限制。
Claims (47)
1.一种生成用于区块链的第二交易的计算机实现的方法,所述区块链包括第一交易,所述第一交易包括第一代币和第一输出,所述第一输出在第二方和第一方之间转移数字资产的数额,所述第一代币表示除所述数字资产以外的代币资产的第一数额,所述第二交易用于将第二代币从第一方转移至第三方,所述第二代币表示所述代币资产的第二数额;所述方法由所述第一方实施并且包括:
生成所述第二交易,其中所述第二交易包括i)第一输入和ii)第一输出,所述第二交易的所述第一输入被配置为解锁所述第一交易的第一输出,所述第二交易的所述第一输出包括第二代币,其中所述第二代币包括表示所述代币资产的所述第二数额的数据,所述第二数额小于所述第一数额;以及
将所述第二交易传输给所述第一方、第三方和/或所述区块链网络的一方、部分或全部。
2.根据权利要求1所述的方法,其中表示所述代币资产的所述第二数额的所述数据包括一个或更多个值,每个值用于表示所述代币资产的所述第一数额的相应子数额。
3.根据权利要求2所述的方法,其中每个值均基于所述第一交易的标识符生成。
4.根据权利要求2或权利要求3所述的方法,其中每个值均基于所述第一方公钥的模数生成,并且其中所述第二交易的所述输出包括所述模数。
5.根据权利要求3或权利要求4所述的方法,其中每个值均基于二叉树结构的根节点,所述根节点是基于所述第一交易的所述标识符和/或所述预定的模数而生成的,其中所述树结构包括包含根节点的根层、和一个或更多个子层的序列,每个子层包括一个或更多个子节点对,每个对都是所述结构中的上一层的相应节点的子辈,其中每个节点表示所述代币资产的相应数额,所述根节点表示所述第一数额,并且其中每个子节点对共同表示等于所述上一层的相应节点所表示的所述数额的数额。
6.根据权利要求5所述的方法,其中所述一个或更多个值中的每一个值均是所述一个或更多个所生成的节点中的相应一个节点的相应平方根。
7.根据权利要求5或权利要求6所述的方法,其中所述根节点通过将第一加密哈希函数至少应用于所述第一交易的所述标识符而生成。
8.根据权利要求7所述的方法,其中所述根节点通过将所述第一加密哈希函数至少应用于所述第一交易的所述标识符和所述模数而生成。
9.根据权利要求8所述的方法,其中所述第一代币包括所述模数。
10.根据权利要求5至9中任一项所述的方法,其中所述第一代币表示第一数额A,其中所述树结构的第i层包括2i-1节点,并且其中所述第i层中的每个节点表示数额A*21-i。
11.根据权利要求5至10中任一项所述的方法,其中每个子节点对包括第一子节点和第二子节点,并且其中所述第i层中的每个第一子节点包括所述上一层的所述相应节点的平方根,并且其中所述第i层中的每个第二子节点包括所述上一层的所述相应节点的平方根,和通过将第二加密哈希函数至少应用于所述第一交易的所述标识符而生成的组件。
12.根据从属于权利要求7的权利要求11所述的方法,其中所述第一加密哈希函数与所述第二加密哈希函数是不同的加密哈希函数。
13.根据前述任一项权利要求所述的方法,其中所述相应子数额是所述第一数额的不同子数额,每个均表示所述代币资产的不同数额。
14.根据前述任一项权利要求所述的方法,其中所述第二交易的所述第一输出是不可花费的交易输出。
15.根据前述任一项权利要求所述的方法,其中所述第一交易的所述第一输出包括所述第一代币的哈希值,并且其中所述第二交易的所述第一输入包括所述第一代币。
16.根据前述任一项权利要求所述的方法,其中所述第二交易的第一输入包括所述第一方的第一公钥、和基于对应于所述第一公钥的第一私钥生成的数字签名。
17.根据权利要求16所述的方法,其中所述第一交易由所述第二方生成,并且其中所述方法包括:
基于对应于所述第一方的第二公钥和所述第二方的公钥,生成共享私钥;以及
基于所述共享私钥和所述第一方的所述第二公钥,生成所述第一方的所述第一公钥。
18.根据权利要求17所述的方法,其中所述第二方和第三方是同一方。
19.根据从属于权利要求4的前述任一项权利要求所述的方法,包括:
生成所述第一方的第三公钥,其中所述第三公钥包括所述模数;以及
将所述第一方的所述第三公钥传输至所述第二方。
20.根据前述任一项权利要求所述的方法,其中所述第二交易的所述第一输入被配置为使所述第三方能够向所述第二交易添加第二输入。
21.一种更新用于区块链的第二交易的计算机实现的方法,所述区块链包括第一交易,所述第一交易包括第一代币和第一输出,所述第一输出将数字资产的数额从第二方转移至第一方,所述第一代币表示除所述数字资产以外的代币资产的第一数额,所述第二交易用于将表示所述代币资产的第二数额的第二代币从所述第一方转移至第三方;所述方法由所述第三方实施并且包括:
获取所述第二交易,其中所述第二交易包括i)第一输入,所述第一输入包括所述第一代币,和ii)第一输出,所述第二交易的所述第一输出包括所述第二代币,其中所述第二代币包括一个或更多个值,每个值均用于表示所述代币资产的所述第一数额的相应子数额;
基于是否a)每个值均至少基于所述第一交易的标识符而生成、和b)所述第二交易中的所述第一代币与所述第一交易中的所述第一代币相同,来确定是否所述第二代币为有效代币;
基于所述确定,通过使用所述第三方的公钥签署所述第二交易来更新所述第二交易;以及
将所述更新的第二交易传输至所述区块链网络以包含在所述区块链中。
22.根据权利要求21所述的方法,其中所述第一代币包括所述第一方的公钥的模数,并且其中所述确定包括确定是否c)每个值均至少基于所述第一交易的所述标识符和所述模数而生成。
23.根据权利要求21或权利要求22所述的方法,其中所述确定包括:
确定是否d)每个值均基于二叉树结构的根节点,所述根节点是基于所述第一交易的所述标识符和/或所述预定的模数而生成的,其中所述树结构包括根层、和一个或更多个子层的序列,所述根层包含所述根节点,每个子层包括一个或更多个子节点对,每个对都是所述结构中上一层的相应节点的子辈,其中每个节点均表示所述代币资产的相应数额,所述根节点表示所述第一数额,并且其中每个子节点对一起表示等于所述上一层的相应节点所表示的所述数额的数额。
24.根据权利要求23所述的方法,所述方法包括:
基于由对应于所述一个或更多个值的所述相应节点所表示的所述相应数额来确定所述第二代币的所述第二数额。
25.根据权利要求21至24中任一项所述的方法,其中所述第一交易包括所述第一代币的哈希值,并且其中所述确定是否a)所述第二交易中的所述第一代币与所述第一交易中的所述第一代币相同包括:确定所述第二交易中所述第一代币的哈希值与所述第一交易中的所述第一代币的所述哈希值相同。
26.根据权利要求21至25中任一项所述的方法,其中所述确定包括确定是否d)由所述第二交易的所述第一输入引用的所述第一交易的输出是未花费的交易输出。
27.根据权利要求21至26中任一项所述的方法,其中所述第二交易包括所述第二代币的哈希值,并且其中所述确定包括确定是否e)所述第二代币的哈希值等于所述第二交易中所述第二代币的所述哈希值。
28.根据权利要求21至27中任一项所述的方法,其中所述获取包括从所述第一方接收所述第二交易。
29.根据权利要求21至28中任一项所述的方法,所述方法包括:
生成所述第一交易,其中所述第一交易包括i)第一输出,所述第一输出被配置为,当与所述第二交易的输入一起执行时,要求所述第二交易的所述输入包括所述第一方的第一公钥,以进行解锁;以及
将所述第一交易传输至所述区块链网络以包含在所述区块链中。
30.一种生成用于区块链的第一交易的计算机实现的方法,所述第一交易包括第一输出,所述第一输出将数字资产的数额从第二方转移至第一方,所述第一交易用于将第一代币从所述第二方转移至所述第一方,所述第一代币表示除所述数字资产以外的代币资产的第一数额;所述方法由所述第二方实施并且包括:
生成所述第一交易,其中所述第一交易包括i)第一输出,所述第一输出被配置为当与第二交易的输入一起执行时,要求所述第二交易的输入包括所述第一方的第一公钥以进行解锁,和ii)第二输出,所述第二输出包括所述第一代币,其中所述第一代币包括a)所述代币资产的所述第一数额,b)所述第一方的加密标识符,所述加密标识符通过使用所述第一方的第二公钥加密所述第一方的标识符而生成,其中所述第二公钥包括模数,并且其中所述第一代币包括c)所述模数。
31.根据权利要求30所述的方法,其中所述第一方的所述标识符是所述第一方的第三公钥。
32.根据权利要求30或31所述的方法,所述方法包括:
基于所述第二方的私钥和所述第一方的所述第二公钥生成共享私钥;以及
基于所述共享私钥和所述第一方的所述第二公钥生成所述第一方的所述第一公钥。
33.根据权利要求31或32所述的方法,所述方法包括:
从所述第一方获取所述第一方的所述第二公钥和/或所述第三公钥。
34.根据权利要求30至33中任一项所述的方法,其中所述第一交易包括iii)第三输出,所述第三输出被配置为,当与第四交易的输入一起执行时,要求所述第四交易的所述输入包括所述第二方的第一公钥,以进行解锁。
35.根据权利要求30至34中任一项所述的方法,其中所述第一交易的所述第一输出包括哈希谜题,所述哈希谜题被配置为,当与所述第二交易的所述输入一起执行时,要求所述第二交易的所述输入包括所述第一代币。
36.根据权利要求30至35中任一项所述的方法,所述方法包括:
将所述第一交易传输至所述区块链网络以包含在所述区块链中。
37.根据权利要求30至36中任一项所述的方法,所述方法包括:
获取所述第一方的所述第二公钥;
确定所述第二公钥由可信方认证;以及
所述传输包括仅当所述第二公钥被认证时传输所述第一交易。
38.第一方的计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或更多个存储器单元;以及
处理装置,所述处理装置包括一个或更多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据权利要求1至20中任一项所述的方法。
39.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在第一方的计算机设备上运行时,执行根据权利要求1至20中任一项所述的方法。
40.第三方的计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或更多个存储器单元;以及
处理装置,所述处理装置包括一个或更多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据权利要求21至29中任一项所述的方法。
41.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在第三方的计算机设备上运行时,执行根据权利要求21至29中任一项所述的方法。
42.第二方的计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或更多个存储器单元;以及
处理装置,所述处理装置包括一个或更多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据权利要求30至37中任一项所述的方法。
43.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在第二方的计算机设备上运行时,执行根据权利要求30至37中任一项所述的方法。
44.一种用于包含在区块链中的第一交易,所述第一交易用于将第一代币从第二方转移至第一方,所述第一代币表示代币资产的第一数额,并且其中所述第一交易包括i)第一输出,所述第一输出被配置为当与第二交易的输入一起执行时要求第二交易的输入包括所述第一方的第一公钥以进行解锁,和ii)第二输出,所述第二输出包括所述第一代币,其中所述第一代币包括a)所述代币资产的所述第一数额,b)所述第一方的加密标识符,所述加密标识符通过使用所述第一方的第二公钥加密所述第一方的标识符而生成,其中所述第二公钥包括模数,并且其中所述第一代币包括c)所述模数。
45.一种计算机可读存储介质,其上存储有根据权利要求44所述的第一交易。
46.一种用于包含在区块链中的第二交易,所述第二交易用于将表示代币资产的第二数额的第二代币从第一方转移至第三方,其中所述第二交易包括i)第一输入和ii)第一输出,所述第一输入被配置为解锁根据权利要求44所述的第一交易的第一输出,所述第二交易的所述第一输出包括所述第二代币,其中所述第二代币包括表示所述代币资产的所述第二数额的数据,所述第二数额小于所述第一数额。
47.一种计算机可读存储介质,其上存储有根据权利要求46所述的第一交易。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1913714.0A GB2587354A (en) | 2019-09-24 | 2019-09-24 | Divisible tokens |
GB1913714.0 | 2019-09-24 | ||
PCT/IB2020/058129 WO2021059054A1 (en) | 2019-09-24 | 2020-09-01 | Divisible tokens |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114424223A true CN114424223A (zh) | 2022-04-29 |
Family
ID=68425458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080066671.1A Pending CN114424223A (zh) | 2019-09-24 | 2020-09-01 | 可分割代币 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20230316272A1 (zh) |
EP (1) | EP4035326A1 (zh) |
JP (1) | JP2022549001A (zh) |
CN (1) | CN114424223A (zh) |
GB (1) | GB2587354A (zh) |
WO (1) | WO2021059054A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2605792A (en) * | 2021-04-13 | 2022-10-19 | Nchain Licensing Ag | Blockchain based system and method |
US11538028B1 (en) * | 2022-06-22 | 2022-12-27 | Alexei Dulub | Implementing non-fungible tokens using bitcoin |
GB2622627A (en) * | 2022-09-23 | 2024-03-27 | Nchain Licensing Ag | Atomic swap token trades |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10237074B2 (en) * | 2014-04-08 | 2019-03-19 | Hewlett Packard Enterprise Development Lp | Redactable document signatures |
WO2017145004A1 (en) * | 2016-02-23 | 2017-08-31 | nChain Holdings Limited | Universal tokenisation system for blockchain-based cryptocurrencies |
US20180151182A1 (en) * | 2016-11-29 | 2018-05-31 | Interactive Intelligence Group, Inc. | System and method for multi-factor authentication using voice biometric verification |
CN111566987B (zh) * | 2018-12-12 | 2023-05-02 | 深圳市汇顶科技股份有限公司 | 数据处理方法、电路、终端设备及存储介质 |
US11902789B2 (en) * | 2019-08-05 | 2024-02-13 | Hewlett Packard Enterprise Development Lp | Cloud controlled secure Bluetooth pairing for network device management |
-
2019
- 2019-09-24 GB GB1913714.0A patent/GB2587354A/en not_active Withdrawn
-
2020
- 2020-09-01 CN CN202080066671.1A patent/CN114424223A/zh active Pending
- 2020-09-01 JP JP2022518654A patent/JP2022549001A/ja active Pending
- 2020-09-01 EP EP20768113.1A patent/EP4035326A1/en active Pending
- 2020-09-01 US US17/761,165 patent/US20230316272A1/en active Pending
- 2020-09-01 WO PCT/IB2020/058129 patent/WO2021059054A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
US20230316272A1 (en) | 2023-10-05 |
GB2587354A (en) | 2021-03-31 |
GB201913714D0 (en) | 2019-11-06 |
EP4035326A1 (en) | 2022-08-03 |
JP2022549001A (ja) | 2022-11-22 |
WO2021059054A1 (en) | 2021-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11930100B2 (en) | Fund conversion between blockchains | |
US11637709B2 (en) | Split-key wallet access between blockchains | |
US11861606B2 (en) | Blockchain system for confidential and anonymous smart contracts | |
CN110089069B (zh) | 用于信息保护的***和方法 | |
EP4333357A2 (en) | Hash function attacks | |
CN114982193A (zh) | 使用区块链事务的数字合约 | |
CN113875186A (zh) | 知识证明 | |
CN115176441A (zh) | 基于身份的公钥生成协议 | |
CN114424223A (zh) | 可分割代币 | |
Dryja | Discreet log contracts | |
CN113906713A (zh) | 包括基于哈希的验证的可运行代码的区块链交易 | |
JP2022533777A (ja) | プルーフ・オブ・ワーク | |
US20220337427A1 (en) | Cryptographically linked identities | |
CN113924748A (zh) | 知识证明 | |
CN114531941A (zh) | 多标准区块链协议 | |
KR20220024124A (ko) | 지식 증명 | |
Carbunar et al. | Conditional e-payments with transferability | |
US20230162176A1 (en) | Method for implementing a digital coin system using a blockchain | |
CN117280653A (zh) | 多方区块链地址方案 | |
CN115152195A (zh) | 分层网络的适配连接 | |
Sekar | Preventing front-running attacks using timelock encryption | |
Giannikou | Cryptocurrencies and Mixing Services | |
Ackerer et al. | The Underlying Technology for Cryptoassets | |
CN117941317A (zh) | 生成区块链事务 | |
CN117678191A (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 |