loopchain_SCORE_dev

Similar documents
PowerPoint 프레젠테이션

말은 많은 Blockchain 2

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Interstage5 SOAP서비스 설정 가이드

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

untitled

Portal_9iAS.ppt [읽기 전용]

User interface design

Secure Programming Lecture1 : Introduction

Yggdrash White Paper Kr_ver 0.18

bn2019_2

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

PowerPoint 프레젠테이션

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

Network seminar.key

PowerPoint Presentation

ETL_project_best_practice1.ppt

Chapter 1

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Web Application Hosting in the AWS Cloud Contents 개요 가용성과 확장성이 높은 웹 호스팅은 복잡하고 비용이 많이 드는 사업이 될 수 있습니다. 전통적인 웹 확장 아키텍처는 높은 수준의 안정성을 보장하기 위해 복잡한 솔루션으로 구현

[Brochure] KOR_TunA

Intro to Servlet, EJB, JSP, WS

1217 WebTrafMon II

The Self-Managing Database : Automatic Health Monitoring and Alerting

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r


DE1-SoC Board

C# Programming Guide - Types

신림프로그래머_클린코드.key

SMB_ICMP_UDP(huichang).PDF

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

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

Chap7.PDF

<31332DB9E9C6AEB7A2C7D8C5B72D3131C0E528BACEB7CF292E687770>


thesis

PowerPoint 프레젠테이션

02 C h a p t e r Java

No Slide Title

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

DBPIA-NURIMEDIA

PowerPoint 프레젠테이션

PCServerMgmt7

uFOCS

AGENDA 모바일 산업의 환경변화 모바일 클라우드 서비스의 등장 모바일 클라우드 서비스 융합사례

Apache Ivy

Intra_DW_Ch4.PDF

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

PowerPoint Presentation

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

ecorp-프로젝트제안서작성실무(양식3)

loopchain_교육_ _v0.5

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

Mango220 Android How to compile and Transfer image to Target

APOGEE Insight_KR_Base_3P11

MAX+plus II Getting Started - 무작정따라하기

TTA Verified : HomeGateway :, : (NEtwork Testing Team)

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

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

Week13

OMA Bcast Service Guide ATSC 3.0 (S33-2) T-UHDTV 송수신정합 Part.1 Mobile Broadcast (Open Mobile Alliance) 기반 Data Model ATSC 3.0 을위한확장 - icon, Channel No.

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

Mstage.PDF

PowerPoint 프레젠테이션

歯CRM개괄_허순영.PDF


github_introduction.key

J2EE & Web Services iSeminar

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_ pptx

K7VT2_QIG_v3

Spring Boot

NoSQL

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

Microsoft PowerPoint - 6.pptx

DocsPin_Korean.pages

FMX M JPG 15MB 320x240 30fps, 160Kbps 11MB View operation,, seek seek Random Access Average Read Sequential Read 12 FMX () 2

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

untitled

교육2 ? 그림

No Slide Title

JavaGeneralProgramming.PDF

MS-SQL SERVER 대비 기능

초보자를 위한 자바 2 21일 완성 - 최신개정판

SRC PLUS 제어기 MANUAL

PowerPoint 프레젠테이션

Luniverse 사용법 교육자료 presented by Lambda256

(SW3704) Gingerbread Source Build & Working Guide

PowerPoint 프레젠테이션

