区块链基础知识之账户密钥地址,基于椭圆曲线的数字账户
Posted Danok21
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链基础知识之账户密钥地址,基于椭圆曲线的数字账户相关的知识,希望对你有一定的参考价值。
基于椭圆曲线的数字账户
私钥本质上只是一个随机数,其取值范围非常大(256个比特位),可确保在有限时间内,采取暴力搜索的方式,破解成功的概率接近于零。Bitcoin和Ethereum都采用Secp256k1曲线,生成随机数私钥r之后,取椭圆曲线上的一个基点G,经过特殊定义的乘法运算,可得到公钥R = r*G。通过R和G无法反推出r,所以R和G是可以公开的。为了协助用户记忆或保存私钥,研究者发明了助记词,将私钥与英文单词序列一一对应,可互相推导。
单词序列通常包含12个单词,取自于一个较大的单词库,通常由超过7000个单词所构成,由于不同的软件所采用的单词库是不一样的,将助记词输入给不同的软件,得到的私钥可能是不同的,互不兼容,这一点需特别注意。
数字账户由私钥所掌控,由地址所标示。将公钥通过一定的哈希运算及校验编码可得到地址,但仅通过地址,不可能反推出公钥。
对以上概念的简单总结
私钥是某个随机数r,公钥是Secp256k1曲线二维坐标系上的某个点R=r*G=(x, y),Bitcoin和Ethereum中数字账户所涉及的基本概念及计算推导关系如下:
Seed => Random => Private Key
Private Key => Mnemonic Words
Private Key => Uncompressed Public Key
Uncompressed Public Key => Compressed Public Key
Uncompressed Public Key => Address
Compressed Public Key => Address
Address => Checked Address
Message => Hash => Signature => (Hash, V, R, S) => Public Key => Address
Copy
比特币地址示例:
1Nt6XLmq8k8noafGGFdfwue74uJTFu9vQC
以太坊地址示例:0x
3a7b653E26f54E4A579237A15893E13A4bDD3451
比特币的地址,是对公钥做哈希运算后,再经过Base58编码而成;以太坊的地址,是对公钥做哈希运算后,截取保留了20字节而成。
经过实践检验才算安全
Secp256k1算法的安全性,是经过了长时间的实践检验的。从区块链系统的设计角度看,选择兼容比特币或以太坊的密钥生成算法和地址格式有很多优势,这并不是“抄袭”,因为Secp256k1算法及实现,就像是TCP/IP协议一样,属于通用基础模块,方便利用现有的钱包APP与API接口。在区块链的设计中,把更多的精力放在账户易用性、TPS、经济模型、体系结构等方面会更合理一些。更优秀的加密与签名算法,留给专业的密码学家去设计和论证。
以上是关于区块链基础知识之账户密钥地址,基于椭圆曲线的数字账户的主要内容,如果未能解决你的问题,请参考以下文章