의견.png

"서브스트레이트"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
21번째 줄: 21번째 줄:
 
==== 외재적 ====
 
==== 외재적 ====
 
서브스트레이트의 외재성(Extrinsics)은 체인의 블록에 포함된 외부의 정보들이다. 외재성은 두개의 광범위한 범주로 나뉘는데, 하나는 거래이고 다른 하나는 내재적인 요소이다. 이 둘의 차이점은 트랜잭션이 네트워크에서 서명되고 라우팅되며 그 자체로 유용한 것으로 간주되는지에 여부이다. 이것은 [[비트코인]] 또는 [[이더리움]] 거래의 틀에 적합하다. 한편, 내재적인 요소는 네트워크를 통해 전달되지 않으며 서명되지 않는다. 서명을 증명하기 위해 어떤 것도 요구할 수 필요가 없는 데이터를 의미한다. 오히려 그것들은 단순하게 많은 수의 검증자들이 합리적이라고 동의했기 때문에 '''true'''라고 가정한다.<ref name="깃허브"></ref>
 
서브스트레이트의 외재성(Extrinsics)은 체인의 블록에 포함된 외부의 정보들이다. 외재성은 두개의 광범위한 범주로 나뉘는데, 하나는 거래이고 다른 하나는 내재적인 요소이다. 이 둘의 차이점은 트랜잭션이 네트워크에서 서명되고 라우팅되며 그 자체로 유용한 것으로 간주되는지에 여부이다. 이것은 [[비트코인]] 또는 [[이더리움]] 거래의 틀에 적합하다. 한편, 내재적인 요소는 네트워크를 통해 전달되지 않으며 서명되지 않는다. 서명을 증명하기 위해 어떤 것도 요구할 수 필요가 없는 데이터를 의미한다. 오히려 그것들은 단순하게 많은 수의 검증자들이 합리적이라고 동의했기 때문에 '''true'''라고 가정한다.<ref name="깃허브"></ref>
 +
 +
==== 런타임과 API ====
 +
서브스트레이트 체인은 런타임이 존재한다. 런타임(Runtime)은 진입점을 포함하는 웹어셈블리(WebAssembly) 블랍(Blob)이다. 일부 진입점은 서브스트레이트의 기본적인 요소이다. 왜냐하면 서브스트레이트 클라이언트의 기본 구현이 블랍 작성이 필요하기 때문이다.<ref name="깃허브"></ref>
 +
 +
사용자가 서브스트레이트로 체인을 개발하기 위해서 핵심 특성을 구현해야 한다. 이 핵심 특성은 런타임과 상호 작용하기 위해 필요한 최소 기능을 가진 API를 생성한다. 그에 따라 런타임 API특성을 구현하는 데 도움이'''impl_runtime_apis!'''이 제공된다. 모든 매개 변수와 반환 값은 암호화 및 해독이 가능하도록 패리티 코덱(parity-codec)을 구현해야 한다.<ref name="깃허브"></ref>
  
 
{{각주}}
 
{{각주}}

2019년 4월 24일 (수) 15:47 판

서브스트레이트(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)이다. 일부 진입점은 서브스트레이트의 기본적인 요소이다. 왜냐하면 서브스트레이트 클라이언트의 기본 구현이 블랍 작성이 필요하기 때문이다.[3]

사용자가 서브스트레이트로 체인을 개발하기 위해서 핵심 특성을 구현해야 한다. 이 핵심 특성은 런타임과 상호 작용하기 위해 필요한 최소 기능을 가진 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 3.4 paritytech,"substrate", github

참고자료

같이 보기


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

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