Klaytn 플랫폼 및 SDK 소개
Ground X가 주도하여 개발한 Public Blockchain 플랫폼인 Klaytn의 아키텍처와 SDK에 대해 소개합니다. Klaytn은 엔터프라이즈와 서비스를 지향하는 블록체인 플랫폼으로 1초의 블록 생성 및 확정 시간과 4000 TPS의 성능을 달성한 고성능의 블록체인 플랫폼입니다. 본 발표에서는 Klaytn의 네트워크 구조와 블록 생성 및 검증을 담당하는 Governance Council, 그리고 플랫폼의 전반적인 아키텍처에 대해서 설명합니다. 그리고 Klaytn에서 블록체인 애플리케이션을 개발할 때 사용할 수 있는 SDK인 caver-js와 caver-java에 대해서도 소개합니다. 마지막으로 Klaytn을 개발하고 메인넷 Cypress를 런칭하기까지의 개발 후기에 대해서도 공유할 예정입니다.
Klaytn 플랫폼 및 SDK 소개
Ground X가 주도하여 개발한 Public Blockchain 플랫폼인 Klaytn의 아키텍처와 SDK에 대해 소개합니다. Klaytn은 엔터프라이즈와 서비스를 지향하는 블록체인 플랫폼으로 1초의 블록 생성 및 확정 시간과 4000 TPS의 성능을 달성한 고성능의 블록체인 플랫폼입니다. 본 발표에서는 Klaytn의 네트워크 구조와 블록 생성 및 검증을 담당하는 Governance Council, 그리고 플랫폼의 전반적인 아키텍처에 대해서 설명합니다. 그리고 Klaytn에서 블록체인 애플리케이션을 개발할 때 사용할 수 있는 SDK인 caver-js와 caver-java에 대해서도 소개합니다. 마지막으로 Klaytn을 개발하고 메인넷 Cypress를 런칭하기까지의 개발 후기에 대해서도 공유할 예정입니다.
본 발표자료에서는 이더리움 플랫폼의 상세 아키텍쳐와 기반 기술, 그리고 스마트 컨트랙과 이를 기반한 Dapp의 개발 방안에 대해 소개한다. 이더리움은 블록체인 기반 기술하에 암호 화폐의 생성 , 전송 등 라이프사이클 관리외에 스마트 컨트랙을 지원한다. 스마트컨트랙은 서로 모르는 당사자간의 계약을 준수하도록 강제할 수 있는 응용 프로그램이다. 컨트랙 프로그램은 바이트코드로 컴파일된 후 블록체인을 통해 배포되고 , 로컬 로드상에서 실행되는 일종의 에이전트라 볼 수 있다. 이렇게 개바된 스마트컨트랙은 기존 웹 인터페이스를 통해 접근하고 활용할 수 있으며 이렇게 스마트 컨트랙 기반하에 개발된 응용 서비스를 Dapp이라 한다.
2017 tensor flow dev summit (Sequence Models and the RNN API)
작성된 자료로 2017년 2월 22일 오후 8시 부터 Maru180에서
GDG Seoul 에서 주최한 2017 Tensorflow Dev Summit Extended Seou에서
발표를 진행
Sequence Models and the RNN API 정리 내역 공유
본 발표자료에서는 이더리움 플랫폼의 상세 아키텍쳐와 기반 기술, 그리고 스마트 컨트랙과 이를 기반한 Dapp의 개발 방안에 대해 소개한다. 이더리움은 블록체인 기반 기술하에 암호 화폐의 생성 , 전송 등 라이프사이클 관리외에 스마트 컨트랙을 지원한다. 스마트컨트랙은 서로 모르는 당사자간의 계약을 준수하도록 강제할 수 있는 응용 프로그램이다. 컨트랙 프로그램은 바이트코드로 컴파일된 후 블록체인을 통해 배포되고 , 로컬 로드상에서 실행되는 일종의 에이전트라 볼 수 있다. 이렇게 개바된 스마트컨트랙은 기존 웹 인터페이스를 통해 접근하고 활용할 수 있으며 이렇게 스마트 컨트랙 기반하에 개발된 응용 서비스를 Dapp이라 한다.
2017 tensor flow dev summit (Sequence Models and the RNN API)
작성된 자료로 2017년 2월 22일 오후 8시 부터 Maru180에서
GDG Seoul 에서 주최한 2017 Tensorflow Dev Summit Extended Seou에서
발표를 진행
Sequence Models and the RNN API 정리 내역 공유
2. Stacks Seoul
Smart contracts
directly on Bitcoin
are the Holy Grail of crypto.
Satoshi predicted similar designs
A completely separate
network and separate
blockchain, yet it shares CPU
power with Bitcoin.
- Satoshi
bitcointalk.org
4. Stacks Seoul
Stacks smart contract : Clarity
- Hiro, Algorand 팀에 의해서 개발된 언어이며, 예측 가능한 코딩에 가치를 둔 언어
- 확장자는 .clar
5. Stacks Seoul
Compile 되지 않고 Stacks 블록체인에 Interprete 되어 Broadcasting 된다
= 누구나 투명하게 모든 컨트랙트를 볼 수 있습니다.
Clarity 언어는 Deciable 하다
= Clarity와 같은 결정 가능한 언어를 사용하면 모든 기능에 대해 실행되는 코드를 정확하게 결정
할 수 있습니다.
Stacks smart contract : Clarity
6. Stacks Seoul
- 유일한 Primitive 타입은 Boolean, Integer, Prinicpal
- 재귀는 허용하지 않고 익명 함수를 제공하지 않는다
- Loop 는 오직 map,
fi
lter, fold 함수를 통해서만 제공한다
- 가변적인 리스트는 함수를 통한 input을 통해서만 가능하며, 별도의 join 과 같은 함수는 제공하지 않는다
Clarity : Key Point
9. Stacks Seoul
- Principal : 토큰 잔액을 가질 수 있는 Entity로써, 개인 주소에 대한 고유한 식별자
= 이더리움에서는 CA(Contract Account), EOA (Externally Owned Account) 같은 개념
- Principal 의 pr
fi
x는 Mainnet 의 경우 SP 로 시작, Testnet/Devnet 은 ST로 시작
- Principal 의 literal 값은 ‘ (single quote) 로 시작
‘ST1HTBVD3JG9C05J7HBJTHGR0GGW7KXW28M5JS8QE.my-contract
Clarity : Principal
10. Stacks Seoul
stx-get-balance : Principal의 잔고 조회
(stx-get-balance 'ST1HTBVD3JG9C05J7HBJTHGR0GGW7KXW28M5JS8QE)
(stx-get-balance 'ST1HTBVD3JG9C05J7HBJTHGR0GGW7KXW28M5JS8QE.my-contract)
stx-transfer : Stacks token 전송
(stx-transfer? u500 tx-sender 'ST1HTBVD3JG9C05J7HBJTHGR0GGW7KXW28M5JS8QE)
Clarity : Principal
11. Stacks Seoul
- 스택스의 예약된 메소드인 tx-sender를 컨트랙트에서 호출하면 트랜잭션을 호출한 엔티티인
Principal 을 의미한다
- 컨트랙트 간의 호출이 발생했을때 contract-caller를 통해 마지막 호출자(Principal)을 알 수 있다
invoke -> A, contract-caller = Bob
invoke -> B, contract-caller = A
invoke -> C, contract-caller = B
Clarity : Principal
12. Stacks Seoul
- block-height : 블록높이를 확인
(> block-height 1000)
- de
fi
ne-read-only : Read 전용 함수
(define-read-only (read-only-function-test)
(ok 'called read only function'))
- de
fi
ne-map : 데이터 Map을 정의하는 함수
(define-map mints-per-user principal uint)
Clarity : Keyword & Function
13. Stacks Seoul
- de
fi
ne-fungible-token : Fungible Token 을 정의
(de
fi
ne-fungible-token <token-name> <total-supply>)
(define-fungible-token stacks u100)
(ft-mint? stacks u100 ‘SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR)
- de
fi
ne-non-fungible-token : Non-Fungible Token 을 정의
(de
fi
ne-non-fungible-token <asset-name> <asset-identi
fi
er-type>)
(define-non-fungible-token stacks-seoul-2022 uint)
Clarity : Keyword & Function
14. Stacks Seoul
- impl-trait : 정의된 Trait을 구현하고 있는 Contract 임을 정의
(impl-trait <trait-identi
fi
er>)
(impl-trait 'SPAXYA5XS51713FDTQ8H94EJ4V579CXMTRNBZKSF.token-a.token-trait)
(define-public (get-balance (account principal))
(ok u0))
(define-public (transfer? (from principal) (to principal) (amount uint))
(ok u0))
Clarity : Trait
15. Stacks Seoul
- de
fi
ne-trait : trait을 정의
(de
fi
ne-trait trait-name ((func1-name (arg1-type arg2-type ...) (return-type))))
(define-trait token-trait
((transfer? (principal principal uint) (response uint uint))
(get-balance (principal) (response uint uint))))
Clarity : Trait
16. Stacks Seoul
(define-trait nft-trait
(
;; Last token ID
(get-last-token-id () (response uint uint))
;; URI for metadata associated with the token
(get-token-uri (uint) (response (optional (string-ascii 256)) uint))
;; Owner of a given token identifier
(get-owner (uint) (response (optional principal) uint))
;; Transfer from the sender to a new principal
(transfer (uint principal principal) (response bool uint))
)
)
Example : NFT (SIP 009)
17. Stacks Seoul
- use-trait : 다른 Contract 에 정의된 trait을 현재 Contract로 가져올 때 사용
(use-trait <trait-alias> <trait-identi
fi
er>)
(use-trait token-a-trait ‘SPAXYA5XS51713FDTQ8H94EJ4V579CXMTRNBZKSF.token-a.token-trait)
(define-public (forward-get-balance (user principal) (contract <token-a-trait>))
(begin
(ok 1)))
Clarity : Trait
25. Stacks Seoul
- 사전에 Docker 필수 설치가 되어 있으면, Local에 dockerized 된 Stacks 블록체인 구동이 가능
- 구동시, Clarinet.toml 설정 파일을 기반으로 Local 블록체인에 모든 컨트랙트가 자동 배포된다
- Frontend 와 Backend 어플리케이션의 빠른 Intracting 으로 개발하기가 수월
> clarinet integrate
Testing : Clarinet