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是一種更高級、更安全的交易簽名方法。使用該標準不僅可以簽署交易并且可以驗證簽名,而且可以將數據與簽名一起傳遞到智能合約中,并且可以根據該數據驗證簽名以了解簽名者是否是實際發送該簽名的人要在交易中調用的數據。
麥迪遜的音樂流媒體公司利用區塊鏈構建一個新的數字空間:金色財經報道,位于麥迪遜的音樂流媒體初創公司最近在 Twitter 上宣布將關閉運營,但并非完全關閉。LüM(Live Undiscovered Music)正在使用區塊鏈技術構建一個新的數字空間,讓粉絲能夠直接為他們所支持的音樂家的財務成功做出貢獻。首席執行官 Max Fergus 表示,用戶可以收集、出售和交易由他們最喜歡的藝術家提供的“訪問通行證”。他說,音樂家直接從粉絲投資中獲利,而沒有唱片公司或任何其他中間人的代表。“我們有潛力創造一種新模式,為音樂行業開啟新機遇,這是一種不需要藝術家向他們的主人出售、放棄自己的股權或花費過多時間創作獨家內容來通過他們最大的支持者獲利的模式。(madison)[2021/12/27 8:05:50]
EIP-712提出了數據的標準結構和從結構化消息生成散列的定義過程。然后使用此散列生成簽名。通過這種方式,為發送交易生成的簽名與為驗證身份或任何其他目的生成的簽名之間就有了明顯的區別。EIP-712草案將簽名方案背后的動機表述為:
美貨幣監理署代理署長:美國應為加密貨幣劃定一個“監管范圍”:美國貨幣監理署(OCC)代理署長Michael Hsu接受英國《金融時報》采訪時表示,希望美國官方攜手努力,為加密貨幣劃定一個「監管范圍」。他表示加密貨幣監管需要各監管機構的廣泛協調,目前各機構也都很愿意在很多方面攜手合作。由貨幣監理署、美聯儲和聯邦存款保險公司(FDIC)組成的跨部門加密貨幣監管“沖刺”團隊已于本月召開了第一次會議。Michael Hsu說這個團隊的目標不是制定政策,而是為監管機構提供想法,目的是跟上加密貨幣的增長步伐。Michael Hsu表示:這個小組規模很小,層級很高。因為現在重要的是快速行動起來,規模太大會影響速度。(金融時報)[2021/5/31 22:57:36]
提高鏈上使用的鏈下消息簽名的可用性。我們看到越來越多的人采用鏈下消息簽名,因為它節省了gas,減少了區塊鏈上的交易數量。
Grayscale與紐約巨人隊建立獨家合作關系,成為NFL第一個加密貨幣贊助商:周三,灰度(Grayscale)宣布與紐約巨人隊建立獨家合作關系,成為了有史以來第一個贊助NFL球隊的加密貨幣公司。
目前,Grayscale已是紐約巨人隊的 \"官方數字貨幣資產管理合作伙伴\"。據悉,作為合作的一部分,灰度還將成為巨人隊基金會高爾夫球賽的主贊助商、主場比賽的主贊助商以及巨人隊訓練營的支持贊助商。
此外,Grayscale還計劃每年為巨人隊人員舉辦關于加密貨幣的教育研討會。(Insider)[2021/5/6 21:27:54]
EIP-712是類型化結構化數據的哈希和簽名的標準,而不僅僅是字節字符串。它包括一個
編碼函數正確性的理論框架,
與solid結構相似并兼容的結構化數據規范,
安全哈希算法用于這些結構的實例,
張松青:ETH2.0可能讓整個區塊鏈生態又上一個臺階:4月26日,在由金色財經聯合F2Pool主辦的《ETH邁向下一站 GPU礦工何去何從》線上訪談節目上,MinerOS 聯合創始人張松青指出長期看好的ETH的原因。
1、生態發展:ETH是最早支持智能合約的公鏈,目前整個開發生態是最完善的。基于ETH發行的鏈上資產和DAPP也越來越多,這些會使ETH的用戶數和活躍度不斷增加。還有就是對于ETH2.0的期待,這是有可能讓整個區塊鏈生態又上一個臺階的。
2、從挖礦的公平性來說,ETH是基于POW發行的,本身具有POW的公平公正的特性。另外ETH挖礦算法抗ASIC,讓專業礦機性價比不是那么高,讓GPU礦工可以持續的參與挖礦,讓全球更多的人,可以低成本,方便的的參與進來。區塊鏈應該是一項人類普惠的技術,不能成為寡頭的游戲。
3、從挖礦收益的角度來講,顯卡挖礦收益一直是比較穩定的。顯卡的更新換代不像專業礦機那樣快,三四年前的474、1060等顯卡現在還能有不錯的收益。由于顯卡挖礦維護量比較大,對專業技術要求也相對較高,大規模顯卡礦場之前一直比較少。minerOS之類的礦機管理系統的出現,大大降低了顯卡礦場的維護難度,現在顯卡挖礦也呈現出規模化、集中化的趨勢。[2020/4/26]
在可簽名消息集中安全包含這些實例,
ECOC CBO:不修改任何一個代碼,以太坊上的DAPP就可在ECOC系統上操作:4月13日晚6點,ECOC CBO Albert做客MXC抹茶社區,就“ECOC的發展與未來”進行主題分享。Albert表示:“ECOC創立之初,就瞄定了以太坊,也看到了以太坊未來會出現的痛點,因此ECOC的效率優化到在需要賬本記錄的情況下,可以達到560 TPS,在零知識證明的情況下可以達到百萬級別,并且將區塊容量大小提升到了4MB,在做到高速的同時也兼顧了存儲。”
Albert認為:“在ECOC的底層技術上加入了以太坊虛擬機技術,這樣可以讓以太坊上的DAPP在不修改任何一個代碼的前提下跨鏈來我們的系統上執行操作,無形當中為ECOC在未來的公鏈之爭中增加了超級砝碼。”[2020/4/13]
一個可擴展的域分離機制,
新的RPC調用eth_signTypedData,
EVM中哈希算法的優化實現。
EIP-712的實現可以在UniswapV2的Periphery合約中看到,它通過許可移除流動性,最終調用UniswapV2Core中的方法來完成這一操作。
前端的簽名被傳遞給Periphery中的方法,簽名被用來代表Core中使用該方法的用戶批準Router合約。
示例代碼
我們的示例將使用EIP-721提案用數據(地址、storedData的值和截止日期)簽署交易,這些數據用于更改合約中變量的值。
如果簽名和散列給出了簽署人的地址,并且沒有超過截止日期,則更改storedData的值。
這是一個無用的例子,但理解了它將確保您可以在其他地方使用該標準。正確使用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以查看所反映的變化。
DeFi數據 1.DeFi總市值:1012.37億美元 市值前十幣種排名數據來源DeFiboxDeFi總市值數據來源:Coingecko2.過去24小時去中心化交易所的交易量:40.
1900/1/1 0:00:00你買過JGP圖片嗎?幾萬美金一張那種。今年6月10日,在蘇富比舉行的NFT藝術品展覽及在線拍賣活動中,CryptoPunk#7523以1175.4萬美元成交.
1900/1/1 0:00:00以太坊自2015年7月30日創世至今已滿6周年,恰逢8月5日晚正式完成了發展史上重要的倫敦升級,PAData回顧了以太坊這6年來的市場數據、鏈上數據和網絡數據中的多個重要維度的數據.
1900/1/1 0:00:00忽然之間,NFT火了起來。8月2日,北京商報記者發現,騰訊上線了一款NFT交易App"幻核",首期限量發售300件"《十三邀》NFT數字藏品".
1900/1/1 0:00:00前言 8月4日,知道創宇區塊鏈安全實驗室?監測到BSC鏈上的DeFi協議WaultFinance遭遇閃電貸襲擊,價值跌落近半。實驗室第一時間跟蹤本次事件并分析.
1900/1/1 0:00:00在現實世界中,我們傾向于通過目的來定義借來的錢。貸款以標簽開頭——家庭、大學、企業——并代表對有形目標的投資。我們希望我們的房屋增值;我們的學位以促進高薪工作;我們的業務要擴大.
1900/1/1 0:00:00