Luniverse 사용법 교육자료 presented by Lambda256

Similar documents
메뉴얼41페이지-2

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Security Issues in the Blockchain as a Service Platform 2019년 8월 30일 ( 금 ) 람다256 오재훈

Windows 8에서 BioStar 1 설치하기

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

SBR-100S User Manual

슬라이드 1

슬라이드 1

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

View Licenses and Services (customer)

Remote UI Guide

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT END USERS. Oracle programs, including any oper

PWR PWR HDD HDD USB USB Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC DDNS (

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

PowerPoint Presentation

201112_SNUwifi_upgrade.hwp

DocsPin_Korean.pages

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

1. SNS Topic 생성여기를클릭하여펼치기... Create Topic 실행 Topic Name, Display name 입력후 Create topic * Topic name : 특수문자는 hyphens( - ), underscores( _ ) 만허용한다. Topi

게임 기획서 표준양식 연구보고서

Studuino소프트웨어 설치

USB USB DV25 DV25 REC SRN-475S REC SRN-475S LAN POWER LAN POWER Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl C

Multi Channel Analysis. Multi Channel Analytics :!! - (Ad network ) Report! -! -!. Valuepotion Multi Channel Analytics! (1) Install! (2) 3 (4 ~ 6 Page

아래 항목은 최신( ) 이미지를 모두 제대로 설치하였을 때를 가정한다

chapter4

Interstage5 SOAP서비스 설정 가이드

메일서버등록제(SPF) 인증기능적용안내서 (Exchange Windows 2000) OS Mail Server SPF 적용모듈 작성기준 Windows Server 2000 Exchange Server 2003 GFI MailEssentials 14 for

TTA Journal No.157_서체변경.indd

1

게시판 스팸 실시간 차단 시스템

Install stm32cubemx and st-link utility

Week13

기존에 Windchill Program 이 설치된 Home Directory 를 선택해준다. 프로그램설치후설치내역을확인해보면 Adobe Acrobat 6.0 Support 내역을확인할수 있다.

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

NTD36HD Manual

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

Endpoint Protector - Active Directory Deployment Guide

gcloud storage 사용자가이드 1 / 17

Splentec V-WORM Quick Installation Guide Version: 1.0 Contact Information 올리브텍 주소 : 경기도성남시분당구구미로 11 ( 포인트타운 701호 ) URL: E-M

4S 1차년도 평가 발표자료

설치 순서 Windows 98 SE/Me/2000/XP 1 PC를 켜고 Windows를 시작합니다. 아직 컴퓨터에 프린터를 연결하지 마십시오. 2 PC에 P-S100 CD-ROM(프 린터 드라이버)을 삽입합니다. 3 설치 프로그램을 시작합니다. q CD-ROM의 PS1

. PC PC 3 [ ] [ ], [ ] [ ] [ ] 3 [ ] [ ], 4 [ ] [ ], 4 [Internet Protocol Version 4 (TCP/IPv4)] 5 [ ] 6 [ IP (O)], [ DNS (B)] 7 [ ] 한국어 -

PowerPoint Template

VPN.hwp

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

희망브리지


Microsoft Word - src.doc

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

IRISCard Anywhere 5

Chapter 1

오늘날의 기업들은 24시간 365일 멈추지 않고 돌아간다. 그리고 이러한 기업들을 위해서 업무와 관련 된 중요한 문서들은 언제 어디서라도 항상 접근하여 활용이 가능해야 한다. 끊임없이 변화하는 기업들 의 경쟁 속에서 기업내의 중요 문서의 효율적인 관리와 활용 방안은 이

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

Web Scraper in 30 Minutes 강철

말은 많은 Blockchain 2

Orcad Capture 9.x

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

SRC PLUS 제어기 MANUAL

SMB_ICMP_UDP(huichang).PDF

[Brochure] KOR_TunA

PowerPoint 프레젠테이션

Facebook API

기술자료

슬라이드 1

DE1-SoC Board

partprime_intro.key

ISP and CodeVisionAVR C Compiler.hwp

Mango220 Android How to compile and Transfer image to Target

1. 무선 이미지 유틸리티 설명 1-1. 기능 이 Wireless Image Utility 는 안드로이드용 응용 프로그램입니다. 안드로이드 태블릿 또는 안드로이드 스마트폰에서 사용할 수 있습니다. 안드로이드 기기에 저장된 파일을 프로젝터로 무선 전송 컴퓨터에서 USB

행자부 G4C

IP Cam DDNS 설정설명서(MJPEG) hwp

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

server name>/arcgis/rest/services server name>/<web adaptor name>/rest/services ArcGIS 10.1 for Server System requirements - 지

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - postfix) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i postfix spf-filter 년 6 월

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

본문서는 초급자들을 대상으로 최대한 쉽게 작성하였습니다. 본문서에서는 설치방법만 기술했으며 자세한 설정방법은 검색을 통하시기 바랍니다. 1. 설치개요 워드프레스는 블로그 형태의 홈페이지를 빠르게 만들수 있게 해 주는 프로그램입니다. 다양한 기능을 하는 플러그인과 디자인

vRealize Automation용 VMware Remote Console - VMware

PCServerMgmt7

160322_ADOP 상품 소개서_1.0

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

메일서버등록제(SPF) 인증기능적용안내서 (Exchange Windows 2003) OS Mail Server SPF 적용모듈 작성기준 Windows Server 2003 Exchange Server 2003 GFI MailEssentials 2010 fo

Intro to Servlet, EJB, JSP, WS

Network seminar.key

WeToken白皮书

CL5 CL3 CL1 QL5 QL1 V4.5 Supplementary Manual

Portal_9iAS.ppt [읽기 전용]

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,,,,,,,,,,,,,.,..., U.S. GOVERNMENT END USERS. Oracle programs, including any operat

01장

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

Solaris Express Developer Edition

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

ICAS CADWorx SPLM License 평가판설치가이드

Transcription:

Luniverse 사용법 교육자료 2019.03 presented by Lambda256

INDEX Luniverse Overview (Key Terms) How to Use Luniverse 2

INDEX Luniverse Overview (Key Terms) How to Use Luniverse 3

Luniverse Overview(Key Terms) Luniverse Blockchain Cloud Service Luniverse Network(=Luniverse Main Chain) Side Chain / Side Bridge Main Token(MT) / Side Token(ST) Main Admin(MA) / Side Admin(SA) Validator PKMS ( Private Key Management System ) EOA (External Owned Account) : REOA(Remote EOA), LEOA(Local EOA) 4

Luniverse Overview(주요 기능) 기본 기능 루니버스 사이드체인 루니버스 토큰 서비스 핵심 서비스 루니버스 솔리디티 IDE 루니버스 보안 루니버스 운영 및 모니터링 툴 사용자 관리 서비스 월렛 브리지 어카운트 브리지 PKMS 5

INDEX Luniverse Overview (Key Terms) How to Use Luniverse 6

목표 : Luniverse DApp 만들기 7

유기견보호소 동작구조 서울시(MA) Side Token Transfer (Adopt Token ) MT : SPT (ST) = 1 : 1 MT : ADT (ST) = 1 : 10 Side Token Transfer (Support Token) Support(SPT) Reward(ADT) 마포구 보호소 (MapoGuAccount) Adopt(ADT) setowner Copyright 2018. Lambda256. All rights reserved End User (UserA) 8

유기견보호소 아키텍쳐 Local EOA Sign Support Reward Support Token Adopt Token Luniverse DApp Config Luniverse Transaction API Adopt Transaction Server Homeles sdogs Contract PKMS (REOA Sign) getowner setowner 9

Lab 0. 사전 준비 10

사전 환경 준비 실습을 원활히 진행하기 위해서 다음 환경을 준비해야 합니다. 1. 루니버스 CBT 교육용 파일 받기 2. Node.js 설치 3. curl ( 혹은 Postman / SoapUI ) 설치 4. Metamask 설치 5. Atom 설치 11

Luniverse Demo DApp 압축 풀기 1. 2. 소스 파일을 로컬로 다운로드합니다. ( https://s3.ap-northeast-2.amazonaws.com/luniverse/cbt-demo/luniverse-cbt.zip ) 윈도우즈 사용자 : %USERPROFILE%\temp Mac 사용자 : ~/temp 소스 파일의 압축을 풉니다. Mac 사용자 $ mkdir ~/temp $ cd ~/temp $ tar zxvf ~/Downloads/luniverse-cbt.tar.gz $ ls luniverse-cbt contracts demo-homeless-dogs luniverse-atom-plugin Windows 사용자 1. 2. 다운로드 받은 파일의 압축을 풉니다. luniverse-cbt 를 %USERPROFILE%\temp 아래로 복사합니다. 12

Node 설치하기 1. node 명령어를 실행해서 node.js 가 설치되어 있는지 확인합니다. node 가 설치되지 않은 경우 Command not found 같은 오류가 발생합니다. $ node -v node: command not found 2. Node 가 설치되지 않은 경우 https://nodejs.org/en/ 에서 10.15.2 LTS 버전을 다운받아 설치합니다. 3. Node 설치가 완료되면 node.js 가 정상 설치되었는지 확인합니다. $ node -v v10.15.2 13

static-server 모듈 설치하기 1. Demo App 을 설치한 디렉토리로 이동합니다. Mac 사용자 $ cd ~/temp/luniverse-cbt/demo-homeless-dogs $ pwd Windows 사용자 cmd> cd %USERPROFILE%\temp\luniverse-cbt\demo-homeless-dogs cmd> pwd 2. npm 으로 static-server 모듈을 설치합니다. ( 윈도우즈 / Mac 공통 ) $ npm install -g static-server 3. static-server 설치 확인하기 $ static-server 14

Luniverse Demo App 실행하기 1. demo-homeless-dogs 의 src 디렉토리로 이동합니다. Mac 사용자 $ cd ~/temp/luniverse-cbt/demo-homeless-dogs/src Windows 사용자 cmd> cd %USERPROFILE%\temp\luniverse-cbt\demo-homeless-dogs\src 2. static-server 를 실행합니다. $ static-server * Static server successfully started. * Serving files at: http://localhost:9080 * Press Ctrl+C to shutdown. 3. 브라우저에서 http://localhost:9080 에 접속해서 Luniverse Demo App 이 브라우저에 나타나는지 확인합니다. 15

루니버스 DApp 설정 파일 var Config = { 파일 위치: luniverse-cbt/demo-homeless-dogs/src/js/config.js chainid: '1550810241284903144', // 1. Chain Id mt: { symbol: 'F862', }, // 2. Main Token st: { support: { symbol: 'SPT2', }, // 3. Support Side Token adopt: { symbol: 'ADT',}, // 4. Adopt Side Token }, walletaddress: { pd: '', // 5. Remote EOA for PD user: '', // 6. Remote EOA for User }, dapp: { // 7. API Key apikey: 'JCJCAZT6Jwg1uptbaFkyKFvJYc855WnMs6S9dVbDFd29KsgnfmFrva4kEowuse5R' }, txactionname: { // 8. Transactions for DApp setowner: 'setowner', // 9. Transaction for Custom Smart Contract getowner: 'getowner', // 10. Transaction for Custom Smart Contract support: 'Support', // 10. Support Transaction for Support Token adopt: 'Adopt', // 11. Adopt Transaction for Adopt Token reward: 'Reward', // 12. Reward Transaction for Adopt Token }, username: 'dino', }; 16

Metamask 설치하기 1. 2. 3. 4. https://metamask.io/ 에 접속한다. GET CHROME EXTENSION 을 클릭하여 Chrome Extension 설치 화면으로 이동한다. Chrome 에 설치를 클릭하여 Metamask Chrome Extension 을 설치한다. Chrome 브라우저 우측 상단에 메타마스크 아이콘( )이 표시되는지 확인한다. 17

Atom 설치하기 1. https://atom.io/ 에 접속해서 Atom 을 다운받는다. 2. Atom 을 설치한다. 3. Atom 을 실행한다. 18

How to Use Luniverse Lab01. 루니버스 회원 가입하기 Lab02. 루니버스 DApp 만들기 Lab03. SPT 사이드 토큰 발행하기 Lab04. Support 트랜잭션 만들기 Lab05. ADT 사이드 토큰 발행하기 Lab06. Reward 트랜잭션 만들기 Lab07. Adopt 트랜잭션 만들기 Lab08. DApp 사용하기 - 후원하기 Lab09. 루니버스 Atom 플러그인 설치하기 Lab10. 루니버스 Atom 플러그인 사용 Lab11. 메타마스크 연동하기 19

Lab 01. 루니버스 회원 가입하기 20

1) 회원가입 1) https://beta.luniverse.io 로 접속한다. 2) 로그인 화면에서 Create Account 클릭한다. 21

1) 회원가입 루니버스에 회원가입 한다. - 이메일 : 이메일로 인증 코드가 발급되기 때문에 자신이 소유한 이메일을 입력한다. - 사용자 계정 : 사용할 사용자 계정을 입력한다. - 암호 : 암호는 8자 이상이어야 하며, 영문, 숫자, 특수문자를 하나 이상 포함해야 합니다. - 정보를 모두 입력한 후에 Next 버튼을 클릭합니다. 22

