以太坊交易所 以太坊交易所
Ctrl+D 以太坊交易所
ads
首頁 > 火星幣 > Info

如何實現廣義的元交易(Meta Transaction)_TPS:區塊鏈害了多少人

Author:

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

譯文出自:登鏈翻譯計劃

譯者:翻譯小組

校對:Tiny熊

在合約內啟用元交易是一個強大的補充。要求用戶持有ETH來支付Gas一直以來都是而且仍然是新用戶進入的最大挑戰之一。如果只是簡單的點擊,誰知道現在會有多少人在使用以太坊?

但有時,解決方案可以在你的合約中加入元交易能力。實現起來可能比你想象的要容易。

MetaXKCD

什么是元交易?

元交易是一個普通的以太坊交易,它包含另一個交易,即實際交易。實際交易由用戶簽署,然后發送給運營商,用戶不需要Gas和區塊鏈交互。而是由運營商支付費用簽署交易,提交給區塊鏈。

合約確保在實際交易上有一個有效的簽名,然后執行它。

概述

如果我們想在合約中支持廣義的元交易,可以通過幾個簡單的步驟完成。從高層次上講,有兩個步驟:

第1步:驗證元交易的簽名。按照EIP-712標準和ecrecover創建一個哈希值來完成:

杜均:推動NFT走向主流的關鍵在于如何解決其資產屬性問題:5月18日晚,火幣聯合創始人杜均做客由新浪財經和微博直播聯合主辦的《超話1?X》連麥專場線上直播,與美國投研機構首席增長官另維、硅谷獨立投資人王川和火星財經創始人王峰共同解讀“海外大火的NFT投資機會”。

杜均在直播中表示,現實世界對于NFT的市場需求是切實存在、可供挖掘的,NFT面臨的將會是一片廣闊的藍海市場,而推動NFT走向主流的關鍵在于如何解決其資產屬性問題。

杜均以游戲領域為例,指出“道具所有權的歸屬、道具濫發、游戲生命周期短、利益分配不均等游戲產業的問題存在許久,而大部分的游戲裝備、角色都是獨一無二且能自由流通的,非常適合采用NFT進行表征。”杜均表示,隨著鏈上可擴展性的提升和加密游戲的發展,NFT極有可能融入到未來游戲的經濟模型中,形成開放透明信任的游戲生態。

最后杜均提醒到,當前NFT市場上的流動性多數的確來源于投機效應,項目的真實價值是難以量化的,用戶需謹慎投資。[2021/5/18 22:16:28]

boolisValidSignature=ecrecover(hash(transaction),v,r,s)==transaction

直播 |“后浪”仙女力場-大丹如何乘風破浪:金色財經 · 直播主辦的《 幣圈 “后浪” 仙女直播周》第7期20:00 力場|大丹將在直播間聊聊“幣圈‘后浪’仙女如何乘風破浪”,感興趣的朋友掃碼移步收聽![2020/7/6]

結構化交易哈希

我們還需要在所有這些數據上計算一個哈希值。這將用于簽名schema和防止同一交易的重復執行。關于這方面的細節,請看最后的簽名解釋。

這是交易schema的哈希值:

