基於Ordinals在比特幣L1網絡實現EVM圖靈完備智能合約支持——BxE協議

1. BxE項目背景

區塊鏈技術自誕生以來,爲金融、供應鏈、數字身份等領域帶來了變革性的創新。然而,作爲第一個成功應用區塊鏈技術的比特幣,存在着一些侷限性,如較低的交易吞吐量、較高的能源消耗以及有限的腳本功能。這使得比特幣在支持複雜應用和智能合約方面顯得力不從心。

爲了解決這些問題,比特幣社區提出了許多解決方案,其中之一便是Ordinals協議。Ordinals協議通過在比特幣交易中嵌入數據,使得開發者可以在比特幣網絡上實現更復雜的邏輯和功能。儘管Ordinals在一定程度上彌補了比特幣的不足,但它依然存在一些缺陷,如較低的數據存儲效率和較差的互操作性。

此外,隨着以太坊和其他智能合約平臺的興起,一種名爲BRC-20的新協議應運而生。BRC-20試圖在比特幣網絡上實現類似以太坊的代幣發行和交易功能。然而,由於比特幣網絡和以太坊網絡之間的本質差異,BRC-20在性能和安全性方面存在一定的侷限。

鑑於此,BxE項目旨在突破現有框架,構建一個基於比特幣網絡的支持圖靈完備智能合約併兼容以太坊生態的新型區塊鏈基礎設施。通過引入先進的共識算法、優化數據存儲結構以及改進跨鏈互操作性,BxE項目有望爲用戶帶來更高效、安全且易於使用的區塊鏈服務。

爲了實現這一目標,BxE項目採用了以下策略:

  1. 利用Ordinals協議在比特幣網絡上實現智能合約的支持,實現創建智能合約交易、合約調用交易的封裝與轉換。
  2. 通過搭建與以太坊網絡兼容的EVM(以太坊虛擬機),實現跨鏈互操作性,使得以太坊智能合約能夠在比特幣網絡上運行。
  3. 設計並實現一套完善的系統合約,包括比特幣查詢系統合約、Ordinals合約和BRC-20系統合約,爲用戶提供豐富的功能和便捷的操作體驗。
  4. 建立一個BxEvm的Jsonrpc網關,方便用戶查詢合約執行結果、比特幣區塊和交易信息、Ordinals銘文數據以及BRC-20交易詳情。

通過這些措施,BxE項目有望爲比特幣網絡帶來新的生機和活力,推動區塊鏈技術在各個領域的廣泛應用和發展。

2. BxE項目概述

2.1 項目目標

BxE協議(Bitcoin x Ethereum Protocol) 旨在充分利用比特幣強大的安全性、去中心化特性和龐大的網絡效應,在其基礎上構建一個可編程、跨生態互聯的新一代區塊鏈生態系統。通過創新的技術設計,BxE將成爲連接比特幣與以太坊Web3生態網絡的橋樑,推動整個加密經濟的發展。

2.2 關鍵創新

基於Ordinals協議,創新性地將以太坊EVM遷移到比特幣網絡上運行,實現了以太坊dApp與比特幣網絡的無縫集成。
通過定製設計的BxEVM虛擬機,使得使用Solidity等語言編寫的智能合約可直接部署在比特幣網絡上執行,開啓全新的DeFi、NFT等應用場景。
藉助Ordinals的數字藝術特性,BxE生態上的NFT不僅具備獨特的藝術價值,也能作爲金融衍生品進行投資交易。
搭建了BRC-20、BXET等創新型Token協議,使資產在比特幣鏈和以太坊鏈之間自由流轉,促進不同生態的價值整合。

2.3 生態願景

BxE項目將致力於打造一個開放、多元、安全高效的去中心化合約生態。我們將爲開發者提供友好的開發工具、完善的技術文檔和豐富的社區支持,鼓勵社區成員共同參與BxE的建設和發展。同時,我們也將推出官方的錢包、瀏覽器等工具,方便用戶與BxE交互。我們相信,通過BxE的努力,將爲全球用戶帶來更多的創新應用和更佳的區塊鏈體驗。

2.4 BxE的優勢和價值

