比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads

HTT:如何實現廣義的元交易(Meta Transaction)_ION

Author:

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

譯文出自:登鏈翻譯計劃

譯者:翻譯小組

校對:Tiny熊

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

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

MetaXKCD

什么是元交易?

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

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

概述

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

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

PeckShield征求建議以確定如何發出黑客攻擊警報,大多數用戶支持其標記受影響的協議和交易:8月10日消息,PeckShield稱其檢測到黑客攻擊時發布警報可能會引起人們對黑客的關注并暴露受影響的協議,因此可能會引起爭議,發布投票向社區征求建議,以確定檢測到黑客攻擊時應如何發出警報。當前投票已結束,66.8%的用戶選擇“標記受影響的協議+tx”、18.4%的用戶選擇“Alert TG seal 911 bot”、9.9%的用戶選擇“公開黑客+tx”、4.9%的用戶選擇“僅Xeet匿名黑客”。[2023/8/10 16:18:10]

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

結構化交易哈希

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

這是交易schema的哈希值:

EIP712_TRANSACTION_SCHEMA_HASH=keccak256(abi

Terra 2.0 社區已啟動就有關如何分配 0.5% 應急資金提案的投票:6月9日消息,Terra 2.0 社區已啟動就有關如何分配 0.5% 應急資金提案的投票,該提案建議將這部分資金分配給在 Terra Classic 上推出過符合市場需求的產品,包括產生了一定量的 TVL 和沒有產生 TVL 的項目以及尚未推出過符合市場需求產品的項目,并提議向以上三類項目分別分配 250 萬枚 LUNA、100 萬枚 LUNA 和 150 萬枚 LUNA。此外,該提案建議組件一個由部分 Terra 社區的長期成員組成的理事會監督分配工作。[2022/6/9 4:13:09]

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

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

設置正確的msg

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

動態 | 電腦安全軟件公司:揭示朝鮮黑客如何利用惡意軟件入侵加密貨幣交易:據BeinCrypto消息,電腦安全軟件公司Objective-See發布報告,揭示了加密貨幣交易被朝鮮一個新的惡意軟件入侵的細節。這種新的惡意軟件由朝鮮黑客組織Lazarus APT集團操作,以一種叫做“JTM交易軟件”的客戶端交易軟件為幌子,主要通過電子郵件分發給毫無戒心的受害者,在被安裝后竊取私鑰和訪問詳細信息。[2019/10/16]

你在合約中使用msg

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

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

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

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

聲音 | Robert Rosenblum:如果監管者將加密貨幣視為證券,應明確公眾如何購以及交易市場建立場地等問題:據CoinDesk消息,在Token Summit 2019會議上,Wilson SAonsini Goodrich&Rosati公司的律師Robert Rosenblum表示,他的公司通常將大多數加密貨幣視為證券。當時他的同事總是感覺存在差距,“那么,現在怎么辦?”換句話說,監管者需要解釋,如果代幣是證券,公眾應該如何購買,交易市場可以在哪里建立。Cosmos創始人Jae Kwon也提出類似觀點。他指出,沒有人知道如何以美國監管機構目前認可的方式經營去中心化交易所。但是Robert Rosenblum似乎覺得這是可以解決的,“只有當我們擁有一個運行良好的市場,我們才會有更多的經驗和更好的框架。”不過,這需要多長時間?這成了根本問題。緩慢折磨著快速發展的行業。歐洲合規公司MME的律師Andreas Glarner表示,來自歐洲的觀點是整個行業都很困惑:“大約五年后,答案是還不清楚。否則,我們不會坐在這里(討論)。那是外面的景色。[2019/5/18]

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

聲音 | 段新星:看到有價值的場景時思考如何用區塊鏈去更好地打造才是正確的:Bytom創始人段新星在“區塊鏈平昌論壇2019(Blockchain Pyeongchang Forum, BPF2019)”的圓桌論壇上表示,在投機和炒作層面區塊鏈處于熊市,但是在區塊鏈應用層面仍然在向前發展。同時,他指出,不能像拿著錘子砸釘子一樣,把區塊鏈強加于所有項目,而應該在看到有價值、有意義的場景時,思考如何用區塊鏈去更好地打造才是正確的。只有做到這點,離區塊鏈下一次爆發也就不遠了。[2019/1/28]

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

高級簽名方案

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

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

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:HTTTPSIONTRAhtt幣騙局tps幣行情Italian Football FederationDecentralized Pirates

比特幣交易
NFT:萬字深度解析 NFT 借貸市場_NFTfi

DeFi和NFT的碰撞之旅短短幾年內,DeFi在加密市場已經取得了巨大成功,構建了許多應用程序,也同時投入了廣泛應用.

1900/1/1 0:00:00
COIN:關于WBF上線RBT的公告_HTT價格

尊敬的用戶: WBF將在開放區掘金板塊上線RBT/USDT交易對,具體上線時間如下:暫不開放充提.

1900/1/1 0:00:00
GER:PAWS持倉賽, EVM, EVM交易賽, NAFTY, KIKA, EMPIRE, 幣虎6月交易PK賽第一期獎勵發放公告_COI

尊敬的用戶: 幣虎交易平臺的關于“PAWS持倉賽,EVM,EVM交易賽,NAFTY,KIKA,EMPIRE,幣虎6月交易PK賽第一期”的活動已結束,活動獎勵已發放至用戶賬戶.

1900/1/1 0:00:00
NFT:NFT大百科:那些支持NFT的加密錢包_WALLET

眾所周知,NFT在2021年迎來了大爆發,隨著Beeple加密藝術作品上拍佳士得、NBATopShot廣泛出圈,越來越多人開始關注NFT,也有越來越多人開始購買自己的第一件NFT收藏品.

1900/1/1 0:00:00
區塊鏈:助力東數西算 IPFS勢在必行、SFIL亮相Web3.0峰會_hfil幣最新消息

2021年7月15日—17日,Web3.0中國峰會暨IPFS區塊鏈分布式存儲行業生態大會即將在四川成都隆重舉行.

1900/1/1 0:00:00
ALP:ALPEX 每周周報(7月第一周)_ALPHA幣

ALPEX每周新聞更新,數字資產交易領導者28/6/2021-02/7/2021發布:2021年7月9日ALPEX作為全球數字資產交易的領航者,以“安全、穩定、可靠”著稱.

1900/1/1 0:00:00
ads