CN114128216A - 多输入交易 - Google Patents

多输入交易 Download PDF

Info

Publication number
CN114128216A
CN114128216A CN202080038771.3A CN202080038771A CN114128216A CN 114128216 A CN114128216 A CN 114128216A CN 202080038771 A CN202080038771 A CN 202080038771A CN 114128216 A CN114128216 A CN 114128216A
Authority
CN
China
Prior art keywords
transaction
output
input
user
script
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080038771.3A
Other languages
English (en)
Inventor
张伟
杰克·戴维斯
克雷格·赖特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nchain Holdings Ltd
Original Assignee
Nchain Holdings Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nchain Holdings Ltd filed Critical Nchain Holdings Ltd
Publication of CN114128216A publication Critical patent/CN114128216A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3823Payment protocols; Details thereof insuring higher security of transaction combining multiple encryption tools for a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3825Use of electronic signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • G06Q20/4014Identity check for transactions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

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

Abstract

本发明提供了一种方法,包括:提供第一交易,所述第一交易指定数字资产的输出金额大于其输入指向的金额,其中所述第一交易的输出包括锁定脚本,所述锁定脚本指定条件;通过侧信道接收来自多个用户的每一个的输入,添加每个接收的输入至所述第一交易;一旦达到目标,由此所述第一交易的所述输入所指向的总输入金额等于或超出所述输出金额,导致所述第一交易和第二交易发布至区块链网络以记录在区块链中。所述第二交易包括输入,所述输入指向所述第一交易的所述输出,并且包括满足所述条件的解锁脚本。所述条件要求所述解锁脚本包括媒体密钥,使用户能够访问媒体内容项。

Description

