主页 > 苹果下载imtoken钱包下载哪一个 > 简介 | 探索以太坊元交易的通用标准

简介 | 探索以太坊元交易的通用标准

本文是 Bloxis 对 Metamask 在 Gitcoin 上推广元交易的竞争的回应。 由于我们计划将此功能纳入我们即将推出的产品中,因此我们在这方面投入了大量的时间和精力,因此,我们非常希望能够参与到这方面的讨论中。 如果您对我的观点有任何异议,请指出,我很乐意与您讨论。

以太坊一次能交易多少_sitesohu.com 以太坊交易查询_以太坊周末交易吗

- 来源:Gitcoin -

介绍

只要你愿意花钱,你可以在以太坊交易中进行任何操作(不超过 Gas 限制)——在一个几乎完全去中心化的无边界区块链网络上。 听起来很酷不是吗? 这是事实。 但! 问题是执行交易需要Gas,Gas是用以太坊支付的,但是谁有以太坊供新用户使用呢? (什么?你说有赛博朋克、囤币党、传销组织?拜托,那不是正常人)

sitesohu.com 以太坊交易查询_以太坊周末交易吗_以太坊一次能交易多少

- 图片来源:这个表情包是我自己P的:) -

DeFi、区块链游戏和dApp生态的未来取决于进入市场的玩家规模。 这意味着我们需要解决新玩家的入职问题,降低安全操作的知识门槛。 目前的两个主要问题是玩家需要有一个数字钱包和一些以太币才能上手——这是许多业内人士正在努力解决的问题。

所谓元交易(Meta transaction)就是让用户使用自己的密钥来签名和发起交易,但不需要用户支付交易费用(即Gas费用),而“中继”则需要支付TA Gas费用. 作为发送者,中继者向网络提交交易并支付 Gas 费用。 交易的目标合约可以确定原始用户及其意图,并据此处理合约的调用。

在元交易出现之前,完成上述服务需要预先存入资金,即先将以太币存入终端用户的账户,以方便交易。 Uport的Lambda Sensui就是这方面的典型应用。

如果你想了解更多关于元交易的知识,可以阅读下面这篇文章,作者是社区中的标杆——Austin Griffith。

以太坊元交易:降低以太坊普及门槛(编者注:中文翻译见文末)

完成

在链上,实现元交易需要一个编码标准来对原始发送者发送的交易数据进行编码——这样目标合约就可以在不受 msg.sender(即中继者)影响的情况下恢复其签名和数据。 但是,在链下,最终用户必须通过 API 或通信协议连接到中继器。 中继器本身必须有一些以太币和基础设施来获取和转发元交易。

非常适合特定场景的解决方案,比如Dai的ERC-20代币合约中使用的permit()方法,优雅的解决了链上问题——这是一种需要直接提交的问题最终用户批准方法。 此外,这种方法实现了 EIP-712,这是一种用于表示和签署链上使用的消息数据的标准。 可以说,Dai 只需要支持这一元交易,因为所有其他用例(例如发送 Dai 和协调 DeFi 操作)都可以使用此解决方案来实现。

加油站网络更进一步,它创建了一个基于智能合约的网络来协调中继器,并创建了允许任何智能合约连接到该网络的合约方法,只需稍作改动。 所有中继器都通过中继中心与合约交互,中继中心本身也是一个合约,并维护着一个中继器注册表。 其他合约向中继收集站支付 Ether 以激励中继者帮助用户支付 gas 费,中继者只有在成功转发交易后才能获得费用。

合约钱包

Dapper Labs、Gnosis 和 Argent 等许多组织正在推出旨在平衡用户体验和安全性的合约钱包。 合约钱包在智能合约中托管用户的资金,在合约中发送交易和保护账户安全的功能可以远超以太坊协议本身的水平。

当用户使用合约钱包时,由于钱包中集成了联合签名功能,最终用户只需使用设备上的密钥就可以签署交易,表明他进行交易的意图,并将交易发送到共同的签名者或转发者(通常是钱包服务的提供者),将转发交易并承担 Gas 费用。 比如在Dapper Labs的产品CoreWallet上调用invokeN...()方法时,实际发生的情况和我们这里说的是一样的。

以太坊周末交易吗_sitesohu.com 以太坊交易查询_以太坊一次能交易多少

- 来源:Dapper Labs -

使用这种方法,即使账户中没有以太币也可以发送交易,并且不需要行业接受相同的标准 - 合约钱包可以像外部所有者账户(即由标准密钥控制的普通用户地址pair, EOA) 调用其他合约。 此外,它还带来了一系列的安全特性,比如Authereum的交易防火墙。

