Hyperledger-入門

weixin_34019929發表於2018-09-26

0x01-名詞解釋

DLT

企業級商業化分散式賬本技術

Hyperledger

由linux基金會孵化的區塊鏈技術;DLT 框架;DLT 工具集
hyperledger用獨特的共識協議:有個order(排序)節點進行驗證

Hyperledger Fabirc

第一個孵化出來的商用的DLT 框架

Hyperledger composer

一個在DLT框架上建立商業應用的工具

Assets, chaincode& ledger

  • assets : 有價值的東西, 可以被交易的東西

json表示 {vinnumber:xxx, owner:zhangsan}

  • chaincode:智慧合約

transaction | business logic

  • ledger:賬本,所有的參與者都儲存了ledger

記錄所有的transaction

Node和peer,client,orderer

node是區塊鏈的通訊終端,在以太坊中所有的node都是相同的

4499731-fef61ccae5ed995b.png

但是在hyperledger中node分為三種:

  • client:例項化transaction的(cli , node sdk, java sdk)
  • peer:用來儲存和同步ledger的資料

    在生產環境中有多個peer, ,一個peer是ledger和blockchain儲存的位置,
    peer決定是否update的ledger. 一個peer會屬於不同的channel.
    每個channel都在peer裡面,但是是完全隔離的.
    一個peer可以控制多個channel
    peer背書ledger的更新,最後強調一下peer是ledger和blockchain儲存的位置,
    peer互相發現,互相同步

  • orderer:用來排序分發transaction的

    order提供排序服務. 在資料被提交到ledger之前, 必須先交給order服務,
    order服務建立block區塊, 這些區塊被簽名和驗證, 所有的transaction都在block裡面
    order做好了block之後,把資料發給peer, peer接收到block之後就把資料寫入自己的ledger裡面.

4499731-430f35e4de99604b.png

在hyperledger區塊鏈中,挖礦的工作,共識的達成是有orderer節點來完成的,orderer負責避免雙花,生成區塊.

4499731-2fdcfec50a1ad34a.png

premissioned network 授權網路

access control 訪問控制
business ineract with known entities
以太坊屬於匿名網路. hpyerledger是實名制的網路

confidential transaction 交易安全

transaction 是可以控制可見性的


4499731-b8352feb42884fdf.png

no cryptocurrency 無數字貨幣

沒有曠工, 低成本, 驗證操作靈活.

  • programmable 可程式設計
  • chaincode (smart contract 智慧合約)

MSP和CA

4499731-8a068b60a563dd0a.png
4499731-0b404948dc0b5567.png

每個operation在hyperledger網路 必須擁有數字簽名. update, 查詢, insert, 或者獲取metadata. 都需要數字簽名.數字簽名遵循x.509標準. fabric ca是一個高質量的工具, 幫助我們自動生成證照.
ca可以為不同的使用者生成不同的證照, 每個使用者可以擁有不同的attribute(屬性), 在屬性裡面可以新增角色,賬戶id,account number等等.你可以新增任意的資訊.
hyperledger fabric 的chaincode可以獲取使用者的證照, 根據證照的型別決定某個智慧合約是否可以執行.
比如說只有管理員可以安裝鏈碼, 普通使用者只能查詢.
fabric ca就是生成ca和建立賬戶的工具. 可以根據自己的安全策略來管理使用者.
這個證照有效期是多久,分發策略是什麼,都可以通過fabric ca來控制.
fabirc ca支援鏈式繼承, 假如某個證照被黑客攻陷, 上一級別的ca可以很容易作廢這個證照.
通過ca認證, 我們可以查詢每一筆交易的參與者,並且參與者無法抵賴. 這個特性是密碼學保證的
hyperledger的元件是可插拔的, 你完全可以不使用fabric ca,
你可以自己建立一套認證體系,用於管理使用者.設定使用者屬性,簽名transaction.
但是fabric ca是一個非常高質量,企業級的元件, 推薦大家使用.
MSP只是一個介面,Fabric-CAMSP介面的一種實現。

MSP是Membership Service Provider - 是可插拔的介面,它用於支援各種認證體系結構,為membership orchestration architecture提供抽象層。

MSP抽象提供:

  • 具體的身份格式
  • 使用者證照驗證
  • 使用者證照撤銷
  • 簽名生成和驗證

而 Fabric-CA 用於生成證照和金鑰,以真正的初始化MSP。
Fabric-CA是用於身份管理的MSP介面的預設實現。

msp 定義

  • who you are 你是誰
  • which network you are 你在什麼網路

msp的證照是由fabric ca來頒發的
每個peer都需要msp的證照
每個order都需要msp的證照.
現在需要明確的概念是, 只有擁有相同msp的 peer才可以互相發現 互相通訊
MSP ID 是一個名字定義一組證照,說明你是誰你在哪個網路.
使用hyperledger fabirc sdk的時候 經常需要指定mspid
所以這個概念要注意.


0x02-選擇題

hyperledger是什麼
A. linux基金會孵化重點專案
B. DLT 框架
C. DLT 工具集

在DLT中分散式儲存的是什麼
A. 資料
B. 賬本(book of records)
C. 技術
D. 資產

資產(assert)代表了什麼
A. 價值
B. 賬本
C. 轉賬資訊

資產的變更會生成什麼到DLT中
A. 價值(value)
B. 實體(entry)
C. 轉賬(transaction)

傳統公有鏈能否解決下面的DLT問題 不能

  • 隱私
  • 機密
  • 標準化