多输入交易
技术领域
本公开涉及一种向用户交付内容的机制,该机制在基于区块链的系统的背景中利用输入级延展性的概念,即添加(或删除)交易的输入而不核实交易无效的能力。
背景技术
区块链指分布式数据结构的一种形式,其中在对等(P2P)网络多个节点中的每个节点维护区块链副本。区块链包括一连串数据块,其中每个区块包括一个或多个交易。每个交易均可指向序列中的先前交易。交易可以提交至网络以包含在新的区块中。通过已知为“挖矿”的过程产生新的区块,其涉及多个竞相执行“工作量证明”的挖矿节点,即基于等待被包含到区块中的未决交易池解决加密难题。
区块链中的交易通常用于传递数字资产,即作为价值储存手段的数据。但是也可利用区块链实现区块链上的分层附加功能。例如,区块链协议可允许在交易输出中储存附加用户数据。现代区块链在单一交易中可储存的最大数据容量在不断增加,从而能够并入更复杂的数据。比如,这可用于在区块链中存储电子文件,或者甚至音频或视频数据。
网络中的每个节点都可以具有转发、挖矿和存储三种角色中的任意一种、两种或全部角色。每个转发节点将(有效的)交易传播到一个或多个其他节点,从而在它们之间将交易传播到整个网络节点。每个挖矿节点竞相将交易挖掘到区块中。每个存储节点储存自己的区块链挖矿区块副本。为将交易记录在区块链中,一方将交易发送到拟传播网络的一个节点。接收交易的挖矿节点可能会竞相将交易挖掘到新的区块中。每个节点被配置为遵守相同的节点协议,该协议将包含一个或多个条件来保证交易有效。无效交易将不会被传播或挖掘到区块中。假定交易已核实有效并因此在区块链上被接受,附加用户数据将作为不可改变的公共记录,继续储存在P2P网络中的各个节点处。
通常,成功解决工作量证明难题以创建最新区块的矿工会获得称作“生成交易”的新交易作为奖励,该“生成交易”生成新的数字资产金额。交易还可以可选地为成功的矿工指定额外的挖矿费。工作量证明鼓励矿工不要通过将双重支付交易包含在其区块中来欺骗系统,因为这需要大量的计算资源来挖掘区块,并且包含双重支付尝试的区块很可能不被其他节点所接受。
在“基于输出的”模型(有时称为“基于UTXO的模型”)中,给定交易的数据结构包括一个或多个输入和一个或多个输出。任何可花费的输出都包括指定数字资产金额的元素,有时称为UTXO(“未花费的交易输出”)。输出可进一步包括指定赎回输出条件的锁定脚本。每个输入均包括指向先前交易中的此类输出的指针,并且可进一步包括用于解锁所指向输出的锁定脚本的解锁脚本。因此设想一对交易,称为第一交易和第二交易(或“目标”交易)。第一交易包括指定数字资产金额的至少一个输出,包括定义解锁输出的一个或多个条件的锁定脚本。第二交易包括至少一个输入,包括指向第一交易的输出的指针,以及用于解锁第一交易的输出的解锁脚本。
在此等模型中,当第二交易被发送到P2P网络传播并且记录在区块链中时,每个节点应用的有效性标准之一是:解锁脚本满足第一交易的锁定脚本中定义的要求。第二交易有效的另一个条件是:第一交易的输出尚未被另一个有效交易赎回。根据这些条件中的任何一个发现目标交易无效的任何节点都不会传播该交易,也不会包含该交易以挖掘到拟记录在区块链中的区块中。另一种情况通常是输出指定的数字资产总金额不超过交易的输入所指向的总金额。假设情况并非如此,在大多数协议中,除了生成交易中奖励的金额外,总输出金额和总输入金额之间的任何正差异都隐式地作为额外的挖矿费。如今,在实践中,即使交易有效(协议通常不会强制矿工接受有效交易进入其池中,但必须激励他们这样做),总输入金额需要超过总输出金额足够的挖矿费才能让矿工接受交易。
返回到锁定脚本的想法,假设目标交易是将一定数量的数字资产从第一方(“爱丽丝”)传送给第二方(“鲍勃”)。先前第一交易的锁定脚本中定义的要求之一通常是:第二交易的解锁脚本中包含爱丽丝的加密签名。签名必须由爱丽丝签署第二交易的一部分来产生。至于是哪一部分,可以由解锁脚本灵活定义,或者可以是节点协议的固有特性,具体取决于所使用的协议。然而,拟签署的部分都通常不包含第二交易的一些其他部分,例如解锁脚本本身的部分或全部。
这使得“延展性”成为了可能。即在挖矿之前,第二交易中未签署的部分可进行修改(“延展”),而不会使交易无效。延展性通常是密码学中的一个已知概念。利用延展性,消息可以被恶意修改但仍被认为是真实的,所以延展性通常被视为存在安全问题。在区块链的背景下,延展性并不一定构成问题,而只不过是一种奇妙的人类产物。利用延展性,可以修改交易的某个部分而不会使其无效。
最近,有人提议专门利用延展性,以便将交易用作媒体数据的载体。数据内容可以包含在交易的解锁脚本中,然后该交易通过侧信道在各方之间发送。其中一方延展交易以删除数据,并将延展版本继续发送到P2P网络进行挖掘(然而如果不删除该数据,则交易会使区块链膨胀,并且通常还需要更高的挖矿费,因为矿工接受交易所需的奖励通常与交易的数据量成比例)。
在交易被广播到P2P网络以记录在区块链中之前,诸如支付通道等侧信道允许在“链下”各方之间交换交易或交易相关数据。侧信道与P2P覆盖网络分离,因此直到其中一方选择将交易发布到网络之前,通过侧信道发送的任何交易都不会(尚未)通过网络传播以记录在区块链中。标准的支付通道要求“资金交易”,由此双方可以有效地共同托管资金。资金交易被广播以建立通道,然后一旦提供相关服务,结算交易就会被广播以关闭通道,并花费资金交易。
目前已经有一些关于“小额支付通道”的方案,即一方(“爱丽丝”)向另一方(“鲍勃”)发送交易序列,以向鲍勃支付小额的分期付款。这不需要资金交易。目前至少有一种方案是利用侧信道对数据包中的电影数据进行流式传输。鲍勃会向爱丽丝发送数据包序列,作为对每个数据包的响应,爱丽丝会返回相应交易,然后鲍勃可以将该交易广播到网络从而获得相应电影数据包的款项。
另外,侧信道的另一种用途是允许交易的众筹。筹资方(假设是鲍勃)创建模板交易,其中至少一个输出指定拟转移至其自己或其代表的第三方的所需金额。但是,此交易尚未包含足够的输入来达到目标金额。因此,模板交易最初是无效的,因为其输入所指向的数字资产总金额小于其输出中指定的总款项。鲍勃通过在服务器上发布链下模板交易,使公众可以使用该模板交易。然后,公众成员可以通过添加输入在服务器上延展模板交易,这些输入将逐渐增加至目标金额,直到交易生效。一旦达到目标,鲍勃则将其发布到P2P网络以将其挖掘成区块。在实践中,目标值将需要略微超过向鲍勃支付的指定款项,以涵盖挖矿费。
发明内容
通过小额支付通道向用户交付内容的现有方案存在的问题在于,只允许流式传输方和单独流式传输内容之间存在一对一的关系:单个用户必须为拟流式传输的每个数据包付费,然后该数据包通过侧信道返回给特定的单独用户。如果单独的用户想要流式传输相同的内容,则需要使用流式传输方复制这个过程,发送他们自己的交易流,各自再次为每个相应的数据包向流式传输方付费。对于许多用户来说,这将加剧P2P网络上的网络拥塞,还会使区块链膨胀,因为需要将大量交易发布到网络并且记录在区块链中(每个用户每个数据包一个交易)。
作为替代方案,原则上众筹技术可用于通过向共同交易中添加输入使得多方共同为一段内容提供资金。这意味着需要发布到P2P网络的交易数量只会按数据包或内容块扩展,而不是按用户扩展,从而缓解网络拥塞和区块链膨胀的问题。但是,现有众筹理念的问题在于,一旦达到众筹目标,则不提供向用户发布内容的集成机制。
本公开提供了一种用于向用户发布众筹内容的链上集成机制。
根据本文公开的一个方面,提供了一种使多个用户访问媒体内容项的计算机实现的方法。所述方法包括通过所述媒体内容的供应商:提供第一交易,所述第一交易包括:i)一个或更多个输出,所述一个或更多个输出至少包括第一输出,所述第一输出指定转移至所述第二方的数字资产金额;和ii)初始地,零个或更多个输入的总和,其中所述零个或更多个输入所指向的任何源交易的任何输出中指定的数字资产总输入金额小于所述一个或更多个输出指定的数字资产的总输出金额。所述第一交易的所述第一输出包括锁定脚本,所述锁定脚本指定解锁脚本解锁所述第一输出需满足的条件。所述方法进一步包括,通过侧信道接收来自所述多个用户中的每一个用户的输入,并且将每个接收到的输入添加至所述第一交易,每个接收到的输入指向指定数字资产金额的相应源交易的输出。一旦达到目标,由此所述第一交易的所述输入所指向的总输入金额等于或超出所述输出金额,所述方法包括导致所述第一交易和第二交易发布至区块链网络以记录在区块链中,其中所述第二交易包括输入,所述输入指向所述第一交易的所述第一输出并且包括满足所述条件的所述解锁脚本。所述锁定脚本指定的条件要求所述解锁脚本包括媒体密钥,所述媒体密钥使用户能够访问所述媒体内容项。
第一交易至少在达到目标之前被托管在服务器上,其中从用户接收的输入在服务器被接收,并添加至存储在服务器的第一交易(其中本文的服务器可指在一个或更多个地理位置的一个或更多个物理单元实现的任何服务计算机设备)。
对于包括目标交易的多个交易中的每一个交易而言,至少部分网络节点被配置为在交易有效的情况下传播每个交易,并且至少部分节点被配置为在交易有效的情况下在该节点的区块链副本中记录每个交易。第一交易的有效性取决于总输入金额至少等于总输出金额。这意味着交易在从用户(例如爱丽丝、亚当、艾格尼丝等)收集到足够的输入以满足目标之前无法有效。进一步地,第二交易的有效性取决于解锁第一交易的输出的解锁脚本。这意味着如果执行该方法的一方(例如鲍勃)希望申请输出金额,则必须发布解锁密钥至区块链。一旦密钥因此不可改变地发布在公开可检查的区块链上,则用户能够检索解锁密钥并且用其来使用来自链下数据源的相关数据项。可选地,鲍勃还可直接通过侧信道发送解锁密钥至一个、部分或全部用户,而不是要求他们从区块链检索解锁密钥,但是必须在区块链上公开的事实使得如果鲍勃未单独发送给他们,则用户能够自己从区块链进行检索,并且因此鲍勃无法欺骗系统。
在实施例中,该方法可包括对多个数据项中的每一项重复所述方法,其中每个内容项形成媒体内容的部分的序列中的不同相应项。例如,该段媒体内容可包括文本、音频和/或视频内容。其可包括例如电视节目或口语节目的一集、电影或节目的一系列剧集。在实施例中,该部分可以是实时流式传输给用户的给定剧集或独立节目或电影的数据包,例如电视节目或口语节目。或者,例如该部分可以是电视剧的不同剧集。
根据本公开的另一方面,提供了一种由其中一个用户执行的相应方法。
根据本文公开的又一方面,提供了一种执行该方法的程序,和/或被编程用于执行供应商或用户的方法的计算机设备。
附图说明
为了帮助理解本公开的实施例并显示如何实施此等实施例,现将仅通过举例的方式参考附图进行说明,其中:
图1是实现区块链的系统的示意性框图,
图2示意性地示出了可记录在区块链中的交易的一些示例,
图3是实现区块链的另一系统的示意性框图,
图4是通过区块链向多个用户发布众筹内容的系统的示意性框图,
图5是一组交易的示意图,
图6是示出众筹方法和向多个用户发布媒体内容项的流程图。
具体实施方式
系统概述
图1示出了用于实现区块链150的示例性系统100。系统100包括分组交换网络101,通常是诸如互联网的广域互联网。分组交换网络101包括多个节点104,该多个节点被设置成在分组交换网络101内形成对等(P2P)覆盖网络106。每个节点104包括对等体的计算机设备,不同的节点104属于不同的对等体。每个节点104包括含一个或多个处理器的处理装置,例如一个或多个中央处理单元(CPU)、加速器处理器、特定应用程序处理器和/或现场可编程门阵列(FPGA)。每个节点还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。存储器可包括一个或多个存储器单元,其采用一个或多个存储器介质,例如诸如硬盘等磁介质、诸如固态硬盘(SSD)等电子媒介、闪存或电可擦只读存储器和/或诸如光盘驱动器等光学介质。
区块链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中的任何交易。为了保证当前交易有效,当创建当前交易152j或甚至将当前交易152j发送到网络106时,先前交易152i不一定要存在,但是先前交易152i必须存在并且有效。因此,本文中的“先前”系指通过指针连接的逻辑序列中的前期,不一定是时间序列中创建或发送的时间。因此,并不一定排除交易152i,152j是无序创建或发送的可能(详见下文中有关孤立交易的描述)。先前交易152i同样可以被称为先行或前期交易。
当前交易152j的输入还包括先前交易152i输出被锁定的用户103a的签名。反过来,当前交易152j的输出可以加密锁定至新用户103b。因此,当前交易152j可将先前交易152i输入中定义的金额转移到当前交易152j输出中定义的新用户103b。在某些情况下,交易152可具有多个输出,以在多个用户间分割输入金额(其中一个可以是原始用户103a,以便进行变更)。在某些情况下,交易还可以具有多个输入,将一个或多个先前交易的多个输出的金额汇总在一起,并重新分配到当前交易的一个或多个输出。
上述可称为“基于输出型”交易协议,有时也称为未花费的交易输出(UTXO)型协议(其中输出被称为UTXO)。用户的总余额不是用区块链中储存的任何一个数字定义;相反,用户需要特殊“钱包”应用程序105,以整理该用户的所有UTXO值,这些UTXO值分散在区块链151的许多不同交易152中。
作为基于账户型交易模型的一部分,另一种类型的交易协议可称为“基于账户型”协议。在基于账户的情况下,每个交易均不通过参考过去交易序列中先前交易的UTXO来定义转移的金额,而是通过参考绝对账户余额进行定义。所有账户的当前状态由矿工单独存储到区块链中,并不断更新。本公开涉及一种基于输出的模型,而不是基于账户的模型。
无论采用何种类型的交易协议,当用户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的任何行动均可通过在相应计算机设备的处理装置上运行的软件执行。此外,本文的“区块链”一词是指一般技术类型的通用术语,不限于任何特定专有区块链、协议或服务。
同时连接至网络101的还包括作为消费用户角色的多方103中的每一方的计算机设备102。他们作为交易中的付款人和收款人,但不一定代表其他方参与挖矿或传播交易。它们不一定运行挖矿协议。出于说明目的,示出了双方103及其相应的设备102:第一方103a及其相应的计算机设备102a,第二方103b及其相应的计算机设备102b。应当理解的是,更多这样的当事方103及其相应的计算机设备102可能存在并参与系统,但为了方便起见,未进行说明。每一方103均可以是个人或组织。为进行说明,本文中第一方103a称为爱丽丝,第二方103b称为鲍勃,但应当理解的是,这并不仅限于爱丽丝或鲍勃,且本文对爱丽丝或鲍勃的任何引用均可分别用“第一方”和“第二方”替换。
每一方103的计算机设备102包括相应的处理装置,其包含一个或多个处理器,例如一个或多个中央处理单元、中央处理单元、其他加速器处理器、特定应用程序处理器和/或现场可编程门阵列。每一方103的计算机设备102还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。该存储器可包括一个或多个存储器单元,其采用一个或多个存储器介质,例如诸如硬盘等磁介质、诸如固态硬盘等电子媒介、闪存或电可擦只读存储器和/或诸如光盘驱动器等光学介质。每一方103计算机设备102上的存储器储存包含被设置在处理装置上运行的至少一个客户端应用程序105的相应实例。应当理解的是,本文给定方103的任何行动均可通过在相应计算机设备102的处理装置上运行的软件执行。每一方103的计算机设备102包括至少一个用户终端,例如台式或笔记本电脑、平板电脑、智能手机或诸如智能手表等可穿戴设备。给定方103的计算机设备102还可包括一个或多个其他网络资源,诸如通过用户终端访问的云计算资源。
客户端应用程序或软件105最初可通过适当的计算机可读存储介质提供至任何给定方103的计算机设备102,例如从服务器下载,或提供在移动式存储设备上,诸如可移动固态硬盘、闪存密钥、可移动电可擦只读存储器、可移动磁盘驱动器、软盘或磁带、光盘(诸如CD或DVD ROM)或可移动光驱等。
客户端应用程序105至少包括“钱包”功能。这有两个主要功能。其中一个功能是使相应的用户方103创建、签署和发送拟在整个节点网络104中传播的交易152,并因此包含在区块链150中。另一个功能是向相应方汇报其目前拥有的数字资产金额。在基于输出型系统中,该第二功能包括整理分散在区块链150中属于相关方的各种152交易的输出中定义的金额。
每个计算机设备102上的客户端应用程序105的实例可操作地耦合到P2P网络106的至少一个转发节点104F。这可以启用客户端105的钱包功能,将交易152发送至网络106。客户端105还可联系一个、一些或所有存储节点104,以在区块链150查询相应方103为接收方的任何交易(或实际上检查区块链150中的其他方交易,因为在实施例中,区块链150是在某种程度上通过其公开可见性提供交易信任的公共设施)。每个计算机设备102上的钱包功能被配置为根据交易协议制定和发送交易152。每个节点104在转发节点104F转发交易152的情况下运行被配置成根据节点协议核实交易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将把新经核实的交易152添加至节点104S维护的区块链150副本的池154中。进一步地,任何接收交易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包括指向早前交易的指针,因此交易的顺序也被不可改变地记录下来。
图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中。
假设爱丽丝103a希望创建转移相关数字资产金额至鲍勃103b的交易152j。在图2中,爱丽丝的新交易152j标记为“Tx1”。其获取在序列中先前交易152j输出203锁定至爱丽丝的数字资产金额,并至少转移一部分此等金额至鲍勃。图2中的先前交易152j标记为“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)是节点协议识别的域特定语言中写入的一段代码。此等语言的特定示例称为“脚本”(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有效。如果是存储节点104S,这意味着其将添加至等待工作量证明的交易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)。相反,输入202指向的总金额与给定交易152的输出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储存的区块链150副本可实现这一点,例如与相应方的计算机设备102最近或最佳连接的存储节点104S。
请注意,脚本代码通常用示意图表示(即,非精确的语言)。例如,写入[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的椭圆曲线数字签名算法。数字签名对特定的数据段进行签名。在实施例中,对于给定交易,签名将签署部分交易输入、全部或部分交易输出。其签署输出的特定部分取决于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对特定的信息或数据片段或者诸如此类进行交换,但这并不一定意味着所有这些数据片段必须通过相同的链路或甚至同一类型网络进行发送。
示例性定义
下面是一些实施方式中可能采用的示例性定义。需注意,这些示例性定义并不会完全限制所有可能的实施方式,而只是为了帮助理解特定的可能实施方式,诸如可能用在下文所述的示例性用例的一些可能实施方式中的定义。
定义1:交易。交易系指包含输入和输出的消息。它还可以包括协议版本号和/或锁定时间。协议版本是指交易协议的版本。锁定时间将会稍后单独进行解释。
定义2:输入。交易的输入构成有序列表。该列表中的每一个条目包含输出点(未花费的交易输出的标识符)和scriptSig(解锁脚本)。它还可以包括序列号。
定义3:输出。交易的输出构成有序列表。该列表中的每一个条目包含数值(以基本单位表示的数字资产金额)和scriptPubKey(锁定脚本)。
定义4:输出点。输出点通过交易IDTxID和索引号i进行唯一定义。它是指交易TxID输出中的第i个条目,表示未花费的交易输出(UTXO)的唯一位置。此处“未花费的”一词指输出点从未在任何有效的后续交易中出现过。
定义5:scriptSig。这是解锁或花费与给定输出点对应的UTXO所需的信息。在标准的交易中,这种信息通常是指ECDSA签名。因此,该脚本被称为'scriptSig'。但是,解锁输出点所需的信息可以是满足UTXO锁定条件的任何数据。
定义6:scriptPubKey。这是指锁定特定UTXO相关资金的脚本。当且仅当scriptSig被添加到scriptPubKey中,并且组合脚本的执行显示为TRUE时,该资金才能被解锁并且被花费。如果不是这种情况,那么交易无效并且将会被拒绝。由于该脚本通常包含用于标准交易的ECDSA公钥的哈希值,所以它被称为“scriptPubKey”。
在下一个定义中,如果引用签署输入,则意味着签署不包括scriptSig部分(见定义2)的输入。
定义7:SIGHASH标志。当提供ECDSA签名时,还需要添加下列SIGHASH标志之一。
Figure BDA0003373186940000171
Figure BDA0003373186940000181
当把延展性作为特性讨论时,要寻找未通过ECDSA签名签署的交易中的信息。除了可以从拟签署的消息中排除的输入和输出之外,scriptSig的内容始终被排除在外。这是因为scriptSig被设计用作签名的占位符。
定义8:区块链时间锁。通常而言,交易中可使用两种时间锁:绝对时间锁和相对时间锁。绝对时间锁指定具体的时间点,发生在这个时间点之后的一些信息会被认为是有效的;而相对时间锁指定时间段,发生在这个时间段之后的一些信息才会被认为有效。在这两种情况下,当使用区块链时间锁时,可以用区块高度(挖到的区块数量)或经过时间(例如UNIX时间)来代理时间。
区块链时间锁的另一个属性在于它们出现的位置以及它们所应用的交易方面。在这种意义上,又可以划分为两个类别时间锁:交易级时间锁,用于锁定整个交易;和脚本级时间锁,用于解锁特定的输出。这两个类别的时间锁均可用于实现绝对或相对时间锁。下表汇总了四种实现可基于上述属性创建的时间锁的机制。
Figure BDA0003373186940000182
定义9:nLocktime。锁定时间(nLocktime)是指非负整数,表示区块高度或特定的Unix时间。如果交易只能在指定的区块或指定的时间后才能被添加到区块链中,那么从这个意义上讲,则是交易级时间锁。如果nLocktime被设置为小于500,000,000,则视为区块高度。如果其被设置为等于或大于500,000,000,则视为表示Unix时间。也就是说,1970年1月1日00:00:00之后的秒数。
例如,如果当前最高区块的高度为3,000,000,并且锁定时间被设置为4,000,000,则在挖掘第400万个区块之前矿工不会考虑该交易。
定义10:nSequence。序列号(nSequence)作为消息,表示交易版本。修改交易会使序列号增大。nSequence的最大值是232-1,并且通常而言,序列号将默认设置为该最大值,以表示交易已完成。交易的每个输入都定义nSequence值,该值指定输入所引用的UTXO被包含在区块中之后到该输入可用作有效输入之前所需的时间段。如果矿工看到两笔交易有相同的输入,那么该矿工会选择序列号更大的交易。但是,这个特性通常已被禁用。
定义11:CheckLockTimeVerify(OP_CLTV)。OP_CHECKLOCKTIMEVERIFY(OP_CLTV)操作码是脚本级绝对时间锁,可用于锁定未来某个特定时间或区块高度的交易的特定输出。如果UTXO被引用到交易中的当前Unix时间或区块高度小于UTXO被创建的Unix时间或区块高度以及在OP_CLTV操作码之前指定的参数,那么花费交易的脚本执行将失败。
定义12:CheckSequenceVerify(OP_CSV)。OP_CHECKSEQUENCEVERIFY(OP_CSV)操作码是脚本级相对时间锁,可用于锁定未来某个特定时间段或区块数量的交易的特定输出。该与OP_CLTV的操作类似,不同之处在于提供给OP_CSV的参数表示相对时间。如果UTXO被引用到交易中的当前Unix时间或区块高度小于在OP_CSV操作码之前指定的参数,那么花费交易的脚本执行将失败。
定义13:延展性。通常而言,区块链交易可能具有两大类别的延展性,两者均允许修改交易内容,且不导致输入中提供的签名无效。
为了说明这两种类别,以首次交易Tx为例,该交易包含一个输入、该输入中的一个签名和一个输出。
第1类:脚本级延展性。这种延展性利用了拟使用脚本操作码OP_CHECKSIG检查的签名不会签署交易中任何输入的脚本字段的事实。这一事实允许我们在交易Tx上生成签名,修改输入脚本,使得交易Tx′不等同于Tx,并且仍然可以视Tx和Tx′为区块链共识规则下由相同签名签署的有效交易消息。
第2类:输入输出级延展性。这种延展性依赖于SIGHASH标志的使用,而不是交易中采用的SIGHASH ALL。如果交易Tx有输入签名且该签名使用其他五个SIGHASH标志组合中任意一个,那么可以添加输入或输出来创建不等同的交易Tx′,使得两者在共识规则下将被视为有效的交易消息,而不需要修改签名。
向用户发布内容的链上机制
下面描述了一种基于用户添加至交易的输入向多个用户发布内容的示例性机制,即所谓的众筹交易,但具有一旦达到众筹目标则向用户发布内容的集成链上机制。比如,这可以作为实现多方流式传输的新方式,由此流式传输中媒体数据的每个部分或“数据块”都有新的众筹交易。
媒体内容分为M个部分,即D1、D2……DM。M个相应众筹交易(优选提前)创建并托管在多个不同用户(例如一般公众)可访问的服务器上。这些交易中的每一个都有输出,该输出指定数字资产金额,以针对媒体数据的相应部分向内容供应商(例如鲍勃)支付费用。每个交易的输出中的锁定脚本还包括一段脚本,当要求第二交易赎回该输出时,该第二交易的输入必须包括相应的秘密值Sm,该秘密值充当发布(例如解密)媒体内容的相应部分的密钥。注意,Sm被称为秘密,其只在作为第二交易的一部分发布在区块链150之前被称为秘密,之后便不再是秘密。
对于每个部分m=1……M,N个用户中的每一个均通过侧信道301(即链下)访问托管在服务器上的众筹交易,并通过添加输入对其进行延展。一直这样做,直至达到筹资目标;即直至输入指向至少足以弥补输出金额的总金额(否则交易将无效),并且在实践中还包括挖矿费(否则,即使在技术上有效,任何矿工104M都不会接受挖矿交易)。
“流式传输”就像供应商(例如鲍勃)在花费交易中将秘密Sm广播到P2P网络106一样简单(一笔花费交易赎回一项众筹交易的输出,进而揭露一个秘密Sm)。在一些实施例中,供应商鲍勃除了在区块链150上发布之外,还可以直接通过侧信道301将每个秘密单独发送给用户。或者如果他没那么做,则可能部分或全部用户还可以是P2P网络的对等体(操作节点104),在这种情况下,当鲍勃将秘密广播到P2P网络时,还将在花费交易中接收到。其中任何一个秘密传输都可以与信息传输的速度一样快,因此应该是快速的。如果两种情况都不是,一旦结算交易被挖掘成区块151,秘密Sm仍将在区块链150上结束,并且部分或全部用户可以从那里对其进行检索。因此,供应商鲍勃不能通过只收取款项但不发布密钥Sm来进行欺骗。
本文中的密钥Sm可以被称为“媒体密钥”。这使获得密钥的用户能够解锁(即访问)托管在链下数据源401上的媒体数据内容Dm的相应部分。在实施例中,媒体密钥Sm至少包括解密密钥。在这种情况下,用户通过下载至他/她的计算机102并且使用解密密钥Sm进行解密可访问该部分媒体数据。
密钥Sm至少有两种可能的场景。场景1:Sm可只充当单一公共密钥,使所有用户103a能够直接解锁内容的相应部分。即一旦筹集到资金,内容对可以访问P2P网络106的任何人都公开(但如果没有人出资,则内容不会向任何人显示)。但是,这可能被认为是不公平的,因为这样会使未出资的任何其他公众成员也能够获取内容。
因此在实施例中使用场景2:Sm被配置为使每个用户能够生成他们自己的单独密钥sm,1……sm,N,即贡献输入的每个用户n=1……N的相应密钥。在这种情况下,为了使给定用户访问内容Dm的部分(例如,为了使用户能够解密该内容),用户需要应用其自己的单独密钥sm,n,该密钥基于Sm和该用户的一些个人信息生成。相应的单独密钥sm,n因此与相应用户绑定,并且仅允许该用户访问(例如,解密)相关的内容Dm。实现这种情况的示例将在稍后讨论。
通过向过程中添加一个密钥(Sm),在众筹交易的输出被花费时公开该密钥,这使得能够众筹链上的秘密揭露,而不是众筹一些链下过程或事件。这有利于将众筹结果的启用集成到链上系统。
在一些实施例中,所公开的过程可应用于众筹和仅发布内容D的单一独立部分。但是,正如所讨论的,其还可用于发布部分D的序列或流式传输,其中m=1......M,每个均基于相应的对应众筹交易。这样做的优点是增加众筹的粒度,内容可以部分众筹,一次众筹一部分。例如,如果将电视剧分成几集,供应商(鲍勃)可以要求人们对其进行众筹,并在众筹完成后尽快揭露一集。比如,这可以由过顶(over-the-top)(OTT)视频流式传输服务使用。该服务宣传其拥有热门剧集的版权,当一集由用户众筹完成,便会发布一集。例如,实际支付众筹交易的用户可以抢先观看该剧集。
粒度意味着甚至可以将每一集分成更小的数据包,例如分成一秒接一秒或其他合适的大小。
通过将“电视剧集”替换为讲座等,类似的技术也可以应用于许多其他应用程序,诸如在线教育、系列讲座或广播节目。
现参考图4至6更详细地讨论示例性实施方式。
图4示出了图3的布置的扩展,由此多个第一用户103a-1、103a-2……103a-N的相应计算机设备102a-1、102a-2……102a-N可操作以通过侧信道301连接至鲍勃的计算机设备103b。仅通过示意图的方式,第一用户在本文中均被给定以“A”开头的不同名字,例如爱丽丝、亚当和艾格尼丝。前面讨论的与第一方102a的设备102a和客户端105a相关的任何内容可同样适用于图4场景中第一用户的设备102a-1、102a-2、……、102a-N中的任何一个。
在该示例性场景中,鲍勃扮演媒体内容供应商的角色。鲍勃的计算机设备102b被配置为服务器的角色。其可包括在一个或多个地理位置的一个或多个专用服务器单元的资源,或者充当服务器角色的一个或多个用户设备,或者这些的任何组合。鲍勃的设备102b还安装有P2P网络106的客户端105b,第一用户的设备102a-1、102a-2……102a-N中的每一个也是如此。前面讨论的与鲍勃的设备102b和客户端105b以及侧信道301相关的任何内容可同样适用于图4的场景。此外,需要再次注意的是,本文的侧信道301并不一定意味着单一链路或者甚至单一接入技术。因此,在实施例中,关于图4讨论的侧信道301可以表示鲍勃的设备103b与不同的第一用户102a、102a-2、……102a-N的设备103b-1、103b-2、……、103b-N之间的一组链路,其中使用一种或多种接入技术。
系统还包括链下数据源401(即用于储存非记录在区块链150中的数据并使其对用户102a可用的来源)。这与图4中鲍勃的设备102b分开说明,但可构成鲍勃的设备102b的一部分。或者,其确实可以与鲍勃的设备102b分离,例如可以代表第三方托管的内容而不是自己托管的内容充当供应商。无论采用哪种方式,链下数据源401储存拟众筹的媒体数据Dm的一个或多个部分中的每个部分。链下数据源401可以通过网络访问每一个第一方设备102a-1、102a-2、102a-N上的客户端软件105a-1、105a-2……105a-N。可通过其访问的网络可以是其上实现P2P覆盖网络106的相同网络101(例如互联网),或者诸如移动蜂窝网络或组织内部内联网等单独网络,或这些的任何组合。
下面将结合示例进行描述,其中内容被分为多个部分(m=1……M)。但是,应当理解的是,相同的机制可用于发布甚至单个数据部分。媒体数据(内容)的每个部分可包括一系列音频或视频节目的整集,或者给定剧集或独立节目(例如电影)的一部分。粒度甚至可降低至节目的单独包或数据包的级别(例如每秒或更少),拟逐包进行众筹。
图6示出了根据本文公开的实施例使用的一组交易152。对于每个数据部分Dm,该集合包括多个第零交易Tx0、第一交易Tx1-m和第二交易Tx2-m。需注意,这些名称只是便利标签。它们并不一定意味着这些交易将立即相继放置在区块151或区块链150中,也不意味着第零交易是区块151或区块链150中的初始交易。这些标签不一定意味着任何关于他们的交易被发送到网络106的顺序的信息。其仅指逻辑序列,其中下一交易的输入指向一个交易的输出。需记住的是,在一些系统中,可以在其子交易之后将父交易发送至网络106(在这种情况下,“孤立”子交易将在一个或多个节点104处缓冲一段时间,同时等待父交易到达)。
每个第零交易Tx0还可称为就本发明而言的源交易,因为其充当第一交易的数字资产金额的来源。就本发明而言,第一交易Tx1-m也可称为众筹交易。其充当附有条件地转移来自源交易Tx0的数字资产金额,从而为部分媒体数据Dm的发布提供资金的中介。第二交易Tx2-m还可称为花费交易或目标交易,因为该交易将解锁第一交易中的条件并且为供应商鲍勃(或者鲍勃代表的潜在受益人)支付款项。
如图6所示,每个第零或源交易Tx0至少包括一个输出2030(例如图中的输出0),其指定数字资产金额,并且进一步包含将该输出锁定至诸如爱丽丝103a或亚当103b等的用户的锁定脚本。这意味着源交易Tx0的锁定脚本要求满足一种条件,即试图解锁输出(并且因此赎回数字资产金额)的任何交易的输入必须包含在解锁脚本中锁定的用户的加密签名,该签名是使用该用户的公钥生成的。在这种意义上,Tx0的输出中定义的金额可以说是由例如爱丽丝或亚当等的用户拥有。该输出可以称为UTXO。就本发明而言,源交易Tx0的输入指向的先前交易的输出并不特别重要(只要足以涵盖源交易Tx0的总输出)。
在本案例中,解锁源交易Tx0的输出的交易是用于数据部分Dm的第一或众筹交易Tx1-m。因此,Tx1-m的最终实例将具有多个输入2021,每个均包括指向相应一个源交易Tx0的相应输出的指针。Tx1-m的每个输出进一步包括被配置为根据该输出的锁定脚本中定义的条件解锁相应Tx0的所指向输出的解锁脚本,其至少要求相应用户的签名。Tx0的锁定脚本所需的签名需要签署Tx1-m的一部分。在一些协议中,需要签署的Tx1-m的部分可以是Tx1-m的解锁脚本中定义的设置。例如,这可以通过SIGHASH标志设置,该标志附加至签名,为一个字节,因此就数据而言,解锁脚本显示为:<Sig PA><sighashflag><PA>。或者,需要签署的部分可以仅仅是Tx1-m的固定部分。无论采用哪种方式,拟签署的部分都通常不包含解锁脚本本身,并且可能不包括Tx1-m的部分或全部输入。这意味着Tx1-m的输入是可延展的,这允许用户添加输入2021
第一或中间交易Tx1-m具有至少一个输出2031(例如,图中Tx1-m的输出0,其中输出同样也可称为UTXO)。该输出指定拟随后转移的数字资产金额,并且进一步包括锁定脚本,该锁定脚本定义解锁输出并且因此赎回该金额的所需条件。此条件要求试图解锁Tx1-m的交易的解锁脚本(在这种情况下,指第二交易Tx2-m)在其解锁脚本中包括鲍勃的加密签名和鲍勃必须包含的有效载荷。如稍后将更详细地讨论,此有效载荷包括密钥Sm,可使用户103a-1……103a-N能够发布该段内容Dm。包括有效载荷的要求可以通过Tx1-m的锁定脚本中包含的哈希质询施加。该质询包括有效载荷的哈希值(不是有效载荷本身)以及配置为(当与解锁脚本一起在节点104上运行时)测试在对应解锁脚本中提供的有效载荷哈希值是否等于锁定脚本中提供的哈希值的一段脚本。签名的要求可通过例如之前讨论的CheckSig施加。在实施例中,第一条件不要求爱丽丝的签名包含在Tx2-m的解锁脚本中。Tx2-m需要由鲍勃签署的部分可以是Tx2-m的解锁脚本的设置(例如通过SIGHASH标志指定),或者可以固定。无论采用哪种方式,其通常至少不包含解锁脚本。
第二目标交易Tx2-m具有至少一个输入2022(例如,Tx2-m的输入0),其包括指向上述Tx1-m的输出的指针(在所示示例中,为Tx1-m的输出0),并且还包括解锁脚本,其被配置为基于满足在Tx1-m的锁定脚本中定义的条件来解锁Tx1-m的所述输出。第二交易Tx2-m具有至少一个输出2032(例如,Tx2-m的输出0),其指定拟转移至鲍勃的数字资产金额。输出2032还包括将此锁定至鲍勃的锁定脚本(即,要求进一步随后交易在花费的解锁脚本中包括鲍勃的签名)。在这种意义上,目标交易Tx2-m的输出可以说是由鲍勃拥有。该输出同样可以称为UTXO。
图6示出了使用诸如关于图5描述的一组交易的方法,以众筹和发布数据项Dm至多个用户103a-1……103a-N。该方法从供应商鲍勃103b的角度进行描述。这可由在鲍勃的设备102b上运行的软件105b执行。应当理解的是,根据另一方面,从用户103a诸如爱丽丝103a-1的角度,提供了一种通过该用户的设备102a上运行的客户端应用程序105a执行的对应方法。还应当理解的是,本文中诸如“由爱丽丝[或者用户]”、“由鲍勃[或者供应商]”和“由第三方”等词组可分别用作“由用户103a的计算机设备102a上运行的软件105a”、“由供应商103b的计算机设备102b上运行的软件105b”和“由第三方的计算机设备上运行的软件”的简略语。此外,需再次注意,给定方的设备可包括由该方使用的一个或多个用户设备、或者诸如该方使用的云资源等服务器资源,或这些的任何组合。这不一定限制在单个用户设备上或单个物理位置执行的行为。
在步骤S10,供应商(鲍勃)制定Tx1-m的初始模板版本,并且将其托管在他的设备102b的服务器上,从而使Tx1-m对任何用户103a-1……103a-N均可用,以通过侧信道301进行延展。如前所述,供应商鲍勃的服务器可包括充当服务器角色的任何服务计算机设备,并且可包括一个或多个专用服务器单元(或其资源)和/或位于一个或多个地理位置的一个或多个用户设备。通过实现P2P覆盖网络的相同网络101(例如互联网)、或单独网络(例如移动蜂窝网络或组织内部的内部内联网)、或这些的任何组合可访问用户102a-1……102a-N的设备103a-1……103a-N。
在实施例中,鲍勃可针对在发布或者甚至接收序列中第一部分的资金之前的媒体数据Dm的所有部分制定并储存众筹交易Tx1-m的初始模板形式,其中m=1......M。但是,为简单起见,针对媒体数据Dm的给定部分之一及其相应众筹交易Tx1-m描述了下述方法。还需注意,在替代实施例中,一个、部分或全部众筹交易Tx1-m可以由第三方为鲍勃制定,并且提供给他以托管在其服务设备102b上。下文将从鲍勃自己制定每个众筹交易(即第一交易)Tx1-m的角度进行描述,但应当理解这并不构成限制。进一步地,应当理解的是,供应商“鲍勃”实际上可能是包括多于一个人的组织,而不是单独用户。
最初由供应商鲍勃形成的Tx1-m包括至少一个输出2031。这包括值Xm,该值指定他希望接收的数字资产金额,以发布媒体内容Dm的相应部分。Xm可以对所有m(即,媒体Dm的所有部分)都相同,或者也可以在Dm部分的一些或全部之间不同。鲍勃还将发布媒体数据Dm的相应部分所需的目标值Tm存储在其设备102b上。在不需要挖矿费的系统中(例如联盟区块链系统),Tm可以等于Xm。或者Tm=Xm+M,其中M是挖矿费。挖矿费M可以是时间t的函数,取决于当前价格,或者其可以是固定的(例如,设定足够高的保证金,以涵盖预期用户103a-a……103a-N提供资金期间的任何合理挖矿费波动)。
Tx1-m的输出2021还包括锁定脚本。锁定脚本要求尝试赎回输出2021(在这种情况下为Tx2-m)的交易的解锁脚本包括用于媒体内容Dm的相应部分的秘密访问密钥Sm(媒体密钥)。如前所述,此要求可通过哈希质询来实现。即锁定脚本包括有效载荷的哈希值,该有效载荷包括媒体密钥和一段脚本,被配置为:对解锁脚本中包含的有效载荷值进行哈希处理,将其与锁定脚本中的哈希值进行比较,并且在匹配的情况下解锁输出。
在实施例中,供应商鲍勃在其最初形成的Tx1-m的版本中包括其自身的输入2021。该输入指向锁定至鲍勃的相应源交易Tx0-m-B的输出。该输出中指定的数字资产金额可以是零或名义(可忽略)金额(例如,如果协议不允许可花费的输出金额为零)。Tx0-m-B输出的锁定脚本要求在对其进行解锁的交易输入的解锁脚本中包含鲍勃的签名,在这种情况下为鲍勃的Tx1-m输入。因此,鲍勃在Tx1-m中的输入包括解锁脚本,其中包括鲍勃签署Tx1-m的一部分的签名,以及鲍勃用于验证其签名的公钥。
该Tx1-m输入的目的可能是为供应商鲍勃提供一种签署交易的方式,并且因此表明其对交易的认可。和/或众筹交易Tx1-m应优选具有至少一个初始输入以保证(签署)输出2031。在无任何输入的情况下,输出是松动的:任何人都可以替换输出。但是一旦存在签署输出2031的至少一个输入2021,则无法再更改输出。
进一步地,在实施例中,供应商鲍勃向Tx1-m的输入还为一个或多个用户103a-1……103a-N提供了在添加他们自身的输入2021之前验证交易的真实性的方法,从而为其提供资金。比如,系统可包括可信第三方的数据库402,该数据库可供一个、部分或全部用户设备102a-1……102a-N访问。通过实现P2P覆盖网络106的相同网络101(例如互联网)、或诸如移动蜂窝网络或内联网等单独网络、或这些的任何组合可进行访问。数据库402包括可信第三方认可的一个或多个供应商的公钥列表。因此,通过访问数据库402和观察那里列出的鲍勃的公钥(即检查在鲍勃的Tx1-m的输入中发现的与公钥匹配的值),他们可以相信鲍勃是一个合法的供应商。
但是,供应商鲍勃的输入是可选的。或者,最初由鲍勃形成的Tx1-m不包括任何输入2021
在步骤S20,供应商鲍勃开始接收来自一个或多个用户103a-1……103a-N的输入。每个此等用户103a经由侧信道301访问鲍勃的服务器102b上的众筹交易Tx1-m的当前版本,并且从而修改该交易以添加她自己的相应输入2021。这些用户103a-n中的每一个添加的输入指向相应源交易Tx0-m-n的输出,其指定锁定至该用户103a-n的数字资产金额,并且包括锁定至该用户的相应输出的锁定脚本。即Tx0-m-n的锁定脚本要求对其进行解锁的交易的相应输入的解锁脚本(在这种情况下为Tx1-m)包括相应用户103a-n的签名。因此,用户对Tx1-m的输入包括解锁脚本,该解锁脚本包括签署Tx1-m的一部分的该用户签名以及用于启用签名验证的用户公钥。
从一个或多个用户103a接收到一个或多个输入之后,然后在步骤S30,供应商鲍勃检查Tx1-m现在是否具有足够的输入以满足其目标Tm。即他将迄今为止收到的输入所指向的源交易Tx0-m的输出2030中的金额相加,并且检查是否至少等于目标金额Tm。如果不是,则返回并从步骤S20继续。
一旦Tx0-m的输入所指向的金额至少总计达到目标Tm,供应商鲍勃则进入步骤S40,其中他将Tx1-m和对应的花费交易Tx2-m发布到网络106然后到P2P网络106。也就是说,他将Tx1-m和Tx2-m中的每一个发送到转发节点104F中的至少一个,以通过网络106从那里传播;这些交易中的每一个都在每个节点104被核实,由挖矿节点104M中的一个挖掘成区块151,并且记录在每个存储节点104S维护的区块链150副本中。或者,他可将这些交易(Tx1-m和Tx2-m)中的一个或两个发送至用户103a中的一个或第三方,以便他们随后转发至网络106。无论采用哪种方式,供应商鲍勃已经因此导致两个交易均通过网络106的节点104传播,并且公开记录在区块链150中。
众筹交易Tx1-m的输出2031指定针对数据部分Dm向鲍勃支付的款项Xm,并且还包括锁定脚本。花费交易Tx2-m包括输入2022,其指向Tx1-m的输出并且包括锁定脚本。Tx2-m包括输出2032,其指定数字资产金额并且包括锁定该金额至鲍勃的锁定脚本。
Tx1-m的输出中的锁定脚本要求对其进行解锁的交易的解锁脚本(在这种情况下为Tx2-m)包括指定的有效载荷。例如,如前所述,此要求可通过锁定脚本中的哈希质询来施加。该有效载荷包括用于使用户103a-1、……、103a-N能够从链下数据源401访问(例如,解密)媒体内容Dm的相应部分的媒体密钥(例如,解密密钥)Sm。因为花费交易Tx2-m必须包括Sm以使供应商鲍勃要求付款,这意味着当鲍勃要求付款时,必须使其在区块链150上公开可见。
每个用户103a-1、……、103a-N可以因此检查区块链150以检索媒体密钥Sm。然后,他们可以使用媒体密钥Sm从链下数据源401获取并使用相应的媒体数据部分Dm
在一些情况下,供应商鲍勃除了在区块链150上发布之外,还可以可选地经由侧信道301将媒体密钥Sm发送给一个、多个或所有用户103a。和/或如果用户103a中的一个或多个也是P2P网络106的对等体104,则他们将可能在被挖矿前通过网络106传播消费交易Tx2-m时接收Sm。作为另一种可能性,未来API可以使用户能够查询挖矿节点104M的池154,从而使用户能够在挖掘之前观察待定交易中的数据。但是无论用户103a通过何种介质接收,关键是供应商鲍勃无法阻止媒体密钥Sm通过至少一个通道(区块链150)对用户103a可用。因此,鲍勃不能通过只收取款项但不发布相应的媒体内容来进行欺骗。
在实施例中,媒体密钥Sm至少包括解密密钥。在这种情况下,用户103a查询链下数据源401,以下载部分媒体数据Dm至他/她的相应计算机设备102a,然后应用解密密钥解锁媒体数据部分Dm,并且因此在其相应的计算机设备102a上获得数据的(明文)副本。此外/或者,媒体密钥Sm可以包括下载媒体数据Dm的部分首先需要的密码。在这种情况下,用户将密码Sm提交至链下数据源401,并且作为响应,允许将媒体数据部分Dm下载或流式传输到其相应的计算机设备102a。在一些实施例中,媒体密钥Sm可包括加密密钥和密码,并且访问可以结合这两种方法。
一些实施例可仅使用一个单一密码或通用解密密钥,允许每个人在其他地方访问数据。这可以直接实现,但可能是不可取的,因为如果代码泄露,可能会允许未付费用户访问数据。因此,更安全的选项是使用基于组的公钥加密方案的单一公钥的方法(其中该公钥可使用任何选择的基于组的公钥加密方案生成,优选ECDSA)。出资者已经在其输入中提供了他们的公钥,即PKi。组织者创建私钥V,计算Sm=V·G,并且Sm,i=V·PKi。Si是组织者和出资者i之间的共享密钥。该值可以进行哈希处理,以创建对称加密方案的密钥。组织者使用共享密钥加密每个出资者i的数据。该加密数据优选链下通信。到目前为止,没有出资者能够解密数据。
在解锁脚本中,组织者随后发布Sm。然后,每个出资者将能够使用他们自己的私钥计算共享密钥,并且在需要时衍生出解密密钥。这样做的缺点在于,公众必须信任锁定脚本中的所有内容(可以是Sm的哈希值),这会迫使组织者公开Sm。例如,这对于知名OTT提供商来说可能不构成问题。此外,在实施例中,方案可以与可信数据库402结合以增加信任。
因此在实施例中,为了访问媒体数据Dm的部分,每个用户103a-n需要使用绑定到该特定用户的相应的单独媒体密钥(例如,解密密钥)sm,n。在这种情况下,供应商鲍勃基于包括在Tx1-m其相应输入2021中的每个用户103a-n的公钥来计算包括在Tx1-m中的媒体密钥Sm。当每个用户103a-n接收Sm时,他们计算自己的单独媒体密钥sm,n,并且使用该密钥从链下源401访问媒体内容Dm的对应部分。每个用户的单独媒体密钥对于该用户而言是唯一的(其中本文的“唯一”指至少碰撞的可能性几率近乎为零的程度)。
这可以通过使用本领域中已知的各种可用的密钥共享技术中的一种技术来实现。每个出资用户103a-1……103a-N将在其Tx1-m的输入中揭露他们的相应公钥。供应商鲍勃可以使用公钥以及密钥共享技术,以与每个出资者创建共享密钥。然后,鲍勃可以使用共享密钥作为对称加密技术来加密部分媒体数据Dm,并且使其发送至目标受众(出资用户103a-1……103a-N)。这可包括如果数据源401在供应商鲍勃的设备102b上实现,则自己发送,或者如果数据源401在其他地方实现,则触发其从第三方进行发送。无论采用哪种方式,每个出资者103a-n都将有效地接收媒体数据部分Dm的自定义加密版本。当鲍勃在链上揭露Sm时,每个单独用户103a-n将能够衍生出共享密钥sm,n。需注意,每个都将拥有不同的共享密钥(此处“共享”指在供应商鲍勃和相应用户103a-n之间共享,而不是在不同的用户103a-1……102a-N之间共享)。只要输入中使用的公钥是唯一的,单独共享密钥就是唯一的。
以下是基于标准Diffie Hellman密钥交换的示例性实施方式:
I.爱丽丝出资并且在她的输入中提供其公钥,PK_A;
II.锁定脚本中有哈希检查:H(PK_B),即解锁时,鲍勃必须揭露PK_B;
III.鲍勃计算(skB·PKA),并且将其作为对称加密密钥,仅对爱丽丝的数据进行加密;
Iv.一旦鲍勃揭露PK_B,爱丽丝将能够通过计算(skA·PKB)来计算相同的对称密钥;
并且对于亚当、艾格尼丝等其他出资用户也同样如此。需注意,这仅仅只是使用标准密钥共享技术实现的许多可能的实施方式之一。
作为示例性场景,假设鲍勃想要播放视频。该视频可以是讲座、教程或常规事件。
在该场景中,可以假定鲍勃知道其想要开始广播的确切时间。他的广播还设有预定价格。视频数据将被逐块加密,并进行链下传输。部分秘密值sm将由鲍勃生成,并且在链上针对每个数据块进行交换。
然后,参与者将衍生出完整的密钥来解密数据。
支付通道的初始化——TX1-m
锁定时间:60
输入0:
●鲍勃自己的UXTO,价值小
●鲍勃的签名和SIGHASH_SINGLE|ANYONECANPAY
输出0:
●锁定条件:
○如果鲍勃提供sm和他的签名,则可要求输出。
●数值:100,000个单位
爱丽丝加入通道——TX1-m-A1
锁定时间:60
输入0:
●鲍勃自己的UXTO,价值小
●鲍勃的签名和SIGHASH_SINGLE|ANYONECANPAY
输入1:
●爱丽丝的UTXO
●爱丽丝的签名和SIGHASH_ALL|ANYONECANPAY
输出0:
●锁定条件:
○如果鲍勃提供sm和他的签名,则可要求输出。
●数值:100,000个单位
亚当在爱丽丝之后加入通道——TX1-m-A1-A2
锁定时间:60
输入0:
●鲍勃自己的UXTO,价值小
●鲍勃的签名和SIGHASH_SINGLE|ANYONECANPAY
输入1:
●爱丽丝的UTXO
●爱丽丝的签名和SIGHASH_ALL|ANYONECANPAY
输入2:
●亚当的UTXO
●亚当的签名和SIGHASH_ALL|ANYONECANPAY
输出0:
●锁定条件:
○如果鲍勃提供sm和他的签名,则可要求输出。
●数值:100,000个单位
该过程可持续至输入值涵盖输出值或时间锁过期。
鲍勃可以通过其事件的虚假宣传进行欺骗。但是,可要求存在将公钥与事件链接的可公开验证来源。公钥可以是TX1的输入0中所需的ECDSA公钥。因此,感兴趣的参与者可以判断TX1是否是真实的。
如果没有足够的输入,并且鲍勃仍然想继续,他可以自己填写价格差额。
如果比鲍勃预期的更感兴趣,鲍勃可以创建另一交易或者允许参与者从TX1复制输出并且自己创建新的交易。
每个参与者103a均以其输入2021中的公钥进行标识。公钥将用于计算自定义密钥以加密数据。当查理揭露sm时,参与者将能够计算密钥以解密其接收到的数据Dm
为了继续查看内容,参与者103a只需关注后续交易并填写输入2021
如上所示,出于安全的原因,输出必须由诸如ECDSA签名等签名锁定。因此,无法修改输出。也就是说,鲍勃和爱丽丝(以及任何其他用户)都无法将其更改地址添加到输出中。因此,爱丽丝或鲍勃必须确保他们的UXTO提供其希望支付的确切金额。
应当理解的是,上述实施例仅通过示例的方式进行描述。更通俗地说,可根据下述任一语句提供一种方法、程序、装置或一组交易。应当理解的是,除了独立语句之外,所有语句均定义可选特性。
语句1:根据本文公开的一方面,提供了一种计算机实现的方法,所述计算机实现的方法使多个用户访问媒体内容项,该方法包括通过媒体内容的供应商:提供第一交易,该第一交易包括:i)一个或更多个输出,该一个或更多个输出至少包括第一输出,所述第一输出指定转移至第二方的数字资产金额;和ii)初始地,零个或更多个输入的总和,其中零个或多个输入所指向的任何源交易的任何输出中指定的数字资产总输入金额小于一个或更多个输出指定的数字资产的总输出金额,并且其中第一交易的第一输出包括锁定脚本,该锁定脚本指定解锁脚本解锁所述第一输出需满足的条件;通过侧信道接收来自所述多个用户中的每一个用户的输入,并且将每个接收到的输入添加至第一交易,每个接收到的输入指向指定数字资产金额的相应源交易的输出;并且一旦达到目标,由此第一交易的输入所指向的总输入金额等于或超出输出金额,从而导致第一交易和第二交易发布至区块链网络以记录在区块链中,其中第二交易包括输入,该输入指向第一交易的第一输出并且包括满足所述条件的解锁脚本;其中锁定脚本指定的条件要求解锁脚本包括媒体密钥,所述媒体密钥使用户能够访问媒体内容项。
语句2:在实施例中,可以提供语句1所述的方法,其中该目标包括:总输入金额,该总输入金额超出总输出金额至少足够的挖矿费,以使用于挖掘到区块的矿工接受所述第一交易。
语句3:在实施例中,可以提供根据语句1或2所述的方法,包括对多个数据项中的每一项重复所述方法,其中每个内容项形成媒体内容的部分的序列中的不同相应项。
语句4:在实施例中,可以提供语句3所述的方法,其中所述部分是实时流式传输给用户的给定剧集或独立节目或电影的数据包。
语句5:在实施例中,可以提供语句3所述的方法,其中所述部分是一个连续剧的不同剧集。
语句6:在实施例中,可以提供任何前述语句所述的方法,其中与第一交易相关的指示列于独立于供应商和用户的第三方操作的数据库中,从而使用户能够验证第一交易是用于获取媒体密钥的合法媒介。
语句7:在实施例中,可以提供任何前述语句所述的方法,其中零个或更多个初始输入包括供应商包含的至少一个初始输入,所述初始输入包括解锁相应源交易的输出的解锁脚本,所述供应商的所述输入中的所述解锁脚本包括所述供应商的公钥和所述供应商的签名,所述签名使用与所述公钥对应的所述供应商的私钥形成。
语句8:在实施例中,可以提供语句6和7所述的方法,其中所述指示包括内容提供者的所述公钥的副本,从而使用户能够通过比较所述供应商的初始输入的解锁脚本中的所述公钥与所述数据库中持有的所述公钥的副本来执行所述验证。
语句9:在实施例中,可以提供任何前述语句所述的方法,包括在接收来自所述用户的多个输入之后但仍不足以达到目标之前,所述供应商添加进一步输入以至少弥补差异。
语句10:在实施例中,可以提供任何前述语句所述的方法,包括:响应于从用户接收指向与满足目标所需相比更多的所述数字资产金额的过量输入:创建所述第一交易的新实例,并且将所述过量输入添加至所述第一交易的所述新实例。
语句11:在实施例中,可以提供任何前述语句所述的方法,其中所述媒体密钥包括解密密钥,使得用户能够至少通过使用所述解密密钥对所述媒体内容项进行解密来执行对所述媒体内容项的所述访问。
语句12:在实施例中,可以提供任何前述语句所述的方法,其中所述媒体密钥被配置为能够由所述多个用户中的每一个用户计算单独媒体密钥,从而仅使提供输入的所述用户能够访问所述媒体内容项。
语句13:在实施例中,可以提供语句11和12所述的方法,其中每个单独媒体密钥均包括单独的解密密钥。
语句14:在实施例中,可以提供任何前述语句所述的方法,其中:用户的输入的每一个均包括相应解锁脚本,以解锁相应源交易的输出,相应解锁脚本包括用户的相应公钥和用户的相应签名,该用户的相应签名使用用户的私钥形成。
语句15:i在实施例中,可以提供语句14从属于语句12或13时所述的方法,其中每个用户的单独媒体密钥基于从该用户接收的输入中获取的用户的相应公钥而生成。
语句16:根据本文公开的另一方面,提供了一种包含在计算机可读存储器上的计算机程序,配置为当在供应商的计算机设备上运行时执行语句1至15其中一项所述的方法。
语句17:根据本文公开的另一方面,提供了一种供应商的计算机设备,包括:存储器,该存储器包括一个或更多个存储器单元,和处理装置,该处理装置包括一个或更多个处理单元;其中存储器储存被设置成在处理装置上运行的代码,代码被配置为当在处理装置上运行时执行语句1至15其中一项所述的方法。
语句18:根据本文公开的另一方面,提供了一种访问链下数据源中可用的媒体内容项的方法,该方法包括通过用户:访问托管第一交易的供应商的服务器,该第一交易包括:i)一个或更多个输出,该一个或更多个输出至少包括第一输出,所述第一输出指定转移至第二方的数字资产金额;和ii)初始地,零个或更多个输入的总和,其中零个或更多个输入所指向的任何源交易的任何输出中指定的数字资产总输入金额小于一个或更多个输出指定的数字资产的总输出金额,并且其中第一交易的第一输出包括锁定脚本,该锁定脚本指定解锁脚本解锁所述第一输出需满足的条件;并且通过侧信道将多个用户发送的多个输入中的至少一个输入发送至服务器,以添加至第一交易,每个输入指向指定数字资产金额的相应源交易的输出,从而启用所述供应商;一旦达到目标,由此第一交易的输入所指向的总输入金额等于或超出输出金额,使第一交易和第二交易发布至区块链网络以记录在区块链中,其中第二交易包括输入,该输入指向第一交易的第一输出并且包括满足所述条件的解锁脚本;其中锁定脚本指定的条件要求解锁脚本包括媒体密钥;其中该方法进一步包括使用媒体密钥解锁媒体内容项。
语句19:根据本文公开的另一方面,提供了一种包含在计算机可读存储器上的计算机程序,配置为当在用户的计算机设备上运行时执行语句18所述的方法。
语句20:根据本文公开的另一方面,提供了用户的计算机设备,包括:存储器,该存储器包括一个或更多个存储器单元;和处理装置,该处理装置包括一个或更多个处理单元,其中存储器储存被设置在处理装置上运行的代码,代码被配置为当在处理装置上运行时执行语句18所述的方法。
语句21:根据本文公开的另一方面,提供了用于记录在区块链中的一组交易,该组包括包含在计算机可读数据媒体或媒介上的:第一交易,该第一交易包括:i)一个或更多个输出,该一个或更多个输出至少包括第一输出,所述第一输出指定转移至第二方的数字资产金额;和ii)来自多个不同用户的多个输入,每个输入指向指定数字资产金额的相应源交易的输出,其中第一交易的输入所指向的数字资产总输入金额等于或超出一个或更多个输出指定的总输出金额,并且其中第一交易的第一输出包括锁定脚本,该锁定脚本指定解锁脚本解锁所述第一输出需满足的条件;以及第二交易,所述第二交易包括指向第一交易的第一输出的输入,第二交易的输入包括满足所述条件的解锁脚本,其中锁定脚本指定的条件要求解锁脚本包括媒体密钥,所述媒体密钥使得能够访问储存在链下数据源中的媒体内容项。
一旦给出本文的公开内容,所公开技术的其他变体或用例对于本领域技术人员可能变得显而易见。本公开的范围不受所描述的实施例限制,而仅受随附权利要求限制。

