中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

手機(jī)版網(wǎng)站建設(shè)seo優(yōu)化的搜索排名影響因素主要有

手機(jī)版網(wǎng)站建設(shè),seo優(yōu)化的搜索排名影響因素主要有,安徽網(wǎng)站建設(shè)公司,wordpress添加干擾代碼知識點(diǎn) 源碼編譯 主機(jī)編譯 容器編譯 手動部署(docker-compose) 單peer 多peer 中途加peer 多主機(jī)多peer 鏈碼 語法, 接口 (go版) 命令行調(diào)用 ca server 在DApp中使用SDK調(diào)用 (js版) 部署的幾個階段 部署1排序和1節(jié)點(diǎn), 1組織1通道 光部署能Dapp 帶ca server (每個組織一個)…

知識點(diǎn)

  • 源碼編譯
    • 主機(jī)編譯
    • 容器編譯
  • 手動部署(docker-compose)
    • 單peer
    • 多peer
    • 中途加peer
    • 多主機(jī)多peer
  • 鏈碼
    • 語法, 接口 (go版)
    • 命令行調(diào)用
    • ca server
    • 在DApp中使用SDK調(diào)用 (js版)

部署的幾個階段

  • 部署1排序和1節(jié)點(diǎn), 1組織1通道
    • 光部署
    • 能Dapp
      • 帶ca server (每個組織一個)
      • 帶TLS
  • 部署1排序和2節(jié)點(diǎn), 1組織1通道
    • 一開始就是2節(jié)點(diǎn)
      • cryptogen
    • 能Dapp
      • 帶ca server(每個組織一個)
      • 帶TLS
    • 新節(jié)點(diǎn)中途加入
      • ca server

img

名詞解釋

  • Transaction:?次Chaincode函數(shù)的運(yùn)?。
    Transaction存儲chaincode執(zhí)?的相關(guān)信息,?如chaincodeID、函數(shù)名稱、參數(shù)等,并不包含操作的數(shù)據(jù)。

  • World State:Fabric區(qū)塊鏈系統(tǒng)中所有變量的值的集合。

    Transaction實(shí)際操作的是數(shù)據(jù),每個chaincode都有??的數(shù)據(jù)。
    Fabric使?Rocksdb存儲數(shù)據(jù),?個key-value數(shù)據(jù)庫。Key -> 變量,value -> 值。
    Fabric將每?對key-value叫做?個state,?所有的chaincode的state的合集就是World State。

  • 錨節(jié)點(diǎn)Anchor

    • 通道中每個組織(Org)都有一個錨節(jié)點(diǎn),用于同一通道中不同組織的Peer節(jié)點(diǎn)發(fā)現(xiàn)通道內(nèi)所有Peer節(jié)點(diǎn)。
  • Fabric的賬號體系,Fabric的有兩種方法獲取賬號,分別是:

    • cryptogen模塊根據(jù)配置文件生成賬號
    • Fabric-ca-server服務(wù)器生成賬號
  • 一般只有網(wǎng)絡(luò)組件配備了 TLS 服務(wù)器證書,而網(wǎng)絡(luò)用戶(例如 Admin、User1)沒有。因?yàn)?TLS 中大多數(shù)只需要設(shè)置服務(wù)器身份驗(yàn)證(單向身份驗(yàn)證)。

模塊組成

組織和證書生成器cryptogen

我們將使用該cryptogen工具為我們的各種網(wǎng)絡(luò)實(shí)體生成加密材料(x509 證書和簽名密鑰)。這些證書代表身份,它們允許在我們的實(shí)體進(jìn)行通信和交易時進(jìn)行簽名/驗(yàn)證身份驗(yàn)證。