以太坊一次能交易多少_sitesohu.com 以太坊交易查询_以太坊周末交易吗

- 来源:Authereum -

合约钱包带来的烦恼

对于以太坊命名服务 (ENS) 等合约钱包和创新,以太坊社区内有很多议论。 然而,随着许多用户使用 ENS 域作为其所有链上活动的身份(并使用他们的真实姓名作为域的可读部分),出现了巨大的隐私和安全问题。

另外,大家关注隐私保护协议(比如AZTEC,可以用来隐蔽发送代币)(这些协议都依赖于私钥的所有权和保管),而忽略了私钥管理的难度和传统解决方案的隐私方面。

以太坊钱包地址本身是“伪匿名的”(因此有些私密),但许多钱包软件提供商现在鼓励他们的用户获取 ENS 地址,而不告知他们这样做的后果。 简而言之,以太坊账户的交易记录(包括其投资组合和与 dApp 的交互记录)在链上是公开的。 一个地址注册了一个ENS域名后,这些交易活动都与这个ENS域名相关联。 用户注册的ENS名称很可能是用户在其他服务或现实生活中已经使用过的名称。 这是我对将 ENS 绑定到合约钱包地址(供个人使用)持怀疑态度的主要原因。

但是,我支持使用 ENS 来识别智能合约以防止欺诈,并支持组织使用合约钱包/多重签名钱包以从透明操作中受益。

通过Hierarchical Deterministic Wallet(简称HD钱包),用户可以使用一个私钥生成多个EOA地址来存储不同的资产; 使用多个地址分别操作,即使用户知道如何使用 dApp 和 DeFi 协议并发起大量交易,仍然保持一定的匿名性。 使用这套规则以太坊周末交易吗,用户甚至可以只持有一个私钥,然后为每个dApp和token创建一个EOA地址,用于交互。 虽然合约钱包也可以做到这一点,但由于 Gas 费用的存在,为用户使用的每个 dApp/token 创建一个合约钱包非常昂贵且不切实际。 即使不考虑 gas 费,这样做也会造成网络拥堵。

sitesohu.com 以太坊交易查询_以太坊一次能交易多少_以太坊周末交易吗

- 分层确定性钱包本身就是一种隐私解决方案,也适用于以太坊钱包。 资料来源:卡萨-

假设以太坊生态系统中的所有用户对于与其交互的每个dApp都有一个对应的合约钱包,以便他们可以使用元交易功能并保护他们的隐私——那么智能合约采用一个共同的标准将更加合理.

迈向通用标准

无论您对基于合约和基于合约钱包的解决方案持何种立场,目前都没有明确的标准——方法调用因合约而异,中继交易的系统也不同。 加油站网络做了很多基础工作,但仍然不够灵活。 收款人合约可能不支付gas费。 那么用户如何使用他们的资产来支付中继者呢? 我们如何让对方支付这笔交易的gas费呢? 这些是我们希望在推广元交易的竞赛中解决的问题——真正有价值的提案可以解决这些问题。

基于我们提出的想法,我们的总法律顾问Vincent提出了一个想法:让dApp开发者预存资金供用户支付gas费,用户用法币兑换; 为了避免 dApp 项目被识别为交易所,这些以太币只能在 dApp 内部使用。 这是我们希望在未来的通用元事务标准中支持的机制(这是我们一年前在做另一件事时提出的)。 加油站网络通过 acceptRelayedCall() 方法的自定义实现为这个想法提供技术支持。

另外,让relayer批量处理交易,是不是也会降低Gas费?

无论提案来自何处,我们都希望在其中看到以下内容:

我们的提案概述

如您所见,我们强烈支持加油站网络提出的想法。 RelayRecipient 提供的 getSender() 和 getMessageData() 方法实现了统一的接口,使得所有合约的元交易相互兼容。 然而,目前形式的这些方法有两个缺点——无法防止网络钓鱼和重放攻击。 详情:为了防止钓鱼,EIP-712提出了一个巧妙的解决方案——域名分隔符。 该对象包含合约的详细信息(用户签署要转发到的交易)——即地址、dApp 的名称和版本。 此数据包含在签名中,并以非常友好的方式与所有其他交易数据一起呈现给最终用户。 这限制了用户签署交易的方式,防止他们发起意外类型的交易(例如故意将交易发送到错误的合约)。

