主頁 > 區塊鏈 > fabric1.0學習筆記(1)

fabric1.0學習筆記(1)

2021-09-14 14:16:13 區塊鏈

一、系統架構
fabric系統架構由 應用程式層 和 底層區塊鏈層構成,

fabric為應用程式提供了 grpc介面,針對不同語言封裝了不同的sdk(go、nodejs、Java)

請添加圖片描述

應用程式與底層互動的媒介有4個 身份、賬本、交易和智能合約

  • 1.身份服務
    由fabric的成員服務提供,用pka體系和ca系統提供注冊登錄及身份認證功能,這里的冊登錄不是賬號密碼那種,也不需要在區塊鏈上為每一個應用程式建立一個身份,有點像資料庫的身份管理,這個身份是應用程式用來與fabric網路進行互動的,fabric里的一個身份有多個證書, 有用戶證書、交易證書、tls證書(用戶加密傳輸)這些證書都在crypto-config檔案夾下可以看到,
  • 2.賬本管理
    實際上是對區塊的管理,有兩種查詢方法 按區塊高度 或 按區塊哈希查詢,賬本會根據通道進行隔離,包括物理上分檔案夾存盤,
    注:可以用交易id查詢區塊不太好理解,
  • 3.交易
    應用程式提交交易到背書節點進行背書(有點擔保的意思)然后給排序節點進行排序并打包成區塊之后分發
  • 4.智能合約
    相當于函式定義,交易則是函式呼叫,

cap原理一致性、可用性、磁區容忍性、farbic為了提高可用性和磁區容忍性降低了一致性,fabric為了滿足一致性提出了共識機制,

fabric的共識 應用程式向背書節點提出交易請求,背書節點進行交易模擬確認交易并背書然后把背書結果和簽名回傳給應用程式,應用程式再將背書后的交易發送給排序節點進行排序并生成區塊向全網的記賬節點進行廣播,記賬節點會對交易進行再次確認,認證后再存入本地賬本,

fabric網路里有兩種通信方式 排序節點與每個組織的錨節點用grpc 組織的錨節點與其他節點之間用gossip協議完成交易廣播.
鏈碼服務 通過容器實作,不是很理想,環境所占的空間比較大,
國內的應用程式必須要采用國密,橢圓曲線和SHA256都不被認可,

二、fabric中的節點:

  • 1.客戶端節點 cli
    介于應用程式和底層之間并不能算是底層節點,運行時需要與orderer、peer節點建立連接才可以發揮作用 例:連接到orderer節點進行通道創建,與peer節點連接進行交易模擬等

  • 2.peer節點 peer
    包括anchor節點、endorser節點、 committer節點
    anchor節點一個組織只有一個anchor節點(錨節點,一個組織內唯一的一個與orderer節點進行通信的節點,初始化組織的時候進行指定,系統運行中錨節點掛掉之后會自動選出一個新的錨節點與orderer連接)
    endorser節點(背書節點,擔保節點,每個智能合約安裝時都會設定背書策略即由哪些節點擔保后這筆交易才有效,只有背書節點才會運行智能合約)
    committer節點 (記賬節點,最基本的peer節點從某種意義來說每個節點都有記賬功能都是committer節點,如果一個節點既不是錨節點也不是背書節點那么他就是普通的記賬節點)驗證從orderer節點收到的區塊及交易的有效性,驗證過后記錄到本地的賬本中,如果交易有效還會同時更改區塊鏈的狀態資料,這三種節點并不沖突,

  • 3.orderer節點 orderer
    排序節點,從全網的客戶端節點接受交易,將交易排序,按固定時間間隔將排序好的交易打包成區塊分發給其他組織的主節點 目前有兩種排序方式 solo單機只有一個排序節點只適用于測驗 Kafka集群排序

  • 4.ca節點 ca
    證書頒發機構,主要用于建立一個區塊鏈的身份,判斷一個身份是否是有效合法的,只有ca認可的機構才能夠在區塊鏈上進行交易 ca節點可以選擇,

