首页 / 专利库 / 银行与财务事项 / 数字货币 / 加密货币 / 比特币 / 用于将高级脚本语言编译为区块链固有脚本语言的方法

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

阅读:195发布:2020-05-14

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

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中任一项所述的方法。

说明书全文

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

技术领域

[0001] 本发明总体上涉及分布式账本技术,并且更具体地涉及诸如比特币区块链或任何其他区块链/加密货币协议的变体的区块链技术。本发明特别适合于但不限于用于控制布置区块链交易(Tx)中的脚本被执行的方式,并因此控制经由区块链网络来转移数字资源的控制或所有权的方式。

背景技术

[0002] 在本文中,我们使用术语“区块链”来涵盖所有形式的基于计算机的电子分布式账本技术。这些包括基于共识的区块链和交易链技术、经许可和未经许可的账本、共享账本、侧链及其变体。区块链技术最广为人知的应用是比特币账本,尽管已经提出并开发了其他区块链实现方式。尽管出于方便和说明的目的在本文中可以提及比特币,但是应当注意,本发明不限于与比特币区块链的变体一起使用,并且替代的区块链实现方式和协议落入本发明的范围内。
[0003] 区块链是一种点对点的电子账本,其被实现为基于计算机的去中心化的分布式系统,该系统由区块组成,而区块又由交易组成。每个交易是一个数据结构,该数据结构对区块链系统中的参与者之间的数字资产的控制转移进行编码,并包括至少一个输入和至少一个输出。每个区块包含前一个区块的散列,以致于这些区块变为链接在一起,以创建自区块链开始以来就已经写入区块链的所有交易的永久、不可更改的记录。交易包含嵌入其输入和输出中称为脚本的小程序,它们指定如何以及通过谁来访问交易的输出。在比特币平台上,这些脚本是使用称为Script的基于堆栈的脚本语言来编写的。
[0004] 为了将交易写入区块链,必须对其进行“验证”。网络节点(矿工)进行工作以确保每个交易都有效,而无效交易从网络中被拒绝。安装在节点上的软件客户端通过执行其定和解锁脚本,来对未耗用的交易(UTXO)进行该验证工作。如果锁定和解锁脚本的执行评估为TRUE,则交易有效并且被写入区块链。因此,为了将交易写入区块链,该交易必须i)由接收交易的第一节点来验证-如果交易被验证,则节点将其中继到网络中的其他节点;ii)被加入由矿工建造的新区块;iii)被挖掘,即加入过去交易的公共账本。
[0005] 虽然区块链技术最广为人知的地方在于加密货币实现方式的使用,但是数字企业家已经开始探索比特币所基于的加密安全系统以及可以存储在区块链上以实现新系统的数据这两者的使用。如果区块链可用于并不限于加密货币领域的自动化任务和过程,这将是非常有利的,从而扩展了区块链实现的技术的适用性。这样的解决方案将能够利用区块链的好处(例如,事件的永久性、防篡改证明记录,分布式处理等),同时在其应用中更通用。
[0006] 然而,为了增加这种技术的功能,需要解决当前存在的一些技术限制。例如,在一种或多种比特币协议中,程序员在使用Script编写程序时可能无法使用某些操作符。与安全相关的担忧导致协议原始版本中提供的某些Script操作码被比特币社区禁用。这些包括用于执行某些算术操作(例如乘法和除法)的操作符。因此,当前,在某些协议中,尚无用于在脚本中执行此类操作的固有机制,这导致了脚本代码当前可以实现的功能受到限制。任何包含禁用操作码的脚本都将失败并中止。这导致对在这样的基础区块链协议上实现的技术的功能的限制。当期望的实现方式需要使用基础协议中未提供的功能时,就会出现技术挑战。更改协议可能并不总是合乎期望或可行的。同时,此类区块链平台在功能上仍然受到限制。
[0007] 因此,尽管仍然希望保持区块链脚本语言的安全性和完整性,也需要提供这样一种解决方案,该解决方案为脚本程序员提供更多的编程能,并增加了该语言的通用性、可用性和适用性。这样的解决方案将提供改进的区块链网络。由此可以带来许多益处,包括但不限于:
[0008] ·使得复杂的区块链相关的转移的自动化成为可能;
[0009] ·控制记录到区块链上的元数据流;
[0010] ·扩展区块链实现的技术的功能和应用

