区块链网站|NFTS 以太坊(ETH) 以太坊:EIP——EIP之后的3074年——1559年

以太坊:EIP——EIP之后的3074年——1559年

广告位

不断进击的以太坊:EIP-1559之后的EIP-3074

Ropsten测试网6月24日上线,块高10499401。

自部署以来,已烧毁约88,500个测试网络以太坊,价值1.776亿美元。

大约在Eth2启动的同时,价值2亿美元的10万以太币已经存入Eth2的质押合同。

备受期待的以太坊改进方案EIP-1559最终部署在Ropsten测试网络上,用于即将到来的伦敦以太坊升级。日前,伦敦三个硬以太网测试网络的发布日期公布。以太坊核心开发者Tim Beiko宣布,Ropsten、Goerli、Rinkeby测试网络的街区高度已经确定。Ropsten身高10499401,6月24日上线。另一方面,Goerli将在6月30日,Rinkeby将在7月7日。EIP-1559的燃烧机制可能有利于代币的价格。虽然在伦敦硬分叉有五个以太坊改进建议,EIP-1559吸引了所有的注意力。新的升级预计会消耗网络上的交易成本。根据EIP-1559的跟踪网站Watch the Burn的数据,自Ropsten测试网络在伦敦升级以来,约有88500个测试网络以太坊被烧毁,价值1.776亿美元。然而,EIP-1559烧毁的大量以太坊再次引发了Eth2大修通缩的讨论。由于燃烧机理,乙醚的燃烧速度比循环供给快。这可能对…的价格非常有利。在EIP-1559之后,社会关注旨在解决安全问题的EIP-3074。然而,EIP-1559并不是以太坊社区关注的唯一一个EIP。EIP-3074是社区在升级中高度期待的另一个改进建议。根据大卫米哈尔和他的推文,以太坊忽略的一个主要安全问题是ERC20的批准。他补充说,他已经推动了ERC777,他们解决这个问题的唯一机会是EIP-3074。这项以太坊改进提案将允许用户在一次交易中批准转账、执行操作和撤销批准。此前,以太坊的开发者注意到EIP-1559并不是为了降低燃气成本而设计的:但许多人仍然相信,这一提议肯定会大幅降低燃气成本。这甚至可能使矿工收入减少50%,导致“矿工起义”,但最终以失败告终。尽管如此,伦敦的升级有望推动以太坊的看涨趋势。知名加密分析师CryptoQuant指出,大约在Eth2推出的同时,价值2亿美元的10万个以太币已经存入Eth2的质押合同。目前,超过5%的ETH供应被锁定,价值约117.5亿美元。什么是EIP-3074?当我们想要将令牌发送到智能合约时,我们通常必须执行两个事务:第一个事务approve是花费我们的令牌的合约,第二个事务transferFrom将令牌发送到合约。EIP-3074通过引入智能合同在外部拥有的账户(EOA,或简单的传统以太坊地址)中发送交易来解决这个问题。这个EIP介绍了两个EVM指令AUTH和AUTHCALL。第一个设置*authorized*基于ECDSA签名的上下文变量。第二个发送呼叫是*授权的*。这实质上是将EOA的控制权委托给了一份智能合约。

和AUTHCALL EVM指令(也称为操作码),使得智能合约基于签名的消息授权EOA,并从EOA发送事务(“调用”)。这带来了许多可能性,例如:

赞助交易(也称为元交易):从另一个账户支付交易的gas。这也将允许我们从没有任何以太网的地址发送令牌。

批量交易:一次调用发送多个交易。这确保了在同一个块中执行两个或多个事务,并且还可以降低事务成本。

改进的用户体验(UX):例如,我们可以在单个事务中调用approve和transferFrom。

与这些问题的现有解决方案不同,EIP-3074不需要智能合约钱包。我们可以简单地将事务发送给执行事务的所谓调用者。调用者是无状态的、不受信任的智能合约,他们不要求我们提前将余额发送给合约。EIP-3074也没有引入新的交易类型。通过引入两个新的EVM指令,技术上应该更容易实现。和AUTHCALL操作码EIP-3074定义了可以从智能合约中调用的两个新操作码:

AUTH(0x F6)-根据签名和提交授权外部拥有的帐户。它接受四个输入参数:提交和带符号的yParity,r和s。

auth call(0xf 7)-在授权的EOA上下文中发送一个调用(事务)。它接受八个输入参数:gas、addr、value、valueExt、argsOffset、argsLength、retOffset、retLength。这类似于现有的CALL操作码。