회원가입 입력한 이메일 주소로 전송된 인증번호를 입력한다. 23

로그인 1) 회원가입시 사용한 이메일과 비밀번호를 이용해 로그인한다. 24

로그인 - Wallet 발급 루니버스에서 사용할 Wallet Address 를 발급받아야 한다. 아래와 같은 상황에서 발급된 Wallet Address 의 Private Key로 트랜잭션에 서명을 해야 한다. 메인 토큰 발행 / 메인토큰 전송 사이드 토큰 발행 / 사이드 토큰 전송 사용자 정의 컨트랙트 배포 주의) 입력한 Passphrase 를 분실하면 Keystore 파일을 이용할 수 없다. 따라서, Keystore 파일을 이용해서 트랜잭션에 서명하려면 Passphrase 를 분실하지 말아야 한다. 25

로그인 - Wallet 발급 발급받은 Wallet Address 의 Private Key 를 암호화하여 Keystore 파일로 다운받을 수 있다. 트랜잭션에 사인할 때는 발급받은 Wallet Address 의 Private Key 를 직접 이용하거나, Keystore 파일을 이용할 수 있다. Keystore 파일을 분실하거나 Passphrase 를 분실한 경우 Keystore 파일을 이용해서 트랜잭션에 서명할 수 없으므로, Keystore 파일과 Passphrase 를 안전하게 보관해야 한다. 26

