零字节地址能节省 Gas – 深?理解以太坊 Gas 机制

邀请好友注册并登录,获取价值高达60000元的数字货盲盒。

前言

前段时间在 Etherscan 上查看交易时,发现一个很有趣的地址:0x00000000a03396F6F864B496713f2623b6756Be2。这个地址是以 0x00000000 开头,抱着探索的心理对该地址进行了简单的搜索,发现该地址并不简单,它不仅构造独特同时,还能节省Gas 费。

零字节地址能节省Gas-深?理解以太坊Gas机制1

什么是 Gas

在讲这个地址之前,我们首先需要理解什么是 Gas。

Gas 是用于测量在以太坊区块链上执行特定操作所需的计算工作量的单位,即以太坊网络上的计算单位。我们可以简单的把 Gas 理解为汽油,其保证了以太坊网络的正常运行。在以太坊区块链上,执行写入操作都需要支付一定的 Gas 费用。

在以太坊中,货币是以太币 (ether),1 ether=10^18 Wei。在以太坊区块链上进行操作,如发送代币、调用合约等都要支付相应 Gas,且以 Wei 作为单位来计算。Wei 是 ETH 原生最小的单位,ETH 消耗的 Gas 单位是 Gwei,1 Gwei=10^9Wei。

1、Gas Price

Gas Price 是以太坊内消耗 1 个 Gas 对应多少的 Gwei,当然交易发送方可以自定义愿意支付的每单位 Gas 价格。比如交易发送方的一笔交易需要耗费 10 Gas,交易发送者愿意支付 3 Wei/Gas,交易的成本总价就是 30 Wei。在我们使用的钱包(如 MetaMask)里都会有调整 Gas 费的高级选项,Gas Price 越高,打包的优先级就越高。

2、Gas Limit

Gas Limit 是消耗 Gas 的限制单位,即交易发送方在完成每笔交易时最多能使用的用于执行交易的 Gas 量。如果没有 Gas Limit 做限制,可能会导致交易发送方的账户余额因错误操作而消耗完,Gas Limit 是安全机制,防止把账户中所有 ETH 消耗掉。

3、固有成本 Gas

发送一笔交易的成本包括两部分:

1、固有成本

2、执行成本

而固有成本由交易的负载决定:

1、创建智能合约的负载是创建智能合约的EVM 代码

2、调用智能合约函数的负载是执行消息时输入的数据

3、两个账户之间转账的负载为空

我们从以太坊黄皮书附录 G 中可得知创建合约和执行交易的相关成本 Gas。

零字节地址能节省Gas-深?理解以太坊Gas机制2

我们假设N_zeros 代表的是交易负载中字节为 0 的字节总数,N_nonzeros代表交易负载中字节不为 0 的字节总数,根据黄皮书 6.2 章节关于执行的描述,可以得到固有成本。

零字节地址能节省Gas-深?理解以太坊Gas机制3零字节地址能节省Gas-深?理解以太坊Gas机制4

以太坊地址中零开头的地址

由于 Gas 费用现在比较昂贵,所以优化 Gas 变得很重要,优化 Gas 费用的方法有很多,这里我们不一一列举,本文只以以太坊地址中 0 字节降低 Gas 费来讨论,这是从 EVM 层面来优化 Gas。通过使用比平时更多的 0 字节(即汉明重量)的地址,并且在某些情况下,地址开头有更多的 0 字节,我们可以在许多类型的交易中节省汽油。

汉明重量是一串符号中非零符号的个数。全零符号的汉明重量为 0,1101 的汉明重量为 3。

在以太坊黄皮书附录 G 中可以看到,使用 0 字节时需要 4 Gas,而使用非 0 字节时需要 16 Gas:

零字节地址能节省Gas-深?理解以太坊Gas机制5

每次使用 0 字节代替非 0 字节时,就可以节省 16 个 Gas,因此,每次在 msg.data 中用一个 0 字节代替一个非 0 字节,都将给我们节省 12 个 Gas。在以太坊中,地址是由 0x 开头的 40 个随机字符的 16 进制字符串(20 个字节),当以 16 进制形式查看字节串时,由于每对数字(每个字符代表 16 个可能的数字之一)构成一个字节(162=28=256 位),所以单个 16 进制的 0,或相邻的 0 分布在两个不同的字节中,不会减少字节串的汉明重量,所以只有连续 2 个 16 进制的 0 才会减少汉明重量。0 字节的排序对所产生的 Gas 优化也没有影响(如地址 0x00a0009e638D25EFE5a894f6a36F42734477dECa 中有 2 个 0 字节)。

在 ERC20 的 transfer() 函数中,msg.sender 的汉明重量没有区别,而作为 transfer() 函数的一部分传入 msg.data 的 _to 地址参数就有区别。

使用 OpenZeppelin 的 StandardToken 作为参考实例。向一个没有 0 字节的地址(如:0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2)进行标准转账需要花费 35039 Gas,然而向一个有 4 个 0 字节的地址(如:0x00000000b011402777E34EFf44905BE85e3CdD01,即地址中有 4 对 0)进行转账只需要 34991 Gas,他们相差了 35039 – 34991=48Gas。而我们前面说到每次使用 0 字节代替非 0 字节时,可以节省 12 个 Gas(而在早先的以太坊版本中,甚至能节省高达 64 Gas),这里的 48 Gas 可以表示成 4×12=48Gas,和我们从黄皮书中得到的期望值一样。

零字节地址能节省Gas-深?理解以太坊Gas机制6零字节地址能节省Gas-深?理解以太坊Gas机制7

而 2 个 0 字节的地址 0x00a0009e638D25EFE5a894f6a36F42734477dECa 和上面 2 个差值分别都是 24 Gas,说明也是符合期望的。

