Luniverse User Guide

루니버스 사용을 환영합니다!
이 페이지에서는 루니버스 서비스 사용 가이드를 제공합니다.
루니버스를 사용하여 다양한 디앱(DApp)을 제작해보세요.

Welcome to Luniverse!
This page provides a guide to using the Luniverse service.
Try to create various DApps by utilizing Luniverse.

Guides

하이퍼레저 패브릭 Tutorial

루니버스에서 생성된 하이퍼레저 패브릭 네트워크에서 테스트 할 수 있는 샘플 체인코드(Chaincode)와

DApp을 다운로드 받아서 순서대로 따라해 보면서 BaaS 기능을 체험해 봅시다.

Demo DApp 설명

데모 DApp은 아이돌 그룹에 펀딩하고 리워드로 받은 토큰으로 상품을 구매하는 간단한 서비스 입니다.
클라이언트(Front-end)는 Vue.js와 axios로 개발되어 있으며, 서버(Back-end)는 하이퍼레저 패브릭 공식 SDK를 이용하여 spring boot로 개발되어 있습니다. 서버는 하이퍼레저 네트워크의 각 구성 컴포넌트들의 엔드포인트와 연동하여 Transaction을 처리하는 API를 REST 형태로 제공합니다.

DApp 다운로드 받기

  1. 위의 실습자료를 다운 받아 압축을 해제합니다. (demo-idol-funding.zip)

  2. demo-idol-funding 디렉토리로 이동합니다.
    $ cd demo-idol-funding

  3. api, chaincode 디렉토리가 있는지 확인합니다.
    $ ls

DApp 클라이언트 실행하기

웹 서버 실행하기 : idol-funding Application 을 브라우저에서 접속하기 위해서는 웹 서버를 실행해야 합니다. 이 예제에서는 npm run serve를 이용해서 웹 서비스를 제공합니다. 예제는 다음과 같은 순서로 진행합니다.

  1. Idol Funding 디렉토리로 이동합니다.
    $ cd demo-idol-funding

  2. idol-funding Application 을 서비스 하기 위한 웹 서버를 실행합니다.
    $ npm install
    $ npm run serve

DONE  Compiled successfully in 10488ms            

 
  App running at:
  - Local:   http://localhost:8080/ 
  - Network: http://172.17.43.38:8080/

  Note that the development build is not optimized.
  	  To create a production build, run npm run build.
  1. Idol Funding Demo는 아직 블록체인과 연결되지 않은 web-application 입니다.
  2. 브라우저에서 http://localhost:8080 로 접속합니다.

idol-funding 용 체인코드 배포하기

chaincode 디렉토리 아래에 go, java, nodejs 에 각각의 언어별 체인코드 소스가 있고 zip 파일이 있습니다. 원하는 언어의 zip 파일을 선택하여 아래 링크를 참조하여 배포합니다.
루니버스 체인코드 배포하기

이 때 주의할 점은 Open Beta의 경우 공용의 네트워크를 사용하는 것이므로 다른 사용자가 먼저 배포한 체인코드와 이름이 동일할 경우 에러가 발생합니다. 따라서 ID나 날짜 등 이름에 고유한 내용을 붙여서 체인코드를 네이밍 하는 것을 추천합니다.
version은 숫자가 아닌 문자로 입력이 되므로 v1.0, 1.0, 1 등 어떤 형태이든 상관없이 입력 가능합니다.
Init Parameter는 아래 텍스트를 복사하여 입력합니다.
["init","funding","14","like","256","rwt","100000"]

서버 세팅하기

서버는 블록체인에 직접 연결을 하는 코드를 담고 있어서, 몇 가지 설정이 필요합니다. 하이퍼레저 DApp 개발하기 A-Z 가이드에서 DApp 개발 준비하기를 참고하여 아래 지시사항을 확인하실 수 있습니다.

먼저 Download SDK Configuration 버튼을 클릭하며 파일을 다운로드 받으면 connection-profile-Hyperledger_Beta.yaml 의 이름으로 다운로드 폴더에 생깁니다. 이 파일을 api 디렉토리로 옮깁니다.

  1. api 디렉토리로 이동
    $ cd demo-idol-funding/api

  2. Download 받은 yaml 파일을 현재 디렉토리로 이동
    $ mv ~/Downloads/connection-profile-Hyperledger_Beta.yaml ./

다음으로 Msp 정보 파일을 다운로드 받아서 압축을 해제합니다. 그러면 msp 폴더 아래에 keystore와 signcert 폴더가 생기고 각 폴더에 Private Key와 인증서가 있습니다. 이 파일들을 역시 api 디렉토리로 옮깁니다.

  1. api 디렉토리로 이동
    $ cd demo-idol-funding/api

  2. Download 받은 파일들을 현재 디렉토리로 이동
    $ mv ~/Downloads/msp/keystore/key.pem ./
    $ mv ~/Downloads/msp/signcert/cert.pem ./

