一种UTXO模型与合约之间的搭桥方法与流程

文档序号:12819576阅读:379来源:国知局

本发明涉及互联网上量子链上区块链的合约连接,为一种utxo模型与合约之间的搭桥方法。



背景技术:

在比特币的网络中,utxo模型为(unspenttransactionoutput,未花费交易输出)是比特币交易的基本单位。通过交易的输入和输出,比特币网络将资金变化成一段数据结构。区别于信用卡支付必须在加密安全网络中传输,比特币的数据可以在任何不一定安全的网络中传输。utx0模型可以看做被私钥的拥有者锁定的、并被整个比特币网络识别的比特币货币单位。在utxo模型中,被某一个交易消耗的utxo被称为交易输入,由交易创建的utxo被称为交易输出。通过这种方式,一定量的比特币在不同的私钥所有者之间转移,并在交易链条中不断消耗和创建新的utxo。一笔比特币交易通过所有者的私钥签名来解锁utxo,并通过使用新的所有者的比特币地址来锁定并创建utxo。但是utxo本身是无状态的,必须将通过一系列的创新的设计,实现基于utxo类型的合约之间的搭桥。



技术实现要素:

有鉴于此,本发明提供一种解决或部分解决上述问题的utxo模型与合约之间的搭桥方法。

为达到上述技术方案的效果,本发明的技术方案为:一种utxo模型与合约之间的搭桥方法,包含以下步骤:

utxo模型为比特币交易的基本单位,包含交易的输入、比特币销毁和交易输出、由交易产生的比特币;比特币在不同的的私钥所有者之间传输,并且在交易组成的链条中新的utxo模型也被消费和创建;在utxo模型中,对比特币交易进行解锁中对私钥进行签名,私钥是通过公钥地址的接收者来创造;使用脚本语言来描述比特币交易;在utxo模型中,使用公共账本来追溯每个交易的历史,具有并行处理能力以初始化在多个指示可扩展的地址之间的交易;

搭桥方法的具体实现为量子链帐目抽象层,量子链帐目抽象层将utxo模型转换成以账本为基础的接口以供以太坊虚拟机使用,并且在以太坊运行的合约使用以太坊虚拟机来保证其的执行;utxo模型、合约、量子链帐目抽象层都应用于量子链;

量子链账目抽象层,允许以太坊虚拟机作用在量子链中区块链,并且同时不会对以太坊虚拟机或现有的以太坊合约进行重大修改;

通过量子链账目抽象层可以检查当前合约的余额和在区块链上的其他合约,通过将资金附加到数据发送到其他合约上;

量子链账目抽象层的操作还包含op_exec_assign操作码,op_exec_assign操作码用于发送资金到合约;

op_exec_assign操作码的作用为:合约被部署到在量子链中区块时,能被交易哈希值分配和调用,新部署的合约的余额也为零;在量子链中没有协议允许一个带有一个非零余额的合约被部署,op_exec_assign操作码为了发送资金到合约,使合约的余额不为零;

用于衡量资金的数值为气体模型,气体模型被包含在以太坊虚拟机中;

量子链账目抽象层包含预期合约交易,预期合约交易,是一个工作机制,工作机制的工作背景为当合约希望将资金发送到另一个合约或者公钥哈希值地址时,需要消费合约中包含的一个所拥有的输出;预期合约交易存在于同一个区块中,由矿工在验证和执行交易时产生,不在p2p网络上广播;预期合约交易包含新的操作码op_txhash,用于传递交易哈希值;

op_exec操作码和op_exec_assign操作码都有两种不同的工作模式:当它们被执行时作为输出脚本处理的一部分,以太坊虚拟机将被执行;为了避免双重执行,当它们被执行时作为输入脚本处理的一部分,以太坊虚拟机不被执行;基于给予它们的交易哈希值,它们将返回1或0,分别表示可消费或未消费;

当op_exec操作码和op_exec_assign操作码处于尝试消费的一个状态,将检查预期合约交易列表;如果交易哈希值通过在从正常情况下从op_txhash操作码在预期合约交易列表中传递,得到的结果将为1或已经消费,否则,它将返回0或未消费;经过上述过程,虚拟输出的op_exec操作码和op_exec_assign操作码可以消费,用于满足量子链账目抽象层需要虚拟输出被消费的情况;允许合约的资金只由该合约消费;

在量子链账目抽象层包含关键的共识硬币选取算法,用于解决合约中存在一个以上的输出可以花费,量子链中每个节点可以选择不同的输出,从而完成不同的交易花费op_exec_assign操作码的问题;

