Bitcoin Cash從0.16.2版本開(kāi)始推出了CashAddr格式,老的比特幣格式的地址被稱(chēng)為L(zhǎng)egacy(遺產(chǎn))地址,升級(jí)節(jié)點(diǎn)至0.16.2后,所有的RPC地址展示都用了CashAddr格式,包括listunspent,listtransactions,validateaddress等常用的RPC命令。
快速看看BCH新老地址的對(duì)比:
1. 新地址是和老地址一一對(duì)應(yīng)的,它們對(duì)應(yīng)了同一個(gè)私鑰,只是換了種寫(xiě)法
2. 新地址可以發(fā)送余額給老地址,老地址可以發(fā)送余額到新地址
3. 新地址是大小寫(xiě)不敏感的,可以全部轉(zhuǎn)成大寫(xiě),也可以全部轉(zhuǎn)成小寫(xiě),優(yōu)先小寫(xiě)格式,同一地址不能大小寫(xiě)混用
4. 新地址的前綴可寫(xiě)可不寫(xiě),老地址沒(méi)有前綴,通過(guò)首字符來(lái)標(biāo)識(shí)類(lèi)型
5. 新地址用base32編碼,老地址用base58編碼
6. 新地址格式不是一個(gè)軟分叉,也不是一個(gè)硬分叉(這個(gè)有點(diǎn)爭(zhēng)議,改了大家都依賴(lài)的節(jié)點(diǎn)程序其實(shí)算是一個(gè)軟分叉)
自從比特幣分叉出BCH以來(lái),兩個(gè)分叉幣就逐漸地往不同的方向走了,軟分叉的BTC支持了隔離見(jiàn)證,也增加了隔離見(jiàn)證地址等功能,默認(rèn)生成新地址(getnewaddress)是p2sh-segwit隔離見(jiàn)證地址了,如果想要生成其它格式的地址,可以使用address_type來(lái)指定地址類(lèi)型,例如要生成原始格式地址,address_type要填legacy。現(xiàn)在,Bitcoin Cash也有了自己的地址格式,而且推薦用戶優(yōu)先選用新的地址格式。
BCH的新地址格式類(lèi)似這樣:
bitcoincash:qpg6rgmpxr838cnwjhatdyuxkdz644xku54fe5yk99
bchtest:qqfpw4e90jhanpz2uspe29czwswgk5rd9v3yczymwq
開(kāi)頭是一個(gè)網(wǎng)絡(luò)名,后面是一個(gè)q開(kāi)頭的base32編碼的字符串,包含了版本號(hào)、公鑰哈希值、校檢碼等信息,它們根據(jù)一些規(guī)則來(lái)拼接成這樣一個(gè)地址,具體原理請(qǐng)參考這里。
新弄一個(gè)地址格式的初衷,在于區(qū)別老地址和新地址,以免用戶充錯(cuò)幣。例如充錯(cuò)BTC到BCH地址,由于BCH已經(jīng)做了防重放攻擊,這樣相當(dāng)于將BTC打過(guò)去了與BCH地址相同的一個(gè)BTC地址上去了,要找回的話還挺麻煩,需要將BCH錢(qián)包的私鑰,導(dǎo)入到BTC錢(qián)包上,才能將幣打出,類(lèi)似的將BCH充值到BTC地址也一樣。如果私鑰不由自己掌握,或者交易所、錢(qián)包等商家不提供找回服務(wù),那么這個(gè)幣就相當(dāng)于丟了。有些服務(wù)商為了防止用戶打錯(cuò),干脆將BTC和BCH地址充值地址弄成一致的,這樣用戶就不會(huì)打錯(cuò)了,即使打錯(cuò)了,也是充值到自己的賬號(hào)去,可以隨時(shí)提走。
新格式解決了一些問(wèn)題,然而也帶來(lái)了一些問(wèn)題,特別是在新舊格式交替的過(guò)程中,會(huì)使人懵逼,一會(huì)新地址格式,一會(huì)老地址格式,雖然背后都是同一個(gè)私鑰,但是人閱讀起來(lái)還是有非常大差別。全部人都用老地址格式,或者全部人用新地址格式,都不會(huì)有問(wèn)題,部分人使用新地址格式,部分人使用老的,就會(huì)像語(yǔ)言障礙一樣,需要轉(zhuǎn)換一下,才能看得懂。
除了新老地址混用的問(wèn)題,其次新地址看起來(lái)其實(shí)蠻丑的,使用小寫(xiě)使得整個(gè)地址看起來(lái)密集,冗長(zhǎng),雖然開(kāi)發(fā)者說(shuō)是為了更易于書(shū)寫(xiě)和閱讀,其實(shí)完全沒(méi)有起到這個(gè)作用,比起 18SdNMjLMA9PJLnYr2MJtH8fndwYhq26vP 這樣的老地址,實(shí)在是難看了很多,老的比特幣地址其實(shí)經(jīng)過(guò)了精心的設(shè)計(jì),通過(guò)base58編碼,避免了一些容易看錯(cuò)的字母和數(shù)字;使用首字母來(lái)標(biāo)識(shí)類(lèi)型,能夠讓人一眼知道這是個(gè)啥地址,比如m或n開(kāi)頭的,是一個(gè)測(cè)試環(huán)境地址,而1開(kāi)頭是正式環(huán)境地址,如果是3開(kāi)頭的,那么它是一個(gè)P2SH地址。新地址格式,通過(guò)前面的版本號(hào)來(lái)看地址所屬的網(wǎng)絡(luò),不能再輕松看出差別了,新地址格式的確沒(méi)有老地址那么簡(jiǎn)潔易用。
不過(guò),目前走到這步,也都需要支持新地址格式,這樣才能盡快解決這個(gè)兼容問(wèn)題,讓人們不再去關(guān)注這種差別,而可以自然地使用BCH。Bitcoin Cash開(kāi)發(fā)者的方向,也應(yīng)該將精力用在刀刃上,去解決那些更重要的問(wèn)題,而不是解決一個(gè)問(wèn)題,引入另外一個(gè)問(wèn)題,因?yàn)橐鉀Q類(lèi)似這種地址兼容的問(wèn)題,需要漫長(zhǎng)的時(shí)間等待所有人都用上新地址,甚至直到永遠(yuǎn),也還是有人用老地址,這樣總是要做兼容,這是非常不好的實(shí)踐。
由于BTC和BCH在分叉路上越走越遠(yuǎn),因?yàn)樗鼈冇懈嗟牟灰粯恿?,自然?duì)應(yīng)的業(yè)務(wù)邏輯也都不一樣了,這點(diǎn)對(duì)于該生態(tài)的開(kāi)發(fā)者來(lái)說(shuō),需要付諸更多精力,及時(shí)關(guān)注二者的技術(shù)發(fā)展動(dòng)態(tài),及時(shí)更新業(yè)務(wù)邏輯。
評(píng)論