要授权EOA,我们需要来自EOA的签名消息。调用AUTH的智能合约可以从消息签名中恢复签名人,然后将消息签名设置为授权的EVM上下文变量。现在,每当智能合约调用AUTHCALL时,调用者都被设置为授权地址。当被调用的智能合约调用调用方(例如,通过Solidity的msg.sender)时,这现在是授权EOA的地址,而不是进行调用的智能合约调用方的地址。发送一个或多个交易的基本过程如下:

一个基本的EIP-3074进程,在该进程中,调用者约定发送多个事务。

EOA签署授权信息;

EOA或其他天然气支付者向呼叫者发送交易数据和授权信息的合同;

调用者契约使用AUTH来执行授权,使用AUTHCALL来发送事务。

谁将交易发送到合同并不重要,只要EOA的签名有效。这允许其他人(或另一个帐户)发送交易。授权和提交为了执行授权,EOA必须以特定格式签署消息:

(注意:||用作字节串联运算符)它由三部分组成:一个幻字节(0x03)、填充为32字节的调用方地址(将执行授权的智能协定的地址)和32字节的提交。

授权消息格式,包括可用于提交的样本提交,描述了EOA提交的对象,可以根据调用的一些属性(如地址、值)进行计算。调用者契约可以根据提供的属性重新计算提交,如果这些字段正确,授权将被执行。例如,假设我们要发送以下事务(表示为JSON):

我们可以散列这些字段(例如,以某种方式将它们连接在一起,或者使用类似EIP-712的东西)并将其用作提交。我们可以在智能契约中提供要发送的事务和授权消息的签名,如这个JSON数据所示。契约函数可以是这样的:

契约智能地重新计算提交事务,并将该提交(连同签名)提供给AUTH调用。这将尝试恢复签名者的地址。如果提交无效,将从签名中恢复错误的地址,这意味着交易将失败。调用方完全负责确保该提交是安全的。我们可以简单地用0x0将消息签名为submission,并给予智能合约对EOA的完全访问权。EIP-3074的前一版本包含更严格的提交格式,包括重播保护等内容,但后来为了更大的灵活性,它被删除了。因此,信任与我们互动的来电者是非常重要的。并限制安全问题EIP-3074可以改变基于签名的呼叫者,从而大大改变EVM的工作模式。这可能会在新合同和现有合同中引入潜在的漏洞。因此,EIP-3074被审计。下面解释了一些可能的安全问题。出于这些不同的原因,EIP-3074建议只与可信的呼叫者互动。弱提交和重放攻击如上所述,EIP-3074没有定义提交的标准化格式。呼叫者可以以他们想要的任何方式自由地这样做。这意味着调用者完全负责提供足够的保护,例如防止重放攻击。如果提交不包含某种随机数,您可以简单地获取签名的消息,并将其再次发送给调用者。恶意调用方可以通过根本不验证提交来获得对EOA的控制。我们在签署消息时应该始终小心。通过在授权信息中包含呼叫者的地址,EIP-3074对重放攻击有基本的保护。这使得不可能在另一个调用者上重放调用程序的授权消息。可升级的呼叫者EIP-3074清楚地声明呼叫者必须是不可升级的。如果调用者是可升级的,某人可以部署调用者的另一个版本,该版本不验证提交,从而给予合同对EOA的完全控制。重入攻击目前,智能合约可以使用require(tx.origin==msg.sender),它检查交易是否是从EOA发送的(而不是另一个合约)。这允许简单的重入防止,因为它防止契约调用函数。EIP-3074还允许tx.origin作为授权消息的签名者。即使调用是由智能合约AUTHCALL执行的,调用者执行的任何s都会导致tx.origin==msg.sender为真,可能导致重入攻击。EIP-3074提到:“[……]这个EIP的作者还没有找到任何这种形式的再入保护的例子,虽然搜索并不详尽。”结论EIP-3074为以太坊带来了许多激动人心的新可能。AUTHCALL和AuthCall允许EOA将帐户的控制权委托给智能合同调用者,从而使得发送批量交易、赞助交易等成为可能。然而,它给以太坊上的交易工作模式带来了一些重大变化,因此在主网络上激活EIP-3074之前,需要更多地考虑安全性。

广告位
本文来自网络,不代表区块链网站|NFTS立场,转载请注明出处:https://www.qklwz.com/jzb/ytf/15647.html
上一篇
下一篇

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

返回顶部