Offcanvas

How To / 개발자 / 블록체인 / 애플리케이션

기업 블록체인 개발을 쉽게··· 베스트 툴킷 10선

2019.05.22 Peter Wayner  |  InfoWorld
블록체인에 대한 흥분과 에너지 가운데 상당 부분은 암호화폐 및 이 암호화폐의 가치 급등과 급락에 초점이 맞춰졌었다. 그리고 기업들은 대부분 한 발 물러나 쇼를 즐기면서 관망하고 있었다.

그런데 양상이 바뀌고 있다. 기업들이 블록체인이라는 거센 물결에 발을 담그기 시작했다. 일부는 암호화폐를 달러나 유로 같은 진짜 통화로 수용하기 원한다. 또 다른 일부는 블록체인이 제공하는 탄탄한 ‘역량’에 더 큰 관심을 갖고 있다. 이들은 하드코어 ‘수학과 과학’으로 내부 프랙티스를 강화하기 원한다. 이런 기업과 고객들은 엄격한 검증이 완료된 메카니즘이 제공하는 ‘보증’이라는 혜택을 누리고 싶어한다.

그러나 신중하고 보수적인 기업 세계와 거칠고 모험이 가득한 블록체인이라는 세계를 연결하기란 대단히 어렵다. 암호화폐를 피하고 트랜젝션(거래) 추적 및 인증이라는 확실한 기능만 고수하는 경우에도, ‘암호화 기반’을 올바르게 구현하기란 까다롭다. 맞춤형, 오리지널 코드로 처리할 수 있는 일이 아니다. 

대부분의 오랜 테스트와 열정적인 사용자 커뮤니티 덕분에 오류가 많지 않은 잘 확립된 라이브러리를 이용하는 것이 더 낫다. 기업이 블록체인을 수용하는 방식에 맞춰 블록체인 스택에 적합한 라이브러리를 검토하는 접근이 권장된다. 

가령 블록체인을 계약이나 약정 사실 유무의 소스로 사용하고 싶다면 새로 출현하고 있는 여러 체인과 호환되는 라이브러리가 필요할 것이다. 여러 다양한 통화와 연결시키고 싶다면 여러 거래소와의 연결고리를 구현해야 한다.

블록체인을 엔터프라이즈 소프트웨어와 통합하는 토대가 될 수 있는 흥미로운 10가지 라이브러리를 소개한다.

빅체인DB(BigChainDB)
데이터베이스와 블록체인은 모두 정보를 저장한다는 공통점은 지닌다. 일부는 두 기술 사이의 차이점을 강조하기도 한다. 

그러나 빅체인DB 개발측은 블록체인의 ‘불변성’을 갖고 있는 분산형 데이터베이스를 구현, 두 개념을 통합하는 시도를 하고 있다. 이 시스템은 몽고DB의 쿼리 언어에 응답하며, 여러 불변 레코드와 자산 종류를 강화하는 복잡한 (승인)권한 아키텍처를 제공한다. 커뮤니티 버전은 오픈소스 라이선스로 이용할 수 있다. 또는 개발사와 계약해 컨설팅 및 프로덕션 지원을 받을 수도 있다.

비트코인 코어(Bitcoin Core)
비트코인 프로토콜은 분산화에 초점을 두고 만들어졌다. 비트코인을 깊이 다루기 원하는 개발자라면 체인에 새 블록체인을 추가하는 합의 구축 프로세스를 완전히 지원하는 ‘풀 노드’를 운영하고 싶을 것이다. 비트코인 코어는 이 소프트웨어의 한정 참조(Definitive Reference) 버전이다. 

한편 B코인(Bcoin)이라는 것도 있다. 마이닝 및 트랜젝션에 참여하기 원하는 Node.js 사용자를 위한 자바스크립트 라이브러리이다. 또 이러한 포크를 이용하기 원하는 사람들을 위한 B코인 캐시(Bcoin Cash)가 있다. 트랜젝션에 대해 적극적으로 조사하고 있다면 Bcoin 팀의 BPanel 라이브러리를 BSM로 사용할 수 있다. BMS는 워드프레스와 드루팔 같은 콘텐츠 관리 시스템에 있는 표준 기능 일체를 지원하는 비트코인 관리 시스템이다.

코인베이스(Coinbase)
암호화폐를 다룰 필요가 있는 사람 가운데 다수는 트랜젝션 참여가 쉽기를 바란다. 아마 다른 사람이 그 일을 대신해주면 좋아할 것이다. 가장 규모가 크고 자본력이 튼튼한 거래소 중 하나가 코인베이스(Coinbase)인데. 이 회사는 트랜젝션 처리를 원하는 사람들을 위해 API 또한 제공하고 있다. 

