address 地址合法性 - comejoy/bitcoin GitHub Wiki
地址长度规则
一个bitcoin地址一般由26-35位字母或者数字来组成的标识符,早起区分大小写,。以数字1或3开头,这代表了比特币支付的可能目的地。任何比特币的使用者不需要任何话费便可以生成地址。
地址大小写规则
bitcoin早起规则是大小写敏感的,建议尽量使用粘贴、复制以免地址错误导致转账失败或coin打丢。后期发起的bech32规则是大小写不敏感的。
地址支持类型
地址规则 | 类型说明 | 地址前缀 | 地址长度(去除前缀) | 例如 |
---|---|---|---|---|
P2PKH | 普通公钥地址 | 1 | 25-34 | 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2 |
P2SH | 脚本哈希地址 | 3 | 34 | 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy |
Bech32 | 隔离见证地址 | bc1 | 39 | bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq |
地址编码规则
base58编码集
支持字符:123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Base58编码
可读性编码算法,类似古典密码学里的置换算法,理论上并不是密码学理论的核心内容。可读性编码算法不是为了保护数据的安全性,而是为了可读性。以二进制进行传输的信息是不具备可读性的,数字与字母组成的字符串才更容易被识别。可读性编码不改变信息内容,只改变信息内容的表现形式(部分>编码算法还加入了容错校验功能,以保证传输过程中数据的准确性和完整性)。
Base64是常见的可读性编码算法,所谓Base64,即是说在编码过程中使用了64种字符:大写A到Z、小写a到z、数字0到9、“+”和“/”。
Base58是Bitcoin中使用的一种编码方式,主要用于产生Bitcoin的钱包地址。相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+"和"/"符号。设计Base58主要的目的是:
- 避免混淆。在某些字体下,数字0和字母大写O,以及字母大写I和字母小写l会非常相似。
- 不使用"+"和"/"的原因是,非字母或数字的字符串难以作为账号的一部分被接受。
- 没有标点符号,通常不会被从中间分行。
- 使大部分的软件支持双击选择整个字符串。
- 比特币中使用Base58算法来对公钥的Hash160及私钥进行编码,以生成以1或3开头的比特币地址及WIF(Wallet import Format)格式的私钥。