슬라이드 1

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 (

PowerPoint 프레젠테이션

Microsoft Word - FunctionCall

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

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

슬라이드 1

vm-웨어-앞부속

rmi_박준용_final.PDF

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

- 목차 - 1. 개요 가. 아이콘 (ICON) 이란? 나. 주요스펙 1) 기본정보 2) 시장정보 2. 주요팀멤버및재단소개 3. ICON 컨셉및특징 - 독자적인블록체인기술, Loopchain - ICON의블록체인네트워크, 넥서스 (NEXUS) - IISS (ICON I

MySQL-Ch05

Transcription:

loopchain SCORE development

주의 : 이슬라이드의내용은통보없이달라질수있으니참고바랍니다.

1. Dapp 이란무엇인가?

1.1 Dapp이란? 1. Dapp이란 무엇인가 Decentralized Application ü Dapp은 Decentralized Application의 약자로 블록체인 기술을 활용한 탈중앙화된 어플리케이션. ü 코드가 탈중앙화된 peer-to-peer network 위에서 작동하고, 데이터 호출 및 등록을 블록체인 데이터베이스로 사용하는 애플리케이션. ü 이더리움 블록체인에 Dapp이 저장되며, EVM이 Dapp을 실행시키고, 처리 결과들을 블록체인에 기록. ü 누구나 실행 가능하며, 셧다운이 없고, 접속제한도 없음.

1. Dapp 이란무엇인가 Web 브라우저 HTML/CSS/Javascript Apache/Nginx Webserver Server Code Java, Python, Ruby DB Cache

1. Dapp 이란무엇인가 Dapp 브라우저 Dapp 브라우저 HTML/CSS/Javascript Web3js Apache/Nginx Webserver HTML/CSS/Javascript Web3js Apache/Nginx Webserver EVM EVM Blockchain (account data, contract code) Blockchain (account data, contract code) Ethereum Dapp Instance 1 Ethereum Dapp Instance 2

1. Dapp 이란무엇인가 프로토콜 (Protocol) 이란? ü ü 블록체인에서프로토콜의의미 ü ü

1. Dapp 이란무엇인가 Technology Blockchain Protocol Ethereum EOS Loopchain Qtum Coin ETH EOS ICON (loopchain based coin) QTM Dapp Cryptokitties Mithril (Plactal) Bluewhale Mediblock

2. 해커톤에서 Dapp 개발노하우

2.1 아이디어빌드하기

2. Dapp 개발노하우 ü ü ü

2. Dapp 개발노하우 ü ü

2. Dapp 개발노하우 ü ü

2. Dapp 개발노하우 확장성은아래요소들을포괄한다 1) 데이터처리속도 ( 프로세싱, processing speed) 2) 데이터검증속도 ( 검증, validation speed) 3) 데이터전파속도 ( 네트워크, network relay speed) 4) 늘어나는데이터크기 ( 저장공간, storage) 5) 합의구조에참여하는노드갯수 ( 검증인수, the number of validators) 6) 활용및응용프로그램의다양성 ( 어플리케이션, scalability on codes and applications) 7) 온체인 / 오프체인거버넌스 (on-chain/off-chain governance)

2. Dapp 개발노하우 ü ü

2..1 Dapp 개발노하우 ü ü

2. Dapp 개발노하우 ü ü ü

2. Dapp 개발노하우 구분 Public Blockchain Private Blockchain 네트워크참여자불특정다수신원이판명된참여자 거래생성및검증불특정다수신원이판명된참여자 프라이버시개방서비스채널암호화 처리속도 7~15 TPS 1,000 TPS 이상 블록확정시간 15 초이상 1 초미만 예시 비트코인, 이더리움등 loopchain, Hyperledger, R3 등

21 3. SCORE 개발

22 SCORE 란?

Smart Contract On Reliable Environment üloopchain 안에서 Python 을이용한 Smart contract üethereum 과달리 VM 위가아닌실제장비위에서돌아가는 Smart contract ü 각 Peer 에서독립적으로실행되며 Block 이확정되는시점에서실행 üblock 별로실행하며, 블록체인으로구성하는 Business logic 을구현한다. 23

SCORE container RESTful/JSON RPC 2.0 package.json SCORE code (*.py) Client Peer 하나의별도로분리된 Git project 입니다.

1. 블록체인에거래생성 7. 거래결과에대한조회요청 2. 블록생성및동기화 loopchain peer 4. 신규블록에포함된거래처리를위한 SCORE 호출 5. 로컬저장소에저장된 SCORE 코드호출 SCORE Container SCORE Block Storage 3. 블록저장소에블록저장 8. SCORE 의 query 함수를호출하여스토리지에저장된결과를반환 SCORE local repository SCORE Storage 6. SCORE의 invoke 함수호출하여거래실행하고결과를스토리지에저장 0. 거래에대한 SCORE 등록 ( 버전별 ) SCORE Store 5-1. 로컬저장소에저장된 SCORE 가없거나신규버전이면 SCORE Store 에서업데이트

