本发明一般涉及用于自动化执行基于计算机的过程计算机协议的系统和协议,更特别地涉及条件控制过程(诸如例如与合约有关的那些)的验证、强制实施和/或执行。然而,本发明不限于与合约有关的使用。本发明还涉及区块链技术,并且可以用于以智能合约获益。
背景技术:
1、长期以来,人们一直希望使用计算机来自动化和控制任务和进程的执行。例如,在执行各方(例如,与金融协议有关的各方)之间的协定方面尤其如此。自从认识到合约的本质的电子版本可以更好地由计算机定义并随后执行和强制实施,智能合约一直是具有学术研究和实际意义的课题。现代合约管理的一个关键问题是,它往往是特设的(ad-hoc),其中合约的本地存储和副本需手动维护。这些副本可能会彼此不同步,并要求其各自存储和维护。这是低效的、并且会引起与安全性、成本有关的问题。这些问题可以至少部分地通过自动化执行机器可读和可执行文件(在本领域中有时被称为“智能合约”)来解决。这种自动化解决方案还有助于最大限度地减少由自然语言和法律术语引起的可能的歧义和解释。因此,如果合约是自动化的,则可以以更低成本、更高效且可靠的方式执行合约。
2、在文献中已提出的不同方法中,已经表明确定性有限自动机(dfa),也被称为确定性有限状态机,具有足够丰富的结构来代表大范围的(如果不是全部2/33的话)可想象的金融协议以及其它类型的合约。有限状态机和dfa的概念在计算科学中是众所周知的。dfa是被设想为抽象机的计算数学模型,其可以处于有限状态集合中的一个,并且当触发事件或条件发生时可以从一个状态改变到另一状态(转换)。它的计算能力高于组合逻辑的计算能力,但低于堆栈机器的计算能力。
3、最近还就区块链技术研究了合约的自动化执行。一个实例是cn 105893042a,其讨论了区块链作为与在执行智能合约期间发生的状态变化相关的数据的安全存储设施的使用。然而,区块链技术、交易输出及其相关脚本可以以更精密和技术复杂的方式使用以提供更智能的行为,如本文所讨论。
4、区块链是计算机实施的、去中心化的、分布式点对点计算机系统,其由不可改变的块构成,而这些块又由交易(transaction)构成。它涉及基于共识的协议。每个块含有前一个块的哈希,使得块被链接在一起,以创建自其开始以来已写入到区块链的防篡改和永久记录的所有交易。这些块可以被公开地查看,但一旦它们成为区块链的一部分就不能被更改或删除,因为更改会导致哈希的改变。
5、交易含有嵌入其输入和输出中的被称为脚本的小程序,其指定可以如何以及由谁来访问交易的输出。每个未花费的交易(被称为utxo)都可以作为新交易的输入而被花费,因此链随时间的推移而增长。每个输出都有一个相关的货币数量,只要它符合输出的锁定脚本中指定的要求,就可以将其花费于网络上的地址。地址是加密非对称密钥对的公钥。一些输出(例如支付到公钥哈希(简称p2pkh)输出)是直接将其值支付给地址(公钥)的输出,而一些交易(例如,支付到脚本哈希(简称p2sh)交易)中的输出与含有第二脚本的哈希的公钥脚本(也称为解锁脚本)相关联,所述第二脚本即为接收者必须在后续交易中连同其签名一起提供以便花费输出的赎回脚本。
6、应当注意,本发明不限于与特定区块链一起使用,并且替代的区块链实施方式也落入本发明的范围内。
7、被称为“智能合约”的计算机协议已经开始引起关注,因为它们可以部分或全面地实现合约的自动化强制实施或执行。区块链实施的智能合约可以提供诸3/33
8、多益处,例如增强的安全性、防篡改和永久性事件的公共记录以及降低的交易成本。
9、因此,希望提供一种解决方案,其提供过程(例如,合约)的自动化所带来的益处以及将区块链用于该自动化的益处。
技术实现思路
1、现在已经设计出此改进的解决方案。本发明由所附权利要求限定。
2、根据本发明,可以提供一种区块链实施的方法/系统。这可以被描述为一种用于自动化执行和控制技术过程的方法/系统。本发明可以提供一种技术创新,其经由在区块链的基础结构上的有限状态机或dfa的实施或实际体现来促进过程的自动化执行。可以定义和确定机器的状态。可以存储每个状态转换的条件或触发条件。在执行过程时,可以将执行的状态记录在永久性区块链账本上。
3、区块链交易可以具备代理或参与者使机器从一个状态移动到另一状态的功能。每个状态转换可以表示或对应于过程中的步骤。当dfa定义合约时,本发明可以提供一种自动执行和强制实施不同缔约方的承诺以及其它条款和规定的机制。
4、另外地或可替代地,本发明可以被描述为一种使用区块链来控制正在区块链外执行的计算机实施的过程的方法/解决方案。因此,它可以包括基于计算机系统的交互,所述系统在其架构和协议方面是非常不同的。可以根据本发明的该方面使用上述特征中的一个或多个。
5、本发明的一个或多个实施例可以提供一种在区块链上或与区块链一起实施(体现或实现)dfa的方法。dfa可以是基于软件的dfa。另外地或可替代地,它可以是一种被布置成能够确定区块链实施的dfa的状态的方法。这可以是当前状态。所述方法可以实现动态(在运行时)确定dfa的状态。因此,本发明的一个或多个方面可以提供一种用于以更准确、复杂且智能的方式在区块链上实施dfa的机制,而不仅仅是用作用于记录关于已经发生的事件的数据的安全存储设施。
6、它可以包括以下步骤:将区块链交易(tx1)的未花费的输出(utxo1)的4/33
7、锁定脚本的一部分与dfa的给定状态相关联。锁定脚本的所述部分可以是锁定脚本内的一部分数据。它可以是一部分元数据(metadata)。它可以是识别符(identifier)、标记(label)或标签(tag)。前述的dfa的给定状态可以是dfa已经处于和/或当前处于执行中的给定点的状态。
8、因此,本发明可以在区块链上使用未花费的交易输出(utxo)来记录和识别dfa已经处于和/或当前处于执行中的给定点的状态。
9、所述方法可以包括以下步骤:
10、使用另一交易(tx2)以通过花费交易(tx1)的输出(utxo1)来使dfa从所述状态转换到另一状态。所述另一状态可以与在另一交易的未花费的输出(utxo2)的锁定脚本内提供的一部分数据相关联。因此,花费utxo可使dfa状态的改变记录或体现在区块链中。
11、所述方法可以包括以下步骤:
12、使用一部分代码来实施或表示至少一个状态转换触发条件(trigger),当被执行时,所述状态转换触发条件使另一交易(tx2)花费所述交易(tx1)的所述输出(utxo1)并因此将所述dfa移动到另一状态。
13、所述部分代码可以包括机器可测试条件,所述机器可测试条件基于输入信号提供布尔(boolean)结果。输入信号可以在运行时确定,并且可以由所述部分代码使用以确定是否应花费所述未花费的输出(utxo1)以便将dfa移动到另一状态。
14、未花费的输出(utxo1)中的所述部分数据可以在锁定脚本中提供。
15、所述部分数据可以是标签、识别符、标记或一部分元数据。
16、dfa可以是机器可执行智能合约的模型。
17、未花费的输出(utxo1)可以包括锁定脚本,所述锁定脚本包括谜题哈希,其解决方案必须由另一交易的输入提供,以便花费所述输出(utxo1)并将dfa转换到另一状态。
18、未花费的输出(utxo1)可以包括锁定脚本,所述锁定脚本包括赎回脚本哈希,其必须由另一交易的输入提供,以便花费所述输出(utxo1)并将dfa转换到另一状态。赎回脚本可以包括加密密钥。
19、5/33
20、所述方法可以包括以下步骤:使用一个或多个计算代理来执行上文或下文描述的任何特征。
21、本发明还提供了一种用于实施上述任何实施例的方法的系统。所述系统可以包括:
22、区块链平台;
23、至少一个计算代理,其用于经由所述区块链实施所述dfa。
24、另外地或可替代地,所述方法可以包括以下步骤:
25、使用至少一个输入信号来执行至少一个条件,并且基于所述条件的执行结果来根据dfa的状态转换表执行动作。
26、所述动作的执行是可从区块链账本的状态识别或检测的。这可以通过查看/
27、分析一个或多个区块链交易的输出来实现。如果交易涉及dfa和/或dfa涉及的合约,则可以检查输出以确定输出是否已经花费。dfa的状态可以从输出仍然未花费的事实中辨别出来。可以通过查阅已经针对dfa设计的状态转换表看出这一点。它可以是在执行所述方法/系统之前已经设计的。
28、可以使用区块链上的交易(tx)来执行动作。所述动作可以从区块链上的至少一个交易的输出和/或输入识别。
29、所述方法可以包括以下步骤:分析区块链的状态,以基于是否已经执行了动作来确定dfa的当前状态。
30、dfa可以表示或模拟合约的执行。合约可以是机器可执行的智能合约。
31、所述至少一个输入信号可以是由人类或非人类来源生成和/或提供的信号或值。例如,它可以由在其上执行所述方法的计算机生成,例如从系统时钟派生的时间或日期。它可以从计算机外部的来源接收,例如从远程传感器或远程计算资源接收。
32、所述至少一个输入信号可以提供dfa从一个状态转换到另一状态的触发条件,或者可以使触发条件“激发”或被激活,从而引起后续动作。
33、所述方法可以包括以下步骤:确定dfa的状态转换表。状态转换表可以在软件中编码。所述软件可以包括与给定输入信号和它们触发的状态转换和/或机器可执行动作有关的指令。
34、6/33
35、所述方法可以包括以下步骤:将区块链交易(tx1)的未花费的输出(utxo1)的锁定脚本(中的数据)的一部分与dfa的给定状态相关联。所述方法可以包括以下步骤:使用另一交易(tx2)以通过花费交易(tx1)的输出(utxo1)来使dfa从所述状态转换到另一状态。所述另一状态可以与在另一交易的未花费的输出(utxo2)的锁定脚本内提供的一部分数据相关联。
36、所述方法可以包括以下步骤:使用包括所述至少一个计算机可执行条件的一部分代码来实施或表示至少一个状态转换触发条件,当被执行时,所述状态转换触发条件使另一交易(tx2)花费交易(tx1)的输出(utxo1)并因此将dfa移动到另一状态。所述部分代码可以包括基于输入信号提供布尔结果的条件。
37、所述方法可以包括以下步骤:维护特定状态已经被dfa占用的次数的记录。可以使用在循环或迭代构造内递增的指数(index)来维护记录。当满足预定条件时,循环或迭代构造可以终止。
38、可以使用分布式架构或系统来实施和/或执行软件实施的dfa。本发明还可以提供一种用于实施上文或下文描述的方法的任何实施例的系统。
39、本发明可以提供一种包括软件的软件实施的dfa,所述软件用于:
40、使用至少一个输入信号来执行至少一个条件,并且基于所述条件的执行结果来根据dfa的状态转换表执行动作;其中所述动作的执行是从区块链账本的状态可识别的。
41、本发明可以提供一种方法,其包括以下步骤:将区块链交易(tx1)的未花费的输出(utxo1)的锁定脚本的一部分与dfa的给定状态相关联。锁定脚本的所述部分可以是锁定脚本内的一部分数据。它可以是一部分元数据。它可以是识别符、标记或标签。因此,本发明可以在区块链上使用未花费的交易输出(utxo)来记录和识别dfa已经处于和/或当前处于执行中的给定点的状态。
42、所述方法可以包括以下步骤:使用另一交易(tx2)以通过花费交易(tx1)的输出(utxo1)来使dfa从所述状态转换到另一状态。所述另一状态可以与在另一交易的未花费的输出(utxo2)的锁定脚本内提供的一部分数据相关联。
43、因此,花费utxo可能使dfa状态的改变记录或体现在区块链中。
44、7/33
45、本发明可以基本上如下面关于说明书的“编纂技术”部分所述,但也可以并入来自文件的其它部分的特征并且并入本文描述的任何特征。
46、另外地或可替代地,本发明可以包括以下步骤:执行程序,所述程序用于监控和/或接收输入信号,并且响应于输入信号而生成包括未花费的输出(utxo)并且花费先前交易tx1的输出的区块链交易tx2。
47、先前交易tx1的输出可以包括锁定脚本,所述锁定脚本包括与dfa的第一状态相关联的识别符;交易tx2的未花费的输出(utxo)包括锁定脚本,所述锁定脚本包括与dfa的另一状态相关联的另一识别符。识别符可以是用于识别状态的任何形式或格式的标记、标签或方法。它可以包括一部分数据,例如元数据或加密密钥。
48、所述程序可以包括与dfa的第一状态相关联的识别符。所述程序可以用于生成和/或执行另一程序,所述另一程序包括与dfa的另一状态相关联并且包括在另一交易tx2的utxo中的另一识别符。
49、dfa可以模拟或表示(机器可执行的)智能合约的执行。智能合约可以由基于计算机的资源通过用参数填充模板合约来生成。因此,合约生成可以是自动化的。
50、所述方法可以包括以下步骤:确定dfa的状态转换表并将状态转换表存储在基于计算机的存储资源中。
51、所述程序可以用于通过以下方式响应于输入信号而生成区块链交易tx2:
52、使用区块链交易tx1的锁定脚本中的识别符来确定dfa的当前状态;
53、基于当前状态和输入信号,使用dfa的状态转换表来确定另一状态及其相关联的识别符。
54、所述方法可以包括以下步骤:将区块链交易tx2和/或先前交易tx1提交给区块链网络。
55、可以生成并执行多个程序,每个程序包括用于唯一识别dfa的状态的识别符。因此,可以使用一系列程序(脚本)来执行合约,每个脚本具有基本上对应于状态的持续时间(即dfa处于该给定状态或者可能处于该给定状态多长时间)的寿命。
56、8/33
57、交易(tx2)的未花费的输出(utxo)和/或先前交易(tx1)的输出可以包括锁定脚本,所述锁定脚本包括谜题哈希,其解决方案必须由另一区块链交易的输入提供,以便花费输出并将dfa转换到另一状态。
58、交易(tx2)的未花费的输出(utxo)和/或先前交易(tx1)的输出可以包括锁定脚本,所述锁定脚本包括赎回脚本哈希,其必须由另一交易的输入提供,以便花费输出(utxo)并将dfa转换到另一状态。赎回脚本可以包括加密密钥。
59、dfa的状态可以由区块链上的交易中的未花费的输出(utxo)表示。花费给定utxo可以表示到不同状态的转换。状态、动作、条件和触发条件可以在dfa的转换表中提供和/或在软件中编码。
60、本发明可以提供一种在区块链上实施确定性有限自动机dfa的方法,其包括以下步骤:将用于所述dfa的状态转换表存储在区块链外(off the blockchain)的存储资源中;通过将区块链交易(tx1)的未花费输出(utxo1)与所述状态转换表中的dfa的给定状态相关联,使用区块链上的未花费的交易输出(utxo1)来识别所述dfa已经处于或者当前处于的状态;和/或,使用另一交易(tx2)以通过花费所述交易(tx1)的所述未花费的输出(utxo1)来使所述dfa从当前状态转换到所述状态转换表中的另一状态,并且使所述dfa状态的改变被记录到所述区块链中。
61、本发明可以提供一种在区块链上实施确定性有限自动机dfa的方法,其包括以下步骤:将区块链交易(tx1)的未花费输出(utxo1)的锁定脚本中的识别符与用于所述dfa的状态转换表中的给定状态相关联;以及,使用另一交易(tx2)以通过花费所述区块链交易(tx1)的所述输出(utxo1)来使所述dfa的所述状态转换表的所述给定状态转换到所述dfa的所述状态转换表中的另一状态;其中,所述另一状态与另一交易的未花费输出(utxo2)的锁定脚本中提供的另一识别符相关联。
62、本发明可以提供一种使用至少一个计算代理与区块链一起实施dfa的方法,所述dfa由状态转换表定义,所述状态转换表指定用于所述dfa的所有
63、可能的当前状态的未来状态和触发事件,所述方法包括以下步骤:由所述至少9/33
64、一个计算代理,使用至少一个输入信号来确定是否已发生至少一个触发事件,所述至少一个触发事件与当前状态和新状态相关联,所述dfa将在所述触发事件发生后从所述当前状态移动,所述新状态是在所述触发事件启动的转换之后所述dfa将处于的状态;以及,基于所述确定的结果,根据所述dfa的所述状态转换表执行动作。其中:i)所述dfa的状态由区块链上的交易中的未花费输出表示;ii)所述触发事件导致花费区块链上的至少一个交易的未花费输出,其中所未花费输出与所述dfa的给定状态相关联;iii)所述的花费区块链上的至少一个交易的未花费输出表示:通过创建与下一状态相关联的输出来转换到不同状态。
65、本发明可以提供一种在区块链上实施确定性有限自动机dfa的方法,其包括以下步骤:将区块链交易的未花费的输出的锁定脚本中的一部分数据与用于所述dfa的状态转换表的给定状态相关联,其中所述一部分数据至少包括识别符;通过以下方式、响应于输入信号而生成另一交易:使用区块链交易的锁定脚本中的识别符来确定所述dfa的当前状态,其中所述识别符识别所述当前状态;和,基于当前状态和输入信号,使用dfa的状态转换表来确定另一状态及其相关联的识别符;以及,使用另一交易以通过花费所述交易的所述输出来使所述dfa从所述状态转换到另一状态;其中所述另一状态与在所述另一交易的未花费的输出的锁定脚本内提供的另一部分数据相关联;其中所述另一部分数据是与用于所述dfa的所述状态转换表的所述另一状态相关联的加密密钥、一部分元数据、标签、识别符、或标记。
66、本发明可以提供一种在区块链上实施dfa的方法,其包括以下步骤:将区块链交易(tx1)的未花费的输出(utxo1)的锁定脚本中的一部分数据与所述dfa的给定状态相关联。
67、本发明可以提供一种在区块链上实施dfa的方法,其包括以下步骤:将区块链交易(tx1)的未花费的输出(utxo1)的锁定脚本中的一部分数据与所述dfa的给定状态相关联;其中,所述dfa与持有一定时间的债务票据相关联。
68、本发明可以提供一种在区块链上实施dfa的方法,所述方法包括以下步骤:使用至少一个输入信号来执行至少一个条件,基于执行所述条件的结果:根据所述dfa的状态转换表执行动作,所述输入信号对应于至少一个状态转换;其中,通过分析一个或多个区块链交易的输出,所述动作的执行是能够从区块链账本的状态识别的。
69、本发明可以提供一种在区块链上实施dfa的方法,所述方法由处理资源执行并包括以下步骤:确定dfa的状态转换表,并将所述dfa的所述状态转换表存储在基于计算机的存储资源中;查阅所述dfa的所述状态转换表,并使用区块链上的未花费的交易输出(utxo1)来识别所述dfa的当前状态;以及,使用另一交易(tx2)以通过花费所述未花费的交易输出(utxo1)来转换到另一状态。
70、本发明还可以提供一种在区块链上实施确定性有限自动机dfa的方法,其包括以下步骤:将用于所述dfa的状态转换表存储在区块链外的存储资源中;通过将区块链上的区块链交易(tx1)的未花费的交易输出(utxo1)与所述状态转换表中的dfa的给定状态相关联,使用所述未花费的交易输出(utxo1)来识别所述dfa已经处于或者当前处于的状态;和/或,使用另一交易(tx2)以通过花费所述交易(tx1)的所述未花费的交易输出(utxo1)来使所述dfa从当前状态转换到状态转换表中的另一状态,并且使所述dfa状态的改变被记录到所述区块链中。
71、可选地,所述未花费的交易输出(utxo1)包括锁定脚本,该锁定脚本包括与所述dfa的给定状态相关联的识别符。可选地,所述另一交易(tx2)的未花费的交易输出(utxo2)包括锁定脚本,该锁定脚本包括与所述dfa的所述另一状态相关联的另一识别符。
72、可选地,所述方法还包括:响应于输入信号,通过以下生成所述另一交易(tx2):使用所述区块链交易(tx1)的锁定脚本中的识别符来确定所述dfa的当前状态;以及,基于所述当前状态和输入信号,使用所述状态转换表来确定所述另一状态以及与所述另一状态相关联的另一识别符。
73、可选地,所述输入信号提供所述dfa从一个状态转换到另一状态的触发条件。
74、可选地,所述方法还包括:将所述另一交易(tx2)和/或所述区块链交易(tx1)提交给区块链网络。
75、可选地,所述未花费的交易输出(utxo1)包括锁定脚本,所述锁定脚本包括谜题哈希,其解决方案必须由另一交易的输入提供,以便花费所述未花费的交易输出(utxo1)并将所述dfa转换到另一状态。
76、可选地,所述未花费的交易输出(utxo1)包括锁定脚本,所述锁定脚本包括赎回脚本哈希,其必须由另一交易的输入提供,以便花费所述未花费的交易输出(utxo1)并将所述dfa转换到另一状态。
77、可选地,所述赎回脚本包括加密密钥。
78、本发明还可以提供一种在区块链上实施确定性有限自动机dfa的方法,其包括以下步骤:将区块链交易(tx1)的未花费的输出(utxo1)的锁定脚本中的数据的部分与所述dfa的给定状态相关联;其中所述dfa与持有一定时间的债务票据相关联。
79、可选地,所述数据的部分是标签、识别符、标记或一部分元数据。
80、可选地,所述dfa是与所述债务票据相关联的机器可执行智能合约的模型。
81、可选地,所述方法还包括:确定与所述债务票据相关联的智能合约对应的状态,作为所述dfa的状态。
82、可选地,所述方法还包括:确定与所述债务票据相关联的智能合约对应的事件,作为用于将所述dfa从一个状态转换到另一状态的触发条件。
83、本发明可以提供一种用于实施、实现或体现基于软件的dfa的系统。它可以经由区块链来做到这一点。它可以包括:
84、区块链;
85、一个或多个计算代理,其用于根据上文或下文描述的任何方法步骤来生成和/或执行至少一个程序;
86、和存储资源,其用于存储dfa的状态转换表;这可以是例如哈希表或分布式哈希表;和/或
87、用于区块链交易的至少一个模板和/或用于智能合约的至少一个模板。
88、本发明可以基本上如下面标题为“编译和执行软件实施的dfa”的部分中所述,但来自说明书的其它部分的特征也同样适用。
89、所述系统可以用于在区块链执行上实施或实现状态机,以便执行(智能)合约的自动化执行。
90、关于本发明的系统提及的任何特征也可以适用于本发明的相应方法,反之亦然。本文提及的与本发明的一个方面或实施例有关的任何特征也可以适用于任何其它实施例或方面。
91、本发明的基于区块链的dfa包括至少以下关键特征:
92、●提供计算数学模型的基于区块链的实施,所述计算数学模型被设想为抽象机,其可以处于有限状态集合中的一个并且当发生有限集合的触发事件(被称为输入)时可以从一个状态改变(转换)到另一状态
93、●由于确定性有限自动机(dfa)体现在区块链平台上的计算和存储结构中,基于将各方的承诺的技术实现提供用于合约的建立和自动化执行的新技术
94、●可以使用现有的区块链基础结构和协议
95、●实现并促进智能合约的自动化生成、控制和执行
96、●可由计算机自动执行和强制实施。
97、●合约、其执行和结果的永久、不可变的记录。
98、本发明提供并利用区块链协议和平台固有的至少以下益处:
99、●通过设计固有的安全(例如,一些区块链协议不需要可信方)。
100、●分布式,因此避免了大的单点故障,并且不易受到攻击。
101、●易于管理和维护(例如,一些区块链网络易于使用)
102、●价格低廉(例如,在一些区块链协议下,通常预计只需很少的交易费用)
103、●不受地域限制或约束——任何可以访问互联网的人都可以随时随地使用
104、●透明,一旦数据已经写入到区块链,任何人都可以看到它。
105、●不可变,一旦数据已经写入到区块链,没有人可以改变它。
106、●维护隐私,不涉及个人识别信息。
1.一种在区块链上实施确定性有限自动机dfa的方法,其包括以下步骤:
2.一种在区块链上实施确定性有限自动机dfa的方法,其包括以下步骤:
3.一种使用至少一个计算代理与区块链一起实施dfa的方法,所述dfa由状态转换表定义,所述状态转换表指定用于所述dfa的所有可能的当前状态的未来状态和触发事件,所述方法包括以下步骤:
4.一种在区块链上实施确定性有限自动机dfa的方法,其包括以下步骤:
5.一种在区块链上实施dfa的方法,其包括以下步骤:
6.一种在区块链上实施dfa的方法,其包括以下步骤:
7.一种在区块链上实施dfa的方法,所述方法包括以下步骤:
8.一种在区块链上实施dfa的方法,所述方法由处理资源执行并包括以下步骤:
9.一种系统,其用于实施根据权利要求1到8中任一项所述的方法。
10.根据权利要求9所述的系统,其中所述系统包括:
