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是一種更高級、更安全的交易簽名方法。使用該標準不僅可以簽署交易并且可以驗證簽名,而且可以將數據與簽名一起傳遞到智能合約中,并且可以根據該數據驗證簽名以了解簽名者是否是實際發送該簽名的人要在交易中調用的數據。
Vitalik Buterin:支持薩爾瓦多總統可能是加密社區犯下錯誤行為的一個例子:金色財經報道,以太坊聯合創始人Vitalik Buterin在最新媒體采訪時表示,支持薩爾瓦多總統Nayib Bukele可能是加密社區犯下錯誤行為的一個例子,薩爾瓦多選擇了“自上而下”采用比特幣的方式,比特幣社區“自然而然地喜歡所有支持比特幣的、有錢有勢的人”,這是愚蠢的,相比之下以太坊社區在選擇推廣和合作對象方面做得更好。(cryptoslate)[2022/11/21 22:11:31]
EIP-712提出了數據的標準結構和從結構化消息生成散列的定義過程。然后使用此散列生成簽名。通過這種方式,為發送交易生成的簽名與為驗證身份或任何其他目的生成的簽名之間就有了明顯的區別。EIP-712草案將簽名方案背后的動機表述為:
提高鏈上使用的鏈下消息簽名的可用性。我們看到越來越多的人采用鏈下消息簽名,因為它節省了gas,減少了區塊鏈上的交易數量。
美國眾議院發布議案,計劃設立一個區塊鏈勞動力職業培訓信托基金:金色財經報道,美國科技行業倡導者周三在勞工和勞動力發展聯合委員會聽證會上作證,以表明他們支持旨在提升區塊鏈技術教育和培訓計劃的立法 (H 4922)。
眾議院議案由 Pembroke 的眾議員 Josh Cutler 和 Melrose 的 Kate Lipper-Garabedian 提出,將設立一個區塊鏈勞動力職業培訓信托基金。該基金將為雇主、勞動力發展實體、職業技術學校和高等教育機構提供資助,以開發和擴大區塊鏈培訓機會,并為尋求該行業職業的個人贊助獎學金和帶薪實習計劃。除了支持該領域的個人、教育機構和雇主外,眾議院法案還希望為地區就業委員會提供撥款,以制定支持區塊鏈的地區戰略。
根據該法案,區塊鏈勞動力職業培訓信托基金的資金將來自立法撥款和其他“公共和私人來源”。[2022/9/22 7:13:49]
EIP-712是類型化結構化數據的哈希和簽名的標準,而不僅僅是字節字符串。它包括一個
dForce楊民道:鏈上DeFi保險是一個左腳踩右腳的偽命題:12月27日消息, dForce創始人楊民道發推稱,一直覺得鏈上DeFi保險是一個左腳踩右腳的偽命題:
1. DeFi安全事故非獨立概率事件,傳統保險精算邏輯不成立,一黑到底,全部掏空協議。
2. DeFi保險協議本身市值可能都沒有頭部DeFi協議1/10,榨干也賠不起。類似AAA企業發債,BBB企業擔保?
3. DeFi協議自身代幣就是last resort,出問題,增發解決。[2021/12/27 8:06:24]
編碼函數正確性的理論框架,
與solid結構相似并兼容的結構化數據規范,
安全哈希算法用于這些結構的實例,
在可簽名消息集中安全包含這些實例,
一個可擴展的域分離機制,
北京市天元律師事務所合伙人朱宣燁:Coinbase合規性成為了第一個在美股上市的原因:金色財經現場報道,4月28日,第62期金色沙龍在北京舉辦。在現場,北京市天元律師事務所合伙人朱宣燁以《從Coinbase在美合規上市,談我國數字資產領域的風險防范》為題進行分享。他表示Coinbase因為它的合規性,成為了第一個在美股上市的原因。首先一個點,Coinbase沒有一個固定的總部,絕大部分業務在線上。正是因為在線上,不是在各個國家,分布在很多個國家。意味著要遵守每一個國家的規范,不是說這部分業務在美國,就可以不去遵守別的國家的規范。任何一個國家的規范,任何一個國家的監管,都會有一個蝴蝶效應。在它的招股書里自己承認了,我們是要做全球的合規,并不是只做一個國家的合規。而且全球的監管也是在互相溝通,也是在互相影響。所以它們覺得我是一個全球、全局的考慮,任何一個區域內的法律規范,都會盡量去理解。
Coinbase積極應對不同司法轄區的監管。要遵守反洗錢、違法犯罪活動的報送,對于司法禁止的行為,有一些發現機制和報送機制。[2021/4/28 21:07:12]
新的RPC調用eth_signTypedData,
聲音 | EOS42社區負責人:某BP已錯過100多輪出塊 需要建立一個自動踢出機制:EOS42社區負責人Ryan Bethem發推稱:“到目前為止,排名前21的某個BP錯過了100多輪出塊。不過我更擔心的是這樣一種情況,即許多/所有出塊節點會在錯過出塊而沒有被自動踢出的情況下可能發生的故障。與沒有為最近的網絡擁塞做好準備一樣,EOS也沒有為這種情況做好準備。我們應該將這些事件視作經驗學習過程并立即進行更改。從長遠來看,應對這些漏洞對于建立和維護企業及用戶的信任是必要的。信任應被視為寶貴資產,保護它。我們需要建立一個自動踢出機制。”[2019/10/10]
EVM中哈希算法的優化實現。
EIP-712的實現可以在Uniswap V2的Periphery 合約中看到,它通過許可移除流動性,最終調用Uniswap V2 Core中的方法來完成這一操作。
前端的簽名被傳遞給Periphery 中的方法,簽名被用來代表Core中使用該方法的用戶批準Router合約。
我們的示例將使用EIP-721提案用數據(地址、storedData的值和截止日期)簽署交易,這些數據用于更改合約中變量的值。
如果簽名和散列給出了簽署人的地址,并且沒有超過截止日期,則更改storedData的值。
這是一個無用的例子,但理解了它將確保您可以在其他地方使用該標準。正確使用 EIP-712 是創建一個 ERC20 許可證,就像 Uniswap 團隊所做的那樣。
繼續克隆 truffle 的react box。
我們將根據需要簡單地調整和添加代碼,以使EIP-712正常工作。
數據是EIP-712中最關鍵的部分。這些要簽名的數據必須符合預定義的格式。它必須有一個EIP712Domain和要簽名的數據(在我們的示例中設置)。兩者的組合將被簽名并發送給智能合約進行驗證。
在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以查看所反映的變化。
DeFi 已經成了業內最熱議的話題之一,每月都有數十個新的 DeFi 項目啟動。DeFi 應用使得創建能夠自動執行的金融合約成為可能.
1900/1/1 0:00:00這篇由 3 部分組成的文章重點介紹互聯網歷史上的最新章程— Web 3 的原因、內容和方式。第 1 部分解釋了當今網絡的缺點以及 Web 3 如何改進;第 2 部分重點介紹 Web 3 的運作模.
1900/1/1 0:00:00頭條 ▌特斯拉Q2財報:現持有比特幣價值為13億美元7月27日消息,美國當地時間本周一,特斯拉發布了二季度財報,其中顯示該公司沒有新增購買和拋售數字資產,當前持有比特幣的價值為13億美元.
1900/1/1 0:00:00全球數據量持續增加,基于云計算的存儲需求巨大。據統計,到2025年全球數據量將增加至163ZB,年復合增長率達到30%.
1900/1/1 0:00:00本周技術周刊包含以太坊、Filecoin、SKALE、Avalanche、Poly Network、StarkEx、ZKSwap等7個網絡的技術類新聞.
1900/1/1 0:00:00元宇宙不是一個產品,而是互聯網的未來。元宇宙(Metaverse)這個詞正在成為「風口」。這是個 29 年前就存在的科幻概念,隨著最近幾年吸納了日臻成熟的 AI、AR/VR、區塊鏈等技術成果后,
1900/1/1 0:00:00