時間:2023-07-11|瀏覽:280
既然如此,我想嘗試一下另外一種方式,寫一篇文章來解釋區(qū)塊鏈中一些重要的概念,完全不涉及任何編程知識。看看能否讓零編程基礎(chǔ)的同學(xué)理解區(qū)塊鏈的生成原理,并理解區(qū)塊鏈為什么具有去中心化、安全不可篡改的特性。同時解釋一下世界上第一個區(qū)塊鏈應(yīng)用——比特幣,為何在運作時耗費如此多的計算機(jī)資源。
這一切都源于去中心化貨幣的一個核心概念:共識算法。在這篇文章中,我嘗試以不使用任何編程知識的方式來解釋共識算法是什么,為何需要共識算法以及共識算法的原理。
一、分布式賬本
我們需要從賬本開始講起。假設(shè)有一座城市,城市里的每筆交易都通過記賬的方式進(jìn)行。例如,張三給李四理發(fā),收到50塊錢。然后張三去市場買肉,花了30塊錢。那么張三的賬面上還剩下20塊錢。在張三收到更多錢之前,他不能支付超過20塊錢。整個城市只有一份賬本,它記錄了城市里每個人的每一筆交易,以便在每個時期計算每個人賬面上的余額。過去通常是選擇一個記賬人來負(fù)責(zé)記錄每筆交易的流水賬。
然而,這種做法存在一個問題,就是賬本只有一個,如果記賬人故意造假怎么辦?記賬人可以故意漏記一些賬單,甚至偽造賬單。例如,張三支付給王五的30塊錢可能不會被記入賬本,這樣張三就可以不斷地重復(fù)使用賬面上的50塊錢。或者偽造一張趙六支付給張三100塊錢的賬單,這樣張三就可以在沒有收入的情況下額外支付100塊錢。由于賬本只有一個,所以根本無法查證這些操作。所有的人必須相信記賬人是誠實可信的。
為了解決這個問題,后來采取了另一種方式。只要通過記賬資格認(rèn)證的人,都可以成為記賬人。每個記賬人都持有一本賬本,這樣城市里就有很多個賬本。記賬人變得很難作假,因為如果他們作假,賬本就會和其他的賬本不一致。
然而,這種方式帶來了新的問題。有這么多的賬本記錄著整個城市的每一筆交易,如何保證所有的賬本是一致的呢?這時就涉及到共識算法。
二、賬本的統(tǒng)一性,解決方案:共識算法
為了保持這么多個賬本的統(tǒng)一,過去通常的做法是將城市劃分為區(qū)域,每個區(qū)域有一個記賬人負(fù)責(zé)記賬,定時將所有的賬本匯總到一起。然而,這種方式存在漏洞。例如,如果張三在一個區(qū)域消費后,馬上跑到另一個區(qū)域消費。由于賬本還沒有匯總,張三可以利用這個時間差重復(fù)消費。
賬本需要實時,任何時刻都不能有差異。因此,讓很多個賬本保持統(tǒng)一的方式只能是在每次記賬時定義唯一的記賬人。這個記賬人記錄一批賬單后,其他記賬人必須將這批賬單抄錄在自己的賬本上,這樣才能形成任何時刻統(tǒng)一的賬本。而指定唯一的記賬人的方式就是共識算法。共識算法描述了規(guī)則,所有的記賬人如何確定其中一人解決方案就很簡單,每次財務(wù)中心指定一個記賬人來記賬,其他人負(fù)責(zé)抄寫。但財務(wù)中心自身也會存在信任問題。城市里的每個記賬人都是獨立的、平等的,沒有一個中心機(jī)構(gòu)來監(jiān)管他們。每個記賬人還有自己的作息時間,因此無法對他們進(jìn)行編號次序來輪流記賬。
因此,當(dāng)一批賬單產(chǎn)生并等待被記錄時,需要一個競爭機(jī)制。在這個時刻工作的所有記賬人通過某種競賽形式進(jìn)行競爭,競爭成功的記賬人負(fù)責(zé)記賬,而其他人只能抄錄。同時,基于公平的原則,競爭方式不能與記賬人自身某種素質(zhì)有關(guān)。例如,不能競賽舉重,這樣最強(qiáng)壯的人總是負(fù)責(zé)記賬;不能競賽跑步,這樣最快的人總是負(fù)責(zé)記賬。任何一種有偏見的競爭方式都會導(dǎo)致記賬權(quán)力集中,從而引發(fā)信任問題。
因此,唯一的選擇就是:運氣。
熱點:區(qū)塊鏈