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
  • 블록체인 노드란?
  • 상태 전이와 충돌
  • 블록체인 경제
  • 블록체인 거버넌스
  • 블록체인에서 실행되는 애플리케이션
  • 다음 단계로 넘어가기
  1. 인프라블록체인
  2. 배우기
  3. Substrate
  4. 배우기
  5. 기초 지식

블록체인 기본 개념

블록체인의 일반적인 개념, 구성 요소 및 용어를 소개합니다.

Previous암호학Next합의

Last updated 1 year ago

블록체인은 정보를 블록의 연속으로 기록하는 탈중앙화된 원장입니다. 블록에 포함된 정보는 상태 변경을 일으킬 수 있는 명령어의 순서화된 집합입니다.

블록체인 네트워크에서 개별 컴퓨터인 노드들은 서로 통신하여 탈중앙화된 P2P(피어 투 피어) 네트워크를 형성합니다. 네트워크를 통제하는 중앙 관리 기관은 없으며, 일반적으로 블록 생성에 참여하는 각 노드는 대표적인 체인을 구성하는 블록들의 사본을 저장합니다.

대부분의 경우, 사용자는 파일의 소유자 변경 또는 계정 간 자금 이체와 같이 상태 변경을 일으킬 수 있는 요청을 제출하여 블록체인과 상호작용합니다. 이러한 트랜잭션 요청은 네트워크의 다른 노드들에게 전파되고, 블록 작성자에 의해 블록으로 조립됩니다. 체인의 데이터 보안과 체인의 지속적인 진행을 보장하기 위해, 노드들은 각 블록의 데이터 상태와 실행된 트랜잭션의 순서에 대해 합의하기 위해 어떤 형태의 합의를 사용합니다.

블록체인 노드란?

블록체인 노드는 다음과 같은 핵심 구성 요소를 필요로 합니다:

  • 트랜잭션으로 기록된 상태 변경을 위한 데이터 저장소

  • 노드 간 탈중앙화된 통신을 위한 P2P 네트워킹

  • 악의적인 활동으로부터 보호하고 체인의 지속적인 진행을 보장하기 위한 합의 방법론

  • 들어오는 트랜잭션의 순서와 처리를 위한 로직

  • 블록의 해시 다이제스트 생성 및 트랜잭션과 관련된 서명 생성 및 검증을 위한 암호화

블록체인의 핵심 구성 요소를 구축하는 데에는 복잡성이 따르기 때문에, 대부분의 블록체인 프로젝트는 모든 것을 처음부터 작성하는 대신 기존의 블록체인 코드 베이스의 완전한 사본으로 시작합니다. 예를 들어, 비트코인 저장소는 라이트코인, ZCash, Namecoin 및 비트코인 캐시를 만들기 위해 포크되었습니다. 마찬가지로, 이더리움 저장소는 Quorum, POA Network, KodakCoin 및 Musicoin을 만들기 위해 포크되었습니다.

하지만 대부분의 블록체인 플랫폼은 수정이나 사용자 정의를 허용하지 않도록 설계되어 있습니다. 결과적으로, 포크를 통해 새로운 블록체인을 구축하는 것은 확장성과 같은 제한 사항을 포함한 심각한 제한 사항을 가지고 있습니다. Substrate이 다른 블록체인 프로젝트와 관련된 많은 제한 사항을 완화하는 방법을 탐색하기 전에, 대부분의 블록체인이 공유하는 일반적인 특성들에 대해 이해하는 것이 중요합니다. 대부분의 블록체인이 어떻게 작동하는지 알아보면, Substrate이 여러분의 요구에 가장 적합한 블록체인을 구축하기 위한 대안과 기능을 제공하는 방법을 더 잘 이해할 수 있을 것입니다.

상태 전이와 충돌

블록체인은 본질적으로 입니다. 어떤 시점에서 블록체인은 현재 내부 상태를 가지고 있습니다. 들어오는 트랜잭션이 실행됨에 따라 상태가 변경되므로, 블록체인은 현재 상태에서 새로운 상태로 전이해야 합니다. 그러나 서로 다른 미래 상태로 이어질 수 있는 여러 가지 유효한 전이가 있을 수 있으며, 블록체인은 합의할 수 있는 단일 상태 전이를 선택해야 합니다. 전이 이후의 상태에 대해 합의하기 위해, 블록체인 내의 모든 작업은 결정론적이어야 합니다. 체인이 성공적으로 진행되려면, 대다수의 노드들이 체인에 포함될 초기 상태(제네시스 상태 또는 제네시스 블록)와 각 블록에 기록된 실행된 트랜잭션의 일련의 상태 전이, 그리고 체인에 포함될 최종 상태에 대해 합의해야 합니다.

