의견.png

서브스트레이트

해시넷
dbwls5813 (토론 | 기여)님의 2019년 4월 24일 (수) 15:49 판
이동: 둘러보기, 검색

서브스트레이트(Substrate)은 디앱(DApp)에 최적화된 블록체인 개발을 지원하는 툴이다. 이더리움 공동 창립자 개빈 우드가 설립한 블록체인 스타트업 패리티 테크놀지스(Parity Technologies)가 러스트 프로그래밍 언어로 개발했다.[1] 사용자들은 내장된 응용 프로그램 프로그래밍 인터페이스(API)를 통해 자신들만의 매커니즘을 설계하거나 가장 기본적인 기존 알고리즘을 사용할 수 있다.[2]

개요

서브스트레이트는 블록체인을 설계할 때 유연성을 부여하기 위해 일반적인 수준에 맞춰 만들어진 도구이다. 2018년 10월 베를린에서 열린 웹3정상회의에서 처음으로 발표된 서브스트레이트는 패리티의 블록체인과 상호운용되는 폴카도트(Polkadot) 프로토콜과 통합되며, 웹 브라우저에서 자바스크립트(Javascript)을 실행할 수 있다.[2] 서브스트레이트에 포함된 API들은 사용자들이 자체 합의 메커니즘을 생성하거나 기존 알로리즘들을 활용할 수 있도록 제공하여 개발자가 모든 것을 알지 못하더라도 특화된 블록체인을 개발할 수 있도록 지원한다.[1]

특징

사용

서브스트레이트는 다음 세 가지 형태 중 하나로 사용하도록 설계되었다.

1. 트리비아 : 런타임을 포함하는 제네지스(genesis)블록으로 구성하여, 서브스트레이트를 구축하고, JSON 파일을 구성하고, 독자적인 블록체인을 실행한다. 이러한 부분을 통해서 개인 각각에 맞춘 서비스를 제공한다. 블록기간,수수료, 거버넌스와 같은 런타임 모듈을 다양하게 변경하여 초기 제네시스를 구성할 수 있다.

2. 모듈 : 서브스트레이트 런타임 모듈(Substrate Runtime Module) 라이브러리의 모듈을 함께 해킹하여 새 런타임으로 변환하고 서브스트레이트 클라이언트의 블록 작성 로직을 변경하거나 재구성한다. 이를 통해 블록 체인의 논리에 비해 데이터 유형을 변경하고, 모듈을 추가 또는 제거하며, 최종적인 모듈을 추가할 수 있다. 블록 인증 논리에 영향을 주지 않고도 많은 부분을 변경할 수 있다. 블록 작성 논리를 수정해야 할 경우 변경된 블록 작성 파일을 별도의 프로젝트로 작성하여 검증자가 사용해야 한다.

3. 제네릭 : 전체 서브스트레이트 런타임 모듈 라이브러리를 작동시키지 않고 전체 런타임을 처음부터 설계하고 구현할 수 있다. 원한다면, 러스트 이외의 언어로 가능하다. 기존 클라이언트의 블록 작성 논리와 호환되도록 런타임을 설정할 수 있는 경우 새로운 제네시스 블록을 작성하고 기존 러스트 기반 서브스트레이트 클라이언트와 체인을 시작할 수 있다. 그렇지 않은 경우에는 클라이언트의 블록 작성 논리를 그에 따라 변경해야 한다. 이는 현재 이부분이 불필요해 보이겠지만, 하위 기준 패러다임을 위한 장기적이고 광범위한 업그레이드 경로를 제공할 수 있는 유연성을 제공한다.[3]

기본 사항

서브스트레이트는 포괄적인 상태 전환 기능을 가진 블록체인 플랫폼으로서 기본 구조와 관련된 표준과 규약을 모두 제공한다.

Header := Parent + ExtrinsicsRoot + StorageRoot + Digest
Block := Header + Extrinsics + Justifications [3]

외재적

서브스트레이트의 외재성(Extrinsics)은 체인의 블록에 포함된 외부의 정보들이다. 외재성은 두개의 광범위한 범주로 나뉘는데, 하나는 거래이고 다른 하나는 내재적인 요소이다. 이 둘의 차이점은 트랜잭션이 네트워크에서 서명되고 라우팅되며 그 자체로 유용한 것으로 간주되는지에 여부이다. 이것은 비트코인 또는 이더리움 거래의 틀에 적합하다. 한편, 내재적인 요소는 네트워크를 통해 전달되지 않으며 서명되지 않는다. 서명을 증명하기 위해 어떤 것도 요구할 수 필요가 없는 데이터를 의미한다. 오히려 그것들은 단순하게 많은 수의 검증자들이 합리적이라고 동의했기 때문에 true라고 가정한다.[3]

런타임과 API

서브스트레이트 체인은 런타임이 존재한다. 런타임(Runtime)은 진입점을 포함하는 웹어셈블리(WebAssembly) 블랍(Blob)이다. 일부 진입점은 서브스트레이트의 기본적인 요소이며 서브스트레이트 클라이언트의 기본 구현에 따라 블랍 작성이 요구된다. 사용자가 서브스트레이트로 체인을 개발하기 위해서 핵심 특성을 구현해야 한다. 이 핵심 특성은 런타임과 상호 작용하기 위해 필요한 최소 기능을 가진 API를 생성한다. 그에 따라 런타임 API특성을 구현하는 데 도움이impl_runtime_apis!이 제공된다. 모든 매개 변수와 반환 값은 암호화 및 해독이 가능하도록 패리티 코덱(parity-codec)을 구현해야 한다.[3]

각주

  1. 1.0 1.1 황치규 기자, 〈DIY 블록체인 개발도구 서브스트레이트 뜬다〉, 《더비체인》, 2018-12-21
  2. 2.0 2.1 이세인 기자, 〈이더리움 소프트웨어 패리티, DIY 블록체인 툴 서브스트레이트 출시〉, 《블록포스트》, 2018-12-21
  3. 3.0 3.1 3.2 3.3 paritytech,"substrate", github

참고자료

같이 보기


  질문.png 이 문서는 로고가 필요합니다.  

  의견.png 이 서브스트레이트 문서는 블록체인 솔루션에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.