如何实现广义的元交易(Meta Transaction)

Posted FeelTouch Labs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现广义的元交易(Meta Transaction)相关的知识,希望对你有一定的参考价值。

在合约内启用元交易是一个强大的补充。要求用户持有ETH来支付Gas一直以来都是而且仍然是新用户进入的最大挑战之一。如果只是简单的点击,谁知道现在会有多少人在使用以太坊?

但有时,解决方案可以在你的合约中加入元交易能力。实现起来可能比你想象的要容易。

什么是元交易?

元交易是一个普通的以太坊交易,它包含另一个交易,即实际交易。实际交易由用户签署,然后发送给运营商(或类似的操作者),用户不需要Gas和区块链交互。而是由运营商支付费用签署交易,提交给区块链。

合约确保在实际交易上有一个有效的签名,然后执行它。

概述

如果我们想在合约中支持广义的元交易,可以通过几个简单的步骤完成。从高层次上讲,有两个步骤:

第1步:验证元交易的签名。按照EIP-712标准和ecrecover创建一个哈希值来完成:

bool isValidSignature = ecrecover(hash(transaction), v, r, s) == transaction.signerAddress

第2步:一旦得到验证,我们就可以提取实际的交易数据。通过对当前的合约地址使用dele

以上是关于如何实现广义的元交易(Meta Transaction)的主要内容,如果未能解决你的问题,请参考以下文章

Facebook和Ins即将推出NFT项目?Meta的元宇宙计划实现ing

如何简单易懂的理解lua的元表metatable

matlab中的元胞数组如何实现批量的赋值呢?

ledisDB底层实现——本质上就是用leveldb这样的底层存储,和ssdb一样,meta里存的是hashlist等的元数据

如何使用 AppStoreReceiptUrl 在 Xamarin.iOS 中验证 StoreKit 交易

Vue之利用vueRouter的元信息实现页面的缓存