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
  • 밸리데이터
  • 파라-밸리데이터
  • 블록 생성자
  • 기타
  • Collator
  1. 인프라블록체인
  2. 배우기
  3. 아키텍처

네트워크 참여자

콜레이터와 밸리데이터의 역할에 대해 설명합니다.

Previous아키텍처Next파라체인

Last updated 1 year ago

멀티체인 기반 인프라블록체인 생태계에서 중요한 역할을 수행하는 참여자들을 소개합니다:

  • 밸리데이터: 블록을 생성하며 공유된 보안(shared security)을 형성하여 릴레이체인 및 파라체인을 보호하는 역할을 수행합니다.

  • 콜레이터: 파라체인 블록을 생성하여 밸리데이터에게 전달하는 역할을 수행합니다.

밸리데이터

파라-밸리데이터

개요

Candidate Receipt 예시

pub struct CandidateReceipt<H = Hash> {
	pub descriptor: CandidateDescriptor<H>,
	pub commitments_hash: Hash,
}

pub struct CandidateDescriptor<H = Hash> {
	pub para_id: Id,
	pub relay_parent: H,
	pub collator: CollatorId,
	pub persisted_validation_data_hash: Hash,
	pub pov_hash: Hash,
	pub erasure_root: Hash,
	pub signature: CollatorSignature,
	pub para_head: Hash,
	pub validation_code_hash: ValidationCodeHash,
}

파라-밸리데이터 선정

파라-밸리데이터 역할

파라-밸리데이터는 블록 후보에 대한 첫 번째 유효성 검증을 수행합니다. 충분한 서명이 포함된 유효성 검증을 받은 후보는 백킹 가능(backable)한 것으로 간주됩니다.

블록 생성자

다른 밸리데이터의 유효성을 기반으로 릴레이체인 블록을 생성하기 위해 합의 메커니즘에 참여하는 밸리데이터가 있습니다. 이러한 밸리데이터를 블록 생성자(Block Producer)라고 하며, 합의 엔진(e.g. BABE, Aura)에 의해 선택되며, 릴레이체인에 포함할 각 파라체인에 대해 최대 하나의 백킹 가능한(backable) 후보를 기록할 수 있습니다. 릴레이체인에 포함된 백킹 가능한 후보는 해당 릴레이체인 포크에서 백킹된 것으로 간주됩니다.

기타

파라체인 블록 가용성

밸리데이터는 또한 이른바 가용성 분산에 기여합니다. 실제로, 후보가 릴레이체인의 포크에서 백킹(backed)된 후에도 가용성이 보류(pending availability)되어 있으며, 파라체인의 일부로 완전히 포함되지 않습니다(임시적으로만 포함됨). 후보의 가용성에 관한 정보는 다음 릴레이체인 블록에 기록됩니다. 충분한 정보가 있는 경우에만 후보는 완전한 파라체인 블록 또는 파라블록(parablock)으로 간주됩니다.

파라체인 블록 승인

밸리데이터는 또한 이른바 승인 과정(approval) 에 참여합니다. 파라블록이 가용하고 파라체인의 일부로 간주되더라도, 여전히 승인 대기(pending approval) 상태입니다. 파라-밸리데이터는 모든 밸리데이터의 작은 하위 집합이기 때문에, 특정 파라체인에 할당된 대다수의 파라-밸리데이터가 부정직할 가능성이 있기 때문입니다.

보상

포크 선택(Fork Choice)

마지막으로, 밸리데이터는 GRANDPA 내에서 체인 선택 과정에 참여하여, 이용 가능하고 유효한 블록만이 최종화된 릴레이체인에 포함되도록 보장합니다.

Collator

콜레이터의 역할

콜레이터는 사용자로부터 파라체인에서 일어나는 모든 트랜잭션을 최대한 수집하고, 릴레이체인 밸리데이터를 위해 상태 전이(state transition) 증명(PoV)를 생성합니다. 정상적인 상황에서, 콜레이터는 트랜잭션을 수집하고 실행하여 블록 후보를 생성하고, 이를 PoV와 함께 파라체인 블록을 제안하는 하나 이상의 밸리데이터에게 제공합니다.

밸리데이터는 다음 순서대로 다음 조건을 성공적으로 확인해야 합니다:

  1. 파라체인 후보 블록이 검증 데이터의 어떤 매개변수도 초과하지 않아야 합니다.

  2. 콜레이터의 서명이 유효해야 합니다.

  3. 파라체인 런타임을 실행함으로써 파라체인 후보 블록을 검증합니다.

또한 콜레이터가 많을수록 더 좋다 또는 더 안전하다는 가정은 옳지 않습니다. 오히려 너무 많은 콜레이터는 네트워크를 느리게 할 수 있습니다. 콜레이터가 가진 유일한 악의적인 행동은 트랜잭션 검열입니다. 검열을 방지하기 위해 파라체인은 중립적인 콜레이터가 있는 것만 보장하면 되며, 반드시 다수가 필요한 것은 아닙니다. 이론적으로 검열 문제는 정직한 콜레이터가 한 명만 있어도 해결됩니다.

