기본 콘텐츠로 건너뛰기

Hyperledger Fabric 을 이용한 블록체인 시작하기


최근 블록체인에 대한 관심이 높아지고 각 산업에서도 블록체인을 도입하기 위한 여려 방안들을 마련하고 있습니다.


 
보통, 블록체인이라 하면 비트코인을 중심으로 한 암호화페(Cryptocurrency)를 떠올릴 텐데요. 최근에 거론되는 블록체인은 약간의 차이가 있습니다.
 
결론부터 간단하게 말하면 블록체인은 데이터(원장, Ledger)를 안전하고 신뢰 있게 저장하고 관리하기 위한 기술이라고 할 수 있습니다.
 
그 기술 기반에 가상화폐를 거래하기 위한 기능들을 구현한 것이 비트코인과 같은 암호화폐 서비스입니다.
 
현재 금융권을 중심으로 블록체인에 대한 관심이 높으나 앞서 말한 것과 같이 데이터를 안전하고 신뢰성 있게 관리한다는 측면으로 보면 금융권 뿐 아니라 필요에 따라 다양한 산업 또는 다양한 업무에 블록체인의 기술을 적용할 수 있을 것 입니다.
 
그럼, 불특정 다수가 접속해서 사용하는 환경이 아니라 특수한(?) 목적에 의해 블록체인의 기술을 활용하는 환경이라고 하면 허가를 받은 사람들만 접속해서 사용해야 할 것입니다.
 
그래서 나온 개념이 프라이빗 블럭체인(Private Blockchain) 이며, 사용의 허가를 받은 사람,기관 또는 단체들만 사용가능한 블럭체인이라고 볼 수 있습니다.
 
반대로 비트코인과 같이 모두에게 열려있는 환경을 퍼블릭 블럭체인(Public Blockchain) 이라고 부르기도 합니다.
 
최근 기업들에 의해 거론되고 있는 블록체인은 대부분 프라이빗 블록체인에 대해서 많이 거론하고 있습니다.
 
프라이빗 블록체인과 퍼블릭 블럭체인에 대한 비교는 다음 기사를 보시기 바랍니다.
 
[블로터] 퍼블릭 블록체인의 한계와 프라이빗 블록체인
 
리눅스 재단의 Hyperledger 프로젝트는 기업에서 적용이 가능한 표준적인 블록체인의 기술을 구현하는 목적으로 만들어진 블록체인 컨소시엄입니다.
 
Hyperledger 프로젝트에는 다수의 서브 프로젝트 들이 존재하며 그 중 Fabric이 블록체인의 런타임을 구현하는 프로젝트입니다.
 
(여기서 다루는 블록체인은 Hyperledger Fabric
 
2017/10/20 - [3DP&기술] - 비트코인 p2p방식
 
을 기준으로 설명하고 있습니다.)
 
블록체인의 시스템 아키텍처적인 접근?
 
이 단락의 제목을 시스템 아키텍처적인 접근으로 지어도 되는진 잘 모르겠습니다. 주변에서 블록체인에 대해서 관심을 가지고 알아보시는 분들이 항상 빠지지 않고 하시는 질문이 있습니다.
 
블록체인 기반 시스템에서 하나의 데이터를 블록체인에 넣으면 블록이 하나 생성되지?, 그리고 다음 데이터를 넣으면 다음 블록이 생성되어서 앞 블록에 연결이 될거고
 
트랜잭션의 순서는 블럭체인의 순서대로 가져오면 되는거지?등등
 
위의 내용과 같은 질문을 자주 받습니다. 블록체인의 원리를 공부하신 분들은 알겠지만 트랜잭션(거래) 정보를 블록에 담고 블록들이 체인처럼 연결된다고 설명을 하기 때문입니다.
 
물론 거래의 순서에 맞춰 블록이 쌓이겠지만, 블록체인의 전반적인 이해를 위해서는 먼저 전통적인 3 Tier architecture에서 바라봤을 때 블록체인은 다음 그림에서 제일 아랫쪽에 위치한다는 것입니다.
 