현재 루비, PHP, Node용 코인베이스 라이브러리를 이용 수 있다. 지갑(월렛)을 유지관리하고, 역사적 가격을 추적하고, 비트코인과 비트코인 캐시, 라이트코인, 이더리움 이라는 4개 주요 암호화폐 플랫폼에서 트랜젝션을 개시할 수 있는 라이브러리이다.

코르다(Corda)
코르다는 금융 업계가 기여한 블록체인 관련 오픈소스 프로젝트이다. 금융 기관들은 이미 결제 업무를 위한 정교한 신뢰 계층을 제공하고 있기 때문에 은행을 대체하거나, 통화로서의 목적이 있는 프로젝트는 아니다. 기본 개념이 같고 일부만 다른 분산형 레저(원장)을 독자적으로 구현할 수 있는 라이브러리에 가깝다. 이를 통해 기업이나 개인은 스마트 컨트랙트를 구현하고, 자산의 소유권을 추적할 수 있다. 이 코드는 금융산업 정보 보다는 엔터프라이즈 유즈 케이스에 더 큰 초점이 맞춰져 있다.

임바크(Embark)
이더리움 블록체인을 대상으로 스마트 컨트랙트나 분산형 애플리케이션을 구현하려면 많은 조율과 조정을 해야 한다. 먼저 코드를 컴파일링 해야 한다. 그런 후 테스트를 하고, 최종적으로 네트워크에 배포해야 한다. 임바크는 코드 편집기, 웹 기반 사용자 인터페이스, 트랜젝션 탐색기, 기타 다양한 플러그인을 지원하는 도구 겸 라이브러리이다. 모두 이더리움용 IDE처럼 작동한다.

이더리움(Ethereum)
이더리움 플랫폼은 상대적으로 복잡하며, 실험에 개방적이다. 따라서 스마트 컨트랙트 생성을 원하는 개발자는 더 탄탄한 언어를 사용함으로써 이 블록체인에 기반을 둔 공유 신뢰 체계의 잠재력을 더 많이 실현시킬 수 있는 더 복잡한 계약 체계를 만들 수 있다. 

Go로 작성된 이더리움의 공식 참조 구현 체계는 기능이 많고, 웹을 통해 실행된다. 이더리움 네트워크에서 노드를 실행시키기 원하는 이는, 완전 참여(full participant), 옵저버(light), 라이브러리안(Archive)으로 구성된 시스템을 만들 수 있다. 이더리움에는 디지털 컨트랙트를 정의하는 코드 개발자용 도구가 다수 포함되어 있다. 실행에 사용되는 가산 머신 버전을 예로 들 수 있다.

특정 언어를 좋아하는 사람들도 이더리움을 코드를 직접 구현하거나, 구조 가운데 상당수를 가져온 이더리움 스택 버전을 찾을 수 있는 경우가 많다. 예를 들어, 파이이더리움(Pyethereum)은 파이썬(Python)을 사용해 이더리움 체인과 상호작용을 할 수 있는 명령줄 인터페이스를 갖춘 코드 라이브러리이다. 파이썬을 좋아하며, 자신의 스마트 컨트랙트를 구현하고 싶은 개발자는 파이쏘닉(Pythonic)으로 불리는 컨트랙트를 개발할 수 있는 ‘보안에 초점이 맞춰진 언어인 바이퍼(Vyper)를 탐구해 볼 수도 있다. 다른 언어를 위한 유사한 라이브러리들도 있다. 자바스크립트용 Web3.js, 닷넷용 엔이더리움(Nethereum) 를 예로 들 수 있다.

건(GUN)
건 도큐멘테이션에서는 블록체인이라는 단어를 찾기 힘들지만, 유사성이 많다. 공식적인 개념을 설명하면, GUN은 피어 네트워크에서 데이터를 동기화하는 완전히 분산된 도구이다. 단일 신뢰 소스 컨트롤을 가진 마스터가 없다. 또한 진짜 합의 프로토콜이 전혀 존재하지 않는다. 기존 블록체인과의 큰 차이점이다. 

그렇지만 GUN은 분산형 애플리케이션을 구축하는 좋은 토대가 되어준다. 네트워크의 정보 흐름이 빠르고 쉽기 때문이다. 따라서 중요한 정보를 잃어버리는 경우가 거의 없다. 알고리즘에 ‘사실에 대한 합의(Consensus over truth)’의 협상이 필요하지 않다면(각 구성원이 독립적인 소셜 네트워크에서 자주 그러는 것처럼), GUN 같은 도구는 증명 알고리즘에 시간과 비용을 추가 투자하지 않고도, 블록체인의 분산성이 구현하는 혜택 중 상당수를 제공할 수 있다.