로그인 - Wallet 발급 발급받은 Wallet Address 의 Private Key 로 트랜잭션에 직접 서명할 수 있다. Private Key 를 분실한 경우 Private Key 로 트랜잭션에 서명할 수 없기 때문에 Private Key 를 안전한 곳에 보관해야 한다. 27

로그인 - Wallet 발급 Print Wallet 을 클릭하면 Wallet Address 와 Private Key 를 QR코드로 인쇄할 수 있다. 인쇄된 QR 코드가 유출되면 Wallet Address 가 소유한 자산을 분실할 수 있기 때문에 반드시 안전한 곳에 보관해야 한다. 28

Home 화면 Home 화면은 Chain Tab 과 Chain Dashboard 로 구성됩니다. Chain Tab - Chain Tab 에는 사용자가 사용할 수 있는 Chain 의 이름이 탭으로 표시됩니다. Chain Dashboard - Chain Dashboard 에는 Chain Tab 에서 선택된 Chain 에 대한 정보가 표시됩니다. 29

Home 화면 Chain Dashboard 는 Chain Card, Main Token Card, DApp Card 목록, Side Token Card 목록으로 구성됩니다. Chain Dashboard Chain Card MainToken Card DApp Card 목록 Side Token Card 목록 30

Notification Message 확인하기 사용자에게 Notification 이 필요한 경우, 루니버스는 콘솔화면 오른쪽 하단에 Notification Message 창을 표시합니다. - Notification Message 에 있는 "Maintoken 수신 확인하기" 링크를 클릭해서 Main Token Request 화면으로 이동합니다. Notification Message 31

Main Token Request Main Token Request 화면으로 이동하면 Free Trial Chain 의 메인 토큰이 1000개 지급되었다는 것을 확인할 수 있습니다. Request Main Token 버튼을 클릭하여 1000 토큰을 추가로 요청한다. 32

My Wallet My Wallet 화면에서 Main Token 보유 수량을 확인할 수 있습니다. 1. 오른쪽 상단 사용자 이름을 클릭한다. 2. My Wallet 을 클릭하여 My Wallet 화면으로 이동한다. 33

Main Token Request Main Token 이 필요한 경우 Request Main Token 버튼을 클릭해서 Main Token 을 추가적으로 요청할 수 있습니다. 34

Lab 02. Luniverse DApp 만들기 35

Luniverse DApp REST API web3.js REST API Luniverse REST API Luniverse REST Server REST Server SmartContract REST Server web3.js SmartContract Database Database 36

Luniverse DApp 기존 Application(Mobile, Web, Desktop)에 블록체인에 데이터를 기록하고, 블록체인에 기록된 데이터를 조회하는 기능을 추가한 Application 을 DApp(Decentralized App)이라고 합니다. 이더리움의 경우 web3.js 를 이용해야 DApp 을 개발할 수 있습니다. Luniverse 가 제공하는 Transaction API 서비스만을 이용하면 기존 Application 을 손쉽게 DApp 으로 전환할 수 있습니다. 각 블록체인에서 제공하는 전용 API 를 이용해야 하지만, Luniverse Transaction API 를 이용하면 블록체인별로 API 를 따로 학습하지 않아도 됩니다. 37

Step1. Luniverse DApp 만들기 Home 화면으로 이동하여 Create DApp 을 클릭한다. 38

Step 1. Luniverse DApp 만들기 HomelessDogs DApp 을 생성한다. - DApp Name : HomelessDogs 앞에 회사이름을 붙인다. DApp Name 은 같은 체인에서는 중복될 수 없다. - ex) LuniverseHomelessDogs Create 버튼을 클릭하여 DApp 을 생성한다. 39

Step 2. DApp API Key 생성하기 DApp 에서 사이드체인에 트랜잭션을 요청하려면 API Key 를 생성해야 한다. API Key 를 생성하는 과정은 다음과 같다. 1. Home 화면에서 정의한 DApp 을 클릭한다. 2. 화면 왼쪽에서 API Key 메뉴를 클릭한다. 3. Generate 를 클릭해서 API Key 를 생성한다. 40

