元交易和签名重放
有些时候,你希望你的 DApp 用户有一个无气的体验,或者也许在没有真正把东西放在链上的情况下进行交易。这些类型的交易被称为元交易,在这个层面上,我们将深入探讨如何设计元交易,以及如果不仔细设计,它们如何被利用。
对于那些使用过 OpenSea 的人来说,有没有注意到 OpenSea 如何让你的 NFT 免费上市?无论你想以什么价格出售你的 NFT,不知何故,它从来没有在最初的 NFT 批准交易之外收取气体?答案是,Meta 交易。
元交易也常用于无气体的交易体验,例如要求用户签署一个信息来认领一个 NFT,而不是支付气体来发送一个交易来认领一个 NFT。
还有其他用例,例如让用户用任何代币,甚至是法币来支付燃气费,而不需要转换为加密货币。Multisig 钱包也只要求最后一个签名者为正在从 multisig 钱包进行的交易支付汽油费,其他用户只是签署一些信息。
这难道不是非常酷吗?🎉
它是如何工作的?
元交易只是一个花哨的词,即由第三方(中继者)代表用户支付交易的气体。用户只需要签署包含他们想要执行的交易信息的消息(而不是发送交易),并将其交给中继者。然后,中继者负责使用这些数据创建有效的交易,并自己支付燃气费用。
中继者可以是,例如,你的 DApp 中的代码,让你的用户体验无气的交易,也可以是你用法币支付的第三方公司,在以太坊上执行交易,等等。
在这个层面上,我们将做两件事--学习元交易以及如何构建一个支持元交易的简单智能合约,同时学习我们构建的第一个合约中的一个安全漏洞以及如何修复它。一石二鸟 😎。