CN110169013B - 在区块链上实现复杂功能性的计算机实现的系统和方法 - Google Patents

在区块链上实现复杂功能性的计算机实现的系统和方法 Download PDF

Info

Publication number
CN110169013B
CN110169013B CN201780073344.7A CN201780073344A CN110169013B CN 110169013 B CN110169013 B CN 110169013B CN 201780073344 A CN201780073344 A CN 201780073344A CN 110169013 B CN110169013 B CN 110169013B
Authority
CN
China
Prior art keywords
script
stack
blockchain
uls
transaction
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.)
Active
Application number
CN201780073344.7A
Other languages
English (en)
Other versions
CN110169013A (zh
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
Priority claimed from GBGB1621830.7A external-priority patent/GB201621830D0/en
Priority claimed from GBGB1621827.3A external-priority patent/GB201621827D0/en
Priority claimed from GBGB1621831.5A external-priority patent/GB201621831D0/en
Application filed by Nchain Holdings Ltd filed Critical Nchain Holdings Ltd
Publication of CN110169013A publication Critical patent/CN110169013A/zh
Application granted granted Critical
Publication of CN110169013B publication Critical patent/CN110169013B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • 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/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

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

Abstract

本发明涉及区块链技术。本发明包含一种使用多个区块链交易来执行计算机实现的任务的方法,该方法包含以下步骤:使用区块链交易(Tx2)中与第一输入(In1)相关联的解锁脚本(ULS1)将至少一个数据项呈现给另一交易(Tx1)的锁定脚本(LS1),从而在堆栈上提供结果;修改所述区块链交易(Tx2)以包括第二输入(In2);生成与所述第二输入(In2)相关联的另一解锁脚本(ULS2),该另一解锁脚本(ULS2)包含来所述堆栈的所述结果;将所述另一解锁脚本(ULS2)呈现给另一锁定脚本(LS2),使得来自所述堆栈的所述结果作为输入提供至所述另一锁定脚本(LS2)。优选地,可以提供与同一区块链交易(Tx1)内的不同输出相关联的所述锁定脚本(LS1)和所述另一锁定脚本(LS2)。

Description

在区块链上实现复杂功能性的计算机实现的系统和方法
技术领域
本发明大体上涉及区块链技术,且更具体地说,涉及通过区块链来实现复杂的功能性。有利地是,本发明允许计算或执行代码的结果彼此传送,提供了一种机制,该机制使用区块链交易作为控制机制,用于启动、影响和指导计算机实现的过程的活动。本发明特别适用于,但不限于,自动化过程的实现和控制。
背景技术
在本文件中,我们使用术语“区块链(blockchain)”以包括所有形式的电子、基于计算机的分布式分类账,包括但不限于区块链和交易链技术、许可和未经许可的分类账、共享分类账及其变体。尽管其他区块链实现方式已被提出和开发,区块链技术最广为人知的应用是加密货币分类帐。出于方便和说明的目的,虽然在本文提及加密货币,但是应注意,本发明不限于与加密货币区块链一起使用,且其他的区块链实现方式和协议也落入本发明的范围内。
区块链是基于共识的电子分类账,它被实现为基于计算机的去中心化的分布式系统,由区块构成,而区块又由交易构成。每一交易包括至少一个输入和至少一个输出。每一区块包含前一个区块的散列(hash),使得这些区块链接在一起,以创建所有交易的永久的、不可更改的记录,自区块链创建以来的所有交易均写入区块链种。交易包含被称为脚本的小程序、这些小程序嵌入到其输入和输出中,这些小程序指定了如何以及由谁来访问交易的输出。在加密货币平台上,这些脚本是使用基于堆栈的脚本语言编写的。脚本由指令(操作码)构成,这些指令将数据项推送到堆栈上,或者从堆栈中弹出。
为了将交易写入区块链,必须对交易进行“验证”。网络节点(矿工)执行工作以确保每一个交易有效,且无效交易被网络拒绝。安装在节点上的软件客户端通过执行锁定和解锁脚本来对未花费的交易(UTXO)执行此验证工作。如果锁定和解锁脚本的执行评估为真(TRUE),那么交易有效,并将交易写入区块链。因此,为了将交易写入区块链,其必须:i)由接收交易的第一节点验证——如果交易被验证,那么该节点将其中继到网络中的其他节点;和ii)添加到由矿工建立的新区块;和iii)挖掘,即添加到过去交易的公共分类账。
尽管区块链技术以加密货币的实现方案而闻名,但数字企业家已经开始探索使用加密货币所基于的加密安全系统以及可存储在区块链上的数据两者来实现新系统。如果区块链可用于不局限于加密货币领域的自动化任务和过程,那将是非常有利的。此类解决方案将能够利用区块链的益处(例如永久的、防篡改的事件记录、分布式处理等),同时在其应用中更加通用。
当前研究的一个领域是使用区块链来实现“智能合约”——按照机器可读文件中规定的条件行事的机器可执行程序,且包括可处理输入以生成结果的规则,然后可以根据这些结果来执行操作。
然而,随着越来越复杂的应用被设计用于区块链技术,因此对日益复杂的脚本功能性的需求也随之增加。然而,这里出现了一个技术问题,因为区块链技术是有目的地被设计来约束和限制在脚本内可以合法实现的内容。例如,出于安全考虑,加密货币脚本语言故意是非图灵完整的(non-Turing complete)。此外,每个脚本有200个操作码的上限值,从而防止拒绝服务攻击。只要加密货币交易脚本包含少于200个操作码,它就可以被验证和广播。然而,随着更复杂的程序元素(例如,基元)的出现,这一限值限制了为诸如智能合同执行等应用开发更复杂的技术解决方案。
因此,需要一种技术解决方案,使复杂的功能性能够内置到区块链脚本中,而不损害安全性和/或需要对现有协议进行任何修改。优选地,此解决方案将允许现有区块链协议,例如加密货币协议,能够通过使用区块链交易和堆栈将区块链的计算能力扩展到其当前极限值之外,从而使基础结构能够以新颖且有利的方式使用。此类技术将能够使用交易来控制、影响和指导技术过程的执行。
现在已经设计出此类解决方案。本发明至少提供了本文描述的优点。
发明内容
本发明在随附权利要求中定义。
因此,根据本发明,可以提供一种方法和/或相应的系统。
根据一个观点,本发明可以被视为提供一种技术和相应的实现方式,能够通过使用区块链来实现复杂的功能。有利地是,此技术可以使用各种不同计算部件的组合来执行指定的功能。这些部件可以包含一个或多个基于软件的客户端、至少一个存储资源(优选基于堆栈的数据结构)、在至少一个处理器上执行并被布置以产生区块链交易的至少一个数字钱包、和/或区块链。优选地,这可以是加密货币区块链。
本发明的实施例可以涉及针对多个交易及其各自的输入和输出的技术任务的分解。本发明的实施例可以从至少一个数据存储资源获得数据,并使用所述数据来控制在多个区块链交易上,特别是通过在各自的交易输入和输出之间传递脚本输出实现的任务或计算的执行。
上述各种系统部件可以被布置成在各部件之间获得和传递数据项,以便能够通过区块链交易来执行计算和任务。这些计算/任务可能是冗长和复杂的,并且在本发明之前,由于对脚本大小和/或其中使用的操作码数目的强制限值,而不能通过区块链交易来执行。
一旦在区块链上进行交易,交易就以不可变更且永久的方式记录下来。因此,从一个观点来看,本发明提供了一种改进的区块链协议、一种改进的区块链客户端、一种改进的计算技术和相应的设备、和/或一种改进的过程控制机制。
在一种意义上,本发明能够通过区块链协议来实现复杂的计算,同时仍然保留对脚本大小和操作码限值的基于安全性的限制。在本发明之前,此类冗长的计算将无法使用例如当前的加密货币协议,或者必须使用不包括基于脚本的限制的区块链的替代形式。后者并不总是合乎需要的或可行的。因此,本发明提供一种增强的安全机制。由于它提供了一种实现迄今为止不可能通过协议实现的结果的方法,本发明提供了一种改进的区块链协议。
根据本发明的方法可以被描述为一种使用多个区块链交易来执行计算机实现的任务的方法。另外或可选地,其可以被描述为以下方法:
·通过将部分任务的执行分配或分布给两个或两个以上相应的区块链交易中提供的锁定和解锁脚本来控制计算机实现的任务的执行;
·通过从基于堆栈的数据结构中读取值并将其作为值从解锁脚本传递给锁定脚本来控制计算机实现的任务的执行。
所述方法可以包含以下步骤:
使用区块链交易(Tx2)中与第一输入(In1)相关联的解锁脚本(ULS1)将至少一个数据项呈现给另一交易(Tx1)的锁定脚本(LS1),从而在堆栈上提供结果;
修改所述区块链交易(Tx2)以包括第二输入(In2);
生成与所述第二输入(In2)相关联的另一解锁脚本(ULS2),所述另一解锁脚本(ULS2)包含来自所述堆栈的所述结果;和/或
将所述另一解锁脚本(ULS2)呈现给另一锁定脚本(LS2),使得将来自所述堆栈的所述结果作为输入提供至所述另一锁定脚本(LS2)。
所述区块链交易可以根据加密货币协议的版本进行配置。
所述方法可以进一步包括步骤:
不止一次地执行所述方法的步骤中的一者或多者。
所述方法可以进一步包含以下步骤:
在执行所述锁定脚本(LS1)内提供的计算或指令序列时,使用所述至少一个数据项。
所述方法可以进一步包含以下步骤:
在执行所述另一锁定脚本(LS2)内提供的计算或指令序列时,使用所述堆栈上提供的所述结果。
所述方法可以进一步包含从所述堆栈获得所述结果的步骤。
所述方法可以进一步包含以下步骤:
验证所述区块链交易(Tx2)和/或所述另一交易(Tx1)以在所述堆栈上生成所述结果。
可以提供与同一区块链交易(Tx2)内的不同输入(In1,In2)相关联的所述解锁脚本(ULS1)和所述另一解锁脚本(ULS2)。本发明可以基本上如下文关于本发明的“实施例1”所描述的,和/或基本上根据图1至图3,图9a和图9b中所示的示例所示的技术或原理来描述。
可以提供与同一区块链交易(Tx1)内的不同输出相关联的所述锁定脚本(LS1)和所述另一锁定脚本(LS2)。有利地,这提供了紧凑且有效的解决方案,因为仅需要两个交易来实现该功能。这减少了与多个交易的传播相关的空间和存储要求,费用,处理开销和其他缺点。
将所述另一解锁脚本(ULS2)呈现给另一锁定脚本(LS2)的步骤可以在所述堆栈上或不同的堆栈上提供另一结果。所述堆栈可以是主堆栈或备用堆栈。
所述方法可以进一步包含以下步骤:
使用区块链客户端以从所述堆栈获得所述结果。所述区块链客户端可以是加密货币客户端。它可以被调整,布置或配置成能够从堆栈中读取,返回和/或获得值。
所述方法可以进一步包含以下步骤:
向区块链网络提交区块链交易(Tx2)和/或另一区块链交易(Tx1)。
所述至少一个数据项可以作为所述解锁脚本(ULS1)内的元数据而提供。
所述结果可以作为所述另一解锁脚本(ULS2)内的元数据而提供。
本发明还包含相应的系统和设备。本发明可以包含计算机实现的系统,所述系统被布置和配置成实现上述或基本上如下所述的任何前述的方法步骤。
附图说明
参考本文描述的实施例,本发明的这些和其他方面将变得显而易见并得以阐明。现将仅以实例的方式并参考附图来描述本发明的实施例,其中:
图1示出了根据本发明第一实施例的多输入/输出方法中涉及的交易链和顺序步骤。
图2展示根据本发明的第一实施例的说明性版本的交易1(Tx1)。
图3展示根据本发明的第一实施例的说明性版本的交易2(Tx2)。
图4展示根据实施例2的说明性版本的说明性交易链
图5至8展示根据实施例2的说明性版本的交易1、2、3和4。
图9a和9b展示根据实施例1如何提供本发明的示例性版本的说明。
图10展示区块链被用来获得堆栈顶部剩余项目的简单说明。
具体实施方式
在以下实例中,我们将使用加密货币作为说明性区块链实现方式和协议,因为它是最广为人知的。这仅仅是为了说明的目的,且应注意本发明不限于此方面。其他区块链实现方式也将落入本发明的范围内。
为了防止展开DoS(拒绝服务)攻击,默认加密货币客户端对有效脚本中可以包括的最大字节数和操作码数目设置了限值。在本申请的优先权日,这个限值是10,000字节和201个操作码。包含超过201个操作码或10,000字节的任何脚本都将无效。尽管出于有价值的原因,但这一限制阻碍了更复杂的脚本功能性的开发,且因此也阻碍了可以被设计成与区块链技术结合操作的技术解决方案的复杂性。
本发明提供了两种技术(实施例),这两种技术使用户能够通过使用两个或两个以上区块链交易来将区块链脚本分成多个输入/输出。两个实施例都可以依赖于自动化计算代理(或“机器人”)的能力,该自动化计算代理被配置成:
·读取堆栈的状态,
·传播,即将执行脚本的结果传送给未花费的交易输出的输入,
·将大型复杂脚本分为多个较小的、简单的单元。
应注意,在一些区块链实现方式中,诸如加密货币,可能需要定制客户端来使得在脚本终止之后能够读取堆栈的状态,因为默认加密货币客户端不提供对此信息项的访问。堆栈以.cpp文件中的列表表示,该文件包括在加密货币核心程序中。通过在模拟堆栈行为的类中插入几行代码,有可能获得并返回列表中所含的信息。该信息然后可以被传递给另一计算资源使用和/或用于另一计算中。这如图10所示。
执行脚本的结果的传播不需要任何自动化,且可以手动执行(至少原则上是这样)。然而,在典型的实现方式中,预期诸如编译器等外部系统将处置拆分复杂脚本所涉及的操作的自动化。
有利地是,本发明不需要加密货币协议的修改。换句话说,虽然可能需要定制客户端来准备交易,但是一旦交易被广播,加密货币网络的所有节点将能够验证它们。
因此,根据本发明(的所有版本),基本概念是将脚本分成若干块或功能部分,并将块的输出用作下一块的输入。这是与现有技术的重要改变。其允许区块链用于非常复杂的任务和计算,同时保留脚本大小的限值,并为计算过程的分布式执行提供了新颖的架构。
然而,必须记住,脚本执行的最终结果是二进制的,即,交易被标记为无效,或者被标记为有效(假定它也满足其他要求)。因此,如上所述,为了将一个计算块的输出与下一个计算块的输入“连接”,必须使用可以访问堆栈上的值并重新使用它们的非参考客户端。
我们从以下简单的实例开始:
x+y>3
其可以用以下方式用操作码编写:
OP_<x>OP_<y>OP_ADD OP_3OP_GREATERTHAN我们将此分成以下两个块:
z=x+y
z>3
根据第一方法,可以采用现在描述的解决方案。
爱丽丝(Alice)准备如下的Tx1:
Figure GDA0003988351910000071
现在鲍勃(Bob)开始用以下方式准备Tx2:
Figure GDA0003988351910000072
Figure GDA0003988351910000081
鲍勃现将签署该交易,验证它,并(使用定制的客户端来)从堆栈读取与Tx1:Out1解锁脚本链接的Tx2:In1解锁脚本的输出。
然后,他将通过添加以下输入和输出来更改Tx2:
Figure GDA0003988351910000082
其中OP_5显然是第一个计算块的结果。同样在此情况下,可以使用多重签名来防止鲍勃广播OP_5被其他东西替换的交易。此方法的优点是,只需使用两个交易就可以链接大量的块(达到交易中输入和输出数目的限值)。因此,复杂的功能性和计算可以以高效的方式执行,只需要通过区块链网络验证和挖掘两个交易,并在区块链上使用最小的存储要求。
根据替代的方法,可以采用以下步骤。
第一交易Tx1由输入的全部所有者准备并共同签署。使用以下锁定脚本将输入发送到爱丽丝的公钥:
Figure GDA0003988351910000083
                   