发明内容

[0011] 本文提供了这种解决方案的示例。
[0012] 根据本发明,提供了如所附权利要求中限定的系统和/或方法。
[0013] 本发明的实施方式可以提供一种区块链实现的方法/系统。本发明可以是控制方法/系统。它可以被布置为控制嵌入在区块链交易(Tx)中的脚本的执行,和/或输出是否被解锁,和/或控制资源(例如加密货币的一部分)从一个实体经由交易转移到另一个实体。
[0014] 区块链可以与协议和脚本语言相关联。脚本语言可以是基于堆栈的语言。脚本语言可能不允许复杂控制流机制、比如循环和/或跳转递归,在这一意义上来说,脚本语言在功能上受限。这可以是比特币脚本语言、Script或其他。
[0015] 本发明的实施方式可以提供一种用于模拟或实现区块链脚本中的操作的功能的机制。该操作可以是不能得到与区块链协议相关联的脚本语言固有地支持的操作。其可能是禁用的操作。可以将其称为高级操作。相对于区块链脚本语言的词集(操作码(opcode)、命令、指令或功能)而言,它可以是高级的。高级操作可以是在某层次抽象而发挥功能的操作,该层次抽象从语言固有的、原语操作或操作码中被移除。高级操作可以是诸如乘法和除法的算术操作。这样做的优点是,本发明可以用来方便地编写包含该功能的脚本,而无需修改脚本语言或区块链协议。因此,本发明提供了一种改进的区块链系统,其功能更加复杂,使得能够在区块链上执行功能更多样化的应用,并使得能够更轻松快速地实现应用的编程,同时减少了错误。因此,结果是一个更加通用、功能强大且有用的区块链。这又使得可以构建更多由区块链实现的技术。
[0016] 另外,或作为替代,该方法可以包括步骤:
[0017] 布置多个(区块链)脚本语言原语,以在执行时提供高级脚本语言原语的功能;脚本语言可以与区块链协议相关联;
[0018] 将多个脚本语言原语至少一次插入脚本中;和/或
[0019] 将脚本插入到区块链交易(Tx)中。
[0020] 另外,或作为替代,根据本发明的方法可以包括:
[0021] 存储已被布置和/或选择以执行高级脚本语言操作符的功能的多个区块链操作码(原语);
[0022] 从存储中检索多个操作码;
[0023] 将所述多个操作码插入到区块链交易中的脚本中。
[0024] 多个操作码可以被描述为“块”。
[0025] 该方法可以包括步骤:验证交易和/或将其提交给区块链网络。它可以包括执行交易的步骤。
[0026] 多个脚本语言原语中的每一个也可以称为词、操作码、命令或功能。它们可以被称为“低级原语”。为了方便起见,术语“操作码”将用于“脚本语言原语”。可以从脚本语言的词集或指令集中选择多个操作码中的一个、一些或全部。它们可以是脚本语言固有的。
[0027] 高级脚本语言原语可以是一组或一系列布置的操作码。可将他们故意布置为提供期望的抽象化的功能。为了便于参考,可将其称为“高级原语”。高级原语可以执行算术操作或数据复制、逻辑或程序(流)控制操作。其可以产生一种结果,该结果在堆栈上被保留在计算机的内存中。高级原语可以模拟或提供没有包括在语言的固有词集中或已被禁用的操作码的功能。在可以将其分解为语言固有的和/或执行功能上更简单操作的更基础或基本的操作这一意义上来说,高级原语可以是“高级的”。高级原语可以是在比操作码更抽象的平上构成,从而执行简单操作或产生结果。
[0028] 脚本语言可以是Script语言。区块链协议可以是比特币协议。然而,其他语言和协议可以落入本发明的范围内。脚本语言可以在功能上受到限制。术语“非图灵完整”在本文中可以与术语“功能上受限”互换使用。该语言不固有地支持一个或更多个控制流机制、比如循环和/或递归跳转,从这一意义上来说,该语言在功能上受限。
[0029] 该方法可以进一步包括步骤:从脚本语言的词集或指令集中选择多个脚本语言原语中的一个、一些或全部。
[0030] 该方法可以进一步包括以下步骤:将多个脚本语言原语保存和/或存储在基于计算机的存储资源中或基于计算机的存储资源上。基于计算机的存储资源可以是非易失性计算机存储器。该方法可以进一步包括以下步骤:在将其插入脚本之前,从基于计算机的存储资源中检索多个脚本语言原语。
[0031] 该脚本可以是解锁脚本、锁定脚本或赎回脚本。
[0032] 脚本与区块链交易的输入或输出相关联地插入到区块链交易(Tx)中。
[0033] 该方法可以进一步包括以下步骤:从源接收输入或信号,并使用该输入或信号来控制将多个脚本语言原语插入到脚本中的次数。
[0034] 该方法可以进一步包括步骤:将交易提交给区块链网络。
[0035] 多个脚本语言原语被插入到模板脚本和/或模板交易(Tx)中。模板可以是脚本/交易的不完整版本。
[0036] 本发明还提供一种计算机实现的系统。该系统可以被布置为执行上述方法的任何实施方式。关于本发明的一个或更多个方面描述的任何特征也可以适用于任何其他方面。关于该方法描述的任何特征也可以适用于对应的系统,反之亦然。
[0037] 本发明还提供一种系统,包括:
[0038] 处理器;以及
[0039] 包括可执行指令的存储器,作为处理器的执行结果,该可执行指令使系统执行本文所述的计算机实现的方法的任何实施方式。
[0040] 本发明还提供一种其上存储有可执行指令的非暂时性计算机可读存储介质,作为计算机系统的处理器的执行结果,该可执行指令使该计算机系统至少执行本文所述的计算机实现的方法的实施方式。附图说明
[0041] 通过在此描述的实施方式,本发明的这些和其他方面将变得明显,且将参考在此所述的实施方式阐述本发明的这些和其他方面。现在参考附图仅作为示例描述本发明的实施方式,在附图中:
[0042] 图1示出了现有技术中已知的、如何在区块链上将交易链接在一起从而转移对某种加密货币的所有权的控制。
[0043] 图2示出了根据本发明实施方式适于使用的且与示例性用例有关的控制交易。
[0044] 图3示出了与区块链关联的示例网络。

