"8조(8조)"의 두 판 사이의 차이
(→프로토타입 사진 혹은 작동 장면) |
(→개발 일정) |
||
(같은 사용자의 중간 판 6개는 보이지 않습니다) | |||
163번째 줄: | 163번째 줄: | ||
===기술개발 일정 및 추진체계=== | ===기술개발 일정 및 추진체계=== | ||
====개발 일정==== | ====개발 일정==== | ||
− | [[파일: | + | [[파일:nonami04a.png]] |
− | |||
====구성원 및 추진체계==== | ====구성원 및 추진체계==== | ||
212번째 줄: | 211번째 줄: | ||
◇ 하이퍼레저 컴포저를 사용할 환경을 구축하고 컴포저를 활용해서 관련 API 생성 | ◇ 하이퍼레저 컴포저를 사용할 환경을 구축하고 컴포저를 활용해서 관련 API 생성 | ||
− | + | [[파일:noname26.png]] | |
− | + | ||
+ | |||
+ | ◇ REST API를 통해 트랜잭션 실행 | ||
+ | |||
+ | [[파일:noname27.png]] | ||
+ | |||
+ | |||
+ | [[파일:noname28.png]] | ||
+ | |||
+ | |||
+ | [[파일:noname29.png]] | ||
+ | |||
+ | |||
+ | [[파일:noname30.png]] | ||
+ | |||
+ | |||
+ | [[파일:noname31.png]] | ||
− | |||
− | |||
===완료작품의 평가=== | ===완료작품의 평가=== | ||
− | + | ◇ Hyperledger Fabric 기반으로 구축한 네트워크를 이용하여 | |
+ | |||
+ | ◇ 최종적으로 결제 수수료 내역을 관리하는 시스템을 구현하는 것이 목표 | ||
+ | |||
+ | ◇ 이를 만족했는지 평가하기 위하여 평가 기준을 작성 | ||
+ | |||
+ | |||
+ | [[파일:noname32.png]] | ||
===향후계획=== | ===향후계획=== | ||
− | 내용 | + | 가. 어려웠던 내용들 |
+ | |||
+ | ◇ Hyperledger Fabric에 대한 지식이 많지 않아서 이를 충분히 이해하는데 어려움이 있었음 | ||
+ | |||
+ | ◇ Ubuntu 환경에서 개발을 진행하는데 익숙지 않아서 오류가 발생했을 때 끊임없이 구글링하고 해결하는데 시간을 많이 투자하였음 | ||
+ | |||
+ | ◇ Hyperledger Fabric은 현재 개발이 계속 이루어지고 있어 실험적인 부분이 많아서 어려움이 있었음 | ||
+ | |||
+ | ◇ REST API의 구조를 재구성해서 새롭게 변경하는데 어려움이 있었음 | ||
+ | |||
+ | |||
+ | 나. 차후 구현할 내용 | ||
+ | |||
+ | ◇ 차익 거래 시스템을 목표에 맞게 구현 | ||
+ | |||
+ | ◇ UI를 개선하고 새로운 모델에 맞게 수정 | ||
+ | |||
+ | ◇ 서버에서 동작하는 패브릭 환경 구축 | ||
− | + | ◇ 거래 데이터를 외부에서 입력받아 내역을 조회하는 기능 추가 | |
− |
2019년 12월 26일 (목) 02:22 기준 최신판
프로젝트 개요
기술개발 과제
국문 : 블록체인 기반 거래내역 관리
영문 : Transactional Information Management Based on Blockchain
과제 팀명
8조
지도교수
김진석 교수님
개발기간
2019년 9월 ~ 2019년 12월 (총 4개월)
구성원 소개
서울시립대학교 컴퓨터과학부 2010920054 이*석(팀장)
서울시립대학교 컴퓨터과학부 2014920024 안*준
서론
개발 과제의 개요
개발 과제 요약
Private Blockchain을 기반으로 한 Hyperledger Fabric의 중요한 구성요소인 신원 확인, 원장(Ledger), 거래(Transaction), 스마트 컨트랙트(Smart Contract)를 리눅스 기반의 Ubuntu에서 GO, JAVA, Node.js와 같은 범용 프로그래밍 언어로 개발하여 블록체인을 기반으로 한 차익거래내역 관리 시스템 구축이 개발 과제이다.
개발 과제의 배경
대중에게 많이 알려진 이더리움과 비트코인은 퍼블릭 블록체인이다. 제한 없이 누구라도 블록체인에 참여하고 블록을 생산할 수 있으며 또한 노드가 될 수 있고, 트랜잭션을 생성할 수 있다. 하지만 금융권과 같은 기업, 단체는 기밀유지를 위해 허가 인증된 기관만 접근 가능할 필요가 있다. 그러한 필요에 의해 자연스럽게 생성된 것이 프라이빗 블록체인이다. 이를 발전시키기 위한 기업들의 연합이 하이퍼레저이다. 특정인들에게만 프라이빗하게 네트워크 접근을 허용, 보상수단으로 코인이 지급되지 않는 대신, 일반적인 퍼블릭 블록체인보다 더 빠른 네트워크를 구성할 수 있다. 기업에서 하이퍼레저 플랫폼을 적용하더라도 퍼블릭 블록체인과 결합이 가능하기 때문에 호환하여 사용 가능하다.
개발 과제의 목표 및 내용
◇ Hyperledger Fabric 개발 환경 구축
◇ Hyperledger Fabric의 개발 툴인 Hyperledger Composer로 Business Network 만들기
◇ 비즈니스 네트워크를 포함하는 채널을 만들고 거래 생성하기
관련 기술의 현황
관련 기술의 현황 및 분석(State of art)
- 전 세계적인 기술현황
◇ Hyperledger란 무엇인가?
Hyperledger는 리눅스 재단(Linux Foundation)이 주도하는 엔터프라이즈용 블록체인 기술 개발을 위한 오픈소스 프로젝트이다. 현재 5개의 프레임워크와 5개의 툴을 만들고 있는 중이며, 이 중에 Hyperledger Fabric(이하 패브릭)이 가장 활발하게 개발되고 있다.
패브릭은 모듈화된 프라이빗 블록체인 프로젝트로, 초기 IBM이 제공한 코드를 기반으로 현재 35개 이상의 조직들과 200명이 넘는 개발자가 참여하고 있다. 이렇게 대규모로 개발되고 있는 패브릭은 여러 기업들(구글, 아마존, 오라클 등)이 활용하고 있는 인기 있는 블록체인 프로젝트이다. 패브릭의 네트워크 구조는 비트코인이나 이더리움과 같은 기존에 많이 알려진 퍼블릭 블록체인(Public blockchain)과 비교했을 때 상당히 복잡하다. 이는 패브릭이 프라이빗 블록체인으로서 퍼블릭 블록체인은 가지지 않는(또는 필요 없는) 합의 알고리즘의 선택적 사용, 네트워크 참여 권한 통제, 채널 및 멀티 장부 사용 등의 추가적인 여러 기능들을 가지기 때문이다. 패브릭은 퍼블릭 블록체인들과 비교했을 때, 구조적 차이로 인해 기능상 여러 차이점들이 발생한다. 상세한 구조적 차이를 설명하기 전에 패브릭의 기능적 특징을 우선 간략히 설명하려고 한다. 패브릭은 다음과 같은 특징을 가진다.
Hyperledger Fabric의 특징
1. 허가형 블록체인으로서 허가받은 참여자만 네트워크에 참여할 수 있다.
2. 스마트 컨트랙트에 일반 프로그래밍 언어 사용이 가능하다. (현재는 Go, Node.js 지원)
3. 스마트 컨트랙트를 일부 노드만 실행하므로 다수의 거래를 병렬적으로 빠르게 처리할 수 있다.
4. 채널을 이용해 허가받은 사람들에게만 장부(ledger)를 공개할 수 있다.
5. 교체 가능한 합의 프로토콜을 사용할 수 있다. (SOLO, Kafka 방식, PBFT등)
6. 내부 암호화폐가 불필요하다.
7. 허가형 블록체인으로서 네트워크 참여자의 신원을 확인할 수 있기 때문에 문제 발생 시 책임소재를 분명히 할 수 있다
◇ Hyperledger Fabric의 구조
1. 분산원장(Distributed Ledger) : 공유하고자 하는 데이터의 변화를 모두 기록해둔 것. 원장은 현재의 상태를 저장해 놓은 데이터베이스인 월드 스테이트(World State)와 상태변화에 대한 모든 로그 기록이 저장 되어있는 블록체인(Blockchain) 부분으로 나뉘어있다.
2. 체인코드(Chain code) : 추가로 원장에 새로운 내용을 업데이트 하거나 기존의 내용을 읽어 오기 위해 필요한 것. 스마트 컨트랙트와 비슷한 기능을 한다.
3. 피어(Peer) : 원장과 체인코드를 관리하며 패브릭 네트워크를 구성하는 노드이다. 체인코드 실행을 요청하는 트랜잭션이 발생하면 3단계(execution - ordering - validation)의 과정을 거쳐 원장에 기록되고 사용자에게 결과를 반환한다. 또한 peer 노드는 체인 코드를 실행하고 block, transaction, state를 저장한다. peer 노드는 endorsing, committing 역할을 한다.peer 노드는 n개의 체인 코드를 가지고 있을 수 있다. 체인 코드를 통해 peer가 저장하고 있는 state에 접근하여 데이터를 수정, 조회할 수 있다. 이때 endorsing peer는 스마트 컨트랙트에 수행될 트랜잭션을 시뮬레이션하고 그 결과를 클라이언트 어플리케이션에 리턴해주는 피어이다. committing peer는 오더링이 되어서 전달된 트랜잭션 블럭을 검증하고, 검증이 완료되면 자신이 갖고 있는 원장에 해당 블럭을 추가하고 관리한다. 모든 피어는 기본적으로 committing peer이다. 결과적으로 피어는 수행하는 역할에 따라 크게 4가지로 구분된다: - Endorsing peer : 체인코드 시뮬레이션을 통해 트랜잭션이 적절한지 판단하는 역할을 한다. 3단계의 과정 중 execution에 해당한다. - Committing peer : 모든 peer가 수행하는 역할로, 최신 블록에 대한 검증을 한다. 위의 3단계의 과정 중 validation에 해당한다. - Anchor peer : 다른 조직과의 통신을 위해 다른 조직의 peer와 통신하는 역할을 한다. - Leader peer : orderer와 연결되어 최신 블록을 전달받아 조직 내 다른 peer들에게 전송하는 역할을 한다.
4. 오더러(Orderer) : 오더러 노드는 블록을 생성하고 전파하는 역할을 한다. endorsing peer들이 검증을 통해 적절하다고 판단한 트랜잭션을 모아 정렬 후 실제 블록을 생성한다.
5. CA : CA는 인터넷 보안 프로토콜에서 공통되는 부분 중 하나로서 서로 다른 사용자들에게 각각 인증서를 제공하는데, 이 인증서는 해당 사용자를 공개 키에 연결시키고 CA가 디지털 서명을 한다. 만약 해당 CA를 신뢰한다면 어떤 사용자 인증서 상에 있는 CA의 서명을 검증함으로써 그 사용자의 신원을 확인할 수 있다. 패브릭에서는 Fabric CA라고 하는 빌트인(built-in) CA 컴포넌트를 제공하므로, 이 Fabric CA를 활용하여 네트워크에서 CA를 생성할 수 있다. Fabric CA는 패브릭 참여자들의 디지털 신원을 관리할 수 있는 X.509 인증서 형식의 사설(private) root CA 제공자이다. Fabric CA는 패브릭에서의 Root CA 수요를 맞추기 위한 주문 제작(custom) CA이기에, 브라우저에서 일반적 사용을 위한 SSL 인증서 제공은 불가능하다. 그러나 신원 관리를 위해서는 CA가 반드시 필요하므로, 패브릭 CA는 인증서 제공 및 관리에 활용할 수 있다.
◇ Hyperledger의 이용 현황
1. 플랫폼 컨소시엄의 확대
블록체인 사업 활성화를 위한 기업 간 협력은 플랫폼 분야에서 이미 활발하게 진행되고 있다. 프라이빗 블록체인을 범용 프로젝트에 활용하고 있는 하이퍼레저와 엔터프라이즈 이더리움(EEA, Enterprise Etherium Alliance)에는 이미 200개사 이상의 기업들이 참여하고 있다. 금융 서비스를 특화하여 진행되고 있는 r3프로젝트에도 100여 개 기업들이 참여하고 있다.
하이퍼레저 프로젝트는 2015년 12월 리눅스 파운데이션을 중심으로 시작된 최초의 플랫폼 컨소시엄이다. 이후 2017년 7월, 블록체인 개발부터 운영, 거버넌스 등 모든 프로세스를 담고 있는 하이퍼레저 패브릭이 출시되면서 IBM을 중심으로 본격적인 구축사례를 확대해나가고 있다.
EEA는 JP모건, 마이크로소프트, 인텔, 엑센츄어 등 30개사와 함께 2017년 2월 출범했다. 이 컨소시엄의 목적은 기업에서 활용하는 솔루션에 이더리움의 오픈 소스 아키텍처를 적용하고 표준화를 진행하기 위한 것이었다. EEA는 최근 여러 블록체인 네트워크를 아우르는 기술 중립적인 ‘토큰 분류체계 이니셔티브(Token Taxonomy Initiative)4’ 프로그램도 진행하겠다고 밝혔다.
r3는 분산원장 기술을 활용하여 안전한 금융거래를 처리하려는 은행들의 컨소시엄으로 설립되었으며 미국 최대의 은행인 JP모건과 골드만삭스가 창립멤버로 참여했다. 이 프로젝트는 Corda라 불리는 자체 솔루션을 내놓았고 수십 곳의 파트너로부터 지원을 받았다. 이후 골드만삭스, 모건스탠리와 산탄데르와 같은 기관이 탈퇴하기도 했지만 일본 SBI 금융그룹 및 차이나레저 등과 연계하며 활용분야를 확대해나가고 있다.
최근 주로 EEA에서 활동했던 마이크로소프트가 하이퍼레저 컨소시엄에 가입하고 하이퍼레저와 EEA의 협력 체계가 구축5되는 등 주요 플랫폼 컨소시엄 간 공조도 확대되고 있다. 기업들도 필요에 따라 컨소시엄에 중복가입하기도 하는 등 멤버수에 따라 우열을 판단하는 것은 어려운 상황이다. 국내 기업들도 LG CNS나 하나은행처럼 위의 세 컨소시엄에 모두 가입하는 사례가 늘어나고 있다.
<하이퍼레저 주요 프로젝트> ※ 출처 : 하이퍼레저 홈페이지(2019)
- 특허조사 및 특허 전략 분석
◇ Creation method, controller and the storage medium of Hyperledger Fabric network (CN110098954A) The present invention relates to block chain technical fields, disclose creation method, controller and the storage medium of a kind of Hyperledger Fabric network, it solves when creating Fabric network, writing for user's additional studies script is needed in the prior art, creation mode is inconvenient, and individually back-end services of the exploitation for deployment are needed, lead to the problem that development cost is high. 하이퍼레저 패브릭 네트워크의 생성 방법과 제어 방법에 관한 특허 : 하이퍼레저 패브릭 네트워크 설정과 그 제어에 관해 정의. 또한 컨트롤러 및 구성파일에 관한 사항을 기술하고 개발 비용의 부담 없이 직접 사용가능한 네트워크 생성 방법을 제공한다. -> 거래내역 관리 시스템에 필요한 하이퍼레저 패브릭 기반 네트워크를 생성하는데 사용할 수 있다.
◇ The method for improving Hyperledger Composer block chain transaction system scalability (CN110187868A) The invention discloses the methods for improving Hyperledger Composer block chain transaction system scalability, including the following steps: the transaction system product asset Product defined in the business network model model of existing system shares attribute;Define product details abstract concept: concept IntellectualProperty, the transaction system product asset Product are associated with the concept IntellectualProperty;The concept IntellectualProperty is inherited when for certain one kind products transactions defined notion concept. 하이퍼레저 컴포저 블록체인 트랜잭션 시스템 확장성을 개선시키는 방법에 관한 특허 : 기존 거래 시스템을 확장한 새로운 거래 시스템을 구성하는데 필요한 기술을 정의. 현재 사용되고 있는 거래 시스템을 향상시킬 때 하이퍼레저를 도입해 블록체인 기반의 거래 방식을 만들 수 있다. -> 거래 가능한 새로운 상품 유형을 확장하고 일련의 블록 체인 거래 시스템을 만드는 데 사용할 수 있다.
◇ A kind of supply chain financial application method based on block chain alliance chain technology (CN109146688A)
The invention discloses a kind of supply chain financial application methods based on block chain alliance chain technology Hyperledger, the entire framework of the present invention is reasonable, buyer and the direct cochain of seller business data, ensure the authenticity of the transaction data in supply chain, reduce each side's distrust inconsistent to data, the Complicated Flow and operation that Data duplication confirms are avoided, has ensured the transparent of the transparent and data of transaction, effectively to supervise the guarantee that provides the foundation.
하이퍼레저를 기반으로 한 공급망 금융 적용 방법에 관한 특허 : 거래 데이터의 신뢰성을 보장하고, 트랜잭션 보안을 유지하며 거래하는 방법에 관해 기술. 전체 프레임 워크에서 구매자와 판매자 비즈니스 데이터의 직접적인 거래에 대한 신뢰성을 보장한다. 타임 스탬프, 해시 알고리즘, 암호화 알고리즘 등 여러 보안 기술을 도입한다.
-> 거래 데이터를 주고받는 방식 결정과 거래내역 관리에 사용할 수 있다.
◇ System and method for building a blockchain application
The present disclosure relates to system(s) and method(s) for building a blockchain application. The system configured to maintain a set of domains and a set of application service blocks. Further, the system receives domain data from a user. (US20190116036A1)
블록체인 애플리케이션을 구축하기 위한 시스템 및 방법에 관한 특허 : 블록체인 애플리케이션 개발을 위한 시간 단축을 위해 고안되었으며, 스마트 컨트랙트 기능을 구현할 수 있게 한다. 블록체인 플랫폼 위에 작성되는 애플리케이션의 특성에 맞는 시스템에 대한 기본적인 틀을 제공한다. 시스템은 도메인 및 어플리케이션 서비스 블록을 유지하도록 구성되며, 호환 가능한 시스템이 되도록 가이드라인을 제시하고 있다.
- 기술 로드맵
시장상황에 대한 분석
- 경쟁제품 조사 비교
◇ 블록체인 별로 거래내역 관리의 핵심 기능인 체인코드(스마트 컨트랙트) 역할 기능 비교
스마트 컨트랙트는 Nick Szabo가 1994년 최초로 제안한 개념으로, 디지털 명령어로 계약을 작성하면 조건에 따라 계약 내용을 자동으로 실행할 수 있다는 개념이다. 이는 조건에 따른 계약 결과가 명확하고, 계약 내용을 즉각 이행할 수 있다는 뜻이다. 하지만 기존 디지털 자료들은 쉽게 복사되고 조작이 쉬워 개념적으로만 존재해온 서비스였다. 그러다 디지털 데이터를 신뢰할 수 있게 만들어주는 블록체인 기술이 발전하면서 스마트 컨트랙트가 구현가능하게 되었다. 이에 각 블록체인 플랫폼 별로 비교를 해보았다.
- 비트코인 스크립트
비트코인 트랜잭션에 OPCODE로 작성한 스크립트를 보내면 조건에 따라 자동으로 거래를 수행한다. 하지만 비트코인 스크립트에서는 반복문을 사용할 수 없고, 비트코인 잔고 외의 다른 정보를 관리할 수 없는 한계가 있다.
- 이더리움 스마트 컨트랙트
스마트 컨트랙트란 용어가 본격적으로 사용되기 시작한 프로젝트로 다양한 상태 저장과 반복문을 허용한 스마트 컨트랙트를 구현한다. 각 라인을 실행할 때마다 수수료를 발생시키고 네트워크상에 수수료의 한계를 설정해 무한루프를 막는다. 따라서 무한히 반복되는 조건의 스마트 컨트랙트를 실행시키면 중간에 수수료 한계점에 도달해서 중단된다. 이더리움은 함수를 컴파일된 코드 형태로 거래에 포함해 블록체인을 통해 동기화한다. 이때 거래에 포함된 정보를 함수의 입력으로 하여 코드로 표현된 함수를 실행한 후 그 결과를 별도의 상태로 보관하는 방식으로 스마트 컨트랙트를 구현한다.
- 마케팅 전략 제시
개발과제의 기대효과
기술적 기대효과
◇ 하이퍼레저 패브릭 기반의 응용 시스템이 많지 않은 시점에서 하나의 사례가 될 수 있다.
◇ 향후 블록체인 기반 응용 개발에 일정 부분 재사용할 수 있다.
◇ 블록체인을 새로운 산업과 접목시켜 다양한 시스템을 만들어 낼 수 있다.
경제적, 사회적 기대 및 파급효과
◇ 아직까지 크게 상용화되지 않고 있는 전자 투표 등의 인식 개선에 도움을 줄 수 있다.
◇ 스마트 컨트랙트를 이용한 응용을 개발하고 싶은 기업들에게 하나의 대안이 될 수 있다.
기술개발 일정 및 추진체계
개발 일정
구성원 및 추진체계
◇ 블록체인 관련 정보 수집 및 개발 방법에 대한 논의
◇ 논의된 내용을 바탕으로 적절한 역할 분담으로 거래내역관리 시스템을 구축
설계
설계사양
제품의 요구사항
◇ 거래내역관리와 차익거래 관련 시스템 구현
설계 사양
◇ 하이퍼레저 컴포저를 활용하여 BNA파일을 생성하고 거래내역을 직접 보여주고 관리하는 API를 생성하여 거래내역관리와 함께 차익거래 관련 내용 구현
개념설계안
◇ 시스템 UI를 직관적이고 필요한 기능을 잘 사용할 수 있게 구현할 것
◇ Hyperledger Fabric 기반의 시스템을 구현할 것
◇ 거래 조건을 언제든지 수정할 수 있을 것
◇ 발생한 수수료에 대한 차익을 구현할 것
◇ 요구하는 성능을 발휘할 것
◇ 안정성 및 신뢰성을 유지할 것
◇ 하이퍼레저 관련 개발 툴을 설치하고 환경설정 구축
◇ 하이퍼레저 컴포저(Hyperledger Composer)를 사용하여 BNA(Business Network Archive) 생성하고 하이퍼레저 패브릭(Hyperledger Fabric)에 배포
상세설계 내용
◇ 하이퍼레저 컴포저 플레이그라운드(Composer Playground)를 사용하여 BNA를 생성 및 테스트하고 로컬에 있는 하이퍼레저 컴포저에 BNA를 배포
◇ 하이퍼레저 패브릭 구성 요소들을 설치 및 실행하고 거래내역 시스템 구축
◇ 거래내역 시스템에 차익거래 관련 시스템 적용
<비즈니스 네트워크의 구성도>
결과 및 평가
완료 작품의 소개
프로토타입 사진 혹은 작동 장면
◇ 하이퍼레저 컴포저를 사용할 환경을 구축하고 컴포저를 활용해서 관련 API 생성
◇ REST API를 통해 트랜잭션 실행
완료작품의 평가
◇ Hyperledger Fabric 기반으로 구축한 네트워크를 이용하여
◇ 최종적으로 결제 수수료 내역을 관리하는 시스템을 구현하는 것이 목표
◇ 이를 만족했는지 평가하기 위하여 평가 기준을 작성
향후계획
가. 어려웠던 내용들
◇ Hyperledger Fabric에 대한 지식이 많지 않아서 이를 충분히 이해하는데 어려움이 있었음
◇ Ubuntu 환경에서 개발을 진행하는데 익숙지 않아서 오류가 발생했을 때 끊임없이 구글링하고 해결하는데 시간을 많이 투자하였음
◇ Hyperledger Fabric은 현재 개발이 계속 이루어지고 있어 실험적인 부분이 많아서 어려움이 있었음
◇ REST API의 구조를 재구성해서 새롭게 변경하는데 어려움이 있었음
나. 차후 구현할 내용
◇ 차익 거래 시스템을 목표에 맞게 구현
◇ UI를 개선하고 새로운 모델에 맞게 수정
◇ 서버에서 동작하는 패브릭 환경 구축
◇ 거래 데이터를 외부에서 입력받아 내역을 조회하는 기능 추가