解决比特币的gas问题 (无需分叉) | 观点

每个智能合约平台都内置了费用资产。例如,以太坊(ETH)有ETH,索拉纳(SOL)有SOL,但比特币(BTC)则情况变得复杂。如果你想要表达丰富的应用,通常会采用第二个网络的经济模型。

总结

  • 比特币不对计算进行定价,只对区块空间收费。与以太坊或索拉纳不同,BTC的费用市场是围绕sat/vB进行交易包含的,而不是对智能合约执行进行计量。
  • 执行可以离链进行,而结算仍在比特币上。像OpNet这样的系统在Wasm虚拟机中运行合约逻辑,同时通过普通的BTC交易锚定支付和最终状态变化。
  • BTC可以作为Gas资产,无需新代币。通过以聪(satoshis)定价执行成本,并通过比特币交易结算交互,应用避免了创建第二个费用经济。

例如,在Stacks上,你用STX支付费用。在EVM风格的比特币层,你可能会被告知BTC是Gas代币,但它通常是具有EVM类似惯例(包括18个小数点)的L2本地表示,你仍然在该L2环境中操作。与此同时,比特币本身已经拥有一个清晰的费用市场,用户竞价区块空间(以sat/vB计价),矿工优先处理高费率。

考虑到这一点,如果智能合约交互可以作为普通比特币交易发起和支付,费用以BTC计(无需额外的Gas代币或分叉),而智能部分在其他地方运行并且可以被证明与比特币相关联,会是怎样的场景?OpNet正致力于提供答案。

比特币不计量计算(这是个问题)

比特币的费用市场擅长一件事:定价区块空间。你用sat/vB竞争,矿工选择最高费率,网络保持简单且具有抗攻击性。比特币不做的是运行一个通用的执行环境,链上可以测量和收费任意计算。比特币脚本(Bitcoin Script)故意是无状态的,不是图灵完备的,特别缺少循环或跳转,因此每个节点都可以可预测地验证脚本,而不引入无限计算的风险。

这也是大多数比特币智能合约方案最终将执行放在单独系统中的原因,该系统可以计量计算并拥有自己的费用市场。一旦有了那样的执行层,通常会配备一个单独的费用资产(比如Stacks,收费用STX)。

这并不理想,理想的系统是可以在比特币原生费用市场内支付,同时将执行移到其他地方。

执行不是比特币需要做的事

一旦接受比特币脚本(Bitcoin Script)是有限的(无状态,不设计为无限计算),你就会考虑如何让比特币结算结果和支付。

实际上,执行可以在专门的虚拟机中进行,该虚拟机设计用来确定性运行智能合约逻辑,而比特币作为基础层,负责时间戳、排序和通过现有的费用市场定价交互。在OpNet的设计中,合约逻辑由Wasm导向的虚拟机(OP-VM)评估,而更广泛的节点堆栈则明确构建为使用比特币的交易和UTXO机制来管理和执行智能合约。

关键是,这不需要配备新的费用资产。比特币不需要对计算进行计量来作为Gas货币。它需要成为最终结算层,所有支付最终都在这里进行并锚定。

一个用BTC支付的合约调用示例

我们的交互模型遵循模拟-然后支付的流程,而不是传统的智能合约执行模式,最终执行步骤作为实际的比特币交易发生。首先,你的应用在模拟模式下调用合约方法。该请求通过提供者传递到OPNet节点,节点在其虚拟机中执行合约,并返回一个CallResult(包括Gas/费用估算),而不广播到比特币网络。

如果调用会改变状态,你将该CallResult作为执行内容发送。此时,库会构建一笔比特币交易,签名并广播到比特币网络。值得记住的两点:

  • 矿工费用是比特币本地的。你选择一个sat/vB的费率,可能还会加上优先费(sats),并通过maximumAllowedSatToSpend参数设置硬性上限(参数名就是maximumAllowedSatToSpend)。
  • 合约目标以P2OP风格的合约地址表达。合约实例暴露其p2op地址格式,交易引用“p2op合约地址”作为合约目的地。

同时,OpNet的计算计量仍然存在,但以聪(satoshis)为单位(估算的SATS Gas、退款为SATS等),因此单位永远不会进入单独的代币经济。

更少摩擦,更清晰的激励

用户不再需要采用第二个费用经济体系来与应用交互。在比特币上,费用本身就是区块空间的拍卖,按字节计价,支付给矿工。当合约调用只是比特币交易时,你就回到了熟悉的环境(用sat/vB的费用、内存池的波动和矿工激励),无需学习一个单独的Gas代币市场。

此外,工具链也倾向于标准的比特币工作流程,比如UTXO管理、提供者连接,甚至离线/冷签名。合约运行在Wasm环境中,用AssemblyScript编写,旨在实现类似Solidity的表达能力,而不是假装比特币脚本突然变成了虚拟机。

比特币作为Gas,无需第二个代币

关于BTC不能作为Gas的说法,通常基于假设基础层必须对计算进行计量以定价。比特币不计量计算;它只计量区块空间并进行价值结算。

解决方案是让虚拟机以确定性方式处理执行,然后通过标准比特币交易将每个状态变更的交互路由出去,费用用熟悉的单位(如sat/vB)表达,并在聪中封顶。在我们的方案中,这在客户端通过参数如feeRate和maximumAllowedSatToSpend实现。

因此,也许BTC作为Gas的想法是真实可行的。费用从头到尾保持比特币本地化,而合约运行时基于WebAssembly(AssemblyScript → Wasm),既保持了表达能力,又不改变费用货币。

Frederic Fosco

弗雷德里克·福斯科

弗雷德里克·福斯科,也被称为丹尼·普莱恩维尤(Danny Plainview),是OP_NET的联合创始人,自2013年以来一直涉足比特币。他推出OP_NET,旨在使比特币本地可编程,直接在第1层解锁智能合约和DeFi原语。他专注于构建真正的链上功能,不依赖桥接、托管、包裹或合成比特币,坚守自我托管和去中心化的原则。

BTC3.34%
ETH10.68%
SOL6.8%
STX2.9%
查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 评论
  • 转发
  • 分享
评论
请输入评论内容
请输入评论内容
暂无评论