互通性與跨鏈

跨鏈訊息傳遞

早期的橋只搬代幣。跨鏈訊息傳遞把這件事推廣到任意資料:A 鏈上的合約可以送一段酬載給 B 鏈上的合約,觸發任何邏輯——在治理合約投票、開立部位、部署某物、更新某項設定——而不只是給某個餘額入帳。這通常稱為通用訊息傳遞(GMP),它讓一組各自獨立的鏈,更接近於單一的可組合應用表面。

各家供應商的形態大致一致。來源合約以(目的鏈、目的地址、酬載)呼叫一個訊息端點。某個驗證層證明這則訊息確實在來源鏈上被發出且已最終化。中繼者遞送它,目的端點再以該酬載呼叫目標合約的接收函數,通常會把已驗證的來源鏈與發送者一併揭露,好讓接收方據以授權。接收合約必須把來源身分視為一道安全邊界,正如核對 msg.sender 一般,否則任何人都能偽造訊息。

深層問題依然是:由誰來驗證。原生驗證(IBC 式輕用戶端、zk 證明)繼承各鏈的安全性;外部驗證(LayerZero 可設定的 DVN、Axelar 的驗證者集合、Wormhole 的守護者、Chainlink CCIP 的委員會)則信任一個鏈下群體。訊息傳遞還迫使你面對代幣橋能迴避的艱難設計抉擇:排序與重放防護、目的端呼叫回滾時該如何處置、遠端鏈上的 gas 支付,以及冪等性,好讓重複遞送的訊息不會被執行兩次。

function lzReceive(uint32 srcChain, bytes32 sender, bytes calldata payload) external {
  require(msg.sender == endpoint, "only endpoint");
  require(srcChain == ETH && sender == govContract, "unauthorized origin");
  _execute(payload);
}

接收跨鏈訊息:先信任端點,再授權來源——兩道檢查缺一不可。

又称
general message passingGMP通用訊息傳遞