权益证明以太坊中的密钥机制解析

·

以太坊采用公钥-私钥密码学来保障用户资产安全。公钥作为以太坊地址的基础,公开可见并充当唯一标识符;私钥(或称“秘密密钥”)则仅供账户所有者持有,用于对交易和数据进行“签名”,以密码学方式证明持有者批准了特定私钥的某项操作。

以太坊密钥通过椭圆曲线密码学生成。然而,当以太坊从工作量证明(PoW)转向权益证明(PoS)时,新增了一种密钥类型。原有的椭圆曲线密钥仍保持原有功能,但用户需要新型密钥来参与权益证明,通过质押ETH并运行验证节点。

这种新型密钥采用Boneh-Lynn-Shacham(BLS)签名方案。BLS支持高效签名聚合,并能反向推导出聚合前的单个验证者密钥,非常适合管理验证者之间的操作。

验证者密钥的两种类型

在转向权益证明之前,以太坊用户仅需一个基于椭圆曲线的私钥来管理资金。随着权益证明的引入,希望成为独立质押者的用户还需具备验证者密钥提款密钥

验证者密钥

验证者签名密钥包含两个部分:

验证者私钥用于签署链上操作,如区块提议和证明。因此,这些密钥必须存储在热钱包中。

这种灵活性使得验证者签名密钥能快速在不同设备间迁移,但一旦丢失或被盗,攻击者可能通过以下方式实施恶意行为:

验证者公钥在用户向质押存款合约存入ETH时包含在交易数据中,称为存款数据,用以标识验证者。

提款凭证

每个验证者都有一个称为提款凭证的属性。这是一个32字节字段,以0x00(代表BLS提款凭证)或0x01(指向执行地址的凭证)开头。

持有0x00BLS密钥的验证者必须更新凭证以指向执行地址,才能激活超额余额支付或全额提款。这可通过在初始密钥生成时在存款数据中提供执行地址实现,后续使用提款密钥签署并广播BLSToExecutionChange消息来完成。

提款密钥

如果未在初始存款时设置提款凭证,提款密钥将用于更新凭证以指向执行地址,从而启动超额余额支付并允许用户全额提取质押的ETH。

与验证者密钥类似,提款密钥也包含两个部分:

在将提款凭证更新为0x01类型前丢失此密钥,意味着失去对验证者余额的访问权。验证者仍可签署证明和区块,但这些操作 incentive 几乎为零。

将验证者密钥与以太坊账户密钥分离,允许单个用户运行多个验证者。

注意:目前退出质押职责并提取验证者余额需使用验证者密钥签署自愿退出消息(VEM)。但EIP-7002提案允许未来用户通过提款密钥签署退出消息来触发验证者退出并提取余额,这将降低信任假设,使委托ETH给质押即服务提供商的质押者保持资金控制权。

从助记词派生密钥

如果每质押32ETH都需要一套全新的独立密钥,密钥管理将变得繁琐,尤其对运行多个验证者的用户而言。相反,多个验证者密钥可从单个共同秘密派生,存储该秘密即可访问多个验证者密钥。

助记词和路径是用户访问钱包时常遇到的重要功能。助记词是作为私钥初始种子的单词序列,结合额外数据生成称为“主密钥”的哈希,可视作树的根。通过分层路径可派生从此根分出的分支,子节点作为父节点哈希及其在树中索引的组合存在。详见基于助记词的密钥生成标准BIP-32BIP-19

路径结构如下(硬件钱包用户会熟悉):

master_key / purpose / coin_type / account / change / address_index

斜杠分隔私钥组件,使尽可能多的验证者附加到单个助记词短语,因为树根可共享,差异发生在分支。用户可从助记词短语派生任意数量的密钥

[m] - [m/0] - [m/0/0] - [m/0/1]
    \ [m/1] - [m/1/0] - [m/1/1]
    \ [m/2] - [m/2/0] - [m/2/1]

每个分支由/分隔,如m/2表示从主密钥跟随分支2。下图示意单个助记词短语存储三个提款密钥,每个关联两个验证者。

密钥管理的最佳实践

有效的密钥管理是保障质押资产安全的核心。以下策略可帮助用户降低风险:

👉 获取高级密钥管理工具

常见问题

问:BLS密钥与椭圆曲线密钥有何区别?
答:BLS密钥支持签名聚合,优化权益证明共识效率;椭圆曲线密钥用于账户交易签名,两者用途和算法不同。

问:丢失验证者私钥会怎样?
答:攻击者可能恶意操作导致罚没或强制退出,需立即使用提款密钥更新凭证并转移资金。

问:提款凭证必须更新吗?
答:是的,0x00类型需更新为0x01才能提款,否则质押ETH无法取出。

问:一个助记词可管理多少验证者?
答:理论上无限,通过派生路径生成多个密钥,但需注意安全性和管理复杂度。

问:EIP-7002将带来什么变化?
答:允许提款密钥触发退出,增强委托质押用户控制力,减少对服务提供商的依赖。

通过理解密钥类型、功能及管理策略,用户可更安全地参与以太坊权益证明,保障资产不受损失。