BlockChain區塊鏈
  • 本書簡介
  • 區塊鏈運作原理
  • Bitcoin介紹
    • 簡介
    • Bitcoin其他知識
  • Bitcoin原理與實作
  • BitcoinJS
    • BTC 地址格式種類
    • 從 Mnemonic 轉為地址
  • Serverless 架構實作
  • Docker常用指令
  • ethereum初探
    • ethereum歷史
    • EVM
  • ethereum PoS 節點架設
  • ethereum(Docker)
  • ethereum(Geth)
    • Parity
  • ethereum(智能合約)
    • 合約測試 Unit Test
    • DAO
    • 可升級合約
    • 使用合約進行 multiswap
    • 合約安全
    • 開發工具
    • Hardhat 教學
      • Hardhat 寫測試
    • ERC-721 範例
      • 白名單機制
    • OpenZeppelin 合約 library
    • Truffle
    • 合約部屬
    • solidity 教學
  • ethereum(Dapp)
    • 相關 SDK
    • Multicall
    • Ethers.js 使用
    • Remix IDE
    • web3.js 使用
    • 在網頁上使用 web3 並操作區塊鏈
      • solidity筆記
  • Hyperledger Fabric
  • blockchainDB
  • 挖礦程式使用教學
    • 門羅幣/Monero (XMR)
  • Bitfinex API 使用
  • FTX API
  • CCXT 通用交易所 API
  • Solana 教學
  • Ethereum BigQuery
  • The Graph
    • yaml 定義
    • mapping 語法
    • Schema 定義
    • Query 範例
    • Unit test
  • DeFi 筆記
    • MEV 相關
    • Dex 聚合
    • Yearn
    • Curve
    • Uniswap
      • Swap 互動
    • AAVE、Compound
      • Compound 原理
      • AAVE 合約開發
Powered by GitBook
On this page
  • 簡介
  • hyperledger安裝使用Docker
  • Asset Transfer with SDK
  • 使用Cli
  • 以下為舊資料
  • 安裝環境
  • 寫 chaincode
  • 本地安裝
  • golang環境變數配置(gopath,goroot)
  • 與Blockchain互動
  • 先登入一個使用者
  • 部署chaincode
  • 使用bluemix(在以下網址申請帳號之後認證信箱然後再到此網址點選建立)

Was this helpful?

Hyperledger Fabric

Previoussolidity筆記NextblockchainDB

Last updated 3 years ago

Was this helpful?

簡介

Hyerledger下有幾個專案

但其中只有 Fabric比較成熟

hyperledger安裝使用Docker

官方文件先前非常不齊全,大多是IBM上較齊全,但最近官方的Docker安裝已經寫好,所以可以參考

以下是前期需求

Go - 最新版
Docker - v1.13 or higher
Docker Compose - v1.8 or higher
Node.js & npm - node v6.9.5 and npm v3.10.10

之後啟動Docker後新增一個資料夾

mkdir -p my_dev_workspace/hackfest
cd my_dev_workspace/hackfest

之後下載環境

curl -L https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sfhackfest/sfhackfest.tar.gz

啟動六個Docker container (3 peers, a “solo” orderer, cli and CA)

docker-compose -f docker-compose-gettingstarted.yml build

docker-compose -f docker-compose-gettingstarted.yml up -d

試著輸入以下來查看是否有六個container

docker ps

然後輸入以下使用cli這個container 並執行bash指令

docker exec -it cli bash

進入bash後可輸入以下查看已經加入的節點

more results.txt

或是查看genesis block

more myc1.block

然後離開

exit

接著要下載相關 application source code 與 SDK modules

一樣在剛hackfest 的目錄底

curl -OOOOOO https://raw.githubusercontent.com/hyperledger/fabric-sdk-node/v1.0-alpha/examples/balance-transfer/{config.json,deploy.js,helper.js,invoke.js,query.js,package.json}

然後輸入

npm install

目前為止我們就具有使用Fabric的基本環境

Asset Transfer with SDK

以下使用SDK進行設定 key value pairs of "a","100" & "b","200".

