• <option id="cacee"><noscript id="cacee"></noscript></option>
  • <table id="cacee"><noscript id="cacee"></noscript></table>
  • <td id="cacee"></td>
  • <option id="cacee"></option>
  • <table id="cacee"></table>
  • <option id="cacee"><option id="cacee"></option></option>
  • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
    <option id="cacee"><option id="cacee"></option></option>
     找回密碼
     立即注冊

    掃一掃,登錄網站

    首頁 自媒體 查看內容
    • 1267
    • 0
    • 分享到

    區塊鏈到底是怎么運行的?

    2018-9-25 11:15

    來源: blockchainbrother

    這一篇文章我將以比特幣區塊鏈為例來進行講解,理由有兩個:


    由于區塊鏈發展到目前階段,各個技術方向都有長足的發展,那么為了方便你理解,我在這里介紹最簡單、最容易理解的比特幣區塊鏈;


    由于大部分區塊鏈都是以比特幣區塊鏈為基礎進行擴充的,所以首先了解比特幣區塊鏈有助于其他項目區塊鏈的后續學習。

    中心化記賬的問題


    首先,我們借鑒了一個區塊鏈描述中的經典情景來模擬中心化記賬。


    假設有一個有百戶居民的村子,其中有一位德高望重的村長,村長有一個兒子。村民們都把錢存到村長家,村長負責記賬。比如,張三用1000買了李四家的牛,村長就把張三名下的存款減去1000,李四家加上1000。聽起來是不是很像銀行的操作?


    對,我們就是先從中心化的銀行記賬開始聊起。村民都相信村長,才愿意把錢存到村長家,他們相信村長不會作惡。


    可惜好景不長,老村長由于操勞過度,駕鶴西去了。新上任的村長兒子鐵蛋很是聰明,但也有個毛病,就是粗心大意。他不但經常算錯賬,一次還被人偷改了賬單。


    不過,幸好村民自己都有記賬,但是由于鐵蛋每次錯賬后都要和別人核對半天,導致村民對新村長的記賬能力十分不滿。


    時間就這么過著,然而最可怕的事情還是發生了,鐵蛋的老婆竟然私下篡改賬本,給鐵蛋七大姑八大姨的余額全部偷偷加了好多,終于有一天事情暴露,村民們氣沖沖地跑到鐵蛋家里討說法,于是一片混亂。


    這時候有個叫中本聰的人站了出來,他說他設計了一套系統,可以不依賴任何人記賬,于是,眾人開始將目光集中到他的身上。


    1. 公開記賬


    中本聰說他的系統稍微麻煩一點,需要干三件事兒。


    1. 每家每戶都派發一只信鴿。這就是 P2P網絡,是一個點對點的分布式網絡,如果不好理解,你先不用理會,我會在后面講到。

    2. 每家每戶都發一個特殊的印章和一個掃描器。這個掃描器有兩個功效,一是識別他人的交易是否真實有效,二是識別這個交易是不是自己賬號的,同時識別并解鎖未花費的余額。這就是非對稱加密。

    3. 每家每戶可以參與記賬,不過不再記余額,而是記交易本身的內容。這就是區塊鏈中的交易,這個“交易”對應的英文單詞是“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個幣。


    這時候大家伙兒來勁了呀,只要裝信封就能夠領錢了,我們在這里把符合條件的人稱作“礦工”。


    但是中本聰又說了,要獲得這個裝信封的權利,是有條件的。我給大家出一個難題,誰先解出這個難題的答案,誰就有權利把Transaction裝到一個信封中,并且要在此信封上蓋上自己的章。


    這個難題是這樣的,它有兩大特性,第一是容易驗證,第二是計算過程非常復雜。


    例如,有種棋牌類游戲叫作“24點”,玩法就是給出任意4個整數,通過整數運算得到24,比如現在給出2、9、1、5四個數,答案是(5-2)*(9-1)= 24。當然,本處僅是舉例,“24點”游戲的答案空間非常小,是遠遠不夠生成信封的。


    答案非常好驗證,但是計算過程是一個嘗試的過程,需要耗費大量的精力。而在真實的比特幣中,采用的是尋找符合條件的目標哈希,這也就是比特幣礦工所做的事情。


    好了,這時候大家開始計算給出的難題,剛好李四第一個計算出來,那么這次裝信封的操作就由李四完成,李四把10份Transaction裝到信封中,也就是打包Transaction,并且要在信封背面寫上一個信封的摘要信息。


    比如上一個信封中的第一個交易是什么、信封封面長什么樣,最后要在信封上蓋上章,也就是“簽名”,礦工簽名的目的是為了領幣,也就是 Coinbase 交易。

    以上過程在區塊鏈領域稱作“打包 Transaction”,也就是大名鼎鼎的“挖礦”。


    5. 廣播交易


    來說說上文提到的廣播交易,廣播是為了讓全村人知道當前時刻你產生了一筆Transaction,或者是你裝好了一個信封。


    廣播的內容分兩種,一種是廣播Transaction,一種是廣播信封。第一種廣播是意味著還有未被打包的Transaction,而第二種廣播信封則意味著這個Transaction已經被某個礦工確認。


    收到了廣播的通知后,大家先驗證信封上難題的答案是否正確,這樣便可以驗證出信封是否被偽造,接著驗里面的每筆交易,最后還要驗證信封背面的內容,即上一個信封的摘要是否正確。因為上一個信封大家都已經確認,所以這樣可以極大地規避作弊的可能。如果覺得沒問題,就可以存入本地數據庫中了。


    至此,全村人的記賬問題就差不多解決啦。

    總結


    今天我用非常淺顯的例子與你聊了比特幣區塊鏈,其中包括區塊鏈中公開記賬、創建創世區塊、交易、打包Transaction、廣播交易的幾個步驟。


    因為篇幅所限,在表述上可能會有不精確的部分,但是大體意思是相通的,相信讀完文本,你已經對區塊鏈的原理有了一個大致的了解。


    來源:深入淺出區塊鏈

    版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。
    相關新聞
    發表評論

    請先 注冊/登錄 后參與評論

      回頂部
    • <option id="cacee"><noscript id="cacee"></noscript></option>
    • <table id="cacee"><noscript id="cacee"></noscript></table>
    • <td id="cacee"></td>
    • <option id="cacee"></option>
    • <table id="cacee"></table>
    • <option id="cacee"><option id="cacee"></option></option>
    • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
      <option id="cacee"><option id="cacee"></option></option>
      妖精视频