Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
묶음 강좌명 : 블록체인
14. 솔리디티로 스마트계약 작성14-2. 스마트계약과 가상화폐
블록체인응용과 실습
1. 블록체인 플랫폼에서 스마트계약 작성
방법
2. 솔리디티에서 문자열 병합 방법
스마트계약을 위한 솔리디티 문법의
특징을 설명할 수 있다.
1. 스마트계약과가상화폐(1)
거래소를 통해 직접 만든 로직으로 가상화폐를 트레이딩
트레이딩 로직을 만들기 위해 가상화폐 거래 정보 저장/가공/분석
• 데이터 저장소와 저장된 데이터를 가공/분석하기 위한 도구가필요함
시스템에서 발생한 이벤트를 스마트폰으로 전달
가상화폐연계시스템개발
출처 박재현, 암호화폐자동거래시스템, 위키북스
출처 박재현, 암호화폐자동거래시스템, 위키북스
가상화폐연계시스템개발
메신저
트레이딩 로직 모듈
메신저 모듈 거래소 모듈
주피터 DB 모듈
파이썬 저장소
리눅스
거래소
REST API
코빗, 코인원, 빗썸 거래소 API를 이용하여 거래하기 위하여RESTful 방식 지원
사용자정보 조회, 생성, 업데이트, 삭제하는 API 를 가정함
HTTP 메소드인 GET, PUT, POST, DELETE 로 접근함
• 전체 사용자 API(https://api.example.com/users/)
• 개별 사용자 API (https://api.example.com/id)
URL을 정의함
REST API
URL GET PUT POST DELETE
https://api.example.com/users/
사용자리스트 정의하지 않음새로운 사용자를
생성함모든 사용자 삭제
https://api.example.com/users/id
Id에 해당하는사용자 정보
Id에 해당하는사용자 정보
업데이트정의하지 않음 개별 사용자 삭제
REST API의특징
Stateless
• 서버에 클라이언트의 컨텍스트를 저장하지 않음
Cacheability
• 클라이언트가 응답을 캐싱할 수 있어야 함
REST API의특징
Layered System
• REST는 클라이언트-서버 아키텍쳐이면서 계층형시스템인 관계로, 클라이언트가 연결하는 곳이 대상서버인지 로드 밸런스나 캐시 기능을 제공하는서버인지 구분하지 못하며 시스템 확장성을 향상함
Self-descriptiveness
• 각 메시지는 자신을 어떻게 처리할 것인지에 대한 정보를제공하여야 함
KORBIT 회원가입및 API 사용
이메일주소로회원가입
본인인증 : google OTP 또는전화인증
출처 박재현, 암호화폐자동거래시스템, 위키북스, http://www.korbit.co.kr
API Key 발급
API key 발급을위해서는 Key와 Secret key가필요함
Key는 API 호출시 client_id에기재함(USER ID)
Secret Key는 API 호출시 client_secret에기재함(Password)
[KORBIT]Client_id = haKNsFc47uea…Client_secret = qdJ4hxhmKj…username = [email protected] = xW1t@3G2
분류
코빗 API 소개
• 인증(Authentication)
• 회원거래소(Exchange: User)
• 공개거래소(Exchange : Public)
• 지갑(Wallet)
사용자 인증 API
코빗 API 소개
API 종류 API 역할
인증 : id/PW 직접전달
액세스 토클을 발급받는 API
Access Token 갱신
만료 전인 액세스 토큰을 재발급 받기 위한 API
사용자 정보가져오기
개인정보 조회를 위한 API, email., 본인인증완료시각, 사용자 이름, 휴대전화 번호, 생년월일, 성별, 입출금 알림 받기 여부, 체결내역 알림 받기 여부, 사용자 등급
현재 거래소의 거래와 관련된 정보를 조회할 수 있는 API
공개거래소 API
액세스 토큰이 필요하지 않음
공개거래소 API
API 종류 API 역할
시장 현황 상세정보
최종 체결시각, 가격, 매수주문 중 가장 높은가격, 매도주문 중 가장 낮은 가격, 최근24시간 동안 체결가격 중 가장 낮은 가격, 최근24시간 동안 체결가격 중 가장 높은 가격, 거래량 등
매수/매도 호가 암호화폐의 매수, 매도, 예약정보
체결내역암호화폐의 분, 시, 일 단위별 체결 가격과 체결수량 정보
각종 제약조건암호화폐별 최소, 최대 주문 가능 정보, 출금수수료 등 코빗에서 제한하고 있는 상수 값에대한 정보 (잘 사용하지 않음)
회원거래소 API
Require()
API 종류 API 역할
매도주문 매도주문을 할 수 있는 API
주문취소 매수/매도주문을 취소할 수 있는 API
미 체결 주문내역 매수/매도주문 중 체결되지 않은 주문을 조회
거래소 주문 조회 주문 id별로 주문의 상태를 조회할 수 있음
입출금 내역 조회입출금 내역을 조회할 수 있는 APIKRW, BTC, ETH, ETC, XRP 지원
거래량과 거래수수료
30일간의 거래량(KRW)과 거래량별로적용되는 수수료 정책을 조회할 수 있음
지갑 API
지갑 잔액 조회 API 사용, 다른 거래소에 개설되어 있는 자신의비트코인 계좌로 비트코인 전송 가능
API 종류 API 역할
지갑정보 조회 모든 화폐의 지갑정보를 조회할 수 있는 API
비트코인 주소할당
거래소 내에 비트코인 지갑 주소를 할당 받을수 있는 API, 비트코인만 지원
비트코인 출금 비트코인을 다른 지갑으로 송금하는 API
비트코인 입출금건별 상태 조회
비트코인 임금 내역과 출금 요청 개별 건에대해 현재 상태를 조회할 수 있는 API
비트코인 출금요청 취소
진행 중인 출금 요청을 취소하는 API
액세스토큰받기 REST API
REST API 서버 접속을 위해서 액세스 토큰을 발급받음
Curl –D –X post –d “client_id=$client_id&client_secret=$client_secret&username=$email&password=$password&grant_type=password” https://api.korbit.co.kr/v1/oauth2/access_token{
“token_type”:”Bearer”,“access_token”:”1t1LgTslDrGznxPxhYz7RldsNVIxxxx”,“expires_in”:3600,“refresh_token”:”vn5xo0f4PzckgnqjQSL9Sb3KxWJxxxx”}
2. 스마트계약과가상화폐(2)
액세스토큰받기/OAuth
액세스 토큰 받기
• POSTMAN으로 접속
OAuth
• 인증을 위한 Open Standard Protocol
• Oauth가 사용되기 전 ID와 PW를 사용함
• Oauth는 3rd party를 위한 범용 인증표준
액세스토큰받기/OAuth
외부 사이트와 인증기반의 데이터를 연동할 때 ID, Password를 넘기는 방법은 매우 위험하고, 보안에 취약함
ID, Password는 그사용자의 모든 권한을 얻는 것이므로 도용위험이 높음
Oauth는사용자 임시 인증을 위한 Token을 제공하는 방식임
• 각 서비스마다 그 방법이 제각각인 관계로 개발자들은 인증연동을 각 서비스 별로 따로 구현하던 상황임
OAuth
표준 인증방법이 필요하고, Oauth이 등장함
OAuth
등록년도
• 2007년 OAuth1.0 발표함
• 2010년 IETF standard로 Oauth 1.0a을 등록함
• 2012년 Oauth 2.0이 IETF standard 로 등록함
OAuth
• OAuth token is like that valet key. You get to tell the consumers what they can use and what they can’t use from each service provider.
• You can give each consumer a different valet key.
OAuth
출처 https://www.varonis.com/blog/what-is-oauth/
Client 가 Resource Owner에게Authorization Request01
Client는 Authorization Grant 를받음02
Access token 요청03
Authorization server는Authorization Grant의유효성검증후Access Token 발급
04
Oauth 인증절차
Oauth 인증절차
Oauth 1.0과 2.0 차이점
Access Token 갱신
• OAuth1.0에서 Access Token을 받으면 Access Token을계속 사용 가능
일례로 트위터의 경우 Access Token을 만료시키지 않음
OAuth 2.0에서는 보안강화를 위해 Access Token의 Life-time을지정할 수 있음
출처 https://www.varonis.com/blog/what-is-oauth/
Oauth 1.0과 2.0 차이점
출처 https://www.varonis.com/blog/what-is-oauth/
API 종류 API 역할
시장 현황 상세정보
최종 체결시각, 가격, 매수주문 중 가장 높은가격, 매도주문 중 가장 낮은 가격, 최근 24시간동안 체결가격 중 가장 낮은 가격, 최근 24시간동안 체결가격 중 가장 높은 가격, 거래량 등
매수/매도 호가 암호화폐의 매수, 매도, 예약정보
체결내역암호화폐의 분, 시, 일 단위별 체결 가격과 체결수량 정보
각종 제약조건암호화폐별 최소, 최대 주문 가능 정보, 출금수수료 등 코빗에서 제한하고 있는 상수 값에대한 정보 (잘 사용하지 않음)