[Ethereum] Gas Station Network (GSN) eip-1613 与 Gas Relay Network (GRN) eip-1077
在 Ethereum dapp 中,任何涉及状态改动的交易都需要消耗 Gas,这限制了很多没有钱包或者 ETH 的用户对 dapp 的采用。
理念
让非以太用户能够访问智能合约 (如dapps),允许合约接受“接听来电”,即为来电付费。
让合约在可公开访问的渠道上“监听”(例如web URL)。鼓励节点运行 “加油站” 来促进这一点。不需要网络更改,只需最小的契约更改。
概述
目前,与dapps通信需要支付 ETH 的 Gas 费用,这限制了 Ethereum 用户对 dapp 的使用。
因此,合约所有者可能希望支付 Gas 以增加用户获取,或者让他们的用户用法定货币支付 Gas。
或者,第三方可能希望补贴某些合约的 Gas 成本。
类似 EIP-1077 中描述的解决方案可以允许来自没有 ETH 的地址的事务(为合约调用转发 Gas)。
加油站网络是遵循 EIP-1077 的,它通过鼓励节点运行加油站来解决这个问题,在加油站,没有 Gas 的交易可以“增加燃料”。
该网络由一个被所有参与 dapp 的合约所信任的单一公共合约和一个分散的中继节点(加油站)网络组成,这些节点被激励去监听 web 或 whisper 等非以太接口,为交易付费,并从该合约中获得补偿。
任何人都可以验证受信任的契约,否则系统就是不可信的。
只要有至少一家诚实的加油站,加油站就不能审查交易。
破坏这一制度的企图可以被证明是连锁的,违反者将受到惩罚。
EIP-1613 动机
1. 提高用户对合约的采用
消除用户获取 ETH 的麻烦。交易仍由 ETH 支付,但费用可由 dapp 承担或由用户通过其他方式支付。
消除与区块链直接交互的需要,同时保持分散和审查阻力。契约可以在多个公共通道上“侦听”,用户可以通过通用协议与契约进行交互,即使在严格的环境中,通常也允许使用通用协议。
2. Ethereum 节点在不需要采矿设备的情况下获得收入来源。整个网络都受益于拥有更多的节点。
3. 不需要修改协议。加油站网络通过智能协议自组织,dapps 通过实现接口与网络交互。
具体
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1613.md#specification
原理
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1613.md#rationale
向后兼容性
加油站网络是作为智能契约和外部实体实现的,不需要任何网络更改。
Dapp 添加加油站将保持向后兼容已有的应用和用户。添加的方法应用于现有的方法之上,因此不需要对现有的应用程序进行更改。
实现 GSN 兼容的合约
https://docs.openzeppelin.com/contracts/2.x/gsn
Refer:Gas Station Network