在之前介绍的bitcoin地址是如何生成的过程中,
使用私钥0xccea9c5a20e2b78c2e0fbdd8ae2d2b67e6b1894ccb7a55fc1de08bd53994ea64
生成了一个主网地址14xfJr1DArtYR156XBs28FoYk6sQqirT2s
。
我把这个过程分为了8个步骤,了解这些步骤,自己就可以在离线环境中生成非常多的冷钱包地址。
其中有个细节,我们在计算完Hash160的结果后, 第四步
是加上主网的前缀符 00
,即00+2b6f3b9e337cedbb7c40839523fb1100709c12f7
,
大家对这个操作有很多疑问,这个前缀符有什么用?其实比特币的地址类型有很多种,不同类型的地址应用于不同的场景,如何区分呢,自然就是前缀符了。
P2PKH类型的地址最常用,比特币网络的很多地址是这种。可用于转账、发账, 支持最最常用的操作,安安静静,低调内敛。
P2SH类型的地址支持多重签名。
什么是多重签名呢? 假设3个人管理一个基金会的比特币账户,规定至少2个人同意的时候才能动用,我们就可以做一个3-2签名的多重签名,也可以做5-3签名的,5个人中只要有3个同意,就可以动用。其实还可以做5-5签名,只有5个人都同意了,才能动用,绝对的民煮。交易所的冷钱包往往都是多重签名地址,利于分权,其实也降低了风险。
以太坊的多重签名,需要编写智能合约,虽然有些麻烦,但能进行更细致的分配。
Testnet类型的地址,这个很好理解,软件工程中常常有测试环境,区块链也分为主网、测试网,主网是我们在使用的真正的转账网络,测试网主要用于测试,我们可以获取一定数量的测试币,进行调试,而不用花费真金白银,也能提前发现bug,很像游戏的不删档内测。
同一个私钥生成的测试网地址mjUcbu6BytKoC7YiEkqPxB1sc6U7nnjFse
。
https://tbtc.bitaps.com/mjUcbu6BytKoC7YiEkqPxB1sc6U7nnjFse
下图是同一个私钥,生成的不同类型地址,这3个地址都是34位长度,由于大小写字体的字宽问题,在视觉上长度不一致。
十进制 | 十六进制 | 地址类型 | 地址首字母 | 例子 |
---|---|---|---|---|
0 | 00 | P2PKH address | 1 | 14xfJr1DArtYR156XBs28FoYk6sQqirT2s |
5 | 05 | P2SH address | 3 | 35egEPVeimCvWAmXeHXcYtAUtdA8RtsNUY |
111 | 6F | Testnet address | m或n | mjUcbu6BytKoC7YiEkqPxB1sc6U7nnjFse |
以太坊的地址比较统一,主网地址、测试网地址都是同一个类型的。
最近很吸引眼球的吴比特币、澳比特币分叉事件,闹得鸡飞狗跳,吴比特币的前身BCH地址跟比特币地址差异很大,其实他们是能互相转换的,为什么呢?因为有相同的hash160, 地址只是一种方便人可读的呈现方式。欲要分叉,先改其地址 ......
我们去 https://testnet.manu.backend.hamburg/faucet
得到一些测试币。通过https://www.blocktrail.com/tBTC/address/mjUcbu6BytKoC7YiEkqPxB1sc6U7nnjFse 查看账户的余额。
参考:
https://github.com/liushooter/learn-blockchain/blob/master/gen_addr.rb
https://en.bitcoin.it/wiki/List_of_address_prefixes
https://bch.btc.com/tools/address-converter
https://tbtc.bitaps.com/mjUcbu6BytKoC7YiEkqPxB1sc6U7nnjFse
https://live.blockcypher.com/btc-testnet/address/mjUcbu6BytKoC7YiEkqPxB1sc6U7nnjFse/
https://www.blockchain.com/btctest/address/mjUcbu6BytKoC7YiEkqPxB1sc6U7nnjFse
https://testnet-faucet.mempool.co