区块链 区块链技术 比特币公众号手机端

如何理解RGB VM和scripting?

liumuhui 11个月前 (11-12) 阅读数 156 #区块链
文章标签 btcBTC L2比特币

<!--StartFragment-->

BTC脚本

以一种常见的交易类型“Pay-to-PubKey-Hash (P2PKH)”为例:

锁定脚本

OP_DUP OP_HASH160 &lt;公钥哈希> OP_EQUALVERIFY OP_CHECKSIG

解锁脚本

&lt;签名> &lt;公钥>

执行流程

1.首先,将解锁脚本中的 &lt;签名> 和 &lt;公钥> 压入栈。

btc栈 剩余脚本
<签名> <公钥> OP_DUP OP_HASH160 <公钥哈希> OP_EQUALVERIFY OP_CHECKSIG

2.执行 OP_DUP,复制栈顶的 &lt;公钥>

btc栈 剩余脚本
<签名> <公钥><公钥> OP_HASH160 <公钥哈希> OP_EQUALVERIFY OP_CHECKSIG

3.执行 OP_HASH160,对复制的 &lt;公钥> 进行哈希处理,得到一个公钥哈希,并将其压入栈。

BTC 栈 剩余脚本
<签名><公钥> <公钥哈希> <公钥哈希> OP_EQUALVERIFY OP_CHECKSIG

4.将脚本中的 &lt;公钥哈希> 压入栈。

BTC 栈 剩余脚本
<签名><公钥> <公钥哈希><公钥哈希> OP_EQUALVERIFY OP_CHECKSIG

5.执行 OP_EQUALVERIFY,比较栈顶的两个值(计算出的公钥哈希和提供的公钥哈希),如果相等则继续,否则脚本失败。

BTC 栈 剩余脚本
<签名><公钥> OP_CHECKSIG

执行 OP_CHECKSIG,用提供的 &lt;签名> 和 &lt;公钥> 验证签名的有效性。

BTC 栈 剩余脚本
True (空)

如果整个脚本执行完成后,栈顶的元素为 true,则交易验证通过。

RGB

RGBVM实际上是一个叫做AluVM的东西。

AluVM是算法逻辑单元虚拟机的缩写,它是一种基于寄存器的虚拟机,用于智能合约验证和分布式计算,可用于但不限于 RGB 合约验证。

“ AluVM is simply math and few bound-width bytestring manipulations and that's it. ”(AluVM 仅仅是一些简单的数学运算和有固定宽度的字节串操作)但是因为是链下,计算资源对比链上高很多。所以基本来说是图灵完备的。

简单来说对比来说可以把btc的opcode比作AluVM指令集。btc的栈比作AluVM的寄存器。

但是因为opcode的指令集是非图灵完备的加上btc上面有限的空间。所以btc的脚本扩展性是明显受限的。而AluVM是部分复制的无限状态机(PRISM)。

\

<!--EndFragment-->

版权声明

本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门