이제 콘솔을 통해 배포한 체인코드 이름과 버전을 소스 파일에 반영합니다.

  1. api 디렉토리로 이동
    $ cd demo-idol-funding/api

  2. 소스 코드 편집기 실행
    $ vi ./src/main/java/com/lambda256/hledger/demo/DemoApplication.java
    여기에서는 vi로 편집하는 경우의 명령어를 예로 제시했으나, 파일 익스플로러에서 위 디렉토리로
    진입하여 다른 파일 편집기를 실행해도 무방합니다.)

  3. 체인코드 이름과 버전 수정
    61라인과 62라인에서 각각 큰 따옴표 내에 있는 ccname과 1.0을 배포한 chaincode 이름과
    version으로 수정하고 저장

    private static String chaincodeName = "myccjava";
    private static String chaincodeVersion = "1.0";

서버 실행하기

  1. api 디렉토리로 이동합니다.
    $ cd demo-idol-funding/api

  2. 서버를 실행합니다.
    $ mvn spring-boot:run

2019-12-24 16:59:10.478  INFO 12450 --- [           main] c.l.hledger.demo.DemoApplication         : Starting DemoApplication on Sucheolui-MacBookPro.local with PID 12450 (/Users/christin/work/demo-idol-funding/api/target/classes started by christin in /Users/christin/work/demo-idol-funding/api)
2019-12-24 16:59:10.481  INFO 12450 --- [           main] c.l.hledger.demo.DemoApplication         : No active profile set, falling back to default profiles: default
2019-12-24 16:59:11.265  INFO 12450 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8081 (http)
2019-12-24 16:59:11.274  INFO 12450 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-12-24 16:59:11.274  INFO 12450 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.29]
2019-12-24 16:59:11.324  INFO 12450 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-12-24 16:59:11.324  INFO 12450 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 788 ms
2019-12-24 16:59:11.455  INFO 12450 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-12-24 16:59:11.613  INFO 12450 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8081 (http) with context path ''
2019-12-24 16:59:11.616  INFO 12450 --- [           main] c.l.hledger.demo.DemoApplication         : Started DemoApplication in 1.398 seconds (JVM running for 1.716)

Transaction 요청하기

이제 블록체인에 서비스를 요청할 준비가 되었습니다. 브라우저에서 DApp 클라이언트 http://localhost:8080 에 접속한 후 원하는 아이돌 그룹을 선택하고 프로젝트 후원하기를 클릭해 봅니다. 서버를 실행시킨 화면에 아래와 같은 로그가 나오면 성공입니다.

2019-12-24 17:10:39.425  INFO 12450 --- [nio-8081-exec-6] c.l.hledger.dapp.ChaincodeExecuter       : [√] Got success response from peer peer0.org1.example.com => payload: rwt: 8100
2019-12-24 17:10:39.425  INFO 12450 --- [nio-8081-exec-6] c.l.hledger.dapp.ChaincodeExecuter       : [√] Got success response from peer peer1.org1.example.com => payload: rwt: 8100
2019-12-24 17:10:39.425  INFO 12450 --- [nio-8081-exec-6] c.l.hledger.dapp.ChaincodeExecuter       : Sending transaction to orderers...
2019-12-24 17:10:41.454  INFO 12450 --- [pool-1-thread-4] c.l.hledger.demo.DemoApplication         : Receive block event (number 27) from Peer{ id: 4, name: peer1.org1.example.com, channelName: mychannel, url: grpcs://hyper-4053561120315537863.luniverse.dev:8051}
2019-12-24 17:10:41.463  INFO 12450 --- [pool-1-thread-4] c.l.hledger.demo.DemoApplication         : Receive block event (number 27) from Peer{ id: 3, name: peer0.org1.example.com, channelName: mychannel, url: grpcs://hyper-4053561120315537863.luniverse.dev:7051}
2019-12-24 17:10:41.463  INFO 12450 --- [pool-1-thread-2] c.l.hledger.dapp.ChaincodeExecuter       : Orderer response: txid961be3a6204e27aee863a435cc19d2bf50276124310136f55a20fa1d8e26ab45
2019-12-24 17:10:41.463  INFO 12450 --- [pool-1-thread-2] c.l.hledger.dapp.ChaincodeExecuter       : Orderer response: block number: 27
2019-12-24 17:10:41.489  INFO 12450 --- [nio-8081-exec-6] c.l.hledger.dapp.ChaincodeExecuter       : [√] Got success response from peer peer0.org1.example.com => payload: 8100
2019-12-24 17:10:41.489  INFO 12450 --- [nio-8081-exec-6] c.l.hledger.dapp.ChaincodeExecuter       : [√] Got success response from peer peer1.org1.example.com => payload: 8100

Updated 18 days ago

하이퍼레저 패브릭 Tutorial


루니버스에서 생성된 하이퍼레저 패브릭 네트워크에서 테스트 할 수 있는 샘플 체인코드(Chaincode)와

DApp을 다운로드 받아서 순서대로 따라해 보면서 BaaS 기능을 체험해 봅시다.

Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.