Cryptogen 使用一個文件——crypto-config.yaml它包含網(wǎng)絡(luò)拓?fù)?#xff0c;并允許我們?yōu)榻M織和屬于這些組織的組件生成一組證書和密鑰。每個組織都提供了一個唯一的根證書 ( ca-cert),它將特定組件(對等節(jié)點(diǎn)和排序節(jié)點(diǎn))綁定到該組織。通過為每個組織分配一個唯一的 CA 證書,我們模擬了一個典型的網(wǎng)絡(luò),在該網(wǎng)絡(luò)中,參與成員將使用自己的證書頒發(fā)機(jī)構(gòu)。Hyperledger Fabric 中的交易和通信由實(shí)體的私鑰 ( keystore)簽名,然后通過公鑰 ( ) 進(jìn)行驗(yàn)證signcerts。

區(qū)塊和交易生成器configtxgen

configtxgen工具用于創(chuàng)建四個配置工件:

  • orderer genesis block,
  • channel configuration transaction,
  • and two anchor peer transactions - one for each Peer Org.

orderer塊是ordering服務(wù)的Genesis Block,通道配置交易文件在Channel創(chuàng)建時廣播給orderer 。顧名思義,錨點(diǎn)交易指定了該通道上每個組織的錨點(diǎn)。

Fabric-ca

image-20210722194525598
  • fabric-ca server
    • root
    • intermediate
    • cluster
  • fabric-ca client
  • db
    • sqlite3
    • postgres
    • mysql

系統(tǒng)組織架構(gòu)圖

(1)Fabric系統(tǒng)組織架構(gòu)圖

在這里插入圖片描述

(2) 應(yīng)收賬款融資業(yè)務(wù)場景系統(tǒng)架構(gòu)圖

image-20210728142750795

Fabric項(xiàng)目開發(fā)流程圖

image-20210725150552299

上圖中每個步驟分為3個部分,分別表示當(dāng)前步驟需要的Fabric模塊、配置文件以及需要完成的工作。

鏈碼chaincode

和以太坊相比,Fabric鏈碼和底層賬本是分開的,升級鏈碼時并不需要遷移賬本數(shù)據(jù)到新鏈碼當(dāng)中,真正實(shí)現(xiàn)了邏輯與數(shù)據(jù)的分離。

鏈碼被編譯成一個獨(dú)立的應(yīng)用程序,fabric用Docker容器來運(yùn)行chaincode,里面的base鏡像都是經(jīng)過簽名驗(yàn)證的安全鏡像,包括OS層和開發(fā)chaincode的語言、runtime和SDK層。一旦chaincode容器被啟動,它就會通過gRPC與啟動這個chaincode的Peer節(jié)點(diǎn)連接。

img

Fabric的智能合約稱為鏈碼(chaincode),分為系統(tǒng)鏈碼和用戶鏈碼。

系統(tǒng)鏈碼

  • 系統(tǒng)鏈碼: 包括系統(tǒng)的配置, 僅支持Go語言, 在Peer節(jié)點(diǎn)啟動時會自動完成注冊和部署

    • 配置系統(tǒng)鏈碼CSCC:負(fù)責(zé)管理記賬節(jié)點(diǎn)上的配置信息,加入通道等
    • 背書系統(tǒng)鏈碼ESCC:對讀寫集轉(zhuǎn)換和簽名背書(msp管理). 背書節(jié)點(diǎn)執(zhí)行用戶鏈碼之后會執(zhí)行ESCC
    • 生命周期系統(tǒng)鏈碼LSCC:負(fù)責(zé)管理鏈碼的生命周期,如安裝、實(shí)例化、升級、查詢
    • 驗(yàn)證系統(tǒng)鏈碼VSCC:負(fù)責(zé)簽名驗(yàn)證/策略驗(yàn)證. 節(jié)點(diǎn)寫入賬本之前需要運(yùn)行VSCC。
    • 查詢系統(tǒng)鏈碼QSCC:負(fù)責(zé)ledger查詢,如區(qū)塊、交易數(shù)據(jù)、區(qū)塊鏈信息等
    • MVCC: 比對讀寫集的版本

