검수요청.png검수요청.png

하이퍼레저 소투스

위키원
이동: 둘러보기, 검색
하이퍼레저 소투스(Hyperledger Sawtooth)
하이퍼레저 소투스(Hyperledger Sawtooth)

하이퍼레저 소투스(Hyperledger Sawtooth)는 2017년 8월의 패브릭 1.0에 이어 등장한 리눅스 재단의 두 번째 하이퍼레저 프로젝트다. 하이퍼레저 소투스는 비즈니스 블록체인을 구축, 배포, 실행 작업을 돕도록 개발했다.[1] 하이퍼레저에 따르면 소투스 1.0에 기반한 블록체인 개념 증명 파일럿 프로젝트는 이미 여러 비즈니스 케이스에 배치돼 있다. 음악 및 미디어 콘텐츠 저작권 분배, 헬스케어 거래 기록, 금융 서비스 내 KYC(Know Your Customer) 등이다.[2]

개요

하이퍼레저 소투스는 50명이 넘는 소프트웨어 엔지니어가 참여해 개발하였다. 온체인 거버넌스와 같은 기능을 제공하도록 설계되었다. 온 체인 거버넌스는 권한이 부여된 사용자에게 누가 허락을 받았는지와 같은 블록 구성 설정에 투표할 수 있도록 구현하기 위해 자체 실행형 스마트 계약을 활용한다.[1]소투스는 블록 생성 및 검증을 가속하기 위해 트랜잭션을 병렬로 처리할 수 있는 고도의 트랜잭션 실행 엔진을 제공한다. 다른 주요 블록체인 플랫폼인 이더리움도 지원한다. 통합을 통해 이더리움 솔리디티 자바스크립트 기반 프로그래밍 언어를 기반으로 하는 스마트 계약을 실행할 수 있는데, 이를 통해 소투스는 IDE 및 Web3와 같은 이더리움 도구를 구동할 수 있다.[2] 이와 더불어 소투스 다이나믹 컨센서스(Sawtooth Dynamic Consensus)는 노드나 사용자 네트워크가 커지는 것에 맞춰 관리자가 블록체인 컨센서스 프로토콜을 즉각적으로 수정할 수 있게 해준다. 보다 확장성이 뛰어난 알고리즘이 등장하면 이를 통합할 수 있게 설계되어 있다.[3]

특징

분산 원장

블록체인(Blockchain)의 또 다른 말이기도 한 분산된 원장은 거래의 데이터베이스(원장)를 네트워크의 모든 참가자인 노드에 배포한다. 중앙 관리자나 중앙 집중식 데이터 스토리지가 없다. 다음과 같은 특징들은 블록체인 네트워크의 모든 참여자들 사이에서 신뢰를 제공하기 위해 함께 작용한다.

  • 분산 : 블록체인 데이터베이스는 신뢰할 수 없는 참여자들 간에 공유된다. 네트워크의 모든 노드들은 동일한 정보를 가진다.
  • 불변 : 블록체인 데이터베이스는 블록 해시를 사용하여 기록을 변경하려는 시도를 쉽게 탐지하고 방지할 수 있다. 그로 인해 악의적인 트랜잭션의 변경은 불가능하다.
  • 보안 : 모든 변경은 알려진 ID에 의해 서명된 트랜잭션에 의해 수행된다. [4]

소투스의 특징

애플리케이션 레벨과 코어 시스템 소투스 분리

애플리케이션 레벨과 코어 시스템 레벨 간의 명확한 분리를 제공함으로써 애플리케이션을 쉽게 개발하고 구축할 수 있다. 소투스는 애플리케이션 개발자들이 선택한 언어로 계약 논리를 작성할 수 있는 스마트 계약을 제공한다. 애플리케이션은 비즈니스 논리일 수도 있고 스마트 계약 가상 시스템일 수도 있다. 실제로 두 유형의 애플리케이션 모두 동일한 블록체인에서 공존할 수 있다. 소투스를 사용하면 트랜잭션 처리 계층에서 이러한 설계 결정을 내릴 수 있으며, 이를 통해 여러 유형의 애플리케이션블록체인 네트워크의 동일한 인스턴스에 존재할 수 있다.[5] 각 애플리케이션은 고유한 요구사항에 따라 사용자 지정 트랜잭션 프로세스를 정의한다. 소투스는 낮은 수준의 기능 및 성능 분석 및 블록 정보 저장과 같은 특정 애플리케이션의 모델 역할을 하는 여러 가지 예제 트랜잭션 패밀리를 제공한다. 트랜잭션 프로세서 SDK는 여러 언어로 제공되므로 자바스크립트(JavaScript), 파이썬(Python), Go, C++, 자바(Java) 및 러스트(Rust)를 비롯한 새로운 계약 언어 생성을 간소화할 수 있다. 제공된 REST API는 인증자 통신을 표준 HTTP/JSON에 적용하여 클라이언트 개발을 단순화한다.[5]

