Writing Your First Application(fabcar)
Source: https://hyperledger-fabric.readthedocs.io/en/latest/write_first_app.html
Last updated
Source: https://hyperledger-fabric.readthedocs.io/en/latest/write_first_app.html
Last updated
2020-02-11: Fabric v1.4 -> Farbic v2.0 기준으로 업데이트
Working Path: fabric-samples/fabcar
fabcar 어플리케이션을 실행하기 전에 네트워크를 세팅한다.
명령어를 실행하면 아래와 같은 화면이 출력된다. 컨테이너 생성 및 실행 -> 채널 생성 (mychannel로 설정되어 있음) -> 피어 참여 순으로 HLF 네트워크가 구성된다.
startFabric.sh 실행 중 마지막 화면에 Fabcar 어플리케이션을 설치하고 실행하기 위한 인스트럭션이 출력된다. 위 화면은 JavaScript용 인스트럭션이며 Java와 Typescript도 지원한다.
JavaScript 인스트럭션에 따라 Fabcar 어플리케이션을 설치 및 실행해보자. 실행 후 /javascript에 생성되는 파일 및 디렉토리는 아래와 같다.
enrollAdmin.js: Admin 등록
invoke.js: 원장 업데이트
/node_modules: npm에 의해 설치된 모듈 및 패키지
package.json: fabcar 어플리케이션 정보
query.js: 원장 쿼리
registerUser.js: User 등록
wallet: admin과 user의 Credentials
HLF 네트워크에 Admin과 User를 등록한다. 명령어 실행 후 /wallet에 admin과 user1의 개인키, 공개키, 인증서가 저장된다.
mychannel의 fabcar 컨트랙트에 접근하여 원장에 등록된 차량의 정보를 모두 출력한다. (queryAllCars 함수를 호출)
원장을 업데이트하기 위해서 invoke.js 파일을 일부 수정한다. 수정 위치는 44라인의 contract.submitTransaction()의 파라미터이다. 첫 번째 파라미터는 그대로 유지하고, 두 번째부터 차량 식별자, 제조사, 차종, 차 색상, 소유자 순으로 수정한다.
submitTransaction(): 특정한 트랜잭션을 제출하는 함수
createCar 트랜잭션은 5개의 파라미터를 필요로 함 ex: ('createCar', 'CAR12', 'Honda', 'Accord', 'Black', 'Tom')
invoke.js를 저장 후 위에서 수정한 내용의 트랜잭션을 보내 공유 원장을 업데이트한다. 업데이트한 결과는 query.js를 실행시켜 아래와 같이 확인할 수 있다.
fabcar 어플리케이션 실행 이후에는 docker 명령어로 실행 중인 네트워크를 삭제한다.