infrablockchain-docs
ko
ko
  • 인프라블록체인
    • 배우기
      • 아키텍처
        • 아키텍처
        • 네트워크 참여자
        • 파라체인
          • 시스템 파라체인
      • 프로토콜
        • 시스템 토큰
        • 트랜잭션 수수료
        • Proof of Transaction
      • Substrate
        • 배우기
          • 기초 지식
            • 암호학
            • 블록체인 기본 개념
            • 합의
            • 네트워크와 노드
            • 트랜잭션과 블록 기본 사항
            • 트랜잭션 수명주기
            • 오프체인 작업
            • 라이트 클라이언트
            • Substrate를 위한 Rust
            • 라이브러리 소개
            • 아키텍처와 Rust 라이브러리
            • 파일 구조
            • 계정, 주소 및 키
            • 트랜잭션 형식
            • 난수 생성
          • 프레임
            • FRAME 팔레트
            • FRAME 매크로
            • 커스텀 팔레트
            • 팔레트 커플링
            • Origin
            • 이벤트와 에러
            • 런타임 스토리지 구조
            • 상태 전이와 스토리지
            • SCALE 인코딩
            • 트랜잭션, Weight 및 수수료
            • 런타임 API
            • 런타임 업그레이드
            • 런타임 개발
          • 계정 데이터 구조
          • 주소 형식
          • 용어집
          • cli
            • 아카이브
            • 메모리 프로파일러
            • 노드 템플릿
            • 사이드카
            • srtool
            • 서브키
            • subxt
            • try-runtime
            • tx-wrapper
          • 런타임 개발
            • 기본
              • Genesis 상태 구성하기
              • 런타임 상수 구성
              • 체인 스펙을 커스텀하기
              • 팔레트 가져오기
              • 도우미 함수 사용하기
            • 합의 모델
              • 작업 증명을 사용하는 체인 구성
              • 하이브리드 노드 생성하기
            • 오프체인 워커
              • 오프체인 HTTP 요청하기
              • 오프체인 인덱싱
              • 오프체인 로컬 스토리지
            • 팔레트 설계
              • 크라우드펀딩 구성하기
              • 스토리지 구조체 (struct) 생성하기
              • 잠금 가능한 통화 구현
              • 무작위성 적용하기
              • 느슨한 팔레트 결합 사용하기
              • 타이트한 팔레트 결합 사용하기
            • 파라체인 개발
              • HRMP 채널 추가하기
              • 로컬 파라체인 노드 추가하기
              • 릴레이 체인에 연결하기
              • 솔로 체인을 변환하기
              • 론칭 준비
              • 콜레이터 선택
              • 파라체인 업그레이드
            • 스토리지 마이그레이션
              • 기본 저장소 마이그레이션
              • 스토리지 마이그레이션 트리거
            • 테스트
              • 기본 테스트 설정하기
              • 전송 함수 테스트하기
            • 도구
              • 체인을 위한 txwrapper 생성
              • REST 엔드포인트를 사용하여 체인 데이터 가져오기
              • try-runtime 사용하기
              • Wasm 바이너리 검증하기
            • 가중치
              • 벤치마크 추가
              • 수수료 계산하기
              • 조건부 가중치 사용
              • 사용자 정의 가중치 사용하기
        • 빌드하기
          • 제작할 것을 결정하세요
          • 빌드 프로세스
          • 결정론적 런타임 빌드
          • 체인 스펙
          • Genesis 구성
          • 애플리케이션 개발
          • RPC
          • 문제 해결
        • 튜토리얼
          • 설치하기
            • 개발자 도구
            • 리눅스 개발 환경
            • macOS 개발 환경
            • Rust 툴체인
            • Rust 문제 해결 방법
            • Windows 개발 환경
          • 빠른 시작
            • 코드 탐색하기
            • 런타임 수정하기
            • 노드 시작하기
            • Substrate 한눈에 보기
          • 블록체인 구축
            • 신뢰할 수 있는 노드 추가
            • 특정 노드 승인
            • 로컬 블록체인 구축하기
            • 네트워크 시뮬레이션
            • 실행 중인 네트워크 업그레이드
          • 애플리케이션 로직 구축
            • 런타임에 팔레트 추가하기
            • 오프체인 워커 추가
            • 사용자 정의 팔레트 게시
            • 함수 호출의 출처 지정하기
            • 사용자 정의 팔레트에서 매크로 사용하기
          • 유용한 도구들
            • EVM 계정에 접근하기
            • 이더리움 통합
            • 사이드카 엔드포인트 탐색하기
            • 경량 클라이언트 노드 통합
          • 스마트 컨트랙트
            • 스마트 컨트랙트
            • 토큰 계약 작성하기
            • 스마트 컨트랙트 개발하기
            • 첫 번째 계약 준비하기
            • 스마트 컨트랙트 문제 해결
            • 값 저장을 위한 맵 사용
      • XCM
        • XCM
        • XCM 형식
    • 서비스 체인
      • 인프라DID
      • 인프라EVM
      • URAuth(Universal Resource Auth)
    • 데브 옵스
      • 체인 빌드
      • 배포
      • 모니터링
    • 튜토리얼
      • 기초
        • 시스템 토큰 관리 프로세스
        • 시스템 토큰을 트랜잭션 수수료로 사용해보기
        • 트랜잭션에 투표 포함 시키기
        • 밸리데이터 보상 받기
      • 구축하기
        • 인프라릴레이체인 구축하기
        • 파라체인 구축하기
        • 메시지 전달 채널 열기
        • XCM을 이용하여 토큰 전송하기
        • Asynchronous Backing 적용하기
      • 테스트
        • 벤치마크
        • 런타임 확인
        • 디버그
        • 테스트 네트워크에서 파라체인 시뮬레이션하기
        • 단위 테스트
      • 서비스체인
        • 인프라DID
          • 구축하기
          • 공개키 추가하기
          • 서비스 엔드포인트 등록하기
          • DID 생성하기
        • 인프라EVM
          • 구축하기
          • EVM에 자금 입금 및 인출하기
          • ERC20 토큰 컨트랙트 배포하기
          • ERC721 토큰 컨트랙트 배포하기
          • ERC1155 토큰 컨트랙트 배포하기
  • 뉴날 데이터 마켓