전용 네트워크

소투스는 허가된 프라이빗 네트워크의 과제를 해결하기 위해 구축되었다. 소투스 노드클러스터는 별도의 사용 권한으로 쉽게 배포할 수 있다. 트랜잭션 패턴이나 기타 기밀 정보를 유출할 수 있는 중앙 집중식 서비스가 아니다. 블록체인에는 역할 및 ID과 같은 사용 권한을 지정하는 설정이 저장되므로 네트워크의 모든 참가자가 이 정보에 액세스할 수 있다.[4]

병렬 트랜잭션

대부분의 블록체인은 네트워크의 각 노드에서 일관된 순서를 보장하기 위해 직렬 트랜잭션을 실행한다. 소투스에는 트랜잭션을 병렬로 분할하는 기능이 포함되어 있다. 소투스는 트랜잭션에 액세스하는 상태 위치에 따라 상황 변화를 유지하면서 트랜잭션 실행을 서로 분리한다. 트랜잭션을 병렬로 실행하는 동시에 이중 지출을 방지한다. 병렬 스케줄링은 순차적인 실행에 비해 향상된 성능을 제공한다.[5]

이벤트 시스템

하이퍼레저 소투스는 이벤트 생성 및 광고를 지원한다. 이를 통해 애플리케이션은 다음을 수행할 수 있다. 새 블록이 커밋되거나 새 포크로 전환되는 등 블록체인 관련 이벤트를 구독한다. 트랜잭션 패밀리에서 정의한 애플리케이션별 이벤트를 구독한다. 트랜잭션 시행에 대한 정보를 해당 데이터를 저장하지 않고 클라이언트에 다시 전달한다. 구독을 제출하고 ZMQ 소켓에서 서비스한다.[4]

이더리움 계약과 세트의 호환성

소투스-이더리움 통합 프로젝트인 세트(Seth)는 소투스 플랫폼의 상호 운용성을 이더리움으로 확장한다. EVM(Ethereum Virtual Machine) 스마트 계약은 소투스 트랜잭션 패밀리를 사용하여 배포할 수 있다. [5]

다이나믹 합의 알고리즘

블록체인에서, 합의는 상호 신뢰가 없는 참가자들 사이의 합의를 형성하는 과정이다. 임의의 결함과 일치하기 위한 알고리즘은 일반적으로 알려진 참가자 집합 사이에서 어떤 형태의 투표를 요구한다. 일반적인 접근방식으로는 어떤 형태로든 리더를 선출하는 나카모토식 합의 방식과 전통적인 BFT 알고리즘의 변형 등이 있다. 소투스는 합의의 핵심 개념을 추상화하고 합의와 트랜잭션 의미론을 분리한다. 이 인터페이스는 다양한 합의 구현을 지원한다. 보다 중요한 것은, 소투스가 동일한 블록체인에 대해 서로 다른 유형의 합의를 가능하게 한다는 것이다. 동의는 초기 네트워크 설정 중에 선택되며 실행 중인 블록체인에서 트랜잭션을 변경할 수 있다. [4]

소투스는 PoET(Proof of Elapsed Time,경과시간 증명)는 대규모 네트워크 집단을 지원할 수 있는 프로덕션 등급 프로토콜로 설계된 나카모토 스타일의 합의 알고리즘이다. PoET는 작업증명 알고리즘의 전력 소비 단점 없이 나카모토 스타일의 합의 알고리즘의 이점을 얻기 위해 보안 명령 실행을 사용한다. PoET 시뮬레이터는 가상화된 클라우드 환경을 비롯한 모든 유형의 하드웨어에 대한 PoET 스타일의 합의를 제공한다. [5]

샘플 트랜잭션 패밀리

소투스에선 데이터 모델(Data model)과 트랜잭션 언어(Transaction Language)는 트랜잭션 패밀리(Transaction family)에서 구현된다. 사용자가 커스텀 트랜잭션 패밀리를 빌드하는 동안 사용자 원장의 고유 요구사항이 트랜잭션 패밀리에 반영된다. 우리는 다수의 코어 트랜잭션 패밀리 모델을 제공한다.

  • Integerkey : 배포된 원장을 테스트하기 위해 사용된다.
  • 설정 : 체인 구성 설정을 저장하기 위한 참조 구현을 제공한다.
  • ID : 트랜잭터와 검증자 키에 대한 온 체인 사용 권한을 처리하여 공개 키 목록에 대한 ID 관리를 간소화 한다. [4]