GOPATH=$PWD node deploy.js

成功後如下圖

然後從A轉帳100給B

node invoke.js

然後查看B的餘額

node query.js

使用Cli

我們已經有了一個channel名稱為myc1接著我們可以新增一個myc2

再次輸入

docker exec -it cli bash

新增myc2channel

CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer channel create -c myc2https://yicheng01.github.io/article/test4.html

之後會產生myc2.block 這個genesis block

接著把三個節點加入channel

CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 CORE_PEER_ADDRESS=peer0:7051 peer channel join -b myc2.block

CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 CORE_PEER_ADDRESS=peer1:7051 peer channel join -b myc2.block

CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 CORE_PEER_ADDRESS=peer2:7051 peer channel join -b myc2.block

接著以下這個指令,會使用mycc這個chaincode 並且 在channelmyc2的peer0結點部署

CORE_PEER_ADDRESS=peer0:7051 CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer chaincode deploy -C myc2 -n mycc -p github.com/hyperledger/fabric/examples -c '{"Args":["init","a","100","b","200"]}'

之後轉帳

CORE_PEER_ADDRESS=peer0:7051 CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer chaincode invoke -C myc2 -n mycc -c '{"function":"invoke","Args":["move","a","b","10"]}'

查詢B餘額

CORE_PEER_ADDRESS=peer0:7051 CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer chaincode query -C myc2 -n mycc -c '{"function":"invoke","Args":["query","a"]}'

最後,如果你不想在一開始時就有預設channel,可把docker-compose-gettingstarted.yml的以下部分註解即可

#  command: sh -c './channel_test.sh; sleep 1000'

之後要寫相關合約可參考以下教學文章

以下為舊資料

安裝環境

寫 chaincode

本地安裝

golang環境變數配置(gopath,goroot)

安裝好go後要設置gopath這個是我們工作路徑,之後

mkdir -p $GOPATH/src/github.com/hyperledger

cd $GOPATH/src/github.com/hyperledger

git clone -b v0.5-developer-preview https://github.com/hyperledger-archives/fabric.git

fork後clone入你的目錄下

cd $GOPATH

mkdir -p src/github.com/<YOUR_GITHUB_ID_HERE>/

cd src/github.com/<YOUR_GITHUB_ID_HERE>/

git clone -b v2.0 https://github.com/<YOUR_GITHUB_ID_HERE>/learn-chaincode.git

之後可以build

cd $GOPATH/src/github.com/<YOUR_GITHUB_ID_HERE>/learn-chaincode/start
go build ./

記得0.5版不會有問題,0.6在build時會出現

./chaincode_start.go:34: cannot use new(SimpleChaincode) (type *SimpleChaincode) as type shim.Chaincode in argument to shim.Start:

與Blockchain互動

先登入一個使用者

如果使用bluemix可在此查看預設的ID

之後使用postman等工具像節點url發出request

部署chaincode

官方目前規定要部署必須將code先放在一個公開的repo上(ex:github)

使用bluemix(在以下網址申請帳號之後認證信箱然後再到此網址點選建立)

官方有提供三種方式

再來把

如果是local部署可查看

https://www.hyperledger.org/community/projects
https://www.youtube.com/watch?v=js3Zjxbo8TM
http://hyperledger-fabric.readthedocs.io/en/latest/asset_setup.html
https://github.com/IBM-Blockchain/learn-chaincode
https://www.ibm.com/developerworks/cloud/library/cl-ibm-blockchain-101-quick-start-guide-for-developers-bluemix-trs/index.html#2-3
https://github.com/EasonWang01/learn-chaincode/blob/master/docs/setup.md
http://www.jianshu.com/p/4e699ff478a5
https://github.com/EasonWang01/learn-chaincode
https://console.ng.bluemix.net/docs/services/blockchain/etn_sdk.html
https://github.com/IBM-Blockchain/learn-chaincode
https://github.com/hyperledger/fabric/blob/v0.6/membersrvc/membersrvc.yaml#L199
https://console.au-syd.bluemix.net/catalog/services/blockchain/