Powered by GitBook
On this page
  • Blockspace
  • 인프라릴레이체인(InfraRelayChain)
  • 파라체인(Parachain)
  • 공유된 보안(Shared Security)
  • 파라체인 프로토콜(Parachain Protocol)
  • 다음 단계로 넘어가기
  1. 인프라블록체인
  2. 배우기
  3. 아키텍처

아키텍처

멀티체인 아키텍처에 대한 전반적인 내용을 다룹니다.

Previous아키텍처Next네트워크 참여자

Last updated 1 year ago

Blockspace

Blockspace 는 블록이 확정되고 실행될 수 있는 추상적인 공간입니다. 탈중앙화된 시스템을 이루기 위해서 반드시 필요한 개념이며 블록체인의 존재이기도 합니다. 블록체인을 이용하는 애플리케이션 측면에서는 멈추지 않는 애플리케이션을 가능하게 합니다.

이더리움은 Blockspace를 제공한 최초의 블록체인입니다. 가상머신과 블록체인 리소스를 사용한만큼 책정되는 가스 미터링 개념을 도입하여 Blockspace 안에서 하나의 블록이 가용할 수 있는 자원을 한정 시키고 블록을 실행 시킵니다. 이를 기반으로 Blockspace를 활용한 여러 블록체인 프로토콜(e.g. 폴카닷, 솔라나 등) 이 생겨났고 각각의 고유의 기능을 가지고 있습니다.

Blockspace 는 현대 컴퓨터의 CPU 처럼 서로 다른 블록체인(e.g. 인프라블록체인 혹은 스마트 컨트랙트)로 부터 생성되는 여러 블록들을 다중 스레드 방식 처럼 병렬적으로 실행시킵니다. 이것의 핵심은 한 코어당 한 개의 블록을 실행시킬 수 있는 실행 코어(Execution Core) 입니다.(현재 Polkadot은 하나의 코어를 여러 개로 분할하는 Agile Core Time 개발 중) 인프라블록체인 에서의 밸리데이터들은 공유된 보안(shared security) 을 이루며 Blockspace 를 제공할 뿐만 아니라, 동일한 품질의 Blockspace를 제공하는 서비스 제공자 역할을 수행합니다.

기관 및 공공기관을 위한 엔터프라이즈 블록체인인 인프라블록체인(InfraBlockchain) 은 안전한 Blockspace를 제공하는 것이 핵심이며, 이것을 위한 Blockspace 할당 메커니즘이 존재합니다.

인프라릴레이체인(InfraRelayChain)

인프라릴레이체인 은 인프라블록체인 의 중심으로써, 서로 다른 블록체인 간 상호 운용성(interoperablitiy)을 통한 확장성(scalability)과 공유된 보안을 통한 안정성(security)에 집중한 블록체인 네트워크입니다. 인프라릴레이체인의 가장 큰 역할은 서로 다른 블록체인이 유기적으로 연결될 수 있도록 하는 것입니다. 따라서 스마트 컨트랙트를 실행하거나 토큰 전송 같은 기본적인 기능들은 파라체인에 위임하여 가장 최소한의 기능(e.g. 파라체인 블록 검증)으로 동작할 수 있습니다.

파라체인(Parachain)

