? ? 首先我們明確下什么是區(qū)塊鏈,區(qū)塊鏈的本質(zhì)是分布式的數(shù)據(jù)庫,記錄的所有交易可以為所有參與者共享。區(qū)塊鏈技術(shù)作為一種新型在線交易系統(tǒng)被應(yīng)用到比特幣的交易,不過我們心里要有數(shù),那就是區(qū)塊鏈技術(shù)是可以應(yīng)用到其他的電子資產(chǎn)交易中。
????為什么說區(qū)塊鏈技術(shù)是新型的交易系統(tǒng),那是相對于傳統(tǒng)的交易方式來說的。說到傳統(tǒng)的在線交易方式,我們首先想到的應(yīng)該是支付寶,網(wǎng)銀等。
????總的說來傳統(tǒng)在線交易的方式依賴第三方信任機構(gòu)的支持,而這些第三方機構(gòu)扮演的角色主要在三個方面,分別是驗證交易,保護交易和記錄交易。大家可以回憶下馬云爸爸是如何在這三個方面參與到你與他人的交易中的,在此就不多啰嗦了。同樣區(qū)塊鏈技術(shù)和比特幣系統(tǒng)也要滿足這三方面角色的,下面我們來分析下如何實現(xiàn)的。
????比特幣的交易通過密碼驗證機制(非對稱加密體系)解決了交易雙方的信任問題。每筆交易都通過數(shù)字簽名得到保護。?

? ? 每筆交易都會被廣播到比特幣網(wǎng)絡(luò)中的每個節(jié)點,最終被驗證確認后記錄到“公開賬本”上。驗證節(jié)點在記錄任何交易之前需要做兩件事。第一件是交易中的比特幣屬于發(fā)起交易人的,第二件是發(fā)起交易人有足夠的比特幣完成這筆交易。前者通過數(shù)字簽名驗證,后者通過發(fā)起者的公鑰查詢發(fā)起者在“公開賬本”中每筆交易來保證發(fā)起者擁有足夠的余額。
一切看來都完美進行,照理比特幣現(xiàn)在可以大規(guī)模推廣了。但是由于在點對點的比特幣網(wǎng)絡(luò)中無法保證交易的處理順序。比特幣交易存在著所說的“雙重支付”問題。
?? ?想象一下Alice有2個比特幣,Alice向Blob支付2比特幣,同時又向星巴克支付1比特幣。兩筆交易正常的情況下應(yīng)該是第一筆交易成功,第二筆交易由于發(fā)起者余額不足而失敗。但是在比特幣的網(wǎng)絡(luò)中,由于兩筆交易可能會在不同的時間被不同的節(jié)點所處理,就會出現(xiàn)如下的情況:第一筆交易在北京的某個節(jié)點處理,驗證通過。第二筆交易在上海的某個節(jié)點處理,同樣通過。
?? ?為了解決這個問題人們提出區(qū)塊鏈技術(shù),在比特幣系統(tǒng)中訂單交易被分組存儲在稱為區(qū)塊(block)中,在同一個區(qū)塊中的交易被認為時間是相同的。區(qū)塊鏈用來連接不同的區(qū)塊,不同的區(qū)塊按照有序的方式連接,每個區(qū)塊都存儲上一個區(qū)塊的哈希值(hash value)。
如何保證誰是區(qū)塊鏈中下一個區(qū)塊?有可能多個區(qū)塊在不同節(jié)點同時產(chǎn)生,我們不能依賴區(qū)塊產(chǎn)生的時間來插入鏈表。這么辦?比特幣通過引入解題來解決這個問題,思路就是:一個區(qū)塊會被區(qū)塊鏈接受,除非他為一個非常特殊的數(shù)學難題提供一個答案,即比特幣所說的“工作證明”。什么是工作證明呢?舉個例子,節(jié)點產(chǎn)生哈希值必須前40位為零,那么節(jié)點在計算哈希值時就會比平時需要更多的計算量。節(jié)點產(chǎn)生區(qū)塊需要證明他付出了足夠的艱辛努力才能得到應(yīng)有的尊重,你可能會覺得設(shè)計區(qū)塊鏈的人非常無聊,不過你可以去回憶下上海地鐵高峰期如何處理涌現(xiàn)出人流量過大的情況,不就是通過設(shè)計圍欄增加入站時間。同理要求節(jié)點解決難題的目的就是讓區(qū)塊不要那么快加入?yún)^(qū)塊鏈。
?? ?繼續(xù)我們前面的兩筆交易,這時兩筆交易的區(qū)塊由于同時加入?yún)^(qū)塊鏈,他們就存在一次競爭。規(guī)則是誰先連接下一個區(qū)塊則誰先生效,另一個失敗。如果這兩個區(qū)塊鏈又都同時連接到下一個區(qū)塊,則存在二次競爭,依次三次競爭,四次競爭。。。顯然這種策略隨著比特幣在大規(guī)模推廣的過程中會限制了比特幣的發(fā)展,通過“工作證明”的機制會將競爭的概率大幅度降低。那些努力計算的節(jié)點被稱為“礦工”,當然為了鼓勵“礦工”,這些計算節(jié)點會有經(jīng)濟報酬,也就產(chǎn)生”挖礦”行業(yè)。?