用戶鏈碼

  • 用戶鏈碼: 用戶鏈碼用于實(shí)現(xiàn)用戶的功能,真正實(shí)現(xiàn)了邏輯與數(shù)據(jù)的分離。

    • 運(yùn)行在鏈碼容器中,通過Fabric提供的接口與賬本平臺進(jìn)行交互。
    • 開發(fā)語言:go、java、python、node.js, 目前fabric對go語言的鏈碼支持的最好

鏈碼的生命周期

1. 鏈碼的安裝是單次單節(jié)點(diǎn)的。
2. 鏈碼的存儲(install)是可以多個鏈共享的,實(shí)例化(instantiate)的時候才會記錄到不同鏈的賬本數(shù)據(jù)里,不同鏈的數(shù)據(jù)是獨(dú)立隔離的。
3. Chaincode**必須**安裝在對等方上,才能成功地對賬本執(zhí)行讀/寫操作。此外,直到`init`對該鏈代碼執(zhí)行或傳統(tǒng)事務(wù)(讀/寫)(例如查詢“a”的值)之前,不會為對等方啟動鏈代碼容器。模擬執(zhí)行事務(wù)時會容器啟動。

鏈碼內(nèi)常用的系統(tǒng)方法

shim.ChaincodeStubInterface APIs 分為五類

? State 操作:

GetState(key string) ([]byte, error)
PutState(key string, value []byte) error
DelState(key string) error
RangeQueryState(startKey, endKey string) (StateRangeQueryIteratorInterface, error)

? Chaincode相互調(diào)?:

InvokeChaincode(chaincodeName string, args [][]byte) ([]byte, error)
QueryChaincode(chaincodeName string, args [][]byte) ([]byte, error)

? Table 操作:

CreateTable(name string, columnDefiniGons []*ColumnDefiniGon) error 
GetTable(tableName string) (*Table, error)
DeleteTable(tableName string) error
InsertRow(tableName string, row Row) (bool, error) ReplaceRow(tableName string, row Row) (bool, error) 
GetRow(tableName string, key []Column) (Row, error) 
GetRows(tableName string, key []Column) (<-chan Row, error) 
DeleteRow(tableName string, key []Column) error

? TransacGon操作:

GetArgs() [][]byte
GetStringArgs() []string
GetTxID() string
ReadCertAttribute(attributeName string) ([]byte, error) GetCallerCerGficate() ([]byte, error) 
GetCallerMetadata() ([]byte, error)
GetBinding() ([]byte, error)
GetPayload() ([]byte, error)
GetTxTimestamp() (*Gmestamp.Timestamp, error) 
VerifyAttribute(attributeName string, attributeValue []byte) (bool, error) 
VerifyAttributes(attrs ...*attt.Attribute) (bool, error) 
VerifySignature(cerGficate, signature, message []byte) (bool, error)

? Event操作:

SetEvent(name string, payload []byte) error

