timezone |
---|
Asia/Shanghai |
- 自我介绍:
我是EthStorage的研究员, 主要研究ZK和Layer2欺诈证明等
- 你认为你会完成本次残酷学习吗?
Yes
Week 1: Protocol Intro
- 以太坊升级主要通过EIP提案
- 执行层和共识层规范,采用python版本更容易理解
- The Merge升级之后包括执行层和共识层
-
执行层:
- EVM执行交易;采用Merkle Patricia Trie存储账户、合约代码等状态数据,;执行层节点之间通讯采用JSON-RPC,;应用层采用JSON-RPC API与执行层交互
- 有多个客户端实现: go_ethereum, reth
-
共识层:
- LMD GHOST (Latest Message Driven - Greedy Heaviest Observed SubTree)作为fork choice rule, 它决定链的最新规范区块;共识层节点有另一个P2P网络来通讯;RANDAO
- 有多个客户端: Prysm, lighthouse等
-
执行层和共识层通过Engine API来通讯
-
- 社区讨论:
- Dev calls
- 论坛: @EthMagicians, @ethresearchbot
- Discord: Ethereum R&D discord(https://discord.com/invite/qGpsxSA)
- Week 1相关资料
Week 1的视频基本看完了, Week2的视频复习了一下。 比较感兴趣的地方在于Merkle tree的更高性能实现,看了下Layer0和MegaETH这方面的解读. 此外对于节点间如何进行P2P通讯也很感兴趣, 打算用python或者go实现一个最简单的版本。
学习Randao 以太坊beacon chain公平选取proposer, committee等都需要随机数。以太坊采用RANDAO机制来产生随机数,它能够累加来自参与方的随机性,每次出块proposal都会给RANDAO值混入一部分随机性(randao_reveal)。
这个随机数需要足够的公平,不能让proposal任意选取,否则就会给他一定的优势用来作恶。以太坊采用BLS签名作为RANDAO贡献的随机数,BLS有几个特性非常适合作为随机数:
- 签名值可以认为是均匀分布的
- 签名值对于其他验证者而言是无法预测的(由于他们不知道proposal的私钥),但是验证者很容易根据proposal的公钥验证签名
RANDAO更新的算法如下图:
<title>Diagram illustrating updating the RANDAO.</title>
- 关于RANDAO的安全性分析,可以详见Ben Edgington的文章。文中提到还可以结合VRF,让proposer在决定自己提交的值之前确定是否要提交randao_reveal,以消除RANDAO的机会主义偏差。 自己写了一个简单的[RANDAO python代码]
- 还可以参考EthStorage很好的使用RANDAO作为随机源的例子,在链上采用blockhash+proof验证randao