CN110869905A - 用于将高级脚本语言编译为区块链固有脚本语言的方法 - Google Patents

用于将高级脚本语言编译为区块链固有脚本语言的方法 Download PDF

Info

Publication number
CN110869905A
CN110869905A CN201880045587.4A CN201880045587A CN110869905A CN 110869905 A CN110869905 A CN 110869905A CN 201880045587 A CN201880045587 A CN 201880045587A CN 110869905 A CN110869905 A CN 110869905A
Authority
CN
China
Prior art keywords
scripting language
blockchain
script
primitives
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.)
Pending
Application number
CN201880045587.4A
Other languages
English (en)
Inventor
C·S·赖特
S·萨瓦纳
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 GBGB1710971.1A external-priority patent/GB201710971D0/en
Priority claimed from GBGB1710967.9A external-priority patent/GB201710967D0/en
Priority claimed from GBGB1710974.5A external-priority patent/GB201710974D0/en
Application filed by Nchain Holdings Ltd filed Critical Nchain Holdings Ltd
Publication of CN110869905A publication Critical patent/CN110869905A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • G06F8/452Loops
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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/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/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/3297Cryptographic 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 time stamps, e.g. generation of time stamps
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1458Denial of Service

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Power Engineering (AREA)
  • Devices For Executing Special Programs (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Document Processing Apparatus (AREA)

Abstract

本发明提供了一种使得能够容易地且以有效的方式将附加功能插入到区块链脚本中的方法和系统。根据一个实施方式,本发明提供了一种由区块链实现的方法,该方法包括以下步骤:布置多个或一系列的脚本语言原语,以在执行时提供高级脚本语言原语的功能,其中该脚本语言与区块链协议相关联;将多个脚本语言原语至少一次插入脚本中;并将脚本插入到区块链交易(Tx)中。高级脚本语言原语可以执行例如算术操作,例如乘法或除法。脚本语言原语可以称为操作码、词或命令,并且是脚本语言固有的。脚本语言可以是Script,且区块链协议可以是某个版本的比特币协议。

Description

用于将高级脚本语言编译为区块链固有脚本语言的方法
技术领域
本发明总体上涉及分布式账本技术,并且更具体地涉及诸如比特币区块链或任何其他区块链/加密货币协议的变体的区块链技术。本发明特别适合于但不限于用于控制布置区块链交易(Tx)中的脚本被执行的方式,并因此控制经由区块链网络来转移数字资源的控制或所有权的方式。
背景技术
在本文中,我们使用术语“区块链”来涵盖所有形式的基于计算机的电子分布式账本技术。这些包括基于共识的区块链和交易链技术、经许可和未经许可的账本、共享账本、侧链及其变体。区块链技术最广为人知的应用是比特币账本,尽管已经提出并开发了其他区块链实现方式。尽管出于方便和说明的目的在本文中可以提及比特币,但是应当注意,本发明不限于与比特币区块链的变体一起使用,并且替代的区块链实现方式和协议落入本发明的范围内。
区块链是一种点对点的电子账本,其被实现为基于计算机的去中心化的分布式系统,该系统由区块组成,而区块又由交易组成。每个交易是一个数据结构,该数据结构对区块链系统中的参与者之间的数字资产的控制转移进行编码,并包括至少一个输入和至少一个输出。每个区块包含前一个区块的散列,以致于这些区块变为链接在一起,以创建自区块链开始以来就已经写入区块链的所有交易的永久、不可更改的记录。交易包含嵌入其输入和输出中称为脚本的小程序,它们指定如何以及通过谁来访问交易的输出。在比特币平台上,这些脚本是使用称为Script的基于堆栈的脚本语言来编写的。
为了将交易写入区块链,必须对其进行“验证”。网络节点(矿工)进行工作以确保每个交易都有效,而无效交易从网络中被拒绝。安装在节点上的软件客户端通过执行其锁定和解锁脚本,来对未耗用的交易(UTXO)进行该验证工作。如果锁定和解锁脚本的执行评估为TRUE,则交易有效并且被写入区块链。因此,为了将交易写入区块链,该交易必须i)由接收交易的第一节点来验证-如果交易被验证,则节点将其中继到网络中的其他节点;ii)被加入由矿工建造的新区块;iii)被挖掘,即加入过去交易的公共账本。
虽然区块链技术最广为人知的地方在于加密货币实现方式的使用,但是数字企业家已经开始探索比特币所基于的加密安全系统以及可以存储在区块链上以实现新系统的数据这两者的使用。如果区块链可用于并不限于加密货币领域的自动化任务和过程,这将是非常有利的,从而扩展了区块链实现的技术的适用性。这样的解决方案将能够利用区块链的好处(例如,事件的永久性、防篡改证明记录,分布式处理等),同时在其应用中更通用。
然而,为了增加这种技术的功能,需要解决当前存在的一些技术限制。例如,在一种或多种比特币协议中,程序员在使用Script编写程序时可能无法使用某些操作符。与安全相关的担忧导致协议原始版本中提供的某些Script操作码被比特币社区禁用。这些包括用于执行某些算术操作(例如乘法和除法)的操作符。因此,当前,在某些协议中,尚无用于在脚本中执行此类操作的固有机制,这导致了脚本代码当前可以实现的功能受到限制。任何包含禁用操作码的脚本都将失败并中止。这导致对在这样的基础区块链协议上实现的技术的功能的限制。当期望的实现方式需要使用基础协议中未提供的功能时,就会出现技术挑战。更改协议可能并不总是合乎期望或可行的。同时,此类区块链平台在功能上仍然受到限制。
因此,尽管仍然希望保持区块链脚本语言的安全性和完整性,也需要提供这样一种解决方案,该解决方案为脚本程序员提供更多的编程能力,并增加了该语言的通用性、可用性和适用性。这样的解决方案将提供改进的区块链网络。由此可以带来许多益处,包括但不限于:
·使得复杂的区块链相关的转移的自动化成为可能;
·控制记录到区块链上的元数据流;
·扩展区块链实现的技术的功能和应用
发明内容
本文提供了这种解决方案的示例。
根据本发明,提供了如所附权利要求中限定的系统和/或方法。
本发明的实施方式可以提供一种区块链实现的方法/系统。本发明可以是控制方法/系统。它可以被布置为控制嵌入在区块链交易(Tx)中的脚本的执行,和/或输出是否被解锁,和/或控制资源(例如加密货币的一部分)从一个实体经由交易转移到另一个实体。
区块链可以与协议和脚本语言相关联。脚本语言可以是基于堆栈的语言。脚本语言可能不允许复杂控制流机制、比如循环和/或跳转递归,在这一意义上来说,脚本语言在功能上受限。这可以是比特币脚本语言、Script或其他。
本发明的实施方式可以提供一种用于模拟或实现区块链脚本中的操作的功能的机制。该操作可以是不能得到与区块链协议相关联的脚本语言固有地支持的操作。其可能是禁用的操作。可以将其称为高级操作。相对于区块链脚本语言的词集(操作码(opcode)、命令、指令或功能)而言,它可以是高级的。高级操作可以是在某层次抽象而发挥功能的操作,该层次抽象从语言固有的、原语操作或操作码中被移除。高级操作可以是诸如乘法和除法的算术操作。这样做的优点是,本发明可以用来方便地编写包含该功能的脚本,而无需修改脚本语言或区块链协议。因此,本发明提供了一种改进的区块链系统,其功能更加复杂,使得能够在区块链上执行功能更多样化的应用,并使得能够更轻松快速地实现应用的编程,同时减少了错误。因此,结果是一个更加通用、功能强大且有用的区块链。这又使得可以构建更多由区块链实现的技术。
另外,或作为替代,该方法可以包括步骤:
布置多个(区块链)脚本语言原语,以在执行时提供高级脚本语言原语的功能;脚本语言可以与区块链协议相关联;
将多个脚本语言原语至少一次插入脚本中;和/或
将脚本插入到区块链交易(Tx)中。
另外,或作为替代,根据本发明的方法可以包括:
存储已被布置和/或选择以执行高级脚本语言操作符的功能的多个区块链操作码(原语);
从存储中检索多个操作码;
将所述多个操作码插入到区块链交易中的脚本中。
多个操作码可以被描述为“块”。
该方法可以包括步骤:验证交易和/或将其提交给区块链网络。它可以包括执行交易的步骤。
多个脚本语言原语中的每一个也可以称为词、操作码、命令或功能。它们可以被称为“低级原语”。为了方便起见,术语“操作码”将用于“脚本语言原语”。可以从脚本语言的词集或指令集中选择多个操作码中的一个、一些或全部。它们可以是脚本语言固有的。
高级脚本语言原语可以是一组或一系列布置的操作码。可将他们故意布置为提供期望的抽象化的功能。为了便于参考,可将其称为“高级原语”。高级原语可以执行算术操作或数据复制、逻辑或程序(流)控制操作。其可以产生一种结果,该结果在堆栈上被保留在计算机的内存中。高级原语可以模拟或提供没有包括在语言的固有词集中或已被禁用的操作码的功能。在可以将其分解为语言固有的和/或执行功能上更简单操作的更基础或基本的操作这一意义上来说,高级原语可以是“高级的”。高级原语可以是在比操作码更抽象的水平上构成,从而执行简单操作或产生结果。
脚本语言可以是Script语言。区块链协议可以是比特币协议。然而,其他语言和协议可以落入本发明的范围内。脚本语言可以在功能上受到限制。术语“非图灵完整”在本文中可以与术语“功能上受限”互换使用。该语言不固有地支持一个或更多个控制流机制、比如循环和/或递归跳转,从这一意义上来说,该语言在功能上受限。
该方法可以进一步包括步骤:从脚本语言的词集或指令集中选择多个脚本语言原语中的一个、一些或全部。
该方法可以进一步包括以下步骤:将多个脚本语言原语保存和/或存储在基于计算机的存储资源中或基于计算机的存储资源上。基于计算机的存储资源可以是非易失性计算机存储器。该方法可以进一步包括以下步骤:在将其插入脚本之前,从基于计算机的存储资源中检索多个脚本语言原语。
该脚本可以是解锁脚本、锁定脚本或赎回脚本。
脚本与区块链交易的输入或输出相关联地插入到区块链交易(Tx)中。
该方法可以进一步包括以下步骤:从源接收输入或信号,并使用该输入或信号来控制将多个脚本语言原语插入到脚本中的次数。
该方法可以进一步包括步骤:将交易提交给区块链网络。
多个脚本语言原语被插入到模板脚本和/或模板交易(Tx)中。模板可以是脚本/交易的不完整版本。
本发明还提供一种计算机实现的系统。该系统可以被布置为执行上述方法的任何实施方式。关于本发明的一个或更多个方面描述的任何特征也可以适用于任何其他方面。关于该方法描述的任何特征也可以适用于对应的系统,反之亦然。
本发明还提供一种系统,包括:
处理器;以及
包括可执行指令的存储器,作为处理器的执行结果,该可执行指令使系统执行本文所述的计算机实现的方法的任何实施方式。
本发明还提供一种其上存储有可执行指令的非暂时性计算机可读存储介质,作为计算机系统的处理器的执行结果,该可执行指令使该计算机系统至少执行本文所述的计算机实现的方法的实施方式。
附图说明
通过在此描述的实施方式,本发明的这些和其他方面将变得明显,且将参考在此所述的实施方式阐述本发明的这些和其他方面。现在参考附图仅作为示例描述本发明的实施方式,在附图中:
图1示出了现有技术中已知的、如何在区块链上将交易链接在一起从而转移对某种加密货币的所有权的控制。
图2示出了根据本发明实施方式适于使用的且与示例性用例有关的控制交易。
图3示出了与区块链关联的示例网络。
具体实施方式
本发明提供了一种在区块链脚本中实现高级操作的功能的改进机制,即使区块链的相关联的协议的脚本语言没有针对高级操作提供固有操作码或其已被禁用。本发明利用了一系列该语言现有的低级操作码,并以创造性的方式将它们组合起来以实现所需的功能。选择和/或布置原语操作码的所选组合,以便提供期望的高级功能。为了方便和易于参考,所选择的固有操作码的组合可以被称为“高级操作符”。因此,术语“高级”可以用来表示可以将操作分解为更基础的或基本的操作,优选地该更基础的或基本的操作是脚本语言所固有的。多个操作码或块操作码与标签或标识符相关联,以便于引用、使用或调用。
组成高级操作符的代码部分可以预先定义或预先选择。在该上下文中,“预先”可以指在最终放置该代码部分的最终用途或应用之前。另外或作为替代,其可以指在执行或运行时间之前。该代码部分(或“块”)存储在基于计算机的资源比如非易失性存储器上。当出于特定目的需要脚本时,可以在一个或更多个所选位置访问、复制所存储的操作符并将其插入脚本中,以便在执行时提供期望的控制和功能。插入高级操作符的脚本可以是可从存储访问的模板。因此,可以以方便快捷的方式生成功能复杂的区块链交易,从而节省了编程时间、工作量并减少编码错误的可能性。通过减少错误的可能性,本发明提供了一种用于确保用于区块链交易的代码的质量的机制。这又减少了运行时脚本(以及交易)失败的次数。从这个意义上说,本发明提供了一种更有效和错误减少的解决方案,来执行区块链上的交易,并通过一个交易的输出至第二个交易的输入来执行从一方到另一方的转移。
在运行时,可以从源接收一个或更多个信号或输入,并且可以使用(一个或更多个)输入来影响或控制在脚本中使用高级操作符的次数。在某些实施方式中,从(一个或更多个)传感器接收(一个或更多个)输入。因此,可以生成脚本以使得响应于某些外部或环境因素来计算结果。
另一个优点是,无需以任何方式修改或更改现有脚本语言的设计、实现或部署;可以轻松提供禁用或未实现的原始操作符的功能,而不会破坏当前形式的区块链协议。
此后,我们提出根据本发明的实施方式的解决方案,其允许模拟高级乘法和除法操作符。这些实施方式包括基于脚本的操作序列,其提供操作符的期望功能和行为。该操作符提供了用于控制区块链实现的程序将如何执行的机制。由于这些程序被嵌入到区块链交易(Tx)的输入和输出中,因此它们提供了一种影响和控制交易的执行方式的机制,从而将对加密货币所有权的控制从一方转移到另一方。
示例-乘法:
在该实施方式中,我们提供了一种用于区块链脚本中的乘法的机制。这利用了如下知识,即乘法是使X和Y成为希望相乘的值。在以Script语言的语法编写时,乘法操作符变为:
Figure BDA0002358557060000071
Figure BDA0002358557060000081
执行以上操作的结果是乘积留在Alt堆栈中。
Figure BDA0002358557060000082
在上面的代码中,开头段的目的是在必要时交换操作数(operand),以确保需要执行的加法更少,例如2×3将需要更少的加法,以及3×2。这减少了工作量,并使整个代码在时间和计算量方面更加高效。“交换”段为:
Figure BDA0002358557060000083
以下代码的目的是提供一种计数器机制:
OP_1OP_ROT OP_DUP OP_TOALTSTACK OP_TOALTSTACK OP_2DUP OP_EQUAL
计数器的值可用于控制执行加法的次数。
在上面的示例中,虚线框中所示的代码是用于执行加法的代码。加法重复执行,如随后的虚线框所示,不过没有重复示出内容,以求简单和可读性。加法代码末尾的OP_EQUAL操作用于检查加法是否已经执行了足够的次数。
双线框中所示的代码起到“清理”堆栈并返回结果的作用。
工作实例-乘法
为了进一步说明该技术,我们现在提供使用2和3这两个操作数的工作示例。在以下示例中,示出了主堆栈和Alt堆栈的状态。左边的列是主堆栈,右边的列是Alt堆栈。
OP_2OP_3
OP_2DUP OP_GREATERTHAN
这使得堆栈的状态如下(注意:为简单明了起见,此处未示出重复内容):
Figure BDA0002358557060000091
如果顶部堆栈项为假,然后使用以下来执行代码的“主体”:
Figure BDA0002358557060000092
使用OP_ROT操作使前3项被旋转到左边。
Figure BDA0002358557060000093
Figure BDA0002358557060000101
示例-除法:
在第二个示例中,实施除法而不是乘法,使用以下知识:除法可通过重复减法来执行。提供了基于脚本的操作序列,该操作序列模拟除法操作符的行为。令X和Y是希望进行除法的值。除法操作符以Script语言的语法编写时变为:
Figure BDA0002358557060000102
Figure BDA0002358557060000111
以上的输出留在Alt堆栈上,是:
Figure BDA0002358557060000112
工作实例-除法在该工作实例中,我们用11除以3。
Figure BDA0002358557060000113
Figure BDA0002358557060000121
第二个工作实例-除法
在该第二个工作实例中,示出了方案如何处理被零除的情况,由于有限机器无法表示无穷大,被零除的情况会是计算实现中编码错误的源。在该示例中,逐步展示3除以0这一除法。
Figure BDA0002358557060000122
Figure BDA0002358557060000131
第三工作实例-除法
在该第三工作实例中,逐步展示0除以3。
Figure BDA0002358557060000132
示例性用例:区块链实现的控制系统
本发明提供了在区块链脚本中实现高级操作的技术,即使为此目的协议的语言不包括低级操作码。这提供了用于在区块链平台上实现方案的高度通用布置。
为了说明这一点,现在提出一种系统,该系统组合多个输入来调节其他装置的行为。例如,假设两个传感器提供以下输入:
(i)船甲板上液体集装箱的数目n
(ii)集装箱的重量,假设集装箱的重量ww完全相同。
在该简单示例中,装置是货船,其可以具有两种状态:
(i)货物停留在码头(状态1);和
(ii)货物离开港口(状态2)。最初,系统处于状态1
定义阈值条件Wt。货船甲板上携带的总重量W控制其行为·如果W>Wt,则系统处于状态2。
图2示出了提交到区块链的控制交易(Tx)。op_code Pro_MULT表示如上所述的高级算术操作(×)。传感器将值n和w提供给解锁脚本。因此,需要提交给锁定脚本的相应解锁脚本为:
<n><w><传感器1的签名><传感器2的签名>
区块链网络
现在参考图3,其以框图形式示出了与区块链相关联的示例性网络,该网络在本文中可以被称为区块链网络100,并且可以用于实现本发明。区块链网络100是一个点对点的开放成员网络,任何人可以加入其中,无需邀请或经过其他成员同意。运行区块链协议(区块链网络100在该协议下操作)的实例的分布式电子装置可以参与区块链网络100。这种分布式电子装置可称为节点102。区块链协议例如可以是比特币协议,或其他加密货币。
运行区块链协议且形成区块链网络100的节点102的电子装置可以是各种类型的装置,包括例如计算机(比如台式计算机、膝上型计算机、平板计算机)、服务器、诸如智能电话这样的移动装置、诸如智能手表这样的可穿戴计算机、或其他电子装置。
区块链网络100的节点102使用合适的通信技术相互耦接,所述通信技术可包括有线和无线通信技术。在许多情况下,区块链网络100至少部分地在因特网上实现,且一些节点102可位于地理上分散的位置处。
节点102维护区块链上所有交易的全局账本,其被分为区块,且每个区块包含链中前一个区块的散列。全局账本是分布式账本,且每个节点102可以存储全局账本的完整副本或部分副本。影响全局账本的节点102的交易由其他节点102验证,从而维护全局账本的有效性。实现和操作区块链网络(比如使用比特币协议的区块链网络)的细节为本领域技术人员所了解。
每个交易一般具有一个或更多个输入以及一个或更多个输出。嵌入输入和输出中的脚本指定了如何以及通过谁来访问交易的输出。交易的输出可以是作为交易的结果的值要被转移到的地址。该值然后作为未耗用的交易输出(UTXO)与该输出地址相关联。随后的交易然后可以将该地址引为输入,从而消费或分散该值。
节点102可完成从网络路由到钱包服务的许多不同功能,以维护稳健且安全的、去中心化的公共账本。“完整节点”包含区块链的完整且最新的副本,且因此可验证公共账本上的任何交易(耗用的或未耗用的)。“轻量级节点”(或SPV)维护区块链的子集,且可使用“简单支付验证”技术验证交易。轻量级节点仅下载区块的头部,而不下载每个区块内的交易。因此这些节点依赖于对等节点,来验证其交易。“挖掘节点”可以是完整节点或轻量级节点,负责验证交易并在区块链上创建新区块。“钱包节点”通常是轻量级节点,处理用户的钱包服务。节点102使用连接导向的协议彼此通信,该协议比如是TCP/IP(传输控制协议)。
应当注意,上述实施方式说明而不是限制本发明,并且本领域技术人员将能够设计许多替代实施方式而不会脱离由所附权利要求限定的本发明的范围。在权利要求中,括号内的任何附图标记均不应理解为限制权利要求。词汇“包括”(comprising,comprise)等不排除在任何权利要求或整个说明书中列出的元件或步骤之外还存在元件或步骤。在本说明书中,“包括”(comprises)指的是“包括(includes)或包括(consists of)”,且“包括”(comprising)指的是“包括”(including or consisting of)。元件的单数指称不排除该元件的复数指称,反之亦然。本发明可以通过包括若干不同元件的硬件以及通过适当编程的计算机来实现。在列举若干装置的设备权利要求中,这些装置中的若干个可以由一项且同一项硬件来实现。在互不相同的从属权利要求中记载某些措施这一事实并不意味着不能有利地使用这些措施的组合。

