http://www.7klian.com

摸索以太坊元生意业务的通用尺度

Makerdao/dss:https://github.com/makerdao/dss/blob/b1fdcfc9b2ab7961bf2ce7ab4008bfcec1c73a88/src/dai.sol#L114-L138
无论提议来历于那里,我们都但愿在个中看到如下内容:
在我们看来,合约钱包有用不假,但有点过甚其实了,并且因为合约钱包经常勉励用户做那些便利日常利用的法子,还大概会危害到链上的隐私。这会极大地影响我们但愿在以太坊生态内实现普遍化元生意业务的方法。
假如用户的账户并非合约钱包,完成这一进程就需要一系列操纵:首先得通过生意业务挪用 approve()/permit() 要领,然后期待该生意业务被打包之后再挪用 mint() 要领。而有了合约钱包之后,就可以一步到位,通过挪用一个非凡的合约要领来批处理惩罚这些生意业务。

合约钱包带来的困扰
中继荟萃器该当支持生意业务批处理惩罚,并通过 sendRawTransactionSet() 要领来增补 sendRawTransaction() ,以便同一用户发送多笔生意业务。sendRawTransactionSetPlural() 要领也应该加以操作,以利便中继对来自多个用户的生意业务举办批处理惩罚,从而最小化 Gas 用度。

我们的提议概述
以太坊的钱包地点自己是 “伪匿名的”(因此具有必然的隐私性),但此刻很多钱包软件提供商都在勉励其用户获取 ENS 地点,却不奉告他们这样做的效果。简言之,以太坊账户的生意业务记录(包罗其投资组合及与 dApp 之间的互动记录)在链上是果真的,一个地点注册 ENS 域名之后,这些生意业务勾当就跟这个 ENS 域名关联起来了。而用户所注册的 ENS 名字很大概是用户在其它处事或是现实糊口中已经利用过的名字。这就是我对(供小我私家利用的)合约钱包地点绑定 ENS 持猜疑立场的主要原因。
为了防备垂纶,EIP-712 提出了一个巧妙的办理方案 —— 域名脱离符。该工具包括了(用户签名生意业务要转发给的)合约的具体信息 —— 也就是地点,以及 dApp 的名称和版本。这些数据都包括在签名中,并和所有其它的生意业务数据一并以一种很是友好的方法泛起给终端用户。这样就限制了用户签名生意业务的方法,防备他们提倡预期以外范例的生意业务(好比有意把生意业务发到错误的合约)。

通过度层确定性钱包法则(Hierarchical Deterministic Wallet,简称 HD 钱包),用户可以用单个私钥来生成很多 EOA 地点,以保管差异的资产;利用多个地点别离操纵,即便用户会利用 dApp、DeFi 协议并提倡大量生意业务,仍然可以保持必然水平的匿名性。利用这套法则,用户甚至可以只持有一把私钥,然后为每一个要用到的 dApp 和 token 专门建设一个 EOA 地点用于交互。合约钱包固然也能做到这一点,但因为 Gas 用度的存在,为用户利用的每一个 dApp/代币 建设一个合约钱包显得十分昂贵而不切实际。就算不思量 Gas 用度,这样做也会造成网络拥堵。

我们但愿在 Gas Station Network的基本上更进一步,以支持 EIP-712 和批量生意业务。这也意味着对 RelayHub 和 RelayRecipient 举办修改,并建设一个新尺度,支持签名生意业务集归并担保生意业务的原子性。

另外,各人一边存眷掩护隐私的协议(好比 AZTEC,可用于隐蔽发送 token)(这些协议都依赖于私钥的所有和保管),另一边又忽略了私钥打点的难度和传统方案的隐私方面。

DeFi、区块链游戏和 dApp 生态的将来依赖于入场玩家的局限。这意味着我们需要办理新玩家的上手问题,并低落安详操纵的常识门槛。当下最主要的两个问题是:玩家上手时需要拥有一个数字钱包以及一些以太币 —— 这也是行业内很多人正在尽力攻陷的偏向。
以太坊元生意业务:低落以太坊普及的门槛(编者注:中译本见文末)
迈向普遍化尺度
引言

· 适合在资产 dApp 和 DeFi 的智能合约(而非合约钱包尺度)中运行的要领
另外,批处理惩罚生意业务也让中继者可以通过用户签名的生意业务会合地收取手续费,也就是在一批生意业务中插手一笔转账给中继者的生意业务,要领也是可以定制化的。可以是将 ERC-20 代币转给中继者,可能让用户的方针合约来付出该用度。
总结
然而,对付将 ENS 用于识别智能合约以防备诈骗,以及可以从透明操纵中获益的组织利用 合约钱包/多重签名钱包,我举双手支持。
一笔元生意业务常常属于一组操纵的一部门,而这些操纵大概依赖于前面的生意业务。举个例子,在我们构建的观念验证案例中,用户可以将 xDai 存入 Compound 协议。而在主网上,这意味着我们要核准 cDai 合约会见用户资金,然后挪用 mint() 要领将该资金存入贷款协议。
在元生意业务呈现之前,完成上述处事需要预存资金,即先将以太币存入终端用户的账户中以促进生意业务。Uport 推出的 Lambda Sensui 是这方面的一个典范应用。