BxE項目的核心優勢和價值主要體現在以下幾個方面:

  1. 安全性: BxE基於比特幣網絡Ordinals協議,繼承了比特幣的安全性和去中心化特性,具有極高的安全性和可靠性,由於無需對現有比特幣網絡進行任何升級,所以不會引入風險。
  2. 去中心化: BxE協議採用了去中心化的設計理念,通過比特幣網絡進行合約安裝、調用的共識和存儲,實現了比特幣網絡無需信任的圖靈完備智能合約。

  1. 互操作性: BxE項目致力於打通比特幣網絡各大生態如Ordinals銘文、BRC-20等,實現了比特幣銘文、域名、NFT、BRC-20等各生態的無縫對接,爲用戶提供了更多的選擇和便利。
  2. 可擴展性: BxE協議將以太坊虛擬機引入比特幣網絡,可以基於EVM圖靈完備的特性,將以太坊成熟的Layer2、預言機等特性引入比特幣網絡,從而在此基礎上建立良好的可擴展性和高吞吐量,能夠滿足不同規模的應用需求。
  3. 以太坊Web3生態兼容性: BxE協議以EVM爲智能合約執行環境,以以太坊交易格式爲合約的安裝和調用入口,通過提供兼容以太坊Jsonrpc的網關,在比特幣網絡爲用戶帶來了比肩以太坊的Web3.0體驗和更多的應用場景。
  4. 更低的Token轉移手續費:在BRC-20協議中,用戶要完成一筆轉賬交易,需要先通過2筆交易完成transfer的銘刻,然後再通過第三筆交易將銘刻的聰轉移給收款人,手續費約:154+186+212=552。而在BxE協議中,用戶只需要兩筆交易完成ERC20合約transfer方法調用的銘刻,手續費約爲 154+156=310。

3. BxE技術架構

3.1 底層基礎 - 比特幣Ordinals與以太坊EVM

3.1.1 比特幣Ordinals

Ordinals是比特幣網絡的一項革命性拓展方案,允許將任意數據永久性地銘刻到比特幣區塊鏈中,打開了在比特幣鏈上發行NFT、發行代幣等無限可能。BRC-20協議便是利用了Ordinals的優勢,第一次在比特幣網絡上實現了類似ERC-20的代幣標準。

3.1.2 以太坊交易

以太坊交易是以太坊區塊鏈上的基本操作單元,通過它可以在以太坊網絡上實現以太幣的轉賬和智能合約的調用。交易是由發送者發起的,經過挖礦節點驗證和打包,最終被記錄到區塊鏈上的。
以太坊交易包含了交易的發送者Nonce值、接收者、轉賬金額、智能合約調用數據、Gas相關信息和發送者對交易的簽名(通過前面可以恢復出發送者地址)。
以太坊交易的作用包括:

  1. 以太幣轉賬:用戶之間可以通過交易將以太幣從一個賬戶轉移到另一個賬戶。
  2. 部署智能合約:開發者可以通過交易將智能合約的字節碼部署到以太坊網絡上,創建一個新的智能合約地址。
  3. 調用智能合約:用戶可以通過交易向智能合約發送數據,觸發智能合約的函數執行。
  4. 存儲信息:交易的數據字段可以用來在以太坊網絡上存儲任意信息,實現去中心化的信息存儲和傳輸。

3.1.3 EVM虛擬機

EVM,全稱Ethereum Virtual Machine,即以太坊虛擬機,是以太坊區塊鏈的核心部分。它作爲一個全局計算設備,用於執行智能合約。EVM允許任何人在以太坊區塊鏈上執行任意複雜的代碼,只要他們願意爲執行的計算步驟支付足夠的GAS。
EVM執行一次交易或智能合約時,需要以下信息:

  1. 調用交易的發送者地址、接收者地址、轉賬金額、Gas價格、Gas限額、調用數據等信息。
  2. 合約的字節碼獲取接口,即通過地址可獲得對應合約的二進制代碼。
  3. 當前區塊的信息,包括:區塊高度、難度、時間戳等信息。
  4. 歷史區塊的查詢接口,用於根據區塊高度獲取區塊哈希。
  5. 賬戶的狀態,包括:賬戶的餘額、合約的存儲空間等信息。
  6. 智能合約狀態數據的讀寫接口。

3.2 BxE整體設計

BxE協議的整體設計如下圖所示,它由比特幣Ordinals交易與以太坊交易的轉換器、BxEVM虛擬機與合約狀態數據持久化服務、Bitcoin/Ordinals/BRC-20等多個系統合約和模塊組成,並提供了與以太坊Web3生態兼容的網關服務。

