您当前的位置: 首页 >  以太坊

mutourend

暂无认证

  • 1浏览

    0关注

    661博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

以太坊PoW light client Ethash proof

mutourend 发布时间:2022-02-21 18:47:57 ,浏览量:1

1. 引言

相关代码实现有:

  • https://github.com/lukepark327/ethash-verifiable-relay(Solidity)【以太坊】
  • https://github.com/near/rainbow-bridge-rs/blob/master/eth-client/src/lib.rs(Rust)【NEAR链上】
  • https://github.com/aurora-is-near/rainbow-bridge/tree/master/eth2near/ethashproof(Go)【NEAR链上】
  • https://github.com/SmartPool/smartpool-client/tree/develop/ethereum/ethash(Go)【EOS链上】
  • https://github.com/harmony-one/horizon/tree/main/contracts/ethash(Solidity)【Harmony链上】
  • https://github.com/Snowfork/snowbridge/tree/main/parachain/pallets/ethereum-light-client(Solidity)【波卡链上】

为了降低Asic算力冲击,基于Asic芯片对内存的访问能力不足,以太坊设计了基于PoW的Ethash共识算法,在该算法中,增加了内存访问的需求。

2. Ethash基本原理

Ethash中包含2个数据集:

  • 1)小:16MB的cache
  • 2)大:1GB的dataset(DAG)。通常需要数小时来生成,建议将其在内存存储。

设计一大一小的目的是:大的数据集是根据小的cache计算而来的,miner要想更快的命中目标,只能保存大的dataset,以避免重复计算耽误时间,而轻节点只需保存小的cache即可验证。 在这里插入图片描述

Ethash算法的基本流程为:

  • 1)存在种子seed:可扫描迄今为止的每个区块头计算获得。
  • 2)基于该种子seed,可计算16MB的cache,light client会存储这16MB cache。
  • 3)基于16MB cache,可生成1GB dataset,该dataset中每个item的属性仅取决于cache中的一小部分items。全节点和miners需要存储这1GB的dataset。该dataset会随着时间线性增长。
  • 4)mining算法中包括 从1GB dataset中随机抓取slices 然后再一起hash。验证使用cache仅需要很少的内存就可重新生成该dataset中的特定pieces,因此你仅需要存储cache。

大的dataset每3万个区块更新一次,因此,miner的大部分精力在于读取该dataset,而不是修改该dataset。

参考资料

[1] 以太坊中基于Ethash共识算法详解 [2] Ethash DAG [3] Ethash

关注
打赏
1664532908
查看更多评论
立即登录/注册

微信扫码登录

0.0373s