通过加油站网络(GSN)创造更好的DApp发展和进入体验_币圈行情_鼎鸿网

通过加油站网络(GSN)创造更好的DApp发展和进入体验

Lucy 0

上一篇关于MetaTransactions如何改变DApp的支付生态的文章介绍,MetaTransactions解决了普通用户付不起气的窘境,因此被DApp拒绝。但是还有很多问题可以更好的解决。

最重要的一个问题就是中继的集中存在单点故障,SPoF)。这可能是继电器可以';t由于某种原因无法工作或关闭,或者信息由于审查而被故意拒绝上传,这是不公平的。

这次介绍的加油站网是MetaTransactions的高级版本,更加复杂但也解决了上述问题。GSN也不是一个新概念。2018年底,以色列公司TabooKey提出了EIP-1613加油站网络,该网络也使用Relayer代替用户支付燃气费用。

该协议与EIP-1077:约定呼叫的气体中继兼容,并提供开放管道(智能约定)来注册和管理中继节点。任何节点都可以加入加油站网络,以避免单点故障(SPoF)。还有经济激励机制,通过抵押、奖惩来约束恶意中继节点,鼓励中继者做好人。

以太坊知名开发工具OpenZeppelin也提供支持,与TabooKey一起提供了一整套开源工具TabooKey-gassless(改名为openeth-dev/gsn)。

,ContientRelayHub和中继接收器等待合同,使用DockerVerpackt肠道关于中继服务器以及网客户端

GSN中的角色

Relay

GSN网络中的节点由志愿者提供。想要成为接力者的志愿者必须提前在RelayHub注册并抵押乙醚。如果接力正确完成,他们将获得RelayHub的奖励。如遇恶意攻击,抵押将被没收。接力管理人员需要确保有足够的乙醚支付天然气,而不是DApp用户。如果没有足够的乙醚,它将变得不活跃。

,不会被客户端选中发送relayed和RelayRemoved事件供中继客户端监听获取中继列表

RelayServer

提供中继功能的服务器。

,为RelayClient提供API接口发送请求

RelayHub

智能合约,维护一个中继列表供客户端查询,虽然中继先付了气。

但继电器完成后,RelayHub会退还第一代继电器垫的费用,避免继电器的损失。所以RelayHub就是实际交气的角色。付气前,中继枢纽。将首先检查[收件人]的余额。确保DApp开发商已在RelayHub中存入足够的资金用于支付。瓦斯会在上弦前验证数据,正确的话会给接力者提供奖励,错误的话会没收抵押。不同的DApp可以共享同一个中继集线器。以太网主网上的中继集线器位于0xd216153c06e857CD72665e0af1d7d82172f494。RelayHub也可以自己部署。

但是,自部署的RelayHub不能共享现有的中继

RelayRecipient

。每个支持GSN的DApp都需要继承RelayRecipient。

,它提供了与RelayHub通信的接口。在部署DApp之前,您需要指定RelayHub的地址

RelayClient

。对于带有Web3的客户端包,您将查询RelayHub以获得可用中继的列表。

,然后通过http或whisper等协议发送请求。如果中继拒绝上传,客户端会换一个中继,几秒钟后再试

实现方法

假设我们要开发一个收养猫的DApp。

用户要通过专属前端(Web或App)发送领养请求,最后在DApp契约中记录领养的猫,并呈现在前端的UI中。

步骤

志愿者设置了一个中继服务器来运行中继节点。节点必须首先向RelayHub注册,并将以太客户端抵押给RelayHub,以查询可用的中继列表。因为RelayHub并不直接为query提供公共或查询方法。所以需要找出过去触发RelayAdded事件的地址,然后过滤掉同样触发RelayRemoved事件的地址,继续监听这两个事件,不断获取最新的RelayList。客户端选择具有足够资金的节点,并且是主动的。,使用本地私钥将数据和命令签名发送给Relay,RelayServer会提供API接口供客户端调用。如果继电器没有';t反应,选择另一个继电器几秒钟后估计显影剂的量';s在RelayHub中的储值足够了,如果足够了,先付汽油再发送交易。,将客户端签名的数据转发给RelayHubRelayHub会检查是否来自注册的中继,然后验证签名是否正确。如果验证正确,RelayHub将向Relay提供奖励。,并返还接力提前支付的燃气费;但如果验证失败,RelayHub会没收Relay之前抵押的乙醚作为惩罚。客户端通过Web3知道猫已经被成功收养,并显示在UI上。

以上步骤简化。完整流程请参考文件EIP-1613加油站网络

:

为什么GSN是更好的解决方案

:

避免攻击与审查

RelayServer想要发起攻击可能会付出很大的代价(没收抵押),所以Relay会倾向于忠实地中继客户端想要上传的数据,而不会恶意篡改。

如果中继服务器选择性地忽略请求,并且客户端等待几秒钟而没有收到响应,它可以替换中继服务器并尝试再次发送请求。

如果这种行为一再发生,

,有疑问的RelayServer就不用了,避免审查,改善集中中继可能不够公平的问题。

去中心化

我曾经听到一个DApp开发者提到他在以太坊上开发DApp时的困境。他知道许多第2层解决方案,包括元事务,可以有效地提高DApp的性能和UX。但他没有';我不想采用它,因为目前大多数第2层服务都是集中式的。

类似的价值冲突其实也存在于很多区块链信徒的心中,但是GSN的去中心化设计给每个开发者提供了一个无监管的网络。

,更符合区块链价值,并通过奖励继续经营。

避免开发者跑路或单点故障

分散式网络还可以避免临时单点故障(SPoF)或用户流失';开发商停止维护造成的权益。

由于Relay的运营方与DApp开发者没有直接的利益关系,即使DApp开发团队倒闭,Relay也会继续为其他DApp服务,只要至少有一个Relay继续运营。

,用户可以继续通过GSN使用DApp,但他们可能必须通过其他方式将值保存到RelayHub。

共享经济

你不';不需要复习就能成为接力者。

只要下载开源代码,就可以部署RelayServer开始赚钱,由很多中继组成的网络公平地提供给所有DApps。

开发商将运营费用存入RelayHub的账户。

志愿者提供服务器来操作中继节点。未来他们需要云计算资源,不能再只从AWS、GCP或Azure中选择,还要考虑GSN提供的共享网络。

标准介面

GSNissupportedbyanallianceofcompaniesandfoundationssuchasOpenZeppelin,TabooKey,Portis,Pillar,Groundhog,EthereumFoundation,MetaCartelanddisposablewallet.,开发标准的接口和框架,提供从前端到契约的完整的一揽子支持。

开发元事务DApp不再需要从头开始写一堆代码或者自己架设服务器。

并且任何支持GSN的DApp浏览器都可以使用GSN打开DApp,为用户提供了更多的灵活性和选择。

结论

GSN是一个完整的解决方案。

同时考虑到元交易可能存在的去中心化、避免审查等缺点,得到了多家公司、基金会以及以太坊众多支持者的支持。

但是使用GSN也不是没有缺点。因为RelayHub契约的使用,DApp必须继承RelayRecipient才能使用,这意味着CryptoKitties这样熟悉的DApp可以';不要立即应用。但是如果GSN能够成为主流,也许将来会有更多的DApp基于GSN的框架开发出来。

通过加油站网络(GSN)创造更好的DApp发展和进入体验文档下载: PDF DOC TXT