CN119444208A 用于区块链实现的基于脚本的字节解释的方法和系统 (区块链控股有限公司)_第1页
CN119444208A 用于区块链实现的基于脚本的字节解释的方法和系统 (区块链控股有限公司)_第2页
CN119444208A 用于区块链实现的基于脚本的字节解释的方法和系统 (区块链控股有限公司)_第3页
CN119444208A 用于区块链实现的基于脚本的字节解释的方法和系统 (区块链控股有限公司)_第4页
CN119444208A 用于区块链实现的基于脚本的字节解释的方法和系统 (区块链控股有限公司)_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

201880053431.02018.08.06用于区块链实现的基于脚本的字节解释的的用于去信任化的确定性状态机的计算机实现通过验证耗用交易和前一交易的锁定脚本的字2通过验证所述耗用交易的锁定脚本的字节码序列与所述前一交易的锁定脚本的字节其中,所述耗用交易的至少一部分被复制以生成新的耗用交其中,所述锁定脚本的字节码序列被复制为有序次数的耗用交易的锁定脚本的一部及/或者所述解释器代码支持将至少一个高级字节码操作转换为由节点执行的低级字节码和所述耗用交易的锁定脚本还包括与由所述前一交易的锁定脚本和所述耗用交易的锁定i)使用表示所述锁定脚本的字节码序列的所述当前执行状态的数据来恢复所述字节ii)从与所述字节码序列的所述当前执行状态相对应的执行指针开始执行所述锁定脚及iii)将因执行所述锁定脚本的字节码序列而产生的状态数据与用于包含在所述耗用且从虚拟存储器中提取与所述锁定脚本的字节码序列的所述下一执行状态相对应的执行3于所述锁定脚本的字节码序列的所述当前执行状态的状态数据,以及/或者通过将因执行因执行所述锁定脚本的字节码序列而产生的状态数据与用于包含在所述耗用交易中的锁定脚本的字节码序列的下一执行状态的状态数9.根据任一前述权利要求所述的计算机实现的方包括可执行指令的存储器,所述可执行指令由所述根据权利要求1至11中的任一项所述的计13.一种非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质上存储有执行根据权利要求1至11中的任一项所述的4数字资产的控制(control)在区块链系统中的参与者之间的转移进行编码的数据结构,并5自动执行机器可读合约或协定的条款的计算机程序。与将按自然语言编写的传统合约不[0010]在实施方式中,在不对创建者或某个其他特定实体强制实施和/或执行智能合约源有权访问加密秘密(例如,私有非对称密钥、对称密钥等)的情况下确认耗用交易据以解锁数字资产的技术包括将数据的散列嵌交易的确认可以进一步包括验证前一交易和耗用交易的锁定脚本是否共享相同的解释器6过验证所述耗用交易的锁定脚本的字节码序列与所述前一交易的锁定脚本的字节码序列使得第一区块链交易和前一区块链交易共享相同的解释器代码来解释第一锁定脚本和第可以通过复制前一区块链交易的至少一部分来生成第一区块链交易。附加地或替代性地,第一锁定脚本可以包括验证第一锁定脚本的字节码序列与第二锁定脚本的字节码序列是否匹配的至少一个操作。解释器代码可以被包含为第一锁定脚本和第二锁定脚本的一部本的解释器代码与第二锁定脚本的解释器代码是否匹配的定脚本)还包括与由第一锁定脚本和第二锁定脚本共享的字节码序列的不同执行状态有关7据来恢复字节码序列的当前执行状态;ii)从与字节码序列的当前执行状态相对应的执行及iii)将因执行字节码序列而产生的状态数据与用于包含在第一区块链交易中的第二锁定脚本的字节码序列的下一执行状态的状态数据进行比较,以验证这些状态数据是否匹二格式适用于在执行锁定脚本的字节码序列时操纵虚拟存储及/或者通过将因执行字节码序列而产生的状态数据从堆栈格式序列化为字节格式,对因执行字节码序列而产生的状态数据与用于包含在第一(耗用)区块链交易中的字节码序列于确认第一区块链交易的一组条件的数据(其可以是确定的数据来源或未确定的数据来行上述实施方式中的任何一个实施方式的计算机[0036]通过利用区块链网络和加密技术来设置和强制实施用于重新关联或转移数字资8用出于安全原因专门设计用来限制功能的脚本语言的分布式账本技术和区块链技术方面[0038]参照本文中所描述的实施方式,本发明的这些和其他方面将变得明显并被阐[0040]图2示出了根据实施方式的采用锁定脚本的智能合约的示例,该锁定脚本包含在[0042]图4A至图4C共同为示出了根据实施方式的执行图3的耗用交易的解锁脚本和前一[0043]图5是根据实施方式的可以用于执行锁定脚本的字节码序列的示例性虚拟堆栈数[0044]图6是根据实施方式的可以存储为图3的锁定脚本的一部分的序列化状态数据的[0045]图7是根据实施方式的可以用于将存储为锁定脚本的一部分的序列化状态数据转换成适合于存储在图5的堆栈数据结构上的格式的操作[0046]图8是根据实施方式的可以用于将以图5的堆栈数据结构的格式存储的状态数据转换成适于存储在锁定脚本内的序列化状态数据的操作[0048]图10A至图10C共同为示出了根据实施方式的执行图9的耗用交易的解锁脚本和前[0049]图11是示出了根据实施方式的图9的锁定脚本的解释器代码的执行的示意图,其[0050]图12A和图12B是作为图10A至图10C的操作的一部分的锁定脚本的解释器代码的一一9[0052]首先将参照图1,其示出了根据本公开的实施方式的与区块链相关联的示例性区的分布式系统中的多个计算设备、或任何合适的电子客户端设备比如图11的计算设备[0056]在实施方式中,节点102中的至少一些节点作为执行确认如本公开中所描述的交易包括提供对数字资产的所有权的证明以及接受或转移对数字资产的所有权/控制的条件权或控制转移)到与区块链地址相关联的实体的交易,该数字资产由前一交易的未耗用交耗用交易的解锁脚本可以配置成使得执行解锁脚本提供了用来得到一组条件的数据以确链地址是与对数字资产的至少一部分的控制转移/重新关联到的实体相关联的一串字母数地址之间存在一一对应关系。交易的确认可以包括确认交易的解锁脚本和/或锁定脚本中[0057]一些区块链技术使用椭圆曲线数字签名算法(ECDSA)作为数字签名的数学方案。想ECDS符合特定区块链技术的签名生成[0060]本公开的某些实施方式可以在脚本处理系统或用于实现所描述的指令集的其他系统允许在单个脚本中有多于200条指令(例如,操作代码或op_codes)的假设下操作。同[0069]型针对交易字段的签名进行验证。如果签名有效,则返回1,否则返回0。·OP_[0075]·OP__EQUALVERIFY,其与OP__EQUAL相同,但之后运行OP__VERIFY·OP_[0099]图2示出了智能合约的示例实施方式2100,该智能合约采用锁定脚本作为交易序确认第一交易202,然后将第一交易202添加到区块链网络,使得第一交易202嵌入在区块交易202的锁定脚本来确认的耗用交易,其被配置为将由第一交易202持有的1单位的初始交易204的锁定脚本来确认的耗用交易,其被配置为将由第二交易204持有的1单位的量X'码序列——其为将解锁前一交易的UTXO的锁定脚本——针对耗用交易(例如,第二交易204)的锁定脚本的字节码序列进行验证,当该[0106]注意,图2的如上所述的将数字资产支付给属于Alice的支付给公钥散列(P2PKH)[0107]图3示出了根据本公开的实施方式的示例性交易,该示例性交易采用具有公共字被视为下述状态机的计算机程序:该状态机体现具有一组定义明确的状态的一组状态规节码序列表示用于状态机306的一组状态规则。锁定脚本304还包括:表示由字节码序列所锁定脚本304的一部分的序列化状态数据表示在由包含于锁定脚本304中的当前执行指针分的序列化状态数据表示在由包含于锁定脚本312中的下一执行指针所引用的执行点处、过下述方式确定:使用前一交易的锁定脚本304的序列化状态数据来恢复锁定脚本的字节码序列的当前执行状态以生成或访问包含在锁定脚本312中的下一执行指针,然后执行锁定脚本的字节码序列。这样的执行始于与包含在前一交易302中的当前执行指针相对应的的执行还可以使用通过执行耗用交易308的解锁脚本确定的输入数据[0111]作为确认耗用交易308的一部分,执行耗用交易308的解锁脚本和锁定脚本304/的输入数据310、以及由包含在前一交易302的锁定脚本304中的序列化状态数据和当前执为输入,并且从与包含在前一交易302的锁定脚本304中的当前状态执行指针相对应的点(或操作)到与包含在耗用交易308的锁定脚本312中的下一执行指针相对应的点(或操作)执行锁定脚本304/312的公共字节码序列。这样的执行从由公共字节码序列所表示的一组含在耗用交易308的锁定脚本312中的下一执行指针相对应的点(或操作)所确定的该下一脚本312的一部分包含的序列化状态数据,对根据公共字节码序列的执行所确定的序列化实施在确认耗用交易期间通过执行锁定脚本的字节码序列所得到的执行状态与在创建耗一状态转换是可能的。应当指出的是,可以将由锁定脚本的字节码序列所表示的一组状态规则编码为由当前状态和一个或更多个输入参数化的switch语句或其他条件语句(例如,包含在前一交易中的锁定脚本的字节码序列的当前执行状态的执行指针与如包含在耗用交易中的锁定脚本的字节码序列的下一执行状态的执行指针之间的差异——可以通过选择或改变如包含在耗用交易中的锁定脚本的字节码序列的下一执行状态的执行指针进行该参数化的约束条件可以用于限制交易之间执行的合约的字节码序列的低效操作),以在逻辑上将智能合约的字节码序列分为在耗用交易序任何实体每月收取1单位的数字资产的脚本。数字资产的其余部分将复制到后续的智能合[0118]下表2示出了实现本公开的去信任化的确定性状态机的解锁脚本和锁定脚本的示序列化状态数据表示在由包含于耗用交易的锁定脚本中的下一执行指针所引用的执行点应的点(或操作),并终止于与包含在耗用交易的锁定脚本中的下一执行指针相对应的点[0123]图4A至图4C的操作中的一些或全部操作(或描述的任何其他处理、或这些处理的变体和/或组合)可以在配置有可执行指令和/或其他数据的一个或更多个计算机系统的控示例区块链网络100)中的确认节点执行。这样的确认节点可以包括任何合适的计算设备[0125]图4A至图4C的操作验证前一交易和耗用交易的锁定脚本定的下一执行状态与由包含为耗用交易的锁定脚本的一部分的下一状态数据所表示的下如,scriptPubKey)都存储在虚拟存储器中,这可以通过一个或更多个运行时间数据结条件在满足时导致由锁定脚本的字节码序列所表示的状态机转换结束。如果满足终止条器中检索耗用交易的锁定脚本的字节码序列,并且将两个锁定脚本的字节码序列彼此比[0129]在407中,从虚拟存储器中检索用于锁定脚本的字节码序列的当前执行状态的执[0130]在409中,从虚拟存储器中检索用于锁定脚本的字节码序列的下一执行状态的执定脚本中),并且使用锁定脚本的当前状态数据恢复虚拟存储器中的锁定脚本的字节码序脚本的字节码序列的前一次执行结束时的堆栈[0132]在413中,可以基于存储在虚拟存储器中的一个或多个输入来执行锁定脚本的字脚本的字节码序列的当前执行状态的执行指针(如在407于锁定脚本的字节码序列的下一执行状态的执行指针脚本的字节码序列的当前执行状态的执行指针至用于锁定脚本的字节码序列的下一执行据需要确认耗用交易并在特定CPU硬件上执行机器代码。软件解释器的执行可以将字节码[0133]在415中,确定锁定脚本的字节码序列的执行是否已经到达与用于锁定脚本的字到达用于锁定脚本的字节码序列的下一执行状态的执行指针之后)被组织并存储为表示锁[0136]在421中,从虚拟存储器中检索表示锁定脚本的字节码序列的下一执行状态的序列化状态数据与如在421中从虚拟存储器中检索到的表示如包含在耗用交易中的锁定脚本智能合约的字节码序列的低效操作),以在逻辑上将智能合约的字节码序列分为在耗用交取数据并约束耗用交易,但前提是前一交易和耗用交易的锁定脚本包含相同的字节码序拟存储器中的两个虚拟堆栈中,如图5所示,这两个虚拟堆栈通常称为虚拟主堆栈和虚拟这两个堆栈数据结构中的每个堆栈数据结构都可拟存储器数据结构(虚拟主堆栈和虚拟Alt堆栈)个高级字节码操作在图5的虚拟主堆栈和虚拟Alt堆栈上[0160]图7示出了表示如包含在前一交易中以用于存储在虚拟存储器中的锁定脚本的字含在前一交易中以用于存储在图5的虚拟主堆栈和虚拟Alt堆栈中的锁定脚本的字节码序[0164]图8示出了将存储在虚拟存储器中的锁定脚本的字节码序列的所得到的执行状态序列化为表示如包含在耗用交易中的锁定脚本的字节码序列的下一状态数据的序列化字拟主堆栈和虚拟Alt堆栈中的锁定脚本的字节码序列的所得到的执行状态序列化为序列化换为属于脚本语言并由确认节点的运行时间系统的软件解释器所支持的op_code或命令。以高级编程语言编写的脚本字节码操作转换为属于脚本语言并由确认节点的运行时间系[0169]图9示出了根据本公开的实施方式的示例性交易,该示例性交易采用具有公共字[0170]如图9中示意性的示出的,前一交易302'包括具有字节码序列和解释器代码的锁表示的状态机306'的状态内的当前状态的序列化状态为锁定脚本304'的一部分的序列化状态数据表示在由包含于锁定脚本304'中的当前执行[0171]如从图9的示例中可以看出的,耗用交易308'包括具有字节码序列和解释器代码代码的副本。锁定脚本312'还包括表示当前状态S1之后的可能的下一状态之一(在此情况定脚本312'的一部分的下一执行指针是指与当前状态S1之后的下一状态(在这种情况下为本的字节码序列。这样的执行始于与包含在前一交易302'中的当前执行指针相对应的点的执行还可以使用通过执行耗用交易308'的解锁脚本而确定的输入数据310'。[0173]作为确认耗用交易308'的一部分,执行耗用交易308'的解锁脚本和锁定脚本304'/312'的公共字节码序列。公共字节码序列的执行将通过执行耗用交易308'的解锁脚据和当前执行指针及包含在耗用交易308'的锁定脚本312'中的下一执行指针所体现的当304'中的当前状态执行指针相对应的点(或操作)到与包含在耗用交易308'的锁定脚本定脚本的字节码序列所得到的执行状态与在创建耗用交易时包含在耗用交易中的锁定脚态规则编码为由当前状态和一个或更多个输入参数化的switch语句或其他条件语句(例脚本还包括用于对锁定脚本的字节码序列进行解释的解释器代码。在这样的实施方式中,交易的锁定脚本的字节码序列和解释器代码被拷贝或复制到尝试将对数字资产的控制转包含在前一交易中的锁定脚本的字节码序列的当前执行状态的执行指针与如包含在耗用交易中的锁定脚本的字节码序列的下一执行状态的执行指针之间的差异——可以通过选择或改变如包含在耗用交易中的锁定脚本的字节码序列的下一执行状态的执行指针进行该参数化的约束条件可以用于限制交易之间解释的合约的字节码序列的低效操作),以在逻辑上将智能合约的字节码序列分为在耗用交易序[0177]下表6示出了实现本公开的去信任化的确定性状态机的解锁脚本和锁定脚本的示含为锁定脚本的一部分的下一执行指针是指与下一执行状态相对应的字节码序列的执行本的字节码序列。这样的执行始于与包含在前一交易[0182]图10A至图10C的操作中的一些或全部操作(或描述的任何其他处理、或这些处理的变体和/或组合)可以在配置有可执行指令和/或其他数据的一个或更多个计算机系统的指令和/或其他数据可以存储在非暂时性的计算机可读存储介质上(例如,永久存储在磁、[0184]图10A至图10C的操作验证智能合约的前一交易和耗用交易的锁定脚本的字节码脚本而获取输入,至少部分地基于对锁定脚本的字节码序列的解释来确定下一执行状态,并且验证通过执行耗用交易的锁定脚本所确定的下一执行状态与由包含为耗用交易的锁[0192]在1015中,从虚拟存储器中检索锁定脚本的当前状态数据(如包含在前一交易的锁定脚本中),并且使用锁定脚本的当前状态数据恢复虚拟存储器中的锁定脚本的字节码定脚本的前一次执行结束时的堆栈数据结构[0193]在1017中,可以基于存储在虚拟存储器中的一个或多个输入来调用解释器代码到达用于锁定脚本的下一执行状态的执行指针(在1013中检索到的)时终止。在实施方式认节点将这些操作代码或命令转换为在确认节点的CPU硬件上执行的机器代码,如图11所补充了由确认节点的运行时间系统的软件解释器所支持的低级字节码操作的命令。例如,4B的虚拟字节码操作OP_VSWAP和OP_VDROP转换为属于脚本语言且由确认节点的运行时间属于脚本语言且由确认节点的运行时间系统的软件解释器所支持的op_code或命令。软件解释器的执行可以将操作码或命令一次一个字节码依次转换为机器代码(例如,简单解[0197]在1023中,存储在虚拟存储器中的锁定脚本的字节码序列的所得到的执行状态(在到达用于锁定脚本的字节码序列的下一执行状态的执行指针之后)被组织并存储为表序列化状态数据与如在1025中从虚拟存储器中检索到的表示如包含在耗用交易中的锁定行耗用的交易)的约束条件参数化。该参数化的约束条件可以用于限制交易之间执行的字耗用交易的锁定脚本包含相同的字节码序列。[0205]图12A示出了在对包含在锁定脚本中的字节码序列进行解释时通过执行解释器代指针开始直到到达下一状态的执行指针为止对单个字[0213]图13是可以用于实践本公开的至少一个实施方式的计算设备2600的说明性简化一个或更多个处理器2602可以配置为经由总线子系统2604与多个外围子系统通信并且操本文中所描述的耗用交易的一部分。这些外围子系统可以包括存储子系统2606(包括存储或更多个用户接口输出设备2614以及网络接口子系统2616。存储子系统2606可以用于信[0214]总线子系统2604可以提供用于使计算设备2600的各个组件和子系统能够按预期2614可以例如用于当用户与执行所描述的过程和其中的变型的应用程序交互为适当时呈[0216]存储子系统2606可以提供用于存储可以提供本公开的至少一个实施方式的功能包括存储器子系统2608和文件/磁盘存储据的主随机存取存储器(RAM)2618以及可以存储固定指令的只读存储器(ROM)2620。文件/起始日期开始发生的滴答数的计

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论