Claims (21)

1.一种计算机实现的方法,所述计算机实现的方法使得多个用户能够访问媒体内容项,所述方法包括通过所述媒体内容的供应商:
提供第一交易,所述第一交易包括:i)一个或更多个输出,所述一个或更多个输出至少包括第一输出,所述第一输出指定转移至所述第二方的数字资产金额;和ii)初始地,零个或更多个输入的总和,其中,所述零个或更多个输入所指向的任何源交易的任何输出中指定的数字资产总输入金额小于所述一个或更多个输出指定的数字资产的总输出金额,并且其中,所述第一交易的所述第一输出包括锁定脚本,所述锁定脚本指定解锁脚本解锁所述第一输出需满足的条件;
通过侧信道接收来自所述多个用户中的每一个用户的输入,并且将每个接收到的输入添加至所述第一交易,每个接收到的输入指向指定数字资产金额的相应源交易的输出;并且
一旦达到目标,由此所述第一交易的所述输入所指向的总输入金额等于或超出所述输出金额,从而导致所述第一交易和第二交易发布至区块链网络以记录在区块链中,其中,所述第二交易包括输入,所述输入指向所述第一交易的所述第一输出并且包括满足所述条件的所述解锁脚本;
其中,所述锁定脚本指定的条件要求所述解锁脚本包括媒体密钥,所述媒体密钥使用户能够访问所述媒体内容项。
2.根据权利要求1所述的方法,其中,所述目标包括:总输入金额,所述总输入金额超出所述总输出金额至少足够的挖矿费,以使用于挖掘到区块的矿工接受所述第一交易。
3.根据权利要求1或2所述的方法,包括对多个数据项中的每一项重复所述方法,其中,每个内容项形成媒体内容的部分的序列中的不同相应项。
4.根据权利要求3所述的方法,其中,所述部分是实时流式传输给所述用户的给定剧集或独立节目或电影的数据包。
5.根据权利要求3所述的方法,其中,所述部分是一部连续剧的不同剧集。
6.根据前述任一项所述的方法,其中,与所述第一交易相关的指示列于独立于所述供应商和用户的第三方操作的数据库中,从而使用户能够验证所述第一交易是用于获取所述媒体密钥的合法媒介。
7.根据前述任一项所述的方法,其中,所述零个或更多个初始输入包括所述供应商包含的至少一个初始输入,所述初始输入包括解锁相应源交易的输出的解锁脚本,所述供应商的所述输入中的所述解锁脚本包括所述供应商的公钥和所述供应商的签名,所述签名使用与所述公钥对应的所述供应商的私钥形成。
8.根据权利要求6和7所述的方法,其中,所述指示包括内容提供者的所述公钥的副本,从而使用户能够通过比较所述供应商的初始输入的解锁脚本中的所述公钥与所述数据库中持有的所述公钥的副本来执行所述验证。
9.根据前述任一项所述的方法,包括在接收来自所述用户的多个输入之后但仍不足以达到目标之前,所述供应商添加进一步输入以至少弥补差异。
10.根据前述任一项所述的方法,包括响应于从用户接收指向与满足目标所需相比更多的所述数字资产金额的过量输入:创建所述第一交易的新实例,并且将所述过量输入添加至所述第一交易的所述新实例。
11.根据前述任一项所述的方法,其中,所述媒体密钥包括解密密钥,使得用户能够至少通过使用所述解密密钥对所述媒体内容项进行解密来执行对所述媒体内容项的所述访问。
12.根据前述任一项所述的方法,其中,所述媒体密钥被配置为能够由所述多个用户中的每一个用户计算单独媒体密钥,从而仅使提供输入的所述用户能够访问所述媒体内容项。
13.根据权利要求11和12所述的方法,其中,每个单独媒体密钥均包括单独的解密密钥。
14.根据前述任一项所述的方法,其中:
所述用户的输入的每一个均包括相应解锁脚本,以解锁所述相应源交易的输出,所述相应解锁脚本包括所述用户的相应公钥和所述用户的相应签名,所述用户的相应签名使用所述用户的私钥形成。
15.根据权利要求14从属于权利要求12或13时所述的方法,其中,每个用户的所述单独媒体密钥基于从该用户接收的所述输入中获取的所述用户的所述相应公钥而生成。
16.一种包含在计算机可读存储器上的计算机程序,配置为当在所述供应商的计算机设备上运行时执行根据权利要求1至15中的任一项所述的方法。
17.所述供应商的计算机设备,包括:
存储器,所述存储器包括一个或更多个存储器单元,以及
处理装置,所述处理装置包括一个或更多个处理单元;
其中,所述存储器储存被设置成在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时执行根据权利要求1至15中的任一项所述的方法。
18.一种访问链下数据源中可用的媒体内容项的方法,所述方法包括通过用户:
访问托管第一交易的供应商的服务器,所述第一交易包括:i)一个或更多个输出,所述一个或更多个输出至少包括第一输出,所述第一输出指定转移至所述第二方的数字资产金额;和ii)初始地,零个或更多个输入的总和,其中,所述零个或更多个输入所指向的任何源交易的任何输出中指定的数字资产总输入金额小于所述一个或更多个输出指定的数字资产的总输出金额,并且其中,所述第一交易的所述第一输出包括锁定脚本,所述锁定脚本指定解锁脚本解锁所述第一输出需满足的条件;并且
通过侧信道将多个用户发送的多个输入中的至少一个输入发送至所述服务器,以添加至所述第一交易,每个输入指向指定所述数字资产金额的相应源交易的输出,从而启用所述供应商;一旦达到目标,由此所述第一交易的所述输入所指向的总输入金额等于或超出所述输出金额,使所述第一交易和第二交易发布至区块链网络以记录在区块链中,其中,所述第二交易包括输入,所述输入指向所述第一交易的所述第一输出并且包括满足所述条件的所述解锁脚本;
其中,所述锁定脚本指定的条件要求所述解锁脚本包括媒体密钥;并且
其中,所述方法进一步包括使用所述媒体密钥解锁所述媒体内容项。
19.一种包含在计算机可读存储器上的计算机程序,配置为当在所述用户的计算机设备上运行时执行根据权利要求18所述的方法。
20.用户的计算机设备,包括:
存储器,所述存储器包括一个或更多个存储器单元,以及
处理装置,所述处理装置包括一个或更多个处理单元;
其中,所述存储器储存被设置成在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时执行根据权利要求18所述的方法。
21.用于记录在区块链中的一组交易,所述组包括包含在计算机可读数据介质或媒体上的:
第一交易,所述第一交易包括:i)一个或更多个输出,所述一个或更多个输出至少包括第一输出,所述第一输出指定转移至第二方的数字资产金额;和ii)来自多个不同用户的多个输入,每个输入指向指定所述数字资产金额的相应源交易的输出,其中,所述第一交易的输入所指向的数字资产总输入金额等于或超出所述一个或更多个输出指定的总输出金额,并且其中,所述第一交易的所述第一输出包括锁定脚本,所述锁定脚本指定解锁脚本解锁所述第一输出需满足的条件;以及
第二交易,所述第二交易包括指向所述第一交易的所述第一输出的输入,所述第二交易的所述输入包括满足所述条件的解锁脚本,其中,所述锁定脚本指定的条件要求所述解锁脚本包括媒体密钥,所述媒体密钥使得能够访问储存在链下数据源中的媒体内容项。
CN202080038771.3A 2019-05-24 2020-04-21 多输入交易 Pending CN114128216A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB1907344.4A GB201907344D0 (en) 2019-05-24 2019-05-24 Multi-input transactions
GB1907344.4 2019-05-24
PCT/IB2020/053764 WO2020240290A1 (en) 2019-05-24 2020-04-21 Multi-input transactions