하이퍼레저(Hyperledger)
블록체인 구현과 관련해 가장 규모가 큰 오픈소스 프로젝트 중 하나가 하이퍼레저(Hyperledger)이다. 이는 공유된 사실로 수렴되기 위한 광범위한 인프라를 지탱하는 데 사용되는 도구 및 프레임워크 모음이다. 동시에 진화하는 이들 도구는 모두 엔터프라이즈 내부의 독립적 구현을 지원하는 데 목적을 두고 있다. 

예를 들어, 그리드(Grid)는 공급업체 네트워크의 재료 및 결제 흐름을 추적하는 블록체인 구현에 목적을 두고 있다. 라이브러리 모음은 특정 제조업에 맞춤화 할 수 있는 사전 정의된 데이터 유형 및 형식 세트를 제공한다. 아이로라(Irora) 및 소투스(Sawtooth) 같은 하위 프로젝트 가운데 상당수는 모듈형으로 만들어져 있어, 개발자가 승인 권한 컨트롤과 합의 구축과 관련해 적절히 선택을 해서 혼합할 수 있다.

쿼럼(Quorum)
블록체인 데이터 가운데 상당수는 퍼블릭 성격을 갖고 있다. 이는 특징이면서 도전 과제였다. J.P. 모건 체이스가 만든 이더리움 포크인 쿼럼(Quorum)은 프라이버시와 더 효율적인 합의 수단을 위해 더 나은 옵션들을 섞는 실험이다. 기업 내부나 콘소시움 구성원간 구현하려는 프라이빗 블록체인이라면, 쿼럼을 사용함으로써 더 작고, 더 빠르고, 더 단순하지만 마이닝과 관련된 추가 비용 및 어려움 없이 공유 사실의 잠재력을 많이 실현시킬 수 있는 블록체인을 만들 수 있다.

예를 들어, 라프트(Raft)모델은 체인 콘텐츠에 대한 최종 결정을 내리고, 이러한 결정을 수용하는 노드를 지정하는 리더 노드를 지정한다. 분쟁이 없기 때문에, 밀리 초 단위로 트랜젝션이 완료된다. 이스탄불(Istanbul) 모델은 더 적은 신뢰로 더 정교한 네트워크를 구현할 수 있는 BFT(Byzantine Fault Tolerance)를 제공한다.

쿼럼은 또 프라이빗 트랜젝션을 만들고, 콘소시움의 다른 구성원으로부터 세부사항을 숨길 수 있는 승인 권한 기반의 메카니즘을 제공한다. 개별 노드가 퍼블릭 및 프라이빗 데이터에 대해 분리된 머클 트리(Merkle Tree) 를 유지, 서로 진화할 수 있도록 만든다.

트러플(Truffle)
작업에 최적화되어 있는 IDE를 사용하면 훨씬 더 쉽게 독자적인 스마트 컨트랙트를 만들 수 있다. 트러플(Truffle)은 이더리움 블록체인에서 가장 인기 있는 언어 중 하나인 솔리디티(Solidity)로 컨트랙트를 작성, 테스트, 배포할 수 있는 도구이다. 트러플 IDE는 코드 컴파일링은 물론, EthPM으로 관리되는 다양한 다른 이더리움 패키지와의 통합을 지원한다.

테스트는 가나슈(Ganache)라고 불리는 로컬 실행 프라이빗 이더리움 블록체인 버전을 사용, ‘클린 룸 환경'에서 시작된다. 블록체인 환경 내부의 행동을 테스트하기 위해 솔리디티로, 또는 컨트랙트가 외부와 어떤 식으로 상호작용하는지 시뮬레이션하기 위한 목적에서 자바스크립트/타입스크립트로 테스트를 구현할 수 있다.

트러플 프로젝트에는 드리즐(Drizzle)도 포함되어 있다. 이는 웹 애플리케이션에서 더 쉽게 프론트엔드를 더 쉽게 구현할 수 있는 리액트/리덕스(React/Redux) 데이터 관리 도구 모음이다.

*Peter Wayner는 인포월드 정기 기고가이자 16권을 서적을 집필한 저술가다. 주로 다루는 영역은 오픈소스, 자동화 자동차, 프라이버시, 디지털 트랜잭션 등이다. ciokr@idg.co.kr
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.