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

하이퍼레저 패브릭 Demo DApp Tutorial

루니버스에서 생성된 하이퍼레저 패브릭 네트워크에서 테스트 할 수 있는 샘플 체인코드(Chaincode)와 DApp을 다운로드 받아서 순서대로 따라해 보면서 BaaS 기능을 체험해 봅시다.

[실습자료]
https://github.com/Lambda256/hyperledger-luniverstar-sample/archive/master.zip

Chain 생성하기Demo DApp 설명

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

DApp 다운로드 받기

  1. 위의 실습자료를 다운 받아 압축을 해제합니다. (hyperledger-luniverstar-sample-master.zip)
  2. hyperledger-luniverstar-sample-master/standard 디렉토리로 이동합니다.
    $ cd hyperledger-luniverstar-sample-master/standard
  3. api, chaincode 디렉토리가 있는지 확인합니다.
    $ ls

DApp 클라이언트 실행하기

웹 서버 실행하기

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

  1. hyperledger-luniverstar-sample-master/standard 디렉토리로 이동합니다.
    $ cd hyperledger-luniverstar-sample-master/standard
  2. npm을 사용하기 위해선 node.js를 설치해야 합니다. node.js 에서 왼쪽의 LTS 버전을 다운받아 설치하시면 됩니다. 이미 설치 되어 있는 경우 생략하고 다음 단계로 이동합니다.
  3. idol-funding application 을 서비스하기 위한 웹 서버를 실행합니다.
    $ npm install
    $ npm run serve
  4. 웹 서버가 성공적으로 실행되면 아래와 같은 로그가 화면에 출력됩니다.
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. 브라우저에서 http://localhost:8080 로 접속하면 idol-funding application의 모습을 볼 수 있습니다. Idol Funding Demo는 아직 블록체인과 연결되지 않은 web-application 입니다.

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

  1. chaincode 디렉토리 아래에 go, java, nodejs 디렉토리에 각각의 언어별 체인코드 소스가 있고 zip 파일이 있습니다. 원하는 언어의 zip 파일을 선택하여 루니버스 콘솔에서 체인코드 배포하기를 참고하여 패브릭 네트워크에 체인코드를 배포합니다.
  2. 체인코드의 이름을 "luniverstarTest" 로 설정합니다.
  3. version은 숫자가 아닌 문자로 입력이 되므로 v1.0, 1.0, 1 등 어떤 형태이든 상관없이 입력 가능합니다.
  4. 채인 코드 리스트 탭으로 이동합니다.
  5. 배포한 체인 코드를 클릭하여 코드를 설치합니다.
  1. 체인코드를 instantiate 할 때 아래 텍스트를 카피하여 입력합니다.
    ["funding","14","like","256","rwt","100000"]

서버 세팅하기

서버는 블록체인에 직접 연결을 하는 코드를 담고 있어서, 몇 가지 설정이 필요합니다.

먼저 패브릭 네트워크 접속 정보 파일(Connection Profile)을 다운로드합니다. 다운로드된 파일은 connection-profile-HYPERLEDGER.json 형식입니다. 이 파일을 hyperledger-luniverstar-sample/standard/api 디렉토리로 옮깁니다.

다음으로 MSP 정보 파일을 다운로드 받아서 압축을 해제합니다. 그러면 msp 폴더 아래에 keystore와 signcert 폴더가 생기고 각 폴더에 인증서와 비밀키가 있습니다. 이 파일들을 역시 api 디렉토리로 옮깁니다.
다운로드 받은 key.pem, cert.pem 파일들을 hyperledger-luniverstar-sample-master/standard/api 디렉토리로 이동합니다.

서버 실행하기

  1. hyperledger-luniverstar-sample-master/standard/api 디렉토리로 이동합니다.
    $ cd hyperledger-luniverstar-sample-master/standard/api
  2. Luniverstar는 maven으로 구동됩니다. 따라서 homebrew로 maven을 설치합니다. homebrew가 설치가 안되어 있다면, Homebrew 에서 install 명령어를 복사해서 터미널에 입력해 줍니다. Homebrew가 설치가 완료되면, maven을 설치합니다. 만약 maven이 이미 설치 되어 있다면 다음 단계로 넘어갑니다.
    $ brew install maven
    설치 후, maven이 설치되었는지 다음 명령어로 확인합니다.
    $ mvn -v
    정상적으로 버전이 확인이 되면 다음 단계로 넘어갑니다.
  3. 서버를 실행합니다.
    $ mvn spring-boot:run -Dspring-boot.run.arguments=./connection-profile 이름,채널 이름,체인 코드 이름,체인 코드 버전
    예시) $ mvn spring-boot:run -Dspring-boot.run.arguments=./connection-profile.json,channel1,luniverstarTest,1.0
  4. 서버를 실행하면 다음과 같은 로그가 출력됩니다.
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 3 months ago

하이퍼레저 패브릭 Demo DApp 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.