區塊鏈30核心技術
『壹』 主流區塊鏈技術有哪些
本文試圖對區塊鏈有關技術流派和主流平台進行一個概覽,作為學習區塊鏈技術體系的導覽,意在拋磚引玉,促進區塊鏈開發社區的討論與共識。區塊鏈技術的流派未戰先謀局,你想投入區塊鏈開發這個領域,至少先要搞清楚現在有哪些玩家,各自的主張和實力如何。劃分區塊鏈技術流派並無一定之規,據我所見,或可有以下四種方式:第一是按照節點准入規則,劃分為公有鏈、私有鏈和聯盟鏈。公有鏈的代表自然是比特幣和以太坊,私有鏈則以R3 Corda聲名最盛,聯盟鏈的代表作品是Hyperledger名下的Fabric。公有鏈注重匿名性與去中心化,而私有鏈及聯盟鏈注重高效率,而且還往往設置了准入門檻。公有鏈、私有鏈與聯盟鏈之間的這些不同都在技術中有所體現,比如私有鏈和聯盟鏈假設節點數目不大,可以採用PBFT演算法來形成共識。而公有鏈假設有大量且不斷動態變化的節點網路,用PBFT效率太低,只能採用類似抽彩票的演算法來確定意見領袖。這就意味著,私有鏈與聯盟鏈很難變成公有鏈,而用公有鏈來作聯盟鏈或私有鏈雖然容易,卻也並非即插即用。此種差異,學者不可不察。第二是按照共享目標,劃分為共享賬本和共享狀態機兩派。比特幣是典型的共享賬本,而Chain和BigchainDB也應屬此類,這幾個區塊鏈系統在各個節點之間共享一本總賬,因此對接金融應用比較方便。另一大類區塊鏈系統中,各個節點所共享的是可完成圖靈完備計算的狀態機,如以太坊、Fabric,它們都通過執行智能合約而改變共享狀態機狀態,進而達成種種復雜功能。第三是按照梅蘭妮· 斯旺所描述的代際演進,將區塊鏈系統分為1.0、2.0和3.0三代。其中1.0支撐去中心化交易和支付系統,2.0通過智能合約支撐行業應用,3.0支撐去中心化的社會體系。比特幣和Chain應屬於區塊鏈1.0系統,而以太坊和Fabric是區塊鏈2.0系統,目前尚無成功的區塊鏈3.0系統出現,不成功的嘗試倒是有那麼一個,就是著名的The DAO。第四是按照核心數據結構,分為區塊鏈和分布式總賬兩派。區塊鏈這一派在系統中真的實現了一個區塊的鏈作為核心數據結構,而分布式總賬這一派,只是吸取了區塊鏈的精神,並沒有真用一條區塊鏈作為核心數據結構,或者雖然暫時用了,但聲明說吾項庄舞區塊鏈,意在分布式總賬耳,若假以時日,因緣際會,未嘗不可取而代之也。主流區塊鏈技術平台了解流派劃分,仍是只能用來指點江山,吹牛論道,要動手,總要有個切入點。區塊鏈貨幣據說已經有上千個了,但值得關注的技術平台大概只有數十個,而如果要進入區塊鏈開發領域,打下一個好基礎,練出一身好功夫,撈到幾個好offer,則值得深入研究學習的平台,屈指可數。首先當然是比特幣。比特幣作為區塊鏈的第一個也是目前為止最成功、最重要的樣板工程,已經上線運行了八年多,本身沒有發生任何嚴重的安全和運維事故,其穩定與強悍堪稱當代軟體系統典範。比特幣Bitcoin Core是一個代碼質量高、文檔良好的開源軟體,從學習區塊鏈原理、掌握核心技術的角度來說,Bitcoin Core是最佳切入點,能夠學到原汁原味的區塊鏈技術。當然,Bitcoin Core是用C++寫的,而且用了一些C++11和Boost庫的機制,對學習者的C++水平提出了較高的要求。學習比特幣平台開發還有一個優勢,就是可以對接繁榮的比特幣技術社區。目前圍繞比特幣進行改進和提升的人很多,人多力量就大,諸如隔離驗證、閃電網路、側鏈等比較新的想法和技術,都率先在比特幣社區里落地。比如側鏈技術的主要領導者Blockstream是由密碼學貨幣元老Adam Back領銜的,而Blockstream是Bitcoin Core最大的貢獻者之一,所以一些有關側鏈的技術在比特幣社區里討論最充分。但比特幣作為一個典型的區塊鏈1.0系統,是不是支撐其他類型區塊鏈應用的最佳技術平台,存在很大的爭議。另外,也不是所有人都有能力和必要精通區塊鏈底層技術。所以對那些急於沖到區塊鏈領域里做(quān)事(qián)的人來說,可能更直截了當的學習目標是以太坊和Hyperledger Fabric。在以太坊上面用Solidity進行的智能合約開發是切入區塊鏈開發最簡單的方式,沒有之一。以太坊的理想非常宏大,由於配備了強大的圖靈完備的智能合約虛擬機,因此可以成為一切區塊鏈項目的母平台,是馱住整個區塊鏈世界的大烏龜。在以太坊上開發一個類似比特幣的加密貨幣,是一個不折不扣的小目標。一般有經驗的開發者在文檔指導下,半天到一天即可入門。問題在於,入門以後又如何?靠寫Solidity是否就可以包打天下?這是大大存疑的。我們也可以反過來說,如果以太坊+Solidity是區塊鏈的終極解決方案,那麼怎麼還會出現那麼多區塊鏈技術門派呢?特別是,以太坊似乎並沒有給現實世界中巨型的中心化組織們留下一條活路,這種徹底不妥協的革命態度有可能也成為以太坊推廣的障礙。當前以太坊項目的開發進展並不順利。一個比較突出的問題是項目過多,力量分散,導致項目質量參差不齊。但盡管如此,跟其他區塊鏈2.0平台相比,以太坊提供的開發環境是最簡單最完善的。初學區塊鏈的人絕對有必要學習以太坊,從而對區塊鏈和智能合約建立起一個最「正宗」的認識。主流區塊鏈技術平台的第三支就是Fabric,它是Hyperledger的第一個也是最知名的孵化項目。 Fabric最早來自IBM的Open Blockchain項目,到2015年11月,IBM將當時已經開發完成的44,000行Go語言代碼交給Linux基金會,並入Hyperledger項目之中。在2016年3月一次黑客馬拉松中,Blockstream和DAH兩家公司將各自的代碼並入Open Blockchain,隨後改名為Fabric。到目前為止,Fabric與Intel提供的Sawtooth Lake並列為Hyperledger的一級孵化項目,但前者得到的關注遠超後者。從技術角度來說,Fabric思路不錯,重點是滿足企業商用的需求,比如解決交易量問題。眾所周知,比特幣最大的短板是它每秒鍾7個交易的上限,完全無法滿足現實需要。而Fabric目標是實現每秒鍾10萬交易,這個量接近剛剛過去的雙十一交易量瞬時峰值,完全可以滿足正常條件下的行業級應用。Fabric用Go語言開發,也提供多種語言的API。特別值得一提的是,Fabric比較充分地運用了容器技術,比如其智能合約就運行在容器當中。這也是Go語言帶給Fabric的一項福利,因為Go語言靜態編譯部署的特徵很適合開發容器中的程序。Fabric還有一些特點,比如其membership服務可以設置節點准入審查,這是典型的聯盟鏈特徵。再比如其共識演算法是可定製的。Fabric的短板是體系較為復雜,雖有文檔,但缺少經驗的開發者學習起來障礙比較大。然而由於其定位清楚,迎合了不少企業的心態,所以已經有多家機構在基於Fabric秘密研發行業內的聯盟鏈項目。
『貳』 區塊鏈的核心技術是什麼
區塊鏈運作的7個核心技術介紹
2018-01-15
1.區塊鏈的鏈接
顧名思義,區塊鏈即由一個個區塊組成的鏈。每個區塊分為區塊頭和區塊體(含交易數據)兩個部分。區塊頭包括用來實現區塊鏈接的前一區塊的哈希(PrevHash)值(又稱散列值)和用於計算挖礦難度的隨機數(nonce)。前一區塊的哈希值實際是上一個區塊頭部的哈希值,而計算隨機數規則決定了哪個礦工可以獲得記錄區塊的權力。
2.共識機制
區塊鏈是伴隨比特幣誕生的,是比特幣的基礎技術架構。可以將區塊鏈理解為一個基於互聯網的去中心化記賬系統。類似比特幣這樣的去中心化數字貨幣系統,要求在沒有中心節點的情況下保證各個誠實節點記賬的一致性,就需要區塊鏈來完成。所以區塊鏈技術的核心是在沒有中心控制的情況下,在互相沒有信任基礎的個體之間就交易的合法性等達成共識的共識機制。
區塊鏈的共識機制目前主要有4類:PoW、PoS、DPoS、分布式一致性演算法。
3.解鎖腳本
腳本是區塊鏈上實現自動驗證、自動執行合約的重要技術。每一筆交易的每一項輸出嚴格意義上並不是指向一個地址,而是指向一個腳本。腳本類似一套規則,它約束著接收方怎樣才能花掉這個輸出上鎖定的資產。
交易的合法性驗證也依賴於腳本。目前它依賴於兩類腳本:鎖定腳本與解鎖腳本。鎖定腳本是在輸出交易上加上的條件,通過一段腳本語言來實現,位於交易的輸出。解鎖腳本與鎖定腳本相對應,只有滿足鎖定腳本要求的條件,才能花掉這個腳本上對應的資產,位於交易的輸入。通過腳本語言可以表達很多靈活的條件。解釋腳本是通過類似我們編程領域里的「虛擬機」,它分布式運行在區塊鏈網路里的每一個節點。
4.交易規則
區塊鏈交易就是構成區塊的基本單位,也是區塊鏈負責記錄的實際有效內容。一個區塊鏈交易可以是一次轉賬,也可以是智能合約的部署等其他事務。
就比特幣而言,交易即指一次支付轉賬。其交易規則如下:
1)交易的輸入和輸出不能為空。
2)對交易的每個輸入,如果其對應的UTXO輸出能在當前交易池中找到,則拒絕該交易。因為當前交易池是未被記錄在區塊鏈中的交易,而交易的每個輸入,應該來自確認的UTXO。如果在當前交易池中找到,那就是雙花交易。
3)交易中的每個輸入,其對應的輸出必須是UTXO。
4)每個輸入的解鎖腳本(unlocking
)必須和相應輸出的鎖定腳本(locking
)共同驗證交易的合規性。
5.交易優先順序
區塊鏈交易的優先順序由區塊鏈協議規則決定。對於比特幣而言,交易被區塊包含的優先次序由交易廣播到網路上的時間和交易額的大小決定。隨著交易廣播到網路上的時間的增長,交易的鏈齡增加,交易的優先順序就被提高,最終會被區塊包含。對於以太坊而言,交易的優先順序還與交易的發布者願意支付的交易費用有關,發布者願意支付的交易費用越高,交易被包含進區塊的優先順序就越高。
6.Merkle證明
Merkle證明的原始應用是比特幣系統(Bitcoin),它是由中本聰(Satoshi
Nakamoto)在2009年描述並且創造的。比特幣區塊鏈使用了Merkle證明,為的是將交易存儲在每一個區塊中。使得交易不能被篡改,同時也容易驗證交易是否包含在一個特定區塊中。
7.RLP
RLP(Recursive
Length
Prefix,遞歸長度前綴編碼)是Ethereum中對象序列化的一個主要編碼方式,其目的是對任意嵌套的二進制數據的序列進行編碼。
『叄』 區塊鏈的核心技術:共識機制&智能合約
不論你是否接受,未來終將改變。
區塊鏈技術給數字經濟時代帶來了巨變的曙光。
這種巨變在互聯網近50年的歷史上曾發生過兩次。第一次巨變是全球性的聯
網……第二次巨變是全球性的應用……第三次巨變正在蘊釀。
————摘自《騰訊區塊鏈方案白皮書》
當第一次讀到這段時,完全不敢想像這是一家世界級企業對一項新技術的評價,
瞬間引起了我的興趣。「巨變」是什麼含義?就是說完全有可能顛覆我們現有的
經濟結構和認知,徹底改變我們的生活方式。
一種從2009年才誕生的比特幣技術中 抽象而來的block chain(區塊鏈)技術,
居然獲得了這么高的評價,這難道不是很神奇的一件事么?不管這件事會不會發
生,已經令人非常激動了,我們正在迎接一項變革並且可能參與其中,不是任何
時代的人都有這種機會,何其幸運!
不論你是否接受,未來終將改變。全球眾多經濟學家、企業家、國家政要都在推
崇區塊鏈,聲稱區塊鏈技術將重塑商業、貨幣和世界,將顛覆互聯網、銀行、證
券、保險、物流、電力、製造、會計稅收、法律服務、文化創業、醫葯衛生等眾
多行業。
雖然說到「區塊鏈」,大家都會提到「去中心化」,也舉了很多形象的例子。但
是我是一個較真的人,希望能夠找到大家做出這種判斷,背後的邏輯到底是什
么?就需要搞懂一切推斷背後的本質,就需要了解區塊鏈的核心技術邏輯。
閱讀了一些書籍和資料之後,拋開「比特幣」不說,要了解區塊鏈,有兩個核心
名詞:共識機制、智能合約。
共識機制是區塊鏈技術的核心,要搞清楚」共識機制「,就不得不提著名的「拜
占庭將軍問題」,拜占庭將軍問題由萊斯利·蘭伯特提出的點對點通信中的基本
問題,主要是用於分析在分布式節點傳輸信息時如何保持數據的一致,即共識這
個問題。
拜占庭將軍問題
一組拜占庭將軍分別各率領一支軍隊共同圍困一座城市。為了簡化問題,將各支
軍隊的行動策略限定為進攻或撤離兩種。
因為部分軍隊進攻部分軍隊撤離可能會造成災難性後果,因此各位將軍必須通過
投票來達成一致策略,即所有軍隊一起進攻或所有軍隊一起撤離。因為各位將軍
分處城市不同方向,他們只能通過信使互相聯系。
在投票過程中每位將軍都將自己投票給進攻還是撤退的信息通過信使分別通知其
他所有將軍,這樣一來每位將軍根據自己的投票和其他所有將軍送來的信息就可
以知道共同的投票結果而決定行動策略。
系統的問題在於,將軍中可能出現叛徒,他們不僅可能向較為糟糕的策略投票,
還可能選擇性地發送投票信息。這樣各支軍隊的一致協同就遭到了破壞。由於將
軍之間需要通過信使通訊,叛變將軍可能通過偽造信件來以其他將軍的身份發送
假投票。而即使在保證所有將軍忠誠的情況下,也不能排除信使被敵人截殺,甚
至被敵人間諜替換等情況。因此很難通過保證人員可靠性及通訊可靠性來解決問
題。
假始那些忠誠的將軍仍然能通過多數決來決定他們的戰略,便稱達到了拜占庭容
錯。
拜占庭將軍問題被認為是容錯性問題中最難的問題類型之一。在一個有n個節點的
系統中,每一個節點都有一個輸入的值,其中一些節點具有故障,甚至是惡意
的。
在分布式計算中,不同的計算機通過通訊交換信息達成共識而按照同一套協作策
略行動。但有時候,系統中的成員計算機可能出錯而發送錯誤的信息,用於傳遞
信息的通訊網路也可能導致信息損壞,使得網路中不同的成員關於全體協作的策
略得出不同結論,從而破壞系統一致性。
但是中本聰在設計比特幣系統時應用的「工作量證明鏈」(PoW)模型很好的解決
了共識問題,至於什麼是「PoW」,感興趣的可以研究下。
智能合約是一套以數字形式定義的承諾(promises) ,包括合約參與方可以在
上面執行這些承諾的協議。一個合約就是存在區塊鏈里的程序。合約的參與雙方
將達成的協議提前安裝到區塊鏈系統中。在雙方的約定完成後,開始執行合約,
不能修改。至於合約執行所需要的「燃料」,也就是手續費,也需要提前支付。
智能合約可以解決日常生活中常見的違約問題,如果應用到各行業中,可以避免
違約的信用問題。
在區塊鏈出現之前,商業領域的信任關系通常要依賴於正直、誠信的個人、中介
機構或其他組織才能建立起來。在區塊鏈這個新興的領域中,信任關系的建立是
基於網路,甚至是網路上的某個對象。由區塊鏈驅動的智能合約將會要求雙方遵
守他們的承諾。
在區塊鏈體系中,共識機制和智能合約,保證了數據的真實性和合約執行力,實
現「去中心化」。當然還有很多技術層面的東西沒有說到,感興趣的可以深入了
解下。
雖然大部分人對於區塊鏈的認知還停留在比特幣、各種代幣上,也就是對金融行
業的變革。但是了解區塊鏈核心邏輯後,結合自己所在的行業「區塊鏈 +」,區
塊鏈的各行業的應用剛進前半場,相信都會想到很多好的創新方向。
『肆』 區塊鏈的核心技術是什麼
簡單來說,區塊鏈是一個提供了拜占庭容錯、並保證了最終一致性的分布式資料庫;從數據結構上看,它是基於時間序列的鏈式數據塊結構;從節點拓撲上看,它所有的節點互為冗餘備份;從操作上看,它提供了基於密碼學的公私鑰管理體系來管理賬戶。
或許以上概念過於抽象,我來舉個例子,你就好理解了。
你可以想像有 100 台計算機分布在世界各地,這 100 台機器之間的網路是廣域網,並且,這 100 台機器的擁有者互相不信任。
那麼,我們採用什麼樣的演算法(共識機制)才能夠為它提供一個可信任的環境,並且使得:
節點之間的數據交換過程不可篡改,並且已生成的歷史記錄不可被篡改;
每個節點的數據會同步到最新數據,並且會驗證最新數據的有效性;
基於少數服從多數的原則,整體節點維護的數據可以客觀反映交換歷史。
區塊鏈就是為了解決上述問題而產生的技術方案。
二、區塊鏈的核心技術組成
無論是公鏈還是聯盟鏈,至少需要四個模塊組成:P2P 網路協議、分布式一致性演算法(共識機制)、加密簽名演算法、賬戶與存儲模型。
1、P2P 網路協議
P2P 網路協議是所有區塊鏈的最底層模塊,負責交易數據的網路傳輸和廣播、節點發現和維護。
通常我們所用的都是比特幣 P2P 網路協議模塊,它遵循一定的交互原則。比如:初次連接到其他節點會被要求按照握手協議來確認狀態,在握手之後開始請求 Peer 節點的地址數據以及區塊數據。
這套 P2P 交互協議也具有自己的指令集合,指令體現在在消息頭(Message Header) 的 命令(command)域中,這些命令為上層提供了節點發現、節點獲取、區塊頭獲取、區塊獲取等功能,這些功能都是非常底層、非常基礎的功能。如果你想要深入了解,可以參考比特幣開發者指南中的 Peer Discovery 的章節。
2、分布式一致性演算法
在經典分布式計算領域,我們有 Raft 和 Paxos 演算法家族代表的非拜占庭容錯演算法,以及具有拜占庭容錯特性的 PBFT 共識演算法。
如果從技術演化的角度來看,我們可以得出一個圖,其中,區塊鏈技術把原來的分布式演算法進行了經濟學上的拓展。
在圖中我們可以看到,計算機應用在最開始多為單點應用,高可用方便採用的是冷災備,後來發展到異地多活,這些異地多活可能採用的是負載均衡和路由技術,隨著分布式系統技術的發展,我們過渡到了 Paxos 和 Raft 為主的分布式系統。
而在區塊鏈領域,多採用 PoW 工作量證明演算法、PoS 權益證明演算法,以及 DPoS 代理權益證明演算法,以上三種是業界主流的共識演算法,這些演算法與經典分布式一致性演算法不同的是,它們融入了經濟學博弈的概念,下面我分別簡單介紹這三種共識演算法。
PoW: 通常是指在給定的約束下,求解一個特定難度的數學問題,誰解的速度快,誰就能獲得記賬權(出塊)權利。這個求解過程往往會轉換成計算問題,所以在比拼速度的情況下,也就變成了誰的計算方法更優,以及誰的設備性能更好。
PoS: 這是一種股權證明機制,它的基本概念是你產生區塊的難度應該與你在網路里所佔的股權(所有權佔比)成比例,它實現的核心思路是:使用你所鎖定代幣的幣齡(CoinAge)以及一個小的工作量證明,去計算一個目標值,當滿足目標值時,你將可能獲取記賬權。
DPoS: 簡單來理解就是將 PoS 共識演算法中的記賬者轉換為指定節點數組成的小圈子,而不是所有人都可以參與記賬。這個圈子可能是 21 個節點,也有可能是 101 個節點,這一點取決於設計,只有這個圈子中的節點才能獲得記賬權。這將會極大地提高系統的吞吐量,因為更少的節點也就意味著網路和節點的可控。
3、加密簽名演算法
在區塊鏈領域,應用得最多的是哈希演算法。哈希演算法具有抗碰撞性、原像不可逆、難題友好性等特徵。
其中,難題友好性正是眾多 PoW 幣種賴以存在的基礎,在比特幣中,SHA256 演算法被用作工作量證明的計算方法,也就是我們所說的挖礦演算法。
而在萊特幣身上,我們也會看到 Scrypt 演算法,該演算法與 SHA256 不同的是,需要大內存支持。而在其他一些幣種身上,我們也能看到基於 SHA3 演算法的挖礦演算法。以太坊使用了 Dagger-Hashimoto 演算法的改良版本,並命名為 Ethash,這是一個 IO 難解性的演算法。
當然,除了挖礦演算法,我們還會使用到 RIPEMD160 演算法,主要用於生成地址,眾多的比特幣衍生代碼中,絕大部分都採用了比特幣的地址設計。
除了地址,我們還會使用到最核心的,也是區塊鏈 Token 系統的基石:公私鑰密碼演算法。
在比特幣大類的代碼中,基本上使用的都是 ECDSA。ECDSA 是 ECC 與 DSA 的結合,整個簽名過程與 DSA 類似,所不一樣的是簽名中採取的演算法為 ECC(橢圓曲線函數)。
從技術上看,我們先從生成私鑰開始,其次從私鑰生成公鑰,最後從公鑰生成地址,以上每一步都是不可逆過程,也就是說無法從地址推導出公鑰,從公鑰推導到私鑰。
4、賬戶與交易模型
從一開始的定義我們知道,僅從技術角度可以認為區塊鏈是一種分布式資料庫,那麼,多數區塊鏈到底使用了什麼類型的資料庫呢?
我在設計元界區塊鏈時,參考了多種資料庫,有 NoSQL 的 BerkelyDB、LevelDB,也有一些幣種採用基於 SQL 的 SQLite。這些作為底層的存儲設施,多以輕量級嵌入式資料庫為主,由於並不涉及區塊鏈的賬本特性,這些存儲技術與其他場合下的使用並沒有什麼不同。
區塊鏈的賬本特性,通常分為 UTXO 結構以及基於 Accout-Balance 結構的賬本結構,我們也稱為賬本模型。UTXO 是「unspent transaction input/output」的縮寫,翻譯過來就是指「未花費的交易輸入輸出」。
這個區塊鏈中 Token 轉移的一種記賬模式,每次轉移均以輸入輸出的形式出現;而在 Balance 結構中,是沒有這個模式的。
『伍』 區塊鏈的作用和特點是什麼
區塊鏈正在開始一場對貨幣的革命。區塊鏈應該是具有比特特性的流動性,而不再是貨幣特性。
根據拉德克利夫報告中指出「只有流動性才是貨幣政策影響經濟的傳導機制」,人們的支出並不受現存貨幣量的限制,而只是通人們預期他們能得到的貨幣量有關,這些貨幣可能是作為收入而獲得的,也可能是通過出賣資產而獲得的,抑或是借來的。區塊鏈通過token來標記價值,所有資產都能夠被極簡易的在區塊鏈上表達,資產交易所的構造和邊際成本趨於零。毛球科技技術研究部認為,這是區塊鏈的核心技術之一,它所帶來的是在零邊際成本場景下,流動性的爆發。
只有流動性才是區塊鏈價值的傳導機制
貨幣的流動性通俗來講是指貨幣在流通過程中不發生損失的情況下迅速變現的能力。而隨著信息化進程加劇,要求貨幣更具有簡便、快速的交易,紙幣現在流動性的變現形式已經遠低於電子貨幣。
互聯網金融時代下,「流動性」完全可以解釋為「超越紙幣形式表現價值的信息流」。
我們都知道,中央銀行體質離開了對價值背後的信息流的控制就無法生存。因為中央銀行貨幣政策的實質,就是控制價值信息流,或乾脆說否定「信息流」。這也是幾年來通貨膨脹加劇的原因之一。
而電子貨幣之所以逐漸強於紙幣的流動性特徵在於,紙幣價值在互聯網昌盛之前,是因為它能夠提供高於像黃金、白銀等信息流價值。所以,電子貨幣的實質也就是直接的價值交換,形式載體是數字信號通過網路交換的信息。這與「流動性」的特徵也就完全相符合。
雖然在上個世紀無從得知區塊鏈的情況,但是基於流動性分析,還是准確把握了貨幣後世的價值特徵。而現在對於區塊鏈,人們大多數談的都是它的技術方面,很少觸及到價值內容方面。
但是,如果各央行「量化寬松被區塊鏈追蹤到利益的流向,技術馬上就會「現形」為利益。
區塊鏈是分布式的一般等價物,還是分布式的具體使用價值
區塊鏈可以對交易的貨幣流動事實進行分布式的記錄和計量,在基於區塊鏈技術的分布式交易記錄系統中,各節點成為獨立的產品消費者,各主體平等分散決策,所有交易公開,交易節點可以匿名,保證節點賬戶的安全性,分散化管理無需中心伺服器,規避昂貴的運維費用,降低成本。
區塊鏈雖然形式上與貨幣相比,去中心化了,但它處理的流動性,仍然是基於一般等價物。
我們都知道區塊鏈的出現基於日益嚴重的中心化問題,從一般等價物理論來看,一般等價物的出現是因為現存價值形式的等價物不能適應日益增長的交換需要,所以需要一種新的等價物出現,來補足現存等價物的缺點。
法國生物學家雅克·莫諾在1970年出版的《必然性和偶然性》中提到:事物的發展存在必然性。區塊鏈之所以被設計為一般等價物的流動性賬簿,也就不言而喻了。當然,根據中國社科院信息化研究中心姜奇平「區塊鏈與貨幣哲學」的觀點,區塊鏈現在僅僅是被設計為一般等價物的分布式系統,如果未來不再是一般等價物特徵唱主角,那麼未來的流動性將需要在利用、使用、服務應用中體現價值。所以毛球科技技術研究部認為,未來區塊鏈不應該只在技術上體現分布不分布,更應該體現在具體價值應用上面。
海德格爾在他的巨著《存在與時間》中提出了哲學概念:此在。這里用來形容區塊鏈再好不過,即上帝不會甘於作記帳手段,他要活在當下與此在的目的中。意思是,區塊鏈要長久的發展,那麼就必須發展出一種情境化使用的功能,作為此在存在者,而不是曇花一現。
區塊鏈如果不再是一般等價物,如何看待流動性
從姜奇平流動性的觀點看,貝殼、貨幣、區塊鏈是流動性在不同歷史時期,不同價值邏輯下的不同載體。貨幣作為流動性,忽略掉價值的使用特徵,這種使用特徵從來是具體的、本地的、當下的,因而只能是分布式的。
毛球科技技術研究部認為,區塊鏈在抓住貨幣這種流動性的分布式特徵時,雖然早期會把它當一般等價物的記帳薄應用,但最終必然要對其進行否定之否定,發展出一種對應服務的估值功能。
『陸』 區塊鏈的技術創新與應用有哪些
一、區塊鏈系統
作為比特幣的底層技術,區塊鏈系統一般由數據層、網路層、共識層、激勵層、合約層和應用層組成。
1.數據層
數據層封裝了底層數據區塊及相關的數據加密和時間戳等基礎數據和基本演算法,主要描述區塊鏈的物理形式,是區塊鏈上從創世區塊起始的鏈式結構。它包含了區塊鏈的區塊數據、鏈式結構,以及區塊上的隨機數、時間戳、公私鑰數據等,是整個區塊鏈技術中底層的數據結構。
2.網路層
網路層主要通過P2P技術實現分布式網路機制,包括P2P組網機制、數據傳播機制和數據驗證機制。因此,從本質上來說,區塊鏈是一個P2P網路,具備自動組網的機制,節點之間通過維護一個共同區塊鏈結構來保持通信。
3.共識層
共識層包括共識演算法、共識機制。共識層能讓高度分散的節點在去中心化的區塊鏈網路中高效地針對區塊數據的有效性達成共識,是區塊鏈的核心技術之一,也是區塊鏈社群的治理機制。目前共識機制演算法有數十種,包括工作量證明、權益證明、權益授權證明、燃燒證明、重要性證明等。
4.激勵層
激勵層主要包括經濟激勵的發行制度和分配製度,其功能是提供一定的激勵措施,鼓勵節點參與區塊鏈中安全驗證工作,並將經濟因素納入區塊鏈技術體系中,激勵遵守規則參與記賬的節點,懲罰不遵守規則的節點。
5.合約層
合約層主要包括腳本、代碼、演算法機制和智能合約,是區塊鏈可編程的基礎。它將代碼嵌入區塊鏈或令牌中,可以實現自定義的智能合約,在達到某個確定的約束條件的情況下,不用經由第三方就能自動執行,是區塊鏈去信任的基礎。
6.應用層
應用層封裝了各種應用場景和案例,類似於計算機操作系統上的應用程序、互聯網瀏覽器上的門戶網站、搜索引擎、電子商城或是手機端上的APP。它將區塊鏈技術應用部署在以太坊、EOS、QTUM等上,並在現實生活場景中落地。未來,可編程金融和可編程 社會 會搭建在應用層上。
數據層、網路層、共識層是構建區塊鏈技術的必要元素,缺少任何一層都不能稱之為真正意義上的區塊鏈技術;激勵層、合約層和應用層不是每個區塊鏈應用的必要因素,一些區塊鏈應用並不完整地包含此三層結構。
從商業的角度來講,區塊鏈技術有它自身的一個特點,就是足夠數字化,它是跨境的,是跨時空的,是跨組織的。數據的流動是沒有邊界的,所以區塊鏈同時是分布式的,它是自組織的和去中心化的。
所以區塊鏈的由來,任何新的顛覆式技術的應用,歷來就有兩條路線,或者說兩種方法。一種方法,是把它視為一種工具,用它來改善傳統的商業模式,得到一種邊際效益上的提升。另外一種是把它當作一套制度,用來重構商業的底層邏輯。
這兩種應用方法,在過去幾年就有一個很好的案例。當互聯網公司在推廣「互聯網+」的時候,我們也看到很多傳統的商業機構說,不是「互聯網+」,而是「+互聯網」。那麼現在那些喊「+互聯網」的人到哪去了?有人認為,互聯網只是用來改善的一項技術,傳統的東西可以加上一些互聯網技術,好比把互聯網當電子郵件使用,你弄了一套電子郵件系統,就以為是互聯網了。但是有人卻把互聯網當作制度,從底層重構了商業,最後你會發現你失業了。
第二是去中心化的。為什麼要去中心?商業上的區域中心技術帶來了商業的去中心化,這個是 歷史 的必然趨勢。這個趨勢在哪裡?我覺得是兩點,一個是經濟全球化,進入2.0版本。現在通過互聯網,已經不是公司在全球化,不是公司把自己變成跨國公司,而是任何一個個人互聯網都賦能給它,讓它可以在一個中國的小縣城,通過互聯網把它的產品賣給全世界。經濟全球化發展到個人全球化的時候,解決點對點的交易,點對點的服務,成為一個突出的問題。那麼區塊鏈技術所帶來的實時清算結算,點對點交易交收這些特點,正好可以幫助個人商業活動的全球化。
第三是經濟的數字化。當數據集合到一定程度之後,它的流通基本上是跨時空的,商業活動對金融支付的需求,是隨時隨地隨身的,而做不到隨時隨地隨身隨需提供場景化、虛擬化的支付清算服務,終究會被技術和市場所淘汰。
#比特幣[超話]# #數字貨幣# #歐易OKEx#
『柒』 區塊鏈核心技術-P2P網路
點對點網路是區塊鏈中核心的技術之一,主要關注的方面是為區塊鏈提供一個穩定的網路結構,用於廣播未被打包的交易(交易池中的交易)以及共識過的區塊,部分共識演算法也需要點對點的網路支撐(如PBFT),另外一個輔助功能,如以太坊的消息網路,也需要點對點網路的支持。
P2P網路分為結構化和非結構化網路兩類。結構化網路採用類似DHT演算法來構建網路結構;非結構化網路是一種扁平的網路,每個節點都有一些鄰居節點的地址。
點對點網路的主要職責有維護網路結構和發送信息這兩個方面。網路結構要關注的是新節點的加入和網路更新這兩個方面,而發送信息包括廣播和單播兩個方面
如何建立並維護點對點的整個網路?節點如何加入、退出?
網路結構的建立有兩個核心的參數,一個是每個節點向外連接的節點數,第二個是最大轉發數。
新節點對於整個網路一無所知,要麼通過一個中心的服務獲取網路中的一些節點去連接,要麼去連接網路中的「種子」節點。
網路更新處理當有新節點加入或者節點退出,甚至原來一些節點網路不好,無法連接,過一段時間又活了,等等這些情況。一般通過節點已有的連接來廣播這些路由表的變化。需要注意的是,因為點對點網路的特殊性,每個節點的路由表是不一樣的(也叫partial view)
廣播一般採用泛洪協議,即收到轉發方式,使的消息在網路中擴散,一般要採用一些限制條件,比如一條消息要設置最大的轉發數,避免網路的過渡負載。
單播需要結構化網路結構支持,一般是DHT,類似於DNS解析的方式,逐跳尋找目標節點地址,之後進行傳輸,並且更新本地路由表。
要想快速檢索信息,有兩種數據結構可以使用,一種是樹類型,如AVL樹、紅黑樹、B樹等;另外一類是hash表。
哈希表的效率比樹更高,但是需要佔用更多的內存。
信息的表示採用鍵值對的方式,即一個鍵對應一個值,我們要查找的是key,值是附著的信息。
哈希表要解決的問題是如何均勻地為每一個key分配一個存儲位置。
這裡面有兩個重點:1.是為key分配一個存儲地點,這個分配演算法是固定的,保證存儲的時候和查找的時候使用同一個演算法,不然存進去之後會找不到;2.是均勻地分配,不能有點地方存放數據多,有點放存放數據少。
一般語言裡面的hashtable、map等結構使用這個技術來實現,哈希函數可以直接使用取模函數,key%n,這種方式,n代表有多少個地方,key是整數,如果key是其他類型,需要先進行一次哈希,將key轉為整數。這種方式可以解決上面的兩個需求,但是當n不夠大的時候(小於要存儲的數據),會產生沖突,一個地方一定會有兩個key要存儲,這時候,需要在這個地方放一個鏈表,將分配到同一地點、不同key,順序擺放。當一個地點放的key太多後,鏈表的查找速度太慢,要轉化為樹類型結構(紅黑樹或者AVL樹)。
上面說過,哈希表效率很高,但是佔用內容,使用多台機器就可以解決這個限制。在分布式環境中,可以將上述的地點理解為計算機(後面成為節點),即如何將一個key映射到一個節點上,每個節點有一個節點ID,即key->node id的映射,這個映射演算法也要固定。
這個演算法還有一個非常重要的要求,即scalebility,當新節點加入和退出時候,需要遷移的key要盡量少。
這個映射演算法有兩種典型結構,一個是環形,一個是樹形;環形的叫一致性哈希演算法,樹形的典型叫kademlia演算法。
選點演算法就是解決key->node id的映射演算法,形象的來說就是為一個key選擇它生命中的她(節點)。
假設我們使用32哈希,那麼總共能容納的key的數據量是2**32,稱之為hash空間,把節點的ID映射成整數,key也映射成整數。把key哈希和節點哈希值接的差值的叫做距離(負數的話要取模,不用絕對值),比如一個key的哈希是100(整數表示),一個節點的哈希是105,則這兩個的距離是105-100=5。當然使用其他距離表示也可以,比如反過來減,但是演算法要固定。我們把key映射(放到)距離他最近的節點上。距離取模的話,看起來就是把節點和key放到一個環上,key歸屬到從順時針角度離它最近的節點上。
kademlia演算法的距離採用的是key哈希與節點哈希異或計算之後的數值來表示(整數),從左往右,擁有越多的「相同前綴」,則距離越近,越在左邊位置不一樣,距離越遠。
樹結構的體現是,將節點和key看成樹的節點,這個演算法支持的位數是160bit,即20個8位元組,樹的高度為160,每個邊表示一位。
選點的演算法和一致性哈希相同,從所有節點中,選擇一個距離key距離最小的節點作為這個key的歸宿。
由於是在分布式環境中,為了保證高可用,我們假設沒有一個中心的路由表,沒有這個可以看到全貌的路由表,帶來了一些挑戰,比如如何發現節點、查找節點?
在P2P網路中,常用的方法是每個節點維護一個部分路由表,即只包含部分節點的路由信息。在泛洪演算法中,這些節點上隨機的;在DHT演算法中,這個路由表是有結構的,維護的節點也是有選擇性的。那麼如何合理的選擇需要維護路由信息的節點呢?
一個樸素的做法是,每一個節點保存比他大的節點的信息,這樣可以組成一個環,但是這樣做的話,有一個大問題和一個小問題。大問題是,每個節點知道的信息太少(只有下一個節點的哈希和地址),當給出一個key時,它不知道網路中還有沒有比它距離這個key距離還短的節點,所以它首先判斷key是否屬於自己和下一個節點,如果是,那麼這個key就屬於下一個節點,如果不是就調用下一個節點同樣的方法,這個復雜度是N(節點數)。一個優化的方法是,每個節點i維護的其他節點有:i+2 1, i+2 2,....i+2**31,通過觀察這個數據,發現由近到遠,節點越來越稀疏。這樣可以把復雜度降低到lgN
每個節點保存的其他節點的信息,包括,從左到右,每一位上與本節點不同的節點,最多選擇k個(演算法的超參數)。比如在節點00110上(為演示起見,選擇5位),在要保存的節點路由信息是:
1****: xxx,....,xxx(k個)
01 : xxx,....,xxx(k個)
000 : xxx,....,xxx(k個)
0010 : xxx,....,xxx(k個)
00111: xxx,....,xxx(k個)
以上為一行稱為k-bucket。形象的來看,也是距離自己越近,節點越密集,越遠,節點越稀疏。這個路由查找、節點查找的演算法也是lgN復雜度。
『捌』 區塊鏈的核心技術包含了哪些
重慶金窩窩分析區塊鏈的核心技術如下:
1-區塊、鏈
2-分布式結構——開源的、去中心化的協議
3-非對稱加密演算法
4-腳本
『玖』 區塊鏈技術的工作原理是什麼
從數據的角度來看,區塊鏈是一種分布式資料庫或稱為分布式共享總賬,這里的「分布式」不僅體現為數據的分布式存儲,也體現為數據的分布式記錄。從效果的角度來看,區塊鏈可以生成一套記錄時間先後的、不可篡改的、可信任的資料庫。
區塊鏈有四大核心技術,第一個核心技術就是區塊+鏈,這是區塊鏈當中最核心的技術,也是最基本的技術。第二個核心技術是分布式結構,區塊鏈結構設計精妙就是讓每一個參與數據交易的節點都記錄並存儲下所有的數據。第三個核心技術就是非對稱加密演算法,第四個核心技術就是腳本,腳本可以理解為一種可編程的智能合約。