首頁科技 > 正文

以太坊上新的事務型別:EIP-2718 簡介

2021-05-16由 火星財經 發表于 科技

以太坊上新的事務型別:EIP-2718 簡介

免責宣告:本文旨在傳遞更多市場資訊,不構成任何投資建議。文章僅代表作者觀點,不代表火星財經官方立場。

小編:記得關注哦

原文標題:你信嗎?ETC還能漲到7000刀?

以太坊上新的事務型別:EIP-2718 簡介

以太坊採用不同的事務型別來定義不同的操作,例如,將 以太幣 傳送至某個地址、部署合約等等。

在最近的柏林升級之前,以太坊主要有 4 種不同的事務 “型別”:

帶有收款方地址、資料欄位的常規事務

不帶有收款方地址的合約部署事務,其資料欄位填寫的是合約程式碼

簽名 v 值不含鏈 ID 的事務(EIP155 實行之前)

簽名 v 值含有鏈 ID 的事務

上述事務型別都採用相同的格式。不同的以太坊 客戶端 、庫和其它工具必須分析每個事務來判斷它屬於哪個型別。這四種不同的事務型別引入了很多複雜的情況。我們需要檢視事務的所有欄位來判斷其所屬型別。這是人們在提議新的事務型別(如元事務、多籤事務等)時不得不面對的重大難題,直到 EIP 2718 出現才打破這一困境。以太坊現在有了新的事務 標準 Typed Transaction Envelope(型別化事務封套),由 EIP 2718 的提議者 Micah Zoltu 定義。該標準為以太坊上的一些新功能和即將開發的功能奠定了基礎。在本文中,我們將回顧柏林升級引入的一些標準以及未來有可能引入的其它標準。

標準化的事務封套

過去,以太坊的事務都採用同一種格式。每個以太坊事務都有 6 個欄位:nonce、gasprice、gaslimit、to address、value、data、v、r 和 s。這些欄位需要經過 RLP 編碼 ,如下所示:RLP([nonce, gasPrice, gasLimit, to, value, data, v, r, s])

EIP 2718 為型別化事務定義了一種新的通用封套。在新的標準下,事務如下所示:TransactionType || TransactionPayload

上述欄位的定義是:

TransactionType:0至0x7f範圍內的某個值,最多可代表 128 種事務型別。

TransactionPayload:由事務型別定義的任意一個 位元組陣列 。

將上述欄位連線(合併)起來,即可得到一個型別化事務。EIP 2718 沒有為事務的有效負載定義格式。因此,事務的有效負載可以是任意一段經過編碼的 位元組 序列,只要採用符合新的事務型別(如 RLP、SSZ 等)定義的編碼器即可。之所以選擇簡單的位元組相連方式,是因為讀取位元組陣列的第一個位元組非常簡單,無需使用任何庫或工具。也就是說,你不需要使用 RLP 或 SSZ 解析器來判斷事務型別。這個方法可以避免新的 EIP 在引入新的事務型別時增加現有事務格式的 複雜性 ,並讓不同的以太坊工具(客戶端、庫)更容易區分不同的事務。在增加複雜性這一點上,EIP-155 就是一個很好的例子。它透過在事務中引入鏈 ID 來實現重放攻擊保護。由於在事務引數中增加新的欄位會破壞向後相容性,鏈 ID 被編碼進了事務簽名的恢復引數(v),就像我在上一篇關於數字簽名的文章中解釋的那樣。實行 EIP 2718 後,我們可以在不影響向後相容性的情況下定義新的事務型別。

向後相容性和 傳統 事務

EIP 2718 的一大特點就是 向後相容 。EIP 2718 是完全向後相容的。也就是說,現有的工具、庫、(硬體)錢包和事務都是開箱即用的,但是它們無法使用 EIP 2718(以及採用 EIP 2718 的標準)提供的新 “功能”。以太坊 網路 上的新事務依然可以使用舊的事務格式(即,傳統事務)。新的事務型別最多可達0x7f種。選擇這一上限是為了保證向後相容傳統事務。經過 RLP 編碼的事務的第一個位元組始終大於或等於0xc0,因此型別化事務永遠不會與傳統事務產生衝突,而且型別化事務和傳統事務之間可以透過第一個位元組來區分。EIP 2718 本身並未定義任何事務型別,不過已經出現了一些採用這一新標準的 EIP :

EIP 1559:改革 ETH 1。0 鏈的交易費市場。你肯定聽說過這個 EIP。

EIP 2711:代付事務、限期事務和批次事務。這個 EIP 同樣由Micah Zoltu 提出,EIP-2718 中定義的標準就是為此建立的。

EIP 2930:可選訪問列表。

