以太坊元交易介绍

17 minute read Published: 2019-11-29
介绍以太坊的元交易技术方案

把几个月之前看过的以太坊元交易的资料总结一下,主要是 Gas stations network 这种方案。

发展历史

从一开始,区块链技术对于普通用户就存在着上手困难的问题,因为它和人们普遍接触的中心化服务很不一样,它没有帐号和密码,取而代之的是私钥(助记词)。对于以太坊来说,Dapps 的上手门槛太高。以太坊的生态系统不足以让一个用户一上来就可以直接使用他需要的功能。因为和链上交互需要使用 Gas,这就有一系列钱包、以太币、Gas 的概念。理想的情况应该是用户一开始只需关心 DApps 提供的功能,等他熟悉之后才引入底层的概念知识。

元交易就是想缓解这个问题的一种技术方案。

最早提出元交易的想法是在 2015 年,Dr. Christian Lundkvist 提出来的。核心观点是,不需要持有 ETH,就能和以太坊区块链进行交互。这样代币的持有人,不需要持有 ETH,就能和 Dapps 交互(正常的话,交互需要向智能合约发送交易,而发送交易就需要消耗 Gas,那就需要事先拥有 ETH)。

这样就会带来很大的好处:对新手很友好,大幅降低代币的使用门槛。App 可以将钱包、助记词这些概念都隐藏掉,新手获得代币后,可以直接相互转账,不需要知道它是否运行在以太坊上

2017 年 8 月,Nate Rush 在 Medium 上写了 Making uPort Smart Contracts Smarter, Part 3: Fixing User Experience with Meta Transactions。它的工作方式是:用户仍然持有私钥,并且使用私钥签名一些数据,数据发送到「中继」,中继把数据发送到身份验证合约去验证(验证是否是某个 Dapps 的用户),验证通过后,中继把数据发送到用户想去的智能合约,由链下的中继负责支付 Gas 费

技术方向

目前有很多提案都是这种链下中继的想法,包括:

但实际上就有一些别的思路,这里只是列举一下,并没有仔细考察它们的可行性和进展:

Gas stations netwrok

官网地址

Relay 仓库地址

文档

Gas stations network 技术方案由 OpenZeppelin、Tabookey 公司主导,所以现阶段最成熟。它遵循 EIP 1077。在今年 8 月 6 日释放首个测试版的时候,官方写了一篇很详细的介绍文章。里面有些观点很有意思,值得讨论:

下面开始介绍它的 EIP 规范文档。

EIP 1613: Gas stations network

整个设计有两个目标:易于被采用、健壮性。

由 4 部分组成:

只要有一个中继是诚实的,其它节点就不可能审查交易,假如想破坏这个系统,结果和链上核对被发现了,就会受到惩罚。

中继注册到 RelayHub 里面,会根据合约返回给 DApps 合适的中继(基于信誉),DApp 可以自由切换中继,每个人都可以运行一个中继,可以设置自己的收费。

动机

RelayHub 的作用

Relay 的作用

实现RelayRecipient合约

Relay 注册过程

发送交易的过程

RelayHub 接收交易的流程

Relay 下线流程

Demo

最后介绍一下官方给出的一个测试链 Demo 聊天应用

注意打开浏览器调试工具,跟踪一下它发出去的请求,就会发现它实际会通过 WebSocket 和链节点通讯,往 Realy 发交易请求。然后跟踪 Relay 的以太坊地址,就会找到 RelayHub 等其它信息了。

其它参考文档

Ethereum Meta Transactions 解决方案概述

The State of Meta Transactions