不只如此,该要领还应该学学 MakerDAO 是如何利用 permit() 要领处理惩罚 nonce 和重放掩护的。这样,用户就可觉得互不相关的合约转发多条动静,同时不消劳神网络中生意业务的提交顺序 —— 譬喻,当用户为某些现实糊口处事付出多笔资产的时候。
在用户利用合约钱包时,得益于集成在钱包内的连系签名成果,终端用户可以或许仅凭其设备上的密钥来签名生意业务、表白本身想要举办生意业务的意图,并将该生意业务发送给配合签名者可能转发方(凡是是钱包揽事的提供商),后者会转发该生意业务并包袱 Gas 用度。好比,在 Dapper Labs 的产物 CoreWallet 上挪用 invokeN…() 要领,实际产生的工作就像我们这里说的一样。

如你所见,我们强烈支持 Gas Station Network提出的想法。由 RelayRecipient 提供的 getSender() 和 getMessageData() 要领实现了一个统一的接口,使所有合约的元生意业务可以彼此兼容。然而,这些要领在其当前的形式下还存在两个短板 —— 无法防备垂纶网络和重放进攻。详情:
假如你想越发深入地相识元生意业务,可以阅读下面这篇文章,其作者是社区中的标杆人物 —— Austin Griffith。
然而,在某些环境下,用户大概但愿往某一个合约发送多笔元生意业务。譬喻,某一个只持有一种资产的 EOA 想要批量发薪水的时候。一个批处理惩罚元生意业务的系统在设计的时候必需思量到这一点,并确保保持了生意业务发送的顺序。

只要你愿意费钱,你可以在一笔生意业务内执行任何(不超出 Gas 限制的)操纵 —— 在一个险些是完全去中心化的无疆土网络上。听起来很是酷不是么?事实也确实如此。可是!问题就在于,执行生意业务需要淹灭 Gas,而 Gas 是用以太币来付出的,但是新用户谁有以太币啊亲?(什么?你说赛博朋克、囤币党、传销组织都有?托付那都不是正凡人)

我们面对的真正挑战是如何建设一种尺度将生意业务打包进生意业务集,以及解包并执行生意业务(同时确保生意业务的原子性)。假如生意业务的原子性无法获得担保,中继者就可以通过只转发付费的生意业务来蒙混过关,而无视荟萃中的其它生意业务。这才是事情的重头!对付如何实现这一点,我今朝还毫无头绪,但请继承存眷我的下一篇文章!但愿我可以将这一切酿成可行的方案来介入比赛。
实现
· ethereum/EIP-1613:Gas Station Network
无论你对基于合约及合约钱包的办理方案持有何种态度,今朝都还没有一个确定的尺度 —— 要领挪用因合约而异,用于中继生意业务的系统也各不沟通。Gas Station Network 已经做了很多基本性的事情,但依旧不足机动。收款方合约大概不会付出 Gas 费。那么用户又如何利用其资产来为中继者付出酬金呢?我们该如何让另一方来为这笔生意业务付出 Gas 费呢?这些都是我们但愿在普遍化元生意业务比赛中办理的问题 —— 真正有代价的提案就是要面临这些问题。
假如有一种人人可用的普遍化元生意业务批处理惩罚要领,那必定是一个重大的创新。这会大大简化链上的勾当,就像上文举过的各种例子。另外,该要领还要答允用户可以同时签名和转发多笔互不相关的生意业务。
很适合地址详细场景的办理方案,好比在 Dai 的 ERC-20 代币合约中利用的 permit() 要领,就很优雅地办理了链上部门的困难 —— 这是一种需要终端用户直接提交的 approve 要领。另外,这一要领还实现了 EIP-712,该尺度用于暗示和签名供链上利用的动静数据。可以说, Dai 只需要支持这一种元生意业务就足够了,,因为所有其它的用例(譬喻发送 Dai 和协调 DeFi 的操纵)都可以操作这一办理方案来实现。
另外,在上面的代码中,你还可以看到 MakerDAO 本身用 nonce 属性实现了重放掩护 —— 假如没有该属性,获得授权的参加方可以通过重放生意业务来耗尽用户的资金。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读