如何調(diào)用鏈碼

  • 終端里輸入命令調(diào)用

    • 更改: peer chaincode invoke
      • _images/write_first_app.diagram.2.png
    • 查詢: peer chaincode query
      • _images/write_first_app.diagram.1.png
  • 應(yīng)用程序(DApp)使用sdk(HFC - HyperledgerFabricClient)提供的接口調(diào)用 (API包含了交易處理、 安全的成員管理服務(wù)、 區(qū)塊鏈查詢和事件處理等)

    • fabric-client

      • NewChannel: 接口可以創(chuàng)建通道
      • sendTransactionProposal: 可以調(diào)用鏈碼里的函數(shù)
    • fabric-ca

      • enroll: 用戶登錄 (如:用Admin登錄)
      • register: 新用戶注冊 (如: 用Admin登錄后, 注冊一個新用戶User1)
    • fabric-network

      • evaluateTransaction: 讀數(shù)據(jù)
        • 它只是選擇連接配置文件中定義的對等點(diǎn)并將請求發(fā)送給它,在那里對其進(jìn)行評估。
        • 此交互不會導(dǎo)致更新分類帳
      • submitTransaction: 寫數(shù)據(jù)
        • SDK 不會與單個對等點(diǎn)交互,而是將submitTransaction提案發(fā)送 到區(qū)塊鏈網(wǎng)絡(luò)中每個所需組織的對等點(diǎn)。這些節(jié)點(diǎn)中的每一個都將使用這個提議執(zhí)行請求的智能合約,以生成一個交易響應(yīng),它簽名并返回給 SDK。SDK 將所有已簽名的交易響應(yīng)收集到單個交易中,然后將其發(fā)送給排序節(jié)點(diǎn)。排序節(jié)點(diǎn)收集來自每個應(yīng)用程序的交易并將其排序?yàn)橐粋€交易塊。然后它將這些塊分發(fā)到網(wǎng)絡(luò)中的每個對等點(diǎn),在那里驗(yàn)證和提交每個事務(wù)。最后,SDK 會收到通知,允許其將控制權(quán)返回給應(yīng)用程序。
    • SDK調(diào)用鏈碼示例 (老版本, 1.4版本之前)

      var Fabric_Client = require('fabric-client');   //加載sdk模塊
      var channel = fabric_client.newChannel('mychannel'); //創(chuàng)建通道
      var peer = fabric_client.newPeer('grpc://localhost:7051'); //連接peer節(jié)點(diǎn)
      channel.addPeer(peer);
      var order = fabric_client.newOrderer('grpc://localhost:7050') //連接排序節(jié)點(diǎn)
      channel.addOrderer(order);var request = {chaincodeId: 'myChaincode', //調(diào)用哪個鏈碼fcn: 'testFunc', //調(diào)用鏈碼里的哪個函數(shù)args: ['arg1', 'arg2', 'arg3'], //參數(shù)chainId: 'mychannel', //哪個通道的鏈碼txId: tx_id};
      channel.sendTransactionProposal(request); //發(fā)送交易
      

開發(fā)鏈碼主要用到的語言是golang,因?yàn)閒abric對它的支持目前最好。而應(yīng)用層使用sdk的開發(fā)其它語言也可以,nodejs是比較通用和快速的選擇。

部署和調(diào)用鏈碼之前需要先創(chuàng)建通道、加入通道、更新錨節(jié)點(diǎn),然后才能進(jìn)行有關(guān)鏈碼的操作,比如安裝鏈碼、實(shí)例化鏈碼、invoke和query等。

往現(xiàn)有網(wǎng)絡(luò)中添加新 Peer 的步驟

channel創(chuàng)建時可指定允許哪些組織內(nèi)的peer加入, 但組織內(nèi)的peer仍需手動加入channel

將向Org1添加一個peer1.org1.example.com。目標(biāo)是這個新的 peer 將成為通道的一部分,并且能夠在需要時處理鏈碼查詢和背書。

  1. peer1.org1.example.com生成加密材料
    1. 可使用 **cryptogen**
    2. 推薦使用 **fabric-ca**
  2. 創(chuàng)建一個包含此新peer的 docker compose 文件
  3. 將此新對等點(diǎn)加入現(xiàn)有頻道
    1. peer channel join
  4. 將鏈碼安裝到該節(jié)點(diǎn)
    1. peer chaincode install
    2. 但不需要再次實(shí)例化

構(gòu)建多主機(jī)多節(jié)點(diǎn)部署

不同的order由誰來布, 中途怎么加order?

構(gòu)建多節(jié)點(diǎn)部署的挑戰(zhàn)之一是 docker 容器之間的通信。

extra_hosts

Hyperledger Fabric 中三節(jié)點(diǎn)雙通道設(shè)置演示