추가 트랜잭션 패밀리는 특정 영역에 대한 모델을 제공한다.

  • Smallbank : 블록체인 시스템의 성능을 비교할 때 벤치마킹 및 성능 테스트를 위한 성능 분석을 처리한다. 이 트랜잭션 패밀리는 H-Store Smallbank 벤치마크에 기반을 둔다.
  • BlockInfo : 구성 가능한 수의 기록 블록에 대한 정보를 저장하는 방법을 제공한다. [4]

애플리케이션 실행

  • XO : Tic-tac-toe를 재생하여 기본 트랜잭션을 구성하는 방법을 시현한다. XO 트랜잭션 제품군에는 두 명의 참가자가 게임을 할 수 있는 xo 명령을 사용하여 트랜잭션 생성 및 처리가 포함된다.
  • 소투스 공급 체인 : 모든 자산의 출처 및 기타 상황 정보를 추적 할 수 있다. 공급 체인은 트랜잭션 프로세서, 사용자 정의 REST API 및 웹 애플리케이션과 함께 완벽한 예제 애플리케이션을 제공한다. 또한 애플리케이션은 브라우저 내 트랜잭션 서명을 위한 안전하고 분산된 솔루션을 보여주고 복잡한 쿼리의 경우 블록체인 상태를 로컬 데이터베이스와 동기화하는 방법을 보여준다.
  • 소투스 마켓플레이스 : 사용자가 특정 수량의 맞춤 자산을 블록체인의 다른 사용자와 교환 할 수 있다. 이 애플리케이션에는 소투스 유효성 검사기와 함께 소투스 블록체인을 실행하고 상호 작용할 수 있는 간단한 RESTful API를 제공하는 많은 구성 요소가 포함되어 있다.
  • 소투스 프라이빗 UTXO : 자산을 생성하고 거래할 수 있는 방법을 보여준다. SGX를 사용하여 자산을 장부와 개인 거래에서 양도 할 수 있는 방법을 보여준다. 여기서 거래 당사자들만 거래의 세부 사항을 알고 있다. [4]

애플리케이션 개발 시작

하이퍼레저 소투스 실행

소투스 문서는 소투스 기능을 실행하고 애플리케이션을 테스트하기 위해 로컬 유효성 검사기(local validator)를 성정하는 방법을 설명한다. 일단 실행하면 새 트랜잭션을 제출하고 소투스 REST API를 사용해서 블록체인의 블록 데이터와 결과 상태를 가져올 수 있다. 이 메소드는 포함된 예제 트랜잭션 제품군뿐만 아니라 직접 작성하는 트랜잭션 제품군에도 적용된다. 이 메소드는 포함된 예제 트랜잭션 제품군뿐만 아니라 직접 작성하는 트랜잭션 제품군에도 적용된다. [5]

커스텀 애플리케이션 개발

소투스에서 데이터 모델과 트랜잭션 언어는 트랜잭션 제품군에서 구현된다. 트랜잭션 패밀리(transaction family)는 상태를 수정하는 데 사용되는 비즈니스 규칙을 코드화하고 클라이언트 프로그램은 일반적으로 트랜잭션을 제출하고 상태를 표시한다. 제공된 핵심 트랜잭션 제품군을 모델로 사용하여 고유한 요구 사항을 반영하는 사용자 정의 트랜잭션 패밀리를 작성할 수 있다. 소투스는 REST API와 파이썬, 자바, 자바스크립트 등 다양한 언어를 지원하는 SDKs를 제공한다. 소투스 플랫폼의 상단에서 세트(Seth) 트랜잭션 제품군과 함께 사용하기 위해 솔리디티에 스마트 계약을 작성할 수 있다. [5]

각주

  1. 1.0 1.1 리눅스데이타시스템, 〈(CIO Korea)리눅스 재단, 기업용 블록체인 구축 모듈러 플랫폼 '소투스' 공개〉, 《네이버 블로그》, 2018-03-28
  2. 2.0 2.1 Lucas Mearian, 〈리눅스 재단, 기업용 블록체인 구축 모듈러 플랫폼 '소투스' 공개〉, 《CIO코리아》, 2018-01-31
  3. 단비펀드, 〈리눅스 재단, 기업용 블록체인 구축 모듈러 플랫폼 '소투스' 공개〉, 《네이버 블로그》, 2018-02-01
  4. 4.0 4.1 4.2 4.3 4.4 4.5 4.6 〈[공식 문서 사이트 – https://sawtooth.hyperledger.org/docs/core/releases/latest/introduction.html]〉
  5. 5.0 5.1 5.2 5.3 5.4 5.5 5.6 옥탑방의 일상로그, 〈Hyperledger Sawtooth에 대하여 알아보자(V.1.0.2)〉, 《티스토리》, 2018-04-10

참고자료

같이 보기


  검수요청.png검수요청.png 이 하이퍼레저 소투스 문서는 블록체인 플랫폼에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.