3.3 從比特幣交易中提取以太坊交易

BxE節點通過連接比特幣官方錢包或者運營商的RPC服務監聽比特幣區塊鏈上的Ordinals交易,提取交易中銘刻的內容,該內容主要包含了以太坊交易的Nonce值、Gas價格、Gas限額、接收者、轉賬金額、智能合約調用數據等數據。
其中的以太坊交易內容不包含簽名(R、S、V字段),實際上我們構造的以太坊交易的From字段(也就是交易發起人)是由Ordinals交易中P2TR隔離見證腳本中的公鑰部分計算而來。在附加上From字段後,該以太坊交易將發送給BxEVM執行EVM合約的安裝、執行等操作。

3.4 BxEVM以太坊交易的執行

BxEVM是BxE協議的核心組件,它是一個以太坊虛擬機的實現,兼容最新版本以太坊主網的合約邏輯,用於執行以太坊交易中的智能合約。BxEVM的執行結果將被獨立記錄和存儲,而不會寫入比特幣區塊鏈。
BxEVM的執行除了當前交易外,還需要從狀態數據庫中讀取合約字節碼、合約狀態數據和用戶賬戶數據,另外BxE協議還提供了比特幣交易和區塊到BxEVM所需的上下文的映射。BxEvm的執行結果包括合約執行的狀態變更、執行結果、Gas消耗、事件日誌等信息,這些信息將被存儲在BxE節點的本地數據庫中,並通過BxE網關服務對外提供查詢接口。

3.5 BxEVM執行結果的共識

BxE採用PoS質押挖礦的形式對BxEVM的執行結果進行共識。在BxE上提供了一個質押合約,用戶通過質押BXET成爲驗證者,驗證者可以在每個新比特幣區塊產生時執行其中的BxE交易,並將執行結果(包括賬戶狀態、合約狀態、收據)形成默克爾樹,並最終形成一個哈希值。該哈希值包含了所有歷史BxE交易的執行結果,被稱爲狀態根哈希。驗證者將區塊高度、狀態根和獎勵數額(包括出塊獎勵和Gas手續費獎勵)等信息組成狀態消息並提交到比特幣網絡。提交的方式有兩種:比特幣礦工在Coinbase中包含本區塊的BxE狀態消息,或者普通節點通過Ordinals交易在比特幣網絡銘刻指定高度的BxE狀態消息。

BxE節點在收到新比特幣區塊並解析其中的交易和BxE協議內容時,如果包含狀態消息,則驗證狀態消息的正確性,即驗證在指定區塊高度時,BxE協議執行後形成的狀態根是否與狀態消息中提交的狀態根相同,同時也驗證挖礦獎勵是否與BxE協議規定的獎勵相同,驗證通過則爲本區塊中狀態消息的提出者進行BXET的獎勵。如果有多個驗證通過的提出者,則平分該獎勵。

3.6 系統合約的設計

BxE平臺將預置諸如比特幣查詢、Ordinals查詢、BRC-20查詢等一系列系統合約,爲外部的EVM合約提供查詢比特幣鏈上數據的能力。

另外,爲了防止BRC-20代幣鎖定時對其UTXO關聯聰的鎖定,BxE協議還定義了一個BTC-ERC20合約,當任意數量的BTC被鎖定時,BTC-ERC20合約可以mint對應數量的WBTC實現了BTC的跨協議流轉。

通過以上系統合約的設計,BxE連接各種比特幣生態,爲BxE上的dApp與智能合約也其他比特幣生態進行互操作和對接提供了天然的橋樑。

爲了能區別EVM現有的預編譯合約(預編譯合約的地址從 0x01開始遞增,目前最新預編譯合約地址爲0x18),避免地址衝突,BxE協議規定系統合約從0x81開始遞增!

3.6.1 比特幣查詢合約

比特幣查詢合約允許用戶查詢比特幣區塊頭、交易、地址餘額等信息。
合約地址:0x0000000000000000000000000000000000000081