밸리데이터는 콜레이터로부터의 증명을 검증하며(), 다른 밸리데이터와의 합의에 참여함으로써 릴레이체인 및 파라체인을 보호합니다. 밸리데이터는 새로운 블록을 릴레이체인에 추가하는 중요한 역할을 담당하며(), 이를 통해 됩니다.

인프라블록체인(InfraBlockchain) 밸리데이터들은 를 통해 전체 네트워크의 안전을 보장하기 때문에 (e.g. 토큰 전송, 특정 팔렛의 트랜잭션 호출 등)를 주고 받을 수 있습니다. 밸리데이터는 각 파라체인이 고유한 규칙을 따르고, 신뢰할 수 있는 환경에서 파라체인 간에 메시지를 전달할 수 있도록 보장합니다.

파라-밸리데이터(Para-Validators) 는 가용 및 검증(Availability and Validity) 프로토콜의 파라체인 단계에 참여하며, 를 릴레이체인에 제출하여 블록 작성자가 파라체인 블록에 대한 정보를 가용 및 검증 과정을 거처 릴레이체인 블록에 포함시킬 수 있도록 합니다.

파라-밸리데이터는 그룹으로 작동하며, 런타임에 의해 매 에포크마다 릴레이체인에 연결된 모든 파라체인에 대한 파라체인 블록을 검증하기 위해 선택됩니다. 선택된 파라-밸리데이터는 (에포크당) 무작위로 선택된 중 하나로 검증에 참여하여 파라-밸리데이터 풀을 구성합니다.

파라-밸리데이터는 할당된 일련의 파라체인 블록에 포함된 정보가 유효한지를 검증합니다. 그들은 콜레이터로부터 파라체인 블록 후보(Candidate)와 그 유효성을 증명하는 를 함께 받습니다.

릴레이체인 블록에서 블록 생성자는 이전 릴레이체인 블록에서 상위 후보 데이터()를 가진 후보 파라체인 블록에 대해서만 포함합니다. 이는 파라체인이 유효한 체인을 따르도록 보장합니다. 또한, 블록 작성자는 청크를 가지고 있는 후보 파라체인 블록에 대해서만 포함합니다(가용성). 이는 시스템이 다음 라운드의 가용성 및 유효성 검사를 수행할 수 있도록 보장합니다.

따라서 시스템의 처리량을 저하시킬 가능성이 있는 더 많은 파라-밸리데이터를 할당하는 것을 피하기 위해 파라블록의 보조 검증을 실행하는 것이 필요합니다. 검증이 실패한다면, 파라-밸리데이터는 벌점을 받으며 밸리데이터 풀에서 제외됨으로써 부정행위를 억제합니다. 그러나 성과가 좋은 경우, 해당 밸리데이터는 활동에 대한 보상으로 법정 화폐 기반의 을 블록 보상(트랜잭션 수수료 포함)으로 받게 됩니다.

콜레이터는 다른 블록체인의 밸리데이터와 유사하지만, 인프라블록체인(InfraBlockchain) 밸리데이터들이 보안을 보장하고 있기 때문에 따로 보안에 대해 신경쓸 필요없이 을 구축할 수 있습니다. 파라체인 블록이 유효하지 않으면 밸리데이터에 의해 거부됩니다. 각 파라체인에 할당된 파라-밸리데이터는 제출된 후보들의 유효성을 확인한 다음, 다른 파라-밸리데이터에 대한 유효성을 수집하고 집계합니다. 이 과정을 백킹(candidate backing)이라고 합니다. 파라-밸리데이터는 신뢰할 수 없는 콜레이터로부터 연관된 PoV를 가진 임의의 수의 파라체인 블록 후보를 받습니다. 후보는 적어도 할당된 밸리데이터의 2/3가 해당 후보에 대한 유효성을 검증 받았을 때 백킹 가능(backable)한 것으로 간주됩니다.

해당 후보 블록이 릴레이체인 블록에 포함될 수 있도록 지정된 기준을 충족하는 경우, 선택된 릴레이체인 는 각 파라체인에 대해 백킹 가능한 후보(backable) 중 하나를 선택하여 릴레이체인 블록에 포함시킵니다(inclusion). 후보 블록이 백킹된 것(backed)으로 간주됩니다.

Candidate receipt
Proof-of-Validity(PoV)
시스템 토큰
서비스에 특화된 블록체인
인프라블록체인(InfraBlockchain) 밸리데이터
erasure-coding
Candidate Receipt
블록 생성자
XCM 을 활용하여 체인 간 메세지
파라-밸리데이터
블록 생성자
모든 파라체인 블록이 추가
공유된 보안(shared security)
네트워크 참여자