ü 랜덤값에의존하는비지니스모델 :SCORE 안에서랜덤값을생성하거나, 실행하는모델은불가하나, 블록의해쉬혹은트랜잭션을이용한랜덤값이용은가능합니다. ü 외부의데이터에의존성이있는비즈니스모델 :SCORE 안에서다른사이트를호출하거나, 외부의데이터를요구하는모델은아직불가능하나향후고려되고있습니다. ü 시간에따라행동하는혹은실행시각에따라내용이바뀌는모델 : 현재시각 ( 실행시각 ) 은사용불가능하며, 블록의시각혹은트랜잭션시각으로대체는가능합니다. ü 부동소수점처리불가 : CPU 에따라부동소수점표현방식이달라질수있으므로모든연산은정수단위에서처리해야합니다. ü 내부변수재사용금지 : 특정한변수를 Cache 해놨다가사용하는일은없어야합니다. 26

27

übears : SCORE development utility for loopchain enterprise üscore 코드의틀을작성 üscore code 올려보기 ü 실제 SCORE 에 Request 던지기 üpostman 같은 HTTP clien 로해보기 ü 작업환경 ümacos ülinux ( Ubuntu, CentOS) üwindows 에서는동작시문제가생길수있습니다. ücygwin 위에서돌리면문제해결가능

ü 미리설치하기 üpython 3.6 이상 üvirtualenv 16.0 이상 üpip 10.1 이상 üdocker V18.03 이상 üdocker image ü 이번해커톤을위해특별히 docker image 를공개드립니다. ü 외부에유출하시면안됩니다. üpackage ü 별도의 wheel package 를 naver cafe 를통해제공할예정입니다. ü 외부에유출하시면안됩니다.

üwheel package: http://bit.ly/loopbears ü설치하기 $ pip install bears-0.0.1-py2.py3-none-any.whl

üwheel package: http://bit.ly/loopbears ü설치하기 $ pip install bears-0.0.1-py2.py3-none-any.whl

üdocker images: http://bit.ly/loopchaindockerimage ü 설치하기 $ docker load < loopchain_fluentd_rc1.19.2.tar.gz $ docker load < loopchain_peer_rc1.19.2.tar.gz $ docker load < loopchain_rs_rc1.19.2.tar.gz $ docker images

$ bears help $ bears usage: bears [-h] [--version] [command [command...]] ========================================================== bears: SCORE development tool for loopchain enterprise ( v.0.0.1 ) ========================================================= positional arguments: command init <project> run <project> stop optional arguments: -h, --help show this help message and exit --version show program's version number and exit

$ bears init <project> ü<project> folder 가만들어진다. ü 관련된 Source code 들이만들어진다. $ bears init hello hello is created!! $ cd hello $ ls hello.py package.json scorecode.py scoretool.py

$ bears run <project> ü<project> 를포함해서 docker container 들을이용해서 loopchain 을올립니다. $ bears run hello 6923e371f23ae3dc5458cc42e818c37510f9f0235fd3eb7de94021fca630cae6 b8b74b753269788a2d572a4b3ea0da36c531109f28a2b4788266098bacaff596 '2018-05-24 05:23:50,763 1 140285103589184 [PEER_ID] DEBUG Popen(['git', 'version'], cwd=/, universal_newlines=false, shell=none)' '2018-05-24 05:23:50,769 1 140285103589184 [PEER_ID] DEBUG Popen(['git', 'version'], cwd=/, universal_newlines=false, shell=none)' ===================================================================== ===================================================================== ===================================================================== WARNING!!! This file will be removed later. When you launch peer, you should launch peer in the following format:./loopchain.py peer [-d] [-p PORT] [-o CONFIGURE_FILE_PATH] ===================================================================== ===================================================================== ===================================================================== try load configure from json file (/conf/peer_conf.json) '2018-05-24 05:23:51,300 1 140285103589184 [PEER_ID] DEBUG It's working on docker. Trying to find private IP if it is in EC2...

üinvoke ü Block 인증이마쳐지고저장될때불리는요청 üquery ü SCORE 의결과를조회하는요청

Invoke 검증되고합의된 Trasaction 을가지고실제계약업무를실행하는작업 내부에여러실제작업들에대한함수들이있고이것을 JSON-RPC 방식으로호출한다. Python 으로작성되어서거의대부분의일들을할수있다. 작업된결과는 SCORE DB 에저장한다. NoSQL 방식으로 Key-Value 로저장. Query SCORE DB 에저장된결과를읽어오는작업 내부에여러실제작업들에대한함수들이있고이것을 JSON-RPC 방식으로호출한다. Python 으로작성되어서거의대부분의일들을할수있다.

