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是一種更高級、更安全的交易簽名方法。使用該標準不僅可以簽署交易并且可以驗證簽名,而且可以將數據與簽名一起傳遞到智能合約中,并且可以根據該數據驗證簽名以了解簽名者是否是實際發送該簽名的人要在交易中調用的數據。
SEC專員:需要一個更透明的加密貨幣監管體系:金色財經報道,美國證券交易委員會(SEC)專員Hester Peirce表示,“司法管轄權不明確的問題在一定程度上是我們的錯”,她還表示,“需要一個更透明的加密貨幣監管體系”。[2022/11/11 12:49:44]
EIP-712提出了數據的標準結構和從結構化消息生成散列的定義過程。然后使用此散列生成簽名。通過這種方式,為發送交易生成的簽名與為驗證身份或任何其他目的生成的簽名之間就有了明顯的區別。EIP-712草案將簽名方案背后的動機表述為:
提高鏈上使用的鏈下消息簽名的可用性。我們看到越來越多的人采用鏈下消息簽名,因為它節省了gas,減少了區塊鏈上的交易數量。
EIP-712是類型化結構化數據的哈希和簽名的標準,而不僅僅是字節字符串。它包括一個
編碼函數正確性的理論框架,
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]
與solid結構相似并兼容的結構化數據規范,
安全哈希算法用于這些結構的實例,
現場 | Min Kyeongshik:未來幾年將是一個尋找區塊鏈應用的過程:金色財經現場報道,1月29日,韓國網絡及安全機構(Korea Internet & Security Agency)組長Min Kyeongshik在“區塊鏈平昌論壇2019(Blockchain Pyeongchang Forum, BPF2019)”第二天的圓桌論壇上表示,對于區塊鏈會不會帶來我們預期的結果不能確定,單是未來幾年將是一個尋找區塊鏈應用的過程。同時,他指出,區塊鏈不能只以加密貨幣的概念去理解,隨著這種誤解的消失,發掘出區塊鏈的優勢,區塊鏈將會給韓國發展帶來動力。[2019/1/29]
在可簽名消息集中安全包含這些實例,
一個可擴展的域分離機制,
新的RPC調用eth_signTypedData,
EVM中哈希算法的優化實現。
動態 | 比特幣礦業巨頭BTC.com將推出一個以太坊礦池:據thenextweb報道,加密貨幣挖掘硬件巨頭比特大陸的子公司BTC.com今天發布了一個專門用于挖掘以太坊區塊鏈的新客戶端。BTC.com礦場負責人表示,“我們預計采礦業務在未來12個月內將增長到以太坊總哈希值的12%”。[2018/8/30]
EIP-712的實現可以在UniswapV2的Periphery合約中看到,它通過許可移除流動性,最終調用UniswapV2Core中的方法來完成這一操作。
前端的簽名被傳遞給Periphery中的方法,簽名被用來代表Core中使用該方法的用戶批準Router合約。
示例代碼
我們的示例將使用EIP-721提案用數據(地址、storedData的值和截止日期)簽署交易,這些數據用于更改合約中變量的值。
杉磯藝術家用樂高積木繪制了一個圖案 將其數字錢包的私鑰隱藏在了其中:近日,一位洛杉磯藝術家用樂高積木繪制了一個圖案,并將其數字錢包的私鑰隱藏在了其中,他表示如果有人能解開即可獲得他的數字貨幣。[2018/3/25]
如果簽名和散列給出了簽署人的地址,并且沒有超過截止日期,則更改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以查看所反映的變化。
Tags:ECO區塊鏈ECOC以太坊BAKECOIN價格以下哪個不是區塊鏈區塊的結構ecoc幣最新消息以太坊交易平臺合法嗎
實現 閃電網絡的白皮書是一份長而復雜的文件,包含許多技術含量很高的概念;在2015年,很少有人有時間和能力讀完并且理解這份文件.
1900/1/1 0:00:00中國人民銀行日前召開2021年下半年工作會議,在談到深化重點領域金融改革時,會議提出穩妥推進數字人民幣研發試點。此前,中國人民銀行數字人民幣研發工作組發布中國數字人民幣的研發進展白皮書.
1900/1/1 0:00:00如果沒有參議員反對,新的妥協版修正案仍然可以通過一致同意的請求被添加到HR3684中。美國參議員對基礎設施協議中適用于加密貨幣的條款提出了不同的修正案,在立法受挫后達成了妥協.
1900/1/1 0:00:00Cardano創始人兼以太坊聯合創始人查爾斯-霍斯金森長期以來一直都在對加密貨幣行業最大的穩定幣Tether的問題發表意見,他再次強調,該行業必須“去杠桿化”、“去風險化”并“移除”穩定幣.
1900/1/1 0:00:00近日,數字人民幣的試點應用逐漸拓展,成都、蘇州、北京的地鐵相繼支持數字人民幣的購票支付方式,公共交通領域顯然成為了數字人民幣的一個典型應用場景.
1900/1/1 0:00:00周二,?PolyNetwork?官方推特稱該項目遭到黑客攻擊,直接損失了價值超過6億美元的加密資產.
1900/1/1 0:00:00