ZK Rollup 加强了以太坊的可扩展性,同时安详性仍保持在 L1 级别。与新手用户差异,ZK Rollup 的用户很大概已经拥有一个以太坊账户。为什么仍需要一个账户密钥?主要有三个原因。
1https://medium.com/starkware/looprings-frontend-vulnerability-explained-106df1aa17db
风险断绝链下签名带来了新的安详风险。假如以太坊密钥用于 ZK Rollup,则账户密钥的泄漏意味着以太坊帐户不再安详。利用差异的账户密钥可以断绝风险,纵然账户密钥被盗或丢失,以太坊密钥也可以保持安详。
利用以太坊账户签名简朴来说,我们可以通过指定签名从私钥生成账户密钥。如 Vitalik[3] 所述,account_key = ecdsa_sign (private_key,「 42」)。可利用有意义的动静取代「 42」,以告诫用户他在做什么,譬喻「签署此动静以登录 xxx。」。假如以太坊账户是合约账户,则将利用 EIP-1271 来查抄有效性。
参考资料:
以太坊二层账户密钥可以兼容智能合约、断绝账户风险,而且对 SNARK 友好,相识一下它的生成要领。
幸运的是,事件并未造成损失。然而,关于弱私钥的裂痕频频产生,由于利用不妥而造成大量损失。据 WEIRD2,由于利用「脑钱包」(一种不正确的要领来生成私钥),高出 2800 个比特币和 40,000 个以太币被盗。但在 Loopring 事件中环境略有差异。呈现风险的是用于 ZK Rollup 的新密钥,而不是以太坊账户的密钥,可能如 Starkware 所说,这是一个账户密钥。以太坊密钥仍然处于安详状态。为什么需要账户密钥而不是利用以太坊密钥?如何安详地生成和生存它?
[3]https://twitter.com/VitalikButerin/status/1258382081417187331
SNARK 友好账户密钥需要对 SNARK 友好。与以太坊密钥差异,它利用差异的椭圆曲线(譬喻 Ed25519,代替 secp256k1)。凡是,EdDSA 密钥用于签署链下请求,因为它对 SNARK 更为友好。可是,因为私钥的长度沟通,仍然可以利用与以太坊密钥沟通的私钥,但显然对应的公钥是差异的。
[5]https://eprint.iacr.org/2014/406.pdf
2https://www.wired.com/story/blockchain-bandit-ethereum-weak-private-keys/
最近,Loopring Exchange 产生了一起因前端裂痕激发的安详事件,导致中继处事紧张遏制。所有用户在生意业务前需要更新其 EdDSA 密钥对。有关该错误的完整说明请拜见 Starkware 的博客 1。
这看起来雷同简化版的 PBKDF2[5] 协议。可是,我但愿对此有矫正式的安详阐明或证明,因为迩来的一些研究成就指出基于哈希的 MAC 存在安详风险。
尽量如此,大部门的账户密钥仍存储在欣赏器中(非常不发起这样利用),加密钱包(包罗硬件钱包)需要支持更多的加密原语,这样 DApp 才无需担忧密钥打点的问题。
Loopring 的新要领在最新的文章 [6] 中,Loopring 提出了一种生成账户密钥的新要领。Loopring 采用了 Alex 和 Vitalik 的发起。另外,引入了计数器 n,这样用户更新账户密钥时,可以确定性地发生差异的私钥。
[6]https://blogs.loopring.org/new-approach-to-generating-layer-2-account-keys-cn/
总而言之,我们可以借助数字签名、伪随机预言机和计数器等技妙手段,从以太坊账户中得到一个账户密钥。账户密钥是独一且确定的。不外,你仍然可以选择生成一个随机数作为私钥。
兼容智能合约账户由于中继器需要签名来查抄链下生意业务的有效性并生成证明,因此它不合用于条约账户。最佳实践是利用以太坊账户授权建设一个新的密钥对,这样对外部账户和合约账户都合用。
原文标题:《以太坊二层账户密钥生成
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。