Figure GDA0003988351910000091
爱丽丝现将用以下方式准备Tx2:
Figure GDA0003988351910000092
其中Tx2:In2现将用标志SIGHASH_NONE签署,以便可以添加其他输出。如相关技术中已知,SIGHASH_NONE是仅对输入进行签署的加密货币签名散列类型。因此,在使用SIGHASH_NONE时,任何人都可以用他们选择的任何方式来修改输出。
Tx2:In1假设是指爱丽丝的资金,且可以用SIGHASH_SINGLE解锁,因此可以再次添加其他输出。在当前形式中,交易将金额A作为交易费用进行传递。然而,爱丽丝没有以当前的形式广播交易,只是在本地进行验证。在验证过程中,Tx2:In2的解锁脚本将与Tx1:Out的锁定脚本一起执行:
<Alice’s signature>OP_2OP_3OP_ADD OP_SWAP<Alice’s pubKey>OP_SWAP
OP_CHECKSIG OP_DROP
且在堆栈执行结束时,剩余结果将是5,即第一计算块的结果。爱丽丝的定制加密货币客户端现将保存或记录第一计算块的结果,并通过添加以下两个输出来修改Tx2:
Figure GDA0003988351910000093
Figure GDA0003988351910000101
但她将再次对Tx2的输入进行签署,这次使用的是通常的标志SIGHASH_ALL,因此现在所述交易的输出都不可以被修改。鲍勃现在可以在OP_RETURN后读取存储在Out3中的数据来完成计算。
如现有技术中已知的,OP_RETURN是一种加密货币OP_CODE,其可以用于将交易输出(TxO)标记为无效。在加密货币支付方面,OP_RETURN之后提供的任何数据都将被忽略,且因此OP_RETURN在现有技术中被用作通过区块链传送非支付相关数据的机制。
鲍勃现在准备以下的交易:
Figure GDA0003988351910000102
原则上,在OP_RETURN之后,可以存储以分布式散列表(DHT)进行索引的散列,因此可以在交易之间传递任意长的中间结果。显然,在此实例中,爱丽丝相信鲍勃会如上所述准备Tx3,使得计算可以成功完成。简单的扩展可能需要Tx2:Out2由爱丽丝和鲍勃两人签署,这样,爱丽丝可以验证鲍勃已准备好了正确的交易。然而,鲍勃可以通过拒绝准备交易或签署来无限期地推迟该执行。爱丽丝还可以准备Tx3,将其发送给鲍勃,并避免在OP_RETURN之后存储数据。应注意,此方法需要等待确认每一计算块都在区块链中。
下文参考附图提供了基础技术的这两种实现方式的详细实例。以下描述组织如下:
·“实施例1”描述了仅使用两个交易的第一方法;操纵多个输入和输出
·“实施例2”描述了“连接”或链接多个交易以实现相同技术效果的替代方法。值得注意的是,两种方法的组合也是可能的。
为了说明两个实施例的使用,我们现在考虑下面的实例,所述实例评估如下定义的函数f(x,y,z)
f(x,y,z)=(x·y+z)·x
我们(或编译器)将f(x,y,z)表示为简单函数的总和
g1(x,y)=x·y
g2(g1(x,y),z)=g1(x,y)+z
f(g2(g1(x,y),z),x)=g2(g1(x,y),z)·x
在两个实施例中,代表自变量g1和g2的变量x、y和z将包含在交易解锁脚本中,而函数g1和g2自身将包含在锁定脚本中。因此,此后,我们将互换地使用术语“函数”和“锁定脚本”。特别地,x和y将处于解锁含有g1的锁定脚本的脚本中。类似地,g1(x,y)和z将处于解锁含有g2的锁定脚本的脚本中。
在本文的后续部分,我们使用的实例包括操作码OP_ADD和PrO_MULT。这些识别符分别表示算术运算加法(+)和乘法(·)。操作码OP_X、OP_Y和OP_Z表示变量x、y和z。符号G1和G2表示对应于g1和g2的锁定脚本被解锁之后的堆栈顶部的值。OP_ADD是形成加密货币脚本语言的部分的操作码。我们使用术语“PrO_MULT”(“原始运算符”的缩写)来指代可以被执行来执行乘法运算的运算。在加密货币的当前版本中,乘法操作码(诸如OP_MUL、OP_2MUL)被禁用,因此PrO_MULT可以是用以提供当前禁用的功能性的自定义运算。当然,如果OP_MUL等操作码被重新启用,那么可以代替使用这些操作码。因此,本发明可以仅与使用标准(启用的)操作码的函数一起使用,且定制操作符的实现方式并不是本发明的一部分或与本发明有关。因此,关于可以如何实现PrO_MULT的细节对于理解本发明来说不是必需的,且为了清楚起见,本文没有包括这些细节。
本文呈现的实例对应于非常简单的智能合约的执行,其中资金从爱丽丝转账到鲍勃,但条件是长脚本的成功执行。脚本输入由鲍勃提供,且可以设想两种可能的恶意行为。第一,鲍勃可能会提供不正确的输入,使得脚本得以成功执行且资金被转账给他。然而,当交易存储在区块链中时,所述输入将变得公开可用,从而允许爱丽丝对合同提出异议。第二,如果鲍勃有任何理由拒绝爱丽丝的转账,他可能会决定无限期地拖延交易,因此阻止合同的执行。在最简单的场景中,爱丽丝必须简单地相信鲍勃将不会拖延合同的执行,且他将会提供正确的输入。额外的安全机制可以与本发明的概念结合使用,以增强安全性。
实施例1:将脚本拆分为多个输入和输出
图1、图9a和图9b示出实施例1的多输入/输出方法中涉及的交易链和顺序步骤。Tx1包含将由Tx2消耗的一组未花费的交易输出(UTXO)。Tx2的构造逐步递增进行。在每一阶段,(自动化软件)代理将解锁脚本呈现给Tx1的一个UTXO。代理验证Tx2,读取堆栈顶部的值,并准备新的解锁脚本。区块链交易和脚本的自动化生成在相关技术中是已知的且因此本文不再解释。
代理可以使用在先前步骤(或从早期步骤)中从堆栈获得的信息,并将此新的解锁脚本呈现给Tx1内所包含的另一UTXO。当完成当前任务的所有必要步骤时,Tx2被广播。
有利地是,此技术将Tx1的锁定脚本中所包含的函数与Tx2提供的解锁脚本中所包含的参数分离。一旦Tx1已被添加到区块链并被验证,函数就变得不可变更。另外,在此阶段,函数参数(输入)甚至可以是未知的。它们仅是在Tx2准备好之后才被揭示出来。这可能是有利的,并提供了增强的安全性。
实施例1的步骤顺序展示在图1、图9a和图9b中,并可以描述如下:
步骤0:爱丽丝向加密货币网络提交交易1(如图1所示)。
步骤1:鲍勃准备交易2的初始版本
步骤3:鲍勃将<鲍勃的签名><OP_X><OP_Y><赎回脚本1>呈现给输出0。鲍勃验证交易2,读取堆栈顶部的值G1,但不广播交易2。
步骤4:鲍勃将<鲍勃的签名><G1><OP_Z><赎回脚本2>呈现给输出1。
鲍勃验证交易2,读取堆栈顶部的值G2,但不广播交易2。
步骤5:鲍勃将<鲍勃的签名><G2><OP_X><赎回脚本3>呈现给输出2。
鲍勃验证交易2并将其广播。
为了简单起见,我们并不提供关于Tx1的输入和Tx2的输出的大量细节。图2展示交易1(Tx1)。图3展示交易2(Tx2)。
实施例2:将脚本拆分为多个交易
第二实施例使用区块链交易来编写函数(参见图4)。此方法在原则上类似于先前的实施例。然而,在验证阶段期间,代理读取堆栈顶部的值,并在如上所述的OP_RETURN之后添加它/它们。
图5至8展示根据实施例2的说明性版本的交易1、2、3和4。
应注意,上述实施例用于说明而非限制本发明,且本领域技术人员将能够在不脱离由所附权利要求限定的本发明范围的情况下设计许多替代实施例。在权利要求中,括号中的任何附图标记不应被理解为限制权利要求。词“包含(comprising)”和“包括(comprises)”等并不排除除了在任何权利要求或说明书整体中列出的元件或步骤之外的元件或步骤的存在。在本说明书中,“包含(comprises)”意味着“包括(includes)或由其组成(consists of)”,且“包括(comprising)”意味着“包含(including)或由其组成(consisting of)”。元件的单数引用并不排除此类元件的复数引用,且元件的复数引用并不排除此类元件的单数引用。本发明可以借助于包含若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的装置权利要求中,这些装置中的几个可以由同一个硬件项目来体现。在相互不同的从属权利要求中引用某些措施的事实并不表示这些措施的组合不能被有利地使用。

