Mac에서 블록체인을 터치해 보았다 (Hyperledger-fabric)

Mac에서 블록체인을 움직여보세요



Hyperledger Fabric은 Docker 컨테이너로 사용되므로 MacOS에서 사용할 수 있습니다.
환경 구축을 실시해, 샘플 실행까지의 방법을 정리하고 있습니다.
샘플 실행할 수 있으면 OK라는 느낌이므로 내용은 얇습니다.
공식 샘플 "fabcar"에서 Hyperledger Fabric의 동작 확인을 실시합니다.
자신의 환경에서는, 이하의 순서로 갈 수 있었습니다!

Go, node, Git, npm 버전



설치 전에 각 버전을 나열했습니다.
참고하십시오.

go
$ go version
go version go1.9.1 darwin/amd64

node
$ node -v
v8.11.4

Git
$ git --version
git version 2.14.3 (Apple Git-98)

npm
$ npm -v
3.10.10

Docker는 최신 녀석으로 괜찮을 것 같다.

Go, nodebrew, Docker, npm 설치



Go 설치



Homebrew로 설치
$brew install go

패스를 통과
$ echo 'export GOPATH=$HOME/go' >> ~/.bash_profile
$ echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bash_profile
$ source ~/.bash_profile

nodebrew 설치



culr로 설치
$ curl -L git.io/nodebrew | perl - setup

노드의 버전 목록 표시
nodebrew ls-remote

설치 가능한 버전 목록이 표시됩니다.

버전 지정으로 node 설치
$ nodebrew install-binary v8.11.4

ls에 설치된 목록 표시
$ nodebrew ls
v6.2.1
v8.1.0
v8.11.4
v8.15.1
v10.12.0

current: v8.11.4


현재가 현재 사용중인 버전입니다.

Docker 설치



공식 사이트에서 Docker for Mac을 설치했습니다.
Docker for Mac
우선 설치할 수 있으면 OK입니다.

Hyperledger Fabric의 환경 구축



여기에서 환경 구축해 갑니다.

디렉토리 만들기
$ mkdir -p $GOPATH/src/github.com/hyperledger
$ cd $GOPATH/src/github.com/hyperledger

Git 저장소의 사본 가져 오기
$ git clone https://github.com/hyperledger/fabric.git
$ cd fabric

브랜치 전환
$ git branch
* release-1.4
$ git checkout ae4e37d
$ git branch
* (HEAD detached at ae4e37dba)
  release-1.4

[git branch]는 현재 분기 이름의 왼쪽에 "*"를 표시합니다.
[git checkout 브랜치 이름 (여기서는 ae4e37d라는 해시 값)]으로 브랜치를 전환하고,
[git branch]에서 확인해 보면 전환하고 있는 것을 확인할 수 있습니다.

디렉토리를 이동하고 build
$ cd $GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
$ go build --tags nopkcs11 ./

build는 아무것도 출력이 없으면 성공입니다.

샘플 실행 준비



공식 샘플 "fabcar"에서 Hyperledger Fabric의 동작 확인을 실시합니다.
여기에서는 그 준비를 가겠습니다.

fabric-samples 얻기
$ git clone https://github.com/hyperledger/fabric-samples.git -b v1.0.6


fabcar 샘플 설정
$ cd fabric-samples/fabcar/
$ npm install
   (略)
 (warningは無視)

설치 스크립트를 실행하기 전에 Docker를 시작합니다.
F4를 눌러 응용 프로그램 목록에서 시작합니다.


설치 스크립트 실행
./startFabric.sh

[docker ps]로 시작하는 컨테이너를 확인합니다.

컨테이너가 시작되었는지 확인
$ docker ps --format "{{.Names}}"
dev-peer0.org1.example.com-fabcar-1.0
cli
peer0.org1.example.com
couchdb
orderer.example.com
ca.example.com

6개 기동하고 있으면 OK입니다.

샘플 실행



드디어 샘플 실행입니다.

관리 사용자 admin 등록
$ node enrollAdmin.js
      (略)
Successfully enrolled admin user "admin"
      (略)

일반 사용자 user1 등록
$ node registerUser.js 
      (略)
Successfully loaded admin from persistence
Successfully registered user1 - secret:beiNjAAEqimU
Successfully enrolled member user "user1" 
User1 was successfully registered and enrolled and is ready to intreact with the fabric network

사용자 user1로 모든 데이터를 조회하고 결과를 표시합니다.
$ node query.js 
      (略)
Successfully loaded user1 from persistence
Query has completed, checking results
Response is  [{"Key":"CAR0", "Record":{"colour":"blue","make":"Toyota","model":"Prius","owner":"Tomoko"}},
{"Key":"CAR1", "Record":{"colour":"red","make":"Ford","model":"Mustang","owner":"Brad"}},
{"Key":"CAR2", "Record":{"colour":"green","make":"Hyundai","model":"Tucson","owner":"Jin Soo"}},
{"Key":"CAR3", "Record":{"colour":"yellow","make":"Volkswagen","model":"Passat","owner":"Max"}},
{"Key":"CAR4", "Record":{"colour":"black","make":"Tesla","model":"S","owner":"Adriana"}},
{"Key":"CAR5", "Record":{"colour":"purple","make":"Peugeot","model":"205","owner":"Michel"}},
{"Key":"CAR6", "Record":{"colour":"white","make":"Chery","model":"S22L","owner":"Aarav"}},
{"Key":"CAR7", "Record":{"colour":"violet","make":"Fiat","model":"Punto","owner":"Pari"}},
{"Key":"CAR8", "Record":{"colour":"indigo","make":"Tata","model":"Nano","owner":"Valeria"}},
{"Key":"CAR9", "Record":{"colour":"brown","make":"Holden","model":"Barina","owner":"Shotaro"}}]



어쨌든 자동차 정보가 많이 출력되었습니다. 이제 Hyperledger Fabric의 샘플을 실행할 수있었습니다.
SDK for Node.js를 이용한 Hyperledger Fabric과의 상호 작용에 의해 State DB의 내용을 취득하고 있다고 합니다. 자세한 것은 공부중이므로 향후 정리해 가고 싶습니다.

좋은 웹페이지 즐겨찾기