钱包地址怎么生成?UTXO模型和找零地址
要搞懂数字货币的钱包地址,其实就是搞懂怎么从一串随机数变成能收发币的“银行账号”,这背后靠的就是密码学和一些约定俗成的规则,先从最基础的几块砖开始搭,公私钥、哈希、编码这些东西弄明白后,再去看比特币地址怎么一步步变出来的就轻松多了。

非对称加密和公私钥
非对称加密用一对密钥,公钥随便发,私钥死死捂着,用公钥加密的东西只有私钥才能解开,用私钥签名的东西公钥一验就知道是不是你签的,这套机制让大家不用提前偷偷交换钥匙就能安全通信,数字货币里最常见的是ECDSA算法,比特币选的secp256k1曲线,密钥短、算得快,后来Taproot又引进了Schnorr签名,批量验证更省事,隐私也更好。
私钥就是个超大的随机数,丢了就等于钱包钥匙没了,公钥是从私钥单向算出来的,反过来几乎不可能推回去,地址基本又是公钥再哈希一次,私钥干嘛用,签交易,证明这笔钱你能花,公钥干嘛用,别人验证签名对不对,顺便生成地址给大家转账用,俩东西配合起来,资产转移才安全可靠。
比特币公钥分两种,未压缩的以04开头,65字节长,压缩的以02或03开头,33字节就够,压缩版现在是主流省空间。
未压缩公钥长这样

压缩公钥长这样

私钥还有个WIF格式,方便导入钱包,编码后看起来像一串带5开头的字符


比特币常用哈希算法
哈希就是把任意长的数据揉成固定长度的指纹,输入变一点输出就天差地别,几乎没法逆推。
SHA-256最常见,输入啥都能吐出32字节的乱码,hello world跑一遍就是b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9。
RIPEMD-160短一点,160位20字节,hello world出来是d7d56920283f17ab4d7e10d4a5d6df50e594a9c3。
比特币里常用组合有几种,双SHA-256叫HASH256,挖矿、TXID、Merkle root全靠它,公钥地址用HASH160,先SHA-256再RIPEMD-160,扩展密钥用HMAC-SHA512。
编码方式对比
地址要好看、好抄、不容易输错,就得用合适的编码。
Base64效率高,字符集A-Z a-z 0-9 + /,但+和/在URL里麻烦,不适合地址,比特币基本不用。
Base58去掉0 O I l + /这些容易看错的,剩58个字符,手写抄写出错率低,比特币老地址、私钥WIF都用它,加4字节校验和还能查错。

Bech32是SegWit和Taproot专属,字符集qpzry9x8gf2tvdw0s3jn54khce6mua7l,全小写但大小写不敏感,纠错能力强,能自动修小错,开头bc1q或bc1p一看就知道是比特币主网。


日常用Base64传文件,抄地址用Base58,老系统选它,新地址直接Bech32,手续费低、错少。
地址怎么生成
先随机扔个大数当私钥,椭圆曲线乘法算出公钥,再哈希+编码就成地址,私钥丢了地址再好看也白搭。


比特币地址基本按这个流程,其他链大同小异,只是哈希组合和编码方式有点区别。
比特币地址相关的核心协议
BIP和SLIP是比特币改进提案,定规矩让钱包互相兼容。
BIP-32分层确定性钱包,从一个种子派生无数私钥公钥,备份一句话助记词就够。

BIP-39把种子变成12或24个单词,中文英文日文韩文都有,记单词比记乱码友好太多。
BIP-44定路径格式m/purpose'/coin_type'/account'/change/address_index,比特币purpose用44',以太坊60',多币种多账户一目了然。

BIP-43管purpose字段,BIP-44是44',BIP-49是49',BIP-84是84',BIP-86是86',不同purpose对应不同地址类型,SLIP-0044列coin_type,几千种币都有编号。
地址格式演进
BIP-13定P2SH地址,3开头,包复杂脚本,多签常用。
BIP-16补上支付到脚本哈希的脚本逻辑。
BIP-49用49'路径生成嵌套SegWit,3开头兼容老系统。
BIP-84用84'路径生成原生SegWit,bc1q开头,手续费最低。
BIP-86用86'路径生成Taproot,bc1p开头,隐私和效率再上一层。
BIP-173定Bech32编码,BIP-350升级Bech32m给Taproot用。
BIP-141隔离见证,把签名挪走省空间,兼容地址3开头过渡用。
比特币各种地址类型
P2PK支付到公钥,最早格式,现在基本淘汰

P2PKH支付到公钥哈希,1开头经典地址,手续费较高



P2MS支付到多签,没独立地址,通常包在P2SH里,最多3个公钥



P2SH支付到脚本哈希,3开头,包复杂脚本,多签15个公钥都行,手续费和隐私都更好



P2SH-P2WPKH嵌套SegWit,3开头,兼容老钱包享受SegWit折扣




P2SH-P2WSH嵌套SegWit脚本,3开头,复杂脚本用





P2WPKH原生SegWit,bc1q开头,手续费最低,只认压缩公钥



P2WSH原生SegWit脚本,bc1q开头,复杂脚本专用



P2TR Taproot,bc1p开头,Key Path简单支付快,Script Path藏复杂逻辑,隐私最好





派生路径和隐私
比特币用UTXO模型,每笔钱是一张独立支票,花的时候可能要凑几张,凑不够就找零一张给自己,找零地址每次用新的,同一个地址反复收钱容易被链上分析连起来,隐私就没了。
HD钱包从助记词自动派生无数地址,外部链m/.../0/收钱用,内部链m/.../1/找零用,钱包自己管,地址永远不重。
比特币主流路径
1、Legacy: m/44'/0'/... 1开头老地址
2、Nested SegWit:m/49'/0'/... 3开头过渡
3、Native SegWit:m/84'/0'/... bc1q开头最省钱
4、Taproot:m/86'/0'/... bc1p开头隐私强
其他链路径
以太坊及EVM系m/44'/60'/... 0x开头
币安链m/44'/714'/... bnb1开头
波卡m/44'/354'/...
Solana m/44'/501'/...
Cardano m/1852'/1815'/...
XRP m/44'/144'/...
莱特币类似比特币,coin_type 2'
狗狗币coin_type 3'
波场coin_type 195' T开头
门罗币不走BIP,用Ed25519曲线,自己一套助记词。
地址复用是大忌,现代钱包默认每次找零新地址,链上看起来散乱,别人很难猜你总共有多少钱。






