- DAG區塊鏈技術:原理與實踐
- 曹源
- 3106字
- 2019-01-03 16:18:09
1.2 區塊鏈相關技術簡介
1.2.1 底層通信技術
區塊鏈底層通信一般采用P2P通信。P2P技術使得網絡上的溝通變得很容易、很直接,并且把對中間服務器的依賴減少到最小。P2P技術改變了“內容”所在的位置,使其從“中心”走向“邊緣”。也就是說它改變了互聯網現在以集中式的網站為中心的狀態,資源不保存在服務器上,而保存在所有用戶的PC機上。P2P技術使得其不再是被動的客戶端,而成為具有服務器和客戶端雙重特征的設備。
P2P不是一項全新的技術,而是一個新的概念和應用。TCP/IP是現代互聯網整體架構的基礎,但在TCP/IP中并沒有客戶端和服務器的概念,所有的設備都是通信中平等的一端。只是由于網絡帶寬及計算機處理能力等的限制,才使得我們在溝通中出現了很多的中間環節,例如電子郵件系統中必須存在郵件服務器。現在,廉價的計算能力、網絡通信能力、PC的存儲能力強有力地推動了技術的迅速發展。
P2P技術有如下的特點。
非中心化:網絡中的資源和服務分散在所有節點上,信息的傳輸和服務的實現都直接在節點之間進行,無需中間環節和服務器的介入,避免了可能的瓶頸。P2P非中心化的基本特點,帶來了其在可擴展性、健壯性等方面的優勢。
可擴展性:在P2P網絡中,隨著用戶的加入,不僅服務的需求增加了,系統整體的資源和服務能力也在同步地擴充,始終能比較容易地滿足用戶的需要。理論上其可擴展性幾乎可以認為是無限的。例如,在傳統的通過FTP的文件下載方式中,當下載用戶增加之后,下載速度會變得越來越慢,然而P2P網絡卻正好相反,加入的用戶越多,P2P網絡中提供的資源就越多,下載的速度反而越快。
健壯性:P2P架構天生具有耐攻擊、高容錯的優點。P2P網絡通常都是以自組織的方式建立起來的,并允許節點自由地加入和離開。P2P網絡一般在部分節點失效時能夠自動調整整體拓撲,保持其他節點的連通性。
高性價比:性能優勢是P2P被廣泛關注的一個重要原因。隨著硬件技術的發展,個人計算機的計算和存儲能力以及網絡帶寬等性能依照摩爾定理高速增長。采用P2P架構可以有效地利用互聯網中散布的大量普通節點,將計算任務或存儲資料分布到所有節點上。利用其中閑置的計算能力或存儲空間,達到高性能計算和海量存儲的目的。目前,P2P在這方面的應用多在學術研究方面,一旦技術成熟,能夠在工業領域推廣,則可以為許多企業節省購買大型服務器的成本。
隱私保護:在P2P網絡中,由于信息的傳輸分散在各節點之間進行而無需經過某個集中環節,用戶的隱私信息被竊聽和泄漏的可能性將大大縮小。此外,目前解決Internet隱私問題主要采用中繼轉發的技術方法,從而將通信的參與者隱藏在眾多的網絡實體之中。在傳統的一些匿名通信系統中,實現這一機制依賴于某些中繼服務器節點。而在P2P中,所有參與者都可以提供中繼轉發的功能,因而大大提高了匿名通訊的靈活性和可靠性,能夠為用戶提供更好的隱私保護。
負載均衡:P2P網絡環境下由于每個節點既是服務器又是客戶機,減少了對傳統C/S結構服務器計算能力、存儲能力的要求,同時因為資源分布在多個節點,更好地實現了整個網絡的負載均衡。
1.2.2 共識技術
共識機制是指在一個時間段內對事物的前后順序達成共識的一種算法。共識機制是區塊鏈的靈魂,它維系著區塊鏈世界的正常運轉。常用的共識機制包括三種。
工作量證明機制(Proof of Work, PoW),主要形式是猜數字,誰能最快猜出這個唯一數字,誰就能做信息公示人。
權益證明機制(Proof of Stake, PoS),類似股權憑證和投票系統,因此也叫“股權證明算法”,由持有最多(token)的人來公示最終信息。
拜占庭共識算法(Practical Byzantine Fault Tolerance, PBFT),它以計算為基礎,沒有代幣獎勵,由鏈上所有人參與投票,少于(N-1)/3個節點反對時就獲得公示信息的權利。
達成共識需要50%以上的節點同意,篡改數據需要極大的成本,或者無法完成(節點數量非常多)。共識機制確保了信息的唯一性,數據不可被篡改。利用這一點區塊鏈技術可被廣泛應用于智能型資產管理,如知識產權保護、化合約,域名管理保證合約不被篡改,可應用于社會中的積分管理等領域等。
1.2.3 智能合約
智能合約的理念可以追溯到1994年,幾乎與互聯網同時出現。曾經為比特幣打下基礎,從而備受贊譽的密碼學家尼克薩博首次提出了“智能合約”(smart contract)這一術語,他對于智能合約的定義是:“一個智能合約是一套以數字形式定義的承諾,包括合約參與方可以在上面執行這些承諾的協議。”
從本質上講,這些智能合約的工作原理類似于其他計算機程序的if-then語句。智能合約只是以這種方式與真實世界的資產進行交互。當一個預先編好的條件被觸發時,智能合約便執行相應的合同條款。
這里的“智能”,在英語中對應的單詞是“smart”,但不等同于人工智能(Artificial Intelligence, AI)。Smart代表的意思是聰明的、能夠靈活多變的,但還沒有能夠達到“人工智能”這樣的級別。所以有些人僅僅從中文字面上理解,認為必須要達到“人工智能”才能算是智能合約,其實就和“智能手機”一樣,這里的“智能”僅僅是指可以靈活定義和操作。
1.2.4 加密與簽名
區塊鏈中通常使用非對稱加密算法,指的就是存在一對數學相關的密鑰,使用其中一個密鑰進行加密的數據信息,只有使用另一個密鑰才能對該信息進行解密。在這對密鑰中,對外公開的密鑰叫作公鑰,不公開的密鑰就叫作私鑰。打個比方來說,公鑰就像銀行的賬戶,私鑰就像是該賬戶的密碼或者賬戶所有者的簽名。區塊鏈上的有效交易有一個用于交易發起方私鑰簽名有效的數字簽名,而該交易的簽名可以通過使用交易發起方的公鑰進行驗證。公鑰可以通過算法從私鑰中計算得出,但私鑰卻不能從公鑰中推出。
數字簽名就是在信息后面加上另一段內容,作為發送者的證明并且證明信息沒有被篡改。一般是發送者將信息用哈希算法處理得出一個哈希值,然后用私鑰對該哈希值進行加密,得出一個簽名。然后發送者再將信息和簽名一起發送給接收者。接收者使用發送者的公鑰對簽名進行解密,還原出哈希值,再通過哈希算法來驗證信息的哈希值和解密簽名還原出來的哈希值是否一致,從而可以鑒定信息是否來自發送者或驗證信息是否被篡改。
1.2.5 匿名保護
匿名保護分為通信匿名保護和交易匿名保護。
通信匿名保護主要是對交易主體的網絡地址進行隱藏,以防止將網絡地址與錢包地址相關聯。基本技術思路為在請求者與被請求者之間加入代理,這個代理可以是一個節點,也可以是多個節點組成的多跳網絡。這里重點介紹一下Tor網絡。作為知名的匿名網絡,Tor一直是一些喜歡匿名上網,或關注網絡隱私人士的最愛。截至2016年5月,已有超過100萬用戶使用Tor訪問Facebook,包括通過Tor瀏覽器、通過Facebook的Onion站點登錄等。而在2015年6月時,通過Tor來訪問Facebook的用戶數量僅為52.5萬。Tor網絡是一種覆蓋網絡,每個洋蔥路由器(onionrouter, OR)作為一個沒有任何特權的用戶層正常程序運行,與其他所有節點維持一個TLS鏈接。每個用戶運行自己的洋蔥代理程序:獲取目錄、建立路徑、處理連接。這些代理接受TCP數據流,并且在同一條線路上復用它們。每個洋蔥路由器維護一個長期的驗證密鑰和短期的洋蔥密鑰。驗證密鑰來簽署TLS的證書,簽署OR的描述符(包含了當前節點的keys、地址、帶寬、退出策略等),還被目錄服務器用來簽署目錄。洋蔥密鑰則用來解碼用戶發送來的請求,以便建立一條通路的同時協商臨時的密鑰。TLS協議還在通訊的OR之間使用了短期的連接密鑰,周期性獨立變化,來減少密鑰泄漏的影響。
交易匿名保護是不讓除交易雙方之外的人能夠查詢到本筆交易,是對交易信息的保護。此處有兩個概念,無關聯性(Unlinkability)和不可追蹤性(Untraceablility)。無關聯性是指對于任何兩筆外部交易,不能證明將其發送給同一個人,不可追蹤性是指對于每個內部交易,所有可能的發件人從概率上是相等的。無關聯性和不可追蹤性是完全匿名電子現金模型必須滿足的屬性,這兩個屬性可通過一次密鑰(One-time Secret Key)和環簽名(Ring Signature)技術實現。同時,設計并實現嚴格的零知識證明(Zero-knowledge Proof)模型,可進一步增強交易匿名性。
- Building Modern Web Applications Using Angular
- Django開發從入門到實踐
- PyTorch Artificial Intelligence Fundamentals
- Learning Informatica PowerCenter 10.x(Second Edition)
- Python數據分析(第2版)
- 實戰Java高并發程序設計(第3版)
- 利用Python進行數據分析(原書第3版)
- MySQL從入門到精通(軟件開發視頻大講堂)
- Python爬蟲、數據分析與可視化:工具詳解與案例實戰
- Visual C#.NET Web應用程序設計
- C語言程序設計與應用實驗指導書(第2版)
- 你必須知道的.NET(第2版)
- Learn Linux Quickly
- Appcelerator Titanium Smartphone App Development Cookbook
- Cocos2D Game Development Essentials