在 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

Link:https://www.cnblogs.com/farwish/p/12532659.html

[Ethereum] Gas Station Network (GSN) eip-1613 与 Gas Relay Network (GRN) eip-1077的更多相关文章

  1. [LeetCode] Gas Station 加油站问题

    There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...

  2. PAT 1072. Gas Station (30)

    A gas station has to be built at such a location that the minimum distance between the station and a ...

  3. Leetcode 134 Gas Station

    There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...

  4. 【leetcode】Gas Station

    Gas Station There are N gas stations along a circular route, where the amount of gas at station i is ...

  5. [LeetCode] Gas Station

    Recording my thought on the go might be fun when I check back later, so this kinda blog has no inten ...

  6. 20. Candy && Gas Station

    Candy There are N children standing in a line. Each child is assigned a rating value. You are giving ...

  7. LeetCode——Gas Station

    There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...

  8. Gas Station

    Description: There are N gas stations along a circular route, where the amount of gas at station i i ...

  9. Gas Station [LeetCode]

    There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...

  10. 【LeetCode OJ】Gas Station

    Problem link: http://oj.leetcode.com/problems/gas-station/ We can solve this problem by following al ...

随机推荐

  1. 【Leetcode】53. 最大子数组和

    题目(链接) 给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 子数组是数组中的一个连续部分. 示例 1: 输入:nums = [-2,1,-3, ...

  2. 记录--说一说css的font-size: 0

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 平常我们说的font-size:0:就是设置字体大小为0对吧,但是它的用处不仅仅如此哦,它还可以消除子行内元素间额外多余的空白! 问题描述 ...

  3. TP6框架--EasyAdmin学习笔记:实现数据库增删查改

    这是我写的学习EasyAdmin的第三章,这一章我给大家分享下如何进行数据库的增删查改 上一章链接:点击这里前往 上一章我们说到,我仿照官方案例,定义了一条路由goodsone和创建了对应数据库,我们 ...

  4. Redis(5)——亿级数据过滤和布隆过滤器

    一.布隆过滤器简介 上一次 我们学会了使用 HyperLogLog 来对大数据进行一个估算,它非常有价值,可以解决很多精确度不高的统计需求.但是如果我们想知道某一个值是不是已经在 HyperLogLo ...

  5. mybatis @Param参数 记录

    报错信息 org.apache.ibatis.binding.BindingException: Parameter 'XX' not found. Available parameters are ...

  6. java 控制台 输出进度条

    效果  代码 public static void main(String[] args) { int total = 100; for (int i = 0; i < total; i++) ...

  7. MySQL与Java JDBC数据类型对照

    MySQL数据类型 JAVA数据类型 JDBC TYPE BIGINT Long BIGINT TINYINT Byte TINYINT SMALLINT Short SMALLINT MEDIUMI ...

  8. redis安装启动脚本

    #!/bin/bash # sudo yum install -y gcc # sudo yum install -y ruby build-essential BASE=/usr/local ps ...

  9. KingbaseES V8R3数据库运维案例之---不完整的启动包(incomplete startup packet)复现

    案例说明: 在KingbaseES V8R3数据库的sys_log日志中,出现以下故障信息"不完整的启动包(incomplete startup packet)"日志信息.本案例复 ...

  10. SSE与AVX指令基础介绍与使用

    SSE与AVX指令基础介绍与使用 SSE/AVX指令属于Intrinsics函数,由编译器在编译时直接在调用处插入代码,避免了函数调用的额外开销.但又与inline函数不同,Intrinsics函数的 ...