1. 簡介
有關區塊鏈的介紹文章太多了,自己讀了很多篇,感徑訓是理解不深,我在這里也以自己的理解來做個說明,個別圖片和表格來自網路,如果原作者認為不合適可以聯系作者洗掉,本文的主要內容已作為ICAA 2021英文會議論文“Overview of the basic principles of blockchain”發表,覺得有必要與國內讀者分享,
作為位元幣的底層實作技術,區塊鏈受到了政府部門和企業的高度關注,并在金融領域和非金融領域展開了廣泛研究與應用,區塊鏈本質上是一個由若干區塊構成的資料鏈,這條資料鏈被分散保存到多個計算機節點,這些計算機節點相互獨立,相互不信任,沒有一個權威的中心節點,因而區塊鏈被認為是一個“去中心化”、“去信任”的系統,在這兩個概念中,“去中心化”是方法,“去信任”是目的,后者需要通過前者來解決;很多人強調前者,但后者才是根本,“去信任”是指去除第三方信任,交易雙方不經過可信的第三方而直接交易,然而,區塊鏈本身并不要求交易雙方互信,交易資料允許存在造假和欺騙,由此導致在位元幣的底層可能同時存在多條區塊鏈,但通過“共識機制”、“獎勵”、“造假懲罰”等措施,最終區塊鏈為位元幣建立了一套可靠的、可信任的解決方案,然而,在一些小型應用中,“共識機制”和“獎勵”并不能從根本上解決“去信任”或資料造假問題,當前開發的很多區塊鏈應用,某種程度上都建立在“信任”的基礎上,與位元幣的區塊鏈有較大區別;即便如此,其中的一些系統仍能解決其他技術所難以解決的問題,并具有較高應用價值,本文重點闡述位元幣的區塊鏈的基本原理,并為基于區塊鏈技術開發應用提供一些合理化建議,
2. 區塊鏈與位元幣
2.1 區塊鏈發展歷史
位元幣是上層應用,區塊鏈是位元幣的底層實作軟體,區塊鏈的發展經歷了三個階段,分別是1.0、2.0、3.0,
區塊鏈1.0是以位元幣為代表的虛擬貨幣時代,實作了貨幣的去中心化與支付手段,涌現出了大量的山寨幣等,區塊鏈1.0支持兩個人之間的虛擬貨幣交易,無法普及到其他行業,
區塊鏈2.0多了智能合約的概念,一個交易允許多個人共同簽名后發送給別人,智能合約給金融領域提供了更加廣泛的應用場景,譬如多方合同下的商品買賣,區塊鏈2.0的代表是以太坊,支持智能合約并提供編程介面,用戶可以開發自己的虛擬貨幣,區塊鏈2.0通常應用于金融領域,
區塊鏈3.0則將區塊鏈應用于金融行業之外的其他行業,區塊鏈3.0被稱為互聯網技術之后的新一代技術創新,足以推動更大的產業改革,由于不再依賴于第三方或某機構獲取信任與建立信用,區塊鏈技術能夠提高整體系統的作業效率,區塊鏈3.0的代表是Hyperledger Fabric,該軟體在交易時不需要手續費,
2.2 位元幣的價值和獲取
位元幣從誕生之日起,具有濃厚的投機性,且缺乏第三方監管,像人民幣、美元、歐元都是依賴國家信用和黃金儲備等而作為流通貨幣,但位元幣的信用卻是一些數學演算法,由于不具備明確的價值基礎,因而在中國被認為是非法活動,
位元幣至少可以通過三種途徑獲得,一是從一些交易網站上購買獲得;二是別人通過位元幣軟體轉賬而獲得;三是通過位元幣軟體挖礦獲得,“挖礦”是區塊鏈的核心概念之一,在后續將逐步對其展開描述,本文不討論非法交易,只是對區塊鏈的基本原理進行探討研究,
3. 兩個數學演算法
區塊鏈采用了兩個基礎的數學演算法:非對稱加密和哈希函式,通過這兩個演算法對資料進行加密和解密,并使得資料很難被第三方破解,
3.1 非對稱加密演算法
對稱加密只有一個密鑰,加密和解密都使用它,譬如,用“123456”作為密碼壓縮一個檔案夾,在解壓時也同樣使用該字串,
非對稱加密則有兩個不同的密鑰:公鑰和私鑰,如果用公鑰對資料進行加密,只有用對應的私鑰才能解密;如果用私鑰對資料進行加密,那么只有用對應的公鑰才能解密,通常將公鑰發給其他人,私鑰自己留著;其他人可以通過公鑰進行加密,但只有自己才有私鑰解密,因而安全性較高,
3.2 哈希演算法
數學中的模運算(取余數)是一種極簡單的哈希演算法,譬如1,2,3,4,5,6,7,10001除以4后的余數分別為1,2,3,0,1,2,3,1,以另一種形式可以寫成:hash(1)=1, hash(2)=2, hash(3)=3, hash(4)=0, hash(5)=1, hash(6)=2, hash(7)=3, hash(10001)=1,可以看出,在哈希演算法中,不同的數可能有相同的值,
科學家們創建了很多更復雜的哈希演算法,譬如MD5、SHA1、SHA256等,下表列出了字串“Hello World!”對應的各個哈希演算法的取值,
| 哈希演算法 | 哈希值 | 二進制位數 |
| MD5 | ED076287532E86365E841E92BFC50D8C | 128 |
| SHA1 | 2EF7BDE608CE5404E97D5F042F95F89F1C232871 | 160 |
| SHA256 | 7F83B1657FF1FC53B92DC18148A1D65DFC2D4B1FA3D677284ADDD200126D9069 | 256 |
這些哈希演算法具有這樣的特點:
- 給定一個字串key,容易計算其哈希值value;
- 給定一個哈希值value,很難推出對應的key,
雖然從理論上來說,可能有多個key對應同一個value,但實際上概率很低,因此,可以近似地認為key與value是一一對應的,value被稱為key的資料指紋,資料指紋意味著很難造假,一個value只能找到一個匹配的key,
4. 區塊鏈邏輯結構
4.1 鏈表
區塊鏈由“區塊”和“鏈”兩個詞組成,“區塊”用于保存資料,對于位元幣來說,大約每10分鐘產生1個區塊,由其存放10分鐘內的所有交易,交易存放的是貨幣所有權從一個人到另外一個人的流轉資訊,每個交易都需要一定的手續費,在區塊鏈中被稱之為“汽油”,
資料鏈有正向鏈、反向鏈、雙向鏈之分,
- 正向鏈,支持從鏈表的頭向后搜索,
- 反向鏈,支持從鏈表的尾部向前回溯搜索,
- 雙向鏈,支持雙向搜索,是一種效率較高的資料結構,
區塊鏈采用反向鏈,便于從后向前追溯,對比幾種鏈表結構,有下列結論,
命題1. 高性能不是區塊鏈考慮的根本因素,
另外,區塊鏈中的第一個區塊被稱之為“創世區塊”,
4.2 去中心化
如圖1所示,左側是一個中心化的架構,節點5中的資料庫可以被其他4個節點所共享,便于讀取和修改操作,
右側是一個去中心化的P2P架構,所有節點對等,并且每個節點都保存一個完整的區塊鏈,這種架構本質上是一種多副本備份機制,具有更好的可靠性,
|
| ? |
| 圖1. 中心化與區塊鏈 | 圖2. 塊結構 |
命題2. 區塊鏈不能太大,
對于位元幣來說,世界上任何人都可以參與挖礦,區塊鏈太大可能導致普通電腦無法保存整個區塊鏈,導致很多人無法參與,10多年以來,當前的區塊鏈只有300g之多,能夠為一般電腦所保存,
命題3. 區塊鏈不要更新太快,
再次強調,這里是指位元幣的區塊鏈,一個區塊需要包括一段時間之內的幾乎所有的交易,由于交易在互聯網的所有節點之間進行傳遞,如果更新太快,則可能有些交易不能被打入區塊鏈;另外,由于所有節點都可以挖礦,互聯網上會存在多個不一致的區塊鏈,
4.3 挖礦
區塊鏈由多個區塊組成,所謂挖礦是指生成一個新區塊的程序,
如圖2所示,一個區塊由區塊頭和區塊體組成[參見: https://cloud.tencent.com/developer/news/167233 ; http://www.woshipm.com/blockchain/1022259.html],
區塊體包含10分鐘內的所有交易,圖中顯示了4個交易,給每個交易求哈希值,得到hash1、hash2、hash3、hash4,然后每兩個再求hash值,一直到最后得到一個hash1234,即為區塊頭中的默克爾根,如果在區塊體中添加、洗掉、修改某一個交易,則默克爾根就會變化,
區塊頭主要包括6個要素:hash(parent)、版本、默克爾根、時間戳、難度目標、亂數,所謂挖礦,就是確定這6個值,
在前一個區塊也包含這6個要素,它們的hash值即為hash(parent),由此可知,如果某一個區塊造假,則需要修改它后面所有區塊的hash(parent),難度很大,
為了使得每10分鐘生成一個區塊,設定了難度目標值,隨著計算機的性能越來越高,該值是動態變化的,如下面公式所示,系統每隔2016 個區塊會根據上一周期的挖礦時間來調整挖礦難度,對于一個具體的區塊而言,該值是固定不變的,
DifficultyTarget = 0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/Difficulty
從這里可以查到,第674000區塊的難度為21,448,277,761,059.70,從674001區塊查到第674000區塊中6個要素的哈希值如下,這個哈希值前面有19個0,要滿足這個條件就必須進行大量的計算,求出其他的幾個要素,
00000000000000000007f8d1652e3bf35c9d2672be4834fef6ebc6f1c407bd8c
在6個要素中,hash(parent)、版本、默克爾根、難度目標都是固定的,時間戳表示區塊生成的時間,亂數是可變的,在分布式系統中,不要求每個計算機的時鐘完全一致,時間戳的變化對別人而言意義不大;因而為了簡化挖礦難度,時間戳也可以事先確定,這樣,在6個要素中只需要求出亂數,
亂數通常從0開始一個個地嘗試,看6個要素的哈希值是否滿足難度,如果某個亂數滿足難度,就表示挖礦成功,新的區塊生成后被廣播到相鄰的其他節點,
第674000區塊的亂數為4,275,554,107,可見挖礦的作業量挺大,在區塊鏈中,把這樣的作業量叫做作業量證明POW,
從事挖礦的人稱為礦工,由于第1個挖礦成功的人會有位元幣獎勵,并且能識訓所有交易的手續費,因而礦工都在想方設法提高挖礦效率,
命題4. 高性能是礦工追求的因素,
4.4 共識機制
若同一時段只有一個合法區塊被生產出來,而沒有與之競爭的其他合法區塊,該區塊將會被接收;若存在競爭區塊,則51%以上的節點確認,累計難度最大且最長的鏈最侄訓被接收,沒有被接收的其他合法區塊則成為孤塊,被淘汰出局,
所謂共識機制,即指得到大多數(51%以上)節點確認,
4.5 去信任
在互聯網中,節點之間沒有絕對的信任,實際上,如果大多數節點都造假,則區塊鏈將沒有價值,為了防止造假,除了去中心化外,區塊鏈至少還采用了下面幾項措施,
- 當一個節點收到另一個節點的區塊后,會通過哈希值對區塊鏈進行檢查確認,如果區塊鏈造假或者不是最長的區塊鏈,則丟棄,
- 挖礦成功會有獎勵,并且能獲得該區塊中所有交易的手續費,自從中本聰創建第1個區塊并獲得50枚位元幣后,每挖出21萬個區塊(大約4年)后,獎勵減半,當沒有獎勵后仍能獲得手續費,
- 造假代價很大,對于區塊1、區塊2、...、區塊n構成的區塊鏈,如果區塊1造假,則需要重新計算該區塊的亂數;從而導致區塊2中的hash(parent)變化,又需要重新計算區塊2的亂數;進而需要計算后續所有區塊的亂數,實際上,如果造假者的算力超過全網51%挖礦節點的算力,則造假成功,
命題5. 區塊鏈造假代價很高,
5. 區塊鏈型別
區塊鏈分為三種型別:公有鏈、私有鏈、聯盟鏈,
5.1 公有鏈
位元幣的區塊鏈是一種公有鏈,它有如下特點,
1)公有的、全開放的、去中心化;
2)資料全網公開,不適合銀行、政府、證券等;
3)不能篡改資料;
4)處理交易速度慢、效率低:全網節點共同參與,每個節點都參與決策(判斷真偽);
5)如果發行電子貨幣,則是各國政府所不能支持的行為,
私有鏈、聯盟鏈就是對公有鏈的開放性、效率進行改進的結果,
5.2 私有鏈
私有鏈不對外開放,只有被授權節點才能參與,是部分“去中心化”的區塊鏈,主要用戶有金融機構、大型企業、政府部門等,譬如央行發行的數字貨幣,只能由央行進行記賬,個人不能參與,另外,阿里、百度、京東等大型公司也會構建自己的私有鏈,側重區塊鏈的資料安全,
5.3 聯盟鏈
聯盟鏈也稱行業鏈,是公司與公司、組織與組織之間構建的區塊鏈,通常選定多個節點參與區塊共識決策,其他節點僅參與交易而不參與決策,這是一種“多中心化”的區塊鏈,用戶群體包括銀行、證券、保險、集團企業等,
6. 區塊鏈應用
6.1 應用開發考慮
隨著區塊鏈技術的發展,越來越多的區塊鏈應用開始出現,特別是由于政府的鼓勵支持,需要避免不結合實際情況而一窩蜂地采用區塊鏈技術的過熱情形,在確定采用區塊鏈技術開發應用之前,需要從下面幾個方面來綜合考慮,
- 傳統方法,一個應用如果能夠采用傳統方法來實作,則不必采用區塊鏈技術,
- 去中心化,去中心化只是意味著資料的多個副本,不是采用區塊鏈的絕對理由,資料庫MySQL、Oracle、MongoDB以及分布式存盤系統Ceph等都支持多副本,并且具有很高的性能,
- 去信任,去信任意味著需要防止資料造假,這是采用區塊鏈的一個理由,
- 可追溯,區塊鏈可以對資料造假進行追溯,資料庫一般不具有可追溯特點,這也是采用區塊鏈的一個理由,
性能,如果應用頻繁更新,采用區塊鏈意味著資料量很大,需要很大的存盤設備,對于一些不具備條件的應用則不適合,另外,在區塊鏈中檢索資料極不方便,效率極低,
6.2 融合傳統資料庫的開發方法
在確定采用區塊鏈技術開發應用之后,需要考慮一個問題:是否將所有資料都保存到區塊鏈?
區塊鏈在性能、資料檢索等方面都不如傳統資料庫;另外,如果所有資料都保存到區塊鏈,則會特別大,一種可行的方法是在應用中采用“區塊鏈+資料庫”的方式來保存資料,那些防止造假需要追溯的重要資訊可放到區塊鏈,其他資訊則放到資料庫,在區塊鏈應用方面,資料通常保存在多處,因此資料庫應具有性能高、支持多備份的特點;甚至可以采用高性能、高可用、高可擴展的Ceph分布式存盤系統來保存資料,
7. 總結
區塊鏈具有“去中心化”、“去信任”、“去第三方”的特點,本質上是一個分布式資料存盤系統,將區塊鏈保存到多個計算機節點,通過“共識機制”、“獎勵”、“造假懲罰”等措施,最終區塊鏈為位元幣建立了一套可靠的、可信任的解決方案,然而,區塊鏈也存在一些缺點,包括性能較差、檢索困難等,進而出現了公有鏈、私有鏈、聯盟鏈等適合不同應用場合的型別,私有鏈和聯盟鏈在某種程度上已經不再是“去中心化”、“去信任”的區塊鏈,在開發應用時,應綜合考慮多種因素來確定是否有必要采用區塊鏈技術;在一些區塊鏈應用中,可以采用“區塊鏈+資料庫”的方式來保存資料,即將需要追溯的關鍵資訊保存到區塊鏈,而其他資訊保存到資料庫或分布式存盤系統,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/300799.html
標籤:區塊鏈
上一篇:IPFS/Filecoin迎來web3.0時代,FIL幣價即將爆發!年底超500U?
下一篇:盜U秒U偷USDT的東西

?
?