001/Go語言構建區塊鏈(mooc)

來源:互聯網
上載者:User

標籤:演算法   自訂   資料結構   style   mac   fabri   分散式資料庫   業務   特殊   

1。區塊鏈發展與現狀

視頻地址:https://www.imooc.com/video/17452

 

注意:

比特幣與以太坊最大的區別在於:

以太坊引入了對圖靈完美智能合約的支援,人們可以將任何商務邏輯以合約的形式寫入區塊鏈,在以太坊前,發行自己的數字貨幣,就需要搭建一個獨立的區塊鏈網路。

比較穩定,被拿來研究的區塊鏈系統:

【1】。超級賬本

         本身不是一個完整的區塊鏈系統,而是方便企業搭建自己的區塊鏈架構。各個組件,如資料存放區,共識演算法等,都可以靈活替換與組裝。對智能合約也有很好的支援。

         因此常被大型行業如銀行/金融機構來構建聯盟鏈。

【2】。以太坊

 

運行環境:

1。裝好GO語言環境

2。裝好IDE或自己喜歡的文字編輯器:如sublime

3。我的環境:mac + GoLand

2。什麼是區塊鏈【1】區塊鏈的分類:

(1)。公有鏈

          任何人都能讀取,任何人都能發動交易,交易能夠獲得有效確認,任何人都能參與其共識過程的區塊鏈。

          如比特幣,以太坊,EOS。

(2)。私人鏈

         一般為公司或組織內使用。

        如在做區塊鏈應用時,自己在本機上搭建的開發節點和在公司內網測試節點。

(3)。聯盟鏈

        有竟爭又需要合作的情境。技術上聯盟鏈是指共識過程受到預選節點控制的區塊鏈。只有準入同盟節點才可以參與其中。

      如Fabric R3聯盟 / EEA (以太坊企業聯盟)/陽光鏈(眾籌平台青龍籌)

【2】區塊鏈解決問題:價值傳遞

 

【3】什麼是區塊鏈:

區塊鏈就是一種特殊的分散式資料庫

首先:區塊鏈作用是--儲存資訊 (任何需要儲存的資料均可以寫入區塊鏈,也可從裡面讀取。所以它是--資料庫)

其次:任何人都可以架設伺服器加入區塊鏈網路,成為一個節點。所以它具有--分布式系統特點

區塊鏈世界裡面,沒有中心節點,每個節點都是平等的。都儲存了整個資料庫,可向任何節點寫入&讀取資料。因為所有的節點都會同步。保證區塊鏈一致。

上述:節點分布在全國各個地方,節點與節點之間相互串連。你往任何一個節點發送請求,請求資料都會快速的同步到網路上的所有節點。

說明:

【1】。沒有中心,無管理員

         如此龐大的網路沒有中心也沒有管理員,都是通過區塊鏈協議自管理。

【2】。全民記賬

        註:記賬而不是記資料 (因為區塊鏈主要用來做價值傳遞,對於價值傳遞,重要的是可信的賬本。用來記錄所有的交易資料。所謂全民記賬是這個賬本在區塊鏈每個節點上都有一份。每個節點都可以在遵循區塊鏈協議的前提下,往這個賬本上寫入交易資料)

【3】。只能增查,不能改刪

        註:在區塊鏈上的資料操作,指的是對區塊鏈上的交易資料進行操作,而不是最終的狀態。

        我們進行轉賬操作時,餘額變動,

【3】區塊鏈特點:

(1)。不可攥改 :區塊鏈只支援添加和查詢,不能修改和刪除 (區塊鏈上沒有404)

(2)。可追溯 :

(3)。去中心化:對資料不可攥改的保證,不能依賴於一個中心。

 

3。區塊鏈架構模型

說明:

資料層-》網路層-》共識層-》激勵層-》合約層  (共5層)一起構成區塊鏈基礎架構的核心系統。

應用程式層:代表基於區塊鏈技術構建的各種應用。與區塊鏈5個核心系統分開部署,通過遠端程序呼叫RPC,與區塊鏈核心系統進行互動。

【1】資料層 & 網路層 & 共識層  (構建區塊鏈必要元素)

      A。資料層

      資料層封裝了底層資料的鏈式結構,以及相應的非對稱公私密金鑰加密技術和時間戳記技術。(整個區塊鏈技術中最底層的資料結構)

      B。網路層

      網路層包括p2p組網機制,資料傳播機制和資料驗證機制等。

     C。共識層

     共識層封裝了網路節點的各類共識機制演算法。共識機制演算法是區塊鏈的核心技術,這決定了到底是誰來進行計算。計算方式將影響整個系統的安全性和可靠性。

     POW/EOS/DPOS/PBFP等共識演算法。

【2】。激勵層 (主要應用公有鏈)

    主要用在公有鏈中。必須激勵遵守規則參與計算的節點。懲罰不遵守規則的節點。(私人鏈 & 聯盟鏈中不一定要激勵,因為參與計算的節點往往在鏈外就完成了博弈)

【3】。合約層

    用來封裝各類指令碼,演算法和智能合約。是區塊鏈可程式化的基礎。可簡單理解為一份自訂的電子合約。並且這個合約可以在達到一定觸發條件後自動執行,不需要人工幹預。也可在不滿足條件時自動解約。

【4】。應用程式層

   應用程式層封裝了區塊鏈的應用情境和案例。如搭建的以太坊等?

 

4。區塊鏈鏈式結構

鏈式結構:

鏈式結構最基礎構成單無----區塊(由區塊頭和區塊體組成)

區塊體:儲存體交易資料

區塊頭:父區塊hash

問題:為什麼每一個區塊頭都要儲存上一下區塊的hash值?(同一個值進行hash計算的結果是一致的。)

理解--hash函數

4。鏈式結構小結

注意:區塊1的值有一點改動,hash值都會變化。區塊2就會引用一個錯誤的地址。即區塊鏈2引用的區塊1的hash值無效。

區塊1值的變動,會引起區塊2hash值的變動。。。。依次。。。(要改動所有區塊。)

 

5。構建自己的區塊鏈

組成部分:

(一)。實現鏈式結構

(二)。實現一個簡單的http server,對外暴露讀寫介面

步驟:

step1:建立block   (開發環境:GoLand)

        A。建立工程demochain

             demichain /  Block.go

        B。建立Block檔案

        C。建立Block結構體與函數

結構體:

計算hash值

產生新區塊

創始區塊

step2:建立blockchain

視頻地址:https://www.imooc.com/video/17447

A。建立blockchain檔案 (Blockchain.go)

B。建立blockchain結構體與相關方法

定義blockchain結構體:

定義相關方法 (向區塊鏈裡添加區塊)

 

 

驗證(不是所有區塊都可以添加到區塊鏈)

step3:建立httpserver

視頻地址:https://www.imooc.com/video/17448

不僅可以在本地訪問也可以提供API介面訪問。

包:rpc / 檔案 Server.go

(三)。效果展示(3個區塊鏈,可通過地址欄添加新的區塊鏈)

視頻地址:https://www.imooc.com/video/17445

001/Go語言構建區塊鏈(mooc)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.