以太坊中有不同的事务类,例如向地址发送ETH、部署合同等。在柏林网络升级之前,以太坊上有四种不同类的事务:
具有接收地址、数据字段等的常规交易;
对于没有目的地址的合约部署事务,数据字段用于合约代码;
具有v值签名但不具有链ID的交易(eip-155之前);
具有v值签名但包含链ID的事务。
不同的以太坊客户端、库和其他工具将分析每个事务并了解每个事务类。虽然只有四种类的交易,但有许多复杂的情况需要处理。技术人员应该检查事务中的所有域,以确定它们属于哪种类的事务。这是新事务的关键,例如元事务、多重签名事务和其他pre-eip-2718事务类。
以太坊现在有了一个新的交易标准,它是由Micah zoltu在eip-2718中定义和创建的。打印的交易信封是以太坊上一些和其他未开发功能的基础。
在本文中,我们将详细介绍柏林升级中包含的一些标准,以及将来可能包含的其他内容。
标准交易信封
以太坊有一种交易形式。每个事务都包括一个nonce、天然气价格、天然气限制、目的地地址、值、数据、V、R和s。这些字段按如下方式进行RLP编码:
RLP([nonce,gasPrice,gasLimit,to,value,data,v,r,s])
Eip-2718为类化事务定义了一个新的宽信封。在新标准中,交易如下:
事务类| |事务负载
这些字段定义为:
事务类:介于0和0x7F之间的数字。有128种可能的事务类。
事务负载:由事务类定义的任何字节数组。
这些字段连接并组合形成类化事务。该标准没有描述事务负载的格式;它可以是任意字节序列,由新事务类(例如RLP、SSZ等)定义的编码器编码。选择简单字节联接是因为它读取字节数组的第一个字节,而不需要任何库或工具:您不需要RLP或SSZ解析器来检查事务类。
这种新方法使新的eip能够引入事务类,而不会给现有的事务格式带来不必要的复杂性,并且使使用不同的以太坊工具(客户机、库)来区分不同的事务变得更容易。
增加复杂性的一个很好的例子是eip-155,它通过在事务中使用链id引入了应答保护。向事务参数添加一个新字段将破坏向后兼容性,因此链ID被编码到事务签名(V)的恢复参数(V)中。使用eip-2718,我们可以简单地创建一个新的事务类来保持向后兼容性。
向后兼容性和原始事务
eip-2718的一个主要主题是向后兼容性。Eip-2718采用完全向后兼容模式,这意味着任何现有的工具、库、(硬件)钱包和事务都可以使用它,但是他们将不能使用eip-2718提供的新的“特性”和标准。旧的事务格式(现在称为原始事务)对于以太坊网络上的新事务仍然有效。
新事务类的**数量是0x7F,选择该类是为了保持这些旧事务的向后兼容性。RLP编码的事务总是以一个字节L开始,并且参数大于或等于0xc0。因此,类化事务永远不会与旧事务冲突,只需检查第一个字节即可将类化事务与旧事务区分开来。
Eip-2718本身没有定义任何类的事务,但有一些建议建议使用新标准:
Eip-1559:ETH1.0连锁市场服务费变动;
Eip-2711:赞助、到期和批量交易也是由开发人员Michah zoltu创建的,这就是创建Eip-2718的原因;
Eip-2930:可选访问列表。
下面将更详细地介绍其中一些标准。
为什么需要新的事务类?
新的交易类可以支持功能的集成,否则将通过可靠的合同或第三方解决方案进行处理。接受即将成熟的交易。在现有的解决方案中,您可以将资金发送到可靠的合同、签署事务,并将事务发送到专用节点,以便该事务具有其他参数,如到期日。然后,节点处理发送事务并确保在设置的截止日期之前执行它,否则事务将不会被广播。一些dapp和contract(比如Uniswap)内置了这个功能,但是对于大多数事务来说,实现起来并不容易。
Eip-2711将此功能本地化到以太坊网络中,同时保持与原始事务类的向后兼容性(如前一节所述)。它不需要智能合约或专用节点来运行。但是,eip-2711目前还是一个草案,eip是否会很快加入以太坊还不清楚。它也可以分为几个较小的eip(例如eip-3074)。
EIP-1559新的事务处理格式
在EIP-1559中,气体的工作方式发生了很大的变化。他们没有把所有的天然气都付给矿工,而是烧了一部分天然气。我们不会详细说明EIP-1559的所有更改,但它确实指定了一种新的事务格式:
0x02 | | RLP([chainId,nonce,maxPriorityFeePerGas,maxFeePerGas,gasLimit,to,value,data,accessList,signatureParity,signatureR,signatureS])
最重要的变化是:
天然气价格已被“每种天然气的**优先成本”和“每种天然气的**成本”所取代。
链ID单独编码,不包括在签名V值中。这实质上用更简单的实现取代了eip-155。
签名V值现在是一个简单的奇偶校验位(“签名y奇偶校验”),它是0还是1,取决于椭圆曲线上的哪个点应该被使用。
Eip-1559还提供了一种基于Eip-2930指定访问列表的方法。这可以降低事务的gas成本。
Eip-1559与原始交易不直接兼容,因为它在GAS费用方面的工作方式发生了重大变化。为了保持向后兼容,EIP-1559描述了一种将原始事务升级为EIP-1559兼容事务的方法。它通过使用原始天然气价格作为每种天然气的**优先成本和**天然气成本来实现这一点。
元事务和批事务
人民币交易已经有好几年了,但到目前为止,仍然需要智能合约。与即将发生的事务一样,这需要将ETH发送到智能合约,智能合约必须特别支持元事务。
Eip-2711使本机元事务(称为赞助事务)和批处理事务成为可能,而无需智能合约。定义了新的事务格式,事务类为0x02(尽管这可能会更改,因为EIP-1559使用相同的事务类)。交易情况如下:
0x02 | | RLP([…发送付款,…发送签名,…发送付款,…发送签名])
基本上,eip-2711包括(可选)有效载荷和天然气付款人的签名。该账户将用于支付交易中的汽油费。例如,可以从一个地址发送ERC-20代币,而不必在该地址持有任何ETH。发送方有效负载、签名等是基于事务子类定义的。例如,对于事务类1的事务,发送方有效负载定义为:
[1,ChildTransaction[],nonce,ChainId,ValidUntil,gasLimit,gasPrice]
子交易;儿童;交易记录)定义为:发送地址、值、数据。这使得在一个事务中指定多个地址、值和数据成为可能。例如,这可以用于在单个事务中调用ERC-20的批准和转移。
建议读者阅读官方文件,了解eip-2711中所有可用事务子类的详细说明。
总结
类化事务为以太坊网络带来了许多可能性。它们的创建不需要给以太坊客户端、库和其他可用工具增加很多复杂性。
目前,新的交易类还没有得到广泛的应用,因为最近EIP已经被纳入了网络,但是有一些令人兴奋的EIP正在开发中,例如EIP-2711,它增加了过期交易、批量交易和赞助交易(也称为元交易)等功能。现在可以在以太坊上定义新的事务类,因此可以轻松创建其他EIP。
文章标题:了解以太坊上的新事务类型
文章链接:https://www.btchangqing.cn/263220.html
更新时间:2021年05月22日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。