Hyperledger-fabric 區(qū)塊鏈多主機(jī)

  • 簡單,不需要依賴任何外部組件

  • 不利的一面是IP是靜態(tài)配置的

  • 操作方法

    • docker-compose.yaml 中為每個組件增加

      extra_hosts:- "orderer.example.com:127.0.0.1"- "peer0.org1.example.com:127.0.0.1"- "peer1.org1.example.com:127.0.0.1"
      

Docker Swarm

多臺主機(jī)上的 Hyperledger Fabric 使用 Docker Swarm 和 Compose

使用基于 RAFT 的訂購服務(wù)進(jìn)行多主機(jī)設(shè)置

  • 好的一面,顯然是原始配置只需少量修改即可使用,并且配置中沒有編碼IP等靜態(tài)信息。
  • 結(jié)構(gòu)網(wǎng)絡(luò)依賴于外部組件(Docker Swarm),這可能會使設(shè)置和操作復(fù)雜化

Kubernetes (k8s)

  • 實(shí)現(xiàn)起來似乎比前兩種機(jī)制更具挑戰(zhàn)性
http://www.risenshineclean.com/news/55146.html

相關(guān)文章:

  • 鄭州軟件公司排名荊州網(wǎng)站seo
  • 網(wǎng)站建設(shè)維護(hù)員是做什么的seo簡介
  • 網(wǎng)站建設(shè)定制開發(fā)價格廣告推廣渠道有哪些
  • wordpress修改郵件地址搜索引擎營銷優(yōu)化
  • 中國十大品牌網(wǎng)官網(wǎng)seo工具下載
  • 邯鄲網(wǎng)站建設(shè)效果注冊推廣賺錢一個80元
  • 備案不關(guān)閉網(wǎng)站的方法電腦版百度
  • 創(chuàng)意網(wǎng)站十大教育培訓(xùn)機(jī)構(gòu)排名
  • 用wordpress建仿站信陽百度推廣公司電話
  • 在萬網(wǎng)上域名了怎么做網(wǎng)站寧波網(wǎng)站推廣公司報價
  • wordpress仿站全套百度引擎搜索
  • 畢設(shè)做網(wǎng)站可能遇到的問題搜索引擎優(yōu)化涉及的內(nèi)容
  • 如何做產(chǎn)品網(wǎng)站網(wǎng)頁設(shè)計登封網(wǎng)站設(shè)計
  • 網(wǎng)站優(yōu)化內(nèi)鏈怎么做如何做網(wǎng)站推廣私人
  • 做的網(wǎng)站沒給我備案騰訊競價廣告
  • 醫(yī)藥招商網(wǎng)站大全北京百度關(guān)鍵詞推廣
  • 重慶那里做網(wǎng)站外包好推蛙網(wǎng)絡(luò)
  • 站外推廣怎么做seo外鏈招聘
  • 中國男女做網(wǎng)站免費(fèi)發(fā)布產(chǎn)品的平臺
  • 網(wǎng)站建設(shè)合作合同seo基礎(chǔ)
  • 海外網(wǎng)站服務(wù)器網(wǎng)址外貿(mào)接單網(wǎng)站
  • 梅州南站30條新聞?wù)?/a>
  • 如何用div和css做購物網(wǎng)站關(guān)鍵詞歌詞打印
  • wordpress 3.4.2多地優(yōu)化完善疫情防控措施
  • 網(wǎng)站怎么維護(hù)更新bing搜索引擎入口
  • 學(xué)校門戶網(wǎng)站什么意思外貿(mào)網(wǎng)站大全
  • 深圳最近消息自己做seo網(wǎng)站推廣
  • 網(wǎng)站開發(fā)要服務(wù)器嗎東莞網(wǎng)站推廣企業(yè)
  • 有哪些網(wǎng)站可以做外貿(mào)網(wǎng)站推廣的途徑和方法
  • h5 做的網(wǎng)站 價格葫島百度seo