interface Bitcoin {
    // getBlockHeader 根據區塊高度查詢區塊頭
    function getBlockHeader(uint256 height) external view returns (bytes32 blockHash, uint256 timestamp, bytes memory);
    // getTransaction 根據交易ID查詢交易
    function getTransaction(bytes32 txid) external view returns (bytes memory);
    // getBalance 檢索地址的餘額
    function getBalance(string memory addr) external view returns (uint256);
    // getUtxo 根據地址查詢UTXO
    function getUtxo(string memory addr) external view returns (bytes memory);
    // getTxFrom 根據交易ID和索引獲取比特幣交易輸入的地址和金額
    function getTxFrom(bytes32 txid, uint256 index) external view returns (string memory,uint256);
    // getTxTo 根據交易ID和索引獲取比特幣交易輸出的地址和金額
    function getTxTo(bytes32 txid, uint256 index) external view returns (string memory,uint256);
    // getTxToList 根據交易ID獲取比特幣交易輸出的地址和金額
    function getTxToList(bytes32 txid) external view returns (string[] memory, uint256[] memory) ;
    // isFromPubKey 驗證交易是否來自指定的公鑰
    function isFromPubKey(bytes32 txid, string memory pubKeyHex) external view returns (bool);
}

3.6.2 Ordinals查詢合約

Ordinals管理合約允許用戶查詢、驗證、解析比特幣區塊中的Ordinals數據。
合約地址:0x0000000000000000000000000000000000000082

interface Ordinals {
    //getInscriptionById 根據傳入的銘文ID獲取銘文信息,包括銘文對應聰編號、銘文內容、大小、創建時間、創建高度、創建者、當前擁有者等 
    function getInscriptionById(uint256 inscriptionId) external view returns (bytes memory);
    //getInscriptionBySatNumber 根據傳入的聰編號獲取銘文信息
    function getInscriptionBySatNumber(uint256 satNumber) external view returns (bytes memory);
    //getCollection 根據傳入的序號獲取銘文集合 
    function getCollection(uint256 ordinal) external view returns (bytes memory);
    //getInscriptionTransaction 根據傳入的交易ID獲取銘文交易信息
    function getInscriptionTransfer(bytes32 txHash) external view returns (string memory from, string memory to, uint256 satNumber, bytes memory txData);
}

3.6.3 BRC-20查詢合約

BRC-20合約是Ordinals上的代幣標準,允許用戶定義、發行、轉賬等操作。
合約地址:0x0000000000000000000000000000000000000083

interface BRC20 {
    //getDeploy 根據傳入的交易ID獲取代幣部署信息,包括代幣名稱、總髮行量、單次挖礦限額等
    function getDeploy(bytes32 txHash) external view returns (string memory token, uint256 totalSupply,uint256 limit);
    //getMint  根據傳入的交易ID獲取代幣鑄幣信息,包括代幣名稱、鑄幣者、鑄幣數量
    function getMint(bytes32 txHash) external view returns (string memory token,string memory owner, uint256 value);
    //getTransfer 根據傳入的交易ID獲取代幣轉賬信息,包括代幣名稱、轉出地址、轉入地址、轉賬數量
    function getTransfer( bytes32 txHash) external view returns (string memory token,string memory from, string memory to, uint256 value);
}

3.6.4 BTC-ERC20合約

Bitcoin ERC20合約又稱WBTC合約,是Bitcoin的Wrapped形式並滿足ERC20接口標準,當BTC在比特幣網絡鎖定時,該合約則可Mint出對應數量的WBTC。
合約地址:0x0000000000000000000000000000000000000084

interface BitcoinERC20 {
    //滿足ERC20
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    //Event
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    //mint 傳入鎖定BTC的交易哈希,以及用戶的公鑰,系統判斷從比特幣網絡鎖定的BTC後,可在BxE上鑄造對應數量的WBTC給對應的公鑰所在的賬戶
    function mint(bytes32 txHash,string memory pubkeyHex) external returns (bool);
}

3.6.5 狀態共識質押合約

狀態共識質押合約是BxE協議的共識核心組件,它允許用戶質押BXET成爲驗證者,並在每個新比特幣區塊產生時執行其中的BxE交易,並將執行結果形成狀態根哈希提交到比特幣網絡。
無質押的用戶將無法參與狀態共識,即使提交了狀態消息也不會獲得任何獎勵。
驗證者作惡提交了錯誤的狀態消息,將會被其他驗證者舉報,並被扣除一定數量的BXET。
合約地址:0x0000000000000000000000000000000000000085

