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是一種更高級、更安全的交易簽名方法。使用該標準不僅可以簽署交易并且可以驗證簽名,而且可以將數據與簽名一起傳遞到智能合約中,并且可以根據該數據驗證簽名以了解簽名者是否是實際發送該簽名的人要在交易中調用的數據。
深圳區塊鏈周 | 觀點:新的風口短視頻也是引流的一個新的方向:6月19日,在金色財經舉辦的深圳區塊鏈周活動中,由鏈視、金色財經、四塊科技主辦,鏈上聊齋承辦的區塊鏈創新之路,流量獲客新方式大會圓滿落幕。會上鏈視運營總裁馮宇豪就流量獲取新方式分享了自己的觀點,區塊鏈創作者聯盟發起人劉利民就當下如何吸引新用戶展開了自己的研究,鏈上聊齋制片人鄧旭就個人ip打造闡述了自己的觀點,并探索出一條品牌流量的新模式,隨后bitz深圳負責人昱林和雪豹資本就推廣項目分享了自己的經驗。通過本次大會讓大家也了解到區塊鏈流量獲取的另一種方式,傳統的區塊鏈拉群引流慢慢盡顯疲態,新的風口短視頻也是引流的一個新的方向。讓我們區塊鏈的春天通過短視頻的方式更早的到來。
深圳·區塊鏈周系列活動由金色財經發起,活動共持續5天,區塊鏈周系列活動旨在為行業上下游提供交流平臺,通過聯合社會各界力量,塑造行業品牌,代表行業發聲。借助深圳這座開放的城市,以開放的態度,聆聽行業的脈搏,助力行業的發展。[2020/6/19]
EIP-712提出了數據的標準結構和從結構化消息生成散列的定義過程。然后使用此散列生成簽名。通過這種方式,為發送交易生成的簽名與為驗證身份或任何其他目的生成的簽名之間就有了明顯的區別。EIP-712草案將簽名方案背后的動機表述為:
動態 | EOS42 提出一個可擴展的完整歷史節點解決方案:據 IMEOS 報道,EOS 的DAPP查詢數據,主要是通過訪問完整歷史節點來進行的,但是隨著EOS網絡的快速增長,歷史插件變得越來越難以維護。
與歷史插件相關的問題,可以預測未來會出現更多。如果現在不采取行動,最終會對網絡造成嚴重影響。為了改善當前基礎設施的脆弱性,提高網絡的壽命,EOS42正與其他社區成員合作,為完整的歷史節點提供一個可擴展的解決方案。詳情見原文鏈接。[2018/11/28]
提高鏈上使用的鏈下消息簽名的可用性。我們看到越來越多的人采用鏈下消息簽名,因為它節省了gas,減少了區塊鏈上的交易數量。
EIP-712是類型化結構化數據的哈希和簽名的標準,而不僅僅是字節字符串。它包括一個
編碼函數正確性的理論框架,
聲音 | 區塊鏈之父:比特幣是區塊鏈的一個應用 區塊鏈仍需要進一步發展:據鳳凰網報道,區塊鏈之父W.Scott Stornetta表示,比特幣創造了一個新的貨幣體系,這是一個了不起的成就,比特幣是區塊鏈的一個應用。但區塊鏈還有很多其他的應用,除了獲得最多關注的比特幣,區塊鏈仍需要進一步發展,未來的社會將會極大地受益于當今區塊鏈技術的發展。[2018/8/26]
與solid結構相似并兼容的結構化數據規范,
安全哈希算法用于這些結構的實例,
在可簽名消息集中安全包含這些實例,
一個可擴展的域分離機制,
新的RPC調用eth_signTypedData,
EVM中哈希算法的優化實現。
EIP-712的實現可以在Uniswap V2的Periphery 合約中看到,它通過許可移除流動性,最終調用Uniswap V2 Core中的方法來完成這一操作。
香港保險業聯會擬籌建一個利用區塊鏈查證投保單真偽的電子平臺:據路透社香港報摘消息,香港兩年前曾發生冒牌保險中介人偽造汽車保單,引致多達700名車主中招的騙案。為杜絕假保單事件重演,香港保險業聯會擬籌建一個利用區塊鏈(Blockchain)技術的電子平臺,讓車主可自行查證所投保單的真偽。保聯現正就此諮詢會員,若業界反應正面,冀爭取最快于今年第三或第四季推行。[2018/4/11]
前端的簽名被傳遞給Periphery 中的方法,簽名被用來代表Core中使用該方法的用戶批準Router合約。
我們的示例將使用EIP-721提案用數據(地址、storedData的值和截止日期)簽署交易,這些數據用于更改合約中變量的值。
如果簽名和散列給出了簽署人的地址,并且沒有超過截止日期,則更改storedData的值。
海朋資本趙劍海:任何一個新的事物開始的時候,都伴隨泡沫和投機:25日,網易房產“壹見”分享會上,海朋資本趙劍海分享表示,“區塊鏈”有可能是沉靜與毀滅,因為它有泡沫存在,也有實用價值,區塊鏈改變自己生活的時候,你發現它還早,如果不去炒幣來說,它跟你生活是無關的,但區塊鏈擁有不可復制性,能真正實現“去中心化”、無中介,開發無國界更自由、交易效率更高這些優點;任何一個新的事物開始的時候,都伴隨泡沫和投機,在當下的窗口,區塊鏈這兩個趨勢都有。[2018/3/25]
這是一個無用的例子,但理解了它將確保您可以在其他地方使用該標準。正確使用 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以查看所反映的變化。
Tags:區塊鏈AINMAINDOM區塊鏈用大白話解釋truechainMainframeKingdomswap (New)
隨著個人要求更快的支付,為此包括美聯儲在內的央行以及非銀行實體尋求在促進支付方面發揮更大作用,支付系統正在發生深刻變化.
1900/1/1 0:00:00作為 DeFi 領域的頭部去中心化交易所,Uniswap一騎絕塵,穩定占據Dex(去中心化交易所)市場TOP1的席位.
1900/1/1 0:00:00美國新基礎設施法案中的加密條款,要求交易所、其他加密應用適應新的信息報告要求,有可能收繳加密貨幣稅收約280億美元。而此次爭議的焦點主要圍繞法案中“經紀人(broker)”一詞的定義.
1900/1/1 0:00:00頭條 ▌2021亞洲數字藝術展:所有支付均使用數字人民幣近日召開的2021亞洲數字藝術展多個作品展示出數字藝術的力量,除了讓市民對數字藝術有最直觀的體驗,了解當前數字藝術的發展前沿.
1900/1/1 0:00:001.金色觀察 | 全球監管下 交易所去高杠桿化加速合約市場充斥著一夜暴富的神話,但是,99.5%的散戶投資者都會爆倉出局。這是一個風險極高的游戲,加密貨幣成為危險的賭場,交易所則是背后的推手.
1900/1/1 0:00:00忽然之間,NFT(非同質化權益證明)火了起來。8月2日,北京商報記者發現,騰訊上線了一款NFT(非同質化權益證明)交易App"幻核",首期限量發售300件"《十三邀.
1900/1/1 0:00:00