具体实施方式

[0045] 本发明提供了一种在区块链脚本中实现高级操作的功能的改进机制,即使区块链的相关联的协议的脚本语言没有针对高级操作提供固有操作码或其已被禁用。本发明利用了一系列该语言现有的低级操作码,并以创造性的方式将它们组合起来以实现所需的功能。选择和/或布置原语操作码的所选组合,以便提供期望的高级功能。为了方便和易于参考,所选择的固有操作码的组合可以被称为“高级操作符”。因此,术语“高级”可以用来表示可以将操作分解为更基础的或基本的操作,优选地该更基础的或基本的操作是脚本语言所固有的。多个操作码或块操作码与标签或标识符相关联,以便于引用、使用或调用。
[0046] 组成高级操作符的代码部分可以预先定义或预先选择。在该上下文中,“预先”可以指在最终放置该代码部分的最终用途或应用之前。另外或作为替代,其可以指在执行或运行时间之前。该代码部分(或“块”)存储在基于计算机的资源比如非易失性存储器上。当出于特定目的需要脚本时,可以在一个或更多个所选位置访问、复制所存储的操作符并将其插入脚本中,以便在执行时提供期望的控制和功能。插入高级操作符的脚本可以是可从存储访问的模板。因此,可以以方便快捷的方式生成功能复杂的区块链交易,从而节省了编程时间、工作量并减少编码错误的可能性。通过减少错误的可能性,本发明提供了一种用于确保用于区块链交易的代码的质量的机制。这又减少了运行时脚本(以及交易)失败的次数。从这个意义上说,本发明提供了一种更有效和错误减少的解决方案,来执行区块链上的交易,并通过一个交易的输出至第二个交易的输入来执行从一方到另一方的转移。
[0047] 在运行时,可以从源接收一个或更多个信号或输入,并且可以使用(一个或更多个)输入来影响或控制在脚本中使用高级操作符的次数。在某些实施方式中,从(一个或更多个)传感器接收(一个或更多个)输入。因此,可以生成脚本以使得响应于某些外部或环境因素来计算结果。
[0048] 另一个优点是,无需以任何方式修改或更改现有脚本语言的设计、实现或部署;可以轻松提供禁用或未实现的原始操作符的功能,而不会破坏当前形式的区块链协议。
[0049] 此后,我们提出根据本发明的实施方式的解决方案,其允许模拟高级乘法和除法操作符。这些实施方式包括基于脚本的操作序列,其提供操作符的期望功能和行为。该操作符提供了用于控制区块链实现的程序将如何执行的机制。由于这些程序被嵌入到区块链交易(Tx)的输入和输出中,因此它们提供了一种影响和控制交易的执行方式的机制,从而将对加密货币所有权的控制从一方转移到另一方。
[0050] 示例-乘法:
[0051] 在该实施方式中,我们提供了一种用于区块链脚本中的乘法的机制。这利用了如下知识,即乘法是使X和Y成为希望相乘的值。在以Script语言的语法编写时,乘法操作符变为:
[0052]
[0053]
[0054] 执行以上操作的结果是乘积留在Alt堆栈中。
[0055]
[0056] 在上面的代码中,开头段的目的是在必要时交换操作数(operand),以确保需要执行的加法更少,例如2×3将需要更少的加法,以及3×2。这减少了工作量,并使整个代码在时间和计算量方面更加高效。“交换”段为:
[0057]
[0058] 以下代码的目的是提供一种计数器机制:
[0059] OP_1OP_ROT OP_DUP OP_TOALTSTACK OP_TOALTSTACK OP_2DUP OP_EQUAL[0060] 计数器的值可用于控制执行加法的次数。
[0061] 在上面的示例中,虚线框中所示的代码是用于执行加法的代码。加法重复执行,如随后的虚线框所示,不过没有重复示出内容,以求简单和可读性。加法代码末尾的OP_EQUAL操作用于检查加法是否已经执行了足够的次数。
[0062] 双线框中所示的代码起到“清理”堆栈并返回结果的作用。
[0063] 工作实例-乘法
[0064] 为了进一步说明该技术,我们现在提供使用2和3这两个操作数的工作示例。在以下示例中,示出了主堆栈和Alt堆栈的状态。左边的列是主堆栈,右边的列是Alt堆栈。
[0065] OP_2OP_3
[0066] OP_2DUP OP_GREATERTHAN
[0067] 这使得堆栈的状态如下(注意:为简单明了起见,此处未示出重复内容):
[0068]
[0069] 如果顶部堆栈项为假,然后使用以下来执行代码的“主体”:
[0070]
[0071] 使用OP_ROT操作使前3项被旋转到左边。
[0072]
[0073]
[0074] 示例-除法:
[0075] 在第二个示例中,实施除法而不是乘法,使用以下知识:除法可通过重复减法来执行。提供了基于脚本的操作序列,该操作序列模拟除法操作符的行为。令X和Y是希望进行除法的值。除法操作符以Script语言的语法编写时变为:
[0076]
[0077]
[0078] 以上的输出留在Alt堆栈上,是:
[0079]
[0080] 工作实例-除法在该工作实例中,我们用11除以3。
[0081]
[0082]
[0083] 第二个工作实例-除法
[0084] 在该第二个工作实例中,示出了方案如何处理被零除的情况,由于有限机器无法表示无穷大,被零除的情况会是计算实现中编码错误的源。在该示例中,逐步展示3除以0这一除法。
[0085]
[0086]
[0087] 第三工作实例-除法
[0088] 在该第三工作实例中,逐步展示0除以3。
[0089]
[0090] 示例性用例:区块链实现的控制系统
[0091] 本发明提供了在区块链脚本中实现高级操作的技术,即使为此目的协议的语言不包括低级操作码。这提供了用于在区块链平台上实现方案的高度通用布置。
[0092] 为了说明这一点,现在提出一种系统,该系统组合多个输入来调节其他装置的行为。例如,假设两个传感器提供以下输入:
[0093] (i)船甲板上液体集装箱的数目n
[0094] (ii)集装箱的重量,假设集装箱的重量ww完全相同。
[0095] 在该简单示例中,装置是货船,其可以具有两种状态:
[0096] (i)货物停留在码头(状态1);和
[0097] (ii)货物离开港口(状态2)。最初,系统处于状态1。
[0098] 定义阈值条件Wt。货船甲板上携带的总重量W控制其行为·如果W>Wt,则系统处于状态2。
[0099] 图2示出了提交到区块链的控制交易(Tx)。op_code Pro_MULT表示如上所述的高级算术操作(×)。传感器将值n和w提供给解锁脚本。因此,需要提交给锁定脚本的相应解锁脚本为:
[0100]<传感器1的签名><传感器2的签名>
[0101] 区块链网络
[0102] 现在参考图3,其以框图形式示出了与区块链相关联的示例性网络,该网络在本文中可以被称为区块链网络100,并且可以用于实现本发明。区块链网络100是一个点对点的开放成员网络,任何人可以加入其中,无需邀请或经过其他成员同意。运行区块链协议(区块链网络100在该协议下操作)的实例的分布式电子装置可以参与区块链网络100。这种分布式电子装置可称为节点102。区块链协议例如可以是比特币协议,或其他加密货币。
[0103] 运行区块链协议且形成区块链网络100的节点102的电子装置可以是各种类型的装置,包括例如计算机(比如台式计算机、膝上型计算机、平板计算机)、服务器、诸如智能电话这样的移动装置、诸如智能手表这样的可穿戴计算机、或其他电子装置。
[0104] 区块链网络100的节点102使用合适的通信技术相互耦接,所述通信技术可包括有线和无线通信技术。在许多情况下,区块链网络100至少部分地在因特网上实现,且一些节点102可位于地理上分散的位置处。
[0105] 节点102维护区块链上所有交易的全局账本,其被分为区块,且每个区块包含链中前一个区块的散列。全局账本是分布式账本,且每个节点102可以存储全局账本的完整副本或部分副本。影响全局账本的节点102的交易由其他节点102验证,从而维护全局账本的有效性。实现和操作区块链网络(比如使用比特币协议的区块链网络)的细节为本领域技术人员所了解。
[0106] 每个交易一般具有一个或更多个输入以及一个或更多个输出。嵌入输入和输出中的脚本指定了如何以及通过谁来访问交易的输出。交易的输出可以是作为交易的结果的值要被转移到的地址。该值然后作为未耗用的交易输出(UTXO)与该输出地址相关联。随后的交易然后可以将该地址引为输入,从而消费或分散该值。
[0107] 节点102可完成从网络路由到钱包服务的许多不同功能,以维护稳健且安全的、去中心化的公共账本。“完整节点”包含区块链的完整且最新的副本,且因此可验证公共账本上的任何交易(耗用的或未耗用的)。“轻量级节点”(或SPV)维护区块链的子集,且可使用“简单支付验证”技术验证交易。轻量级节点仅下载区块的头部,而不下载每个区块内的交易。因此这些节点依赖于对等节点,来验证其交易。“挖掘节点”可以是完整节点或轻量级节点,负责验证交易并在区块链上创建新区块。“钱包节点”通常是轻量级节点,处理用户的钱包服务。节点102使用连接导向的协议彼此通信,该协议比如是TCP/IP(传输控制协议)。
[0108] 应当注意,上述实施方式说明而不是限制本发明,并且本领域技术人员将能够设计许多替代实施方式而不会脱离由所附权利要求限定的本发明的范围。在权利要求中,括号内的任何附图标记均不应理解为限制权利要求。词汇“包括”(comprising,comprise)等不排除在任何权利要求或整个说明书中列出的元件或步骤之外还存在元件或步骤。在本说明书中,“包括”(comprises)指的是“包括(includes)或包括(consists of)”,且“包括”(comprising)指的是“包括”(including or consisting of)。元件的单数指称不排除该元件的复数指称,反之亦然。本发明可以通过包括若干不同元件的硬件以及通过适当编程的计算机来实现。在列举若干装置的设备权利要求中,这些装置中的若干个可以由一项且同一项硬件来实现。在互不相同的从属权利要求中记载某些措施这一事实并不意味着不能有利地使用这些措施的组合。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