interface Pos {
    //stake 質押BXET,成爲驗證者
    function stake() external;
    //unstake 申請解除質押BXET
    function unstake() external ;
    //slash 懲罰驗證者,扣除BXET
    function slash(address account, uint256 amount) external;
    //report 舉報作惡者
    function report(address account) external;
}

3.6.6 其他比特幣生態查詢合約

爲了能夠兼容日益繁榮的比特幣生態,BxE協議還將進一步擴展其他比特幣生態查詢合約,在後續版本升級中逐步開放。

3.7 BxE Token的設計

BXET(Bitcoin x Ethereum Virtual Machine Token簡稱BXET)是BxE協議與生態系統的核心加密數字資產,BXET在BxE協議上線時一次性發行一部分,剩下的部分與由狀態共識礦工挖出,BxEVM的執行過程中扮演了重要的角色,主要用於支付智能合約部署、合約調用、BXET轉賬等的手續費。
爲了保證BxE與以太坊的兼容性,BXET與以太坊Gas費用的設計保持一致,即用戶在BxE上執行智能合約時,需要支付一定數量的BXET作爲手續費。BXET做爲手續費才用以太坊相同的算法,部分銷燬,部分返回到對BxE狀態數據進行共識的礦工手中。
在BxE交易中,Gas單價默認爲1 GWei,小於這個單價的交易將被標記爲無效而無法執行。單筆交易的Gas限額的上限爲15,000,000,超過該限額的交易將被標記爲無效而無法執行。

3.7.1 正常交易的手續費扣除

以轉賬交易爲例,假設用戶A有2個BXET,需要轉賬1個BXET給用戶B,當前Gas單價爲1 GWei,轉賬需要消耗21000 Gas,於是手續費是:
21000*1*10^-9=0.000021BXET
轉賬成功打包上鍊後,用戶A的賬戶中將剩餘0.999979BXET,用戶B的賬戶餘額是1BXET。

3.7.2 無效交易

當用戶賬戶的BXET餘額不足以支持對應的交易(比如賬戶餘額只有1BXET卻構造轉賬2BXET的交易)或者賬戶餘額不足以支付對應的Gas限額費用(比如賬戶餘額只有1BXET卻構造轉賬1BXET的交易,剩餘的賬戶餘額不足以支付手續費)時,交易無需執行即可被判斷並被標記爲無效。
無效的交易不扣除BXET。
比如用戶A有1個BXET,轉賬0.999999BXET給用戶B,當前Gas單價爲1 GWei,轉賬需要消耗21000 Gas,於是手續費是:
21000*1*10^-9=0.000021BXET
0.999999BXET+0.000021BXET=1.00002BXET>1BXET
所以轉賬失敗,狀態數據不變,用戶A的賬戶中將剩餘1BXET。

3.7.3 Out of Gas交易

如果用戶構造的交易的Gas限額不足以支持EVM運行所需的Gas消耗,那麼交易將被標記爲Out of Gas,合約狀態不會更新,但用戶的BXET餘額將會被扣除。
假如用戶A有1個BXET,需要調用某個合約方法,並設置Gas限額100000,當前Gas單價爲1 GWei,實際合約調用成功需要消耗110000 Gas,所以合約調用會返回Out of Gas。
手續費爲:100000*1*10^-9=0.0001BXET
最終合約調用失敗,狀態數據不變,用戶A的賬戶中將剩餘0.9999 BXET。

3.7.4 出塊獎勵

未在BxE協議上線時發行的BXET隨着比特幣區塊高度的增加,在每個區塊上附加一定數量的出塊獎勵,然後由礦工(狀態數據提交者、驗證者)挖出。
比如BxE協議最新提交了狀態共識的高度是840000,每個區塊的獎勵是3.125 BXET,然後在接下來的840001,840002... 840010都沒有任何一個BxE驗證者提交狀態消息,於是出塊獎勵將累計到3.125*10=31.25 BXET。驗證者A訂閱最新比特幣區塊到840010,檢查並執行了所有BxE協議的交易,於是構造了一筆BxE狀態消息:

{
    "Height":840010,
    "StateRoot":"0x12325436345...",
    "Reward":"31.25"
}

並將該狀態消息通過Ordinals協議銘刻到比特幣網絡。
假設該銘刻交易在840011號區塊上被打包,於是所有BxE節點將驗證該狀態消息的有效性和驗證者的有效性,有效,則爲驗證者A的地址增加31.25的獎勵。

