中心化記賬的問題
首先,我們借鑑了乙個區塊鏈描述中的經典情景來模擬中心化記賬。
假設有乙個有百戶居民的村子,其中有一位德高望重的村長,村長有乙個兒子。村民們都把錢存到村長家,村長負責記賬。比如,張三用1000買了李四家的牛,村長就把張三名下的存款減去1000,李四家加上1000。聽起來是不是很像銀行的操作?
對,我們就是先從中心化的銀行記賬開始聊起。村民都相信村長,才願意把錢存到村長家,他們相信村長不會作惡。
可惜好景不長,老村長由於操勞過度,駕鶴西去了。新上任的村長兒子鐵蛋很是聰明,但也有個毛病,就是粗心大意。他不但經常算錯賬,一次還被人偷改了賬單。
不過,幸好村民自己都有記賬,但是由於鐵蛋每次錯賬後都要和別人核對半天,導致村民對新村長的記賬能力十分不滿。
時間就這麼過著,然而最可怕的事情還是發生了,鐵蛋的老婆竟然私下篡改賬本,給鐵蛋七大姑八大姨的餘額全部偷偷加了好多,終於有一天事情暴露,村民們氣沖沖地跑到鐵蛋家裡討說法,於是一片混亂。
這時候有個叫中本聰的人站了出來,他說他設計了一套系統,可以不依賴任何人記賬,於是,眾人開始將目光集中到他的身上。
1. 公開記賬
中本聰說他的系統稍微麻煩一點,需要幹三件事兒。
每家每戶都派發乙隻信鴿。這就是 p2p網路,是乙個點對點的分布式網路,如果不好理解,你先不用理會,我會在後面講到。
每家每戶都發乙個特殊的印章和乙個掃瞄器。這個掃瞄器有兩個功效,一是識別他人的交易是否真實有效,二是識別這個交易是不是自己賬號的,同時識別並解鎖未花費的餘額。這就是非對稱加密。
每家每戶可以參與記賬,不過不再記餘額,而是記交易本身的內容。這就是區塊鏈中的交易,這個「交易」對應的英文單詞是「transaction」,這是個專有名詞,專指一筆賬,不同於金融交易的trade。
這三條總體來說其實是幹一件事情,就是:
每家每戶都記賬,賬簿上不再記載每戶村民的餘額,而只記載每一筆transaction,即記載每一筆交易的付款人、收款人和付款金額。
那麼問題就來了:如果每戶都記賬,肯定每戶的賬都不統一啊,你記你的,我記我的,最後不全亂了麼?
這個時候需要大家統一賬本,保證大家的賬本都是一致的。因為記錄的交易是全村所有人有序產生的,所以這就需要有乙個廣播機制。這個廣播機制,我先賣個關子,後面再講。
中本聰說,其實很簡單,我們現在先把全村所有人的資產都加起來。還真巧了,剛好100萬。
中本聰接著說:「只要賬簿的初始狀態確定,並且每一筆交易可靠並按照物理時間自然記錄,並且只加不改不刪,這樣,當前每戶持有多少資產是可以推算出來的。」
中本聰說我現在把我的印章給你們看,這個印章很特殊,蓋的章有兩塊標記,第一塊是乙個可以識別的標記,比如我往紙上一敲,可識別的標記是1mstg2。
這就是你們的代號,由於我們賬本是公開的,使用真實姓名會很危險,所以你們記賬的交易單上收款人、付款人都填這個碼,不用寫姓名。你的掃瞄器和你的印章生成的代號是關聯的,有且僅有持有對應掃瞄器的人才能花費金額,這一步即為「解開交易」。
剛剛說印章有兩塊,這第二塊內容配合這個掃瞄器才能看,肉眼看則都是亂碼,掃瞄器一掃就知道第二塊內容是否有效,這一步也就是「交易驗證」。
並且所有交易大家都能接收,都能看到,但卻解不開印章亂碼部分的內容,僅僅收款方才能解開,因為你的掃瞄器和你印章生成的代號是關聯的,有且僅有持有對應掃瞄器的人才能解開交易。
以上就是區塊鏈中「公開記賬」的過程。「公開記賬」就是全網所有人都可以隨時檢視一套賬本,然後按照規則透明公開地進行記賬。
2. 建立創世區塊
創世區塊是我們生成全村公開賬本的第一筆交易的第乙個信封,好比一篇文章總得有個開頭一樣。
於是乎,中本聰說我先生成第乙個transaction,這個交易單的付款人為空,收款人是村長,付款金額是100萬,因為是創世區塊,產出多少個是可以隨意規定的,由於我們上面統計了全村的賬目情況,所以我就寫了100萬,待會兒付款給村長以後,我們可以按照原來的賬本給大家傳送對應的金額過去。
好了,我們有了第一筆交易,第乙個信封也已經做好了。現在讓村長把信封傳給張三,張三影印乙份,然後傳給李四,李四繼續傳下去,一傳十,十傳百,直到傳給全村人,這個步驟也就是「同步區塊」,也就是全網都拿到這個信封,以及信封裡面的transaction。
3. 交易
由於上一節我們的創世區塊把100萬交給了村長,那麼我們假設張三在村長那裡的存款餘額是10萬,這時候村長要根據原來的舊賬本,把這10萬傳送給張三,然後把舊賬本上的賬劃掉。下面我們討論一下如何構造這筆交易。
中本聰開始教村長寫交易單,把100萬分成兩部分,第一部分10萬,收款人是張三;第二部分是90萬,收款人是自己;這樣乙個transaction就做成啦。
前面我們說了,不能直接寫名字,要寫代號,這個代號也就是你的錢包位址,我們需要把收款人寫名字的地方,讓收款人拿出自己印章,把代號讀出來,然後告訴村長即可。
100萬 10萬,張三
90萬,自己
村長寫好 transaction 以後,還需要拿出自己的印章,在transaction上蓋章,這個蓋章的過程也就相當於區塊鏈中的簽名。這個章,全村人都可以拿掃瞄器掃一下驗證是否有效,即驗證付款人的章是否有效。
100萬 10萬,張三的印章(1s25vr)
90萬,村長的印章(13gyip)
就這樣,村長一共寫了10份transaction,分別代表了傳送給不同人的交易,張三一筆10萬,李四一筆1萬,等等。
4. 打包 transaction (挖礦)
現在我們有了transaction,但是還需要東西把transaction裝起來,我們用乙個特殊的信封把transaction裝起來,這個信封就是區塊鏈中的「區塊」,這個封裝過程就是「打包交易」。
為什麼要封裝起來呢?是為了讓打包交易的人能夠在信封上署名,表示這次打包是由某某某打包的,其次全村的交易可能非常多,需要裝配標號,方便大家查詢。
我們看到上述的transaction雖然已經生成,但是有個問題,就是沒有規定誰有權利把transaction封裝到信封裡。
我們在開篇的故事中看到了中心化操作肯定是不行的,假設在全村人中,這時候如何篩選出這些打包的人呢?
中本聰這時候說了,由於我們村的人口增長,100萬未來可能不夠,我們暫定150萬,那多餘的50萬,我們就當獎勵給這些裝信封的人了,當然不能一次性給,誰裝一次信封就領3個幣。
這時候大家夥兒來勁了呀,只要裝信封就能夠領錢了,我們在這裡把符合條件的人稱作「礦工」。
這個難題是這樣的,它有兩大特性,第一是容易驗證,第二是計算過程非常複雜。
例如,有種棋牌類遊戲叫作「24點」,玩法就是給出任意4個整數,通過整數運算得到24,比如現在給出2、9、1、5四個數,答案是(5-2)*(9-1)= 24。當然,本處僅是舉例,「24點」遊戲的答案空間非常小,是遠遠不夠生成信封的。
答案非常好驗證,但是計算過程是乙個嘗試的過程,需要耗費大量的精力。而在真實的位元幣中,採用的是尋找符合條件的目標雜湊,這也就是位元幣礦工所做的事情。
好了,這時候大家開始計算給出的難題,剛好李四第乙個計算出來,那麼這次裝信封的操作就由李四完成,李四把10份transaction裝到信封中,也就是打包transaction,並且要在信封背面寫上乙個信封的摘要資訊。
比如上乙個信封中的第乙個交易是什麼、信封封面長什麼樣,最後要在信封上蓋上章,也就是「簽名」,礦工簽名的目的是為了領幣,也就是 coinbase 交易。
以上過程在區塊鏈領域稱作「打包 transaction」,也就是大名鼎鼎的「挖礦」。
5. 廣播交易
來說說上文提到的廣播交易,廣播是為了讓全村人知道當前時刻你產生了一筆transaction,或者是你裝好了乙個信封。
廣播的內容分兩種,一種是廣播transaction,一種是廣播信封。第一種廣播是意味著還有未被打包的transaction,而第二種廣播信封則意味著這個transaction已經被某個礦工確認。
收到了廣播的通知後,大家先驗證信封上難題的答案是否正確,這樣便可以驗證出信封是否被偽造,接著驗裡面的每筆交易,最後還要驗證信封背面的內容,即上乙個信封的摘要是否正確。因為上乙個信封大家都已經確認,所以這樣可以極大地規避作弊的可能。如果覺得沒問題,就可以存入本地資料庫中了。
至此,全村人的記賬問題就差不多解決啦。
總結
今天我用非常淺顯的例子與你聊了位元幣區塊鏈,其中包括區塊鏈中公開記賬、建立創世區塊、交易、打包transaction、廣播交易的幾個步驟。
因為篇幅所限,在表述上可能會有不精確的部分,但是大體意思是相通的,相信讀完文字,你已經對區塊鏈的原理有了乙個大致的了解。
2 區塊鏈到底是怎麼執行的
由於區塊鏈發展到目前階段,各個技術方向都有長足的發展,介紹最簡單 最容易理解的位元幣區塊鏈 由於大部分區塊鏈都是以位元幣區塊鏈為基礎進行擴充的,所以了解位元幣區塊鏈有助於其他專案區塊鏈的後續學習。引出中心化記賬的問題 首先,我們借鑑了乙個區塊鏈描述中的經典情景來模擬中心化記賬。假設有乙個有百戶居民的...
區塊鏈到底是神馬鬼東西
區塊鏈 的概念火了,但節奏較快的網際網路世界仍有很多人不了解何為 區塊鏈 即便網上有太多介紹此物的 名詞解釋 但也都過於古板和難懂,那麼今天我給大家講個 故事 讓更多使用者秒懂何為 區塊鏈 區塊鏈本質上是乙個分布式的公共賬本,聽起來很矇圈?別急,後面會用最深入淺出的方式來一一解釋。任何人都可以對這個...
區塊鏈應用 區塊鏈火了,這到底是虛火還是實火?
近日,有關區塊鏈的話題引爆了科技創投圈。在前幾日,沾上 區塊鏈概念 的 股價持續拉公升,然而,昨天開盤的股價卻也讓人大跌眼鏡,區塊鏈板塊的概念股全線重挫,十多隻 跌幅都在5 以上,如此大的變動引來眾人的不斷質疑。原子創投合夥人馮一名認為,目前區塊鏈能迅速火爆的原因在於,很多人認為區塊鏈可以能為企業帶...