그렇습니다. 기술적으로 봤을 때는 블록체인은 데이터베이스의 일종으로 보는게 맞습니다.
 
다만, 일반적인 데이터베이스와의 차이점은 데이터 변조가 힘든 환경에 저장한다는 차이가 있습니다.
 
일반적으로 관계형 데이터베이스를 이용하여 어플리케이션을 개발할 때 SQL문을 이용하여 CRUD 동작을 합니다.
 
어플리케이션 개발자는 데이터베이스 엔진이 SQL문을 어떻게 해석하며 SQL을 실행하여 데이터가 파일시스템 또는 메모리등에 어떤 메커니즘으로 저장되고 관리되는지 궁금해 하지 않습니다.
 
이와 마찬가지로 블록체인을 이용하여 어플리케이션을 개발할 때와, 블록체인 엔진의 메커니즘을 이해하는 것은 분리하여 생각할 필요가 있습니다.
 
미리 Hyperledger Fabric 기준으로 설명을 하면 Smart Contract(이하, Chaincode 또는 체인코드) 를 통해서 원장을 블록체인 네트워크에 저장할 수 있는데요, ‘여기서 체인코드는 거래 조건등 비즈니스 로직을 개발해서 블록체인 네트워크에 디플로이해야하는 컴포넌트입니다’, 블록체인에 데이터를 쓰기위한 인터페이스는 PUT_STATE, GET_STATE, DEL_STATE만 열려있습니다. SQL문으로 굳이 매핑 시킨다면 다음과 같습니다.
 
PUT_STATE : INSERT, UPDATE
 
GET_STATE : SELECT
 
DEL_STATE : DELETE
 
위의 인터페이스를 통해 원장을 쓰게되면 블록체인의 엔진은 알아서 메카니즘에 따라 데이터를 저장합니다.
 
원장에 대한 얘기를 안 하고 넘어갈 수가 없겠는데요, 블록체인이 변조가 힘든 환경을 제공하는 이유는 저장하고 관리해야하는 데이터가 원장이라고 불리는 중요 데이터이기 때문입니다.
 
원장은 자산의 거래 정보라고 정의를 할 수 있습니다. 여기에서 자산은 집, 자동차와 같이 유형이나 증권,특허와 같이 무형 모두를 통칭하고 있습니다. 그리고 거래 정보라는것은 소유권의 이전 정보와 소유권을 이전하기 위한 조건들을 포함하여 표현하고 있습니다.
 
, 원장은 유형, 무형의 자산의 소유권 이전과 이전을 위한 조건(계약정보) 들을 포함하는 정보라고 할 수 있습니다.
 
대표적인 예로 은행의 계정계(Core Banking System)가 원장 시스템으로 볼 수 있습니다.
 
블록체인은 분산 원장 기술”, “공유 원장 시스템”, “분산 데이터베이스 기술등의 용어로 부르기도 합니다.
 
아래 그림과 같이 하나의 제품이 제조되어서 최종 사용자가 사용하기까지의 흐름을 보면 많은 회사들이 관계되어 있습니다. 그리고 각 회사들은 별도로 시스템을 구축하여 제품 생산과 관련한 활동을 합니다.
 
만약, 이 회사들이 비즈니스와 연결되어 업무 시스템을 연계한다고 생각해보면, 연계가 필요한 회사의 수 만큼 연계를 위한 작업을 해야하고 관계되는 회사가 많을수록 복잡한 시스템이 될 것입니다. 이런 환경은 유지보수에도 많은 노력이 들어갈 것임은 자명합니다.
 
그럼, 이 비즈니스 네트워크에서 발생되는 중요한 데이터 및 관련 시스템을 하나의 시스템으로 통합해서 중앙집중적으로 관리하면 어떻게 될까요?
 