我們將在下文詳細解釋其中一些標準。

為什麼要引入新的事務型別?

新的事務型別可以實現原本需要藉助於 Solidity 合約或第三方解決方案的功能整合。以限期事務為例。在現有解決方案中,你可以將資金髮送至 Solidity 合約,簽署一個事務並將其傳送到專門的節點,讓該事務獲得額外的引數(例如,有效期)。然後,該節點會處理該事務,確保它在有效期之前執行,否則該事務不會被廣播。一些 dApp 和合約(如 Uniswap)內建該功能,但是對於大多數事務而言很難實現。EIP 2711 可以將該功能新增到以太坊網路上,同時保證向後相容傳統事務(正如上文所述),而且無需使用 智慧合約 或專門的節點。但是,EIP 2711 目前還是草案,我們還無法確定它近期是否會在以太坊網路上實行。EIP 2711 也有可能被拆分成幾個小的 EIP(如 EIP 3074)。

以太坊上新的事務型別:EIP-2718 簡介

-圖源:f2pool-

EIP 1559 提出的新的事務格式

在 EIP 1559 中,gas 的運作方式發生了巨大變化:gas 會被部分銷燬,不再全部支付給礦工。本文不會具體闡述 EIP 1559 的所有變化,但是 EIP 1559 確實提出了一種新的事務格式:

0x02 || RLP([chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data, accessList, signatureYParity, signatureR, signatureS])最顯著的變化包括:

用 “每單位 gas 的最高優先費用(max priority fee per gas)” 和 “每單位 gas 的最高費用(max fee per gas)” 來代替 gas price。

鏈 ID 是單獨編碼的,不再包含在簽名v值內。這實際上是使用更簡單的實現來代替 EIP 155。

簽名 v值變成了一個簡單的校驗位(“簽名 Y 校驗位”),不是 0 就是 1,具體取決於使用橢圓曲線上的哪個點。

EIP 1559 還提供了一種基於 EIP 2930 指定訪問列表的方法。這樣可以減少事務的 gas 成本。由於 EIP 1559 極大地改變了 gas 費的運作方式,它並不能直接相容傳統事務。為了保證向後相容性,EIP 1559 提出了一種將傳統事務升級成相容 EIP 1559 事務的方法,即,使用 “每單位 gas 的最高優先費用” 和 “每單位 gas 的最高費用” 來代替 “gas 價格”。

原生元事務和批次事務

元事務誕生已經有幾年了,但是到目前為止都需要依靠智慧合約。和限期事務一樣,元事務也要求使用者將以太幣傳送至專為元事務建立的智慧合約。EIP 2711 使得原生元事務(又稱代付事務)和批次事務成為可能,無需依賴於智慧合約。這裡定義了一個新的事務格式,事務型別是 0x02(但是事務型別可能會更改,因為 EIP-1559 也使用同一個事務型別標識)。交易如下所示:

0x02 || RLP([。。。SenderPayload, 。。。SenderSignature, 。。。GasPayerPayload, 。。。GasPayerSignature])EIP 2711 主要包括 gas 付款方(用來支付事務 gas 費的賬戶)的有效負載(可選)和簽名。這樣一來,即使不持有任何以太幣的地址也能傳送 ERC 20 代幣。傳送方的有效負載和簽名等均基於事務子型別(1 至 4)定義。例如,如果交易型別為 1,傳送方的有效負載被定義為:

[1, ChildTransaction[], nonce, ChainId, ValidUntil, gasLimit, gasPrice]ChildTransaction 被定義為 [to, value, data],可以在單個事務內指定收款方地址、值和資料。例如,ChildTransaction 可以用來在單筆事務中呼叫 ERC 20 的 approve 和 transferFrom。如果你想了解更多關於 EIP 2711 的事務子型別的資訊,我建議你閱讀 EIP 2711 的規範。

結論

型別化事務為以太坊網路帶來了更多可能性。我們在建立型別化事務時不會增加以太坊客戶端、庫和其它工具的複雜性。目前,由於 EIP 2718 最近才被新增到網路中,新的事務型別還沒有得到廣泛應用,但是目前還有一些很棒的 EIP 正在開發中,例如,EIP 2711 提出了限期事務、批次事務和代付事務(即,元事務)。由於以太坊上可以定義新的事務型別,提出新的 EIP 也會變得更容易。

(完)

(文內有許多超連結,可點選左下 ”閱讀原文“ 從 EthFans 網站上獲取)

原文連結:

https://blog。mycrypto。com/new-transaction-types-on-ethereum/

作者:

Maarten Zuidhoorn

翻譯&校對:

閔敏 & 阿劍

頂部