Claims (16)

1.一种区块链实现的方法,包括以下步骤:
布置多个脚本语言原语,以在执行时提供高级脚本语言原语的功能,其中所述脚本语言与区块链协议相关联;
将所述多个脚本语言原语至少一次插入脚本中;以及
将所述脚本插入到区块链交易(Tx)中。
2.根据权利要求1所述的方法,其中:
所述高级脚本语言原语执行算术操作。
3.根据权利要求1或2所述的方法,其中,所述脚本语言是Script语言和/或所述区块链协议是比特币协议。
4.根据前述权利要求中任一项所述的方法,还包括以下步骤:
从所述脚本语言的词集或指令集中选择所述多个脚本语言原语。
5.根据前述权利要求中任一项所述的方法,还包括以下步骤:
将所述多个脚本语言原语保存和/或存储在基于计算机的存储资源中或基于计算机的存储资源上。
6.根据前述权利要求中任一项所述的方法,还包括以下步骤:
在将所述多个脚本语言原语插入所述脚本之前,从基于计算机的存储资源中检索所述多个脚本语言原语。
7.根据前述权利要求中任一项所述的方法,其中,所述脚本是解锁脚本、锁定脚本或赎回脚本。
8.根据前述权利要求中任一项所述的方法,其中,所述脚本与所述区块链交易的输入或输出相关联地被插入到所述交易中。
9.根据前述权利要求中任一项所述的方法,还包括以下步骤:
从源接收输入或信号,并使用该输入或信号来控制将所述多个脚本语言原语插入脚本中的次数。
10.根据前述权利要求中任一项所述的方法,还包括以下步骤:
将所述交易提交到区块链网络。
11.根据前述权利要求中任一项所述的方法,其中所述多个脚本语言原语被插入模板脚本和/或模板交易(Tx)中。
12.根据前述权利要求中任一项所述的方法,其中,所述多个脚本语言原语与标签或标识符相关联。
13.根据前述权利要求中任一项所述的方法,其中,所述脚本语言在功能上受到限制。
14.一种计算机实现的系统,被布置为执行前述权利要求中任一项所述的方法。
15.一种计算机可读存储介质,包括计算机可执行指令,所述计算机可执行指令在被执行时将处理器配置为执行权利要求1至13中的任一项所述的方法。
16.一种电子设备,包括:
接口装置;
处理器,耦接至所述接口装置;
存储器,耦接至所述处理器,所述存储器上存储有计算机可执行指令,该计算机可执行指令在被执行时将处理器配置为执行权利要求1至13中任一项所述的方法。
CN201880045587.4A 2017-07-07 2018-07-05 用于将高级脚本语言编译为区块链固有脚本语言的方法 Pending CN110869905A (zh)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
IB2017054110 2017-07-07
GB1710971.1 2017-07-07
GBGB1710971.1A GB201710971D0 (en) 2017-07-07 2017-07-07 Computer-implemented system and method
GB1710967.9 2017-07-07
IBPCT/IB2017/054114 2017-07-07
GBGB1710967.9A GB201710967D0 (en) 2017-07-07 2017-07-07 Computer-implemented system and method
IB2017054113 2017-07-07
IBPCT/IB2017/054110 2017-07-07
IBPCT/IB2017/054113 2017-07-07
GBGB1710974.5A GB201710974D0 (en) 2017-07-07 2017-07-07 Computer-implemented system and method
IB2017054114 2017-07-07
GB1710974.5 2017-07-07
PCT/IB2018/054970 WO2019008532A1 (en) 2017-07-07 2018-07-05 METHOD FOR COMPILING HIGH-LEVEL SCRIPT LANGUAGE WITH BLOCK CHAIN NATIVE SCRIPT LANGUAGE

