比特幣及錢包的基礎(chǔ)知識
本文轉(zhuǎn)載自比特幣生存指南支付寶群的分享。
大家好,我是比太錢包的創(chuàng)始人文浩,感謝笑來老師給了這么一次交流機(jī)會,也感謝笑來老師一直以來對我們團(tuán)隊(duì)的鼓勵和支持。
今天和大家交流的內(nèi)容是“比特幣基礎(chǔ)”,雖然我稱其為“基礎(chǔ)”,但說實(shí)話,即便是這些最為“基礎(chǔ)”的內(nèi)容,大部分行業(yè)內(nèi)的人其實(shí)也沒搞懂,我希望能通過本次的分享,能讓大家真正搞懂這些“基礎(chǔ)”。
在開始正題前,首先,我們需要了解幾個最為“基礎(chǔ)”的概念:
1.私鑰:對于比特幣用戶來說,最難理解的就是這個“私鑰”,丟幣是因?yàn)樗借€,保管不好的也是私鑰,那到底什么是私鑰呢?其實(shí)很簡單,您只需要記住這么一句話就夠了“私鑰就是個隨機(jī)數(shù)”,這句話很簡單,但其實(shí)大部分人都沒搞懂,包括很多比特幣“老人”們在這一點(diǎn)上也都是糊里糊涂的,我曾不止一次聽到行業(yè)內(nèi)大佬們說:“什么?如果別人生成了和我一樣的私鑰,我的比特幣就沒了?那也太不安全了吧”,這都是不懂的。
是的,私鑰就是個隨機(jī)數(shù),大家或多或少對于隨機(jī)數(shù)還是有概念的,比如說,拋硬幣就是個隨機(jī)數(shù)(不是正面,就是反面),扔骰子也是個6種可能性的隨機(jī)數(shù),比特幣私鑰也一樣,只不過,這個隨機(jī)數(shù)的概率空間很大(256位,也即是2的256次方),2的256次方是個什么概念呢?比宇宙中的分子還要多。
也就是說,別人是不可能和你生成一樣的私鑰的(1/2^256的概率),如果兩次產(chǎn)生了相同的私鑰,那一定是程序?qū)戝e了,不可能是碰撞出來的,歷史上幾次因隨機(jī)數(shù)導(dǎo)致的丟幣(比如說 blockchain.info 曾經(jīng)出過2-3次隨機(jī)數(shù)事件),都是因?yàn)槌绦驅(qū)戝e了,而不是碰撞出來的,對于 2^256 來說,碰撞是不可能碰撞出來的,這是比特幣甚至整個密碼學(xué)科的根基。
好了,現(xiàn)在大家知道了,比特幣私鑰就是一個很大的、256位的隨機(jī)數(shù),那為什么我們通過比特幣客戶端看到的私鑰是一串 5 或 K 或 L 開頭的文本呢?其實(shí)這串文本只是私鑰的顯示方式而已,我們總不能把二進(jìn)制“0、1”的私鑰直接顯示給用戶,因此進(jìn)行了相應(yīng)的轉(zhuǎn)換,不過無論其顯示的格式如何,本質(zhì)上,私鑰還是那個范圍在 2^256 隨機(jī)數(shù)中的隨機(jī)數(shù)。
一般來說,私鑰這個隨機(jī)數(shù)都是通過計(jì)算機(jī)算法來生成的(密碼學(xué)安全的隨機(jī)數(shù)生成器),當(dāng)然,你也可以通過拋256次硬幣或者是扔100次骰子的方式來獲得這個隨機(jī)數(shù)(這兩種方式都能產(chǎn)生出 2^256 范圍內(nèi)的隨機(jī)數(shù)),然后用這個隨機(jī)數(shù)來當(dāng)成私鑰,這其實(shí)也沒問題,只不過需要把這個隨機(jī)數(shù)轉(zhuǎn)換成上面提到的顯示格式,就足夠了,當(dāng)然,大家一般不會這么去做,畢竟麻煩。
能理解了上述內(nèi)容,您就是真的懂了私鑰的本質(zhì) - “私鑰就是個隨機(jī)數(shù)。”
2.地址:說完私鑰,我們再來談?wù)劦刂罚覀儾蝗フ勀切┲T如“公私鑰對兒、橢圓曲線、數(shù)字簽名、SHA256”等密碼學(xué)概念,只談地址這個比特幣世界里最常用的東西。地址是通過私鑰計(jì)算而來的,具體怎么算的,大家不用去管,只需要知道私鑰能計(jì)算出地址,地址不能反算出私鑰,這是前提。比特幣地址是1開頭的,從一個私鑰計(jì)算出其對應(yīng)的地址之后,您就可以往該地址上轉(zhuǎn)比特幣了,轉(zhuǎn)入的比特幣只有私鑰的持有者才能花,就這么簡單。比如說我們團(tuán)隊(duì)的捐贈地址是 1BitherUnNvB2NsfxMnbS35kS3DTPr7PW5 ,這個地址的私鑰是我所持有的,任何轉(zhuǎn)入到這個地址上的比特幣也就只有我能花,同樣簡單,這個地址上當(dāng)前有3個多幣,有興趣的可以去查查看。
3.區(qū)塊鏈:理解了私鑰和地址,我們再來說說區(qū)塊鏈這個火熱的概念,其實(shí)區(qū)塊鏈這個詞也是被很多人給神化了,本質(zhì)上,區(qū)塊鏈其實(shí)是中本聰為了比特幣所設(shè)計(jì)的一個“用來去中心化的存儲比特幣賬目”的數(shù)據(jù)結(jié)構(gòu),所以,本質(zhì)上,區(qū)塊鏈就是個“賬本”,區(qū)塊鏈上記錄的都是 A 給 B 轉(zhuǎn)賬了 5 個比特幣這類的信息,就這么簡單。但是為了能做到去中心化,還得能進(jìn)行自我驗(yàn)證(賬目都得驗(yàn)證,不能做假賬),因此,① 這個賬本被設(shè)計(jì)成了區(qū)塊的結(jié)構(gòu),每過一段時間就會生成出一個新塊,把賬目做到新的區(qū)塊中,做進(jìn)區(qū)塊的賬目就不能再被修改了;② 這個賬本中的賬目還別設(shè)計(jì)成了鏈表(既前后鏈接的數(shù)據(jù)結(jié)構(gòu)),這樣,每一筆賬目都能最快的查詢到上一筆來進(jìn)行驗(yàn)證,一筆一筆的沿著鏈條向前驗(yàn)證,最終,任何一筆交易都能驗(yàn)證到最初的原始交易(也就是最初挖礦的那筆交易);這樣就做到了去中心化及自我驗(yàn)證,這就是區(qū)塊鏈這個數(shù)據(jù)結(jié)構(gòu)的目的。
好了,現(xiàn)在我們講完了私鑰、地址和區(qū)塊鏈這三個比特幣最為基礎(chǔ)的概念,對于初步了解比特幣來說,這其實(shí)已經(jīng)足夠了,甚至已經(jīng)比大部分業(yè)內(nèi)人士強(qiáng)了。
了解了以上三個概念之后,您就應(yīng)該理解如下事實(shí):
1.私鑰決定了比特幣的產(chǎn)權(quán),如果想花掉一個地址上的比特幣,很簡單,您得有私鑰,沒私鑰?抱歉。
2.一定要保管好私鑰,私鑰丟了,幣就花不了了,私鑰被別人看到了,幣就丟了。所以,請做好備份,請做好加密,如果可能的話,請盡可能的“冷”(也就是保持離線、斷網(wǎng)),記住,被別人看到了,錢就沒了,一定不要讓別人看到。
3.地址是公開的,請廣而告之,如果您擁護(hù)該地址的私鑰,任何轉(zhuǎn)入該地址的比特幣都只有您能花。
4.賬目都是去中心化的存儲在區(qū)塊鏈上的,也就是存儲在比特幣網(wǎng)絡(luò)的每一個節(jié)點(diǎn)上的,并不是存儲在私鑰或者地址上的,所以,一個地址當(dāng)前的余額是多少,這類的問題需要問區(qū)塊鏈,區(qū)塊鏈上有著比特幣歷史上的全部賬目,賬目都是公開的。
講了這么多,大家也基本上了解了比特幣,那什么是比特幣錢包呢?
其實(shí)也很簡單,比特幣錢包其實(shí)就是“私鑰、地址和區(qū)塊鏈數(shù)據(jù)的管理工具”,比如說,私鑰這個隨機(jī)數(shù)得生成吧?生成之后得計(jì)算出地址吧?相關(guān)的區(qū)塊鏈數(shù)據(jù)得維護(hù)吧?收到的、花出的賬目也都得列出來吧?得能用來收款,也得能進(jìn)行付款吧?
毫無疑問,所有這些都得通過工具來完成,這類的工具我們統(tǒng)稱為“比特幣錢包”。
錢包不少、功能各異,我這里先給大家簡單分分類;根據(jù)區(qū)塊鏈數(shù)據(jù)的維護(hù)方式,我們可以把錢包分為:
1.全節(jié)點(diǎn)(如 bitcoin-core 核心錢包),維護(hù)著全部的區(qū)塊鏈數(shù)據(jù)(當(dāng)前在50GB以上),完全去中心化,同步所有數(shù)據(jù);
2.SPV輕錢包(如比太),只維護(hù)與自己相關(guān)的區(qū)塊鏈數(shù)據(jù),基本上去中心化(要依賴比特幣網(wǎng)絡(luò)上的其他全節(jié)點(diǎn)),僅同步與自己相關(guān)的數(shù)據(jù);
3.中心化錢包,不依賴比特幣網(wǎng)絡(luò),只依賴自己的中心化服務(wù)器,不同步數(shù)據(jù),所有的數(shù)據(jù)均從自己的中心化服務(wù)器中獲得;
從去中心化角度上講,我們希望更多的人使用全節(jié)點(diǎn)錢包,這樣比特幣網(wǎng)絡(luò)上的節(jié)點(diǎn)數(shù)也會更多,不過,由于區(qū)塊鏈的數(shù)據(jù)量太大,嚴(yán)重影響了普通用戶的體驗(yàn),因此,當(dāng)前越來越流行 SPV 輕錢包模式,越來越多的錢包解決方案也開始轉(zhuǎn)向 SPV。中心化錢包由于不依賴比特幣網(wǎng)絡(luò),有著流量和體驗(yàn)上的優(yōu)勢,不過因其要依賴第三方中心化的服務(wù),服務(wù)不可用則錢包不可用,用戶也需要信賴該第三方服務(wù)才行。
根據(jù)所使用的硬件設(shè)備,我們可以把錢包分為:
1.電腦錢包,錢包軟件運(yùn)行于桌面操作系統(tǒng)(Windows、MacOS、Linux等);
2.手機(jī)錢包,安卓、iOS等;
3.在線錢包(如 blockchain.info ),運(yùn)行與云服務(wù),私鑰加密存儲于服務(wù)器上,通過瀏覽器訪問;
4.硬件錢包,運(yùn)行與專門定制的硬件上,可能需要與電腦或手機(jī)配合使用;
除了上述分類方式外,還有一種所謂的“鏈上 on-chain、鏈下 off-chain”的分類方式,這又產(chǎn)生出了一種“錢包”,叫“off-chain 錢包”。
其實(shí),從本質(zhì)上講,我們并沒有一種比特幣交易叫“off-chain 交易”,也不應(yīng)稱這類的服務(wù)為“off-chain 錢包”,我們應(yīng)該稱其為“銀行”或者是“存幣平臺”,因?yàn)樵谶@種情況下,您手里所謂的一個比特幣,其實(shí)只是該平臺上的一個數(shù)字,而并非是比特幣網(wǎng)絡(luò)上真實(shí)的比特幣,而是該平臺欠您的錢,所以,我們應(yīng)盡可能避免稱這類平臺為“錢包”。
比如說,交易所其實(shí)就是存幣平臺,各類的理財(cái)平臺、云算力平臺等也都是存幣平臺,這些平臺都屬于“off-chain”的范疇,我們應(yīng)稱他們?yōu)椤般y行”或“存幣平臺”,而不要稱他們?yōu)椤皁ff-chain 錢包”。
我在這里反復(fù)強(qiáng)調(diào)“on-chain、off-chain”這兩個詞,其實(shí)也是不得已而為之,因?yàn)闊o論是有意的、還是無意的,這個概念一直被混淆,比如說,去年,曾有人在微博上搞過一次投票,讓大家票選最喜歡的比特幣“錢包”,“比特幣存錢罐”名列前茅,其實(shí)呢,該平臺并不是“錢包”,而是一個高利息的“存幣平臺”,后來出了問題,所以,我們應(yīng)分清楚“on-chain、off-chain”的區(qū)別,想明白是要自己拿著比特幣?還是要把比特幣交給別人管理?分清區(qū)別,做好決策,這很重要。
好了,這就是我本次和大家交流的主要內(nèi)容,希望能幫大家搞清楚一些最基本的比特幣概念,讓大家在使用比特幣的過程中少走一些彎路。
最后,我再給比太做個廣告,比太是bitcoin.org官方推薦的、安全的、易用的、開源的比特幣錢包,歡迎大家使用。
關(guān)于比太錢包,有一些用戶經(jīng)常問到的問題,我這里整理了一下,簡要的進(jìn)行了回答:
Q:比太公司不存在了,這個錢包還能正常運(yùn)行嗎?
A:比太是個去中心化錢包,即便是比太公司不存在了,除非比特幣網(wǎng)絡(luò)發(fā)生大的、不兼容的協(xié)議升級,且比太錢包并未支持,才有可能會影響到錢包的運(yùn)行。另外比太是開源的項(xiàng)目,即便比太公司不存在了,開源項(xiàng)目本身仍然可以繼續(xù)發(fā)展。再者,請做好私鑰的備份(私鑰是最重要的),比太導(dǎo)出的私鑰可以導(dǎo)入 bitcoin-core 等錢包中。
Q:比太的“檢測私鑰安全”是什么機(jī)制?
A:該功能其實(shí)會完整的走完"解密 -> 私鑰 -> 公鑰 -> 地址”的過程,這樣,用戶無需真正進(jìn)行比特幣的發(fā)送操作,就能確認(rèn)對于該地址私鑰的所有權(quán),可以把該操作看成是“打開保險(xiǎn)柜、看看金條是不是還在”的過程。 另外,定期進(jìn)行“檢測私鑰安全”操作,有助于密碼記憶,忘記密碼也是比特幣用戶丟幣的常見原因之一,心理學(xué)實(shí)驗(yàn)中已經(jīng)多次證明,只有反復(fù)使用的密碼,才不會被忘記。
Q:比太用什么方式防止私鑰被黑客盜取?
A:就一個字:冷。徹底防止黑客只有一招,冷。
Q:我保存的二維碼備份被黑客盜走之后,會不會丟失我的比特幣?
A:如果被黑客盜走,私鑰的安全性就在于密碼強(qiáng)度了,存在暴力破解的可能,因此,如果被黑客盜取了二維碼備份,請盡快將比特幣轉(zhuǎn)入到其他新生成的地址中。
注:您的二維碼備份怎么被黑客盜走的?冷是盜不走的。
Q:流量問題?
A:比太是去中心化的錢包,需要與比特幣網(wǎng)絡(luò)上的其它節(jié)點(diǎn)進(jìn)行同步,因此,的確是會耗費(fèi)一定的流量,不過,比起全節(jié)點(diǎn)還是省很多的,我們還做了很多相關(guān)的優(yōu)化工作,因此在手機(jī)上使用問題不大。 如果流量不夠的用戶,建議設(shè)置為僅在wifi下同步區(qū)塊鏈。因比太當(dāng)前的邏輯是只有在同步到最新塊的情況下才能發(fā)布交易,所以暫無法區(qū)分同步區(qū)塊和發(fā)送交易的流量設(shè)置。
Q:建立的比特幣地址是否可以不被別人發(fā)現(xiàn)是比太錢包的?
A:比太是去中心化的錢包,比太生成的地址與 bitcoin-core 沒什么區(qū)別,僅從地址沒人能推斷出更多信息。