前言
前段時間,PolyNetwork被盜事件的一個小插曲,一地址向黑客地址轉賬在inputdata中告知其USDT已被凍結,不要使用USDT,黑客知曉后向該地址轉賬13.37ETH。
事后很多人便通過inputData在區塊鏈上“聊天”向黑客“索要”虛擬貨幣,那么我們經常在區塊鏈瀏覽器中看到的inputData到底是什么?知道創宇區塊鏈安全實驗室為您解答。
Inputdata
在以太坊協議中,當交易為合約創建時,inputdata是賬戶初始化程序的EVM代碼;
而當交易為消息調用時,inputdata是合約函數調用數據。
正常情況下簡單的消息調用如調用轉賬函數時需要填寫你要轉賬的地址_to和你要轉賬的數量_amount,這些基本信息都包含在inputdata里面。
我們通過一個調用合約的轉賬交易具體分析,來理解消息調用時inputdata的結構。
解析形式:
原始形式:
波場TRON成為Crypto Expo Asia、TOKEN2049官方贊助商:據官方消息,波場TRON在其官方推特賬號宣布,正式成為本年度TOKEN2049及亞洲加密貨幣博覽會(Crypto Expo Asia)的官方贊助商。波場TRON表示,很高興贊助TOKEN2049及Crypto Expo Asia兩場年度頂級Web3活動,并期待在大會展示波場TRON前沿的區塊鏈技術并分享Web3領域的突破性見解。
據了解,Crypto Expo Asia 是亞洲全球加密生態系統的重要盛會,本年度Crypto Expo Asia將于6月7日至8日在新加坡舉行,預計將吸引超過10000名全球與會者,與波場TRON同時贊助本次活動的有CoinW、JPEX等行業頭部機構。
本年度TOKEN2049將于9月13日至14日在新加坡舉行,與會者將超過10000人,主辦方預計本屆會議有望成為全球同類會議中規模最大的一次。在2022年度的活動中,波場TRON作為大會的贊助商參與,波場TRON創始人孫宇晨受邀出席并在大會發言表示波場TRON未來的目標是成為主流金融服務機構,這也是加密行業的未來。[2023/6/7 21:21:22]
我們將原始的inputdata分為三個部分進行分析:
0xa9059cbb:函數標識符
000000000000000000000000345d8e3a1f62ee6b1d483890976fd66168e390f2:第一個參數為address即你要轉賬的地址,并補位到32字節即64個16進制字符
前CFTC委員:以太坊等同于商品和證券:金色財經報道,前CFTC委員Dan Berkovitz表示,以太坊既可以是一種證券,也可以是一種商品,資本化程度第二高的加密貨幣屬于美國證券交易委員會和CFTC的管轄范圍。有些東西既可以是商品,也可以是證券,定義上的混亂是由于商品不是嚴格意義上的實物。也就是說,期貨合約 所涵蓋的任何東西在技術上都可以被定義為商品。[2023/5/24 22:14:41]
0000000000000000000000000000000000000000000054b7d8ed70650b290000:第二個參數為value即你要轉賬的數量,并補位到32字節即64個16進制字符
通過對比分析我們可以發現inputdata的基本結構為函數標識符+參數。
函數標識符
這里的函數標識符即為函數選擇器,根據官方文檔可知函數選擇器是某個函數簽名的Keccak哈希的前4字節。
我們可以通過代碼bytess4(keccake256("transfer(adddress,uint256)"))或者在線工具獲取這種函數簽名。
下圖可以看出加密結果的前四個字節(a9059cbb)跟inputdata中函數標識符一致。
這里之所以要將函數簽名截斷到四個字節是考慮到Gas成本問題。
在一筆交易中0字節需要支付4gas,而非0字節需要68gas也就是0字節的17倍。
以太坊信標鏈ETH質押APR再次下跌,當前已降至3.7%:金色財經報道,據以太坊官方網站數據顯示,以太坊信標鏈 ETH 質押 ARP 再次下跌,當前已降至 3.7%。歷史數據顯示,該指標于2022 年 11 月 14 日跌破 4%,之后在當月底又跌至 3.8%,本次系過去 3 個月內第三次下跌。此外,當前以太坊信標鏈質押 ETH 總量達到 17,111,615 枚 ETH,按照當前價格計算約合 280 億美元,驗證者總量為 503,586 個。[2023/1/23 11:27:20]
在SHA-3加密中生成的32字節隨機字符串更傾向于多的非0字節,所以大概成本是32x68=2176gas,而截斷成本大概為4x68=272gas,可見截斷到四個字節能夠節省約8倍的gas費。
而函數標識符的作用是指定調用哪一個函數,在同一個合約中兩個不同函數的SHA-3簽名的前4字節相同的概率是十分小的,所以截斷到四個字節實際不會影響函數調用。
參數
在evm執行字節碼的約定中,靜態類型左補齊零至64長度,而動態類型則是右補齊零至64長度。
歸納下常見的靜態類型:uint,bool,Address,bytes,動態數組類型:bytes,string,address,bytes32.....
我們通過pyethereum的ABI編碼函數來研究不同數據類型的編碼方式。
靜態類型
先導入encode_abi函數
importrlpfromethereum.abiimportencode_abi
Layer2 NFT市場Mint Square已上線zKsync 2.0測試網:10月20日消息,基于以太坊Layer2 ZK Rollup的NFT市場Mint Square已上線zKsync 2.0測試網,用戶可在zkSync 2.0測試網上鑄造和交易NFT,并引入了購物車批量購買、定時拍賣這兩個新功能。[2022/10/20 16:31:13]
我們以函數transfer(address,uint256)為例
>encode_abi(,
).hex()
000000000000000000000000345d8e3a1f62ee6b1d483890976fd66168e390f2
0000000000000000000000000000000000000000000000000000000000000001
對于小于32字節的定長數組會被自動填充到32字節:
>encode_abi("],).hex()
//自動填充0
0000000000000000000000000000000000000000000000000000000000000001
0000000000000000000000000000000000000000000000000000000000000002
0000000000000000000000000000000000000000000000000000000000000003
OpenSea宣布支持Optimism:金色財經報道,OpenSea宣布支持以太坊Layer 2 Optimism,這意味著基于Optimism構建的項目也屬于OpenSea的產品范圍,這是該頭部NFT市場支持的第六個區塊鏈,其他5個區塊鏈分別是:以太坊、Solana、Polygon、Klatyn和Arbitrum。據悉,截至目前OpenSea 已經在其市場上列出了 100 多個 Optimism 原生 NFT 集合。 在宣布與 Optimism 建立合作伙伴關系時,OpenSea 特別強調了受 Optimism 支持的熱門項目的加入,包括 Apetimism、Bored Town、MotorHeadz 和 OptiChads。 (decrypt)[2022/9/28 22:35:49]
動態類型
動態類型編碼要稍微復雜一些,需要先計算偏移量進行占位處理,我們通過一個簡單的例子來具體說明。
>encode_abi(","uint256","uint256"],
,,]
).hex()
//參數1的偏移量:32*3=96十六進制0x600000000000000000000000000000000000000000000000000000000000000060
//參數2的偏移量=參數1偏移量+參數1數據部分長度=96+32*4=224十六進制0xE000000000000000000000000000000000000000000000000000000000000000e0
//參數3的偏移量=參數2偏移量+參數2數據部分長度=224+32*4=352十六進制0x1600000000000000000000000000000000000000000000000000000000000000160
//偏移量0x60位置開始傳入參數1的數據
0000000000000000000000000000000000000000000000000000000000000003//元素個
00000000000000000000000000000000000000000000000000000000000000a1//第一個數組元素
00000000000000000000000000000000000000000000000000000000000000a2//第二個數組元素
00000000000000000000000000000000000000000000000000000000000000a3//第三個數組元素
//0xe0位置。參數2的數據
0000000000000000000000000000000000000000000000000000000000000003
00000000000000000000000000000000000000000000000000000000000000b1
00000000000000000000000000000000000000000000000000000000000000b2
00000000000000000000000000000000000000000000000000000000000000b3
//0x160位置。參數3的數據
0000000000000000000000000000000000000000000000000000000000000003
00000000000000000000000000000000000000000000000000000000000000c1
00000000000000000000000000000000000000000000000000000000000000c2
00000000000000000000000000000000000000000000000000000000000000c3
短地址攻擊
經過前面的分析當靜態類型如address長度不足32字節時EVM會根據規則將長度補齊到32字節,如果當轉賬的地址以00結尾,如0x641988625108585185752230bde001b3ebd0fc00,轉賬時將地址后面的兩個零去掉,EVM依然會認為address_to是32位的,所以它會從_value的高位取0來補充,amount的位數會多兩位也就是會乘以256。
攻擊過程如下:
將惡意轉賬地址最后一個字節的0去掉
函數標識符:a9059cbb
轉賬地址:
000000000000000000000000641988625108585185752230bde001b3ebd0fc
轉賬金額:
00000000000000000000000000000000000000000000000000000000000000001
由于EVM的補位規則,解析結果為:0xa9059cbb000000000000000000000000641988625108585185752230bde001b3ebd0fc0000000000000000000000000000000000000000000000000000000000000000100
我們分解后發現,轉賬金額已經多了兩位也就是多了一個字節,即為原來轉賬的256倍
函數標識符:a9059cbb
轉賬地址:
000000000000000000000000641988625108585185752230bde001b3ebd0fc00
轉賬金額:
00000000000000000000000000000000000000000000000000000000000000100
如何在inputdata附著信息
在以太坊中直接進行轉賬交易的inputdata字段默認是沒有內容的,但是我們可以通過設置錢包實現文章開頭的“聊天功能”。
我們以MetaMask錢包為例展示如何通過轉賬在inputdata字段附著一些額外的信息。
1、首先我們需要打開錢包高級選項的顯示十六進制數據開關
2、在轉賬時將你要附著的信息通過十六進制編碼后填入下方十六進制數據中,記得在開頭加上0x然后進行轉賬
3、轉賬成功后在etherscan中就能夠看到附著信息
總結
我們能夠通過交易中的inputdata將一些信息永久存儲在區塊鏈中,可以通過此項技術在食品藥品監管部門的產品防偽溯源、財稅部門的電子票據打假驗真、學術成果存證等方面實現應用落地。
Tags:DATAATAPUTUTDFuture data networkhuatainetworkPUT價格UTD價格
DAOrayakiDAO研究獎金池:商界有句名言,文化能把戰略當早餐吃。組織是由人組成的,組織的文化決定了他們的行為方式。世界上最好的戰略無法克服與組織使命和價值觀相悖的行為。至少不會太久.
1900/1/1 0:00:00第八章ETH,L1&L2,跨鏈橋 1.ETH三季度報告 我個人非常喜歡Bankless出的以太坊第三季度更新報告,這真的太酷了.
1900/1/1 0:00:002016年10月5日,比特幣測試網上的第一筆閃電交易由區塊鏈技術公司BlockStream的工程師團隊完成。戴克爾博士在接受采訪時表示:“這對閃電網絡來說是一個重要的里程碑.
1900/1/1 0:00:00前言 11月以來知道創宇區塊鏈安全實驗室檢測到的攻擊事件相較于10月更加多樣化。這主要得益于區塊鏈威脅情報中心功能的正式開放,其大大提高了我們檢測攻擊的能力.
1900/1/1 0:00:00Facebook預計,僅2021年,其元宇宙項目就將耗資至少100億美元,而Facebook的目標是讓元宇宙的規模達到10億人.
1900/1/1 0:00:00據AdvisorSmith研究表明,2020年超過30%的小企業都沒有購買保險,而這一年中有75%的企業主表示遭遇了需要保險理賠的突發事件.
1900/1/1 0:00:00