Niuu Talk開(kāi)場(chǎng)
比特幣的技術(shù)——區(qū)塊鏈梳虽,是一個(gè)難懂的東西鹦牛。
2008年11月1日秉扑,一個(gè)化名為中本聰(Satoshi Nakamoto)的神秘密碼學(xué)極客發(fā)布了比特幣白皮書(shū)《比特幣白皮書(shū):一種點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng)》
2009年1月杏瞻,比特幣誕生癌压,所以這本白皮書(shū)就是比特幣的誕生的源頭。
作為非技術(shù)同學(xué)撰洗,看這個(gè)白皮書(shū)是很吃力的篮愉,下面幣姐就用通俗大白話(huà)給你你解讀一遍。
本文提出了一種完全通過(guò)點(diǎn)對(duì)點(diǎn)技術(shù)實(shí)現(xiàn)的電子現(xiàn)金系統(tǒng)差导,它使得在線支付能夠直接由一方發(fā)起并支付給另外一方试躏,中間不需要通過(guò)任何的金融機(jī)構(gòu)。雖然數(shù)字簽名(Digital signatures)部分解決了這個(gè)問(wèn)題设褐,但是如果仍然需要第三方的支持才能防止雙重支付(double-spending)的話(huà)颠蕴,那么這種系統(tǒng)也就失去了存在的價(jià)值。我們(we)在此提出一種解決方案助析,使現(xiàn)金系統(tǒng)在點(diǎn)對(duì)點(diǎn)的環(huán)境下運(yùn)行犀被,并防止雙重支付問(wèn)題。該網(wǎng)絡(luò)通過(guò)隨機(jī)散列(hashing)對(duì)全部交易加上時(shí)間戳(timestamps)外冀,將它們合并入一個(gè)不斷延伸的基于隨機(jī)散列的工作量證明(proof-of-work)的鏈條作為交易記錄寡键,除非重新完成全部的工作量證明,形成的交易記錄將不可更改锥惋。最長(zhǎng)的鏈條不僅將作為被觀察到的事件序列(sequence)的證明昌腰,而且被看做是來(lái)自CPU計(jì)算能力最大的池(pool)。只要大多數(shù)的CPU計(jì)算能力都沒(méi)有打算合作起來(lái)對(duì)全網(wǎng)進(jìn)行攻擊膀跌,那么誠(chéng)實(shí)的節(jié)點(diǎn)將會(huì)生成最長(zhǎng)的遭商、超過(guò)攻擊者的鏈條。這個(gè)系統(tǒng)本身需要的基礎(chǔ)設(shè)施非常少捅伤。信息盡最大努力在全網(wǎng)傳播即可劫流,節(jié)點(diǎn)(nodes)可以隨時(shí)離開(kāi)和重新加入網(wǎng)絡(luò),并將最長(zhǎng)的工作量證明鏈條作為在該節(jié)點(diǎn)離線期間發(fā)生的交易的證明丛忆。
Niuu Talk解讀
中本聰用這么一小段話(huà)把比特幣的核心都涵蓋 祠汇,看不懂是正常的,繼續(xù)往下走熄诡。
1. 簡(jiǎn)介
互聯(lián)網(wǎng)上的貿(mào)易可很,幾乎都需要借助金融機(jī)構(gòu)作為可資信賴(lài)的第三方來(lái)處理電子支付信息。雖然這類(lèi)系統(tǒng)在絕大多數(shù)情況下都運(yùn)作良好凰浮,但是這類(lèi)系統(tǒng)仍然內(nèi)生性地受制于“基于信用的模式”(trust based model)的弱點(diǎn)我抠。我們無(wú)法實(shí)現(xiàn)完全不可逆的交易,因?yàn)榻鹑跈C(jī)構(gòu)總是不可避免地會(huì)出面協(xié)調(diào)爭(zhēng)端袜茧。而金融中介的存在菜拓,也會(huì)增加交易的成本,并且限制了實(shí)際可行的最小交易規(guī)模笛厦,也限制了日常的小額支付交易纳鼎。并且潛在的損失還在于,很多商品和服務(wù)本身是無(wú)法退貨的裳凸,如果缺乏不可逆的支付手段贱鄙,互聯(lián)網(wǎng)的貿(mào)易就大大受限。因?yàn)橛袧撛诘耐丝畹目赡芤坦龋托枰灰纂p方擁有信任贰逾。而商家也必須提防自己的客戶(hù),因此會(huì)向客戶(hù)索取完全不必要的個(gè)人信息菠秒。而實(shí)際的商業(yè)行為中疙剑,一定比例的欺詐性客戶(hù)也被認(rèn)為是不可避免的,相關(guān)損失視作銷(xiāo)售費(fèi)用處理践叠。而在使用物理現(xiàn)金的情況下言缤,這些銷(xiāo)售費(fèi)用和支付問(wèn)題上的不確定性卻是可以避免的,因?yàn)榇藭r(shí)沒(méi)有第三方信用中介的存在禁灼。
所以管挟,我們非常需要這樣一種電子支付系統(tǒng),它基于密碼學(xué)原理而不基于信用弄捕,使得任何達(dá)成一致的雙方僻孝,能夠直接進(jìn)行支付导帝,從而不需要第三方中介的參與。杜絕回滾(reverse)支付交易的可能穿铆,這就可以保護(hù)特定的賣(mài)家免于欺詐您单;而對(duì)于想要保護(hù)買(mǎi)家的人來(lái)說(shuō),在此環(huán)境下設(shè)立通常的第三方擔(dān)保機(jī)制也可謂輕松加愉快荞雏。在這篇論文中虐秦,我們(we)將提出一種通過(guò)點(diǎn)對(duì)點(diǎn)分布式的時(shí)間戳服務(wù)器來(lái)生成依照時(shí)間前后排列并加以記錄的電子交易證明,從而解決雙重支付問(wèn)題凤优。只要誠(chéng)實(shí)的節(jié)點(diǎn)所控制的計(jì)算能力的總和悦陋,大于有合作關(guān)系的(cooperating)攻擊者的計(jì)算能力的總和,該系統(tǒng)就是安全的筑辨。
Niuu Talk解讀
中本聰介紹了設(shè)計(jì)比特幣的初衷——現(xiàn)有的金融體系是不完善的俺驶,有風(fēng)險(xiǎn)的,成本高昂且效率低下棍辕。
“誠(chéng)實(shí)”的代碼可以解決社會(huì)中的信用問(wèn)題痒钝。密碼學(xué)、點(diǎn)對(duì)點(diǎn)分布等這些技術(shù)可以保證整個(gè)系統(tǒng)的安全性痢毒。
該系統(tǒng)使用的人數(shù)越多送矩,越分散,也就越安全哪替。
2. 交易(Transactions)
我們定義栋荸,一枚電子貨幣(an electronic coin)是這樣的一串?dāng)?shù)字簽名:每一位所有者通過(guò)對(duì)前一次交易和下一位擁有者的公鑰(Public key) 簽署一個(gè)隨機(jī)散列的數(shù)字簽名,并將這個(gè)簽名附加在這枚電子貨幣的末尾凭舶,電子貨幣就發(fā)送給了下一位所有者晌块。而收款人通過(guò)對(duì)簽名進(jìn)行檢驗(yàn),就能夠驗(yàn)證該鏈條的所有者帅霜。
該過(guò)程的問(wèn)題在于匆背,收款人將難以檢驗(yàn),之前的某位所有者身冀,是否對(duì)這枚電子貨幣進(jìn)行了雙重支付钝尸。通常的解決方案,就是引入信得過(guò)的第三方權(quán)威搂根,或者類(lèi)似于造幣廠(mint)的機(jī)構(gòu)珍促,來(lái)對(duì)每一筆交易進(jìn)行檢驗(yàn),以防止雙重支付剩愧。在每一筆交易結(jié)束后猪叙,這枚電子貨幣就要被造幣廠回收,而造幣廠將發(fā)行一枚新的電子貨幣;而只有造幣廠直接發(fā)行的電子貨幣穴翩,才算作有效犬第,這樣就能夠防止雙重支付∶⑴粒可是該解決方案的問(wèn)題在于歉嗓,整個(gè)貨幣系統(tǒng)的命運(yùn)完全依賴(lài)于運(yùn)作造幣廠的公司,因?yàn)槊恳还P交易都要經(jīng)過(guò)該造幣廠的確認(rèn)副签,而該造幣廠就好比是一家銀行。
我們需要收款人有某種方法基矮,能夠確保之前的所有者沒(méi)有對(duì)更早發(fā)生的交易實(shí)施簽名淆储。從邏輯上看,為了達(dá)到目的家浇,實(shí)際上我們需要關(guān)注的只是于本交易之前發(fā)生的交易本砰,而不需要關(guān)注這筆交易發(fā)生之后是否會(huì)有雙重支付的嘗試。為了確保某一次交易是不存在的钢悲,那么唯一的方法就是獲悉之前發(fā)生過(guò)的所有交易点额。在造幣廠模型里面,造幣廠獲悉所有的交易莺琳,并且決定了交易完成的先后順序还棱。如果想要在電子系統(tǒng)中排除第三方中介機(jī)構(gòu),那么交易信息就應(yīng)當(dāng)被公開(kāi)宣布(publicly announced)[1] 惭等,我們需要整個(gè)系統(tǒng)內(nèi)的所有參與者珍手,都有唯一公認(rèn)的歷史交易序列。收款人需要確保在交易期間絕大多數(shù)的節(jié)點(diǎn)都認(rèn)同該交易是首次出現(xiàn)辞做。
Niuu Talk解讀
雙重支付:我手里只有100元琳要,但是我消費(fèi)了200元甚至更多。也就是手里的100元可以多次使用秤茅。
中本聰首先提出了“雙重支付”的問(wèn)題稚补。之前在網(wǎng)絡(luò)上解決這種問(wèn)題都是依賴(lài)第三方權(quán)威機(jī)構(gòu)來(lái)驗(yàn)證數(shù)據(jù)的真實(shí)性和有效性。
提出問(wèn)題后簡(jiǎn)單的說(shuō)出了自己的解決方案框喳,下面就要開(kāi)始詳細(xì)說(shuō)明了课幕。
3. 時(shí)間戳服務(wù)器(Timestamp server)
本解決方案首先提出一個(gè)“時(shí)間戳服務(wù)器”。時(shí)間戳服務(wù)器通過(guò)對(duì)以區(qū)塊(block)形式存在的一組數(shù)據(jù)實(shí)施隨機(jī)散列而加上時(shí)間戳五垮,并將該隨機(jī)散列進(jìn)行廣播撰豺,就像在新聞或世界性新聞組網(wǎng)絡(luò)(Usenet)的發(fā)帖一樣[2][3][4][5] 。顯然拼余,該時(shí)間戳能夠證實(shí)特定數(shù)據(jù)必然于某特定時(shí)間是的確存在的污桦,因?yàn)橹挥性谠摃r(shí)刻存在了才能獲取相應(yīng)的隨機(jī)散列值。每個(gè)時(shí)間戳應(yīng)當(dāng)將前一個(gè)時(shí)間戳納入其隨機(jī)散列值中匙监,每一個(gè)隨后的時(shí)間戳都對(duì)之前的一個(gè)時(shí)間戳進(jìn)行增強(qiáng)(reinforcing)凡橱,這樣就形成了一個(gè)鏈條(Chain)小作。
Niuu Talk解讀
每10分鐘產(chǎn)生一個(gè)“區(qū)塊”,每個(gè)“區(qū)塊”就好像一頁(yè)賬本稼钩,每個(gè)區(qū)塊記錄了10分鐘內(nèi)所有交易記錄(交易雙方顾稀,交易時(shí)間,交易金額)坝撑,把所有賬本連接起來(lái)就產(chǎn)生了“區(qū)塊鏈”静秆。
這樣比特幣系統(tǒng)里所有的交易都清晰可見(jiàn),就無(wú)法實(shí)現(xiàn)“雙重支付”了
4. 工作量證明(Proof-of-Work)
為了在點(diǎn)對(duì)點(diǎn)的基礎(chǔ)上構(gòu)建一組分散化的時(shí)間戳服務(wù)器巡李,僅僅像報(bào)紙或世界性新聞網(wǎng)絡(luò)組一樣工作是不夠的抚笔,我們還需要一個(gè)類(lèi)似于亞當(dāng)?柏克(Adam Back)提出的哈希現(xiàn)金(Hashcash)[6] 侨拦。在進(jìn)行隨機(jī)散列運(yùn)算時(shí)殊橙,工作量證明機(jī)制引入了對(duì)某一個(gè)特定值的掃描工作,比方說(shuō)SHA-256下狱从,隨機(jī)散列值以一個(gè)或多個(gè)0開(kāi)始膨蛮。那么隨著0的數(shù)目的上升, 找到這個(gè)解所需要的工作量將呈指數(shù)增長(zhǎng),而對(duì)結(jié)果進(jìn)行檢驗(yàn)則僅需要一次隨機(jī)散列運(yùn)算季研。
我們?cè)趨^(qū)塊中補(bǔ)增一個(gè)隨機(jī)數(shù)(Nonce)敞葛,這個(gè)隨機(jī)數(shù)要使得該給定區(qū)塊的隨機(jī)散列值出現(xiàn)了所需的那么多個(gè)0。我們通過(guò)反復(fù)嘗試來(lái)找到這個(gè)隨機(jī)數(shù)与涡,直到找到為止制肮,這樣我們就構(gòu)建了一個(gè)工作量證明機(jī)制。只要該CPU耗費(fèi)的工作量能夠滿(mǎn)足該工作量證明機(jī)制递沪,那么除非重新完成相當(dāng)?shù)墓ぷ髁坎虮牵搮^(qū)塊的信息就不可更改。由于之后的區(qū)塊是鏈接在該區(qū)塊之后的款慨,所以想要更改該區(qū)塊中的信息儒飒,就還需要重新完成之后所有區(qū)塊的全部工作量。
Niuu Talk解讀
想要擁有記賬的權(quán)利(記賬可獲得比特幣的獎(jiǎng)勵(lì))檩奠,就需要玩一個(gè)“猜數(shù)字”的游戲(工作量證明)桩了,誰(shuí)第一個(gè)猜出來(lái)誰(shuí)就可以記錄當(dāng)前區(qū)塊的賬本。
想要更快猜對(duì)埠戳,就需要更強(qiáng)大的CPU(現(xiàn)在都是專(zhuān)業(yè)的礦機(jī))井誉。
有了這個(gè)工作量證明,大大提高了修改交易記錄的門(mén)檻整胃,保證了系統(tǒng)的安全性颗圣。
同時(shí),該工作量證明機(jī)制還解決了在集體投票表決時(shí),誰(shuí)是大多數(shù)的問(wèn)題在岂。如果決定大多數(shù)的方式是基于IP地址的奔则,一IP地址一票,那么如果有人擁有分配大量IP地址的權(quán)力蔽午,則該機(jī)制就被破壞了易茬。而工作量證明機(jī)制的本質(zhì)則是一CPU一票。“大多數(shù)”的決定表達(dá)為最長(zhǎng)的鏈,因?yàn)樽铋L(zhǎng)的鏈包含了最大的工作量。如果大多數(shù)的CPU為誠(chéng)實(shí)的節(jié)點(diǎn)控制,那么誠(chéng)實(shí)的鏈條將以最快的速度延長(zhǎng)席赂,并超越其他的競(jìng)爭(zhēng)鏈條。如果想要對(duì)業(yè)已出現(xiàn)的區(qū)塊進(jìn)行修改,攻擊者必須重新完成該區(qū)塊的工作量外加該區(qū)塊之后所有區(qū)塊的工作量,并最終趕上和超越誠(chéng)實(shí)節(jié)點(diǎn)的工作量璃岳。我們將在后文證明年缎,設(shè)想一個(gè)較慢的攻擊者試圖趕上隨后的區(qū)塊悔捶,那么其成功概率將呈指數(shù)化遞減。
另一個(gè)問(wèn)題是单芜,硬件的運(yùn)算速度在高速增長(zhǎng)蜕该,而節(jié)點(diǎn)參與網(wǎng)絡(luò)的程度則會(huì)有所起伏。為了解決這個(gè)問(wèn)題洲鸠,工作量證明的難度(the proof-of-work difficulty)將采用移動(dòng)平均目標(biāo)的方法來(lái)確定堂淡,即令難度指向令每小時(shí)生成區(qū)塊的速度為某一個(gè)預(yù)定的平均數(shù)。如果區(qū)塊生成的速度過(guò)快扒腕,那么難度就會(huì)提高绢淀。
Niuu Talk解讀
大家經(jīng)常聽(tīng)到的10分鐘一個(gè)區(qū)塊,并不是十分準(zhǔn)確瘾腰。應(yīng)該說(shuō)中本聰盡量把猜對(duì)數(shù)字的時(shí)間控制在10分鐘皆的。
如果發(fā)現(xiàn)當(dāng)前礦機(jī)的計(jì)算能力提高了,5分鐘就猜對(duì)了蹋盆,則會(huì)自動(dòng)提高猜數(shù)字游戲的難度费薄。
5. 網(wǎng)絡(luò)
運(yùn)行該網(wǎng)絡(luò)的步驟如下:
新的交易向全網(wǎng)進(jìn)行廣播;
每一個(gè)節(jié)點(diǎn)都將收到的交易信息納入一個(gè)區(qū)塊中栖雾;
每個(gè)節(jié)點(diǎn)都嘗試在自己的區(qū)塊中找到一個(gè)具有足夠難度的工作量證明楞抡;
當(dāng)一個(gè)節(jié)點(diǎn)找到了一個(gè)工作量證明,它就向全網(wǎng)進(jìn)行廣播析藕;
當(dāng)且僅當(dāng)包含在該區(qū)塊中的所有交易都是有效的且之前未存在過(guò)的召廷,其他節(jié)點(diǎn)才認(rèn)同該區(qū)塊的有效性;
其他節(jié)點(diǎn)表示他們接受該區(qū)塊,而表示接受的方法柱恤,則是在跟隨該區(qū)塊的末尾数初,制造新的區(qū)塊以延長(zhǎng)該鏈條,而將被接受區(qū)塊的隨機(jī)散列值視為先于新區(qū)快的隨機(jī)散列值梗顺。
節(jié)點(diǎn)始終都將最長(zhǎng)的鏈條視為正確的鏈條泡孩,并持續(xù)工作和延長(zhǎng)它。如果有兩個(gè)節(jié)點(diǎn)同時(shí)廣播不同版本的新區(qū)塊寺谤,那么其他節(jié)點(diǎn)在接收到該區(qū)塊的時(shí)間上將存在先后差別仑鸥。當(dāng)此情形,他們將在率先收到的區(qū)塊基礎(chǔ)上進(jìn)行工作变屁,但也會(huì)保留另外一個(gè)鏈條眼俊,以防后者變成最長(zhǎng)的鏈條。該僵局(tie)的打破要等到下一個(gè)工作量證明被發(fā)現(xiàn)粟关,而其中的一條鏈條被證實(shí)為是較長(zhǎng)的一條疮胖,那么在另一條分支鏈條上工作的節(jié)點(diǎn)將轉(zhuǎn)換陣營(yíng),開(kāi)始在較長(zhǎng)的鏈條上工作闷板。
所謂“新的交易要廣播”澎灸,實(shí)際上不需要抵達(dá)全部的節(jié)點(diǎn)。只要交易信息能夠抵達(dá)足夠多的節(jié)點(diǎn)遮晚,那么他們將很快被整合進(jìn)一個(gè)區(qū)塊中性昭。而區(qū)塊的廣播對(duì)被丟棄的信息是具有容錯(cuò)能力的。如果一個(gè)節(jié)點(diǎn)沒(méi)有收到某特定區(qū)塊县遣,那么該節(jié)點(diǎn)將會(huì)發(fā)現(xiàn)自己缺失了某個(gè)區(qū)塊糜颠,也就可以提出自己下載該區(qū)塊的請(qǐng)求。
Niuu Talk解讀
這里解釋了去中心化網(wǎng)絡(luò)的運(yùn)行機(jī)制萧求,區(qū)塊如何在網(wǎng)絡(luò)中傳播其兴。
想要深入了解,可以研讀《精通比特幣》
6. 激勵(lì)
我們約定如此:每個(gè)區(qū)塊的第一筆交易進(jìn)行特殊化處理夸政,該交易產(chǎn)生一枚由該區(qū)塊創(chuàng)造者擁有的新的電子貨幣元旬。這樣就增加了節(jié)點(diǎn)支持該網(wǎng)絡(luò)的激勵(lì),并在沒(méi)有中央集權(quán)機(jī)構(gòu)發(fā)行貨幣的情況下秒梳,提供了一種將電子貨幣分配到流通領(lǐng)域的一種方法法绵。這種將一定數(shù)量新貨幣持續(xù)增添到貨幣系統(tǒng)中的方法,非常類(lèi)似于耗費(fèi)資源去挖掘金礦并將黃金注入到流通領(lǐng)域酪碘。此時(shí)朋譬,CPU的時(shí)間和電力消耗就是消耗的資源。
另外一個(gè)激勵(lì)的來(lái)源則是交易費(fèi)(transaction fees)兴垦。如果某筆交易的輸出值小于輸入值徙赢,那么差額就是交易費(fèi)字柠,該交易費(fèi)將被增加到該區(qū)塊的激勵(lì)中。只要既定數(shù)量的電子貨幣已經(jīng)進(jìn)入流通狡赐,那么激勵(lì)機(jī)制就可以逐漸轉(zhuǎn)換為完全依靠交易費(fèi)窑业,那么本貨幣系統(tǒng)就能夠免于通貨膨脹。
激勵(lì)系統(tǒng)也有助于鼓勵(lì)節(jié)點(diǎn)保持誠(chéng)實(shí)枕屉。如果有一個(gè)貪婪的攻擊者能夠調(diào)集比所有誠(chéng)實(shí)節(jié)點(diǎn)加起來(lái)還要多的CPU計(jì)算力常柄,那么他就面臨一個(gè)選擇:要么將其用于誠(chéng)實(shí)工作產(chǎn)生新的電子貨幣,或者將其用于進(jìn)行二次支付攻擊搀擂。那么他就會(huì)發(fā)現(xiàn)西潘,按照規(guī)則行事、誠(chéng)實(shí)工作是更有利可圖的哨颂。因?yàn)樵摰纫?guī)則使得他能夠擁有更多的電子貨幣喷市,而不是破壞這個(gè)系統(tǒng)使得其自身財(cái)富的有效性受損。
Niuu Talk解讀
大家去挖礦是因?yàn)榭梢垣@得比特幣的獎(jiǎng)勵(lì)威恼。挖礦有2種獎(jiǎng)勵(lì):
- “記賬”后系統(tǒng)獎(jiǎng)勵(lì)的比特幣(新產(chǎn)出的比特幣)
- 比特幣交易時(shí)會(huì)產(chǎn)生交易費(fèi)(誰(shuí)出的交易費(fèi)越高品姓,誰(shuí)的交易就會(huì)優(yōu)先處理,也就更快完成交易)
7. 回收硬盤(pán)空間
如果最近的交易已經(jīng)被納入了足夠多的區(qū)塊之中箫措,那么就可以丟棄該交易之前的數(shù)據(jù)腹备,以回收硬盤(pán)空間。為了同時(shí)確保不損害區(qū)塊的隨機(jī)散列值蒂破,交易信息被隨機(jī)散列時(shí)馏谨,被構(gòu)建成一種Merkle樹(shù)(Merkle tree)[7] 的形態(tài)别渔,使得只有根(root)被納入了區(qū)塊的隨機(jī)散列值附迷。通過(guò)將該樹(shù)(tree)的分支拔除(stubbing)的方法,老區(qū)塊就能被壓縮哎媚。而內(nèi)部的隨機(jī)散列值是不必保存的喇伯。
不含交易信息的區(qū)塊頭(Block header)大小僅有80字節(jié)。如果我們?cè)O(shè)定區(qū)塊生成的速率為每10分鐘一個(gè)拨与,那么每一年產(chǎn)生的數(shù)據(jù)位4.2MB稻据。(80 bytes * 6 * 24 * 365 = 4.2MB)。2008年买喧,PC系統(tǒng)通常的內(nèi)存容量為2GB捻悯,按照摩爾定律的預(yù)言,即使將全部的區(qū)塊頭存儲(chǔ)于內(nèi)存之中都不是問(wèn)題淤毛。
8. 簡(jiǎn)化的支付確認(rèn)(Simplified Payment Verification)
在不運(yùn)行完整網(wǎng)絡(luò)節(jié)點(diǎn)的情況下今缚,也能夠?qū)χЦ哆M(jìn)行檢驗(yàn)。一個(gè)用戶(hù)需要保留最長(zhǎng)的工作量證明鏈條的區(qū)塊頭的拷貝低淡,它可以不斷向網(wǎng)絡(luò)發(fā)起詢(xún)問(wèn)姓言,直到它確信自己擁有最長(zhǎng)的鏈條瞬项,并能夠通過(guò)merkle的分支通向它被加上時(shí)間戳并納入?yún)^(qū)塊的那次交易。節(jié)點(diǎn)想要自行檢驗(yàn)該交易的有效性原本是不可能的何荚,但通過(guò)追溯到鏈條的某個(gè)位置囱淋,它就能看到某個(gè)節(jié)點(diǎn)曾經(jīng)接受過(guò)它,并且于其后追加的區(qū)塊也進(jìn)一步證明全網(wǎng)曾經(jīng)接受了它餐塘。
當(dāng)此情形妥衣,只要誠(chéng)實(shí)的節(jié)點(diǎn)控制了網(wǎng)絡(luò),檢驗(yàn)機(jī)制就是可靠的戒傻。但是称鳞,當(dāng)全網(wǎng)被一個(gè)計(jì)算力占優(yōu)的攻擊者攻擊時(shí),將變得較為脆弱稠鼻。因?yàn)榫W(wǎng)絡(luò)節(jié)點(diǎn)能夠自行確認(rèn)交易的有效性冈止,只要攻擊者能夠持續(xù)地保持計(jì)算力優(yōu)勢(shì),簡(jiǎn)化的機(jī)制會(huì)被攻擊者焊接的(fabricated)交易欺騙候齿。那么一個(gè)可行的策略就是熙暴,只要他們發(fā)現(xiàn)了一個(gè)無(wú)效的區(qū)塊,就立刻發(fā)出警報(bào)慌盯,收到警報(bào)的用戶(hù)將立刻開(kāi)始下載被警告有問(wèn)題的區(qū)塊或交易的完整信息周霉,以便對(duì)信息的不一致進(jìn)行判定。對(duì)于日常會(huì)發(fā)生大量收付的商業(yè)機(jī)構(gòu)亚皂,可能仍會(huì)希望運(yùn)行他們自己的完整節(jié)點(diǎn)俱箱,以保持較大的獨(dú)立完全性和檢驗(yàn)的快速性。
Niuu Talk解讀
比特幣的交易確認(rèn)不需要一個(gè)第三方機(jī)構(gòu)來(lái)完成灭必。
只要大部分網(wǎng)絡(luò)節(jié)點(diǎn)是誠(chéng)實(shí)的(不想破壞這個(gè)系統(tǒng))狞谱,網(wǎng)絡(luò)上維護(hù)的賬本就是真實(shí)有效的。
9. 價(jià)值的組合與分割(Combining and Splitting Value)
雖然可以單個(gè)單個(gè)地對(duì)電子貨幣進(jìn)行處理禁漓,但是對(duì)于每一枚電子貨幣單獨(dú)發(fā)起一次交易將是一種笨拙的辦法跟衅。為了使得價(jià)值易于組合與分割,交易被設(shè)計(jì)為可以納入多個(gè)輸入和輸出播歼。一般而言是某次價(jià)值較大的前次交易構(gòu)成的單一輸入伶跷,或者由某幾個(gè)價(jià)值較小的前次交易共同構(gòu)成的并行輸入,但是輸出最多只有兩個(gè):一個(gè)用于支付秘狞,另一個(gè)用于找零(如有)叭莫。
需要指出的是,當(dāng)一筆交易依賴(lài)于之前的多筆交易時(shí)烁试,這些交易又各自依賴(lài)于多筆交易雇初,但這并不存在任何問(wèn)題。因?yàn)檫@個(gè)工作機(jī)制并不需要展開(kāi)檢驗(yàn)之前發(fā)生的所有交易歷史廓潜。
Niuu Talk解讀
這個(gè)跟現(xiàn)實(shí)中找零比較相似抵皱,下面畫(huà)個(gè)圖來(lái)解釋一下善榛。
你能追溯到每一筆比特幣的來(lái)源
10. 隱私(Privacy)
傳統(tǒng)的造幣廠模型為交易的參與者提供了一定程度的隱私保護(hù),因?yàn)樵噲D向可信任的第三方索取交易信息是嚴(yán)格受限的呻畸。但是如果將交易信息向全網(wǎng)進(jìn)行廣播移盆,就意味著這樣的方法失效了。但是隱私依然可以得到保護(hù):將公鑰保持為匿名伤为。公眾得知的信息僅僅是有某個(gè)人將一定數(shù)量的貨幣發(fā)所給了另外一個(gè)人咒循,但是難以將該交易同特定的人聯(lián)系在一起,也就是說(shuō)绞愚,公眾難以確信叙甸,這些人究竟是誰(shuí)。這同股票交易所發(fā)布的信息是類(lèi)似的位衩,股票交易發(fā)生的時(shí)間裆蒸、交易量是記錄在案且可供查詢(xún)的,但是交易雙方的身份信息卻不予透露糖驴。
作為額外的預(yù)防措施僚祷,使用者可以讓每次交易都生成一個(gè)新的地址,以確保這些交易不被追溯到一個(gè)共同的所有者贮缕。但是由于并行輸入的存在辙谜,一定程度上的追溯還是不可避免的,因?yàn)椴⑿休斎氡砻鬟@些貨幣都屬于同一個(gè)所有者感昼。此時(shí)的風(fēng)險(xiǎn)在于装哆,如果某個(gè)人的某一個(gè)公鑰被確認(rèn)屬于他,那么就可以追溯出此人的其它很多交易定嗓。
Niuu Talk解讀
比特幣系統(tǒng)里沒(méi)有人的概念蜕琴,只有地址的概念,誰(shuí)擁有這個(gè)地址的私鑰蜕乡,誰(shuí)就擁有該地址比特幣的擁有權(quán)奸绷。
比特幣系統(tǒng)里沒(méi)有“找回密碼”的說(shuō)法梗夸。如果你丟了私鑰层玲,是無(wú)法找回的。私鑰千萬(wàn)別弄丟了反症。
11. 計(jì)算
設(shè)想如下場(chǎng)景:一個(gè)攻擊者試圖比誠(chéng)實(shí)節(jié)點(diǎn)產(chǎn)生鏈條更快地制造替代性區(qū)塊鏈辛块。即便它達(dá)到了這一目的,但是整個(gè)系統(tǒng)也并非就此完全受制于攻擊者的獨(dú)斷意志了铅碍,比方說(shuō)憑空創(chuàng)造價(jià)值润绵,或者掠奪本不屬于攻擊者的貨幣。這是因?yàn)楣?jié)點(diǎn)將不會(huì)接受無(wú)效的交易胞谈,而誠(chéng)實(shí)的節(jié)點(diǎn)永遠(yuǎn)不會(huì)接受一個(gè)包含了無(wú)效信息的區(qū)塊尘盼。一個(gè)攻擊者能做的憨愉,最多是更改他自己的交易信息,并試圖拿回他剛剛付給別人的錢(qián)卿捎。
誠(chéng)實(shí)鏈條和攻擊者鏈條之間的競(jìng)賽配紫,可以用二叉樹(shù)隨機(jī)漫步(Binomial Random Walk)來(lái)描述。成功事件定義為誠(chéng)實(shí)鏈條延長(zhǎng)了一個(gè)區(qū)塊午阵,使其領(lǐng)先性+1躺孝,而失敗事件則是攻擊者的鏈條被延長(zhǎng)了一個(gè)區(qū)塊,使得差距-1底桂。
攻擊者成功填補(bǔ)某一既定差距的可能性植袍,可以近似地看做賭徒破產(chǎn)問(wèn)題(Gambler’s Ruin problem)。假定一個(gè)賭徒擁有無(wú)限的透支信用籽懦,然后開(kāi)始進(jìn)行潛在次數(shù)為無(wú)窮的賭博于个,試圖填補(bǔ)上自己的虧空。那么我們可以計(jì)算他填補(bǔ)上虧空的概率暮顺,也就是該攻擊者趕上誠(chéng)實(shí)鏈條览濒,如下所示 :
假定p>q,那么攻擊成功的概率就因?yàn)閰^(qū)塊數(shù)的增長(zhǎng)而呈現(xiàn)指數(shù)化下降拖云。由于概率是攻擊者的敵人贷笛,如果他不能幸運(yùn)且快速地獲得成功,那么他獲得成功的機(jī)會(huì)隨著時(shí)間的流逝就變得愈發(fā)渺茫宙项。那么我們考慮一個(gè)收款人需要等待多長(zhǎng)時(shí)間乏苦,才能足夠確信付款人已經(jīng)難以更改交易了。我們假設(shè)付款人是一個(gè)支付攻擊者尤筐,希望讓收款人在一段時(shí)間內(nèi)相信他已經(jīng)付過(guò)款了汇荐,然后立即將支付的款項(xiàng)重新支付給自己。雖然收款人屆時(shí)會(huì)發(fā)現(xiàn)這一點(diǎn)盆繁,但為時(shí)已晚掀淘。
收款人生成了新的一對(duì)密鑰組合,然后只預(yù)留一個(gè)較短的時(shí)間將公鑰發(fā)送給付款人油昂。這將可以防止以下情況:付款人預(yù)先準(zhǔn)備好一個(gè)區(qū)塊鏈然后持續(xù)地對(duì)此區(qū)塊進(jìn)行運(yùn)算革娄,直到運(yùn)氣讓他的區(qū)塊鏈超越了誠(chéng)實(shí)鏈條,方才立即執(zhí)行支付冕碟。當(dāng)此情形拦惋,只要交易一旦發(fā)出,攻擊者就開(kāi)始秘密地準(zhǔn)備一條包含了該交易替代版本的平行鏈條安寺。
然后收款人將等待交易出現(xiàn)在首個(gè)區(qū)塊中厕妖,然后在等到z個(gè)區(qū)塊鏈接其后。此時(shí)挑庶,他仍然不能確切知道攻擊者已經(jīng)進(jìn)展了多少個(gè)區(qū)塊言秸,但是假設(shè)誠(chéng)實(shí)區(qū)塊將耗費(fèi)平均預(yù)期時(shí)間以產(chǎn)生一個(gè)區(qū)塊软能,那么攻擊者的潛在進(jìn)展就是一個(gè)泊松分布,分布的期望值為:
當(dāng)此情形举畸,為了計(jì)算攻擊者追趕上的概率埋嵌,我們將攻擊者取得進(jìn)展區(qū)塊數(shù)量的泊松分布的概率密度,乘以在該數(shù)量下攻擊者依然能夠追趕上的概率俱恶。
化為如下形式雹嗦,避免對(duì)無(wú)限數(shù)列求和:
12.結(jié)論
我們?cè)诖颂岢隽艘环N不需要信用中介的電子支付系統(tǒng)。我們首先討論了通常的電子貨幣的電子簽名原理合是,雖然這種系統(tǒng)為所有權(quán)提供了強(qiáng)有力的控制了罪,但是不足以防止雙重支付。為了解決這個(gè)問(wèn)題聪全,我們提出了一種采用工作量證明機(jī)制的點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)來(lái)記錄交易的公開(kāi)信息泊藕,只要誠(chéng)實(shí)的節(jié)點(diǎn)能夠控制絕大多數(shù)的CPU計(jì)算能力,就能使得攻擊者事實(shí)上難以改變交易記錄难礼。該網(wǎng)絡(luò)的強(qiáng)健之處在于它結(jié)構(gòu)上的簡(jiǎn)潔性娃圆。節(jié)點(diǎn)之間的工作大部分是彼此獨(dú)立的,只需要很少的協(xié)同蛾茉。每個(gè)節(jié)點(diǎn)都不需要明確自己的身份讼呢,由于交易信息的流動(dòng)路徑并無(wú)任何要求,所以只需要盡其最大努力傳播即可谦炬。節(jié)點(diǎn)可以隨時(shí)離開(kāi)網(wǎng)絡(luò)悦屏,而想重新加入網(wǎng)絡(luò)也非常容易,因?yàn)橹恍枰a(bǔ)充接收離開(kāi)期間的工作量證明鏈條即可键思。節(jié)點(diǎn)通過(guò)自己的CPU計(jì)算力進(jìn)行投票础爬,表決他們對(duì)有效區(qū)塊的確認(rèn),他們不斷延長(zhǎng)有效的區(qū)塊鏈來(lái)表達(dá)自己的確認(rèn)吼鳞,并拒絕在無(wú)效的區(qū)塊之后延長(zhǎng)區(qū)塊以表示拒絕看蚜。本框架包含了一個(gè)P2P電子貨幣系統(tǒng)所需要的全部規(guī)則和激勵(lì)措施。
?