Publications (1)

Publication Number Publication Date
CN110869905A true CN110869905A (zh) 2020-03-06

Family

ID=63077923

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201880045587.4A Pending CN110869905A (zh) 2017-07-07 2018-07-05 用于将高级脚本语言编译为区块链固有脚本语言的方法
CN201880045599.7A Pending CN110869906A (zh) 2017-07-07 2018-07-05 用于控制区块链交易的所生成脚本的流执行的方法
CN201880045600.6A Pending CN110870249A (zh) 2017-07-07 2018-07-05 用于将高级语言代码编译为区块链平台上可执行的脚本的系统和方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN201880045599.7A Pending CN110869906A (zh) 2017-07-07 2018-07-05 用于控制区块链交易的所生成脚本的流执行的方法
CN201880045600.6A Pending CN110870249A (zh) 2017-07-07 2018-07-05 用于将高级语言代码编译为区块链平台上可执行的脚本的系统和方法

Country Status (8)

Country Link
US (6) US11307835B2 (zh)
EP (6) EP4300290A3 (zh)
JP (6) JP7317722B2 (zh)
KR (1) KR102608500B1 (zh)
CN (3) CN110869905A (zh)
SG (1) SG11201912227YA (zh)
WO (3) WO2019008532A1 (zh)
ZA (1) ZA201908552B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11307835B2 (en) 2017-07-07 2022-04-19 nChain Holdings Limited Method for controlling the flow execution of a generated script of a blockchain transaction
GB201811263D0 (en) * 2018-07-10 2018-08-29 Netmaster Solutions Ltd A method and system for managing digital using a blockchain
US10964145B2 (en) * 2018-08-24 2021-03-30 Sensormatic Electronics, LLC Access control system using blockchain ledger
CN111949315A (zh) * 2019-05-16 2020-11-17 富士通株式会社 用于区块链账本数据的管理装置和方法
US11657391B1 (en) 2019-05-24 2023-05-23 Hiro Systems Pbc System and method for invoking smart contracts
US10699269B1 (en) 2019-05-24 2020-06-30 Blockstack Pbc System and method for smart contract publishing
US11513815B1 (en) * 2019-05-24 2022-11-29 Hiro Systems Pbc Defining data storage within smart contracts
US10783082B2 (en) * 2019-08-30 2020-09-22 Alibaba Group Holding Limited Deploying a smart contract
JP7186928B2 (ja) * 2019-12-09 2022-12-09 エリス デジタル ホールディングス、エルエルシー ブロックチェーンによって統合された暗号難易度を基にした金融商品の電子取引及び決済システム
US11314729B2 (en) * 2020-02-20 2022-04-26 International Business Machines Corporation Multi-candidate data structure for transaction validation
US20220066746A1 (en) * 2020-08-31 2022-03-03 Jpmorgan Chase Bank, N.A. Systems and methods for graphical programming and deployment of distributed ledger applications
CN113031931A (zh) * 2021-03-04 2021-06-25 嘉兴丰鸟科技有限公司 一种基于脚本交叉编译的Python安全扩展方法
US11902426B2 (en) * 2021-06-26 2024-02-13 Ceremorphic, Inc. Efficient storage of blockchain in embedded device
KR102460351B1 (ko) * 2021-06-29 2022-10-31 주식회사 퓨처에셋파이넨셜 파일코인 채굴 생산성 향상 장치 및 방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터프로그램
GB2618052A (en) * 2021-12-07 2023-11-01 Nchain Licensing Ag Blockchain script engine
US11770263B1 (en) * 2022-12-06 2023-09-26 Citibank, N.A. Systems and methods for enforcing cryptographically secure actions in public, non-permissioned blockchains using bifurcated self-executing programs comprising shared digital signature requirements
US11658833B1 (en) 2022-12-06 2023-05-23 Citibank, N.A. Systems and methods for conducting cryptographically secure actions in public, non-permissioned blockchains using bifurcated self-executing programs

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102187314A (zh) * 2008-10-17 2011-09-14 微软公司 可视地建模、调试和执行面向资源的程序的交互式设计环境
US20130339841A1 (en) * 2012-06-14 2013-12-19 Open Text S.A. Systems and methods of a script generation engine
US20160330034A1 (en) * 2015-05-07 2016-11-10 Blockstream Corporation Transferring ledger assets between blockchains via pegged sidechains
WO2017007806A1 (en) * 2015-07-09 2017-01-12 Ouisa, LLC Systems and methods for trading, clearing and settling securities transactions using blockchain technology
CN106598549A (zh) * 2016-12-08 2017-04-26 天津米游科技有限公司 一种基于区块链的智能合约系统及实现方法
CN106778343A (zh) * 2016-12-12 2017-05-31 武汉优聘科技有限公司 一种基于区块链的涉及隐私数据的数据共享方法

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0185215B1 (en) 1984-11-21 1993-09-22 Harris Corporation Forth-like language microprocessor
JP3032031B2 (ja) * 1991-04-05 2000-04-10 株式会社東芝 ループ最適化方法及び装置
US5761652A (en) 1996-03-20 1998-06-02 International Business Machines Corporation Constructing balanced multidimensional range-based bitmap indices
US6760905B1 (en) 2000-09-21 2004-07-06 Curl Corporation Lazy compilation of template-generated classes in dynamic compilation execution environments
US7168059B2 (en) 2001-04-20 2007-01-23 Bryan Darrell Bowyer Graphical loop profile analysis
US6948160B2 (en) 2001-05-31 2005-09-20 Sun Microsystems, Inc. System and method for loop unrolling in a dynamic compiler
JP4490084B2 (ja) * 2003-12-03 2010-06-23 安川情報システム株式会社 プログラム開発システムにおけるプログラム作成方法
JP2006107339A (ja) * 2004-10-08 2006-04-20 Matsushita Electric Ind Co Ltd プログラム処理装置
JP2008534955A (ja) 2005-03-31 2008-08-28 ジョージタウン ユニバーシティ 質量分析法による有利サイロキシンおよび遊離トリヨードサイロニン分析
CN100487652C (zh) * 2005-04-02 2009-05-13 华为技术有限公司 脚本语言的自动机方法
JP5179822B2 (ja) * 2007-09-27 2013-04-10 株式会社日立ソリューションズ 携帯電話、携帯電話スクリプト開発・実行システム
US10466989B2 (en) 2011-09-02 2019-11-05 Microsoft Technology Licensing, Llc. Fast presentation of markup content having script code
CN102999370A (zh) * 2011-09-16 2013-03-27 腾讯科技(深圳)有限公司 脚本的执行方法及系统
US8997070B2 (en) * 2011-12-15 2015-03-31 Sap Se Extension mechanism for scripting language compiler
WO2014022326A1 (en) * 2012-07-31 2014-02-06 Microsoft Corporation Multilingual build integration for compiled applications
US8869122B2 (en) * 2012-08-30 2014-10-21 Sybase, Inc. Extensible executable modeling
US9152400B2 (en) * 2013-04-18 2015-10-06 Facebook, Inc. Eliminating redundant reference count operations in intermediate representation of script code
US9684499B2 (en) 2013-06-30 2017-06-20 Dropbox, Inc. Systems and methods for facilitating installation of software applications
KR102156371B1 (ko) 2013-11-27 2020-09-15 한국전자통신연구원 네이티브 빌드 기반의 임베디드 소프트웨어 개발 환경을 지원하기 위한 임베디드 소프트웨어 개발 도구 제공 방법 및 장치
EP3570502B1 (en) 2015-01-02 2021-08-04 Systech Corporation Control infrastructure
CN104484192B (zh) * 2015-01-07 2017-11-14 南威软件股份有限公司 一种复杂多分支结构代码自动生成的方法
US9892021B2 (en) * 2015-03-18 2018-02-13 Sap Se Injection of code modifications in a two session debug scripting environment
US9735958B2 (en) 2015-05-19 2017-08-15 Coinbase, Inc. Key ceremony of a security system forming part of a host computer for cryptographic transactions
US20160342977A1 (en) 2015-05-20 2016-11-24 Vennd.io Pty Ltd Device, method and system for virtual asset transactions
JP6547466B2 (ja) 2015-07-06 2019-07-24 富士通株式会社 コンパイラ装置、コンパイル方法およびコンパイラプログラム
EP3125489B1 (en) * 2015-07-31 2017-08-09 BRITISH TELECOMMUNICATIONS public limited company Mitigating blockchain attack
US10366204B2 (en) * 2015-08-03 2019-07-30 Change Healthcare Holdings, Llc System and method for decentralized autonomous healthcare economy platform
JP2018528461A (ja) 2015-08-07 2018-09-27 キネストラル・テクノロジーズ・インコーポレイテッドKinestral Technologies,Inc. エレクトロクロミック素子組立体
US9569206B1 (en) * 2015-09-29 2017-02-14 International Business Machines Corporation Creating optimized shortcuts
EP3420675B1 (en) 2016-02-23 2020-03-11 Nchain Holdings Limited Blockchain implemented counting system and method for use in secure voting and distribution
WO2017173399A1 (en) * 2016-03-31 2017-10-05 Clause, Inc. System and method for creating and executing data-driven legal contracts
US10720232B2 (en) 2016-04-13 2020-07-21 Accenture Global Solutions Limited Distributed healthcare records management
US10180900B2 (en) 2016-04-15 2019-01-15 Red Hat Israel, Ltd. Recordation of user interface events for script generation
AU2017257448B2 (en) 2016-04-29 2023-03-02 nChain Holdings Limited Implementing logic gate functionality using a blockchain
CN106296191A (zh) * 2016-08-13 2017-01-04 深圳市樊溪电子有限公司 一种区块链功耗感知的PoW共识机制
CN106598579B (zh) 2016-12-06 2020-12-25 北京果仁宝科技有限公司 区块链上集成动态类型编程语言方法和装置
US10871948B1 (en) 2017-03-30 2020-12-22 Wells Fargo Bank, N.A. Smart contract blockchain abstraction API
US10235280B2 (en) 2017-04-10 2019-03-19 Fmr Llc Automated script creation and source code generation for testing mobile devices
US10963790B2 (en) 2017-04-28 2021-03-30 SparkCognition, Inc. Pre-processing for data-driven model creation
US11307835B2 (en) 2017-07-07 2022-04-19 nChain Holdings Limited Method for controlling the flow execution of a generated script of a blockchain transaction

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102187314A (zh) * 2008-10-17 2011-09-14 微软公司 可视地建模、调试和执行面向资源的程序的交互式设计环境
US20130339841A1 (en) * 2012-06-14 2013-12-19 Open Text S.A. Systems and methods of a script generation engine
US20160330034A1 (en) * 2015-05-07 2016-11-10 Blockstream Corporation Transferring ledger assets between blockchains via pegged sidechains
WO2017007806A1 (en) * 2015-07-09 2017-01-12 Ouisa, LLC Systems and methods for trading, clearing and settling securities transactions using blockchain technology
CN106598549A (zh) * 2016-12-08 2017-04-26 天津米游科技有限公司 一种基于区块链的智能合约系统及实现方法
CN106778343A (zh) * 2016-12-12 2017-05-31 武汉优聘科技有限公司 一种基于区块链的涉及隐私数据的数据共享方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DAN ROBINSON: "Ivy - A Declarative Predicate Languagefor Smart Contracts", pages 1 - 6, Retrieved from the Internet <URL:《https://btctranscripts.com/blockchain-protocol-analysis-security-engineering/2017/2017-01-26-dan-robinson-ivy/》> *
佚名: "Announcing Playground Chain", Retrieved from the Internet <URL:《https://blog.chain.com/announcing-ivy-playground-395364675d0a》> *

