呼叫資料
定義
Calldata 是一種唯讀資料,在與以太坊上的智能合約互動時,會隨交易一起發送。它包含智能合約執行功能所需的指令和輸入值,但合約無法修改或永久儲存這些資料。
簡單來說,calldata 是您發送給智能合約的訊息,告訴它要做什麼以及使用什麼資訊。
Calldata 的用途是什麼?
Calldata 主要用於將資訊傳遞給智能合約。這包括:
- 要呼叫哪個函數
- 執行該函數所需的參數
- 來自使用者或應用程式的編碼交易資料
由於 calldata 不儲存在合約儲存中,因此它比永久儲存便宜,使其成為在執行期間提供臨時資料的有效方式。
Calldata 的運作方式
當使用者向智能合約提交交易時,該交易包含指定要執行動作的 calldata。以太坊虛擬機(EVM)讀取此資料,執行請求的函數,然後在執行完成後丟棄 calldata。
例如,當使用者在去中心化交易所上交換代幣時,交易的 calldata 包含諸如代幣地址、交換數量和接收者地址等詳細資訊。智能合約讀取此資訊,完成交換,之後不保留 calldata。
以太坊擴容中的 Calldata
Calldata 在以太坊擴容中扮演著重要角色,特別是對於 Rollups。Rollups 使用 calldata 將壓縮的交易資料發佈到以太坊,以便在需要時任何人都可以驗證鏈下交易。
然而,當發佈大量資料時,calldata 可能會變得昂貴。這就是為什麼正在開發諸如資料 Blob 和外部資料可用性層等新解決方案以降低成本的原因。
Calldata 與儲存和記憶體
Calldata 與以太坊中的其他資料位置不同:
Calldata :唯讀、臨時,用於函數輸入。
記憶體 :臨時且在執行期間可修改。
儲存 :儲存在區塊鏈上的持久資料,使用成本最高。
為何重要
了解 calldata 有助於使用者和開發人員掌握智能合約如何接收指令以及交易成本為何會有所不同。它還解釋了 Rollups 為何依賴 calldata 來實現透明度,以及優化資料使用對於以太坊的可擴展性為何至關重要。
Calldata 對大多數使用者來說可能不可見,但它是智能合約和擴容解決方案在以太坊上運作的核心組成部分。