EIP-712是一種更高級、更安全的交易簽名方法。我們可以在UniswapV2的Periphery合約中看到EIP-712的實現。
但對于EIP-712卻很難被我們普通人所理解,本文就是根據一個示例來具體體驗EIP-712,以達到對其的更好理解。
在GitHub中有許多文章和示例解釋和展示了如何使用EIP-712,但在理解它作為一個整體是如何工作的以及前端代碼和智能合約是如何關聯的方面有很多困難。這是EIP712的一個示例(不是解釋)。先決條件和使用的版本。
Solidity基礎知識
npm7.19.1
節點16.2.0
Metamask9.8.4
truffle5.4.0
EIP-712
EIP-712是一種更高級、更安全的交易簽名方法。使用該標準不僅可以簽署交易并且可以驗證簽名,而且可以將數據與簽名一起傳遞到智能合約中,并且可以根據該數據驗證簽名以了解簽名者是否是實際發送該簽名的人要在交易中調用的數據。
BUSD市值較一個月前已減少約60億美元:金色財經報道,據Coingecko數據顯示,當前幣安美元穩定幣BUSD市值已下降至174.7億美元,且被XRP反超,跌至加密市值排名第七位。歷史數據顯示,BUSD市值于11月中旬超過235億美元,這意味著當前市值較一個月前已減少約60億美元,跌幅超過25.5%。[2022/12/25 22:06:10]
EIP-712提出了數據的標準結構和從結構化消息生成散列的定義過程。然后使用此散列生成簽名。通過這種方式,為發送交易生成的簽名與為驗證身份或任何其他目的生成的簽名之間就有了明顯的區別。EIP-712草案將簽名方案背后的動機表述為:
提高鏈上使用的鏈下消息簽名的可用性。我們看到越來越多的人采用鏈下消息簽名,因為它節省了gas,減少了區塊鏈上的交易數量。
EIP-712是類型化結構化數據的哈希和簽名的標準,而不僅僅是字節字符串。它包括一個
數據:幣安上BTC期貨合約空頭清算額達一個月高點:2月8日消息,據Glassnode數據顯示,幣安上BTC期貨合約空頭清算額達一個月高點,數值為4,138,773.27美元。[2022/2/8 9:38:34]
編碼函數正確性的理論框架,
與solid結構相似并兼容的結構化數據規范,
安全哈希算法用于這些結構的實例,
在可簽名消息集中安全包含這些實例,
一個可擴展的域分離機制,
新的RPC調用eth_signTypedData,
EVM中哈希算法的優化實現。
EIP-712的實現可以在UniswapV2的Periphery合約中看到,它通過許可移除流動性,最終調用UniswapV2Core中的方法來完成這一操作。
聲音 | 陸金所張義軍:需要尋找一個新的機構間合作模式以拓展區塊鏈應用場景:1月11日,中國經營報刊文“區塊鏈應用場景急拓展 合作模式亟待創新”。文章稱,陸金所技術架構總經理張義軍表示,區塊鏈技術的落地相對較難的主要原因之一,是因為缺乏大型應用場景所需要的上下游,主要在于區塊鏈的去中心、數據共享的特性,需要機構改變原有合作模式、利益分配機制。張義軍進一步表示,拓展區塊鏈的應用場景需要一個更為開放、透明的環境,最重要的就是需要尋找一個新的機構間合作模式。[2020/1/11]
前端的簽名被傳遞給Periphery中的方法,簽名被用來代表Core中使用該方法的用戶批準Router合約。
示例代碼
我們的示例將使用EIP-721提案用數據(地址、storedData的值和截止日期)簽署交易,這些數據用于更改合約中變量的值。
分析 | 以太坊所謂的“雙分叉”其實只是一個分叉:今日早間,以太坊Geth客戶與安全主管Martin Holst Swende表示,將在以太坊主網(mainnet)上進行“雙分叉”:君士坦丁堡硬分叉以及君士坦丁堡修正性(ConstantinopleFix)分叉。而據PeckShield消息,將此次硬分叉稱為”雙分叉“其實不準確、具有一定的誤導性。所謂的“雙分叉”其實只是一個分叉。君士坦丁堡硬分叉和君士坦丁堡修正性(ConstantinopleFix)分叉其實是串聯在一起的。君士坦丁堡分叉本身帶有EIP-1283協議,而ConstantinopleFix分叉唯一功能則是禁用君士坦丁堡分叉中的EIP-1283協議。君士坦丁堡硬分叉和ConstantinopleFix分叉將同時在主網7280000區塊上產生作用。但由于測試網(testnet)已經設置了君士坦丁堡分叉(帶有EIP-1283協議),所以在測試網上只需進行ConstantinopleFix分叉。此外,需要強調的是,以太坊君士坦丁堡硬分叉自始至終都是其社區為改善以太坊本身性能的一次升級,所以并不會產生分叉幣。[2019/1/19]
如果簽名和散列給出了簽署人的地址,并且沒有超過截止日期,則更改storedData的值。
動態 | 光大證券首席經濟學家:數字貨幣只是一個技術手段:據新浪財經消息,光大證券全球首席經濟學家彭文生表示,數字貨幣只是一個技術手段,比特幣不是貨幣,類似比特幣的也不可能成為貨幣,貨幣是政府發行的法定貨幣,它和金融體系、信用體系息息相關。[2018/8/10]
這是一個無用的例子,但理解了它將確保您可以在其他地方使用該標準。正確使用EIP-712是創建一個ERC20許可證,就像Uniswap團隊所做的那樣。
步驟1
繼續克隆truffle的reactbox。
我們將根據需要簡單地調整和添加代碼,以使EIP-712正常工作。
步驟2
數據是EIP-712中最關鍵的部分。這些要簽名的數據必須符合預定義的格式。它必須有一個EIP712Domain和要簽名的數據(在我們的示例中設置)。兩者的組合將被簽名并發送給智能合約進行驗證。
在EIP-712下簽名的每個數據必須有一個EIP712Domain和另一個數據。這兩者的結構可以是任何東西,但必須在JS代碼和SC代碼上相同。
當使用該提案時,EIP712Domain的結構是一個被廣泛接受的標準。
?EIP-712數據標準
EIP712Domain有一些參數,這些參數指定在哪個網絡和哪個特定合約上將用于驗證簽名。另一份具有相同代碼的合同將無法驗證該簽名。
步驟3
讓我們添加一個按鈕,當單擊該按鈕時,將彈出元掩碼,使用eth_signTypedData_v3方法對數據進行簽名。
步驟4
一旦簽署了上面定義的數據使用eth_signTypedData_v3方法我們得到了簽名和簽名分割成其r,s,和v組件并將其發送到智能合約將使用ercrecover這些參數和數據哈希恢復簽名者的公鑰。
拆分簽名
步驟5
編寫智能合約。
就像我們定義了包含EIPdomain和要簽名的數據的JS代碼一樣,智能合約也需要兩個變量來表示每個EIPdomain的散列數據和我們的數據(在本例中是設置數據)。
使用ercrecover
在UI端,我們對數據進行簽名,并將r、s和v發送給智能合約。
上面的代碼做了兩件事,首先它散列數據并生成它們的散列。接下來,它使用該數據的散列(在SC中稱為散列)和簽名,使用ercrecover方法生成簽名者的公鑰。
上面顯示的數據的兩個kecak哈希值應該類似于在outJS代碼中定義的數據結構。如果兩者不同,則無法恢復簽名者的地址。
簽名數據的結構
步驟6
將infura中的助記符添加到truffle-config.js文件(第3行),并指定部署者的地址(第18行)。上面的例子使用了rinkebytestnet,但是任何測試都可以使用,并查看truffle文檔來部署到其他測試網。
然后部署合同。部署后復制simplestorage的地址,替換為verifyingContract下app.js第76行的地址。
部署代碼片段
步驟7
進入client目錄,運行npmrunstart啟動react應用。
按下'Presstosign'按鈕,然后在元掩碼彈出的簽名請求上簽名。接下來,確認交易以設置智能合約上的值。
交易完成后,刷新webapp以查看所反映的變化。
Tags:CONAINMAINMAIhycon幣還有投資價值嗎blockchain錢包短信認證Paris Saint-GermainMainfinex
前言 當前區塊鏈技術和應用尚處于快速發展的初級階段,面臨的安全風險種類繁多,從區塊鏈生態應用的安全,到智能合約安全,共識機制安全和底層基礎組件安全,安全問題分布廣泛且危險性高,對生態體系.
1900/1/1 0:00:00ETF通常被稱為交易型開放式指數基金,通常又被稱為交易所交易基金,是一種在交易所上市交易的、基金份額可變的一種開放式基金,在傳統金融市場是非常受歡迎的一種金融衍生品.
1900/1/1 0:00:002021年08月12日,據慢霧區消息,加密孵化機構DAOMaker疑似遭受黑客攻擊,導致合約大量USDC被轉出。慢霧安全團隊第一時間介入分析,并將分析結果分享如下.
1900/1/1 0:00:00如果你問現在的幣圈熱點是什么,NFT頭像當之無愧。無論是單價動輒幾十萬美金的CryptoPunk,還是剛剛宣布即將上線佳士得拍賣導致價格飆升的BoredApe,還是全球最大的NFT交易平臺Ope.
1900/1/1 0:00:008月11日,據Bitcoinvisuals數據顯示,比特幣閃電網絡總容量已突破2,220.56BTC,按其價格估算,美元價值超過1億美元,創下歷史新高.
1900/1/1 0:00:008月12日凌晨,PolyNetwork黑客發布了自問自答,宣稱攻擊PolyNetwork是因為好玩,而且跨鏈攻擊很火,此外他透露轉移代幣是為了確保安全.
1900/1/1 0:00:00