基于椭圆曲线的数字账户
私钥本质上只是一个随机数,其取值范围非常大(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 Pub