三、fabric的網路拓撲結構
請添加圖片描述

  • 1.客戶端節點(基于區塊鏈的應用程式)向ca機構(可以是官方的也可能是非官方的)表明身份獲得證書用于后續的操作

  • 2.客戶端可以向不同組織的背書節點發送交易提案,獲得背書后在向orderer節點提交交易

  • 3.orderer節點向上提交給Kafka集群,由orderer和kafka集群完成排序后orderer向每個組織的錨節點廣播,

  • 4.錨節點再在組織內通過gossip協議擴散區塊訊息,

這里存在一個樹形結構:
Kafka->orderer->anchor(錨節點)->所有的peer節點

樹形結構的好處:假如每個組織對應一個企業那么內部資料可以只在組織內部傳播,對外只需要暴露出一個anchor錨節點即可,保證了資料的安全性,

注:每個組織都有一個ca的根證書,網路中的ca節點的根證書要被其他組織所認可

四、fabric網路中的交易流程

請添加圖片描述
(文中序號與圖中標號不對應)

  • 1.應用程式在本地構造交易提案并向背書節點發送交易提案(這里背書節點是智能合約中的背書策略規定的,例如,智能合約的背書策略要求至少兩個背書節點背書那么客戶端就需要把交易提案發送到至少兩個背書節點,如果沒有獲得結果就繼續發送,否則交易無效,這里面的背書節點的順序沒有要求)

  • 2.背書節點模擬執行交易提案并簽名,背書節點收到交易提案后會進行檢查作業如格式、是否已經提交過、簽名及發送節點是否有權限等,驗證通過后背書節點會把交易發送給智能合約隔離執行,執行完后背書節點對結果簽名(背書)并回傳給應用程式,這里只是模擬執行,不會產生持久化操作,

  • 3.應用程式(客戶端節點)收到回傳的結果,首先對結果進行驗證主要是簽名,驗證通過后,如果是查詢交易,回傳結果就是需要的內容,如果是寫交易應用程式需要收到足夠多的背書結果(智能合約的背書策略規定的),然后把交易提案、背書結果和自己的簽名(稱為交易),把交易發送給排序節點orderer進行排序,

請添加圖片描述

  • 4.排序節點收到交易對交易排序,排序節點收到交易后首先驗證背書結果是否一致,如果不一致排序節點也發現不了(之后會有檢測),依然會按照交易提交的順序對交易排序然后打包發送給各個組織的主節點anchor

  • 5.主節點驗證、保存區塊,主節點收到區塊后會首先驗證區塊里的每筆交易是否有效,無效交易會標記為無效交易(當前版本里不會洗掉,依然會保存到賬本里但不會更新狀態資料庫)

  • 6.主節點在組織內通過gossip協議向各個peer節點同步區塊,每個peer節點都會像主節點一樣驗證區塊里的每筆交易是否有效并更新狀態資料庫

五、fabric中的共識
(這里只是簡單介紹共識)
所謂共識:一般指三個程序
交易背書(模擬 與endorser(背書節點)節點相關)
交易排序(排序 與orderer(排序節點)相關)
交易驗證(驗證 與committer(記賬節點)相關)
這里面共識主要指交易排序

orderer節點功能 交易排序、 區塊分發、 通道隔離

  • 1.交易排序:保證系統交易順序的一致性,現階段有兩種solo和kafka
  • 2.區塊分發:排序節點排完序后會把交易打包成區塊,這個區塊是中間區塊(包括所有收到的交易)各個peer節點收到區塊后還要對區塊里的每筆交易進行驗證,驗證完后會把無效交易標出來
  • 3.通道隔離:交易按通道進行排序,在客戶端提交交易時會標出交易要發往的通道,orderer節點收到交易后會根據這個通道對交易分別進行排序,然后發往通道中各個組織的的錨節點,一個組織的各節點可以訂閱多個通道,通道與通道之間是隔離的,彼此之間不知道對方的存在,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/300040.html

標籤:區塊鏈

上一篇:Bitcoin密鑰、UTXO、區塊結構