零字节地址能节省Gas-深?理解以太坊Gas机制8

但是如果我们地址尾部存在 0 字节时,又容易被短地址进行攻击,所以以 0x00 开头的具有多个 0 字节的地址就成为了更好的选择。如果地址至少有 4 个前导 0 字节(即 8 个前导 0 的 16 进制编码格式),那么每个地址将只需要占用 16 个字节,这样两个地址就可以装入一个 32 字节包了。这样的优化不仅在于使用了 G_txdatazero 带来的 Gas 优化,而且由于不用从调用数据中读写更多的字节,我们还能省下更多的 Gas,所以向这样的地址转账时,不管该地址是合约地址还是普通账户地址,都能省下 5% 左右的费用。

由去中心化交易所聚合器 1inch.exchange 开发的 CHI GasToken 就是采用这样的原理,也有不少的普通账户地址使用前导 0 作为自己的地址。

零字节地址能节省Gas-深?理解以太坊Gas机制9

如何得到更多前导 0 开头的地址呢,这里就和大家看到的以太坊靓号生成是一样的,这里就不提供生成方法了(因为之前提供靓号生成服务的 Profanity 出现了漏洞)。当然了,想要得到的开头 0 越多,难度就越大,需要的时间也就会越久。

零字节地址能节省Gas-深?理解以太坊Gas机制10

? 92.47% 的机会在地址上找到 0 个 0 字节。

? 7.25% 的机会找到 1 个 0 字节。

? 0.27% 的机会找到 2 个 0 字节。

? 0.00635% 的机会找到 3 个 0 字节。

? 0.00000106% 的机会找到 4 个 0 字节。

后记

回到最开始的问题,以 0x00000000 开头的这个地址就是采用了?0 字节代替非 0 字节进行了Gas优化。优化 Gas 的方法有很多,这里我们以 EVM 底层视角研究了节省 Gas 的方法,通过研究我们可以得到一个结论:以太坊地址里面的 00 越多(这里需要注意是成对出现的 0,至于原因我们在第 4 节中已经提到),不管这个地址是合约地址还是普通地址,不管是转入地址还是转出地址,都能够节省不少的 Gas。

参考文章

《以太坊黄皮书》 2022-10-24

《深入理解以太坊 Gas 机制:从概念起源和 21 个 EIP 开始》

《On Efficient Ethereum Addresses》

文章来源于句子百科。

欧易安卓下载:http://www.567btc.com

欧易IOS下载:http://www.567btc.com

注册领取新手礼包!交易手续费返现:20%! 

免责声明: 文章源于会员发布,不作为任何投资建议

如有侵权请联系我们删除,本文链接:https://www.sws100.com/soft/171953.html

(0)
鸟叔鸟叔
上一篇 2023年 1月 14日
下一篇 2023年 1月 14日

相关推荐

  • oe交易所港版下载 香港oe交易所官方v3.12下载

    邀请好友注册并登录,获取价值高达60000元的数字货币盲盒。 oe交易所港版是全球著名的数字资产国际站之一,主要面向全球用户提供比特币、莱特币、以太币等数字资产的现货和衍生品交易服务。OKEX创立时,获得了世界顶级投资人TimDraper参与设立的创业工场百万美金的天使投资,TimDraper先生同时也是Hotmail、百度、特斯拉等世界顶级企业的投资人。 …

    2023年 1月 10日
  • 新型同尾号钓鱼 有这一习惯的用户更易上当

    邀请好友注册并登录,获取价值高达60000元的数字货币盲盒。 相信很多DeFi老玩家都对在去中心化钱包第一次转账的经历记忆犹新,担心转错链、转丢币,唯有在看到目标地址显示到账后,心里悬着的石头才得以落地。个人对行业的理解随着日益频繁的转账次数和增长的转账金额渐渐深入,常用地址的首尾号烂熟于心,地址末尾一扫而过,点击confirm不假思索。 然而,诈骗团伙正是…

    2023年 1月 14日
  • xrp币最新交易平台

    xrp币最新交易平台简介: xrp币最新交易平台欧易okex是一款专业的虚拟币币交易软件,不仅具有丰富的功能更有便捷的操作方式带来更加专业的交易平台,实时更新最新的行情资讯加上丰富的交流圈子等你来加入,更加直观的趋势图以及安全的交易方式等应有尽有。 xrp币最新交易平台功能: 自由选择交易方式,灵活配资方案 全球链圈币圈消息,快速了解行业动态 实时监控市场价…

    软件下载 2023年 1月 7日
  • ok交易所app下载_ok交易所app安卓版下载v6.0.42

    邀请好友注册并登录,获取价值高达60000元的数字货币盲盒。 ok交易所app为玩家们提供了大量的虚拟币交易功能,实现了多种虚拟币的交易自由,玩家们可以在这边体验最优质的客服系统,最坚固的软件安全系统,全方位保障用户的账号安全,放心大胆投资吧,欧易为玩家们提供最坚实的后盾。 欧易上线GMX (GMX),具体时间如下: 1.GMX充值:1月5日14:00 (H…

    2023年 1月 19日
  • 欧易交易软件

    欧易交易软件app是一款虚拟货币交易平台,提供比特币、以太坊等上百种数字币的交易及投资,包含了币币交易、法币交易、杠杆交易及合约交易等版块,用户可以通过这款软件实时了解最新的行情。 欧易交易软件app简介 欧易交易软件app是一款在国内非常知名的虚拟币交易平台,像最近比较流行的比特币、狗狗币、各种虚拟货币在欧易官方平台上都能支持交易,并且欧易最新版每天会给您…

    软件下载 2022年 12月 17日

联系我们

在线咨询: QQ交谈

邮件:k37759@foxmail.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信