Claims (15)

1.一种使用多个区块链交易来执行计算机实现的任务的方法,包含以下步骤:
使用第一区块链交易(Tx2)中与第一输入(In1)相关联的第一解锁脚本(ULS1)将至少一个数据项呈现给第二区块链交易(Tx1)的第一锁定脚本(LS1),从而在堆栈上提供结果;
修改所述第一区块链交易(Tx2)以包括第二输入(In2);
生成与所述第二输入(In2)相关联的第二解锁脚本(ULS2),所述第二解锁脚本(ULS2)包含来自所述堆栈的所述结果;
将所述第二解锁脚本(ULS2)呈现给第二锁定脚本(LS2),使得来自所述堆栈的所述结果作为输入提供至所述第二锁定脚本(LS2)。
2.根据权利要求1所述的方法,进一步包括:
不止一次地执行根据权利要求1所述的方法的步骤中的一者或多者。
3.根据权利要求1或2所述的方法,进一步包括以下步骤:
在执行所述第一锁定脚本(LS1)内提供的计算或指令序列时使用所述至少一个数据项。
4.根据权利要求1或2所述的方法,进一步包括以下步骤:
在执行所述第二锁定脚本(LS2)内提供的计算或指令序列时使用所述堆栈上提供的所述结果。
5.根据权利要求1或2所述的方法,进一步包括以下步骤:
从所述堆栈获得所述结果。
6.根据权利要求1或2所述的方法,进一步包括以下步骤:
验证所述第一区块链交易(Tx2)和/或所述第二区块链交易(Tx1)以在所述堆栈上生成所述结果。
7.根据权利要求1或2所述的方法,其中:
提供与同一第一区块链交易(Tx2)内的不同输入(In1,In2)相关联的所述第一解锁脚本(ULS1)和所述第二解锁脚本(ULS2)。
8.根据权利要求1或2所述的方法,其中:
提供与同一第二区块链交易(Tx1)内的不同输出相关联的所述第一锁定脚本(LS1)和所述第二锁定脚本(LS2)。
9.根据权利要求1或2所述的方法,其中:
将所述第二解锁脚本(ULS2)呈现给第二锁定脚本(LS2)的步骤在所述堆栈上或不同的堆栈上提供另一结果。
10.根据权利要求1或2所述的方法,进一步包括以下步骤:
使用区块链客户端从所述堆栈获得所述结果。
11.根据权利要求1或2所述的方法,进一步包括以下步骤:
向区块链网络提交所述第一区块链交易(Tx2)和/或第二区块链交易(Tx1)。
12.根据权利要求1或2所述的方法,其中:
所述至少一个数据项作为所述第一解锁脚本(ULS1)内的元数据而提供;和/或
所述结果作为所述第二解锁脚本(ULS2)内的元数据而提供。
13.根据权利要求1或2所述的方法,其中:
区块链是基于共识的分布式电子分类帐。
14.根据权利要求1或2所述的方法,进一步包括以下步骤:
使用所述方法计算最终结果,且使用所述最终结果来控制在区块链以外执行的过程。
15.一种计算机实现的系统,包括:处理器和存储器,其中:
所述存储器存储有可执行指令,并且
所述处理器配置为执行所述可执行指令,以实现根据任一前述权利要求所述的方法的步骤。
CN201780073344.7A 2016-12-21 2017-12-15 在区块链上实现复杂功能性的计算机实现的系统和方法 Active CN110169013B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
GBGB1621830.7A GB201621830D0 (en) 2016-12-21 2016-12-21 Computer-implemented system and method
GBGB1621827.3A GB201621827D0 (en) 2016-12-21 2016-12-21 Computer-implemented system and method
GB1621827.3 2016-12-21
GBGB1621831.5A GB201621831D0 (en) 2016-12-21 2016-12-21 Computer-implemented system and method
GB1621830.7 2016-12-21
GB1621831.5 2016-12-21
PCT/IB2017/058007 WO2018116104A1 (en) 2016-12-21 2017-12-15 Computer-Implemented Systems and Methods To Enable Complex Functionality On A Blockchain While Preserving Security-Based Restrictions On Script Size and Opcode Limits