파라체인(Parachain) 은 특정 서비스(e.g. DID, STO, 등)에 특화된 블록체인으로써 릴레이체인에 "병렬적(parallel)"인 "체인(chain)" 에서 이름이 유래되었습니다. 파라체인의 일반적인 형태는 블록체인이지만 그 형태가 꼭 블록체인일 필요는 없습니다(e.g. 스마트 컨트랙트). 파라체인은 다음과 같은 특징을 갖고 있습니다:

  • 상태 전이 기계(State Transition Machine): 파라체인은 각각의 상태를 가지고 있는 결정적인(deterministic) 상태 기계입니다.

  • 콜레이터(Collator): 콜레이터는 파라체인의 여러 트랜잭션들을 모아 블록을 만들고 릴레이체인 노드에 전달하는 노드입니다. 콜레이터는 파라체인의 풀노드이면서 릴레이체인의 라이트 노드 역할을 수행합니다.

파라체인 상태 전이

각각의 파라체인은 상태를 변경할 수 있는 고유의 로직인 상태 전이 함수(State Transition Function) 을 갖고 있습니다. 이러한 상태 전이 함수는 실행 가능한 웹어셈블리(WASM) 형태로 인프라릴레이체인 에 저장됩니다. 이렇기 때문에, 릴레이체인에 연결된 모든 파라체인은 릴레이체인 밸리데이터에 의해 검증받게 됩니다.

Proof-of-Validity(PoV)

파라체인은 모든 상태 변화를 블록의 형태로 만들고 정상적으로 상태 변화를 했다는 proof 인 Proof-of-Validity(PoV) 라고 하는 특수한 블록을 전달합니다. 릴레이 체인 밸리데이터는 해당 PoV를 릴레이 체인에 저장되어있는 각각의 파라체인 상태 전이 함수를 이용하여 블록을 실행한 후 나온 최종값과 파라체인이 전달한 값을 비교하여 검증합니다. 현재 인프라릴레이체인 이 전달받을 수 있는 PoV 최대 크기는 5MB입니다.

#[derive(codec::Encode, codec::Decode, Clone)]
pub struct ParachainBlockData<B: BlockT> {
	/// The header of the parachain block.
	header: B::Header,
	/// The extrinsics of the parachain block.
	extrinsics: sp_std::vec::Vec<B::Extrinsic>,
	/// The data that is required to emulate the storage accesses executed by all extrinsics.
	storage_proof: sp_trie::CompactProof,
}

type BlockData = Vec<u8>;
pub struct PoV(BlockData);

// Create PoV
let pov = parachain_block_data.encode();

header

파라체인 블록의 헤더

extrinsics

파라체인 블록의 상태 전이 함수

storage_proof

상태 전이 시 변경되었던 스토리지 목록

공유된 보안(Shared Security)

파라체인이 되었을 때 가장 큰 이점은 공유된 보안(Shared Security) 입니다. 각각의 파라체인은 독립적으로 밸리데이터를 구성할 필요 없이 릴레이체인 밸리데이터에 의해 블록 생성과 확정에 대한 안전을 보장받을 수 있습니다. 이로 인해 파라체인은 이러한 민감한 요소들을 신경 쓰지 않고 각 서비스에 맞는 비즈니스 로직에만 신경 쓸 수 있습니다.

파라체인 프로토콜(Parachain Protocol)

파라체인 프로토콜의 목표는 파라체인 블록 생성부터 릴레이체인에 포함(Inclusion) 및 승인(Approval)될 때까지 프로세스를 반복적으로 병렬 수행하는 것입니다. 이 프로토콜은 강력한 보안을 유지하는 동시에 파라체인이 효율적으로 운영될 수 있도록 합니다.

파라체인 프로토콜의 역할은 다음과 같이 구분됩니다:

  • 밸리데이터(Validator): 밸리데이터의 역할은 파라체인으로부터 받은 PoV를 검증하고 일정 기간 동안의 가용성(Availability)를 보장하는 역할을 수행합니다.

  • 콜레이터(Collator): PoV를 생성하고 밸리데이터에게 전달하는 역할을 수행합니다.

파라체인 프로토콜은 크게 2단계로 구분됩니다:

  • 포함 파이프라인(Inclusion Pipeline) : 1) 콜레이터들이 보낸 블록들을 2) 밸리데이터들이 검증한 후 3) 정족수 이상의 유효성을 받으면 해당 블록을 4) 지지(backed) 하고 릴레이체인에 5) 포함(included) 시키는 단계입니다. 하지만 아직 완전히 승인된 것은 아닌 단계(pending approval)입니다.

  • 승인 과정(Approval Process): 포함 단계에 참여하지 않은 랜덤으로 선택된 릴레이체인 밸리데이터에 의해 검증받은 후 해당 파라체인 블록을 최종적으로 승인(approved)하는 단계입니다.

다음 단계로 넘어가기

Blockspace over Blockchains