3.7.5 狀態共識的獎勵分配

除了前面提到的出塊獎勵,BxE協議還有Gas交易手續費的回收獎勵。當用戶支付Gas費用時,這部分費用將採用與以太坊Gas相同的算法,被收入到一個專門的獎勵池中,然後由狀態共識的驗證者按照一定的規則進行分配。

  1. Gas費用的回收獎勵與出塊獎勵一併發放
    任然以前面出塊獎勵的例子爲例,假設在840009上有一筆BxE交易,其Gas手續費爲0.001BXET,而且沒有銷燬部分。那麼這部分手續費將被收入到獎勵池中,然後在驗證者A提交狀態消息時,這部分獎勵將被分配給驗證者A。
    驗證者A提交的狀態消息爲:
{
    "Height":840010,
    "StateRoot":"0x12325436345...",
    "Reward":"31.251"
}
  • 驗證者A賬戶獲得的獎勵爲: 31.25出塊獎勵+0.001Gas回收獎勵=31.251
  1. 多名驗證者平分獎勵
    如果有多名驗證者提交了狀態消息,這些狀態消息被打包到同一個區塊中,那麼這些驗證者將平分這部分獎勵。
    比如驗證者B提交了同樣的狀態消息,而且這個消息銘文與驗證者A的消息在同一個區塊840011中被打包,那麼驗證者A和驗證者B將平分這部分獎勵。
  • 驗證者A賬戶獲得的獎勵爲:31.251/2=15.6255
  • 驗證者B賬戶獲得的獎勵爲:31.251/2=15.6255
  1. 晚提交驗證者無獎勵
    如果對同一個區塊高度的驗證消息已經在之前的區塊中被打包,那麼後續的狀態消息將不再有任何獎勵。
    比如驗證者C也提交了同樣的狀態消息。但是這個消息銘文在840012上被打包,晚於驗證者A和驗證者B的狀態消息,那麼驗證者C將不會獲得任何獎勵。
  • 驗證者A賬戶獲得的獎勵爲:31.251/2=15.6255
  • 驗證者B賬戶獲得的獎勵爲:31.251/2=15.6255
  • 驗證者C賬戶獲得的獎勵爲:0
  1. 以最高高度爲準
    如果同一個區塊高度中包含了多筆狀態消息的銘文,而且這些銘文對應的區塊高度不同,那麼將以最高高度爲準,其他高度的狀態提交無獎勵。
    同樣以前面示例爲例,驗證者A提交了840010這個高度的狀態數據:
    驗證者A提交的狀態消息爲:
{
    "Height":840010,
    "StateRoot":"0x12325436345...",
    "Reward":"31.251"
}

而驗證者B提交的是840009這個高度的狀態數據,內容如下:

{
    "Height":840009,
    "StateRoot":"0xabcdef...",
    "Reward":"28.126"
}

然後這兩個銘文都被打包到了840011號區塊,那麼兩位驗證者獲得的獎勵分配爲:

  • 驗證者A賬戶獲得的獎勵爲: 31.251
  • 驗證者B賬戶獲得的獎勵爲:0

3.8 BxE交易的生成與上鍊

當用戶需要轉賬BXET、創建EVM合約或者調用EVM合約時,用戶需要構造一個以太坊交易,並將其進行RLP編碼(這是以太坊相關工具提供的能力)。接下來,用戶無需對這個編碼後的以太坊交易簽名,而是將這個交易數據放入Ordinals協議中,構造出銘刻腳本和對應的P2TR地址。
接下來用戶將一定數量的BTC轉入P2TR地址,這個轉賬BTC的交易可以進行廣播。
最後,用戶無需等待比特幣網絡的打包確認,用戶即可再次構造從P2TR地址到自己地址的交易,將包含以太坊交易的腳本銘刻到比特幣網絡,用戶對這個交易簽名並廣播。
當兩筆交易被比特幣網絡打包到區塊中時,所有BxE節點將會訂閱對應的新區塊和交易並解析執行其中的以太坊交易,完成各個BxE節點狀態數據的更新。

3.9 BxE對以太坊生態的兼容性

BxE協議對外提供與以太坊JSON-RPC接口兼容的網關服務,用戶可以通過該網關查詢BxE節點上的合約狀態和執行結果。

這種設計帶來的主要優勢是:

