http://www.7klian.com

DOT 持币用户必看:Controller 和 Stash 账户的浸染

“Controller” 和 “Stash” 密钥
Polkadot 中的账户签名和密钥:Web3 研究员 Jeff Burdges 在论坛上的原始帖子。https://forum.web3.foundation/t/account-signatures-and-keys-in-polkadot/70
选择利用 Schnorr 签名而不是利用 ECDSA 并不那么简朴。正如 Jeff Burdges(一位 Web3 研究员)在论坛上颁发的关于以下话题的文章:https://forum.web3.foundation/t/account-signatures-and-keys-in-polkadot/70/2
在未来,我们打算为 GRANDPA 机制利用 BLS 密钥,因为它答允更有效的签名聚合。
一些配景:扭曲的 Edward’s Curve25519 上的 Schnorr 签名被认为是安详的,可是 Ed25519 并不是完全没有缺陷的。最值得留意的是,Monero 和所有其他加密钱币都容易受到双重支出的进攻,这大概会导致未被发明的无限通胀。
利用 Schnorr 签名的 Schnorrkel / Ristretto sr25519 变体的加密算法
对付帐户密钥,我们选择 Schnorr 签名而不是 ECDSA 签名有一个牺牲:两个签名都需要 64 个字节,可是只有 ECDSA 签名通报它们的公钥。有一些过期的 Schnorr 变体支持从签名中规复公钥,但它们粉碎了重要的成果,如分层确定性密钥派生。因此,Schnorr 签名凡是需要特另外 32 字节作为公钥。
sr25519 算法是什么?它是从那边来的?
Boneh-Lynn-Shacham(BLS)签名具有签名速度慢、验证速度慢、需要迟钝且不太安详的配对友好曲线,而且趋向于危险的延展性。然而,BLS 答允一系列差异的签名聚合选项,远远高出任何其他已知的签名方案,这使得 BLS 成为共鸣算法投票和阈值签名的首选方案。
最初为 Polkadot 和 Substrate 链实现的密钥推导暗码是 ed25519,这是在 Edward’s Curve 25519 (由于曲线方程的参数而得名) 上实现的 Schnorr 签名算法。
利用 Schnorr 签名的普通 ed25519 加密算法实现
波卡中是否利用 BLS 签名?
Session keys 是验证人必需保持在线才气执行网络操纵的热密钥(hot keys)。Session 密钥凡是在客户端中生成,固然他们不必然要生成。它们不是用来节制资金的,只用于有目标的用途。它们可以按期变动,你的 controller 账户只需要通过签署一个 session 公钥来建设证书,并通过一个外部 extrinsic 广播该证书就好了。
为什么选择 ed25519 而不是 secp25K1 ?
在大大都环境下,stash 密钥账户是一个冷钱包,存在于一个安详的、由多层硬件掩护的一张纸上。它应该很少(假如有的话)袒露在互联网上或用于提交  extrinsics 外部信息。这把钥匙是用来存放大量资金的。它可以被认为是银行的储备账户,抱负环境下只有在紧张环境下才可以利用。可能,一个更贴切的比喻是把它想象成埋藏的宝藏,藏在某个随机的岛屿上,只有最初藏它的海盗知道。
如 BLS 库自述中所述,
BIP32-Ed25519 上的密钥发明进攻:具体说明 BIP32-Ed25519 潜在进攻的一篇论坛帖子。转变为 sr25519 变体的念头。https://forum.web3.foundation/t/key-recovery-attack-on-bip32-ed25519/44
BABE 需要适合在可验证随机函数中利用的密钥以及数字签名。Sr25519 密钥具有这两种成果,因此用于 BABE 机制。
我在线:sr25519

