DARMA Cash匿名公鏈技術(一):全網SSL/TLS加密和GO語言 - 創投圈 創投圈

DARMA Cash匿名公鏈技術(一):全網SSL/TLS加密和GO語言

欄目:教程專區 評論:0 點擊: 31 次

大家好,人工智能和區塊鏈技術是下一個十年的朝陽行業,我們來自達摩社區區塊鏈技術小組(以下簡稱DAMO-BCG),專注於區塊鏈技術的投資。DAMO-BCG是匿名公鏈DARMA Cash(DMCH)的早期支持社區之一,我們將按照深入淺出、由淺入深的方式逐步推出DARMA Cash匿名公鏈技術的系列文章,為大家介紹DMCH的精彩世界。

MDCH.png

公鏈也稱“公有鏈”,比特幣是世界上第一個共有鏈,所謂公和私區別就在於鏈上的節點是否是自己可控,公有鏈對應的就是私有鏈;比特幣、以太坊是時下最流行的公有鏈。公有鍊是指全世界任何人都可以隨時進入到系統中讀取數據、發送可確認交易、競爭記賬的區塊鏈。公有鏈通常被認為是“完全去中心化”的,因為沒有任何個人或者機構可以控製或篡改其中數據的讀寫。

公有鏈一般會通過代幣機制(Token)來鼓勵參與者競爭記賬,來確保數據的安全性。從應用上說,區塊鏈公有鏈包括比特幣、以太坊、超級賬本、大多數山寨幣以及智能合約,其中區塊鏈公有鏈的始祖是比特幣區塊鏈。

DARMA Cash(DMCH)公鏈技術作為近期崛起的匿名公鏈相對於比特幣、以太坊有什麼優勢呢?今天讓我們從DMCH的編程語言GO語言和DMCH全網採用TLS加密的角度拉開本系列的序幕吧。

DMCH全網採用SSL/TLS加密SSL/TLS加密簡介

傳輸層安全性協議(英語:Transport Layer Security,縮寫作TLS),及其前身安全套接層(Secure Sockets Layer,縮寫作SSL)是一種安全協議,目的是為互聯網通信提供安全及數據完整性保障。網景公司(Netscape)在1994年推出首版網頁瀏覽器,網景導航者時,推出HTTPS協議,以SSL進行加密,這是SSL的起源。IETF將SSL進行標準化,1999年公佈第一版TLS標准文件。隨後又公佈RFC 5246 (2008年8月)與RFC 6176(2011年3月)。在瀏覽器、郵箱、即時通信、VoIP、網絡傳真等應用程序中,廣泛支持這個協議。主要的網站,如Google、Facebook等也以這個協議來創建安全連線,發送數據。目前已成為互聯網上保密通信的工業標準。

TLS協議採用主從式架構模型,用於在兩個應用程序間透過網絡創建起安全的連線,防止在交換數據時受到竊聽及篡改。TLS協議的優勢是與高層的應用層協議(如HTTP、FTP、Telnet等)無耦合。應用層協議能透明地運行在TLS協議之上,由TLS協議進行創建加密通道需要的協商和認證。應用層協議傳送的數據在通過TLS協議時都會被加密,從而保證通信的私密性。

DMCH SSL/TLS加密抓包分析   

DMCH整個P2P網絡是原生使用了SSL/TLS加密的,所以DMCH節點之間的所有數據都是經過加密在互聯網上進行傳輸的。正如下圖所示,SSL/TLS處於網絡模型的第四層即傳輸層,DMCH的區塊網絡作為應用層嵌套在SSL/TLS加密技術的保護之下。由於DMCH網絡所有數據均是加密傳輸,所以互聯網上的不法分子無法通過惡意方法識別、截取DMCH網絡流量和內容。DMCH運用的SSL/TLS加密技術從根本上確保了DMCH網絡的安全性和可用性。

DMCH.jpg

下面就讓我們簡單看一下默認情況下DARMA Cash(DMCH)和門羅(XMR)區塊網絡的網絡包分析:

圖1是門羅幣的網絡數據包,我們可以看到門羅門節點167.114.1.184:18080向本地節點同步了一個網絡包,這個包的數據是透明、公開的。任何具有一定網絡技術的人員都可以都可以對區塊網絡進行監測、阻截、甚至破壞。

