區(qū)塊鏈的本質就是解決信任問題,降低信任成本的技術方案,目的就是為了去中心化,去信用中介。
區(qū)塊鏈是比特幣的底層技術。比特幣的概念最初由中本聰在2009年提出,它就是數(shù)字貨幣,海外也被稱為法幣。
首先,我們借鑒了一個區(qū)塊鏈描述中的經典情景來模擬中心化記賬。
假設武當派是一個由百戶徒弟的門派,其中張三豐是武當派的掌門,掌門的大徒弟是宋遠橋。徒弟們都把錢存到武當派哪里,張三豐負責記賬。比如,張翠山用1000買了殷梨亭家的牛,張三豐就把張翠山名下的存款減去1000,殷梨亭加上1000。聽起來是不是很想銀行的操作呢?
就是要從中心化的銀行記賬開始聊起。徒弟們都相信張三豐,才愿意把錢存到張三豐的門派,它們相信張三豐不會做惡。
可惜好景不長,張三豐年紀太大了,卸任了掌門人位置。新上任的掌門宋遠橋也是很正直和聰明的人,但也有個毛病,就是粗心大意。他不但經常算錯帳,一次還被偷改了賬單。
不過,幸好徒弟們自己都有記賬,但是由于宋遠橋每次錯帳后都要和別人合隊半天,導致村民對新掌門的記賬能力十分不滿。
時間就這么過去,然而最可怕的事情還是發(fā)生了,宋遠橋的兒子宋青書竟然私下篡改賬本,給宋遠橋的親人的余額全部偷偷加了好多,終于有一天事情暴露,徒弟們氣沖沖地跑到宋遠橋哪里逃說法,于是武當亂成一團,被趙敏偷襲了。
如果這個時候使用比特幣的思路來解決這個問題,應該如何解決呢?
公開記賬
這三條總體來說其實是干一件事情,就是:
每家每戶都記賬,賬簿上不再記載每戶村民的余額,而只記載每一筆 Transaction,即記載每一筆交易的付款人、收款人和付款金額。
那么問題就來了:如果每個徒弟都記賬,肯定徒弟們的賬都不統(tǒng)一啊,你記你的,我記我的,最后不全亂了么?
這個時候需要大家統(tǒng)一賬本,保證大家的賬本都是一致的。因為記錄的交易是門派所有人有序產生的,所以這就需要有一個廣播機制。
其實很簡單,我們現(xiàn)在先把門派所有人的資產都加起來。還真巧了,剛好 100 萬。
只要賬簿的初始狀態(tài)確定,并且每一筆交易可靠并按照物理時間自然記錄,并且只加不改不刪,這樣,當前每戶持有多少資產是可以推算出來的。
第一塊是一個可以識別的標記,比如我往紙上一敲,可識別的標記是 1MsTg2。
這就是你們的代號,由于我們賬本是公開的,使用真實姓名會很危險,所以你們記賬的交易單上收款人、付款人都填這個碼,不用寫姓名。你的掃描器和你的印章生成的代號是關聯(lián)的,有且僅有持有對應掃描器的人才能花費金額,這一步即為“解開交易”。
展開全文
剛剛說印章有兩塊,這第二塊內容配合這個掃描器才能看,肉眼看則都是亂碼,掃描器一掃就知道第二塊內容是否有效,這一步也就是“交易驗證”。
并且所有交易大家都能接收,都能看到,但卻解不開印章亂碼部分的內容,僅僅收款方才能解開,因為你的掃描器和你印章生成的代號是關聯(lián)的,有且僅有持有對應掃描器的人才能解開交易。
創(chuàng)建創(chuàng)世區(qū)塊
創(chuàng)世區(qū)塊是我們生成門派公開賬本的第一筆交易的第一個信封,好比一篇文章總得有個開頭一樣。
于是乎,某個徒弟先生成第一個 Transaction,這個交易單的付款人為空,收款人是宋遠橋,付款金額是 100 萬,因為是創(chuàng)世區(qū)塊,產出多少個是可以隨意規(guī)定的,由于我們上面統(tǒng)計了全門派的賬目情況,所以就寫了 100 萬,待會兒付款給掌門以后,我們可以按照原來的賬本給大家發(fā)送對應的金額過去。 好了,我們有了第一筆交易,第一個信封也已經做好了?,F(xiàn)在讓掌門把信封傳給張翠山,張翠山復印一份,然后傳給殷梨亭,殷梨亭繼續(xù)傳下去,一傳十,十傳百,直到傳給整個門派,這個步驟也就是“同步區(qū)塊”,也就是全網(wǎng)都拿到這個信封,以及信封里面的 Transaction。
交易
由于我們的創(chuàng)世區(qū)塊把 100 萬交給了掌門,那么我們假設張翠山在掌門那里的存款余額是 10 萬,這時候掌門要根據(jù)原來的舊賬本,把這 10 萬發(fā)送給張翠山,然后把舊賬本上的賬劃掉。下面我們討論一下如何構造這筆交易。 把 100 萬分成兩部分,第一部分 10 萬,收款人是張翠上;第二部分是 90 萬,收款人是自己;這樣一個 Transaction 就做成啦。
前面我們說了,不能直接寫名字,要寫代號,這個代號也就是你的錢包地址,我們需要把收款人寫名字的地方,讓收款人拿出自己印章,把代號讀出來,然后告訴掌門即可。
掌門寫好 Transaction 以后,還需要拿出自己的印章,在 Transaction 上蓋章,這個蓋章的過程也就相當于區(qū)塊鏈中的簽名。這個章,門派的所有人都可以拿掃描器掃一下驗證是否有效,即驗證付款人的章是否有效。
就這樣,掌門一共寫了 10 份 Transaction,分別代表了發(fā)送給不同人的交易,張翠山一筆 10 萬,殷梨亭一筆 1 萬,等等。
打包 Transaction (挖礦)
現(xiàn)在我們有了 Transaction,但是還需要東西把 Transaction 裝起來,我們用一個特殊的信封把 Transaction 裝起來,這個信封就是區(qū)塊鏈中的“區(qū)塊”,這個封裝過程就是“打包交易”。
為什么要封裝起來呢?是為了讓打包交易的人能夠在信封上署名,表示這次打包是由某某某打包的,其次全村的交易可能非常多,需要裝配標號,方便大家查詢。
我們看到上述的 Transaction 雖然已經生成,但是有個問題,就是沒有規(guī)定誰有權利把 Transaction 封裝到信封里。
由于我們門派的人口增長,100 萬未來可能不夠,我們暫定 150 萬,那多余的 50 萬,我們就當獎勵給這些裝信封的人了,當然不能一次性給,誰裝一次信封就領 3 個幣。
這時候大家伙兒來勁了呀,只要裝信封就能夠領錢了,我們在這里把符合條件的人稱作“礦工”。
要獲得這個裝信封的權利,是有條件的。我給大家出一個難題,誰先解出這個難題的答案,誰就有權利把 Transaction 裝到一個信封中,并且要在此信封上蓋上自己的章。
好了,這時候大家開始計算給出的難題,剛好張翠山第一個計算出來,那么這次裝信封的操作就由張翠山完成,張翠山把 10 份 Transaction 裝到信封中,也就是打包 Transaction,并且要在信封背面寫上一個信封的摘要信息。
比如上一個信封中的第一個交易是什么、信封封面長什么樣,最后要在信封上蓋上章,也就是“簽名”,礦工簽名的目的是為了領幣,也就是 Coinbase 交易。
以上過程在區(qū)塊鏈領域稱作“打包 Transaction”,也就是大名鼎鼎的“挖礦”。
廣播交易
來說說上文提到的廣播交易,廣播是為了讓所有人知道當前時刻你產生了一筆 Transaction,或者是你裝好了一個信封。
廣播的內容分兩種,一種是廣播 Transaction,一種是廣播信封。第一種廣播是意味著還有未被打包的 Transaction,而第二種廣播信封則意味著這個 Transaction 已經被某個礦工確認。
收到了廣播的通知后,大家先驗證信封上難題的答案是否正確,這樣便可以驗證出信封是否被偽造,接著驗里面的每筆交易,最后還要驗證信封背面的內容,即上一個信封的摘要是否正確。因為上一個信封大家都已經確認,所以這樣可以極大地規(guī)避作弊的可能。如果覺得沒問題,就可以存入本地數(shù)據(jù)庫中了。
雙花問題
如果兩個弟子同時上傳,雖然這個概率很小,但是若發(fā)生,我們就看最后的區(qū)塊鏈哪條更長,短的那條就失效。這就是區(qū)塊鏈中的**“雙花問題”**(同一筆錢花兩次)。
對于要制作虛假交易,除非你說服了全網(wǎng)里超過51%的礦工都更改某一筆賬目,否則你的篡改都是無效的。 網(wǎng)絡中參與人數(shù)越多,實現(xiàn)造假可能性越低。這也是集體維護和監(jiān)督的優(yōu)越性,偽造成本最大化。說服51%的人造假還是灰?;页ky的。
評論