区块链技术指南笔记(一):区块链基本概念
比特幣
比特幣(BitCoin)的概念最初由中本聰在2009年提出,根據中本聰的思路設計發布的開源軟件以及建構其上的P2P網絡。比特幣是一種P2P形式的數字貨幣。點對點的傳輸意味著它是一個去中心化的支付系統。
與大多數貨幣不同,比特幣不依靠特定貨幣機構發行,它依據特定算法,通過大量的計算產生,比特幣經濟使用整個P2P網絡中眾多節點構成的分布式數據庫來確認并記錄所有的交易行為,并使用密碼學的設計來確保貨幣流通各個環節安全性。P2P的去中心化特性與算法本身可以確保無法通過大量制造比特幣來人為操控幣值。基于密碼學的設計可以使比特幣只能被真實的擁有者轉移或支付。這同樣確保了貨幣所有權與流通交易的匿名性。比特幣與其他虛擬貨幣最大的不同,是其總數量非常有限,具有極強的稀缺性。該貨幣系統曾在4年內只有不超過1050萬個,之后的總數量將被永久限制在2100萬個。
從比特幣的本質說起,比特幣的本質其實就是一堆復雜算法所生成的特解。特解是指方程組所能得到無限個(其實比特幣是有限個)解中的一組。而每一個特解都能解開方程并且是唯一的。而挖礦的過程就是通過龐大的計算量不斷的去尋求這個方程組的特解,這個方程組被設計成了只有 2100 萬個特解,所以比特幣的上限就是 2100 萬。
挖礦就是在爭取記賬權,對一段時間內比特幣網絡中的交易進行確認,并記錄在區塊鏈上的過程。這一過程要重復計算區塊頭的hash,不斷修改隨機數nonce,直到與難度目標值匹配。礦工在生成新的區塊時需要根據前一個區塊的hash、交易信息、隨機數等來計算新的hash值,也就是說每一個區塊都是在前一個區塊數據基礎上生成的,該機制保證了區塊鏈數據的唯一性。挖礦成功,比特幣系統會產生一筆比特幣獎勵給成功挖礦的礦工。其他節點會對挖到的礦的數據進行驗證,如果驗證不合格,說明這次挖礦不成功,其他礦工仍然有機會競爭記賬權,如若成功了,其他節點會將區塊信息保留下來(因為挖礦要用到前一個區塊的信息)。挖礦過程就是爭取記賬的過程,礦工是記賬員,區塊鏈是賬本,每個區塊就是整個賬本中的每一個賬頁。
?
去中心化
中心化和去中心化就是集權與分權。中心化,是中心決定節點,節點必須依賴中心,節點離開了中心就無法生存;去中心化系統中,任何人都是一個節點,任何人也都可以成為一個中心。任何中心都不是永久的,而是階段性的,任何中心對節點都不具有強制性。去中心化,并非不要中心,準確的說,它的意思是”弱中心化”。
那么去中心化的思想能給我們帶來什么?不知道有多少人看過會計挪用公款打賞主播的新聞。這個會計就像古代的賬房先生一樣,賬本正確與否取決于記賬人。因為記賬權掌握在少數人手上,所以一般出現了挪用公款的事發生,公司無法第一時間發現。
現在以去中心化思想這樣解決類似的問題。假如公司撥款買東西,此時小明拿著錢去采購,并且和出售者一同將這個消息告訴了全市的人。那么就相當于全市人民都參與了這次采購(由于信息是公開的,所以商品的售價,資金的流向都是公開透明的,一旦交易存在問題,即全民驗證沒通過,公司可以第一時間發現問題)。
想想我們每天用手機支付,賬戶里的余額雖然是數字,但是那代表的是我們真正財富,因為我們知道有一個非常值得信賴的第三方在處理我們的賬本。這就說明了在一個交易系統中,只要有一個可靠的記賬機構(能把帳算明白),哪怕我們使用的是沒有實體的數字鈔票,整個交易系統也不會亂套。而區塊鏈就是一種不同于傳統記賬的記賬方式。傳統的線上支付,表面上是人與人的直接交易。但實際上,背后都有一個第三方交易中介(往往是值得信賴的機構或公司)。而這個中介就是一個交易中心,它負責記錄系統中的每一次交易信息,并且把這些信息整理并存儲起來(我們可以把它看成一個大賬本)。但這個賬本要是被黑客攻擊并惡意篡改,那么整個系統就會因此陷入危機。
而在區塊鏈記賬的交易系統中,并不存在這樣的交易中心,所以整個系統沒有從中心崩潰的風險。在區塊鏈系統里面,每一次交易都直接發生在交易雙方之間。交易雙方會把交易信息廣播到整個交易系統里,此時,會有很多志愿者把交易信息記錄下來并整理成一個賬本。再把這個賬本廣播回系統(參與記賬的人也存在相互監督的過程,只有系統內大多數人相同的賬本,才是正確的賬本),結果是區塊鏈系統的賬本,并不是由一個單一的交易中心掌握的,而是由系統中的每一個參與者共同掌管的。除非黑客可以同時攻擊整個系統中算力的50%以上的參與者,否則這個賬本就不會被惡意更改。
?
問題:在很多參與者同時記賬的系統中,怎么保證系統當中不會出現亂七八糟的賬本?
這要靠區塊鏈基于密碼學的設計。在區塊鏈系統中,每過一段時間,就會產生一個新的區塊,用來存儲剛剛產生的交易信息。系統中的參與者必須要解決一個密碼學難題,才能讓這個區塊完整有效。如果有人解決了這個難題(挖礦成功),會把這個答案記錄在區塊的末尾,并且向全系統廣播這個完整的區塊,其他參與者收到消息會對這個信息進行驗證,若成功,則可以解決下一個區塊的問題。每一個區塊的開頭是前一個區塊的hash值。這種形式把區塊穿成了一個鏈條,它就是區塊鏈。如果有人想要篡改某一區塊內容,他就要重新破解這個區塊的難題,而且還要把之后鏈上的難題也要破解。這就像以一人之力去抵擋千軍萬馬,只存在理論上的可能性。這就形成了在沒有強大中介參與的情況下,仍然安全可靠的數據管理系統
?
區塊鏈
區塊鏈是比特幣的底層技術(比特幣是區塊鏈的第一個應用),也是目前最具革命性的新興技術之一。其以去中心化方式建立信任等突出特點,對金融等諸多行業來說極具顛覆性,具有非常廣闊的應用前景。區塊鏈不是一項新技術,而是一個新的技術組合。簡單的用一句話解釋這個概念——區塊鏈就是技術組合形成的公共數據庫(或稱公共賬本)。其中區塊鏈技術是指多個參與方之間基于現代密碼學、分布式一致性協議、點對點網絡通信技術和智能合約編程語言等形成的數據交換、處理和存儲的技術組合。同時,區塊鏈技術本身仍在發展和演化中。
?
以參與方分類,區塊鏈可以分為:公有鏈(Public Blockchain)、聯盟鏈(Consoritum Blockchain)和私有鏈(Private Blockchain)。從鏈與鏈的關系來分,可以分為主鏈和側鏈。不同區塊鏈還可以形成網絡,網絡中鏈與鏈的互聯互通,產生互聯鏈的概念。
公有鏈:公有鏈是對外開放的,用戶不用注冊就能匿名參與,無需授權即可訪問網絡和區塊鏈。節點可選擇自由出入網絡。公共鏈上的區塊可以被任何人查看,任何人也可以在公共鏈上發送交易,還可以隨時參與網絡上形成共識的過程,即決定哪個區塊可以加入區塊鏈并記錄當前的網絡狀態。公共鏈是真正意義上的完全去中心化的區塊鏈,它通過密碼學保證交易不可篡改,同時也利用密碼學驗證以及經濟上的激勵,在互為陌生的網絡環境中建立共識,從而形成去中心化的信用機制。在公共鏈中的共識機制一般是工作量證明或權益證明,用戶對共識形成的影響力直接取決于他們在網絡中擁有的資源的占比。公共鏈通常也稱為非許可鏈。如比特幣和以太坊等都是公共鏈。公共鏈一般適用于虛擬貨幣、面向大眾的電子商務、互聯網金融等B2C、C2C或C2B等應用場景。
?
聯盟鏈:聯盟鏈僅限于聯盟成員參與,區塊鏈上的讀寫權限、參與記賬權限按聯盟規則來規定。有40多家銀行參與的區塊鏈聯盟R3和Linux基金會支持的超級賬本項目屬于聯盟鏈架構。聯盟鏈是一種需要注冊許可的區塊鏈,這種區塊鏈也稱為許可鏈(Permissioned Blockchain)。
聯盟鏈的共識過程由預先選好的節點控制。一般來說,它適合于機構間的交易、結算或清算等B2B場景。例如在銀行間進行支付、結算、清算的系統就可以采用聯盟鏈的形式,將各家銀行的網關節點作為記賬節點,當網絡上有超過2/3的節點確認一個區塊,該區塊記錄的交易將得到全網確認。聯盟鏈可以根據應用場景來決定對公眾的開放程度。由于參與共識的節點比較少,聯盟鏈一般不采用工作量證明的挖礦機制,而是多采用權益證明或PBFT(Practical Byzantine Fault Tolerant)、RAFT等共識算法。聯盟鏈對交易的確認時間、每秒交易數據都與公共鏈有較大的區別,對安全和性能的要求也公共鏈高。
聯盟鏈網絡由成員機構共同維護,網絡接入一般通過成員機構的網關節點接入。聯盟鏈平臺應提供成員管理、認證、授權、監控、審計等安全管理功能。2015年成立的R3聯盟,旨在建立銀行同業的一個聯盟鏈,目前已經吸引了許多成員,包括世界著名的銀行,IT巨頭(IBM,微軟)。
銀行間結算時非常碎片化的流程,每個銀行各自有一套賬本,對賬困難,有些交易有時要花幾天才能校驗和確認。同時,其流動性風險很高,在監管報送方面非常繁瑣,也容易出現人為錯誤,結算成本很高。針對這種情況,R3聯盟構建了一個銀行同業的聯盟鏈已解決這些問題。利用區塊鏈技術,銀行同業間可以共享一個統一的賬本,省掉對賬的繁瑣工作,交易可以做到接近實時的校驗和確認、自動結算,同時監管者可以利用密碼學的安全保證來審計不可篡改的日志記錄。
R3聯盟將開發Corda分布式賬本來實現未來愿景。從公開的資料來看,Corda具有以下特點:
(1)數據不一定要全局共享,只有滿足合法需求的一方才能在一個協議里訪問數據;
(2)Corda不用一個中心化的控制就可以編排聯盟成員的工作流;
(3)Corda對聯盟成員之間的每筆交易形成共識,而不是在聯盟機構的系統層面形成共識;
(4)Corda的設計直接支持監管者監督和合規性監控;
(5)交易有參與交易的機構進行驗證,而不是報告與交易無關的機構;
(6)支持不同的共識機制;
(7)明確基類智能合約與用書面語言撰寫的法律文件之間的關聯;
(8)采用工業標準的工具來構建Corda平臺;
(9)不設虛擬貨幣。
Corda平臺注重互操作性和漸進部署,不會將保密信息發布給第三方。一個機構可以和對手機構看到一組協議,并可以保證對手機構看到的是同樣內容,同時報送給監管機構。Corda包括共識、校驗、獨一性、永恒性和認證等功能。
?
私有鏈:私有鏈僅在私有組織使用,區塊鏈上的讀寫權限、參與記賬權限按私有組織規則來制定。私有鏈的應用場景一般是企業內部的應用,如數據庫管理、審計等。也有一些比較特殊的組織情況,比如在政府行業的一些應用:政府的預算和執行,或者政府的行業統計數據,這個一般來說有政府登記,但公眾有權力監督。私有鏈的價值主要是提供安全、可追溯、不可篡改、自動執行的運算平臺,可以同時防范來自內部和外部對數據的安全攻擊,這個在傳統的系統中很難做到。央行發行數字貨幣可能就是一種私有鏈。和聯盟鏈類似,私有鏈也是一種許可鏈。
幣科學公司推出供企業建立私鏈的多鏈平臺。它提供保護隱私和權限控制的區塊鏈平臺,來克服在金融行業里碰到的推廣區塊鏈技術的障礙。多鏈的目標有以下3個:
(1)保證區塊鏈上的活動只能由選擇的參與者看到;
(2)引入機制來控制哪些交易是被允許的交易;
(3)提供安全的挖礦機制,同時不需要工作量證明以及與其相關的成本。
?
多鏈把挖礦權限制在一組實名的礦工范圍,解決了一直困擾私有鏈解決方案中的一方壟斷挖礦過程的問題。它的解決辦法是限制在同一個時間窗口同一礦工能產生的區塊鏈數。不像比特幣那樣只支持一條區塊鏈,多鏈可以方便地配置多條區塊鏈,并讓用戶同時用多鏈。這樣的話,機構用戶可以讓管理員配置區塊鏈而不需要由區塊鏈專業開發者來做。
多鏈讓用戶在一個配置文件中配置區塊鏈的所有參數,這些參數包括:
(1)區塊鏈的協議,例如是私有鏈還是像比特幣那樣的公共鏈;
(2)目標區塊產生的時間,例如一分鐘;
(3)權限,例如所有人能連接,只有一些人能發送或接收交易;
(4)挖礦的不同形式(只適合于私有鏈);
(5)建立、移除管理員和礦工所需要的共識程度,以及在建立期不需要強制執行的期限(只適合于私有鏈);
(6)礦工的報酬,例如每區塊50個幣,然后每210000個區塊減半付酬;
(7)鄰節點連接和JSON RPC API的IP端口,例如8571、8570;
(8)允許的交易類型,例如paytoaddress、paytomultisig、paytoscripthash等;
(9)最大的區塊大小,例如1MB;
(10)每個交易的最大元數據(OP_RETURN),例如4KB。
多鏈在節點的”握手”連接過程如下:
①每個節點提供它的公共地址,使其他節點能將它的地址包括在允許連接的清單中;
②每個節點驗證鄰節點的地址是在它的授權連接的節點清單里;
③每個節點發一個盤問消息給其他節點;
④每個節點發回一個回復盤問信息的簽名,證明擁有他們的對應公共地址的私鑰;
⑤如果雙方對對方回復不滿意,可隨時中斷連接。
在多鏈里,所有的權限的授予和回收都是通過包含特殊元數據的網絡交易來實現的。找到創世區塊的礦工被自動授予所有的權限,包括管理其他用戶的管理員權限。管理員通過發交易給其他用戶,并在交易的輸出中包含授權用戶的地址以及授權信息的元數據來給其他用戶授予相應的權限。當要改變其他用戶的管理和挖礦權限的時候,一個額外的限制條件是要由現有的管理員投票來決定。這些管理員的投票需要登記在不同的交易中,只有當足夠的共識形成之后才能通過改變。
多鏈在很多方面的設計是為了使得用戶在私鏈和比特幣區塊鏈能夠進行雙向遷移。多鏈是基于比特幣核心的一個分叉。所有的對比特幣的代碼改變都是本地化的改變。未來比特幣的升級功能可能可以并入多鏈的本地代碼。它基于比特幣的協議、交易和區塊鏈架構,只是在握手協議上有所改變。其他的功能是通過元數據,同時改變交易和區塊的驗證規則來實現的。在接口方面與比特幣完全兼容,所有的新功能通過新的命令來提供。它可以做成普通比特幣網絡的一個節點。多鏈提供一個在企業內快速部署私鏈的解決方案。可以用于去中心化交易所、數據庫同步、貨幣結算、債券發行和P2P交易、消費行業積分獎勵機制等場景。
?
具體來看,區塊鏈的顛覆性價值至少包括以下方面:
(1)簡化流程,提升效率。由于區塊鏈技術是參與方之間通過共享共識的方式建立的公共賬本,形成對網絡狀態的共識,因此區塊鏈中的信息天然就是參與方認可的、唯一的、可溯源、不可篡改的信息源,因此原來許多重復驗證的流程和操作就可以簡化,甚至消除,例如銀行之間的對賬、結算、清算等。從而提升操作效率。
(2)降低交易對手的信用風險。與傳統交易需要信任交易方不同,區塊鏈技術可以使用智能合約等方式,保證交易多方自動完成相應義務,確保交易安全,從而降低對手的信用風險。
(3)減少結算或清算時間。由于參與方的去中心化信任機制,區塊鏈技術可以是實現實時的交易結算和清算,實現金融”脫媒”,從而大幅度降低結算和清算成本,減少結算和清算時間,提高效率。
(4)增加資金流動性,提升資產利用效率。區塊鏈的高效性,以及更短的交易結算和清算時間,使交易中的資金和資產需要鎖定的時間減少,從而可以加速資金和資產的流動,提升價值的流動性。
(5)提升透明度和監管效率,避免欺詐行為。由于區塊鏈技術可以更好的將所有交易和智能合約進行實時監控,而且不可撤銷、不可抵賴、不可篡改方式留存,方便監管機構實現實時監控和監管,也方便參與方實現自動化合規處理,從而提升透明度,避免欺詐行為,更高效的實現監管。
?
總結
以上是生活随笔為你收集整理的区块链技术指南笔记(一):区块链基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++学习笔记:(七)C语言实现面向对象
- 下一篇: 区块链技术指南笔记(二):区块链技术