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是一種更高級、更安全的交易簽名方法。使用該標準不僅可以簽署交易并且可以驗證簽名,而且可以將數據與簽名一起傳遞到智能合約中,并且可以根據該數據驗證簽名以了解簽名者是否是實際發送該簽名的人要在交易中調用的數據。
摩根溪創始人:貝萊德申請的并非比特幣ETF,而是一個信托:金色財經報道,摩根溪創始人Apompliano在社交媒體上發文稱,貝萊德申請的并非比特幣ETF,而是一個比特幣信托,這些產品只是在技術上有所不同,尤其是在監管和批準方面,不過對于投資者而言最終的結果是相似的。最好的結果是真正的比特幣現貨ETF被SEC批準。但這不是ETF,不認為貝萊德在沒有信心的情況下提交信托會被批準。這種發展有一些潛在的后果。GBTC可能被迫引入每日贖回來競爭。GBTC可能被迫削減費用。許多華爾街公司可能會推出快速跟進的產品來與貝萊德競爭,媒體的關注可能導致資金流入比特幣。[2023/6/16 21:41:33]
EIP-712提出了數據的標準結構和從結構化消息生成散列的定義過程。然后使用此散列生成簽名。通過這種方式,為發送交易生成的簽名與為驗證身份或任何其他目的生成的簽名之間就有了明顯的區別。EIP-712草案將簽名方案背后的動機表述為:
ETH交易所流出量過去一小時(7d MA)創一個月高點:金色財經報道,據Glassnode數據顯示,ETH交易所流出量過去一小時(7d MA)達25,021,003.78美元,創一個月高點。[2022/9/2 13:05:08]
提高鏈上使用的鏈下消息簽名的可用性。我們看到越來越多的人采用鏈下消息簽名,因為它節省了gas,減少了區塊鏈上的交易數量。
EIP-712是類型化結構化數據的哈希和簽名的標準,而不僅僅是字節字符串。它包括一個
編碼函數正確性的理論框架,
與solid結構相似并兼容的結構化數據規范,
安全哈希算法用于這些結構的實例,
在可簽名消息集中安全包含這些實例,
一個可擴展的域分離機制,
新的RPC調用eth_signTypedData,
Sushi協議v3版MIRIN將兌換、期權和貸款合并至一個合約,新增改進資本效率的多項功能:據Sushi協議核心開發者levx.eth發布的github代碼庫,SushiProtocolv3升級版MIRIN將會對AMM進行一系列改進,包括改進資本效率的Deriswap,將兌換、期權和貸款組合在一個單一的具有資本效率的合約,從而允許任意兩種資產進行交互;MIRIN上的每個交易對都有一個公共池和多個特許池,公共池支持標準的兌換費用(收取0.3%的費用,其中0.1%給xSUSHI持有者)。特許池則支持第三方交易根據用戶參與參數進行管理,并可選擇向流動性提供者提供額外的原生治理代幣,設置自定義交易費;支持一鍵添加和移除ETH和單一代幣的流動性、一鍵從Uniswap和Balancer(正在開發中)遷移流動性;新增兩種新的LP曲線任意加權恒定乘積和恒定乘積+總和模型的混合,供流動資金池的創建者選擇,從而在提供新池時實現最大化資本效率;由K3PR提供支持的收益再平衡。[2021/4/9 20:01:09]
EVM中哈希算法的優化實現。
聲音 | Ryan Tayler :委瑞內拉對于達世而言可能是一個很好的市場:據bitcoinexchangeguide報道,達世CEO Ryan Tayler近日接受采訪時表示,委瑞內拉當地的金融設施不完善,支付系統存在一些問題,人們通過銀行匯款需要花費大量時間和高額費用,而Dash易于交易,當地人已經形成了一定的認可,這可能是一個很好的市場。[2019/2/10]
EIP-712的實現可以在UniswapV2的Periphery合約中看到,它通過許可移除流動性,最終調用UniswapV2Core中的方法來完成這一操作。
前端的簽名被傳遞給Periphery中的方法,簽名被用來代表Core中使用該方法的用戶批準Router合約。
示例代碼
我們的示例將使用EIP-721提案用數據(地址、storedData的值和截止日期)簽署交易,這些數據用于更改合約中變量的值。
金色相對論丨菜根談創始人陳菜根:一定會有一個真正懂得通證經濟的交易所在前邊實現彎道超車:金色相對論今日熱議“交易所返傭大戰”。菜根談創始人陳菜根表示:
目前,交易所無序競爭的本質是現有韭菜地的互相踩踏。德魯克說,戰略不是研究未來做什么,而是研究今天做什么才有未來。按照此理,脫離現有的巴掌大的韭菜地(粗略估計1000萬人/全球)、去發現更大的韭菜地,才會擁有未來。水洼里長不出鯨鯊,那是青蛙的地盤。[2018/6/22]
如果簽名和散列給出了簽署人的地址,并且沒有超過截止日期,則更改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以查看所反映的變化。
日前,飛馳瀏覽器重磅上線了多項新功能,其中包括全網算力走勢、存儲池排行、大額轉賬記錄等,這些新功能的推出將幫助用戶了解更完整更全面的星際文件系統網絡數據.
1900/1/1 0:00:00紅杉中國從7年前投資火幣開始,陸續投資了比特大陸、Conflux、貝寶金融、分布科技等14個以上的區塊鏈或者加密貨幣項目。“如果能拿到紅杉這樣的頂級投資,那么創業就成功了一半.
1900/1/1 0:00:00本周,備受市場矚目的以太坊主網倫敦升級將于12965000區塊正式激活。 此前以太坊三個測試網Ropsten、Goerli、Rinkeby已經全部成功激活倫敦升級,而測試網Kovan則會在以太坊.
1900/1/1 0:00:00加密貨幣ETF是一個吊足了人們胃口的老話題。每隔一段時間,人們總會聽到:某某公司又向SEC提交了加密貨幣ETF的申請.
1900/1/1 0:00:00比特幣剛誕生的時候,機構并不太感冒。但從2020年開始,機構的興趣越來越濃。背后一大主因是疫情之下,以美國為代表的央行實行過于寬松的印鈔政策,引發市場劇烈震動.
1900/1/1 0:00:00金色財經區塊鏈8月6日訊??現階段,去中心化金融?(DeFi)行業發展速度很快,自今年年初以來,鎖定在DeFi中的加密資產規模已增長了大約四倍.
1900/1/1 0:00:00