本文剖析了以太坊交易中的元數據、緩存和數據三個重要組成部分,手把手地教會讀者看懂一筆交易的數據。
作者:Haym
編譯:EthereumCN
原用標題(譯後):以太坊的基礎原理:交易
封面:Photo by Shubham Dhage on Unsplash
發送了 ETH?有為 AMM 提供流動性?部署了新的合約?你所做的任何事都會在世界計算機上留下鏈上記錄。想知道你的交易中有些什麼嗎?
以太坊是一台世界計算機:一個存在於上千台計算機網絡之間的全球共享基礎設施。
用戶可以通過錢包(比如 MetaMask)與以太坊進行交互,錢包可以創建和發送交易到網絡中。一旦接收了交易,它就會被寫入區塊中。
額外的益處:對數據進行哈希計算 (應用哈希函數)
哈希函數:這是一段用於將任意數據量轉換為一個壓縮、統一數值的代碼。它的輸入數據可以是任意長度,但輸出數據的長度則是一樣的。
(好處)哈希函數不能反向運行。
一筆以太坊交易由三個部分組成:
- 元數據(metadata),包括發送/接受的 ETH 金額、gas 詳細信息以及簽名數據
- 緩存(cache),交易預計會使用的賬戶和私鑰的列表。
- 數據,交易的 payload(智能合約代碼或者 API 調用)
元數據—— 交易相關信息
以下的圖片展示了所有元數據字段。我們會在接下來探討其中不顯著的部分。
chainid —— 由 EIP-155 提出,用來保護鏈不受 ETC 的重放攻擊。
type —— 這裡有兩種類型:一個新的合約(0x0)還有其他所有合約(0x2)。EIP-2718 提出了一個封裝功能(0x2),讓更多不影響以太坊核心規範的類型得以使用。
nonce —— 從特定地址發送過來的交易數量。一旦交易打包到區塊上,錢包的 nonce 值就增加了。避免受到重放攻擊。
to —— 接受交易的地址(錢包或智能合約)
value —— 將要轉賬的 ETH 數額。請注意—— 這裡只計算 ETH,不計算其他代幣。
gas —— 這筆交易所使用的 gas 單位
maxFeePerGas —— 創建交易的用戶願意支付的最高費用(每 gas 要支付 WEI。譯者註:WEI 是 ETH 的最小單位,1 個 ETH 相當於 10 的 18 次方 WEI。)它包括了基礎費用和優先費。
maxPriorityFeePerGas —— 創建交易的用戶在基礎費用(base fee)之外願意支付的最高優先費(每 gas 要支付的 WEI)。這筆費用會直接支付給礦工/驗證者,作為激勵打包的小費。
gasPrice —— 這筆交易需支付的每 gas 單位的成本
(r, s, v) —— 構成創建該交易的用戶簽名的三個值。它們可以用於驗證用戶是否在此交易上 EVM 執行之前許可了這筆交易。
更多信息,可以自行查閱:Elliptic Curve Digital Signature Algorithm (ECDSA)
緩存
這個部分包括了訪問列表(accessList),它是交易將用到的地址和私鑰的列表。這筆交易還可以使用該列表以外的資源,但成本會比較高。
訪問列表是由 EIP-2929 提案提出的,讓客戶端可以獲取/緩存交易期間的數據。
現在,通過訪問列表獲取地址和私鑰數據的折扣是 9 折。但這個折扣會隨著未來以太坊支持更多輕客戶端而變得更多。
數據—— 交易中傳輸的 payload 數據
數據可以用三種方式進行:
- ETH 轉賬—— 空白
- 智能合約 API 調用—— 函數和參數的名字
- 新的智能合約—— 智能合約的代碼
輸入字段的數據以二進制形式記錄,但它可以轉譯成人類可讀的形式。
輸入字段存在於鏈上,但它不是 EVM 狀態的一部分。它只是在交易期間為合約提供數據,無法被以太坊追踪到,也不能在共識層上使用。
EVM 只能使用在此交易中提供的數據;它無法查看過去的交易。
這一特質對於想要將歷史數據寫入以太坊區塊鏈(比如,用於稍後的手動檢索)但不考慮直接訪問 EVM 的應用程序來說十分有用。
Rollup 是最早充分利用這個想法的一種應用程序。
有時間我們會談談 Rollup。現在,Rollup 依靠著這樣一種現實:將數據寫入輸入字段比直接寫入以太坊 EVM 狀態中要相對便宜。
你現在可以看啦!這就是一筆以太坊交易的樣子!
免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。文章內的信息僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。