比特币的所有权通过数字密钥、比特币地址和数字签名确定。密钥并不直接存储在网络中,而是由用户生成并保管在一个文件或简单的数据库,即钱包中。非确定性钱包(随机生成密钥)逐渐被确定性钱包取代,特别是分层确定性钱包(HD钱包),它利用种子生成确定性密钥序列。
私钥是一个随机生成的数字,决定了比特币所有权。私钥可通过椭圆曲线加密运算产生公钥,而公钥用于接收比特币。
比特币地址是由公钥通过两次哈希运算(RIPEMD160(SHA256()))得到,并采用Base58Check编码。通常以数字"1"开头。
私钥可有不同的编码格式,如钱包导入格式(WIF)或压缩格式,而公钥也有非压缩和压缩两种格式。
钱包包含了私钥集合,其中最流行的是确定性钱包(种子钱包),可通过单一种子生成无限密钥。备份种子就能恢复全部钱包信息。钱包分为以下几种类型:
这种钱包一次性生成一定数量的随机私钥,并用于创建比特币地址。每个私钥需单独备份,管理不便且隐私较低。
种子钱包基于一个随机数(种子),通过确定性算法生成一系列私钥。种子可生成钱包所有密钥,备份只需种子即可。
助记词词汇:将种子转换成便于记忆和书写的英文词组,便于备份和恢复。
通过种子生成主密钥,主密钥又可生成子密钥,并向下扩展形成层次化的密钥结构。BIP0044 提供了一个多账户结构,用五个预定义层级组织钱包结构。
私钥、公钥和比特币地址之间有固定的关系,通过椭圆曲线加密算法产生。公钥经Base58Check编码生成比特币地址,可使用非压缩或压缩格式。
举例说明了如何使用Python的ecdsa库和pybitcointools库生成密钥、公钥和比特币地址,并介绍了助记词词汇、扩展密钥(包括正常和硬化衍生)以及BIP0044钱包结构的创建和应用。
通过本文的解析,读者可以了解到比特币密钥的生成、管理和使用,以及钱包的构造和备份方法,从而更好地理解比特币交易的基本原理和安全性保障。