详解AVM:基于模拟虚拟机上的比特币智能合约

作者:BitcoinSquare

就在本周,@atomicalsxyz发布了最新的 AVM 虚拟机白皮书,相信大家还记得去年的$ATOM 以及跨年时候打的$quark 等 ARC-20 代币,而 Atomicals 协议这次的 AVM 白皮书具体讲了什么,对于后续的比特币生态有什么影响呢,下面我们就来分析一下协议和白皮书的内容。

一、背景

随着比特币生态系统的发展,如Segwit、Taproot、Schnorr、MAST和Taproot Scripts等技术的更新推出,促使了新的应用的产生。在此基础上诞生了很多比特币的代币发行方式,也促进了比特币生态的不断发展。

Ordinals协议的诞生与比特币网络上的satoshi(聪)的概念密切相关。该协议引入了序数(Ordinals)和铭文(Inscriptions)的概念。序数是为每个聪按照其开采顺序分配一个唯一编号,无论聪在不同钱包间如何转移,其序数标识始终保持不变。铭文(Inscriptions)则是通过在聪上刻录信息实现的。结合SegWit和Taproot,Ordinals协议允许在比特币区块链上为每个聪刻录一个小于4 MB的文件,即铭文。随着比特币生态的发展,Ordinals创始人Casey建议使用Runes作为BRC-20的替代方案。相比BRC-20,Runes减少了服务器共识层,变得更加简单,同时不依赖链下数据,也不需要原生代币,非常适合比特币的原生UTXO模型。

而我们要介绍的 Atomicals 协议的诞生也是机缘巧合,最开始创始人 Arthur 在 Ordinals 协议刚发布的时候想在其基础上开发一个 DID 项目,但是在过程中发现了有些局限性,随后在 2023 年 5 月份在推特上发不了关于协议的构思推文,随后在去年 9 月份正式上线。对于 Atomicals 中的 ARC-20概念,其实并不是很多人理解的铭文协议,它更像是一种染色币,它将比特币的最小单位 sat 作为基本“原子”,其独特之处在于每个代币单位至少由一个聪单位支持,并根据使用未花费交易输出 UTXO 架构发送和接收比特币的相同规则进行操作。

在追踪历史交易记录和计算当前的 ARC-20 资产余额时,人们仅需检查与 ARC-20 代币相关的比特币 UTXO,无需从链下存储模块中检索额外数据。这一点是 ARC-20 与 BRC-20 协议之间的主要区别,因为 BRC-20 协议通常依赖于链下索引器和链下存储层。ARC-20 协议显著降低了索引服务器成本,提高了去中心化程度,且其转账安全性依赖于 BTC 网络,不产生冗余交易,同时保持与 BTC 相同的原子性,适合开发多种原生应用。Atomicals 协议不仅仅是想只做资产发行,而如何为资产提供更丰富的使用场景,以增强其流动性,并在功能性上进行更多拓展。

二、 AVM 是什么

比特币最初设计为一种点对点的电子现金系统,具备一定的Script脚本数据存储能力和基本的OP Codes操作码,迄今为止,比特币上的所有覆盖协议都是基于固定或预定义的状态机。所有覆盖协议基本上共享两种状态机:一种用于信号传递以创建数字资产,另一种用于管理这些数字资产的转移。状态机规则本质上是不可更改的,并且硬编码在各自的覆盖协议索引器中——应用开发者无法自定义数字资产的行为。

然而,由于UTXO模型和预定义状态转化规则的限制,这种无状态模型只能处理BTC单一资产的有限管理。为了在比特币网络上新增如BRC20、ARC20、Runes等资产,需要更复杂的动态“状态机”模型来记录这些资产的存储、交易和状态变化。其中一种方法是采用外部协议和Layer 2解决方案,比如我们之前文章中提到的Nervos Network、RGB、闪电网络等,是在链下构建“状态机”模型;而另一种方法是直接扩展Script脚本功能,增加新的操作码或存储空间,比如Covenant和OP_CAT等BIP提案。然而问题是第一种方式在短时间内难以达成共识,而第二种方式又存在不确定性。

AVM虚拟机则提供了一种介于两者之间的解决方案,直接在比特币主网上构建虚拟机执行环境,以特殊处理方式实现复杂资产的创建和转移,且允许应用开发者完全自定义和定义其数字资产的任意规则。基本思路是允许开发者将智能合约代码放置在交易的数据段中,以便所有相关方都可以执行。通过将代码存储在区块链上,不同的相关方可以通过以相同方式执行逻辑来轻松同步状态。

三、工作原理

我们都知道智能合约编程语言应至少具备以下关键属性:可预测的运行时间、图灵完备性以及在资源受限系统上的高效执行的能力。从上述要求来看,比特币脚本非常适合作为定义数字资产创建和转移规则的指令集。智能合约程序代码存储在比特币交易中,覆盖协议索引器执行这些代码以进行各种方法调用和状态转换。所有相关方执行相同的逻辑并达成相同的状态转换,从而形成一种自发的共识。

通过模拟比特币虚拟机及其脚本解释器来创建和执行各种覆盖数字资产的智能合约。比特币区块链作为时间戳和数据提供者,将智能合约程序存储在链上,但这些程序的执行由覆盖协议索引器在沙盒运行时中进行。覆盖协议索引器节点由应用开发人员、服务提供商和用户共同操作,从而形成一种新兴的共识:

1、比特币脚本模拟:比特币指令集,通过双堆栈 PDA 实现了图灵完备属性;

2、沙盒运行环境:整个模拟机处于受控的隔离环境中,使得沙盒中的执行和之外的执行互不干扰;

3、状态哈希:可以让参与者验证其索引器的状态是否正确同步,防止了状态不一致潜在的攻击性。

简单来说,AVM 就是直接利用当前 BTC 的有限的存储空间和 OP Codes 处理框架,通过在每笔 BTC 主网交易中引入一种特殊的编码和解码方式,也就是沙盒环境,这个沙盒是比特币脚本解释器的精简版本,具有一些显著的差异,比如直接接受执行锁定脚本(scriptPubKey)和解锁脚本(scriptSig),以及各种其他数据如代币状态和受保护内存快照,而这个环境可以独立完成一整套资产的存储、交易记录等,继而就可以实现复杂的智能合约处理以及状态同步和验证。

四、未来发展

那在未来 AVM 有那些可能的发展呢,它提供了一个能够处理智能合约和dApp的高级执行环境,配备用于增强性能的自定义指令集,同时可以降低Gas费,优化状态转换功能以增加并行处理能力,从而提高吞吐量和可扩展性。同时,AVM实现了互操作性和跨链通信。简单来说 AVM 让 Atomicals 协议能够执行各种任务,不仅仅是之前简单的代币发行机制。在满足了发行资产、管理资产等需求的基础后,才可以真正的将比特币生态发展起来,也才会有更加大规模的应用和系统架构的实现。

尽管AVM存在诸多局限性,例如只能操作ARC20资产,以及在主网出块速度和费率下的一层智能合约的可用性仍是未知数,此外,尽管比特币脚本语言设计用于资源受限的环境,复杂智能合约仍可能消耗大量计算资源,在执行效率方面仍有疑虑。但是它的出现依然令人兴奋,期待更进一步的技术创新突破。