下一篇:加入SC-SIG,構建智能合約及分布式應用 |SIG英雄帖

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • JAVA使用 web3j 進行token轉賬

    最近新學習了下區塊鏈這方面的知識,所學不多,給大家分享下。 # 1. 關于web3j web3j是一個高度模塊化,反應性,型別安全的Java和Android庫,用于與智能合約配合并與以太坊網路上的客戶端(節點)集成。 # 2. 準備作業 jdk版本1.8 引入maven <dependency> < ......

    uj5u.com 2020-09-10 03:03:06 more
  • 以太坊智能合約開發框架Truffle

    前言 部署智能合約有多種方式,命令列的瀏覽器的渠道都有,但往往跟我們程式員的風格不太相符,因為我們習慣了在IDE里寫了代碼然后打包運行看效果。 雖然現在IDE中已經存在了Solidity插件,可以撰寫智能合約,但是部署智能合約卻要另走他路,沒辦法進行一個快捷的部署與測驗。 如果團隊管理的區塊節點多、 ......

    uj5u.com 2020-09-10 03:03:12 more
  • 谷歌二次驗證碼成為區塊鏈專用安全碼,你怎么看?

    前言 谷歌身份驗證器,前些年大家都比較陌生,但隨著國內互聯網安全的加強,它越來越多地出現在大家的視野中。 比較廣泛接觸的人群是國際3A游戲愛好者,游戲盜號現象嚴重+國外賬號安全應用廣泛,這類游戲一般都會要求用戶系結名為“兩步驗證”、“雙重驗證”等,平臺一般都推薦用谷歌身份驗證器。 后來區塊鏈業務風靡 ......

    uj5u.com 2020-09-10 03:03:17 more
  • 密碼學DAY1

    目錄 ##1.1 密碼學基本概念 密碼在我們的生活中有著重要的作用,那么密碼究竟來自何方,為何會產生呢? 密碼學是網路安全、資訊安全、區塊鏈等產品的基礎,常見的非對稱加密、對稱加密、散列函式等,都屬于密碼學范疇。 密碼學有數千年的歷史,從最開始的替換法到如今的非對稱加密演算法,經歷了古典密碼學,近代密 ......

    uj5u.com 2020-09-10 03:03:50 more
  • 密碼學DAY1_02

    目錄 ##1.1 ASCII編碼 ASCII(American Standard Code for Information Interchange,美國資訊交換標準代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,并等同于國際標準ISO/IE ......

    uj5u.com 2020-09-10 03:04:50 more
  • 密碼學DAY2

    ##1.1 加密模式 加密模式:https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html ECB ECB : Electronic codebook, 電子密碼本. 需要加密的訊息按照塊密碼的塊大小被分為數個塊,并對每個塊進 ......

    uj5u.com 2020-09-10 03:05:42 more
  • NTP時鐘服務器的特點(京準電子)

    NTP時鐘服務器的特點(京準電子) NTP時鐘服務器的特點(京準電子) 京準電子官V——ahjzsz 首先對時間同步進行了背景介紹,然后討論了不同的時間同步網路技術,最后指出了建立全球或區域時間同步網存在的問題。 一、概 述 在通信領域,“同步”概念是指頻率的同步,即網路各個節點的時鐘頻率和相位同步 ......

    uj5u.com 2020-09-10 03:05:47 more
  • 標準化考場時鐘同步系統推進智能化校園建設

    標準化考場時鐘同步系統推進智能化校園建設 標準化考場時鐘同步系統推進智能化校園建設 安徽京準電子科技官微——ahjzsz 一、背景概述隨著教育事業的快速發展,學校建設如雨后春筍,隨之而來的學校教育、管理、安全方面的問題成了學校管理人員面臨的最大的挑戰,這些問題同時也是學生家長所擔心的。為了讓學生有更 ......

    uj5u.com 2020-09-10 03:05:51 more
  • 位元幣入門

    引言 位元幣基本結構 位元幣基礎知識 1)哈希演算法 2)非對稱加密技術 3)數字簽名 4)MerkleTree 5)哪有位元幣,有的是UTXO 6)位元幣挖礦與共識 7)區塊驗證(共識) 總結 引言 上一篇我們已經知道了什么是區塊鏈,此篇說一下區塊鏈的第一個應用——位元幣。其實先有位元幣,后有的區塊 ......

    uj5u.com 2020-09-10 03:06:15 more
  • 北斗對時服務器(北斗對時設備)電力系統應用

    北斗對時服務器(北斗對時設備)電力系統應用 北斗對時服務器(北斗對時設備)電力系統應用 京準電子科技官微(ahjzsz) 中國北斗衛星導航系統(英文名稱:BeiDou Navigation Satellite System,簡稱BDS),因為是目前世界范圍內唯一可以大面積提供免費定位服務的系統,所以 ......

    uj5u.com 2020-09-10 03:06:20 more
