来源 | Attestant
作者 | Jim McDonald
Eth2将使用Proof of Stake(权益证明)来维护网络安全,但实行PoS需要每个活跃的参与者(“验证者”)拥有一定资产来进行质押。如果持有资产的是eth1账户,那么这些资产需要转移到eth2的验证者处才能进行质押。
验证者的职责主要是提议区块并证明(attest)其他区块,而质押者(staker)则提供资金进行质押。验证者和质押者的角色可以是相同或不同的实体,最佳实践建议将这两者区分开以最大程度保证资金的安全性。
将资金从eth1转移到eth2以及定义质押者和验证者的过程称为Staking,第一步是在eth1上发送质押存款交易(staking deposit transaction)。质押存款交易包含的细节信息有质押者身份、验证者身份等等,并被统称为存款协议(deposit agreement)。本文将详细探析抵押存款,并阐释在eth1上提交ETH给eth2验证者的过程。
OPNX:OX流动性池已上线跨链桥Stargate:7月20日消息,加密索赔和交易平台OPNX在推特上宣布,其平台币OX流动性池现已在基于LayerZero的跨链桥Stargate上线,支持用户在以太坊、BNB Chain、Polygon和Arbitrum之间桥接OX。[2023/7/20 11:06:40]
1 创建存款协议
存款协议将对质押者和验证者进行定义,并构成存款程序所需交易的基础。
图1:存款协议与其参与者
2 验证者身份证明
要确保将存款交给了正确的验证者,就需要验证者身份证明。验证者通过将其公钥添加到协议中来证明自己的身份:
波卡平行链Astar Network宣布推出Build2Earn dApp质押计划,激励开发人员要构建dApp:官方消息,波卡平行链Astar Network宣布推出Build2Earn dApp质押计划,激励开发人员要构建dApp。dApp质押者可以将他们的Astar和Shiden代币提名给他们想要支持的dApp,在Astar上,只要有dApp被提名,开发者就可以获得基本收入。dApp质押者获得区块奖励,并通过减少代币流通增加代币价值。[2022/4/11 14:18:16]
图2:验证者身份证明
注意,由于是在eth2中对验证者进行身份证明,因此使用的是eth2公钥而非eth1公钥。
3 质押金额
Cobo安全团队详解Stargate漏洞:可能导致伪造的交易receipt通过MPT验证:3月29日消息,Cobo安全团队撰文对Stargate跨链桥底层协议LayerZero的安全漏洞进行分析,称原始漏洞代码在进行MPT 验证时,没有限制pointer 在proofBytes 长度内,这个漏洞有可能让攻击者伪造hashRoot,导致伪造的交易receipt 可以通过MPT 验证。最终可造成的后果是,在预言机完全可信的前提下,Relayer 仍可以单方面通过伪造receipt 数据的方式来实现对跨链协议的攻击。
值得注意的是,此次爆出漏洞的代码是LayerZero协议中最核心的MPT交易验证部分的代码,是整个LayerZero及上层协议(例如Stargate)正常运作的基石。Cobo安全团队还表示,LayerZero项目的关键合约目前大都还被EOA控制,没有采用多签机制或者时间锁机制。如果这些特权EOA的私钥一旦泄漏,也可能会导致所有上层协议的资产受到影响。[2022/3/29 14:24:49]
其次,存款协议中需要包含质押金额,以确保双方(以及双方网络)就质押金额达成一致。质押者可以将其期望质押的金额添加到协议中:
StarkWare在测试网发布Alpha 0.7.0版,添加合约可升级性和事件发出等功能:1月19日消息,零知识证明技术开发公司StarkWare宣布在Goerli测试网上发布StarkNet Alpha 0.7.0版,更新内容包括合约可升级性(完全支持OpenZeppelin的代理升级模式),新增允许合约访问区块号和区块时间戳的两个新系统调用,以及支持定义和发出事件(允许公开执行信息以供链下应用使用)等。
StarkWare表示,新版本将很快在主网上发布,另外,初始费用机制支持会在未来几周内作为StarkNet的子版本发布。[2022/1/19 8:59:24]
图3:质押金额
动态 | Konstantin Ignatov针对OneCoin案的多项指控认罪:OneCoin创始人Ruja Ignatova的兄弟Konstantin Ignato针对OneCoin案的多项指控认罪,其罪名包括和欺诈。Ignatov3月份在洛杉矶国际机场被捕,根据认罪协议的条款,Ignatov将不会因其在OneCoin中的角色而面临进一步的刑事指控,除非出现任何刑事税收违规行为。(BBC)[2019/11/14]
4 提款身份证明
提款身份证明用于提供验证者提出存款的账户。质押者可以通过向协议中添加可操纵的公钥来识别提款账户身份:
1. 公钥经由哈希以压缩其大小;
2. 哈希字符串的首字节由类型标识符代替(目前标识符为“0”)
图4:提款身份证明
注意,提款身份证明使用的也是eth2的公钥。因此,其必须直接由质押者提供,而无法像eth1智能合约通常那样从交易签名中恢复。
还要注意的是,如果验证者和质押者是同一实体,则应使用不同的密钥进行验证者身份识别和提款身份识别。如此以来提款密钥可以安全地离线保存,直到质押者做好提款准备。
5 验证者授权
要表明验证者同意遵守协议条款进行验证,则需要验证者授权。验证者要使用与验证者身份证明相同的密钥对协议条款进行签名来进行授权,并将该签名添加到协议中:
图5:验证者授权
6 提交存款协议
此时,存款协议中包含四条信息:验证者身份证明、质押金额、提款身份证明和验证者授权。如果质押者想继续完成存款,还需要将包含该协议和资金的交易发送给eth1存款合约(deposit contract):
图6:提交存款协议
此处有两点需要注意:
1. 质押者没有在存款协议中明确授权,而是在交易广播之前将其签名添加到交易中提供所需授权;
2. 交易必须附带存款协议中所涉及的ETH确切金额,任何其他金额都将导致交易被存款合约拒绝。
接着由以太坊存款合约(deposit contract)接收并处理交易,如果一切正常进行,则存款合约将创建一个存款收据事件,收据包含存款协议中的所有数据,并且表示存款合约已经接收存款协议和所质押的ETH。
7 激活存款协议
与前序步骤不同,激活合约主要进行在eth2中。
Eth2会跟踪eth1的更新以获取存款收据。每个eth2节点在其提议的区块中都包含有最新的存款收据。随着这些区块的最终确认,存款就会成为eth2整体状态的一部分。存款收据将作为验证者状态存储在eth2中。
同样,验证者也会跟踪eth2中的更新以获知验证者状态的变化。当观察到带有公钥的验证者状态条目时,说明该存款已在eth1上完成,且已经得到了eth2的识别,剩下的就是证明工作了。
图7:激活存款协议
全程
结束提交和激活步骤之后,就完成了在eth2中质押eth1资产的全部过程:
图8:质押存款过程
注:尽管在理论过程中没有说明,但随着安全性的提升,Staking的过程会存在许多延迟。譬如在eth2中,在获取到存款收据事件和将该信息添加到验证者状态之间会存在一定的延迟,这样做是为了确保eth1网络中不会发生区块链重组而导致存款无效。
原文链接:https://www.attestant.io/posts/understanding-ethereum-staking-deposits/
转载请注明:ECN以太坊中国
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。