解決比特幣的 gas 問題 (無需硬分叉) | 觀點

每個智能合約平台都內建一種費用資產。例如,以太坊(ETH)有 ETH,索拉納(SOL)有 SOL,但對於比特幣(BTC)來說,情況就變得複雜。如果你想要表達豐富的應用,通常最終還是會採用第二個網路的經濟模型。

摘要

  • 比特幣不定價計算,只定價區塊空間。與以太坊或索拉納不同,BTC的費用市場是圍繞 sat/vB 來進行交易包含,而非衡量智能合約執行。
  • 執行可以離線進行,而結算仍留在比特幣上。像 OpNet 這樣的系統在一個 Wasm VM 中運行合約邏輯,同時通過普通的 BTC 交易來錨定支付和最終狀態變更。
  • BTC 可以作為燃料資產而不需要新代幣。通過以 satoshis 定價執行成本,並通過比特幣交易結算交互,應用避免創建第二個費用經濟。

例如,在 Stacks 上,你用 STX 支付費用。在 EVM 類比特幣層,你可能會被告知 BTC 是燃料代幣,但它通常是具有 EVM 類慣例(包括 18 小數點)的 L2 原生表示,你仍然在該 L2 環境中操作。比特幣本身已經擁有一個乾淨的費用市場,用戶以 sat/vB 出價區塊空間,礦工優先處理較高費率。

考慮到這一點,如果智能合約交互可以作為普通比特幣交易啟動並支付,費用以 BTC 表示(無需額外的燃料代幣或分叉),而智能部分在其他地方運行並且能夠證明性地與比特幣相關聯,會是怎樣的情況?OpNet 正在尋找答案。

比特幣不計算(這是個問題)

比特幣的費用市場在一件事上表現出色:定價區塊空間。你以 sat/vB 競爭,礦工選擇最高費率,網路保持簡單且具有對抗性。比特幣不做的是運行一個通用的執行環境來衡量和收取任意計算的費用。比特幣腳本(Bitcoin Script)是故意無狀態且非圖靈完備的,沒有循環或跳轉,這樣每個節點都能預測性地驗證腳本,避免開啟無限計算的門。

這也是為什麼大多數比特幣智能合約方案最終都將執行放在一個能衡量計算並擁有自己費用市場的獨立系統中。一旦有了那個獨立的執行層,它通常會伴隨一個獨立的費用資產(例如,Stacks 以 STX 收費)。

這並不理想,若能在比特幣的原生費用市場內保持支付,同時將執行移到其他地方,會更佳。

執行不是比特幣需要做的事

一旦接受比特幣腳本是故意有限制的(無狀態且非為無限計算設計),你就會開始思考如何讓比特幣結算結果和支付。

事實上,執行可以在一個專門的虛擬機中進行,該虛擬機被構建為能確定性運行智能合約邏輯,而比特幣仍然是基礎層,通過其現有的費用市場來標記時間戳、排序和定價交互。在 OpNet 的設計中,合約邏輯由一個面向 Wasm 的 VM(OP-VM)評估,而更廣泛的節點堆疊則明確構建用於管理和執行智能合約,利用比特幣的交易和 UTXO 機制。

關鍵是,這並未配合一個新的費用資產。比特幣不需要衡量計算來作為燃料貨幣,它需要的是最終結算層,所有支付最終都在此進行並且錨定。

一個用 BTC 支付的合約調用長什麼樣

我們的交互模型遵循模擬-再花費的流程,而非傳統的智能合約執行模式,最終執行步驟以實際比特幣交易完成。首先,你的應用在模擬模式下調用合約方法。該請求經由提供者傳送到 OPNet 節點,該節點在其 VM 中執行合約並返回一個 CallResult(包括燃料/費用估算),而不會將任何內容廣播到比特幣網路。

如果該調用會改變狀態,你就將該 CallResult 作為執行提交。此時,庫會構建一個比特幣交易,簽名並廣播到比特幣網路。值得記住的兩點是:

  • 礦工費用是比特幣原生的。你選擇一個 sat/vB 的費率,選擇性地加入一個 sats 的優先費(priorityFee),並通過 maximumAllowedSatToSpend 設定硬性上限(該參數字面名稱為 maximumAllowedSatToSpend)。
  • 合約目標以 P2OP 風格的合約地址表示。合約實例會暴露其 p2op 地址格式,交易則引用“p2op 合約地址”作為合約目的地。

同時,OpNet 自身的計算衡量仍然存在。但它是以 satoshis 為單位定價(估算的 SATS Gas、退款在 SATS 中等),因此單位永遠不會偏離成為一個獨立的代幣經濟。

較少摩擦,更清晰的激勵

用戶不再需要採用第二個費用經濟來與應用交互。在比特幣上,費用已經是對區塊空間的拍賣,按字節定價並支付給礦工。當合約調用僅是比特幣交易時,你就回到了熟悉的領域(用 sat/vB 費用、mempool 的擁擠和礦工激勵),而不必學習一個獨立的燃料代幣市場。

此外,工具也傾向於標準比特幣工作流程,如 UTXO 管理、提供者連接,甚至離線/冷簽名。合約在 Wasm 運行時中,使用 AssemblyScript 編寫,旨在達到類 Solidity 的表達力,同時不假裝比特幣腳本突然變成一個 VM。

比特幣作為燃料,無需第二代幣

關於 BTC 不能作為燃料的說法,通常基於假設基層必須衡量計算來定價。比特幣不衡量計算;它衡量區塊空間並進行價值結算。

解決方案是讓一個虛擬機以確定性方式處理執行,然後將每個改變狀態的交互都通過標準比特幣交易路由,費用用熟悉的術語(如 sat/vB)表示,並以 satoshis 上限。在我們的方案中,這是在客戶端通過 feeRate 和 maximumAllowedSatToSpend 這些參數來實現的。

因此,也許 BTC 作為燃料確實是可行的。費用從端到端都保持 BTC 原生,而合約運行時仍然基於 WebAssembly(AssemblyScript → Wasm),保持邏輯的表達力而不改變費用貨幣。

Frederic Fosco

弗雷德里克·福斯科

弗雷德里克·福斯科,亦名丹尼·普雷恩維尤,是 OP_NET 的共同創始人,自 2013 年起就涉足比特幣。他推出 OP_NET 旨在使比特幣本地可編程,直接在層一解鎖智能合約和 DeFi 原語。他專注於構建真正的鏈上功能,無橋接、無托管、無包裝或合成比特幣,堅持自我托管和去中心化的原則。

BTC0.61%
ETH0.65%
SOL1.43%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 留言
  • 轉發
  • 分享
留言
請輸入留言內容
請輸入留言內容
暫無留言