Solidity

為什麼空消息仍然呼叫合約的程式碼?

  • October 13, 2021

空消息仍會呼叫合約的程式碼,並且是允許 Solidity 為每個合約實現回退功能的機制。

但是msg.data為空的時候,為什麼合約程式碼還需要執行呢?

如果呼叫者msg.data留空,這意味著他們根本不想傳遞任何數據或呼叫合約上的任何函式,為什麼合約程式碼仍然需要執行?

為了保持乙太坊的核心協議簡單通用,協議有一條消息總是執行賬戶程式碼的規則。簡單和通用允許關鍵共識協議更小並降低共識錯誤的風險。

這意味著不需要在核心乙太坊協議中定義諸如乙太坊合約 ABI之類的細節。ABI 是一種抽象, ABI 的改進或替代方案對乙太坊協議或乙太坊虛擬機 EVM 沒有影響。如果沒有“賬戶程式碼始終執行”的規則,那麼協議本身就需要定義觸發賬戶程式碼或部分賬戶程式碼執行的內容:協議將變得與簡單和通用相反。

引用自:https://ethereum.stackexchange.com/questions/1585