위의 이미지에서 처럼 여러회사가 관련되어 있는 비즈니스 네트워크에서 특정 회사가 중앙집중적으로 시스템을 관리를 한다고 가정하면 신뢰의 문제가 발생합니다. 과연 그 회사를 신뢰하여 시스템을 맡길수 있을까요?

댓글

이 블로그의 인기 게시물

3D프린팅 내부채움 큐라 기본 설정값 알아보기

http://yhy868700.tistory.com/admin/entry/post/?id=139 Infill( 내부 채움 ), Layer height( 레이어높이 ), Shell Thickness( 외벽두께 ) 에 대한 이해 http://actlab.hmandoo.co.kr/bbs/study/8114 URL COPY Infill( 내부 채움 ), Layer height( 레이어높이 ), Shell Thickness( 외벽두께 ) 에 대한 이해 오늘은 데스크톱  3D 프린팅의 출력 조건 중 가장 기본이면서 ,  가장 중요한 패러미터 값들인  Infill, Layer Height, Shell Thickness 가 무슨 의미인지 ,  어떻게 값을 조정하는 것이 좋은지 살펴보도록 하겠습니다 . 대부분의 슬라이싱 프로그램에서는 용어는 약간씩 다르지만 ,  위 세 가지의 값들에 대해 지정할 수 있도록 되어있습니다 . 그럼 , 몇가지  장비의 소프트웨어를 보겠습니다 . 먼저 얼티메이커 (Ultimaker) 가 만든 오픈소스 슬라이싱 소프트웨어인 큐라 (CURA) 입니다 . 위 그림에서 보시는 것처럼 큐라에서는  Quality( 품질 ) 의 세부항목으로  Layer Height ( 레이어높이 ), Shell Thickness( 외벽두께 ) 의 값을 사용자가 설정하도록 되어있습니다 .  그리고  Fill density ( 채움 밀도 ) 라는 이름으로 내부 채움 값을 지정할 수 있도록 되어있습니다 . 다음으로 ,  조트랙스 (Zortrax) 의 전용 프로그램인  Z-Suite 입니다 . 조트랙스는 대표적인  Plug & Play  타입  3D 프린터입니다 . 몇 가지 값들만 선택해서 바로 프린트할 수 있도록 만들어져있어 유저가 마음대로 조정할 수 있는 조...

안드로이드 스튜디오란 무엇인가요?

1. 안드로이드 스튜디오란 무엇인가요? Android Studio는 Android의 공식 IDE입니다. Android용으로 제작되어 개발을 가속화하고 모든 Android 기기용으로 최고급 앱을 빌드하도록 도와줍니다. 또한 풍부한 코드 편집, 디버깅, 테스트 및 프로파일링 도구를 비롯한 맞춤형 도구를 Android 개발자에게 제공합니다.  https://developer.android.com/studio/features.html 안드로이드  플랫폼 • 1.0(Apple Pie) : API-1 • 1.1(Banana Bread) : API-2 • 1.5( CupCake ) : API-3 • 1.6(Donut) : API-4 • 2.0(Eclair) : API-5 • 2.1(Eclair) : API-6,7 • 2.2( Froyo ) : API-8 • 2.3(Ginger Bread) : API-9,10 3.0( HoneyComb ) : API-11 3.x( HoneyComb ) : API-12,13 4.0( Icecream  Sandwich) : API-14,15 4.1(Jelly Bean) : API-16 4.x(Jelly Bean) : API-17,18 4.4( Kitkat ) : API-19,20 5.0(Lollipop) :  API-21, 22 6.0(Marshmallow) : API-23 1) 개발환경 구축   •  JDK  설치:  Java Developer Kit    > JDK를 설치하는 이유 링크 참조     https://docs.google.com/document/d/15HcEdbc8eXr4YPGvp3h87uZNsWZ4H5j_rxuNeKm35zU/edit?usp=sharing ...