广告

信标链创世的基本情况

一文详解信标链的创世

人生中能见证庞大的、分布式的多客户端区块链创世的机会是非常难得的。不久前的7月30日是以太坊1.0区块链创世的五周年——真正重大的创世事件很罕见且相隔甚远。

至于以太坊2.0,Medalla测试网已经在8月4日上线,这很可能是我们今年下半年唯一一次在以太坊2.0发布前的正式彩排。

Eth2的创世机制说来有点复杂,创世是一个区块链系统为自身注入生命的过程。我将用浅显易懂的语言尽可能准确地讲解它。至于真正技术上的说明,读者可以在Eth2 annotated spec上看我的注释。

在下文,“创世事件”指代信标链启动并开始处理证明和区块的确切时间。也是slot 0 epoch 0开始的时间。

(如果读者想看速览的话,可以直接跳到后文“创世的两种情况”部分)


验证者存款

首先,读者需要知道的一点背景知识是验证者在加入Eth2前需要将存款存进Eth1区块链上的合约里。对于每个Eth2的验证者来说,他们需要将32个ETH和其他一些数据发送到合约。

例如,读者可以通过Launchpad网站发送存款和数据到Medalla测试网。请记住Medalla现在在用Goerli测试网的ETH!不要发送主网的ETH到合约。当然,到了真正的信标链发布的时候,我们会用主网的ETH。

接下来,我们只关心有效存款:不少于32个ETH的单笔存款,或属于同一个验证者的、总计不少于32个ETH的多笔存款,为此需要额外的数据验证(加密签名)。任何无效或不足的存款都将在创世中被忽略不计。

信标节点

在创世前,在Eth2链上活跃的只有信标节点;在创世后,验证者会马上活跃起来。信标节点维持着系统的状态,并在点对点的网络里相互通信。

因此,在创世前,有大量的信标节点关注着以太坊1.0区块链,留意着存款合约上的有效存款。他们不需要24小时留意,因为Eth1的区块都被打上时间戳,因此节点可以在创世前的任何时间跟进最新情况。

现在,大家都知道Eth1的区块可以回滚,且可以改变主意,决定哪些交易是有效的。这就是为什么你在交易所转入ETH时需要等待30个区块的时间。回滚的范围通常非常小——大约一到两个区块;但一旦遇到网络攻击,回滚的范围可以变很大。为了尽量避免在Eth2上出现这种情况,我们在同步Eth1链上数据时非常谨慎地保持14 * 1024秒的延迟,大概是4小时。我把这称为Eth1的同步距离 (Eth1 follow distance)

什么时候?谁?

关于创世的两个问题“什么时候?”和“谁?”:什么时候开始,和谁会在创世块验证者大军里。这两个问题的答案定义着信标链的创世状态,所有其他的状态都由此衍生开来。

大致的过程如下:

  1. 关注Eth1区块链上的存款情况

  2. 当经历了足够长的时间和存款达到一定数量时,创建创世状态

  3. 两天后,在创世时间启动区块链

在第2步,我们在寻找Eth1上第一个区块时需要特别注意两点:

  • 是否有足够的存款;

  • 时间是否太早。

符合这两个条件的第一个区块将被设为创世状态。

时间和角色的受以下三个关键参数设置的影响:

  • MIN_GENESIS_TIME 是创世事件可以发生的最早时间。对Medalla来说,就是1596546000 Unix time——2020年8月4日UTC时间13:00:00,采用RFC2822规范。

  • GENESIS_DELAY 是172800秒,48小时整。这是创建创世状态和区块链与创世事件启动之间的时间间隔。这段延迟是为了让客户端团队将创世状态写进他们的信标节点里,这样即使他们不运行验证者节点也不再需要关注Eth1的区块链。这也为举办一般的创世事件直播和聚会活动预留时间。

  • MIN_GENESIS_ACTIVE_VALIDATOR_COUNT 是在创建创世状态前我们在Eth1的存款合约里所需的最低有效验证者数量。在Medalla测试网(和主网),这个参数是16384个验证者。

创世的两种情况

创世状态所基于的第一个Eth1区块需要满足以下两个条件:

  • 至少有16384 (MIN_GENESIS_ACTIVE_

VALIDATOR_COUNT) 个验证者已经在这个或之前的区块上进行了注册;以及

  • 它的时间戳不会太早 (不早于MIN_GENESIS_TIME - GENESIS_DELAY这段时间)。

根据这两个要求得到满足的顺序,创世过程会以下面两种情况进行:

1.存款数先得到满足

在这种情况下,条件1先得到满足。我们在最早创世时间前收到的足够的存款。

Medalla测试网在MIN_GENESIS_TIME - GENESIS_DELAY间的时间点是周日8月2日UTC 1300。

我们的启动区块是这个时间后挖到的第一个Eth1上的区块,也就是在13:00:05挖到的(1pm后的5秒)。

如果截止到该区块存款合约收到的有效存款达到或超过16384笔,那么至今收到的所有存款都会包含在创世状态里。因此,验证者数量可能会远超出16384(在Altona测试网上,我们将MIN_GENESIS_ACTIVE_VALIDATOR_COUNT设为640,但结果有685个创世验证者)

这个Eth1区块启动创世状态的运算,而Medalla的创世事件将在区块时间戳的48小时整后开始。在这个例子里,就是8月4日周二的13:00:05。

红色区块是满足两个条件的第一个Eth1区块

请注意,由于Eth同步距离,我们直到4小时后才真正知道创世状态。也就是说,在这种情况下,我们将在8月2日周日UTC1700知道Medalla的创世状态。

总结

如果存款数额首先满足要求,那么创世事件会在最早创世时间后几秒启动。创世状态包含这个时间点48小时以前的所有注册了的验证者。

2.时间戳满足条件早于存款数

这种情况在条件2先得到满足的时候发生。存款数增长缓慢,且没有在预定时间内达到最低有效数额。

在这种情况下,打包第16384笔存款的Eth1区块成为启动区块。我们假设这个区块是在8月5日周三UTC 12:34:56被挖到的。

现在,区块状态将包含16384个验证者和在那个区块里任何其他有效的存款。因此,如果那个区块包含多笔存款的话,那么将会有比最低存款数更多的验证者包含在内。

创世时间将会是该区块的时间戳加48小时。在这个例子里,就是8月7日周五UTC 12:34:56。

红色的区块是满足两个要求的第一个Eth区块

同样,由于Eth1同步距离,直到这个Eth1区块被挖出的4小时后我们才知道创世状态或创世时间。

总结

如果存款增长慢,在包含第16384笔存款的Eth1区块被挖出48小时,创世事件会启动。创世状态包含16834个验证者,加上在同一个Eth 1区块里的其他一些验证者。

结论

文章写到这里,大家是不是已经了解了信标链创世的基本情况??

如果你没赶上Medalla创世状态的敲定,那么你的验证者将会按照存款时间顺序进入排队队伍,并在创世后被慢慢安排到验证者集里。排队可能会花上几个小时或几天的时间。

期待在Medalla上见到你们!

原文链接:https://hackmd.io/@benjaminion/genesis

作者 | Ben Edgington

24小时热点

区块链和NFT有可能实现非殖民化吗?

一组国际学者讨论了目前的NFT进展障碍。 Luk ...

17407

Wow Yeah沃野

SUN币(SUN(new))今日行情价格?

SUN(new)币是以BUS公链为底层的新一代智能数字货币, ...

10745

安银

恐慌下的NFT市场现状

FTX事件堪称加密世界的“雷曼时刻”。事件的发展速度和影响范 ...

17405

OKLink 欧科云链
广告

热点专题

NFT艺术品到底是什么?

Beeple,“EVERYDAYS: THE FIRST 5 ...

2292440

Opera House

最全的NFT发展史

当我们理解一个新生事物,必须要首先了解其起源,通过对其源头以 ...

1734454

iBox

“华英会”诈骗圈钱5000亿!崩盘后将会凄惨无比

“华英会”崩盘的预警已多次发出,尽管尚未正式宣布崩盘,但大家 ...

1251453

Magic Eden

什么是IDO?这种模式会带来怎样的影响?

要理解IDO(Initial DeFi Offering)初 ...

1134135

Bitstamp交易所

有黑客采取新型 USDT 假充值手法

根据慢雾区情报,有黑客采取新型 USDT 假充值手法,黑客采 ...

988322

区块链博客

4种利用永续合约资金费率套利的策略

下文将介绍在保持市场中立的条件下,如何从永续掉期资金费率中套 ...

883562

DCG区块链孵化器

国内NFT平台是怎么赚钱的?

2021年被称为NFT的“元年”,互联网巨头、各大企业、艺术 ...

788991

CoinBene满币网

链圈百科:韩国政府机构组织图

一、行政院 韩国行政院是一个由政府的行政机构组成的中央政府 ...

757895

BitKeep钱包

元宇宙平台合法吗

现在,元宇宙平台备受热捧,但有人质疑其合法性。在此,我们将对 ...

699791

T网

宝二爷郭宏才的乘风破浪之旅

10年后的比特币会涨到10万美元吗?宝二爷说过:“先吹吹牛B ...

695880

QuillAudits