DMCH.jpg

圖1

圖2是DARMA Cash(DMCH)的網絡數據包,我們可以看到DMCH節點156.230.55.193:53803向本地節點同步了一個網絡包,這個包的數據是經過Transport Layer Security, TLS加密的。網絡分析工具智能識別出這是一個加密的數據,至於其中的具體內容一無所知。

DMCH.jpg

圖2

通過以上的對比,我們就能感受到DMCH全網區塊數據通過SSL/TLS技術加密的設計對於提升整個區塊網絡的設計效果顯著,這也是DMCH從根本上區別於大部分公鏈項目的一個小細節。

GO編程語言

GO語言簡介:

GO語言是谷歌推出的一種全新的編程語言,可以在不損失應用程序性能的情況下降低代碼的複雜性。谷歌首席軟件工程師羅布派克(Rob Pike)說:我們之所以開發GO,是因為過去10多年間軟件開發的難度令人沮喪。

GO語言的優勢:

部署簡單

GO 編譯生成的是一個靜態可執行文件,除了glibc 外沒有其他外部依賴。這讓部署變得異常方便:目標機器上只需要一個基礎的系統和必要的管理、監控工具,完全不需要操心應用所需的各種包、庫的依賴關係,大大減輕了維護的負擔。可直接編譯成機器碼,不依賴其他庫,glibc的版本有一定要求,部署就是扔一個文件上去就完成了。

並發性好

GOroutine 和channel 使得編寫高並發的服務端軟件變得相當容易,很多情況下完全不需要考慮鎖機制以及由此帶來的各種問題。單個GO 應用也能有效的利用多個CPU 核,並行執行的性能好。

良好的語言設計

從學術的角度講GO 語言其實非常平庸,不支持許多高級的語言特性;但從工程的角度講,GO 的設計是非常優秀的:規範足夠簡單靈活,有其他語言基礎的程序員都能迅速上手。更重要的是GO 自帶完善的工具鏈,大大提高了團隊協作的一致性。比如GOfmt 自動排版GO 代碼,很大程度上杜絕了不同人寫的代碼排版風格不一致的問題。把編輯器配置成在編輯存檔的時候自動運行GOfmt,這樣在編寫代碼的時候可以隨意擺放位置,存檔的時候自動變成正確排版的代碼。此外還有GOfix, GOvet 等非常有用的工具。

執行性能好

在使用中,性能高就可以做更多擴展,特別是業務複雜的情況下, 性能是第一保障;使用GO 建立東西需要更多的時間,但在後續的代碼優化上可以節省大量時間。GO 一般比Python 要快30 倍。以下是GO 與Java 之間的基準比較:

DMCH.jpg

GO適合用來做什麼:

服務器編程。以前你如果使用C或者C++做的那些事情,用GO來做很合適,例如處理日誌、數據打包、虛擬機處理、文件系統等。

分佈式系統,數據庫代理器等。

網絡編程,這一塊目前應用最廣,包括Web應用、API應用、下載應用。

內存數據庫,前一段時間GOogle開發的groupcache,couchbase的部分組建。

雲平台,目前國外很多雲平台在採用GO開發,CloudFoundy的部分組建,前VMare的技術總監自己出來搞的apcera雲平台。

DMCH選用GO編程語言的雄心

編程語言的選擇可以看出DMCH項目在啟動時候開發人員對項目發展的定位。GO語言部署簡單、並發性好、執行性能好,大量用於分佈式系統、內存數據庫、雲平台,從這些特點無疑反應出開發團隊對於DMCH公鏈上嫁接大型生態應用的規劃,也讓我們社區對DMCH的未來充滿了期待。

區塊鏈經過10年的發展,各項目之間的競爭已經趨於白熱化,同化現象嚴重,這使得投資一個富有潛力的項目已經變得越來越困難。然而我們卻應該懂得一個道理,每一個人都有自己的天賦,如果DMCH是一個孩子,那麼SSL/TLS全網加密和GO編程語言就好像是DMCH從娘胎裡出來的自帶天賦,這個天賦使得他在今後的發展中具備位居一線陣營的潛質。



聲明: 本文由( 創投圈 )編輯整理,轉載請保留鏈接: DARMA Cash匿名公鏈技術(一):全網SSL/TLS加密和GO語言