EIP712_TRANSACTION_SCHEMA_HASH=keccak256(abi

通過hash所有相關的值,我們可以確保只有原用戶簽名的交易才會成功執行。例如,即使運營商只是改變了expirationTimeSeconds中的1秒,它也不能成功執行。

這只是哈希值的第一部分,要了解包括安全簽名要求在內的全部細節,請閱讀下面關于簽名的部分。

設置正確的msg

function_getCurrentContextAddress()privateviewreturns(address){returncurrentContextAddress==address(0)?msg

大咖零距離 | 如何通過消息面獲取市場暴利:2月19日16:00,金色盤面邀請數字貨幣正規軍TLAB Terry做客金色財經《大咖零距離》直播間,將分享《如何通過消息面獲取市場暴利》,敬請關注,欲進群觀看直播掃描海報二維碼報名即可![2020/2/19]

你在合約中使用msg

將額外的信息放入我們的哈希值中,因此,一個已簽署的交易只能準確地用于該合約與給定的鏈Id。所有的細節,請查看EIP或我之前關于ERC20-Permit的文章。

好了,現在我們有了完整的交易哈希值和用戶的簽名。我們可以通過一個輔助工具提取byte32值來獲得三個值r、s、v,這三個值是簽名中的橢圓曲線簽名值。uint8的v值只需要一個簡單的轉換。

使用ecrecover與給定的簽名和交易哈希,可計算出一個簽名者地址。如果這個地址與transaction

function_readBytes32(bytesmemoryb,uint256index)privatepurereturns(bytes32result){require(b

動態 | 社科院法學所刊文《對“去中心化”的區塊鏈如何監管》:中國社科院法學所趙磊在《經濟參考報》發表題為《對“去中心化”的區塊鏈如何監管》的文章。文章指出,對區塊鏈技術的監管,應該分為兩個層面:一是結合區塊鏈技術的具體應用場景,分行業進行監管;另一是針對區塊鏈,制定專門的技術標準,以實現區塊鏈技術的規范、統一。而判斷某種商業活動或者社會管理活動是否可以應用區塊鏈,至少應該從以下兩方面進行衡量:一方面是區塊鏈技術只能在虛擬空間中應用;另一方面是區塊鏈技術無論在何種場景中應用,必須符合其去中心化、共識機制與分布式記賬等技術特征。[2019/1/10]

這就是常規的簽名方案。如果你需要用戶簽署他自己的交易,它就能完美地工作。

但如果你想讓智能合約創建有效的簽名呢?

高級簽名方案

一個更高級的使用場景是讓智能合約簽署元交易,但想象一下,用戶把他的資金放在一個多簽名的智能合約里面。這對于某些錢包來說已經很常見了。這個用戶不能用EIP-712方案簽署交易來創建一個有效的v、r、s簽名。

這就是EIP-1271的作用,它允許智能合約來驗證簽名。標準本身沒有說明合約如何做到這一點。唯一的定義是函數簽名,其定義是:

芬蘭政府因不知如何存放沒收的比特幣犯難:芬蘭政府正為如何存放沒收來的2000余個比特幣而犯難。根據該國政府周二發布的指導方針,執法機構和人員不得持有沒收的加密貨幣,執法人員不得將沒收的加密貨幣存儲在交易所里,必須要保持它們處于離線狀態且不能在互聯網上被訪問。此外,該文件還指出,當局不能將比特幣等加密貨幣視為貨幣,也不能作為支付手段。[2018/2/21]

functionisValidSignature(bytes32hash,bytesmemorysignature)publicviewreturns(bytes4);

其中有效簽名的返回值為0x1626ba7e。如何實現簽名邏輯則取決于智能合約開發者。

那么,我們怎樣才能驗證這樣的簽名呢?

你可以在下邊看到一個實現的例子。使用staticcall,我們可以確保在調用過程中沒有進一步的狀態修改發生。如果結果成功并且有一個有效的returnData長度,我們可以檢查返回值是否符合0x1626ba7e。

function_staticCallEIP1271Wallet(addressverifyingContractAddress,bytesmemorydata,bytesmemorysignature)privateviewreturns(bool){bytesmemorycallData=abi

你可能想允許更多的簽名方法,比如預簽名或擁有可以代表用戶簽名的運營商。請看0x這里中的現有類型,以獲得一些靈感。

自己實現

到目前為止,我們已經看到了所有實現的關鍵部分,這應該讓你對如何實現它有一個好的啟發。我還建議你看一下:

0x元交易的實現

OpenzeppelinEIP-712支持

實現簽名部分的npmeip-712庫

OpenzeppelinEIP-712庫仍然是一個草案,但對鏈ID可能改變的分叉情況有額外支持。也可以看看0x代碼,本博文中的很多實現都來自于此。

本翻譯由CellNetwork贊助支持。

來源:https://soliditydeveloper.com/meta-transactions

參考資料

登鏈翻譯計劃:https://github.com/lbc-team/Pioneer

翻譯小組:https://learnblockchain.cn/people/412

Tiny熊:https://learnblockchain.cn/people/15

EIP-712:https://eips.ethereum.org/EIPS/eip-712

EIP-712:https://eips.ethereum.org/EIPS/eip-712

ERC20-Permit:https://learnblockchain.cn/article/1790

EIP-1271:https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md

這是非常關鍵的,見之前的0xbug:https://samczsun.com/the-0x-vulnerability-explained/

這里:https://0x.org/docs/guides/v3-specification#signature-types

0x元交易的實現:https://github.com/0xProject/0x-monorepo/blob/development/contracts/exchange/contracts/hide/MixinTransactions.sol

OpenzeppelinEIP-712支持:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/drafts/EIP712.sol

eip-712庫:https://github.com/Mrtenz/eip-712

CellNetwork:https://www.cellnetwork.io/?utm_souce=learnblockchain

免責聲明:作為區塊鏈信息平臺,本站所發布文章僅代表作者個人觀點,與鏈聞ChainNews立場無關。文章內的信息、意見等均僅供參考,并非作為或被視為實際投資建議。

本文來源于非小號媒體平臺:

登鏈社區

現已在非小號資訊平臺發布105篇作品,

非小號開放平臺歡迎幣圈作者入駐

入駐指南:

/apply_guide/

本文網址:

/news/10155700.html

免責聲明:

1.資訊內容不構成投資建議,投資者應獨立決策并自行承擔風險

2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表非小號的觀點或立場

上一篇:

巨鯨的資金涌向哪里,哪里就是熱點!

Tags:TPSHTTION區塊鏈https://etherscan.iohtt幣價格今日行情ADAB Solutions區塊鏈害了多少人

火星幣
DOGD算力聚合器掀起全球NFT熱潮_NFT:NFT SolPad

平臺代幣:DogdNFT 發行總量:210億枚 黑洞:50% 流動性:1% LP獎勵池:49% 什么是DogdNFT? DogdNFT是DOGD去中心化NFT算力聚合器平臺的平臺代幣.

1900/1/1 0:00:00
烤仔說·Axie Infinity | 鏈上“寶可夢”教程(一)_amber:MIX

你知道有人通過玩游戲發家致富嗎?不,烤仔說的不是那些職業游戲選手。本仔說的是在疫情期間菲律賓低收入者通過區塊鏈游戲《AxieInfinity》解困.

1900/1/1 0:00:00
XT關于延遲上線Diamonds的公告_HTT:htt幣價格

尊敬的XT用戶: 應項目方通知,Diamonds將延遲上線,具體時間平臺將另行公告通知。給您帶來的不變,請您諒解!如有問題,請及時聯系在線客服.

1900/1/1 0:00:00
幣安智能鏈生態加速計劃公布,6家項目獲得首批資金支持_智能鏈:智能鏈幣ZNL

2020年10月14日–全球領先的區塊鏈生態系統幣安,今日正式公布幣安智能鏈生態加速計劃支持的首批項目名單.

1900/1/1 0:00:00
去年的這個時候,我們是怎么談論DeFi的?_DEFI:去中心化金融defi入門分析與理解

經過近一年周期的發展,DeFi逐漸進入沉穩發展狀態,其已經不止一次的被認為是挑戰傳統金融邏輯的勁敵,且一輪又一輪的創新還在不斷演進.

1900/1/1 0:00:00
WordProof創始人:區塊鏈可以幫助出版商提高受眾信任度_ETW:NET

可信網絡基金會主席、假新聞鑒別軟件WordProof創始人兼首席執行官SebastiaanvanderLans發文《區塊鏈可以幫助出版商提高受眾信任度》.

1900/1/1 0:00:00
ads