Also Published As

Publication number Publication date
JP2023089127A (ja) 2023-06-27
US11307835B2 (en) 2022-04-19
EP4300290A3 (en) 2024-02-21
JP2023052782A (ja) 2023-04-12
EP3649547A1 (en) 2020-05-13
US20200174762A1 (en) 2020-06-04
WO2019008532A1 (en) 2019-01-10
JP2023100981A (ja) 2023-07-19
EP4328739A2 (en) 2024-02-28
WO2019008531A1 (en) 2019-01-10
US20220350579A1 (en) 2022-11-03
ZA201908552B (en) 2023-06-28
WO2019008533A1 (en) 2019-01-10
CN110869906A (zh) 2020-03-06
US20230246811A1 (en) 2023-08-03
US11941381B2 (en) 2024-03-26
EP3649548A1 (en) 2020-05-13
JP2020526810A (ja) 2020-08-31
US11416226B2 (en) 2022-08-16
EP4328739A3 (en) 2024-04-03
US11797278B2 (en) 2023-10-24
US20210081185A1 (en) 2021-03-18
EP4325351A3 (en) 2024-04-03
JP7476390B2 (ja) 2024-04-30
EP4325351A2 (en) 2024-02-21
JP2020526811A (ja) 2020-08-31
CN110870249A (zh) 2020-03-06
US20200195442A1 (en) 2020-06-18
US11868745B2 (en) 2024-01-09
EP3649759A1 (en) 2020-05-13
KR20200021993A (ko) 2020-03-02
JP7317722B2 (ja) 2023-07-31
JP7220678B2 (ja) 2023-02-10
SG11201912227YA (en) 2020-01-30
JP2020526814A (ja) 2020-08-31
US11922149B2 (en) 2024-03-05
EP4300290A2 (en) 2024-01-03
US20230057419A1 (en) 2023-02-23
KR102608500B1 (ko) 2023-12-04

Similar Documents

Publication Publication Date Title
US11941381B2 (en) Method for compiling from a high-level scripting language to a blockchain native scripting language
US11087322B2 (en) Computer-implemented systems and methods to enable complex functionality on a blockchain while preserving security-based restrictions on script size and opcode limits
TWI714483B (zh) 用於資料處理之系統及方法
CN112269836B (zh) 一种区块链智能合约生成与管理系统及其实现机制
WO2020112029A1 (en) System and method for facilitating participation in a blockchain environment
Chittoda Mastering Blockchain Programming with Solidity: Write production-ready smart contracts for Ethereum blockchain with Solidity
CN110807195A (zh) 一种智能合约的发布方法、发布平台装置及发布系统
Ahmad Integration of IoT devices via a blockchain-based decentralized application
Kok Hands-On Blockchain for Python Developers: Gain blockchain programming skills to build decentralized applications using Python

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