公钥和私钥是大大都加密系统很重要的对象,也是使像 Polkadot 这样的得以存在的重要构成部门。
还没有,但他们会的。BLS 签名答允更有效的签名聚合。因为 GRANDPA 验证人凡是签署同一件事(譬喻,一个块),所以聚合它们是有意义的,这也可以优化其他协议。
资源
在 Polkadot 中利用的 Schnorr 签名的实现,通过对 Curve25519 的 Ristretto 压缩实现 Schnorrkel 协议,称为 sr25519。
Session 密钥
常见问题解答
但最终,利用 Schnorr 签名的长处大于衡量,将来的优化大概会办理上面引用的低效问题。
GRANDPA 机制:ed25519
平行链:sr25519
当我们谈论 “controller” 和 “stash” 密钥时,我们凡是在运行验证人或提名 DOT 的语境中接头它们,但它们是所有用户都需要知道的有用观念。这两个密钥都是帐户密钥的范例。它们的区别在于它们的利用场景,而不是暗码差别。上面部门中提到的所有信息都合用于这些密钥。建设新的 controller 可能 stash 密钥时,帐户密钥支持的所有加密算法都是可以选择的。
尽量 Schnorr 签名答允签名聚合,但 BLS 签名在某些样式中更有效。因此,它将是 Polkadot 网络上的验证人将利用的会话密钥之一,而且对 GRANDPA 最终性小东西至关重要。
大大都,包罗比特币和以太坊,今朝在 secp256k1 曲线上利用 ECDSA 签名。这种曲线被认为比 NIST 曲线更安详,后者大概有国度安详局的后门。Curve25519 被认为大概比这个更安详,而且可以更容易地实现 Schnorr 签名。最近的专利到期使它成为波卡的首选。
controller 密钥是一个半在线的密钥,将由
用户直接节制,用于提比武动 extrinsics 外部文件。对付验证人或提名流,这意味着 controller 密钥将用于开始或遏制验证或提名。Controller 的密钥应该有一些 DOT 用来付出用度,但它们不该该用来生存巨额金额或用来做恒久的代币储备。因为他们会相对频繁地打仗互联网,所以应该小心看待,偶然可以改换一个新的账户。
Polkadot 有四种 session keys:
同时,sr25519 的加密算法使实现更巨大的协议更安详。出格是,sr25519 自带了很多协议的安详版本,如生态系统中常见的 HDKD 协议。
BABE 机制:sr25519
由于 stash 账户处于离线状态,因此必需将其资金绑定到特定的 controller 账户。对付非支出行为,controller 账户有 stash 账户资金的支持。譬喻,在提名、staking 或投票中,controller 可以用 stash 的 weight 来暗示其偏好。它将永远无法实际转移或领取 stash 账户中的资金。可是,假如有人获取了你的 controller 密钥,他们大概会将其用于举办存在被 slash 的行为,因此你仍然应该掩护它并按期变动。
Ristretto 小组的 Decaf 论文在 Rust 中获得了扩展和实现,包罗帮助因子 8  曲线,如Curve25519,这使得 Edward 曲线上的 Schnorr 签名越发安详。
账户密钥
很利便,Mike Hamburg 的 Decaf 论文(https://www.shiftleft.org/papers/decaf/index.xhtml)为办理这个潜在的缺陷提供了一条大概的途径。Decaf 根基上是一种操作扭曲的 Edward 曲线帮助因子并对其举办数学改变的要领,对机能的影响很小且增加安详性。 
这些裂痕是由于 Ed25519 中的一个特性造成的,它被称为 8 的帮助因子。曲线的辅因子是一个深奥的细节,它大概会对更巨大协议的安详实现发生可骇的效果。
Schnorr 签名可以抵挡量子计较吗?https://bitcoin.stackexchange.com/questions/57965/are-schnorr-signatures-quantum-computer-resistant/57977#57977

我们估量在可预见的将来,ed25519 将获得商用 HSMs 更好的支持。
Web3 基金会已经实现了一个 Schnorr 签名库,在 Schnorrkel 存储库中利用了更安详的 Ristretto 压缩曲线 25519。Schnorrkel 在曲线压缩的基本上实现了相关的协议,,如 HDKD、MuSig 和可验证随机函数(VRF)。它还包罗各类小的改造,譬喻散列方案选通,理论上可以处理惩罚大量的数据,只需超过 Wasm 界线一次挪用。
对付简朴签名,ed25519 和 sr25519 在安详性上没有区别。
帐户密钥是用来节制资金的密钥。它们可以是:

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读