售前客服二维码
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!
1.什么是GSN
对于以太网,诸如转账、发送令牌、调用合同等交易。这是保证以太网稳定运行的重要手段。但在现实生活中,为了推广产品,免费甚至补贴用户是互联网企业获取客户的常用手段,而大众早就习惯了这些企业的教育。如果公司开发了一个Dapp,并想将其推向市场,告诉用户,“我们是基于区块链的。如果要用,首先要买Ethereum。哦,现在一个以太馆要3000多人民币!”估计大部分人都是直接转身离开,剩下的都是直接跳楼骂人,可能只有少数极客会经历。这也是Dapp难以被大众接受的重要原因。
为了解决这个问题,GSN应运而生!GSN全称是加油站网络,翻译过来就是加油站网络。GSN将本应由用户支付的Gas转让给其他愿意为用户支付的人(一般是Dapp开发者),并能保证交易的真实性。
GSN目前有两个版本,v1和v2,在实现和流程上都有所不同。本文基于v2版本。
二、相关角色
2.1客户-客户
客户端,即各种Dapp,是GSN架构的顶层。客户端负责对原始交易进行签名,并将签名后的原始交易发送给中继服务器。
2.2中继服务器-RealServer
中继服务器主要用于处理用户的元交易请求,其主要功能包括:
通过调用RelayHub合同,判断付款人(Paymaster)是否允许支付交易的手续费,是否有足够的以太网。
中继服务器将事务发送到链。对于中继服务器,多个客户端可以使用一个,或者一个客户端可以对应一个。
2.3付款人-付款人
付款人交易气体的实际付款人。付款方是一个智能合同,这个合同中最重要的是交易过滤器“acceptRelayedCall”,它决定了哪些交易可以付款。常用的过滤器包括:
白名单
令牌认证
特定方法的发布
链下的委托授权
2.4中继路由-中继总线
中继路由本身是一个智能契约,其功能包括:
维护一个转发器列表供客户端查询
为中继服务器提供Relay Hub balances[recipient]METHoD,以检查Dapp开发人员在支付Gas之前是否存放了足够的eth中继路由合同,Gas可以自行部署,也可以直接由GSN提供。自行部署的继电器不能共享现有继电器。以太网主网络上的RelayHub合同地址:
0xd 216153 c 06e 857 CD 7f 72665 e0a f1 d7d 82172 f 494
2.5中继接收合同-中继接收
每一个支持GSN的DApp都需要继承RelayRecipient,并提供一个与RelayHub通信的接口。部署Dapp协定时,需要初始化RelayHub的地址。需要注意的是,继承RelayRecipient契约后,用_msgSender()代替msg.sender获取元交易的用户信息。
2.6受信任的转发器-受信任的转发器
可信转发器用于验证发送方的签名和Nonce值,RelayHub通过可信转发器将元事务转发给Dapp合同。
第三,结构
GSN的整体架构如下图所示。
一个完整的过程如下:1。客户端从中继服务器查询可用中继列表;2.客户端将原始事务发送给关系服务器;3.中继服务器验证Dapp开发者有足够的ETH来支付Gas。付款人允许交易。4.中继服务器将已签名的交易返回给客户端,该交易已由中继服务器中的中继支付。5.RelayServer将事务发送到RelayHub合同。6.RelayHub协定调用内部受信任的转发器来验证事务的签名和随机数。7.受信任的转发器通过验证后,将调用接收方合同。
四.案例
https://metacoin.opengsn.org/政府官员提供的元币案例
V.参考
GSNv2官方网站文档:https://docs.opengsn.org/learn/index.html
gsnv 2 GitHub https://github.com/opengsn/gsn
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!