1. 블록체인에거래생성 7. 거래결과에대한조회요청 2. 블록생성및동기화 loopchain peer 4. 신규블록에포함된거래처리를위한 SCORE 호출 5. 로컬저장소에저장된 SCORE 코드호출 SCORE Container SCORE Block Storage 3. 블록저장소에블록저장 8. SCORE 의 query 함수를호출하여스토리지에저장된결과를반환 SCORE local repository SCORE Storage 6. SCORE의 invoke 함수호출하여거래실행하고결과를스토리지에저장 0. 거래에대한 SCORE 등록 ( 버전별 ) SCORE Store 5-1. 로컬저장소에저장된 SCORE 가없거나신규버전이면 SCORE Store 에서업데이트

ü<project>.py ü SCORE code: 주요 interface üpackage.json ü SCORE package 의 meta 정보를관리 üscorecode.py ü 실제우리가작성할 Business logic 들이있는 code üscoretool.py ü 각종 SCORE 개발에필요한 utility 들

üuri : :9000/api/v1/transactions üheader : application/json ürequest 형식 { "jsonrpc":"2.0", "id": ~~, <== must be number "method":..", "params": { } } üresponse 형식 { "response_code": "0 <== 'Success' is 0. 'Exception' is 9000. "tx_hash": "~~~", "more_info": "" }

üuri : :9000 /api/v1/transactions/result?{tx_hash} üheader : application/json üresponse 형식 { "response_code": "0", <== 'Success' is 0. 'Exception' is 9000. "response": { "code": 0, "jsonrpc": "2.0" } }

üuri : 9000:/api/v1/query üheader : application/json ürequest 형식 { "jsonrpc":"2.0", "id": ~~, <== Must be string in Query. "method":..", "params": { } } üresponse 형식 { 'code' : integer value. <== 'Success' is 0. 'Exception' is 9000. 'result : }

{ "id":"theloop-scoreexam", "version":"0.1.0", "auth":{ "name":"theloop Dev Team", "email":"dev@theloop.co.kr", "org":"theloop inc" }, "dependencies":{}, "description":"score example", "repository":{}, "homepage":"http://www.theloop.co.kr", "function":{ "invoke":[ { "method":"foo1", "params": { "param1":"string", "param2":"string", "param3":"string" }, "description":"" }... ], "query":[ { "method":"foo2", "params": ["param"], "description":"" } ] }, "main": "score_code" } PackageID: [Company name]-[package] 를추천 invoke: Tx 를만들때, invoke() 시실행하게될함수들에대해정의하는부분 query: Tx 에 query() 시쓸함수들에대해정의하는부분 읽어들일 Python code 이름

{ "id":"theloop-scoreexam", "version":"0.1.0", "auth":{ "name":"theloop Dev Team", "email":"dev@theloop.co.kr", "org":"theloop inc" }, "dependencies":{}, "description":"score example", "repository":{}, "homepage":"http://www.theloop.co.kr", "function":{ "invoke":[ { "method":"foo1", "params": { "param1":"string", "param2":"string", "param3":"string" }, "description":"" }... scorecode.py 안의 SCOREBusiness class 의 member 함수이름 ], "query":[ { "method":"foo2", "params": ["param"], "description":"" } ] }, "main": "score_code" }

üscorebusinesslogic : 실제 Business logic 을구현해넣는 class ü 여러개의 SCORE DB (No SQL) 을설정할수있다. üscorehelperdatabase 를이용. ümember 함수에넣고 package.json 에함수의형태를기록하면사용가능

üscore 내부에서이용하는 DB ü NoSQL ü Key, Value 모두 byte array 로저장해야된다. ü 처음시작할때, 고유한 DB 이름을이용해야한다. ü 기능 ü put(key, value) : 쓰기 ü get_in_invoke(key): Invoke 할때, 읽어오기 ü get_in_query(key): Query 할때, 읽어오기 ü delete(key): 데이타삭제하기 ü 주의 ü get_in_invoke(key) 를 Query 할때쓰거나 get_in_query(key) 를 Invoke 할때쓰면오류가생길수있다. Ex) Byte array: 바로디스크에쓸수있는형식 >>> b'\xcf\x84o\xcf\x81\xce\xbdo\xcf\x8 2'.decode('utf-16') ' 콯캁 ' >>> b'\xcf\x84o\xcf\x81\xce\xbdo\xcf\x8 2'.decode('utf-8') 'τoρνoς'