充分利用了比特幣網絡出色的安全性、去中心化程度和全球共識,使得合約執行的數據源具有很高的可靠性和確定性。

將合約執行和狀態存儲與記賬分離,避免了把所有計算和存儲都放在鏈上,從而提高了系統吞吐量和擴展性。

由於BxE協議開源透明,任何第三方都可以部署BxE節點參與網絡,形成了天然的數據去中心化和冗餘備份。

通過網關服務,爲外部應用提供了與以太坊生態無縫兼容的接口,使得現有dApp可以無縫遷移到BxE平臺。

BxE項目方將推出官方的錢包、瀏覽器等工具,方便用戶與BxE交互。同時也鼓勵社區開發更多基於BxE協議的產品和服務,打造一個開放、多元、安全高效的去中心化合約生態。

4. BXET Token經濟模型

4.1 代幣發行機制

BXET(Bitcoin x Ethereum Virtual Machine Token簡稱BXET)是BxE生態系統的核心加密數字資產,其發行總量爲2100萬,其發行速度與比特幣網絡同步,截止2024.4,比特幣網絡中BTC已經發行約1966W,佔發行總量的93%,剩下的約7%將隨着比特幣區塊高度的增加逐步挖出。
與之對應的,BxE協議在上線時將一次性發行與當時BTC等量的BXET,而剩下的約10%的BXET將隨着比特幣的產塊獎勵一樣逐步挖出。

對於這一次性發行的約1970萬BXET,在BxE協議上線之前,項目方通過BRC-20和ERC20在比特幣鏈和以太坊鏈上進行錨定,在BxE生態系統運行後轉入BxE平臺。

4.2 代幣用途

BXET將作爲BxE平臺內部的Gas費用支付通證,用於支付智能合約部署、合約調用等手續費。此外,BXET還將作爲PoS狀態共識的質押資產,通過質押BXET取得狀態驗證人資格,參與後續的BXET挖礦。另外BXET還作爲生態系統權益證明參與社區治理投票。

4.3 Gas費用與激勵機制

與以太坊類似,在BxE平臺上使用智能合約需要消耗一定Gas費用,並按當前Gas Price折算成相應BXET數量從用戶賬戶扣減。BxE的交易被打包後,部分Gas將直接銷燬,而剩餘的Gas將和產塊獎勵一起被驗證人礦工挖出。

5. 示例

5.1 BRC-20 Token跨到BxE的過程

BxE協議支持BRC-20 Token轉移到BxE上,以ERC20 Token的形式存在。

要實現BRC-20到ERC20的兌換,需要定義一個鎖定地址,該鎖定地址可以是一個黑洞地址,如果使用黑洞地址作爲鎖定地址,那麼將支持單向的BRC-20 Token轉移到BxE協議上,以ERC20 Token的形式存在。
如果希望實現雙向的BRC-20 Token轉移到BxE協議上,那麼可以採用多籤地址或者某個可信地址作爲鎖定地址。

以知名的BRC-20 ORDI爲例,跨到BxE協議的過程如下:

    1. 編寫並部署一個滿足ERC20規範的代幣合約WORDI(Wrapped ORDI)到BxE上。該合約初始發行量爲0,具有mint方法。
    2. 用戶A持有一定數量m的ORDI,構造ORDI的轉賬交易,將n個ORDI轉移到鎖定地址,並記錄下該鎖定ORDI的交易哈希。
    3. 在BxE上發起調用WORDI合約的mint方法的交易,將上一步鎖定ORDI的交易哈希作爲參數傳入。
    4. 用戶的mint交易被打包到比特幣網絡,BxE節點執行合約合約mint邏輯:
      a. 判斷交易哈希是否已經在之前被處理,如果處理過則返回錯誤。
      b. 跨合約調用BRC-20系統合約0x0000000000000000000000000000000000000003的getTransfer方法,獲得鎖定交易的發起人、鎖定Token的數量、鎖定Token的Symbol。
      c. 判斷鎖定的Token的Symbol是不是ORDI,不是則返回錯誤。
      d. 判斷Token的收款人地址是不是鎖定地址,不是則返回錯誤。
      e. 調用ERC20自身的鑄幣方法function _mint(address to, uint256 amount),爲鎖定交易的發起人鑄造對應鎖定數量的WORDI Token。

 5.2 BTC跨到BxE的過程