Publications (2)

Publication Number Publication Date
CN110169013A CN110169013A (zh) 2019-08-23
CN110169013B true CN110169013B (zh) 2023-04-18

Family

ID=60990839

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201780073344.7A Active CN110169013B (zh) 2016-12-21 2017-12-15 在区块链上实现复杂功能性的计算机实现的系统和方法
CN201780073311.2A Active CN110063041B (zh) 2016-12-21 2017-12-15 使用多个区块链交易来执行计算机实现的任务的方法和系统
CN201780073343.2A Active CN110169012B (zh) 2016-12-21 2017-12-15 使用多个区块链交易来执行计算机实现的任务的方法和装置

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN201780073311.2A Active CN110063041B (zh) 2016-12-21 2017-12-15 使用多个区块链交易来执行计算机实现的任务的方法和系统
CN201780073343.2A Active CN110169012B (zh) 2016-12-21 2017-12-15 使用多个区块链交易来执行计算机实现的任务的方法和装置

Country Status (9)

Country Link
US (5) US11087322B2 (zh)
EP (3) EP3387786B1 (zh)
JP (3) JP7039594B2 (zh)
KR (3) KR102525244B1 (zh)
CN (3) CN110169013B (zh)
HK (3) HK1254558B (zh)
TW (1) TWI753983B (zh)
WO (3) WO2018116104A1 (zh)
ZA (2) ZA201903968B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110169013B (zh) * 2016-12-21 2023-04-18 区块链控股有限公司 在区块链上实现复杂功能性的计算机实现的系统和方法
GB201701589D0 (en) 2017-01-31 2017-03-15 Nchain Holdings Ltd Computer-implemented system and method
US11989208B2 (en) * 2018-08-06 2024-05-21 Inveniam Capital Partners, Inc. Transactional sharding of blockchain transactions
CN109447636A (zh) * 2018-10-15 2019-03-08 联动优势科技有限公司 一种资产转移方法及装置
CN109903161B (zh) * 2019-02-28 2021-11-09 百度在线网络技术(北京)有限公司 基于区块链的对象处理方法、装置、设备及介质
GB201907345D0 (en) * 2019-05-24 2019-07-10 Nchain Holdings Ltd Protocol for validating blockchain transactions
GB201907346D0 (en) * 2019-05-24 2019-07-10 Nchain Holdings Ltd Using blockchain transactions to provide off-chain functionality
CN110337102A (zh) * 2019-06-28 2019-10-15 阿里巴巴集团控股有限公司 基于区块链的终端锁定方法及装置
KR102057570B1 (ko) * 2019-09-16 2020-01-23 (주) 모로보기 블록체인 네트워크
GB2588660A (en) * 2019-10-31 2021-05-05 Nchain Holdings Ltd Request and response protocol using blockchain transactions
CN112488712A (zh) * 2020-06-24 2021-03-12 杨刘琴 基于区块链大数据的安全识别方法及安全识别系统
CN112801665B (zh) * 2021-03-19 2021-08-24 北京万物智链科技有限公司 一种基于服务器中继的跨链交易方法及系统
GB202109064D0 (en) * 2021-06-24 2021-08-11 Nchain Licensing Ag Computer implemented method and system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008033952A2 (en) * 2006-09-15 2008-03-20 Sandisk Corporation Non-volatile memory and method for class-based update block replacement rules

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014201059A1 (en) 2013-06-10 2014-12-18 Certimix, Llc Secure storing and offline transfering of digitally transferable assets
US11250493B2 (en) * 2014-03-31 2022-02-15 Monticello Enterprises LLC System and method for performing social media cryptocurrency transactions
US11270298B2 (en) * 2014-04-14 2022-03-08 21, Inc. Digital currency mining circuitry
CN103927397B (zh) * 2014-05-05 2017-02-22 湖北文理学院 一种基于区块树的Web页面链接块的识别方法
WO2015183497A1 (en) 2014-05-06 2015-12-03 Case Wallet, Inc. Cryptocurrency virtual wallet system and method
EP3140979A4 (en) 2014-05-09 2017-12-27 Veritaseum Inc. Devices, systems, and methods for facilitating low trust and zero trust value transfers
KR101660627B1 (ko) * 2015-02-03 2016-09-28 한양대학교 에리카산학협력단 암호화 화폐의 거래를 보호하는 방법 및 장치
CN105991731A (zh) 2015-02-13 2016-10-05 中兴通讯股份有限公司 一种获取信息的方法、智能终端和服务端
US10484168B2 (en) * 2015-03-02 2019-11-19 Dell Products L.P. Methods and systems for obfuscating data and computations defined in a secure distributed transaction ledger
US20160260095A1 (en) 2015-03-02 2016-09-08 Dell Products, Lp Containerized Computational Task Execution Management Using a Secure Distributed Transaction Ledger
EP3767878A1 (en) 2015-03-27 2021-01-20 Black Gold Coin, Inc. A system and a method for personal identification and verification
CA2981511C (en) * 2015-03-31 2018-08-28 Nasdaq, Inc. Systems and methods of blockchain transaction recordation
CA2981952A1 (en) * 2015-04-06 2016-10-13 Bitmark, Inc. System and method for decentralized title recordation and authentication
US10963881B2 (en) * 2015-05-21 2021-03-30 Mastercard International Incorporated Method and system for fraud control of blockchain-based transactions
EP3317775B1 (en) 2015-07-02 2022-02-16 Nasdaq, Inc. Systems and methods of secure provenance for distributed transaction databases
CN105573828B (zh) * 2015-12-17 2019-04-12 布比(北京)网络技术有限公司 一种操作处理方法及装置
US9948467B2 (en) * 2015-12-21 2018-04-17 Mastercard International Incorporated Method and system for blockchain variant using digital signatures
CN109564599A (zh) * 2016-03-31 2019-04-02 克劳斯公司 用于创建和执行数据驱动法律合同的系统和方法
US10333705B2 (en) 2016-04-30 2019-06-25 Civic Technologies, Inc. Methods and apparatus for providing attestation of information using a centralized or distributed ledger
US10838846B1 (en) 2016-05-16 2020-11-17 Jpmorgan Chase Bank, N.A. Method and system for implementing an automation software testing and packaging framework
CN106096967A (zh) * 2016-06-20 2016-11-09 深圳市淘淘谷信息技术有限公司 一种用区块链来标示数字货币流通的方法
CN106130738A (zh) * 2016-08-25 2016-11-16 杭州天谷信息科技有限公司 一种支持国密算法的区块链系统
CN106503053B (zh) 2016-09-26 2019-07-16 江苏通付盾科技有限公司 Utxo查询方法及装置
CN110169013B (zh) * 2016-12-21 2023-04-18 区块链控股有限公司 在区块链上实现复杂功能性的计算机实现的系统和方法
EP3593305A4 (en) * 2017-03-08 2020-10-21 IP Oversight Corporation SYSTEM AND PROCEDURE FOR GENERATING TOKENS SECURED BY THE VALUE OF GOODS FROM RESERVES
US10891384B2 (en) * 2017-10-19 2021-01-12 Koninklijke Kpn N.V. Blockchain transaction device and method
CN111480315A (zh) * 2017-12-15 2020-07-31 区块链控股有限公司 使用低熵密码授权区块链交易的计算机实现的系统和方法
JP6736033B2 (ja) 2018-06-12 2020-08-05 フレセッツ株式会社 暗号通貨のためのウォレット装置及びその装置を用いる署名方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008033952A2 (en) * 2006-09-15 2008-03-20 Sandisk Corporation Non-volatile memory and method for class-based update block replacement rules