关键的共识硬币选取算法中通过一个合约选取不同的硬币来消费,为了消除量子链中选取节点的分歧,当一个以太坊虚拟机的合约需要发送钱给一个公钥哈希值地址或者是另一个合约,创建一个新的交易;此时,关键的共识硬币选取算法将会从拥有的合约池的输出中选取最好的输出,输出将会以带有输入脚本的输入的形式进行消费,在输入中包含有一个简单的op_txhash操作码;一个输出的变化发送给一个交易的剩余资金,并会返回到合约,并且交易的哈希值将会加入到一个期望合约交易列表;在合约执行交易后,交易本身将会立刻被加入到区块中,经过在期望合约交易列表检查、确认交易的哈希值的正确性,移除交易的哈希值;通过提供一个作为输入脚本的硬代码哈希值,代替了op_txhash操作码的使用。

本发明的有益成果为:本发明提供的量子链账目抽象层在utxo模型与合约之间建立桥梁,从而保证了合约的执行;使以太坊虚拟机无视硬币选取和特定输出,只需关注合约以及虚拟机中是否存在余额,以及资金是否能被发送到这些合约、通过合约系统的外部到公钥哈希值地址,从而提高了量子链和以太坊的复合性,减少修改以太坊合约到量子链的端口的难度。

具体实施方式

为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合实施例,对本发明进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,能实现同样功能的产品属于等同替换和改进,均包含在本发明的保护范围之内。具体方法如下:

实施例1:量子链最主要的目标是重建第一个共识模型的基于合约平台utxo模型。这个平台将比特币和以太坊生态系统相结合。量子链目标是把握与以太坊虚拟机结合的比特币的变化。经过实际设计,量子链希望推送到带有移动端策略的工业用例上;这也能够帮助量子链促进区块链技术推广到一系列的互联网用户之中。在utxo模型中有交易的输入、比特币销毁和交易输出、由交易产生的比特币。以这种方式,一定量的比特币在不同的私钥所有者之间传输,并且在交易链中新的utxo也被消费和创建。

在比特币网络中,矿工产生比特币时伴随着一个被称为一个币基础交易的过程,这个过程中并且不包含任何输入;比特币使用一个脚本语言用于描述交易;在比特币网络中,脚本系统使用栈(主栈和alt栈)来处理数据,栈是一个带有后进先出特征的抽象数据类型,拥有后进、先出两个特征。

在比特币客户端,开发者使用标准函数去概述脚本类型,比特币客户端提供:包含支付给公共密钥哈希值(p2pkh)、支付给公共密钥(p2pk)、多重签名(小于15个私钥签名),支付给脚本哈希值(p2sh)和返回操作op_return。

除此之外,仅仅是在必须有一个矿工能封装非标准交易的条件下,一个非标准脚本也能被创建和执行。

举个例子:支付给公共密钥哈希值用于解释脚本创建和执行的过程。假定我们需要支付0.01比特币给面包商店去购买一些面包,那么商店的比特币地址为面包地址。

所以,这次交易的输出是:op_dupop_hash160<breadpublickeyhash>op_equalop_checksig。

根据锁定脚本,开锁脚本描述如下:

<breadsignature><breadpublickey><bread签名><bread公钥>

结合上面两个脚本的描述如下:

<breadsignature><breadpublickey>op_dupop_hash160

<breadpublickeyhash>op_equalop_checksig

只有当开锁脚本和锁定脚本已经匹配预定义条件时,脚本组合的执行为真。

这意味着bread签名必须是一个带有匹配有bread地址的私钥的签名,它是bread地址的有效签名,然后结果也将为真。

即使比特币的脚本语言包含许多字符,但仍然不是图灵完备的。这里没有循环功能,意味着交易的执行数量是有限的,也意味着交易的并发是有限的。这个脚本语言不是常用的编程语言。这些限制通过复杂的付款条件去以防止安全风险的发生,在安全风险中会产生无限循环或其它复杂的逻辑循环漏洞。

在utxo模型中,我们能通过公共帐本追溯每个交易的历史,并且这个过程是完全透明的。utxo模型具有并行处理能力以初始化在多个指示可扩展的地址之间的交易。最后但同样重要的,utxo模型具有一定的隐私级别。用户可以使用改变地址以作为utxo的输出。然而,除了utxo模型本身的研究,量子链的目标是实现基于utxo模型的创新设计的合约。

实施例2:以太坊虚拟机被设计在作用在帐目为基础的区块链上;然而,量子链是基于比特币、并且使用utxo模型为基础的区块链。

为了处理这种情况,量子链包含一个帐目抽象层,其允许以太坊虚拟机作用在量子链块链,并且同时不会对虚拟机或现有的以太坊合约进行重大修改。

以太坊虚拟机的帐目模型暴露给合约程序员的非常简单;这里操作可以检查当前合约的余额和在区块链上的其他合约,可以将钱(附加到数据)发送到其他合约上。因此,帐目抽象层这些操作实现可能比预期更复杂。

首先,当合约被部署到量子链块链时,它能被交易哈希值分配和调用。新部署的合约的余额也为零。目前在量子链中没有协议允许一个带有一个非零余额的合约被部署。为了发送资金到合约,一个使用op_exec_assign操作码的交易将被创建。

