如何理解RGB VM和scripting?

简单来说对比来说可以把btc的opcode比作AluVM指令集。btc的栈比作AluVM的寄存器。但是因为opcode的指令集是非图灵完备的加上btc上面有限的空间。所以btc的脚本扩展性是明显受限的。而AluVM是部分复制的无限状态机(PRISM)。

<!--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-->

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
熵十达维
熵十达维
去中心化爱好者&社区开发者。21年开始专注区块链领域,专注于比特币和以太坊生态系统。全栈开发者,专注于构建区块链生态基础设施,曾参与RGB生态和BTC L2公链开发。