Hyperledger Fabric 개발환경구축및예제 Intelligent Networking Lab
Outline 2/64 개발환경구축 1. Docker installation 2. Golang installation 3. Node.Js installation(lts) 4. Git besh installation 예제 1. Building My First Network 2. Chaincode-docker-devmode example
Notification 3/64 Warning BIOS 에가상화기능이꺼져있다면 Window 부팅시가상화를키고실습을진행하시기바랍니다.
Before it starts 4/64 재부팅화면에서 F12( 연타 ) ( intel 컴퓨터기준 )
Before it starts 5/64 가상화기능을 Enabled 로변경후
Save and Restart 6/64
설치및개발환경구축 7/64
Docker download and execute. 8/64 https://docs.docker.com/docker-for-windows/install/ Download 후실행
개발환경구축 (Docker 설치 ) 9/64
Docker install 10/64
Docker install succeeded. 11/64
Hyper-V 가안켜져있다면켜기 12/64 도커는최신버전에윈도우에서만동작하기때문에업데이트를작업을한다.( 자동 )
Hyper-V ON 13/64
Hyper V ON 켜기. 14/64
Hyperledger fabric 개발환경구축 15/64
개발환경구축 16/64 https://hyperledger-fabric.readthedocs.io/en/release-1.4/prereqs.html Hyperledger fabric 도큐먼트에서 go 다운로드 link 로이동해서다운로드한다.
개발환경구축 (golang 설치 ) 17/64 https://golang.org/dl/ Default 설정으로설치하기
개발환경구축 (golang 설치 ) 18/64 Golang 설치완료
개발환경구축 (go lang 환경변수변경 ) 19/64 환경변수까지 Setting 하면 Golang 설치완료
개발환경구축 (Node.Js 설치 ) 20/64 https://nodejs.org/en/download/ Node.js 설치. (LTS version 으로다운받아야한다.)
개발환경구축 21/64 Default 설정으로설치하면완료
개발환경구축 22/64 Windows-build-tools 를통해서 python 설치가되어야한다. 그래서 Git bash 를사용한다. Google 검색창에 windows git 을검색하고최상단에있는것을 Click 한다.
개발환경구축 23/64 https://git-scm.com/download/win 사이트에접속하면자동으로운영체제에맞는 setup file 이다운받아진다. Default 설정으로설치한다.
개발환경구축 24/64
개발환경구축 25/64 check 환경변수 Setting 을위해재부팅
개발환경구축 26/64 Docker 가제대로동작하고있어야한다. For Node.js you also need the necessary Visual Studio C++ Build Tools which are freely available and can be installed with the following command:
개발환경구축 27/64 All done! 이나왔다면완료.
개발환경구축 28/64 Once this is done, you should also install the NPM GRPC module with the following command: NPM 은 Node Package Module 의약자이다. Node.js 에서사용가능한모듈들을패키지화하여모아두었다. 라이브러리가필요할경우, 웹에서하나하나전부검색할필요없어개발자들에게편리함을제공한다. 종료후관리자권한으로 git bash 다시실행.
개발환경구축 29/64 Run git bash as administrator again. Install Platform-specific Binaries. 1.4.1 Curl : Client URL 프로토콜등에의해전송되는파일을위한 command line tool 이다.
First network 구축 30/64
개발환경구축 31/64 ls ltr : 디렉토리목록확인 ((v1.4.1)) ((v1.4.1))
1. pwd 명령어를통해자신의현재디렉토리를확인한다. 2. 본디렉토리로실습환경구축을위해서환경변수를추가해야한다. 32/64
개발환경구축 33/64 3 1 2 4
First Network 구축 34/64 Git bash 를닫고다시한번관리자권한으로실행
개발환경구축 35/64 Check the path ((v1.4.1)) ((v1.4.1)) ((v1.4.1)) ((v1.4.1)) ((v1.4.1))
개발환경구축 36/64 Git bash 관리자권한으로재시작
네트워크구축 37/64./byfn.sh up Byfn.sh(Build your first network) 를업로드시킨다.
개발환경구축 38/64 ((v1.4.1))
개발환경구축 Complete 39/64
Docker 이미지확인 40/64 mycc: mychaincode This is the Chaincode
41/64 Next, we need to tell the configtxgen tool where to look for the configtx.yaml file that it needs to ingest. We will tell it look in our present working directory: ((v1.4.1)) Then, we ll invoke the configtxgen tool to create the orderer genesis block: ((v1.4.1)) ((v1.4.1))
Create a Channel Configuration Transaction Cut and Paste export CHANNEL_NAME=mychannel &&../bin/configtxgen -profile TwoOrgsChannel -outputcreatechanneltx./channel-artifacts/channel.tx -channelid $CHANNEL_NAME ((v1.4.1)) 42/64 You should see an output similar to the following in your terminal: ((v1.4.1)) Now, we will define the anchor peer for Org2 on the same channel:
Start the network 43/64 If you ran the byfn.sh example above previously, be sure that you have brought down the test network before you proceed
Chaincode-docker-devmode 예제 First. 예제시작전가장먼저실행중인 Docker 이미지를다삭제해준다. Cut and Paste : docker rm f $(docker ps a -q) docker rmi f $(docker images -q) 44/64
Go to Github 45/64 https://github.com/hyperledger/fabric-samples/tree/release-1.4/chaincode-docker-devmode
Open three terminals 46/64 1 cd chaincode-docker-devmode 2
Terminal 2 - Build & start the chaincode 47/64 1 winpty docker exec it chaincode bash You should see following : 2Now compile your chaincode :
Terminal 2 Run the chaincode 3Now Run the chaincode : 48/64
Terminal 3 - Use the chaincode 49/64 peer chaincode install -p chaincodedev/chaincode/chaincode_example02/go -n mycc -v 0 1 2
2 Now issue an invoke to move 10 from a to b. peer chaincode query -n mycc -c '{"Args":["query","a"]}' -C myc 50/64 1 peer chaincode invoke -n mycc -c '{"Args":["invoke","a","b","10"]}' -C myc
Testing New Chaincode 를위해서개발 Tool Install 51/64 https://code.visualstudio.com/
New chaincode (Register) 52/64 실습내용 : Chaincode 를사용해임의의인물을생성해서계좌를개설해서돈을입금 / 출금해보는예제. Go to chaincode_example02.go 추가
Chaincode 작성 53/64 코드를작성하고 Ctrl +S
Blockchain Network shut down 새로운 chaincode 컴파일실행을위해 54/64 ((v1.4.1)) ((v1.4.1))
Blockchain Network Running (Terminal 1) 55/64 Terminal 1 을다시 run 시켜준다. Cut and paste : docker-compose docker-compose-simple.yaml up
Terminal 2 56/64 전에컴파일한파일을지운다.
Chaincode compile (RE) Terminal 2 57/64 1 go build -o chaincode_example02 2 CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=mycc:0./chaincode_example02
Chaincode install Terminal 3 58/64 peer chaincode install -p chaincodedev/chaincode/chaincode_example02/go -n mycc -v 0
계좌에잔액부여 Terminal 3 59/64 전에 chaincode 와동일하게실습 Terminal 2 에서확인가능
잔액확인 Terminal 3 에입력 60/64 peer chaincode query -n mycc -c '{"Args":["query","a"]}' -C myc // A 에잔액이얼마가있는지확인 Terminal 2 에서확인가능
구현한 Register chaincode 확인 61/64 Terminal 3에서입력하고 peer chaincode invoke -n mycc -c '{"Args":["reg","tablo","1000"]}' -C myc 이름이 tablo인사람을잔액 1000원으로등록 Terminal 2 에서확인
Register 한 user 에잔액확인 Terminal 3 에입력 62/64 peer chaincode query -n mycc -c '{"Args":["query","tablo"]}' -C myc Terminal 2 에서확인가능
Thank you!! 63/64