以太坊采用不同的事務類型來定義不同的操作,例如,將以太幣發送至某個地址、部署合約等等。
在最近的柏林升級之前,以太坊主要有4種不同的事務「類型」:
·帶有收款方地址、數據字段的常規事務
·不帶有收款方地址的合約部署事務,其數據字段填寫的是合約代碼
·簽名?v?值不含鏈ID的事務
·簽名?v?值含有鏈ID的事務??
上述事務類型都采用相同的格式。不同的以太坊客戶端、庫和其它工具必須分析每個事務來判斷它屬于哪個類型。這四種不同的事務類型引入了很多復雜的情況。我們需要查看事務的所有字段來判斷其所屬類型。這是人們在提議新的事務類型時不得不面對的重大難題,直到EIP2718出現才打破這一困境。
以太坊現在有了新的事務標準TypedTransactionEnvelope,由?EIP2718?的提議者?MicahZoltu?定義。該標準為以太坊上的一些新功能和即將開發的功能奠定了基礎。在本文中,我們將回顧柏林升級引入的一些標準以及未來有可能引入的其它標準。
慢霧:跨鏈互操作協議Nomad橋攻擊事件簡析:金色財經消息,據慢霧區消息,跨鏈互操作協議Nomad橋遭受黑客攻擊,導致資金被非預期的取出。慢霧安全團隊分析如下:
1. 在Nomad的Replica合約中,用戶可以通過send函數發起跨鏈交易,并在目標鏈上通過process函數進行執行。在進行process操作時會通過acceptableRoot檢查用戶提交的消息必須屬于是可接受的根,其會在prove中被設置。因此用戶必須提交有效的消息才可進行操作。
2. 項目方在進行Replica合約部署初始化時,先將可信根設置為0,隨后又通過update函數對可信根設置為正常非0數據。Replica合約中會通過confirmAt映射保存可信根開始生效的時間以便在acceptableRoot中檢查消息根是否有效。但在update新根時卻并未將舊的根的confirmAt設置為0,這將導致雖然合約中可信根改變了但舊的根仍然在生效狀態。
3. 因此攻擊者可以直接構造任意消息,由于未經過prove因此此消息映射返回的根是0,而項目方由于在初始化時將0設置為可信根且其并未隨著可信根的修改而失效,導致了攻擊者任意構造的消息可以正常執行,從而竊取Nomad橋的資產。
綜上,本次攻擊是由于Nomad橋Replica合約在初始化時可信根被設置為0x0,且在進行可信根修改時并未將舊根失效,導致了攻擊可以構造任意消息對橋進行資金竊取。[2022/8/2 2:52:59]
標準化的事務封套??
安全團隊:LPC項目遭受閃電貸攻擊簡析,攻擊者共獲利約45,715美元:7月25日,據成都鏈安“鏈必應-區塊鏈安全態勢感知平臺”安全輿情監控數據顯示,LPC項目遭受閃電貸攻擊。成都鏈安安全團隊簡析如下:攻擊者先利用閃電貸從Pancake借入1,353,900個LPC,隨后攻擊者調用LPC合約中的transfer函數向自己轉賬,由于 _transfer函數中未更新賬本余額,而是直接在原接收者余額recipientBalance值上進行修改,導致攻擊者余額增加。隨后攻擊者歸還閃電貸并將獲得的LPC兌換為BUSD,最后兌換為BNB獲利離場。本次攻擊項目方損失845,631,823個 LPC,攻擊者共獲利178 BNB,價值約45,715美元,目前獲利資金仍然存放于攻擊者地址上(0xd9936EA91a461aA4B727a7e3661bcD6cD257481c),成都鏈安“鏈必追”平臺將對此地址進行監控和追蹤。[2022/7/25 2:36:51]
過去,以太坊的事務都采用同一種格式。每個以太坊事務都有6個字段:nonce、gasprice、gaslimit、toaddress、value、data、v、r和s。這些字段需要經過?RLP編碼,如下所示:
慢霧:Spartan Protocol被黑簡析:據慢霧區情報,幣安智能鏈項目 Spartan Protocol 被黑,損失金額約 3000 萬美元,慢霧安全團隊第一時間介入分析,并以簡訊的形式分享給大家參考:
1. 攻擊者通過閃電貸先從 PancakeSwap 中借出 WBNB;
2. 在 WBNB-SPT1 的池子中,先使用借來的一部分 WBNB 不斷的通過 swap 兌換成 SPT1,導致兌換池中產生巨大滑點;
3. 攻擊者將持有的 WBNB 與 SPT1 向 WBNB-SPT1 池子添加流動性獲得 LP 憑證,但是在添加流動性的時候存在一個滑點修正機制,在添加流動性時將對池的滑點進行修正,但沒有限制最高可修正的滑點大小,此時添加流動性,由于滑點修正機制,獲得的 LP 數量并不是一個正常的值;
4. 隨后繼續進行 swap 操作將 WBNB 兌換成 SPT1,此時池子中的 WBNB 增多 SPT1 減少;
5. swap 之后攻擊者將持有的 WBNB 和 SPT1 都轉移給 WBNB-SPT1 池子,然后進行移除流動性操作;
6. 在移除流動性時會通過池子中實時的代幣數量來計算用戶的 LP 可獲得多少對應的代幣,由于步驟 5,此時會獲得比添加流動性時更多的代幣;
7. 在移除流動性之后會更新池子中的 baseAmount 與 tokenAmount,由于移除流動性時沒有和添加流動性一樣存在滑點修正機制,移除流動性后兩種代幣的數量和合約記錄的代幣數量會存在一定的差值;
8. 因此在與實際有差值的情況下還能再次添加流動性獲得 LP,此后攻擊者只要再次移除流動性就能再次獲得對應的兩種代幣;
9. 之后攻擊者只需再將 SPT1 代幣兌換成 WBNB,最后即可獲得更多的 WBNB。詳情見原文鏈接。[2021/5/2 21:17:59]
RLP()
慢霧:Polkatrain 薅羊毛事故簡析:據慢霧區消息,波卡生態IDO平臺Polkatrain于今早發生事故,慢霧安全團隊第一時間介入分析,并定位到了具體問題。本次出現問題的合約為Polkatrain項目的POLT_LBP合約,該合約有一個swap函數,并存在一個返傭機制,當用戶通過swap函數購買PLOT代幣的時候獲得一定量的返傭,該筆返傭會通過合約里的_update函數調用transferFrom的形式轉發送給用戶。由于_update函數沒有設置一個池子的最多的返傭數量,也未在返傭的時候判斷總返傭金是否用完了,導致惡意的套利者可通過不斷調用swap函數進行代幣兌換來薅取合約的返傭獎勵。慢霧安全團隊提醒DApp項目方在設計AMM兌換機制的時候需充分考慮項目的業務場景及其經濟模型,防止意外情況發生。[2021/4/5 19:46:39]
EIP2718?為類型化事務定義了一種新的通用封套。在新的標準下,事務如下所示:
TransactionType?||?TransactionPayload
Harvest.Finance被黑事件簡析:10月26號,據慢霧區消息 Harvest Finance 項目遭受閃電貸攻擊,損失超過 400 萬美元。以下為慢霧安全團隊對此事件的簡要分析。
1. 攻擊者通過 Tornado.cash 轉入 20ETH 作為后續攻擊手續費;
2. 攻擊者通過 UniswapV2 閃電貸借出巨額 USDC 與 USDT;
3. 攻擊者先通過 Curve 的 exchange_underlying 函數將 USDT 換成 USDC,此時 Curve yUSDC 池中的 investedUnderlyingBalance 將相對應的變小;
4. 隨后攻擊者通過 Harvest 的 deposit 將巨額 USDC 充值進 Vault 中,充值的同時 Harvest 的 Vault 將鑄出 fUSDC,而鑄出的數量計算方式如下:
amount.mul(totalSupply()).div(underlyingBalanceWithInvestment());
計算方式中的 underlyingBalanceWithInvestment 一部分取的是 Curve 中的 investedUnderlyingBalance 值,由于 Curve 中 investedUnderlyingBalance 的變化將導致 Vault 鑄出更多的 fUSDC;
5. 之后再通過 Curve 把 USDC 換成 USDT 將失衡的價格拉回正常;
6. 最后只需要把 fUSDC 歸還給 Vault 即可獲得比充值時更多的 USDC;
7. 隨后攻擊者開始重復此過程持續獲利;
其他攻擊流程與上訴分析過程類似。參考交易哈希:0x35f8d2f572fceaac9288e5d462117850ef2694786992a8c3f6d02612277b0877。
此次攻擊主要是 Harvest Finance 的 fToken(fUSDC、fUSDT...) 在鑄幣時采用的是 Curve y池中的報價(即使用 Curve 作為喂價來源),導致攻擊者可以通過巨額兌換操控預言機的價格來控制 Harvest Finance 中 fToken 的鑄幣數量,從而使攻擊者有利可圖。[2020/10/26]
上述字段的定義是:
·TransactionType:0至0x7f范圍內的某個值,最多可代表128種事務類型。
·TransactionPayload:由事務類型定義的任意一個字節數組。??
將上述字段連接起來,即可得到一個類型化事務。EIP2718?沒有為事務的有效負載定義格式。因此,事務的有效負載可以是任意一段經過編碼的字節序列,只要采用符合新的事務類型定義的編碼器即可。之所以選擇簡單的字節相連方式,是因為讀取字節數組的第一個字節非常簡單,無需使用任何庫或工具。也就是說,你不需要使用RLP或SSZ解析器來判斷事務類型。
這個方法可以避免新的EIP在引入新的事務類型時增加現有事務格式的復雜性,并讓不同的以太坊工具更容易區分不同的事務。
在增加復雜性這一點上,EIP-155?就是一個很好的例子。它通過在事務中引入鏈ID來實現重放攻擊保護。由于在事務參數中增加新的字段會破壞向后兼容性,鏈ID被編碼進了事務簽名的恢復參數,就像我在上一篇關于數字簽名的文章中解釋的那樣。實行EIP2718后,我們可以在不影響向后兼容性的情況下定義新的事務類型。??
向后兼容性和傳統事務
EIP2718的一大特點就是向后兼容。EIP2718是完全向后兼容的。也就是說,現有的工具、庫、錢包和事務都是開箱即用的,但是它們無法使用EIP2718提供的新「功能」。以太坊網絡上的新事務依然可以使用舊的事務格式。
新的事務類型最多可達0x7f種。選擇這一上限是為了保證向后兼容傳統事務。經過RLP編碼的事務的第一個字節始終大于或等于0xc0,因此類型化事務永遠不會與傳統事務產生沖突,而且類型化事務和傳統事務之間可以通過第一個字節來區分。??
EIP2718本身并未定義任何事務類型,不過已經出現了一些采用這一新標準的EIP:
·EIP1559:改革ETH1.0鏈的交易費市場。你肯定聽說過這個EIP。
·EIP2711:代付事務、限期事務和批量事務。這個EIP同樣由MicahZoltu提出,EIP-2718中定義的標準就是為此創建的。
·EIP2930:可選訪問列表。??
我們將在下文詳細解釋其中一些標準。??
為什么要引入新的事務類型?
新的事務類型可以實現原本需要借助于Solidity合約或第三方解決方案的功能集成。以限期事務為例。在現有解決方案中,你可以將資金發送至Solidity合約,簽署一個事務并將其發送到專門的節點,讓該事務獲得額外的參數。然后,該節點會處理該事務,確保它在有效期之前執行,否則該事務不會被廣播。一些dApp和合約內置該功能,但是對于大多數事務而言很難實現。
EIP2711可以將該功能添加到以太坊網絡上,同時保證向后兼容傳統事務,而且無需使用智能合約或專門的節點。但是,EIP2711目前還是草案,我們還無法確定它近期是否會在以太坊網絡上實行。EIP2711也有可能被拆分成幾個小的EIP。??
?-圖源:f2pool-??
EIP1559提出的新的事務格式
在EIP1559中,gas的運作方式發生了巨大變化:gas會被部分銷毀,不再全部支付給礦工。本文不會具體闡述EIP1559的所有變化,但是EIP1559確實提出了一種新的事務格式:??
0x02||RLP()??
最顯著的變化包括:
·用「每單位gas的最高優先費用」和「每單位gas的最高費用」來代替gasprice。
·鏈ID是單獨編碼的,不再包含在簽名v值內。這實際上是使用更簡單的實現來代替EIP155。
·簽名v值變成了一個簡單的校驗位,不是0就是1,具體取決于使用橢圓曲線上的哪個點。??
EIP1559還提供了一種基于EIP2930指定訪問列表的方法。這樣可以減少事務的gas成本。
由于EIP1559極大地改變了gas費的運作方式,它并不能直接兼容傳統事務。為了保證向后兼容性,EIP1559提出了一種將傳統事務升級成兼容EIP1559事務的方法,即,使用「每單位gas的最高優先費用」和「每單位gas的最高費用」來代替?「gas價格」。??
原生元事務和批量事務
元事務誕生已經有幾年了,但是到目前為止都需要依靠智能合約。和限期事務一樣,元事務也要求用戶將以太幣發送至專為元事務創建的智能合約。
EIP2711使得原生元事務和批量事務成為可能,無需依賴于智能合約。這里定義了一個新的事務格式,事務類型是?0x02。交易如下所示:??
0x02?||?RLP()??
EIP2711主要包括gas付款方的有效負載和簽名。這樣一來,即使不持有任何以太幣的地址也能發送ERC20代幣。
發送方的有效負載和簽名等均基于事務子類型定義。例如,如果交易類型為?1,發送方的有效負載被定義為:??
,?nonce,?ChainId,?ValidUntil,?gasLimit,?gasPrice]??
ChildTransaction?被定義為?,可以在單個事務內指定收款方地址、值和數據。例如,ChildTransaction?可以用來在單筆事務中調用ERC20的?approve?和?transferFrom。
如果你想了解更多關于EIP2711的事務子類型的信息,我建議你閱讀?EIP2711的規范。??
結論
類型化事務為以太坊網絡帶來了更多可能性。我們在創建類型化事務時不會增加以太坊客戶端、庫和其它工具的復雜性。
目前,由于EIP2718最近才被添加到網絡中,新的事務類型還沒有得到廣泛應用,但是目前還有一些很棒的EIP正在開發中,例如,EIP2711提出了限期事務、批量事務和代付事務。由于以太坊上可以定義新的事務類型,提出新的EIP也會變得更容易。
火幣宣布將在5月20日重啟火幣prime,正式開啟第七期HuobiGlobal優選上幣通道,APENFT的NFT將成為首個上幣項目.
1900/1/1 0:00:00尊敬的用戶: 應項目方要求,CMDC將延遲上線,具體上線時間請關注公告。為您帶來不便,敬請諒解.
1900/1/1 0:00:005月12日,HPB聯合社區開發團隊AssetLink團隊共同研發的基于預言機的EVM公鏈跨鏈網絡AssetLinkAlpha版本正式發布,實現了HPB和以太坊測試網上的資產交換.
1900/1/1 0:00:00尊敬的用戶: 幣虎交易平臺攜手項目方帶來了17,000,000,000SPE活動福利,詳細規則如下:活動1:幣虎社區SPE話題參與挑戰!9,000,000.
1900/1/1 0:00:00尊敬的用戶: WBF即將在月亮專區上線DOGEMOON/USDT交易對,暫不開啟提幣,具體上線時間如下:充值時間:2021/5/1711:30交易時間:2021/5/1711:30?發行時間:2.
1900/1/1 0:00:00尊敬的用戶:??? BKEXGlobal即將上線XDOGE,詳情如下:上線交易對:XDOGE/USDT幣種類型:BEP20充值功能開放時間:2021年5月15日11:45交易功能開放時間:202.
1900/1/1 0:00:00