向合约发送钱的输出脚本也类似于以下过程:

1;theversionofthevm

10000;gaslimitforthetransaction

100;gaspriceinqtumsatoshis

0xf012;datatosendthecontract(usuallyusingthesolidityabi)

0x1452b22265803b201ac1f8bb25840cb70afe3303;ripemd-160hashofcontracttxid

op_exec_assign

这个交易脚本相当简单,并且将大部分的交易处理交给op_exec_assign操作码。

给予合约的实际值(假设这里没有一个燃气输出条件)是一个输出值-燃料限制。

当此输出添加到块链时,它将成为一个属于合约帐目的输出。这输出值将会反映在合约的余额中。余额只是一个输出的总额,这个总额是通过合约进行消费的。

当合约希望将资金发送到另一个合约或者公钥哈希值地址时,它需要消费合约中包含的一个所拥有的输出。涉及的这种机制将会被称为预期合约交易。这些交易是特殊的,必须存在于一个区块中以便该块能更好地被量子链网络验证。预期合约交易由矿工在验证和执行交易时产生,而不是由消费者生成。正如此,它们不在p2p网络上广播。

使预期合约交易工作的主要机制是新的操作码:op_txhash。

在内部,op_exec和op_exec_assign都有两种不同的模式:当它们被执行时作为输出脚本处理的一部分,以太坊虚拟机将被执行;当它们被执行时作为输入脚本处理的一部分,然而,以太坊虚拟机不被执行(因为这将导致双重执行)。

反而,op_exec和op_exec_assign操作码将在行为上类似无操作no-ops。它们将返回1或0,分别表示可消费或未消费,这个过程基于给予它们的交易哈希值。

当op_exec和op_exec_assign操作码处于尝试消费的一个状态,将检查预期合约交易列表。如果交易哈希值通过在(从正常情况下从op_txhash)在预期合约交易列表中传递,得到的结果将为1或已经消费。否则,它将返回0或未消费;以这种方式,使用虚拟输出的op_exec和op_exec_assign可以消费,当一个合约需要,并且因此帐户抽象层需要虚拟输出被消费(即当合约试图发送钱到某处)。这个逻辑会陷入循环,但是会导致以一个安全和可靠的方式,允许合约的资金只由该合约消费,并且从行为上更象是一个普通的utxo模型交易。

一个尚未触及的问题是,如果合约中存在一个以上的输出可以花费,每个节点可以选择不同的输出,从而完全不同的交易花费op_exec_assign交易。

在量子链中的解决的方式是通过一个关键的共识硬币选取算法。这个硬币选取算法相似于通常用于用户的钱包的标准硬币选取算法。然而,它能很大简化以避免dos攻击向量的风险,并且使共识规则尽可能地简单。在关键的共识硬币选取算法中,现在这里不存在不同节点,以通过一个合约选取不同的硬币去消费。在量子链网络中,任何选取不同输出的矿工/节点将会存在分歧,它们的区块链也将不会是有效的。为了消除结点之间的分歧,当一个量子链虚拟机的合约需要发送钱给一个公钥哈希值地址或者是另一个合约,将导致一个新的交易被构建。关键共识硬币选取算法将会从拥有的合约池的输出中选取最好的输出。这些输出将会以带有输入脚本的输入的形式进行消费,这种输入中包含有一个简单的op_txhash操作码。输出的目的是用于资金;一个改变的输出发送给一个交易的剩余资金,并会返回到合约。这个交易的哈希值将会加入到一个期望合约交易列表;在合约执行交易后,交易自己将会立刻被加入到区块中。然后,当这个合约交易是有效和可执行的,期望合约交易列表将会检查、确认它的正确性,然后这个交易哈希值将会从期望合约交易列表中被移除。使用这个模型,这里没有方法欺骗交易以使它们消费,通过提供一个作为输入脚本的硬代码哈希值,代替了op_txhash的使用。

这个抽象层使以太坊虚拟机无视硬币选取和特定输出,只能知道它们和其他合约中是否存在余额,和钱能被发送到这些合约以及通过合约系统的外部到公钥哈希值地址;这样,量子链和以太坊复合性将会变强,很少需要修改以太坊合约到量子链块的端口。

以上所述仅为本发明之较佳实施例,并非用以限定本发明的权利要求保护范围。同时以上说明,对于相关技术领域的技术人员应可以理解及实施,因此其他基于本发明所揭示内容所完成的等同改变,均应包含在本权利要求书的涵盖范围内。

本发明的有益成果为:本发明提供的量子链账目抽象层在utxo模型与合约之间建立桥梁,从而保证了合约的执行;使以太坊虚拟机无视硬币选取和特定输出,只需关注合约以及虚拟机中是否存在余额,以及资金是否能被发送到这些合约、通过合约系统的外部到公钥哈希值地址,从而提高了量子链和以太坊的复合性,减少修改以太坊合约到量子链的端口的难度。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1