중앙 집중화된 네트워크에서는 중앙 관리 기관이 상호 배타적인 상태 전이 사이에서 선택할 수 있습니다. 예를 들어, 주 서버는 상태 전이를 본인이 보는 순서대로 기록하거나, 충돌이 발생할 때 경쟁하는 대안들 사이에서 가중치 프로세스를 사용할 수 있습니다. 탈중앙화된 네트워크에서는 노드들은 트랜잭션을 서로 다른 순서로 볼 수 있으므로, 트랜잭션을 선택하고 상태 전이를 선택하기 위해 더 복잡한 방법을 사용해야 합니다.

블록체인이 트랜잭션을 블록으로 묶고 어떤 노드가 블록을 체인에 제출할 수 있는지 선택하는 방법을 블록체인의 합의 모델 또는 합의 알고리즘이라고 합니다. 가장 일반적으로 사용되는 합의 모델은 작업 증명 합의 모델입니다. 작업 증명 합의 모델에서는 계산 문제를 가장 먼저 완료한 노드가 블록을 체인에 제출할 권리를 가집니다.

블록체인이 내결함성(fault tolerant)을 가지고 악의적인 행위자나 네트워크 장애로부터 일관된 상태를 제공하기 위해서는, 일부 합의 모델은 최소한 3분의 2의 노드들이 항상 동의해야 한다는 요구사항을 가지고 있습니다. 이 3분의 2의 과반수는 네트워크 참여자들이 의도적이든 우연히든 나쁜 행동을 할 때에도 네트워크가 내결함성(fault tolerant)을 가지고 있을 수 있도록 보장합니다.

블록체인 경제

모든 블록체인은 작업을 수행하기 위해 프로세서, 메모리, 저장소 및 네트워크 대역폭과 같은 자원이 필요합니다. 네트워크에 참여하는 컴퓨터인 노드들은 이러한 자원을 블록체인 사용자에게 제공합니다. 노드들은 사용자들의 요구를 충족시키기 위해 분산된 탈중앙화된 네트워크를 생성합니다.

커뮤니티를 지원하고 블록체인을 지속 가능하게 만들기 위해, 대부분의 블록체인은 사용자들이 트랜잭션 수수료 형태로 사용하는 네트워크 자원에 대한 비용을 지불하도록 요구합니다. 트랜잭션 수수료의 지불은 사용자 신원이 어떤 형태의 자산을 보유하는 계정과 연관되어야 한다는 것을 의미합니다. 블록체인은 일반적으로 토큰을 사용하여 계정 내 자산의 가치를 나타냅니다. 네트워크 참여자들은 토큰을 거래소를 통해 체인 외부에서 구매할 수 있습니다. 네트워크 참여자들은 토큰을 예치하여 트랜잭션을 지불할 수 있도록 할 수 있습니다.

블록체인 거버넌스

일부 블록체인은 네트워크 운영이나 블록체인 커뮤니티에 영향을 미치는 제안을 네트워크 참여자들이 제출하고 투표할 수 있도록 합니다. 제안 및 투표를 통해 블록체인 커뮤니티는 블록체인이 본질적으로 민주적인 프로세스에서 어떻게 진화하는지 결정할 수 있습니다. 하지만 온체인 거버넌스는 비교적 드물며, 참여하려면 사용자들이 계정에 상당한 양의 토큰을 유지하거나 다른 사용자들을 대표하는 대표자로 선출되어야 할 수 있습니다.

블록체인에서 실행되는 애플리케이션

블록체인에서 실행되는 애플리케이션(분산 애플리케이션 또는 dApp이라고도 함)은 일반적으로 프론트엔드 프레임워크를 사용하여 작성된 웹 애플리케이션입니다. 그러나 블록체인 상태를 변경하기 위한 백엔드 스마트 컨트랙트를 사용합니다.

스마트 컨트랙트는 블록체인에서 실행되며, 특정 조건 하에서 사용자를 대신하여 트랜잭션을 실행하는 프로그램입니다. 개발자들은 스마트 컨트랙트를 작성하여 프로그래밍적으로 실행된 트랜잭션의 결과가 기록되고 조작될 수 없도록 할 수 있습니다. 하지만 스마트 컨트랙트만으로는 일부 기본적인 블록체인 기능(예: 합의, 저장소, 트랜잭션 레이어)에 액세스할 수 없으며, 대신 체인의 고정된 규칙과 제한 사항을 준수해야 합니다. 스마트 컨트랙트 개발자들은 이러한 제한 사항을 받아들여 더 적은 핵심 설계 결정을 내리는 대신 더 빠른 개발 시간을 가능하게 하는 트레이드오프로 받아들일 수 있습니다.

다음 단계로 넘어가기

모든 블록체인은 일부 공통적인 특성을 가지고 있습니다. Substrate은 블록체인을 구축하기 위한 모듈식 프레임워크로, 저장소, 합의 및 암호화와 같은 일반적인 블록체인 구성 요소를 가져와서 제공하는 커스텀 블록체인을 만들 수 있습니다. Substrate을 사용하면 이러한 기능들을 그대로 사용하거나 프로젝트의 목적에 맞게 수정하여 사용할 수 있습니다.

상태 머신
인프라블록체인 구축