Step 3. DApp 설정 파일 변경하기 var Config = { 파일 위치: luniverse-cbt/demo-homeless-dogs/src/js/config.js chainid: '1550810241284903144', // 1. Chain Id mt: { symbol: 'F862', }, // 2. Main Token st: { support: { symbol: 'SPT2', }, // 3. Support Side Token adopt: { symbol: 'ADT',}, // 4. Adopt Side Token }, walletaddress: { 생성된 API Key 를 복사해서 apikey 로 설정한다. pd: '', // 5. Remote EOA for PD user: '', // 6. Remote EOA for User }, dapp: { // 7. API Key apikey: 'JCJCAZT6Jwg1uptbaFkyKFvJYc855WnMs6S9dVbDFd29KsgnfmFrva4kEowuse5R' }, txactionname: { // 8. Transaxctions for DApp setowner: 'setowner', // 9. Transaction for Custom Smart Contract getowner: 'getowner', // 10. Transaction for Custom Smart Contract support: 'Support', // 10. Support Transaction for Support Token adopt: 'Adopt', // 11. Adopt Transaction for Adopt Token reward: 'Reward', // 12. Reward Transaction for Adopt Token }, username: 'dino', }; 41

Lab 03. SPT 사이드 토큰 발행하기 42

Create Side Chain Node 2 Node 1 Node 3 Side Chain Node 6 Node 4 Node 5 43

Create Side Token 44

Step 1. Side Token 발행화면 이동 루니버스 콘솔의 홈 화면에서 아래쪽으로 스크롤한다. Side Token 옆에 + 아이콘을 클릭하면, Create ERC20 Side Token 버튼이 표시된다. Create ERC20 Side Token 토큰을 클릭해서 Side Token 발행 화면으로 이동한다. 45

Step 2. Side Token 발행하기 Side Token 정보를 입력합니다. - Token Name : Support Token XX - Token Symbol : SPTXX - Token Symbol Image : 색 선택 - Conversion Rate : 1MT:10 ST - Initial Supply : 10000 - Decimals : 18 입력이 완료되면 Create 버튼을 클릭해서 사이드 토큰을 만듭니다. 46

Step 3. 트랜잭션 서명 Side Token 을 발행하려면 트랜잭션에 서명이 필요합니다. - 회원가입시에 발급한 Private Key 나 Keystore 파일을 이용해서 트랜잭션에 서명할 수 있습니다. 트랜잭션에 서명한 후 Confirm 을 클릭하면 사이드 토큰 발행이 시작됩니다. 47

Step 4. Side Token 발행 과정 확인 48

Step 5. Side Token 발행 정보 확인 발행이 완료된 Side Token 카드를 클릭해서 Side Token 이 정상적으로 발행되었는지 확인합니다. 49

Main Token Side Token 50

Step 6. DApp 설정 파일 변경하기 var Config = { 파일 위치: luniverse-cbt/demo-homeless-dogs/src/js/config.js chainid: '1550810241284903144', // 1. Chain Id mt: { symbol: 'F862', }, // 2. Main Token st: { support: { symbol: 'SPTXX', }, // 3. Support Side Token Sidechain 의 Maintoken 심벌을 설정한다. adopt: { symbol: 'ADT',}, // 4. Adopt Side Token }, walletaddress: { 자신이 생성한 SPTXX 토큰 심벌을 설정한다. pd: '', // 5. Remote EOA for PD user: '', // 6. Remote EOA for User }, dapp: { // 7. API Key apikey: 'JCJCAZT6Jwg1uptbaFkyKFvJYc855WnMs6S9dVbDFd29KsgnfmFrva4kEowuse5R' }, txactionname: { // 8. Transaxctions for DApp setowner: 'setowner', // 9. Transaction for Custom Smart Contract getowner: 'getowner', // 10. Transaction for Custom Smart Contract support: 'Support', // 10. Support Transaction for Support Token adopt: 'Adopt', // 11. Adopt Transaction for Adopt Token reward: 'Reward', // 12. Reward Transaction for Adopt Token }, username: 'dino', }; 51

Lab 04. Support 트랜잭션 만들기 52

유기견보호소 동작구조 서울시(MA) Side Token Transfer (Adopt Token ) MT : SPT (ST) = 1 : 1 MT : ADT (ST) = 1 : 10 Side Token Transfer (Support Token) Support(SPT) Reward(ADT) 마포구 보호소 (MapoGuAccount) Adopt(ADT) setowner Copyright 2018. Lambda256. All rights reserved End User (UserA) 53

Step 1. MapoGu Account 생성 MapoGu 보호소용 Remote EOA 를 생성한다. 1. DApp 을 클릭해서 DApp 설정 화면으로 이동한다. 2. EOA List 를 클릭한다. 3. New EOA 를 클릭한다. 4. MapoGuAccount 용 Account 를 생성한다. 54

Step 2. User Account 생성 위와 동일한 과정으로 User A Account 를 생성한다. UserA 55

Step 3. Support 트랜잭션 정의 사용자가 MapoGuAccount 계정으로 토큰을 송금하는 트랜잭션을 정의합니다. - 수신 계정은 항상 MapoGuAccount 입니다. HomelessDog DApp 으로 이동해서 Side Token 을 이용하는 트랜잭션을 정의한다. 1. Token/Contract : 위에서 정의한 Side Token 을 선택한다. 2. Function : Free Simple Transfer 3. Action Name : Support 4. Sender : 지정하지 않는다. 5. Receiver : 방금 생성한 MapoGuAccount 를 선택한다. Create 버튼을 입력하여 트랜잭션을 정의한다. 56

Step 4. 트랜잭션 실행하기 DApp 의 Transaction List 에서 Support 트랜잭션의 API 를 확인하고, curl 명령어를 복사해서 실행한다. ( curl 명령어가 없는 경우, PostMan 이나 SoapUI 와 같은 HTTP Request 를 사용할 수 있는 도구를 사용해도 된다. ) 1. DApp 에서 Transaction List 를 클릭한다. 2. Support Transaction 의 API 부분을 클릭한다. 3. curl 요청을 텍스트 편집기로 복사한다. 57

Step 5. 트랜잭션 실행하기 아래와 같이 텍스트 편집기에서 curl 요청을 변경하고, 터미널에서 curl 명령어를 실행한다. 1. 2. 3. 4. transaction name : Support apikey : yensnemvrubmvclv6hstz3d96n1y71ru6hstxftwbz7zti421gtgu3kgjrcw5t5d from : REOA List 에서 발급한 UserA 의 REOA valueamount : 1000000000000000000 를 입력한다. ( 0이 18개임 ) $ curl -X POST 'https://cbt-api.luniverse.io/tx/v1.0/transactions/support' \ > --header 'Authorization: Bearer yensnemvrubmvclv6hstz3d96n1y71ru6hstxftwbz7zti421gtgu3kgjrcw5t5d' \ > --header 'Content-Type: application/json' \ > --data '{ > "from": "0xa99fbcf012a5af442da0be3ab81b1bbace0f960d ", > "inputs": { > "valueamount": "1000000000000000000" > } > }' {"result":false,"code":"permission_denied","message":"access denied, make sure remote ip (123.123.123.123) is registered on ip whitelist."} 58

Step 6. IP Whitelist 설정하기 트랜잭션을 실행했을 때, Access Denied 가 발생하는 이유는 트랜잭션을 요청한 서버의 IP 가 DApp 의 IP Whitelist 에 등록되지 않았기 때문이다. 루니버스는 등록된 서버에서만 해당 DApp 의 트랜잭션을 요청할 수 있습니다. DApp 에 등록되지 않은 IP 에서 요청한 트랜잭션은 처리하지 않는다. 트랜잭션 실행시 오류 메시지로 출력된 IP 를 IP Whitelist 에 등록한다. 59

Step 7. 트랜잭션 재실행 Step5 에서 오류가 발생했던 트랜잭션을 재실행한다. 이번에는 트랜잭션 요청 결과값으로 txhash 값이 전달됩니다. txhash 값이 전달되었다는 것은 블록체인에 트랜잭션이 요청되었다는 것을 뜻한다. $ curl -X POST 'https://cbt-api.luniverse.io/tx/v1.0/transactions/support' \ > --header 'Authorization: Bearer yensnemvrubmvclv6hstz3d96n1y71ru6hstxftwbz7zti421gtgu3kgjrcw5t5d' \ > --header 'Content-Type: application/json' \ > --data '{ > "from": "0xa99fbcf012a5af442da0be3ab81b1bbace0f960d ", > "inputs": { > "valueamount": "1000000000000000000" > } > }' {"result":true,"data":{"txid":"1551658962992906321","txhash":"0xa9b7f0da9bab50492d5f57958a43c76cd946daa9cb78fa02bd04190a7548d41 a","reqts":1551658962917}} 60

Step 8. 트랜잭션 확인 DApp 의 Transaction History 로 이동해서 해당 Transaction 의 상태를 확인한다. - Transaction History 를 확인하면 토큰 전송 트랜잭션이 실패했다는 것을 알 수 있다. - Transaction 이 실패한 이유는 토큰을 전송하는 UserA 가 SPT 토큰을 가지고 있지 않기 때문이다. 61

Step 9. 잔고 확인하기 방금 발행한 REOA 들의 토큰 잔고를 확인해 보자. 잔고를 확인하려면 아래와 같이 요청한다. - REOA 주소 : UserA 의 REOA ( 0xa99fbcf012a5af442da0be3ab81b1bbace0f960d ) - Main Token Symbol 이름 : F053 - Side Token Symbol 이름 : SPT - API Key : yensnemvrubmvclv6hstz3d96n1y71ru6hstxftwbz7zti421gtgu3kgjrcw5t5d curl --GET 'https://cbt-api.luniverse.io/tx/v1.0/wallets/0xa99fbcf012a5af442da0be3ab81b1bbace0f960d/f053/sptxx/balance' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer yensnemvrubmvclv6hstz3d96n1y71ru6hstxftwbz7zti421gtgu3kgjrcw5t5d' {"result":true,"data":{"balance":"0"}} 62

Step 10. User REOA 설정 var Config = { 파일 위치: luniverse-cbt/demo-homeless-dogs/src/js/config.js chainid: '1550810241284903144', // 1. Chain Id mt: { symbol: 'F862', }, // 2. Main Token st: { support: { symbol: 'SPT2', }, // 3. Support Side Token adopt: { symbol: 'ADT',}, // 4. Adopt Side Token }, walletaddress: { UserA 의 REOA 설정 pd: '', // 5. Remote EOA for PD user: '0xa99fbcf012a5af442da0be3ab81b1bbace0f960d', // 6. Remote EOA for User }, dapp: { // 7. API Key apikey: 'JCJCAZT6Jwg1uptbaFkyKFvJYc855WnMs6S9dVbDFd29KsgnfmFrva4kEowuse5R' }, txactionname: { // 8. Transaxctions for DApp setowner: 'setowner', // 9. Transaction for Custom Smart Contract getowner: 'getowner', // 10. Transaction for Custom Smart Contract support: 'Support', // 10. Support Transaction for Support Token adopt: 'Adopt', // 11. Adopt Transaction for Adopt Token reward: 'Reward', // 12. Reward Transaction for Adopt Token }, username: 'dino', }; 63

Step 11. DApp 에서 잔고확인하기 서울유기견보호소 Demo App 에서 My Page 를 버튼을 클릭하여 사용자가 보유한 SPT, ADT 잔액을 확인한다. - 현재는 토큰 보유량이 모두 0이기 때문에 0으로 표시된다. 64

Step 12. Side Token 전송 후 잔액확인 1. UserA 의 REOA 를 복사한다. 2. 발급한 Side Token 으로 이동한다. 3. Side Token Transfer 메뉴를 클릭한다. 4. Side Token Transfer 버튼을 클릭한다. 5. UserA 의 REAO 로 1000 토큰을 전송한다. 6. 토큰 전송 상태가 Transferred 가 될 때까지 기다린다. 7. 유기견 보호소에서 My Page 를 리로드해서 SPT 잔고가 1000인지 확인한다. ( Mac 사용자 : Command + R, 윈도우즈 사용자: Ctrl + R ) 65

Lab 05. ADT 사이드 토큰 발행하기 66

ADT Side Token 발행 Adopt 용 사이토큰을 발행한다. ADT 사이드 토큰 발행 과정은 SPT 사이드 토큰 발행 과정과 동일하다. - Token Name : AdoptTokenXX - Token Symbol: ADTXX - Conversion Rate: 1MT : 10ST - Initial Supply: 10000 - Decimals : 18 67

Step 1. Side Token 발행화면 이동 루니버스 콘솔의 홈 화면에서 아래쪽으로 스크롤한다. Side Token 옆에 + 아이콘을 클릭하면, Create ERC20 Side Token 버튼이 표시된다. Create ERC20 Side Token 토큰을 클릭해서 Side Token 발행 화면으로 이동한다. 68

Step 2. Side Token 발행하기 Side Token 정보를 입력합니다. - Token Name : AdoptTokenXX - Token Symbol: ADTXX - Conversion Rate: 1MT : 10ST - Initial Supply: 10000 - Decimals : 18 입력이 완료되면 Create 버튼을 클릭해서 사이드 토큰을 만듭니다. 69

Step 3. 트랜잭션 서명 Side Token 을 발행하려면 트랜잭션에 서명이 필요합니다. - 회원가입시에 발급한 Private Key 나 Keystore 파일을 이용해서 트랜잭션에 서명할 수 있습니다. 트랜잭션에 서명한 후 Confirm 을 클릭하면 사이드 토큰 발행이 시작됩니다. 70

Step 4. DApp 설정 파일 변경하기 var Config = { 파일 위치: luniverse-cbt/demo-homeless-dogs/src/js/config.js chainid: '1550810241284903144', // 1. Chain Id mt: { symbol: 'F862', }, // 2. Main Token st: { support: { symbol: 'SPT2', }, // 3. Support Side Token 생성한 ADT 토큰 심벌을 설정한다. adopt: { symbol: 'ADT',}, // 4. Adopt Side Token }, walletaddress: { pd: '', // 5. Remote EOA for PD user: '', // 6. Remote EOA for User }, dapp: { // 7. API Key apikey: 'JCJCAZT6Jwg1uptbaFkyKFvJYc855WnMs6S9dVbDFd29KsgnfmFrva4kEowuse5R' }, txactionname: { // 8. Transaxctions for DApp setowner: 'setowner', // 9. Transaction for Custom Smart Contract getowner: 'getowner', // 10. Transaction for Custom Smart Contract support: 'Support', // 10. Support Transaction for Support Token adopt: 'Adopt', // 11. Adopt Transaction for Adopt Token reward: 'Reward', // 12. Reward Transaction for Adopt Token }, username: 'dino', }; 71

Lab 06. Reward 트랜잭션 만들기 72

유기견보호소 동작구조 서울시(MA) Side Token Transfer (Adopt Token ) MT : SPT (ST) = 1 : 1 MT : ADT (ST) = 1 : 10 Side Token Transfer (Support Token) Support(SPT) Reward(ADT) 마포구 보호소 (MapoGuAccount) Adopt(ADT) setowner Copyright 2018. Lambda256. All rights reserved End User (UserAccount) 73

Step 1. Reward 트랜잭션 정의 MapoGuAccount 계정이 사용자 계정으로 토큰을 송금하는 트랜잭션을 정의합니다. - 송신자 계정은 항상 MapoGuAccount 입니다. HomelessDog DApp 으로 이동해서 Side Token 을 이용하는 트랜잭션을 정의한다. 1. Token/Contract : ADT 사이드토큰을 선택한다. 2. Function : Free Simple Transfer 3. Action Name : Reward 4. Sender : MapoGuAccount 5. Receiver : 지정하지 않는다. Create 버튼을 입력하여 트랜잭션을 정의한다. 74

Step 2. 트랜잭션 실행하기 DApp 의 Transaction List 에서 Reward 트랜잭션의 API 를 확인하고, curl 명령어를 복사해서 실행한다. ( curl 명령어가 없는 경우, PostMan 이나 SoapUI 와 같은 HTTP Request 를 사용할 수 있는 도구를 사용해도 된다. ) 1. Reward Transaction 의 API 부분을 클릭한다. 2. curl 요청을 텍스트 편집기로 복사한다. 75

Step 3. 트랜잭션 실행하기 아래와 같이 텍스트 편집기에서 curl 요청을 변경하고, 터미널에서 curl 명령어를 실행한다. 1. 2. 3. 4. transaction name : Reward apikey : yensnemvrubmvclv6hstz3d96n1y71ru6hstxftwbz7zti421gtgu3kgjrcw5t5d receiveraddress : REOA List 에서 발급한 UserA 의 REOA valueamount : 1000000000000000000 를 입력한다. ( 0이 18개임 ) curl -X POST 'https://cbt-api.luniverse.io/tx/v1.0/transactions/reward' \ --header 'Authorization: Bearer yensnemvrubmvclv6hstz3d96n1y71ru6hstxftwbz7zti421gtgu3kgjrcw5t5d' \ --header 'Content-Type: application/json' \ --data '{ "inputs": { "receiveraddress": "0xa99fbcf012a5af442da0be3ab81b1bbace0f960d", "valueamount": "1000000000000000000" } }' {"result":true,"data":{"txid":"1551688927811805781","txhash":"0x79d87c7a7c3dab926b3c5f8d2ab31cfa199c66eaf0a1f9bdf0839fb890f64402"," reqts":1551688927189}} 76

Step 4. 트랜잭션 확인 DApp 의 Transaction History 로 이동해서 해당 Transaction 의 상태를 확인한다. - Transaction History 를 확인하면 토큰 전송 트랜잭션이 실패했다는 것을 알 수 있다. - Transaction 이 실패한 이유는 토큰을 전송하는 MapoGuAccount 가 ADT 토큰을 가지고 있지 않기 때문이다. 77

Step 5. Side Token 전송 후 잔액확인 1. MapoGuAccount 의 REOA 를 복사한다. 2. ADT Side Token 으로 이동한다. 3. Side Token Transfer 메뉴를 클릭한다. 4. Side Token Transfer 버튼을 클릭한다. 5. MapoGuAccount 의 REOA 로 5000 토큰을 전송한다. 6. 토큰 전송 상태가 Transferred 가 될 때까지 기다린다. 78

Step 6. ADT 토큰 잔액 확인 방금 발행한 REOA 들의 토큰 잔고를 확인해 보자. 잔고를 확인하려면 아래와 같이 요청한다. - REOA 주소 : MapoGuAccount 의 EROA 주소 - Main Token Symbol 이름 : F053 - Side Token Symbol 이름 : ADT - API Key : yensnemvrubmvclv6hstz3d96n1y71ru6hstxftwbz7zti421gtgu3kgjrcw5t5d curl --GET 'https://cbt-api.luniverse.io/tx/v1.0/wallets/0x8d85196810fd3c2a4d4044e7c1cc49256c00981c/f053/apt/balance' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer yensnemvrubmvclv6hstz3d96n1y71ru6hstxftwbz7zti421gtgu3kgjrcw5t5d' {"result":true,"data":{"balance":"10000000000000000000000"}} 79

Step 7. 트랜잭션 실행하기 Step 3 의 트랜잭션을 재실행하고 Transaction History 에서 트랜잭션이 성공되는지 확인한다. curl -X POST 'https://cbt-api.luniverse.io/tx/v1.0/transactions/reward' \ --header 'Authorization: Bearer yensnemvrubmvclv6hstz3d96n1y71ru6hstxftwbz7zti421gtgu3kgjrcw5t5d' \ --header 'Content-Type: application/json' \ --data '{ "inputs": { "receiveraddress": "0xa99fbcf012a5af442da0be3ab81b1bbace0f960d", "valueamount": "1000000000000000000" } }' {"result":true,"data":{"txid":"1551688927811805781","txhash":"0x79d87c7a7c3dab926b3c5f8d2ab31cfa199c66eaf0a1f9bdf0839fb890f64402"," reqts":1551688927189}} 80

Step 8. DApp 에서 잔고확인하기 서울유기견보호소 Demo App 에서 My Page 를 버튼을 클릭하여 사용자가 보유한 ADT 잔액을 확인한다. ( 페이지를 리로드한다. ) - MapoGuAccount 에서 1 토큰을 전송했기 때문에 화면에 1 토큰이 표시되어야 한다. 81

Lab 07. Adopt 트랜잭션 만들기 82

Step 1. Adopt 트랜잭션 정의 사용자계정이 MapoGuAccount 로 ADT 토큰을 송금하는 트랜잭션을 정의합니다. - 수신자 계정은 항상 MapoGuAccount 입니다. HomelessDog DApp 으로 이동해서 Side Token 을 이용하는 트랜잭션을 정의한다. 1. Token/Contract : ADT 사이드토큰을 선택한다. 2. Function : Free Simple Transfer 3. Action Name : Adopt 4. Sender : 지정하지 않는다. 5. Receiver : MapoGuAccount Create 버튼을 입력하여 트랜잭션을 정의한다. 83

Step 2. 트랜잭션 실행하기 DApp 의 Transaction List 에서 Adopt 트랜잭션의 API 를 확인하고, curl 명령어를 복사해서 실행한다. ( curl 명령어가 없는 경우, PostMan 이나 SoapUI 와 같은 HTTP Request 를 사용할 수 있는 도구를 사용해도 된다. ) 1. Adopt Transaction 의 API 부분을 클릭한다. 2. curl 요청을 텍스트 편집기로 복사한다. 84

Step 3. 트랜잭션 실행하기 아래와 같이 텍스트 편집기에서 curl 요청을 변경하고, 터미널에서 curl 명령어를 실행한다. 1. 2. 3. 4. transaction name : Adopt apikey : yensnemvrubmvclv6hstz3d96n1y71ru6hstxftwbz7zti421gtgu3kgjrcw5t5d from : REOA List 에서 발급한 UserA 의 REOA valueamount : 1000000000000000000 를 입력한다. ( 0이 18개임 ) curl -X POST 'https://cbt-api.luniverse.io/tx/v1.0/transactions/adopt' \ --header 'Authorization: Bearer yensnemvrubmvclv6hstz3d96n1y71ru6hstxftwbz7zti421gtgu3kgjrcw5t5d' \ --header 'Content-Type: application/json' \ --data '{ "from": "0xa99fbcf012a5af442da0be3ab81b1bbace0f960d", "inputs": { "valueamount": "1000000000000000000" } }' {"result":true,"data":{"txid":"1551688927811805781","txhash":"0x79d87c7a7c3dab926b3c5f8d2ab31cfa199c66eaf0a1f9bdf0839fb890f64402"," reqts":1551688927189}} 85

Step 4. 트랜잭션 확인 DApp 의 Transaction History 로 이동해서 해당 Transaction 의 상태를 확인한다. - Transaction History 를 확인하면 토큰 전송 트랜잭션이 성공한 것을 알 수 있다. - 서울 유기견 보호소 My Page 를 리로드해서 잔고가 0이 되었는지 확인한다. 86

Lab 08. DApp 사용하기 - 후원하기 87

유기견보호소 동작구조 서울시(MA) Side Token Transfer (Adopt Token ) MT : SPT (ST) = 1 : 1 MT : ADT (ST) = 1 : 10 Side Token Transfer (Support Token) Support(SPT) Reward(ADT) 마포구 보호소 (MapoGuAccount) Adopt(ADT) setowner Copyright 2018. Lambda256. All rights reserved End User (UserA) 88

Step 1. 후원하기 서울 유기견보호서 Home Page 로 이동한다. - 마포구 보호소를 클릭한다. - 후원하기 버튼을 클릭하여 20SPT 를 마포구 보호소에 후원한다. 89

Step 2. 후원 결과 확인하기 서울 유기견보호소 My Page 로 이동해서 사용자의 토큰 잔고를 확인한다. - SPT 잔고가 1000 에서 980 으로 감소했는지 확인한다. - ADT 잔고가 0에서 200으로 증가했는지 확인한다. 90

Lab 09. 루니버스 Atom Plugin 설치 91

Step 1. Atom Shell Command 설치 터미널에서 apm 명령어를 입력한다. $ apm -v -bash: apm: command not found Atom 의 Install Shell Command 를 선택해서 Shell Command 를 설치한다. apm 명령어를 다시 입력하여 apm 이 정상 설치되었는지 확인한다. $ apm -v apm 1.19.0 npm 3.10.10 node 6.9.5 x64 atom 1.27.2 python 2.7.15 git 2.19.0 92

Step 2. Luniverse Atom Plugin 전달받은 luniverse-atom-plugin.zip 파일 압축을 풉니다. - 윈도우즈 사용자 : %USERPROFILE%\temp - 맥 사용자 : ~/temp Luniverse Atom Plugin 디렉토리로 이동한다. - 윈도우즈 사용자 : cd %USERPROFILE%\temp\luniverse-atom-plugin - 맥 사용자 : ~/temp/luniverse-atom-plugin 93

Step 3. npm Install npm install 을 실행하여 필요한 node 모듈을 설치한다. $ npm install... 94

Step 4. apm link apm link 를 이용해서 Luniverse Atom Plugin 을 Atom 에 설정한다. $ apm link... 95

Step 5. Plugin Load 1. 2. Command + Shift + P 를 입력한다. 입력 창에서 window: reload 를 입력하고 Enter 를 클릭한다. 96

Step 6. Plugin 설치 확인 1. 2. 3. 4. Atom 환경 설정 창을 연다. ( Command + Comm 를 입력 Packages 를 클릭한다. Installed Packages 에 Luniverse 를 입력한다. luniverse-atom-plugin 이 나타나는지 확인한다. 97

Step 7. Plugin 설치 확인 1. 2. 3. Luniverse Access Token 아래에 있는 Access Token 발행 링크를 클릭한다. Luniverse 계정으로 로그인한다. Access Token 을 복사해서 입력한다. 98

Step 8. Access Token 발급 1. 2. Luniverse 계정으로 로그인한다. Access Token 을 복사한다. 99

Step 9. Access Token 복사 1. 복사한 Access Token 을 Atom Plugin 에 붙여 넣는다. 100

Lab 10. 루니버스 Atom Plugin 사용 101

Step 1. Solidity 파일 작성 1. Solditity 로 스마트 컨트랙트를 작성한다. 102

Step 2. Security Assessment 1. 2. 3. 4. 5. 오른쪽 마우스 버튼을 클릭하여 Context Menu 를 띄운다. Create Audit 메뉴를 클릭한다. Audit 을 요청하면 Luniverse Atom Plugin 은 Solidity 코드에 대한 Security Assessment 를 Luniverse 에 요청한다. Security Assessment 가 완료되면 오른쪽에 Security Assessment 결과 요약본이 표시된다. Detail Report 를 클릭하면 Luniverse Console 로 이동하여 상세 보고서를 조회할 수 있다. 103

Step 3. Smart Contract 배포 1. 2. Solidity 파일에서 오른쪽 버튼을 클릭하여 Context Menu 를 띄운다. Compile Contract Code 를 클릭한다. Compile Contract Code 를 클릭하면 Luniverse Atom Plugin 은 Solidity Code 를 컴파일한 후에 배포할 스마트 컨트랙트를 보여준다. 104

Step 4. Smart Contract 배포 루니버스에서 컴파일에 성공하면, Atom Plugin 은 컨트랙트 배포를 위한 창을 출력한다. 컨트랙트 생성 창에서 컨트랙트 배포 정보를 입력하고 Apply 버튼을 클릭하여 컨트랙트 배포를 요청한다. 1. 2. 3. 4. 5. Name, Description 을 입력한다. Chain Select 에서 컨트랙트를 배포할 체인을 선택한다. Atom Plugin 은 계정에서 사용할 수 있는 체인 목록을 보여준다. 배포할 컨트랙트를 선택한다. ( Solidity 파일에 여러 컨트랙트가 있는 경우, 모든 컨트랙트가 목록에 나타난다. ) 배포할 컨트랙트의 생성자 패러미터를 입력한다. Apply 버튼을 클릭하여 컨트랙트 배포를 요청한다. 105

Step 5. Smart Contract 배포 루니버스에서 솔리디티 코드 컴파일이 완료되면 Contract Deploy 요청이 완료되었습니다. 라는 메시지가 출력된다. Details 버튼을 클릭하면 Luniverse Console 의 스마트 컨트랙트 배포 창으로 이동한다. 106

Step 6. Smart Contract 배포 루니버스 Atom Plugin 에서 컨트랙트 배포를 요청하면, 블록체인에 배포 되지 않고 배포 준비 상태가 된다. 배포 준비 상태인 컨트랙트들은 컨트랙트 목록에서 확인할 수 있다. Ready to Deploy 버튼을 클릭해서 컨트랙트 배포 화면으로 이동한다. 107

Step 7. Smart Contract 배포 컨트랙트 배포 트랜잭션에 Private Key 로 사인해서 컨트랙트를 배포한다. 1. 2. 3. 컨트랙트 배포 정보를 확인란다. Create 버튼을 클릭한다. 트랜잭션 서명창이 뜨면, Private Key 나 Keystore 파일을 이용해서 컨트랙트 배포 트랜잭션에 사인한다. 108

Step 8. Smart Contract 배포 확인 배포 요청이 완료되면, 컨트랙트 목록 화면에서 배포 요청된 컨트랙트의 배포 상황을 확인할 수 있다. - 배포상태가 Deployed 로 바뀌면 배포된 Contract Address 를 확인할 수 있다. 109

Step 9. HomelessDogs 배포 Atom PlugIn 에서 HomelssDogs 용 Solidity 를 작성하고 배포한다. pragma solidity ^0.4.18; contract HomelessDogs { string [8] owner; function setowner(uint _index, string _name) public { owner[_index] = _name; } function getowner(uint _index) public view returns (string) { return owner[_index]; } } 110

Step 10. getowner 트랜잭션 정의 HomelessDogs 컨트랙트의 함수를 트랜잭션으로 정의한다. 1. 2. 3. 4. Token/Contract 에서 HomelessDogs 컨트랙트를 선택한다. Function 에서 getowner 를 선택한다. Action Name 에 getowner 를 입력한다. Create 버튼을 클릭하여 getowner 트랜잭션을 정의한다. 111

Step 11. setowner 트랜잭션 정의 HomelessDogs 컨트랙트의 함수를 트랜잭션으로 정의한다. 1. 2. 3. 4. Token/Contract 에서 HomelessDogs 컨트랙트를 선택한다. Function 에서 setowner 를 선택한다. Action Name 에 setowner 를 입력한다. Create 버튼을 클릭하여 setowner 트랜잭션을 정의한다. 112

Step 12. 입양하기 서울 유기견보호소 Home 에서 마포구 보호소로 이동한다. - 입양하기를 클릭하여 강아지를 입양한다. - 페이지를 리로드하여 강아지가 입양되었는지 확인한다. 113

Lab 11. 메타마스크 연동하기 114

Step 1. 사이드체인 접속정보 확인 1. Chain 탭에서 Free Trial 체인을 클릭한다. 2. Chain Overview 에서 Validator 1 을 클릭한다. 3. RPC HTTP Endpoint 를 복사한다. 115

Step 2. 메타마스크 오픈 1. Chrome 에서 메타마스크 Icon 을 클릭한다. 2. 메타마스크에서 네트워크(왼쪽 빨간색 부분)를 클릭한다. 116

Step 3. 사용자 정의 RPC Net Network 에 복사한 RPC HTTP Endpoint 를 붙이고, 네트워크 목록에서 사용자 정의 RPC 를 선택한다. 저장을 클릭한다. ( 붙여넣을 때, http 앞쪽에 공백문자를 지워야 저장된다. ) NickName : Luniverse 117

Step 4. User 를 LEOA 로 변경 var Config = { 파일 위치: luniverse-cbt/demo-homeless-dogs/src/js/config.js chainid: '1550810241284903144', // 1. Chain Id mt: { symbol: 'F862', }, // 2. Main Token st: { support: { symbol: 'SPT2', }, // 3. Support Side Token adopt: { symbol: 'ADT',}, // 4. Adopt Side Token }, 메타마스크의 EOA 를 복사한다. walletaddress: { pd: '', // 5. Remote EOA for PD user: '0xab9ccabe5075273d0d422236176ffb28a15c470f', // 6. Local EOA for User }, dapp: { // 7. API Key apikey: 'JCJCAZT6Jwg1uptbaFkyKFvJYc855WnMs6S9dVbDFd29KsgnfmFrva4kEowuse5R' }, txactionname: { // 8. Transaxctions for DApp setowner: 'setowner', // 9. Transaction for Custom Smart Contract getowner: 'getowner', // 10. Transaction for Custom Smart Contract support: 'Support', // 10. Support Transaction for Support Token adopt: 'Adopt', // 11. Adopt Transaction for Adopt Token reward: 'Reward', // 12. Reward Transaction for Adopt Token }, username: 'dino', }; 118

Step 5. LEOA 잔고 확인하기 1. 유기견 보호소 페이지를 Reload 한다. 2. 유기견 보호소 My Page 로 이동하여 잔고를 확인한다. 3. 루니버스 콘솔에서 메타마스크 LEOA 로 1000 SPT 토큰을 전송한다. 4. 유기견 보호소 My Page 에서 잔고를 확인한다. ( SPT : 1000, ADT : 0) 119

Step 6. Support 실행 1. 마포구 보호소 페이지로 이동한다. 2. 후원하기를 클릭한 후 20SPT 후원을 클릭한다. 3. 메타마스크 서명창이 뜨면 트랜잭션을 확인한다. 4. Gas FEE 의 Edit 을 클릭해서 가스 설정 화면을 띄운다. 5. a. 가스가격을 1(GWei) 로 설정한다. b. 가스한도를 2,000,000 으로 설정한다. c. 저장을 클릭하여 서명 확인으로 이동한다. 트랜잭션 서명 창에서 승인" 버튼을 클릭하여 트랜잭션을 실행한다. 120

Step 7. 트랜잭션 확인하기 트랜잭션이 처리되면 루니버스 사이드체인 블록익스플로어러에서 트랜잭션을 확인한다. 1. 메타마스크를 클릭한다. 2. 히스토리에서 트랜잭션을 클릭한다. 3. 세부사항에서 Copy Transaction ID 버튼을 클릭한다. 4. 사이드 체인의 블록 익스플로러로 이동한다. 5. 복사한 트랜잭션을 붙여넣고 검색하여 트랜잭션을 확인한다. 121

Q&A 122

Thanks 123