Publications (1)

Publication Number Publication Date
CN114128216A true CN114128216A (zh) 2022-03-01

Family

ID=67385435

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080038771.3A Pending CN114128216A (zh) 2019-05-24 2020-04-21 多输入交易

Country Status (6)

Country Link
US (1) US20220222661A1 (zh)
EP (2) EP3967015B1 (zh)
JP (1) JP2022532889A (zh)
CN (1) CN114128216A (zh)
GB (1) GB201907344D0 (zh)
WO (1) WO2020240290A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB202108385D0 (en) * 2021-06-11 2021-07-28 Nchain Licensing Ag A computer implemented method and system
US20230013119A1 (en) * 2021-07-19 2023-01-19 International Business Machines Corporation Tainted asset marker management
GB202110658D0 (en) 2021-07-23 2021-09-08 Faradion Ltd Sodium-ion cells
CN116186682B (zh) * 2023-04-25 2023-07-14 邢台纳科诺尔精轧科技股份有限公司 设备的解锁方法、装置、电子设备及存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017145004A1 (en) * 2016-02-23 2017-08-31 nChain Holdings Limited Universal tokenisation system for blockchain-based cryptocurrencies
EP3257191B1 (en) * 2016-02-23 2018-04-11 Nchain Holdings Limited Registry and automated management method for blockchain-enforced smart contracts
GB201605032D0 (en) * 2016-03-24 2016-05-11 Eitc Holdings Ltd Recording multiple transactions on a peer-to-peer distributed ledger
EP3649599A1 (en) * 2017-07-07 2020-05-13 Buki, Pablo, Javier Methods and systems for processing high volume, fast settlement blockchain transactions
US10839379B2 (en) * 2017-07-20 2020-11-17 Chicago Mercantile Exchange Inc. Blockchain including linked digital assets
CN110998629A (zh) * 2017-08-15 2020-04-10 区块链控股有限公司 区块链中的随机数生成
US10891384B2 (en) * 2017-10-19 2021-01-12 Koninklijke Kpn N.V. Blockchain transaction device and method
US10250708B1 (en) * 2017-12-26 2019-04-02 Akamai Technologies, Inc. High performance distributed system of record
CN109308658A (zh) * 2018-09-11 2019-02-05 北京永恒纪元科技有限公司 一种高效安全的去中心化资产托管清算平台系统

