地址,钱包,keystore

地址,钱包,keystore

地址

地址通常被用于标识在当前主流区块链上的一个唯一账号,我们先看看地址是如何生成的,一般地址是通过:Address=Hash(pubkey)[12:]方式生成,当然生成方式不是唯一的,这里说的是当前主流的比特币和以太坊的地址生成方式,理解一下就是将公钥进行哈希(btc是两次哈希)生成一个不可逆的数据摘要,由于该数据摘要比较大(32字节),所以就取其中的后20个字节作为地址,最后这20个字节的地址再做一个编码(base58等)转成用户常见的地址。

func PubkeyToAddress(p ecdsa.PublicKey) common.Address {
	pubBytes := FromECDSAPub(&p)
	return common.BytesToAddress(Keccak256(pubBytes[1:])[12:])
}

由于每对公私钥对(上节介绍)都是唯一的,即每个私钥有且只有一个公钥,那么由公钥生成的地址也是唯一的。

钱包/keystore

这里keystore是指以太坊节点中管理账户地址的一个组件,用于节点安全的管理及访问地址信息,看上去类似JSON格式的字符串,以文件形式存储。一个keystore文件包含了一个地址相关信息及地址对应私钥信息(当然不能是私钥的明文信息,私钥加密后的密文),也就是说每次访问keystore文件都需要用户输入密码,以解密keystore中的私钥信息。
地址,钱包,keystore_第1张图片

钱包的概念类似于keystore,是对一组keystore的管理,提供了更加友好的对账户地址的管理方式及一些地址相关的一些历史信息的管理(历史交易,余额等)。

你可能感兴趣的:(区块链,taiyuechain)