關於企業級商業化分散式賬本技術(DLT)特點說法正確的是:(ABCD)
A. 需要是授權網路
B. 轉賬操作要安全可信
C. 沒有挖礦的概念
D. 可程式設計

請你設計一套數字貨幣系統,可以實現轉賬和交易, 從技術角度下面的什麼技術可以使用?(AB)
A. 以太坊
B. hyperledger


0x03-問答題

什麼是Hyperledger fabric?

  • 模組化
  • 可擴充套件
  • 超安全
    Hyperledger fabric的革命性在於, 他提供了一種組織之間互相信任的機制, 讓所有的資料和資訊變化變得可信, 並且這種信任是不需要依賴任何一箇中央機構.
    Hyperledger fabric不是一個普通的軟體或者框架解決普通問題,而是一個全新的解決問題的方式.
    解決的最重要的問題---如何在不信任的個體和組織中引入信任機制.
    這種信任機制可以建立更高效的商業模式, 你不需要關心中間人, 信任和安全問題
    一句話描述, hyperledger fabric是基於區塊鏈的企業級分散式賬本技術,通過智慧合約解決多個組織之間的信任問題.

為什麼說hyperledger區塊鏈技術重建信任?

hyperledger是一個分散式系統.沒有單點故障, 沒有單點的資訊存放,
每個節點都儲存了全部的資料.所有的節點都儲存了一致的區塊鏈資料, 不可篡改.
每個節點存放了所有的轉賬記錄(賬本)

舉例:
假設你的商業模式是使用hyperledger記錄某個資產的所有者,
因為某種原因, 你錯誤的登記了這個資產的所有人.
在hyperledger裡面你沒法把這個錯誤的記錄刪除.
你的做法只能是建立一個新的記錄,標記之前的記錄是錯誤的.

在區塊鏈系統裡面,沒有刪除的概念, 所有對資料的新增和修改都會被記錄.
blockchain 記錄了資料變化的過程.
每一筆transaction都會導致資料的變化, 變化後的狀態叫世界狀態(world state)
因為所有的node節點都儲存了所有的transaction, 這些transaction都是一致的,
所以所有的node節點的世界狀態也是一致的.

這個賬本是由密碼學簽名保證,保證了資料完整性和安全性
所以說hyperledger區塊鏈技術重建信任.

hyperledger為什麼特別適合企業級開發(business)

使用hyperledger可以建立私有鏈, 可以建立聯盟鏈, 甚至我們可以用hyperledger建立公有鏈.
只要node節點處於相同的網路節點, 他們可以互相發現, 我們就可以使用hyperledger 來讓他們達成共識協議.
所以hyperledger的應用場景非常廣泛, 在任何行業,任何應用場景都可以找到可以落地的需求.

hyperledger 沒有51%攻擊.沒有挖礦的概念, 因為hyperledger 採用了獨特的共識協議,
每個共識協議的參與者都是由CA來認證的.

4499731-94aa81aebe9b6237.png

超級賬本

  • 記錄全部的transaction -> 查詢交易歷史 快
  • 記錄當前 world states -> 查詢當前餘額/歸屬者 快

hyperledger如何解決現實生活中的問題

4499731-f4a839e267ac2795.png

來看一下hyperledger fabric為什麼有廣泛的應用場景
有兩個公司 A 和 B
交換一些東西(資產) 文件, 數字資產, 版權,健康記錄,集裝箱,房屋,車輛等... 他們交換一些東西
通常情況 a和b 互不信任.
兩個公司都有自己的server 自己的伺服器.
每週或者每月對賬. 如果對賬成功, 棒棒噠,
但是在現實生活中,他們從來都不匹配.
不同的軟體,不同的技術棧,不同的操作人員.種種因素導致資料不匹配.
不匹配沒關係, 對賬啊.
如果你有個供應鏈 , 有10個組織, 之間怎麼對賬,怎麼交流?


4499731-ca9c41976e76df20.png

4499731-6530d203c1d3fec7.png
  • 傳統解決方案:

共同信任同一個中央機構

缺陷:

  1. 花錢,好多好多錢
  2. 所有機構都要共同信任一個中央機構
  3. 最主要的問題, 中央機構出了問題?
    這個事情是會發生的. 傳統的技術目前沒辦法解決這個問題。
    避免中央機構出問題, 超級複雜的審批流程.硬體級別訪問控制.操作人員背景調查...資料篡改問題依然存在
    4499731-cb5d153f5942378d.png
  • 新的解決方案:

所有資料在每個節點同步, 通過智慧合約描述商業流程.

hyperledger 保證資料實時同步, 所有的node節點儲存同步的資料.
如果有人修改了自己的資料. 所有其他的party就能立刻發現資料錯誤了.
即使一個很牛逼的黑客, 如果能把所有node節點的資料都修改了. 但資料會校驗失敗.
節點就會發現資料錯誤,存在問題.
資料的更新靠chaincode , chaincode描述了transaction操作是否可以執行.
code is law. chaincode 執行可以指定背書策略, 某個機構可以執行什麼策略.
chaincode 可以用java或者nodejs,go語言去編寫, 任何負責的業務邏輯都可以用程式語言去描述.
hyperledger inforce trust between partys. 所有人都確信他們的資料是正確的, 沒有被篡改的資料.
這就是hyperledger. 一個商業級別 能解決社會問題的, 區塊鏈框架.
hyperledger 解決了人與人,機構與機構之間的信任問題, 通過chaincode 實現價值轉移.