Also Published As

Publication number Publication date
EP3967015B1 (en) 2023-06-07
JP2022532889A (ja) 2022-07-20
WO2020240290A1 (en) 2020-12-03
EP4203383A1 (en) 2023-06-28
EP3967015A1 (en) 2022-03-16
US20220222661A1 (en) 2022-07-14
GB201907344D0 (en) 2019-07-10

Similar Documents

Publication Publication Date Title
Zaghloul et al. Bitcoin and blockchain: Security and privacy
RU2735730C1 (ru) Способы и устройство эффективной реализации распределенной базы данных в сети
US11677550B2 (en) Methods and apparatus for a distributed database including anonymous entries
CN111144881B (zh) 对资产转移数据的选择性访问
CN114128216A (zh) 多输入交易
CN114008969A (zh) 包含在区块链中的交易的延展性
JP2020516108A (ja) グローバル加速ノードを用いたブロックチェーントランザクション速度の改善
CN113994628A (zh) 通过侧信道流式传输部分数据
CN115136543A (zh) 在区块链网络中使用的认证服务
US20230316272A1 (en) Divisible tokens
CN113906713A (zh) 包括基于哈希的验证的可运行代码的区块链交易
CN114402573A (zh) 经由区块链的交易分享数据
CN114747172A (zh) 加密链接身份
CN116157796A (zh) 警报账户
CN114531941A (zh) 多标准区块链协议
US11968307B2 (en) Private ledger partitions in blockchain networks
CN117836771A (zh) 使用区块链协调对等数据传输
CN116057920A (zh) 连接到区块链网络
CN115136560A (zh) 分层网络
CN115152195A (zh) 分层网络的适配连接
EhabZaghloul et al. Bitcoin and blockchain: Security and privacy
RU2775263C2 (ru) Способы и устройство для распределенной базы данных, содержащей анонимные входные данные
RU2775994C2 (ru) Способы и устройство эффективной реализации распределенной базы данных в сети
CN117678191A (zh) 消息交换系统
WO2023208832A1 (en) Blockchain transaction

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