第一章:初區(qū)塊鏈識
區(qū)塊鏈本質就是一種記賬方式峡捡。舉例來說,張三筑悴、趙四们拙、王五阁吝、李六等人,相當于一個區(qū)塊鏈的客戶端求摇,他們運行在不同設備上殊者,彼此之間相互獨立,我們通常稱之為節(jié)點验夯。節(jié)點運行之后猖吴,他們彼此會先認識一下挥转。形成可以相互通信的“網(wǎng)絡路由”。網(wǎng)絡路由要保證一個重要的功能就是數(shù)據(jù)同步绑谣,實時更新數(shù)據(jù)的方法就是不斷詢問臨近節(jié)點党窜,節(jié)點彼此都充當服務者和被服務者,通過這種方式借宵,網(wǎng)絡中的每一個節(jié)點都會在某一時刻達成數(shù)據(jù)上的一致幌衣。
在這個網(wǎng)絡中壤玫,每個節(jié)點都有一個獨立賬本,賬本中記錄著網(wǎng)絡中發(fā)生的財務賬單欲间。要記賬時會根據(jù)規(guī)則選出一個記賬節(jié)點猎贴,這個節(jié)點的選擇類似于擲骰子班缎,選擇方法稱之為“共識算法”她渴。選出節(jié)點之后,則一段時間內數(shù)據(jù)記錄會以這個節(jié)點的內容為準苏携。這個節(jié)點記錄好之后會把數(shù)據(jù)廣播出去对粪,其他節(jié)點通過網(wǎng)絡接收數(shù)據(jù),看記錄的內容和自己的賬本匹配不匹配著拭,如果匹配就把數(shù)據(jù)存到自己的賬本里。
在系統(tǒng)中乳蛾,考慮到記賬節(jié)點的勞動付出,于是設立一種獎勵機制肃叶。有時候,大家會很希望獲得這個獎勵岳锁,所以希望骰子可以投中自己蹦魔。有些區(qū)塊鏈系統(tǒng)在這個環(huán)節(jié)會設計出一種帶有競爭的機制激率,讓各個節(jié)點去搶勿决,誰能搶到這個機會誰就能獲得打包數(shù)據(jù)的權利并且同時獲得這筆獎勵,這種情況下嘉冒,我們形象的稱這種競爭為“挖礦”表制。
那么,我們如何標記節(jié)點的使用者呢?這點他們不是采用用戶名注冊的方式蜕衡,而是采用密碼學的方法。
用公鑰加密的數(shù)據(jù)必須用對應的私鑰來解密久脯,而私鑰加密(通常稱之為“簽名”)的數(shù)據(jù)必須通過對應的公鑰來解密镰吆。如張三要想給李四一個支票信息,為防止第三者拿到之后信息泄露万皿。于是就在支票上用李四的公鑰加了一個密,然后再簽上自己的名字(用自己的私鑰)蹬耘,這種設計機制在區(qū)塊鏈中稱為“腳本系統(tǒng)”
區(qū)塊鏈之所以稱為區(qū)塊鏈是在于他將產生的數(shù)據(jù)按照一定的時間間隔减余,分成一個個的數(shù)據(jù)塊記錄,然后再根據(jù)數(shù)據(jù)塊的先后順序串聯(lián)起來,就形成了所謂的區(qū)塊鏈了堡牡。按照這個規(guī)則杨刨,沿著時間線逐漸增加的新的區(qū)塊,就好像時間記錄儀拭嫁,記錄下發(fā)生的每一筆操作做粤。
多個計算機在不同設備上運行所組成的網(wǎng)絡,在網(wǎng)絡中每個節(jié)點都是平等的怕品,大家互相為對方提供服務,這種網(wǎng)絡稱之為點對點的“對等網(wǎng)絡”闯估。
“共識算法”是什么樣子呢吼和?
在平等的網(wǎng)絡,讓大家各抒己見再投票表決顯然效率太低§排遥現(xiàn)在的做法是提供一套篩選機制。設立一組條件侠姑,讓大家都去完成箩做,誰能更好的完成指標,誰就有機會被選上邦邦。在區(qū)塊鏈中比如PoW(Proof of Work 工作量證明)Pos(Proof of Stack 委托權以證明)等都是這樣的篩選算法圃酵。
區(qū)塊鏈實際上就是一個維護公共數(shù)據(jù)的賬本系統(tǒng),一切技術單元設計都是為了更好的維護這個公共數(shù)據(jù)賬本郭赐。通過共識算法達成節(jié)點的賬本數(shù)據(jù)一致确沸;通過密碼算法確保賬本的不可篡改性以及數(shù)據(jù)發(fā)送的安全性俘陷;通過腳本系統(tǒng)擴展賬本系統(tǒng)的表達范疇。區(qū)塊鏈甚至可以理解成一個特別設計的數(shù)據(jù)庫系統(tǒng)或是分布式數(shù)據(jù)庫系統(tǒng)桨菜,這個數(shù)據(jù)庫可以存儲數(shù)字貨幣捉偏,也可以存儲邏輯更復雜的智能合約,以及范圍更廣泛的各種業(yè)務數(shù)據(jù)夭禽。
挖礦計算
打包就像記賬讹躯,是把發(fā)生的交易事務信息記錄下來存檔,但是潮梯,無論什么時候打包,誰來打包耙旦,在網(wǎng)絡中發(fā)生的交易是持續(xù)不斷的沃饶,就像企業(yè)進貨記錄,無論記賬員是一個月還是半個月記一次賬糊肤,業(yè)務是持續(xù)進行的氓鄙。在比特幣系統(tǒng)中,每個人都會通過錢包進行的轉賬交易數(shù)據(jù)存儲到網(wǎng)上升酣,這些都是等待打包的未確認數(shù)據(jù)态罪。這些數(shù)據(jù)會存放在一個內存池中。
挖礦程序從內存池中獲取用于打包的區(qū)塊數(shù)據(jù)绩聘,接下來進行挖礦計算。挖礦就是重復計算區(qū)塊頭的哈希值凿菩,不斷修改該參數(shù),直到與難度目標值匹配的過程椒拗。
一旦匹配成功获黔,就可以廣播一個新的區(qū)塊,其他客戶端會驗證你的區(qū)塊是否合法玷氏,如果驗證通過,就寫入到個人的區(qū)塊鏈賬本數(shù)據(jù)中兴溜。
另外一個需要注意的是耻陕,挖礦算法并不能保證只是一個礦工能挖到,如果同一時間內多個礦工都計算出了符合條件的值膘怕,都有了打包權召庞,那么到時候誰能夠獲得真正的打包,只能看運氣了篮灼。
可編程合約
在比特幣系統(tǒng)中,并不是像銀行賬戶一樣髓堪,將金額存儲在某個賬戶下就表示一筆資產是某個賬戶擁有的娘荡,而是使用一種腳本程序,通過腳本程序解鎖腳本和鎖定腳本一筆資產争群,簡單的說大年,就是讓資產具備更強的編程可控能力玉雾,擁有秘鑰的用戶可以提交自己的簽名信息讓腳本來驗證身份专控,以證明自己對資產的所有權,并且可以通過程序設定對資產的管理方式伦腐,比如設定一筆資產需要多個共同簽名才能被轉移或者需要達到某個條件時才能被使用等。這種可配置幸冻、可控制的思想就是可編程合約的思想咳焚。
以太坊擴展了這種思想,使得可編程合約進一步發(fā)揚光大碑定,不但支持加密數(shù)字貨幣又官,還支持更復雜的金融與商業(yè)合約編程,比如眾籌六敬、擔保等。這種合約使用腳本語言進行開發(fā)普泡,部署到區(qū)塊鏈中就不可篡改审编,也就是所謂的代碼即法律。區(qū)塊鏈系統(tǒng)具有數(shù)據(jù)不可篡改性权烧、價值傳遞能力伤溉,加上可編程合約妻率,就能完全支持商業(yè)環(huán)境下各種合約需求,無論合約中有哪些條條框框宫静,寫在紙上不如寫在代碼中券时,部署在區(qū)塊鏈中伏伯,公眾透明且剛性執(zhí)行。
第二章:區(qū)塊鏈應用發(fā)展
2.7 區(qū)塊鏈基礎設施:可編程社會
區(qū)塊鏈應用有一個非常獨特的特性就是其價值網(wǎng)絡(共識)協(xié)議炸枣,如何在網(wǎng)絡節(jié)點之間形成(價值)共識是區(qū)塊鏈最核心的邏輯弄唧,這個邏輯往往都是一個可編程的協(xié)議層提供的。未來的可編程社會侯养,我們可以預見:信息的流轉是綁定資產流轉的澄干,資產流轉往往是通過可編程的自動化完成的。
后記:區(qū)塊鏈與可編程社會
還可以記錄醫(yī)療健康信息辩稽,再也不用擔心找不到本子了疾掰,而且醫(yī)療機構之間可以共享病例信息,提高對病人的診斷能力静檬,凡此等等拂檩,社會的方方面面都會被覆蓋到。
隨著人們對區(qū)塊鏈技術的認識加深稻励,大家終將意識到,與其說這是一類技術加矛,不如說這是一類思想煤篙。它代表了一種價值觀,公正透明苛茂、信任協(xié)作的價值觀,我們將沿著歷史發(fā)展的路線妓羊,從最初的黃金屋(加密數(shù)字貨幣)走到智能合約,再走向更有前景的可編程社會裕循。