以太坊周末交易吗_sitesohu.com 以太坊交易查询_以太坊一次能交易多少

- 使用 signTypedData_v4 方法对数据进行签名的 Metamask 接口。 资料来源:Metamask -

支持EIP-712的合约需要验证域名分隔符是否与合约本身匹配,如果不匹配则拒绝交易。 您可以在下面列出的 Dai 合约的代码中看到这一点。 我们想将 EIP-712 集成到 getSender() 和 getMessageData() 中,以便可以在每次方法调用时执行此检查——如果签名不匹配,则拒绝交易。 您可以单击下面的链接查看此功能的代码。 (抱歉,文章中嵌入代码的格式无法正常显示) Makerdao/dss: #L114-L138 另外,在上面的代码中,你还可以看到MakerDAO使用了nonce属性来实现重放保护——如果有的话没有这样的财产,授权方可以通过重播交易来耗尽用户的资金。 元事务通常是一组可能依赖于先前事务的操作的一部分。 例如,在我们构建的概念验证案例中,用户可以将 xDai 存入 Compound 协议。 在主网上,这意味着我们授予 cDai 合约访问用户资金的权限,然后调用 mint() 方法将该资金存入借贷协议。 如果用户的账户不是合约钱包,则需要一系列的操作来完成这个过程:首先要通过交易调用approve()/permit()方法,然后调用mint()方法交易被打包。

使用合约钱包,你可以通过调用一个特殊的合约方法来批量处理这些交易。 如果有一种通用的元交易批处理方法可供所有人使用,那肯定是一项重大创新。 这将大大简化链上的活动,就像上面提到的各种例子一样。 此外,该方法将允许用户同时签署和转发多个不相关的交易。 不仅如此,该方法还应了解 MakerDAO 如何使用 permit() 方法处理随机数和重放保护。 通过这种方式,用户可以为不相关的合约转发多条消息,而不必担心交易在网络中的提交顺序——例如以太坊周末交易吗,当用户为一些现实生活中的服务支付多种资产时。 然而,在某些情况下,用户可能希望将多个元交易发送到一个合约。 例如,当只持有一项资产的 EOA 想要分批支付工资时。 一个批处理元交易的系统在设计时必须牢记这一点,并确保保留交易发送的顺序。 此外,批处理还允许中继者通过用户签名的交易集中收取费用,即在一批交易中向中继者添加转账交易,方式也可以自定义。 这可以通过将 ERC-20 代币转移到中继器,或让用户的目标合约支付费用来实现。 中继聚合器应支持事务批处理并使用 sendRawTransactionSet() 方法补充 sendRawTransaction() 以便同一用户可以发送多个事务。 还应该使用 sendRawTransactionSetPlural() 方法来促进来自多个用户的交易的中继批处理,以最大限度地减少 gas 成本。

sitesohu.com 以太坊交易查询_以太坊周末交易吗_以太坊一次能交易多少

- 来源:Tabey -

如果它可以由交易集中的交易提供资金,则只需对中继聚合器的当前工作流程进行少量更改即可实现。 中继器可以将gasPrice和fee参数acceptRelayCall()设置为0。中继器可以不断从交易集中提取交易并按照标准处理,直到完成。 我们面临的真正挑战是如何创建一个标准,将交易打包成交易集,并解包和执行交易(同时保证交易的原子性)。 如果不能保证交易的原子性,中继者可以通过只转发付费交易而忽略集合中的其他交易来逃避它。 这才是真正的工作! 我目前对如何执行此操作一无所知,但请继续关注我的下一篇文章! 希望我能把它变成一个可行的竞争解决方案。

总结

在我们看来,合约钱包是有用的,但有点过头了,而且由于合约钱包经常鼓励用户做一些方便日常使用的事情,它们也可能危及链上隐私。 这将极大地影响我们希望如何在以太坊生态系统中推广元交易。 我们希望在加油站网络上构建以支持 EIP-712 和批量交易。 这也意味着对 RelayHub 和 RelayRecipient 进行修改,并创建一个支持签名交易集合并保证交易原子性的新标准。 请继续关注并留下您的反馈 - 这是我在 Medium 上的第一篇文章!

(完)

(文内有许多超链接,可点击左下 ”阅读原文“ 从 EthFans 网站上获取)


原文链接:

https://medium.com/bloxis/generalised-ethereum-meta-transactions-our-take-cb9f027866e9

作者: Kiran Fernando

翻译 & 校对: 曾汨 & 阿剑

你可能还喜欢: