织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 竞争币 > 以太坊

开发者必读:代码解读成为以太坊 2.0 验证人,探索信标链激励机制 (5)

时间:2020-06-26 09:20来源:未知 作者:admin 点击:
新建验证者的设置如下: def get_validator_from_deposit(state: BeaconState, deposit: Deposit) - Validator: amount = deposit.data.amount # 设置有效余额 effective_balance = min(amount - a

新建验证者的设置如下:

def get_validator_from_deposit(state: BeaconState, deposit: Deposit) -> Validator: amount = deposit.data.amount # 设置有效余额 effective_balance = min(amount - amount % EFFECTIVE_BALANCE_INCREMENT, MAX_EFFECTIVE_BALANCE) # 设置验证者信息和生命周期相关参数 return Validator( pubkey=deposit.data.pubkey, withdrawal_credentials=deposit.data.withdrawal_credentials, activation_eligibility_epoch=FAR_FUTURE_EPOCH, activation_epoch=FAR_FUTURE_EPOCH, exit_epoch=FAR_FUTURE_EPOCH, withdrawable_epoch=FAR_FUTURE_EPOCH, effective_balance=effective_balance, )

(向左滑动,查看完整代码)

验证者生命周期相关参数均设置为 FAR_FUTURE_EPOCH。

之后再处理这些新注册的验证者:

def process_registry_updates(state: BeaconState) -> None: # Process activation eligibility and ejections for index, validator in enumerate(state.validators): # 可否进入等待队列 if is_eligible_for_activation_queue(validator): validator.activation_eligibility_epoch = get_current_epoch(state) + 1 # 可否成为活跃的验证者 if is_active_validator(validator, get_current_epoch(state)) and validator.effective_balance <= EJECTION_BALANCE: initiate_validator_exit(state, ValidatorIndex(index)) # 限制每周期成为验证者数量 # Queue validators eligible for activation and not yet dequeued for activation 15. activation_queue = sorted([ index for index, validator in enumerate(state.validators) if is_eligible_for_activation(state, validator) # Order by the sequence of activation_eligibility_epoch setting and then index ], key=lambda index: (state.validators[index].activation_eligibility_epoch, index)) # Dequeued validators for activation up to churn limit for index in activation_queue[:get_validator_churn_limit(state)]: validator = state.validators[index] validator.activation_epoch = compute_activation_exit_epoch(get_current_epoch(state))

(向左滑动,查看完整代码)

在处理新增加的验证者时,会按照一定比例设置一个等待队列,这会限制同一时间可以增加的新的验证者数量,也能够防止一瞬间涌入的大批新的验证者对于网络安全和协议的影响,保证一定的稳定和安全性。

知识点

密钥对管理方案

验证者密钥对可以是随机生成的两对 BLS 密钥对,但若要创建多个验证人,密钥对数量过多则会难于管理。一个可选的解决方案是通过一个种子密钥来衍生出一对对相关的密钥对,只记录这个种子密钥即可。也可以通过将种子密钥映射成助记词来方便记录和保存。以太坊提案 EIP2333 和 EIP2334 给出了具体的规范说明。密钥衍生示意图参考如下: (责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容