以太坊加油站网络(GSN)
以太坊加油站网络 (GSN) 将支付 gas 的过程从最终用户中抽象出来,从而最大限度地减少了 dapp 的用户体验摩擦。借助 GSN,无 gas 客户端可以与以太坊智能合约交互,而无需用户支付 ETH 来支付交易费。GSN 是一个去中心化系统,可在不牺牲安全性的情况下提高 dapp 的可用性。
GSN 的使用案例示例:
- 隐私:无需 ETH 即可提取发送到隐身地址的代币
- 使用支持的 ERC-20 代币支付 gas 费用
permit
:允许用户使用支持 功能的 ERC-20 代币支付 gas 费用 - 链下支付 gas 费用:允许用户通过 L2 rollup 或信用卡间接支付 gas 费用
- 入职:允许 dapps 补贴新用户的入职流程
问题
如果没有 GSN,任何发送以太坊交易的人都需要有 ETH 来支付 gas 费。这迫使新用户在开始使用任何 dapp 之前必须通过 KYC 并购买 ETH。对于没有加密经验且不熟悉需要在钱包中保留 ETH 来支付 gas 费的用户来说,这可能是一个重大障碍。
对于现有用户来说,这也是一种用户体验上的痛苦,因为他们需要不断补充他们的 ETH 余额来支付 gas 费,即使他们的钱包里有足够的 ERC-20 代币来支付他们所需的交易。
建筑学
客户端:签署并发送元交易到中继服务器
元交易是一个简单想法的花哨名称:中继服务器可以发送用户的交易并自行支付 gas 费用。用户无需签署以太坊交易(这需要 ETH 支付 gas),而是签署一条包含他们想要执行的交易信息的消息,并将其发送到中继服务器。
中继服务器:提交交易并支付以太坊协议 gas 费用
在收到来自客户端的中继交易请求后,中继服务器将验证此交易,以确保它偿还涵盖提交费用的 ETH 数量以及一些额外费用,以使中继者获利。
如果一切正常,中继器将签署一份原生以太坊交易,将其提交给内存池,并将签署的交易返回给客户端进行验证。如果出现任何问题,客户端可以选择不同的中继服务器,并尝试通过新的中继服务器发送交易。
这创造了一种“我为人人,人人为我”的效果,即关闭任何 dapp 的前端与关闭整个网络一样困难。参与的 dapp 越多,可用性保证就越强大。
付款人:同意退还中继服务器的 gas 费
在 GSN 中,所有 gas 退款逻辑都在 Paymaster 合约中实现。Paymaster 在 RelayHub 中维护 ETH 余额,并可以实现任何业务逻辑来决定是否接受或拒绝元交易。例如,仅接受白名单用户的交易,或接受通过验证码的用户入职所需的合约方法,或仅接受包含以代币形式向 Paymaster 偿还的交易等。
转发器:验证发送者签名和随机数
元交易感知接收方合约仅依赖小型可信转发合约来确保其安全性。此合约验证原始发送方的签名和随机数。
接收者合约:查看原始发送者并执行原始交易
接收方合约的任何公共方法都可以通过 GSN 执行。
为了支持元交易,接收者合约从一个简单的基类继承并替换 msg.sender
为 _msgSender()
。它返回签署元交易请求的原始发送者。
仍然可以对该合约进行本机交易调用。 如果直接调用合约,该_msgSender()
方法将直接返回 。msg.sender
RelayHub:以无需信任的方式协调流程
RelayHub 连接运行客户端的用户、中继服务器和付款人,这样参与者就不需要相互了解或信任。
Dapp 开发人员无需了解或信任 RelayHub 的内部工作原理即可与 GSN 集成。接收方合约不会暴露于 RelayHub 中的潜在安全问题。
在底层,RelayHub 帮助客户发现最佳的第三方中继服务器,防止第三方中继服务器审查交易,并确保 Paymasters 向中继服务器偿还 gas 费和交易费。
评价
目前还没有评价