钱包-账号-地址-公私钥

画了个示意图,表示钱包-账号-地址-公私钥之间的关系

关系

钱包

钱包不是账号,钱包是一个应用程序,主要用于管理账号、保管私钥、发送和接受代币的客户端。

钱包中可以有很多账号,账号也能导入不同的钱包。

一个钱包应用程序也能创建多个钱包,每个钱包管理不同的账号。

账号

每个账户都是由一对钥匙组成:公钥和私钥。

每个账户都对应一个地址,而账户名是地址的标签。

账户由钱包来管理,一个钱包可以包含多个账户。

账号与公钥、私钥、地址,在以太坊中是一一对应的,而在有的区块链中账号与公私钥对、地址不是一一对应的,比如:EOS。

地址

地址由40位长度的十六进制的字符组成,如:0xbb5c219853cd0c8b86f463f9b7b480447bcfb57e。

地址标记着一个账号,可以公开给别人,用于别人给你转账。

地址不是公钥,地址是由公钥生成,公钥由私钥生成,这两个过程是不可逆的,即地址不能推算出公钥,公钥也不能推算出私钥。下面将介绍这两个过程的具体实现。

公钥

公钥压缩格式是33字节,非压缩格式是65字节。即压缩格式是66位长度的十六进制,非压缩格式是130位长度的十六进制字符组成。以0x02/0x03开头为压缩公钥。

公钥对账号的交易进行加密。即使用公钥签名交易,然后使用私钥去验证交易。

公钥做Keccak-256哈希后取末尾的40位长度的十六进制字符得到地址。

公钥是通过使用secp256k1椭圆曲线加密算法计算私钥所对应的公钥获得。

公钥、私钥、地址,它们是一一对应的,唯一的,不可修改的。

私钥

私钥由64位长度的十六进制的字符组成,比如:0xE4356E49C88C8B7AB370AF7D5C0C54F0261AAA006F6BDE09CD4745CF54E0115A,

私钥一定要妥善保管,不能被公开和泄漏,拥有私钥就相当于拥有此账号的使用权。

私钥有多种表现形式:如keystore、助记词。

总结

钱包应用程序用于管理多个账号,在以太坊中账号与公私钥对、地址是一一对应的,公钥、私钥、地址也是一一对应的,私钥生成公钥,公钥生成地址,且不可逆,私钥是账号的核心且不可泄漏,地址可以公开用于转账。

创建账号就是创建私钥的过程。

下面是创建账户后产生地址的流程图。

关系


参考链接