EIP-712是一種更高級、更安全的交易簽名方法。我們可以在Uniswap V2的Periphery 合約中看到EIP-712的實現。
但對于EIP-712卻很難被我們普通人所理解,本文就是根據一個示例來具體體驗EIP-712,以達到對其的更好理解。
在GitHub中有許多文章和示例解釋和展示了如何使用EIP-712,但在理解它作為一個整體是如何工作的以及前端代碼和智能合約是如何關聯的方面有很多困難。這是EIP712的一個示例(不是解釋)。先決條件和使用的版本。
Solidity基礎知識
npm 7.19.1
節點 16.2.0
Metamask 9.8.4
truffle 5.4.0
EIP-712是一種更高級、更安全的交易簽名方法。使用該標準不僅可以簽署交易并且可以驗證簽名,而且可以將數據與簽名一起傳遞到智能合約中,并且可以根據該數據驗證簽名以了解簽名者是否是實際發送該簽名的人要在交易中調用的數據。
Glassnode:ETH盈利地址數達一個月高點:金色財經消息,Glassnode數據顯示,ETH盈利地址數達一個月高點,七日均值為45,260,283.143。[2022/7/20 2:25:26]
EIP-712提出了數據的標準結構和從結構化消息生成散列的定義過程。然后使用此散列生成簽名。通過這種方式,為發送交易生成的簽名與為驗證身份或任何其他目的生成的簽名之間就有了明顯的區別。EIP-712草案將簽名方案背后的動機表述為:
提高鏈上使用的鏈下消息簽名的可用性。我們看到越來越多的人采用鏈下消息簽名,因為它節省了gas,減少了區塊鏈上的交易數量。
EIP-712是類型化結構化數據的哈希和簽名的標準,而不僅僅是字節字符串。它包括一個
編碼函數正確性的理論框架,
與solid結構相似并兼容的結構化數據規范,
DODO將于5月12日開啟HECO第一個眾籌建池項目Enft.One:據官方消息,HECO首款以Emoji為主題的GameFi項目Enft.One即將在DODO平臺發起IDO,眾籌時間為5月12日 14:00-20:00。
據悉Enft.One的用戶可以通過NFT表情抽獎、收藏挖礦、標簽位升級等創新的NFT游戲規則來增加收益率;同時,Emoji NFT具有一定隨機性及稀缺性,用戶的稀有NFT可以通過市場交易。[2021/5/11 21:47:08]
安全哈希算法用于這些結構的實例,
在可簽名消息集中安全包含這些實例,
一個可擴展的域分離機制,
新的RPC調用eth_signTypedData,
EVM中哈希算法的優化實現。
EIP-712的實現可以在Uniswap V2的Periphery 合約中看到,它通過許可移除流動性,最終調用Uniswap V2 Core中的方法來完成這一操作。
V神:應把資源投入到一個無需信任、無需服務器的ETH-BTC DEX中:V神發推稱:我們應該把資源投入到一個合適的(無需信任、無需服務器,用戶體驗盡量類似于Uniswap) ETH BTC去中心化交易所中。令人尷尬的是,我們現在仍然不能在無需信任的條件下輕松地在兩個最大的加密生態系統之間進行價值轉移。[2020/3/25]
前端的簽名被傳遞給Periphery 中的方法,簽名被用來代表Core中使用該方法的用戶批準Router合約。
我們的示例將使用EIP-721提案用數據(地址、storedData的值和截止日期)簽署交易,這些數據用于更改合約中變量的值。
如果簽名和散列給出了簽署人的地址,并且沒有超過截止日期,則更改storedData的值。
這是一個無用的例子,但理解了它將確保您可以在其他地方使用該標準。正確使用 EIP-712 是創建一個 ERC20 許可證,就像 Uniswap 團隊所做的那樣。
近日一個空的ETN區塊被開采,這意味著有人可能擁有超過51%的區塊鏈所有權:據Electroneum官方推特消息,近日一個空的ETN區塊被開采,這意味著有人可能擁有超過51%的區塊鏈所有權,并能夠操控該區塊鏈的鏈鎖;同時也意味著其他用戶的密碼不再安全。該事件在ETN社區引發不安,導致社區用戶近日密切監視自己的密碼。一旦曠工擁有超過51%的區塊鏈,就可以實現雙花。盡快這一切在Electroneum鏈上還沒有發生,但仍存在隱患。ETN現全球均價0.02美元,跌幅15.84%。[2018/4/5]
繼續克隆 truffle 的react box。
我們將根據需要簡單地調整和添加代碼,以使EIP-712正常工作。
數據是EIP-712中最關鍵的部分。這些要簽名的數據必須符合預定義的格式。它必須有一個EIP712Domain和要簽名的數據(在我們的示例中設置)。兩者的組合將被簽名并發送給智能合約進行驗證。
北京志頂科技創始人王瑋表示:需要在互聯網與區塊鏈之間建立一個橋梁:金色財經現場報道,在2018區塊鏈技術及應用峰會上,北京志頂科技創始人王瑋表示:“應用的歸應用,通證的歸通證,通證就是區塊鏈上流轉的一種資產,實際上我們應該在一個我們傳統的或者叫做互聯網的應用的世界跟我們的區塊鏈上的這種去中心化的資產流轉的世界建立一座橋梁,把它們打通,這樣實際上是發揮了各自的優勢,應用的形態仍然滿足我們日常的需要,而區塊鏈用于保證這些資產的流轉,保證這些資產的真實性,不會被欺騙,不會被篡改,不會被偽造,這就是我們所說的平行世界的和諧之道”[2018/4/2]
在EIP-712下簽名的每個數據必須有一個EIP712Domain和另一個數據。這兩者的結構可以是任何東西,但必須在JS代碼和SC代碼上相同。
當使用該提案時,EIP712Domain的結構是一個被廣泛接受的標準。
EIP-712 數據標準
EIP712Domain有一些參數,這些參數指定在哪個網絡和哪個特定合約上將用于驗證簽名。另一份具有相同代碼的合同將無法驗證該簽名。
讓我們添加一個按鈕,當單擊該按鈕時,將彈出元掩碼,使用eth_signTypedData_v3方法對數據進行簽名。
一旦簽署了上面定義的數據使用eth_signTypedData_v3方法我們得到了簽名和簽名分割成其r, s,和v組件并將其發送到智能合約將使用ercrecover這些參數和數據哈希恢復簽名者的公鑰。
拆分簽名
編寫智能合約。
就像我們定義了包含EIPdomain和要簽名的數據的JS代碼一樣,智能合約也需要兩個變量來表示每個EIPdomain的散列數據和我們的數據(在本例中是設置數據)。
使用 ercrecover
在UI端,我們對數據進行簽名,并將r、s和v發送給智能合約。
上面的代碼做了兩件事,首先它散列數據并生成它們的散列。接下來,它使用該數據的散列(在SC中稱為散列)和簽名,使用ercrecover方法生成簽名者的公鑰。
上面顯示的數據的兩個kecak哈希值應該類似于在out JS代碼中定義的數據結構。如果兩者不同,則無法恢復簽名者的地址。
簽名數據的結構
將infura中的助記符添加到truffle-config.js文件(第3行),并指定部署者的地址(第18行)。上面的例子使用了rinkeby testnet,但是任何測試都可以使用,并查看truffle文檔來部署到其他測試網。
然后部署合同。部署后復制simplestorage的地址,替換為verifyingContract下app.js第76行的地址。
部署代碼片段
進入client目錄,運行npm run start啟動react應用。
按下' Press to sign '按鈕,然后在元掩碼彈出的簽名請求上簽名。接下來,確認交易以設置智能合約上的值。
交易完成后,刷新webapp以查看所反映的變化。
Tags:區塊鏈ETHNFTDomain區塊鏈的未來發展前景作者是誰ETHHEDGE價格snft幣西班牙Domain Coin
交易媒介=中間化 常人對于貨幣的理解最為常見與樸實的理解,即貨幣是交易的媒介。不論成為“一般等價物”或者“支付工具”,大體來說,都是這個意思.
1900/1/1 0:00:00近日,騰訊推出 NFT 交易 APP 的新聞引發了 NFT 藏家的廣泛關注。值得注意的,騰訊并不是第一個涉足 NFT 的互聯網大廠.
1900/1/1 0:00:00隨著區塊鏈技術的成熟,DeFi和NFT的盛行,加密世界的人們都變得越來越理性和依賴數據,隨之而來的變化,就是數據的重要性.
1900/1/1 0:00:00市場和社區對于「理想型」算法穩定幣的追求仍在繼續。AMPL 因 Aave 的提案再次被推至風口浪尖。7 月 4 日這天,AMPL 突破 1.042 美元,進入增發階段.
1900/1/1 0:00:002021年7月24日-7月25日,世界區塊鏈大會·杭州盛大舉辦。本屆大會以“無限未來”為主題,匯聚全球的100+區塊鏈、加密貨幣行業頭部創業者、研究者,以胸懷萬里世界的姿態,共同放眼無限未來的行.
1900/1/1 0:00:00Layer2是個大的話題。是否去中心化,是否安全,資金狀態確認時間是Layer2的主要的討論話題。最近有點時間,總結一下Layer2的理解和思考.
1900/1/1 0:00:00