最新发布
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:46:47 more
  • Hyperledger Fabric 使用 CouchDB 和復雜智能合約開發

    在上個實驗中,我們已經實作了簡單智能合約實作及客戶端開發,但該實驗中智能合約只有基礎的增刪改查功能,且其中的資料管理功能與傳統 MySQL 比相差甚遠。本文將在前面實驗的基礎上,將 Hyperledger Fabric 的默認資料庫支持 LevelDB 改為 CouchDB 模式,以實作更復雜的資料... ......

    uj5u.com 2023-04-16 07:28:31 more
  • .NET Core 波場鏈離線簽名、廣播交易(發送 TRX和USDT)筆記

    Get Started NuGet You can run the following command to install the Tron.Wallet.Net in your project. PM> Install-Package Tron.Wallet.Net 配置 public reco ......

    uj5u.com 2023-04-14 08:08:00 more
  • DKP 黑客分析——不正確的代幣對比率計算

    概述: 2023 年 2 月 8 日,針對 DKP 協議的閃電貸攻擊導致該協議的用戶損失了 8 萬美元,因為 execute() 函式取決于 USDT-DKP 對中兩種代幣的余額比率。 智能合約黑客概述: 攻擊者的交易:0x0c850f,0x2d31 攻擊者地址:0xF38 利用合同:0xf34ad ......

    uj5u.com 2023-04-07 07:46:09 more
  • Defi開發簡介

    Defi開發簡介 介紹 Defi是去中心化金融的縮寫, 是一項旨在利用區塊鏈技術和智能合約創建更加開放,可訪問和透明的金融體系的運動. 這與傳統金融形成鮮明對比,傳統金融通常由少數大型銀行和金融機構控制 在Defi的世界里,用戶可以直接從他們的電腦或移動設備上訪問廣泛的金融服務,而不需要像銀行或者信 ......

    uj5u.com 2023-04-05 08:01:34 more
  • solidity簡單的ERC20代幣實作

    // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "hardhat/console.sol"; //ERC20 同質化代幣,每個代幣的本質或性質都是相同 //ETH 是原生代幣,它不是ERC20代幣, ......

    uj5u.com 2023-03-21 07:56:29 more
  • solidity 參考型別修飾符memory、calldata與storage 常量修飾符C

    在solidity語言中 參考型別修飾符(參考型別為存盤空間不固定的數值型別) memory、calldata與storage,它們只能修飾參考型別變數,比如字串、陣列、位元組等... memory 適用于方法傳參、返參或在方法體內使用,使用完就會清除掉,釋放記憶體 calldata 僅適用于方法傳參 ......

    uj5u.com 2023-03-08 07:57:54 more
  • solidity注解標簽

    在solidity語言中 注釋符為// 注解符為/* 內容*/ 或者 是 ///內容 注解中含有這幾個標簽給予我們使用 @title 一個應該描述合約/介面的標題 contract, library, interface @author 作者的名字 contract, library, interf ......

    uj5u.com 2023-03-08 07:57:49 more
  • 評價指標:相似度、GAS消耗

    【代碼注釋自動生成方法綜述】 這些評測指標主要來自機器翻譯和文本總結等研究領域,可以評估候選文本(即基于代碼注釋自動方法而生成)和參考文本(即基于手工方式而生成)的相似度. BLEU指標^[^?88^^?^]^:其全稱是bilingual evaluation understudy.該指標是最早用于 ......

    uj5u.com 2023-02-23 07:27:39 more
  • 基于NOSTR協議的“公有制”版本的Twitter,去中心化社交軟體Damus

    最近,一個幽靈,Web3的幽靈,在網路游蕩,它叫Damus,這玩意詮釋了什么叫做病毒式營銷,滑稽的是,一個Web3產品卻在Web2的產品鏈上瘋狂傳銷,各方大佬紛紛為其背書,到底發生了什么?Damus的葫蘆里,賣的是什么藥? 注冊和簡單實用 很少有什么產品在用戶注冊環節會有什么噱頭,但Damus確實出 ......

    uj5u.com 2023-02-05 06:48:39 more