Also Published As

Publication number Publication date
EP3387786A1 (en) 2018-10-17
US11669836B2 (en) 2023-06-06
JP2020503749A (ja) 2020-01-30
WO2018116105A1 (en) 2018-06-28
JP7003133B2 (ja) 2022-01-20
HK1254558B (zh) 2020-03-20
EP3387786B1 (en) 2019-02-20
KR102481934B1 (ko) 2022-12-27
TW201830271A (zh) 2018-08-16
KR102504033B1 (ko) 2023-02-28
KR20190094229A (ko) 2019-08-12
US11238450B2 (en) 2022-02-01
ZA201903969B (en) 2021-01-27
EP3387787A1 (en) 2018-10-17
JP2020514854A (ja) 2020-05-21
KR20190094217A (ko) 2019-08-12
CN110169012B (zh) 2023-04-18
US20190356467A1 (en) 2019-11-21
HK1254559B (zh) 2020-03-20
JP6983890B2 (ja) 2021-12-17
KR102525244B1 (ko) 2023-04-24
CN110169012A (zh) 2019-08-23
US20190354976A1 (en) 2019-11-21
US20230410106A1 (en) 2023-12-21
ZA201903968B (en) 2021-01-27
CN110063041A (zh) 2019-07-26
KR20190094224A (ko) 2019-08-12
US20200092105A1 (en) 2020-03-19
TWI753983B (zh) 2022-02-01
CN110169013A (zh) 2019-08-23
US20220398579A1 (en) 2022-12-15
JP2020514853A (ja) 2020-05-21
EP3387785B1 (en) 2019-02-20
HK1254560B (zh) 2020-03-27
US11087322B2 (en) 2021-08-10
CN110063041B (zh) 2022-08-05
WO2018116104A1 (en) 2018-06-28
JP7039594B2 (ja) 2022-03-22
EP3387787B1 (en) 2019-03-20
WO2018116106A1 (en) 2018-06-28
EP3387785A1 (en) 2018-10-17

Similar Documents

Publication Publication Date Title
CN110169013B (zh) 在区块链上实现复杂功能性的计算机实现的系统和方法
US11941381B2 (en) Method for compiling from a high-level scripting language to a blockchain native scripting language
EP3676778B1 (en) Constraints on inputs of an unlocking transaction in a blockchain
CN109314642B (zh) 用区块链实施的用于安全投票和分配的计数系统和方法
KR102528473B1 (ko) 로그 데이터의 비식별화 방법, 시스템 및 컴퓨터 프로그램

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
GR01 Patent grant
GR01 Patent grant