BxE協議支持BTC轉移到BxE上,以ERC20 Token(WBTC)的形式存在。

要實現BTC到ERC20的兌換,需要定義一個鎖定地址,該鎖定地址可以是一個黑洞地址,如果使用黑洞地址作爲鎖定地址,那麼將支持單向的BTC轉移到BxE協議上,以ERC20 Token(WBTC)的形式存在。
如果希望實現雙向的BTC轉移到BxE協議上,那麼可以採用多籤地址或者某個可信地址作爲鎖定地址。

以下是BTC跨到BxE協議的過程:

  1. 用戶A持有一定數量m的BTC,構造BTC的轉賬交易,將n個BTC轉移到鎖定地址,並記錄下該鎖定BTC的交易哈希。
  2. 在BxE上發起調用BTC-ERC20系統合約的mint方法的交易,將上一步鎖定BTC的交易哈希作爲參數傳入。
  3. 用戶的mint交易被打包到比特幣網絡,BxE節點執行合約合約mint邏輯:
    a. 判斷交易哈希是否已經在之前被處理,如果處理過則返回錯誤。
    b. 跨合約調用BTC系統合約0x0000000000000000000000000000000000000001的getTransaction方法,獲得鎖定交易的發起人地址、收款人地址、鎖定BTC的數量。
    c. 判斷BTC的收款人地址是不是鎖定地址,不是則返回錯誤。
    d. 判斷BTC的鎖定數量是否大於零,不是則返回錯誤。
    e. 調用自身的鑄幣方法function _mint(address to, uint256 amount),爲鎖定交易的發起人鑄造對應鎖定數量的WBTC。

WBTC的鑄造邏輯如圖:

總結

BxE協議基於Ordinals協議爲基礎,在比特幣原生網絡(Layer1)實現了對以太坊虛擬機EVM的支持,從而讓比特幣網絡能夠支持圖靈完備的智能合約。BxE打通了比特幣生態與自己的EVM,可以將Ordinals藏品、BRC-20以及更多的比特幣生態引入到EVM中,爲比特幣生態帶來了去中心化的流動性。

以下是BxE協議的主要優點:

  1. 安全性和去中心化:BxE協議基於比特幣網絡的Ordinals協議,繼承了比特幣的高安全性和去中心化特性。由於無需對現有比特幣網絡進行任何升級,因此不會引入新的風險。

  2. 互操作性:BxE項目致力於打通比特幣網絡中的各大生態,如Ordinals銘文、BRC-20等,實現了比特幣銘文、域名、NFT、BRC-20等各生態的無縫對接,爲用戶提供了更多的選擇和便利。

  3. 可擴展性:通過引入EVM到比特幣網絡,BxE協議能夠利用EVM的圖靈完備特性,引入Layer2、預言機等特性,從而建立良好的可擴展性和高吞吐量,滿足不同規模的應用需求。

  4. 以太坊Web3生態兼容性:BxE協議以EVM爲智能合約執行環境,通過提供兼容以太坊Jsonrpc的網關,在比特幣網絡爲用戶帶來了比肩以太坊的Web3.0體驗和更多的應用場景。

  5. 更低的Token轉移手續費:BxE協議通過優化交易流程,降低了用戶在進行Token轉移時的手續費,使得用戶在進行轉賬交易時的成本更低。

  6. 豐富的系統合約設計:BxE平臺預置了一系列系統合約,如比特幣查詢、Ordinals查詢、BRC-20查詢等,爲外部的EVM合約提供查詢比特幣鏈上數據的能力,併爲BxE上的dApp與智能合約提供與其他比特幣生態互操作和對接的橋樑。

  7. Token經濟模型:BXET作爲BxE生態系統的核心加密數字資產,其發行總量與比特幣網絡同步,保證了Token的稀缺性和價值穩定性。同時,BXET在平臺內部作爲Gas費用支付通證,並作爲PoS狀態共識的質押資產,參與社區治理投票。

  8. 對以太坊生態的兼容性:BxE協議對外提供與以太坊JSON-RPC接口兼容的網關服務,使得現有的dApp可以無縫遷移到BxE平臺,充分利用比特幣網絡的安全性和去中心化程度。

總的來說,BxE協議通過創新的技術設計,爲比特幣網絡帶來了新的生機和活力,推動了區塊鏈技術在各個領域的廣泛應用和發展。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章