比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads
首頁 > 區塊鏈 > Info

MAI:一個示例來解釋EIP-712

Author:

Time:1900/1/1 0:00:00

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是一種更高級、更安全的交易簽名方法。使用該標準不僅可以簽署交易并且可以驗證簽名,而且可以將數據與簽名一起傳遞到智能合約中,并且可以根據該數據驗證簽名以了解簽名者是否是實際發送該簽名的人要在交易中調用的數據。

一個休眠近10年的狗狗幣地址被激活:金色財經報道,據Whale Alert數據顯示,一個持有1,215,614 DOGE(116,460美元)的休眠地址在閑置9.3年后被激活,在狗狗幣社區引起了關注,因為最近特斯拉首席執行官埃隆馬斯克用狗狗幣的柴犬圖像取代推特的標志性藍鳥標志后,狗狗幣價格出現了大幅增長。此外,狗狗幣在谷歌的搜索量也出現了大幅上升,據悉已飆升了近2,000%。[2023/4/6 13:47:23]

EIP-712提出了數據的標準結構和從結構化消息生成散列的定義過程。然后使用此散列生成簽名。通過這種方式,為發送交易生成的簽名與為驗證身份或任何其他目的生成的簽名之間就有了明顯的區別。EIP-712草案將簽名方案背后的動機表述為:

提高鏈上使用的鏈下消息簽名的可用性。我們看到越來越多的人采用鏈下消息簽名,因為它節省了gas,減少了區塊鏈上的交易數量。

Deribit上的ETH期貨未平倉合約達到一個月高點:金色財經報道,據Glassnode數據顯示,Deribit上的ETH期貨未平倉合約剛剛在達到435,442,137美元的一個月高點。[2023/1/27 11:31:27]

EIP-712是類型化結構化數據的哈希和簽名的標準,而不僅僅是字節字符串。它包括一個

編碼函數正確性的理論框架,

與solid結構相似并兼容的結構化數據規范,

安全哈希算法用于這些結構的實例,

在可簽名消息集中安全包含這些實例,

一個可擴展的域分離機制,

新的RPC調用eth_signTypedData,

EVM中哈希算法的優化實現。

EIP-712的實現可以在UniswapV2的Periphery合約中看到,它通過許可移除流動性,最終調用UniswapV2Core中的方法來完成這一操作。

Glassnode:交易所比特幣余額已長達一個月保持穩定,停滯在250萬枚左右:8月28日消息,據Glassnode分析數據顯示,交易所比特幣余額已經長達一個月保持穩定,5月份約有14萬枚比特幣凈流入交易所后,7月份出現了約11萬枚比特幣的凈流出,然而在整個8月,交易所比特幣余額停滯在250萬枚BTC左右(約占流通供應量的13%)。此外,據交易所凈流量指標顯示本周交易所余額整體呈凈流入狀態,因為一些交易員和投資者似乎正在利用當前比特幣市場的強勁走勢拋售獲利,值得注意的是,交易所BTC流入規模與2020年12月至2021年4月的牛市期間的情況并無不同,近期BTC拋售增多或許是合理的預期行為。[2021/8/28 22:43:19]

前端的簽名被傳遞給Periphery中的方法,簽名被用來代表Core中使用該方法的用戶批準Router合約。

示例代碼

聲音 | 趙長鵬:幣安開發了一個反欺詐系統,將很快免費提供:幣安創始人趙長鵬發推特稱,幣安將積極阻止任何被盜資金進入。這其中的關鍵是受害者快速報告和實時阻止交易。為此,我們為此開發了一個反欺詐系統。將很快免費提供給所有人。[2019/6/27]

我們的示例將使用EIP-721提案用數據(地址、storedData的值和截止日期)簽署交易,這些數據用于更改合約中變量的值。

如果簽名和散列給出了簽署人的地址,并且沒有超過截止日期,則更改storedData的值。

這是一個無用的例子,但理解了它將確保您可以在其他地方使用該標準。正確使用EIP-712是創建一個ERC20許可證,就像Uniswap團隊所做的那樣。

步驟1

繼續克隆truffle的reactbox。

我們將根據需要簡單地調整和添加代碼,以使EIP-712正常工作。

聲音 | 幣威美國 CSO:錢包是下一個區塊鏈千萬級社群:據騰訊網消息,幣威美國CSO Alex Lee表示:“資產數字化和通證化在全球已經形成一個趨勢,各個社群各項目方的用戶可能是互補的,但是這些節點還需要錢包將他們結合起來,因為大家都有數字資產,都需要數字資產服務和工具,所以這將是一個數萬億美元的市場。”[2018/8/17]

步驟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:MAI比特幣OMAAINUnstoppable Domains比特幣行情圖最新GOMAchainlink幣今日價格

區塊鏈
OIN:金色觀察丨五圖看懂Coinbase二季度股東信

北京時間2021年8月11日,在納斯達克上市的美國加密貨幣交易所Coinbase發布2021年二季度股東信,詳細披露了Coinbase在2021年二季度的運營數據.

1900/1/1 0:00:00
區塊鏈:金色晚報 | 8月6日晚間重要動態一覽

12:00-21:00關鍵詞:ARK方舟基金、印度央行、耶倫、阿布哈茲、白宮1.ARK方舟基金已持有超72萬股ETHE價值1620萬美元2.支付基礎設施Ramp在英國FCA注冊為加密資產公司3.

1900/1/1 0:00:00
DEFI:金色DeFi日報 | 梅西主題NFT系列將在Etherity Chain發售

DeFi數據 1.DeFi總市值:966.15億美元 市值前十幣種排名數據來源DeFiboxDeFi總市值數據來源:Coingecko2.過去24小時去中心化交易所的交易量:28.

1900/1/1 0:00:00
GENS:美SEC主席 Gary Gensler:任職的矛盾與平衡

比特幣極簡主義者GaryGensler,面對任前加密行業的遺留難題,偏左還是偏右?2021年美國ASPEN安全論壇上.

1900/1/1 0:00:00
EFI:韓國央行表示“區塊鏈以及去中心化可能形成新的金融范式”

韓國銀行預測,基于區塊鏈的去中心技術在化未來可能形成新的金融范式。然而,像DeFi這樣的去中心化系統要成為一種新的金融范式并非易事.

1900/1/1 0:00:00
ITA:一文了解Dark Forest頂級玩家眼中的黑暗森林戰爭藝術

運用了零知識證明技術的加密游戲黑暗森林,已憑借其可玩性在以太坊社區圈了很多粉,其中包括以太坊聯合創始人V神以及Paradigm聯合創始人MattHuang.

1900/1/1 0:00:00
ads