http://www.7klian.com

三分钟相识以太坊二层账户密钥及生成指南

为什么我们需要一个账户密钥?

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/

总而言之,我们可以借助数字签名、伪随机预言机和计数器等技妙手段,从以太坊账户中得到一个账户密钥。账户密钥是独一且确定的。不外,你仍然可以选择生成一个随机数作为私钥。

兼容智能合约账户

由于中继器需要签名来查抄链下生意业务的有效性并生成证明,因此它不合用于条约账户。最佳实践是利用以太坊账户授权建设一个新的密钥对,这样对外部账户和合约账户都合用。

原文标题:《以太坊二层账户密钥生成

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

相关文章阅读