Alkanes:不新开链、不改共识,把 WASM 合约挂进比特币交易 图 1
Alkanes:不新开链、不改共识,把 WASM 合约挂进比特币交易 · 图 1

“比特币上的智能合约”是个被反复兜售的概念,多数方案的答案是”再建一条链”。Alkanes 的答案不太一样:不新开链、不组新验证者集合,把 WASM 合约的执行结果交给一个读比特币区块的索引器去算。官方文档管这叫比特币原生的智能合约元协议。这个路线拿到什么、放弃什么,本文按其文档把机制摊开。

合约地址是两段编号

在 Alkanes 的世界观里,每个合约(官方称 alkane)拥有一个 AlkaneId,结构是一对无符号 128 位整数:block 加 tx——用”哪个区块的第几笔交易”给合约发身份证。这与以太坊”地址由部署交易算出”的结果类似,但语义完全依附比特币区块坐标:合约的身份就是它在比特币账本上的出生位置。系统操作(例如部署合约)也通过保留的调用数据编号完成,工厂式部署可以把合约钉在预留号上,让地址可预期。

Alkanes:不新开链、不改共识,把 WASM 合约挂进比特币交易 图 2
Alkanes:不新开链、不改共识,把 WASM 合约挂进比特币交易 · 图 2

调用一条交易、读一次模拟

合约写好用 Rust 编译为 WASM。与合约交互的载体叫 cellpack:开头两个数是目标合约的 AlkaneId,后面依次是操作码(opcode,相当于函数选择器)和参数。改状态的操作——比如 mint——必须提交一笔真正的比特币交易,调用数据按 Protorune 消息格式打包进 OP_RETURN 输出;只读操作则不必花钱,直接调用索引器提供的 simulate 接口,把同样的调用数据喂进去,同步拿返回值,官方文档给了完整的调用示例。此外还有 trace 类接口返回执行轨迹。开发者在合约里用带注解的枚举声明方法,构建时生成元数据导出,读回合约能干什么。

“不改共识”的真实含义

官方叙事强调:合约由运行该协议的节点确定性执行,凡跑这套软件的索引器都会算出同一份状态,一切锚定在比特币区块上。但要把两句话分开读。拿到的是:状态演化以比特币区块为唯一输入,不需要相信独立链的出块权。没拿到的是:比特币共识层并不知道 Alkanes 的存在——全节点不会替你验证合约执行,正确性依赖各家索引器实现的一致性。换句话说,这是”比特币排序、链下计算”的元协议,与侧链的差别在于信任的落点从另一条链的验证者,换成了这份索引软件的实现质量与版本收敛程度。评估它的安全性,等价于评估使用它的索引器有多主流、多一致。

与铭文、Runes 的地基关系

Alkanes 的调用数据复用 Protorune 结构、身份复用比特币区块坐标,与 Ordinals、Runes 共享同一批”从比特币交易里读语义”的基础设施,UniSat 等钱包与索引服务已把 Alkanes 资产纳入 UTXO 管理范围。对藏家的实际含义:一枚 Alkane 代币的转账体验接近 Runes,但它背后是一张图灵完备的合约——mint 规则、上限、权限都由开发者代码定义,合约风险模型也从 Runes 的”规则写在协议里”退回”规则写在项目代码里”。买之前能读代码,或者能读到有人替你把代码看完,是这门新基建给老问题开的旧处方。

普通藏家接触 Alkane 资产时,可以把尽调压缩成三步。第一步查身份:拿到合约的 AlkaneId 两段坐标,去索引器页面确认它由哪笔比特币交易部署,坐标造假在这一层就会露馅。第二步读接口:用 simulate 调用合约的元数据导出,看它声明了哪些操作码、参数格式是什么,mint 类写操作的规则(上限、价格、权限)都要在这里落到数字上,而不是营销文案里。第三步留证据:与索引服务交互时保存原始响应,注意不同服务商的版本可能落后——元协议没有全节点背书,“各家索引器算得一致”本身就是需要监测的系统性假设,大额操作前换一家独立索引服务交叉验证,是目前最现实的风控。

本文为机制说明,不构成任何投资建议。