Fractal、OP_NET、AVM、BRC100、可编程符文,BTC 还有哪些扩展方案?
自 2024 年第一季度以来,BTC 生态的投机热情并不及 2023 年,但随着越来越多的开发者加入并熟悉 BTC 模型,BTC 生态在技术层面的进展可谓神速,特别是在可编程性扩展方案上。之前 Trustless labs 介绍过 BTC 的 L2 与 UTXO 绑定、BTC 再质押,本文将继续查缺补漏,对关注度极高的 Fractal Bitcoin 以及 BRC 20、CBRC、ARC 20 等 BTC 元数据协议的可编程方案进行介绍。
Fractal
Fractal 是一个基于 bitcoin core 客户端软件虚拟化,通过递归创建树状的可扩展框架,每一层区块链都能提高整个 Fractal 网络的性能。因为复用主要代码,Fractal 与比特币及其基础设施即时完全兼容,比如在挖矿上就完全通用。不同点在于 Fractal 激活了 op_cat 操作符,允许了实现更多的逻辑。
Fractal 由 Unisat 团队开发,Unisat 在 2024 年 1 月的博客中就提到了 Fractal 的相关开发进度。项目在 2024 年 6 月 1 日上线了 Beta 测试网, 7 月 29 日完成了一次测试阶段的重置,主网预计将于 2024 年 9 月上线。
团队刚刚发布了其代币经济学,Fractal 网络将有自己的代币, 50% 由挖矿产出, 15% 用于生态系统, 5% 向早期投资者预售,顾问与核心贡献者占 20% , 10% 的社区补贴金用于建立合作关系与流动性。
架构设计
Fractal 完全虚拟化 bitcoin core 客户端,将其封装成可部署和运行的区块链软件包(Bitcoin Core Software Package, BCSP)。然后通过递归锚定在比特币主网上,独立运行一个或多个 BCSP 实例。通过现代虚拟化技术,实现高效的硬件性能共享,使多个实例在主系统上运行。简单来说,类似于一个计算机(BTC 主网)上开了多个虚拟机实例(Fractal 构建的 BCSP 实例),并且还可以递归下去。
当大量链上交互需求出现时,可以选择性地将这些需求委派到更深层次。这种系统的动态平衡能力有助于避免任何特定层级的过度拥堵。为了更好的用户体验,Fractal 也对 bitcoin core 做出了一些修改,区块确认时间改为 30 秒或更短,区块的大小增大了 20 倍到 20 MB,这保证了足够的性能与够短的延迟。
Fractal 激活了 op_cat 操作符,让更多 BTC 上的扩容方案有了探索测试的可能。
在资产垮链层面,由于不同实例都运行在一个物理环境下,可以理解为在同一台 BTC 框架下运行了多条 bitcoin core 链,因此实例链之间可以通信,通过构造一个通用的资产转移接口来实现不同层之间的资产无缝转移。
比特币以及 BRC-20 和 Ordinals 等资产可以通过非中心化桥接。底层机制是具有动态替换的旋转 MPC 签名机制。目前看应该是包装一层。在后续迭代中,BTC 和其他主网资产也可以作为 brc-20 包装资产存在于 Fractal Bitcoin 上。
与典型的以太坊 Layer 2 解决方案相比,这种形式的虚拟化在主链之外通过附加抽象层实现计算可扩展性,同时保持与主链的一致性,不引入新的共识机制。因此,现在的 BTC ASIC 矿工和矿池可以无缝的加入 Fractal 网络。
Fractal 的安全性保证就在于其算力大小。在设计上主要通过三方面来增强 Fractal 的 PoW 机制的安全性。Fractal 引入了联合挖矿,每三个区块会有一个区块通过与 BTC 矿工合并挖矿生成,以帮助保护网络免受潜在的 51% 攻击;剩下的两个区块由 Fractal 网络自己的算力产出。由此可见,对于 BTC 矿工的影响是 Fractal 成功的关键,其代币经济将不可避免地向矿工进行倾斜。
同时,新创建的虚拟化实例链在启动阶段会经历一个初期脆弱期。在启动新实例时,操作员可以设置特定的区块高度以提供保护,直到实例达到安全和健康的状态。未来,拥有大量算力的矿工可以将其资源分配到不同的 BCSP 实例上,从而增强整个系统的鲁棒性和弹性。
Fractal 主网币和 sats 的关系
Fractal 主网币的挖矿产出是为了保证链运行,fb 链和 btc 基本一致,没有直接运行智能合约的能力,因此复杂的 defi 如 swap 功能是需要额外的基础设施。Unisat 承诺会将 brc 20 sats 将用于 swap 使用,这个 swap 在 Fractal 上运行,也需要自己的节点,这些节点为了自负盈亏收取的服务费用即为 sats。
AVM
AVM(Atomicals Virtual Machine)是 Atomicals Protocol 的 BTC 智能合约实现。AVM 创建了一个模拟 BTC 脚本允许的虚拟机,并在虚拟机中打开了多个 BTC 原始操作码,开发者通过比特币脚本组合实现智能合约,定义自己的规则来管理资产的创建和转移。
中本聪在比特币的最初设计了一种完全表达性的脚本语言设计,包含了一组丰富的原始操作码指令,这些脚本具备一定的数据存储能力,且执行是图灵完备的。后来比特币核心禁用了一些图灵完备性所需的操作码,如基本的字符串连接操作(OP_CAT)和算术运算符(如乘法 OP_MUL 和除法 OP_DIV)。
AVM 的思路是最大程度发挥 BTC 原始操作码能力。AVM 虚拟机模拟了 BTC 脚本,通过双堆栈 PDA(可压入存储自动机)实现了图灵完备。这个虚拟机运行在一个沙盒中,这个沙盒包含了索引器、指令解析器、全局状态,从而实现智能合约的处理与状态的同步与验证。
AVM 虚拟机的指令集包含了完整的 BTC 操作码,因此开发者可以正在主网上利用很多 BTC 未启动了功能进行编程。这让 AVM 看起来像是一个 BTC 生态扩展的原生先行网。
AVM 是一套架构,任何 BTC 的元数据协议,如 BRC 20、ARC 20、Runes、CBRC 都可以对其自定义,由应用程序开发者、服务提供者和用户共同管理,共同形成了一种自发的共识。因此几乎适用于任何元数据协议,只需要对虚拟机下的索引器进行微调即可。
AVM 已经发了一个测试版 https://x.com/atomicalsxyz/status/1823901701033934975,相关代码 https://github.com/atomicals/avm-interpreter。
OP_NET
官网:https://opnet.org/#
OP_NET 于 2024 年第三季度提出,是致力于在比特币网络上引入类似以太坊的智能合约功能,但更符合比特币的特性和架构。在 OP_NET 上进行交易,只需使用原生比特币,无需使用其他代币来支付节点激励或交易费用。
OP_NET 提供了一套完整、紧凑且易于使用的开发库,主要使用 AssemblyScript 编写(类似 TypeScript,可以编译为 WebAssembly),其设计目标是简化比特币相关技术的创建、读取和操作,尤其是在智能合约和比特币智能铭文(BSI, Bitcoin Smart Inscription)方面。
OP_NET 的核心功能与特性
OP_NET 保留了比特币的区块共识和数据可用性,确保所有交易都存储在比特币网络上并受到其不可篡改的保护。通过一个执行虚拟机(OP_VM),OP_NET 可以在比特币区块上执行复杂计算,所有提交的 OP_NET 交易都标记为 “BSI” 字符串,并在 OP_VM 中执行以更新合约状态。
OP_NET 节点运行着一个 WASM 虚拟机,因此支持 AssemblyScript、Rust 和 Python 等多种编程语言变成,通过利用 Tapscript 启用高级智能合约功能,使开发者无需许可即可直接在比特币区块链上部署和交互智能合约。
这些智能合约的代码被压缩后,写入了 BTC 交易中。这回生产一个 UTXO 地址,被视为合约地址,用户与合约交互需要向这个地址转账。
在于 OP_NET 网络交互时,除去 BTC 交易的手续费外,用户还需要额外为支付至少 330 聪的手续费,这是为了确保交易不会被 BTC 主网矿工认定为「粉尘攻击」。用户可以添加更多的 gas 费用,OP_NET 网络中交易的打包顺序会根据手续费排序,不完全依靠 BTC 区块打包顺序。如果用户支付的 OP_NET 交易费大于 250000 sat,超过部分将奖励 OP_NET 节点网络。
为了在 DeFi 应用中扩展 BTC 的使用,OP_NET 提供了 Proof of Authority 系统,允许 BTC 封装为 WBTC,主网 BTC 是通过多重签名的方式被桥接入 OP_NET 协议。
值得一提的是,OP_NET 与 SegWit 和 Taproot 兼容,并且其代币设计不绑定到 UTXO,避免了将代币错误发送给矿工的风险,进一步提高了系统的安全性和可靠性。通过这些特性,OP_NET 为比特币生态系统注入了更强的智能合约功能和去中心化应用支持。
OP_NET 的生态项目
OP_NET 的前身是 cbrc-20 协议,多数生态项目直接延续。生态涵盖了去中心化交易、借贷、市场做市、流动性提供、跨链桥等多个领域:
-
Motoswap: 这是一个去中心化交易协议,运行在比特币 Layer 1 上。
-
Stash: 这是一个去中心化借贷协议,运行在比特币 Layer 1 上。Stash 使用 OP_NET 的 WBTC 作为抵押品,允许用户进行无许可借贷,贷款以 USDs 稳定币形式发放。
-
Ordinal Novus: 这是 OP_NET 生态中的市场做市和流动性提供平台。
-
Ichigai: 这是一个去中心化聚合器,整合了多个 DeFi 平台,用户可以在一个界面上管理交易、市场追踪和投资组合。
-
SatBot: 一个集成于 Telegram 的交易机器人,支持用户通过 Telegram 实时执行交易、追踪市场和管理投资组合。
-
KittySwap: 一个运行在 OP_NET 上的去中心化交易所和永续合约平台。
-
Redacted: 提供链上私密的合规 DeFi 私人银行服务。
-
SLOHM Finance: 在 OP_NET 上推出的去中心化储备货币项目。
-
BuyNet: 为比特币 DeFi 生态系统开发的买入机器人。
-
SatsX: 一个在 OP_NET 上开发多功能特性和工具的项目,扩展生态系统的能力。
-
Meme Coins 如 Satoshi Nakamoto Inu, Zyn, Unga, Pepe: 这些是基于 OP_ 20 协议的 Meme 代币,均由 OP_NET 支持。
BRC 100
文档:https://docs.brc100.org
BRC-100 是一种基于 Ordinals 理论构建的去中心化计算协议,通过给 brc 20 加入“销毁”、“铸造” 等新操作,通过对这些新操作的结合,在索引器中记录不同地址持有的代币余额与状态,从而实现复杂的 defi 操作。开发者他也可以在 BRC-100 协议的基础上扩展更多的操作符,来扩展业务。
BRC-100 协议的操作
-
mint2:用于生成新的代币,且会增加整个系统的流通量。通常需要来自某个应用程序或地址的权限才能操作。
-
mint3:与mint2类似,但不会增加流通量。它主要用于将应用中的余额转换为UTXO(未花费交易输出),这些余额可以在其他应用中使用。
-
burn2:用于销毁代币,同时更新应用程序的状态。销毁的代币可以在满足特定条件下通过mint2重新生成。
-
burn3:与burn2相似,但不减少流通量,而是将代币转换为应用程序的状态。销毁的代币可以通过mint3重新生成。
扩展和兼容性
计算能力和状态转换可以通过 BRC-100 扩展协议进行扩展。所有 BRC-100 扩展协议相互兼容,即实现 BRC-100 及其扩展协议的代币可以在所有应用中使用。同时,BRC-100 协议及其扩展协议可以通过改进协议进行更新和升级。
BRC-100 协议及其所有扩展和改进协议统称为 BRC-100 协议栈,所有 BRC-100 扩展协议相互兼容,即实现 BRC-100 及其扩展协议的代币可以在所有应用中使用,并且支持跨链操作。有 BRC-101 ,BRC-102 和 BRC-104 :
-
BRC-101 是一个去中心化的链上治理协议,定义了如何治理基于 BRC-100 协议或其扩展协议的应用程序。
-
BRC-102 是针对 BRC-100 资产的自动化流动性协议,它为基于 BRC-100 协议栈的一对代币定义了基于“恒定乘积公式”(x*y=k)的自动化做市方法。
-
BRC-104 是一个流动性质押/重质押池协议,定义了如何通过质押将 BRC-20 资产、符文资产和 BTC 包装为 BRC-100 资产,以及如何将 BRC-100 资产奖励分配给 BRC-100 资产、BRC -20 种资产、符文资产或 BTC 质押者。 BRC-104 是 BRC-100 协议栈的 Asset Wrapping 协议和 Yield Farming 协议。
BRC-100 生态项目
项目方正在为 BRC-100 协议索引器探索一种实现最小索引的方法。需求方可以部署自己的最小索引来获取 BRC-100 协议栈所有资产的状态,而无需实现所有扩展协议的复杂计算逻辑。而且,最小索引不需要频繁更新或升级。
BRC-100 生态中有 3 个项目:
-
inBRC (Launched) - 第一个 BRC-100 市场和索引器: https://inbrc.org/。
-
100Swap (Launched) -第一个基于BRC-102 协议的比特币L1 AMM 铭文去中心化交易所: https://100swap.io/。
-
100Layer (Developing) - 比特币L1上的比特币生态系统的流动性协议,基于BRC-104 协议和 BRC-106 协议,由去中心化抵押品支持的稳定币、包装代币和流动性挖矿组成: https://100layer.io/。
可编程 RUNES(Protorunes)
符文本质上是一种数据结构,存储在比特币的 OP_RETURN 字段中。与其他基于 JSON 的协议(如 BRC-20)相比,符文更为轻量化,不依赖复杂的索引系统,保持了比特币的简单性和安全性。
可编程符文是符文的扩展层,允许创建带有符文的可编程资产。引入这些资产可以存在于 UTXO 中,并支持类似 AMM(自动做市商)协议的操作。可编程符文的核心理念是在比特币区块链上利用数据,通过虚拟机或类似技术,实现智能合约的功能。
Proto-Runes Protocol
在可编程符文中,最主要的项目是 Proto-Runes Protocol,由 oyl 钱包创始人@judoflexchop 团队主导开发。目前已开源:https://github.com/kungfuflex/protorune
Proto-Runes Protocol 是一种标准和规范,为可编程符文提供了框架,通过在子协议(meta protocols)之间管理和转移符文资产,可以构建 AMM、借贷协议或成熟的智能合约。
比如 Proto-Runes Protocol 在比特币网络上实现了类似 Uniswap 的 DEX(去中心化交易所),支持符文资产的原子交换和流动性池的创建。通过原型销毁和原型消息的组合,用户可以在不离开比特币网络的情况下进行去中心化交易和资产管理。
简单来说,Proto-Runes Protocol 允许符文被 Burn 成可编程符文 Protorunes 的形式,从而赋予符文额外的功能和用途。
Protoburn 和 Protorunes
Proto-Runes 的关键机制之一是 Protoburn,它允许用户将符文销毁并转换为仅供子协议使用的表示形式,这些符文资产通过 Runestone 的指针或符文协议上的 edict(法令)目标化,从而在子协议中生成新的资产形式,也就是可编程符文 Protorunes。
原型销毁通过将符文锁定在 OP_RETURN 输出上来确保其不可花费性。这种机制确保了符文资产能够安全地从主协议转移到子协议,从而允许在子协议中进行进一步的操作和交易。
这一过程通常是单向的,即资产从符文协议转移到子协议中,但无法直接转回。Protoburn 消息嵌入在 Runestone 的 Protocol 字段中的 Protostone 内,其协议标签为 13 (符文协议标签)。消息包含目标子协议 ID 以及资产的指针等信息。这一机制为子协议之间的资产管理和转移提供了基础,并且允许原子交换(Atomic Swaps)等功能。
Protomessage
在 Proto-Runes 协议中,Protomessage 是指在子协议中执行的操作指令。它通过在 Protostone 结构中编码并由索引器解析来实现。Protomessage 通常包括对资产的操作请求,如转账、交易或其他协议定义的功能。当索引器解析到 Protostone 中的消息字段时,该字段包含一个字节数组,通常会通过 protobuf 或其他子协议预期的序列化器进行解析,然后作为参数传递给子协议的运行时。该消息可能涉及资产转移、交易逻辑或其他协议功能。
指针用于指定 Protostone 的目标位置,这个位置可以是交易输出中的一个 UTXO,也可以是另一个 Protostone。如果子协议决定不执行某个输入,交易失败时,protorunes 会被退还到退款指针(refund_pointer)指向的位置,将未使用的资产退还给原交易的发起方。
Proto-Runes 协议的运行机制
Proto-Runes 协议的运行机制是:索引器首先处理符文协议中的 Runestone 特性,然后按顺序处理子协议的协议消息。所有的 Protostone 按照它们在 Runestone 的 Protocol 字段中出现的顺序依次处理。为了避免复杂性和潜在的安全漏洞,Proto-Runes 协议禁止递归执行原型消息,即每个原型消息只能执行一次,任何递归指令将导致交易失败,未使用的资产会被退还。
在 Proto-Runes 协议中,LEB 128 (Little Endian Base 128)是一种用于表示大整数的可变长度编码方式。LEB 128 编码被广泛用于表示协议字段和消息,以节省空间并提高处理效率。每个子协议都有一个唯一的协议标签,用于区分不同的子协议。这些标签以 u 128 值表示,并且在 Protostone 中作为 LEB 128 编码的值出现。指针用于指定 Protostone 的目标位置,可以是交易输出中的 UTXO,也可以是另一个 Protostone,甚至引用原型消息,以便在子协议中实现复杂的操作逻辑。
最新进展:创世 Protorune
QUORUM•GENESIS•PROTORUNE 是第一个 Protorrune,它的 Protoburn 已成功完成,可以看到 ord 索引器的正确运行,其中 Protoburn 发生在没有 cenotaph 的情况下,因为用了 OP_RETURN 输出 QUORUM•GENESIS•PROTORUNE 的余额,可通过这个链接看到:https://mempool.space/tx/eb2fa5fad4a7f054c6c039ff934c7a6a8d18313ddb9b8c9ed1e0bc01d3dc9572。
这个创世 Protorune 仅作为参考实现,也不打算用于出售。它旨在作为 Protorune 标准的公开论坛,并可集成到协议中,为项目代币提供治理功能。
@judoflexchop 团队仍在为这个 genesis protorune 一个 WASM 开发索引器:https://github.com/kungfuflex/quorumgenesisprotorune
这是一个在比特币 L1 上实现链上治理的功能模型,作为索引器,允许用户通过 protomessage 生成投票代币,每个提案中同一范围的符文只能生成一次投票代币。提案在达到法定人数后自动执行,用户也可以通过将投票代币转移到不可支出的地址来撤回投票。整个过程确保了治理的透明和有效性。