블록체인 기본 개념
블록체인의 일반적인 개념, 구성 요소 및 용어를 소개합니다.
블록체인은 정보를 블록의 연속으로 기록하는 탈중앙화된 원장입니다. 블록에 포함된 정보는 상태 변경을 일으킬 수 있는 명령어의 순서화된 집합입니다.
블록체인 네트워크에서 개별 컴퓨터인 노드들은 서로 통신하여 탈중앙화된 P2P(피어 투 피어) 네트워크를 형성합니다. 네트워크를 통제하는 중앙 관리 기관은 없으며, 일반적으로 블록 생성에 참여하는 각 노드는 대표적인 체인을 구성하는 블록들의 사본을 저장합니다.
대부분의 경우, 사용자는 파일의 소유자 변경 또는 계정 간 자금 이체와 같이 상태 변경을 일으킬 수 있는 요청을 제출하여 블록체인과 상호작용합니다. 이러한 트랜잭션 요청은 네트워크의 다른 노드들에게 전파되고, 블록 작성자에 의해 블록으로 조립됩니다. 체인의 데이터 보안과 체인의 지속적인 진행을 보장하기 위해, 노드들은 각 블록의 데이터 상태와 실행된 트랜잭션의 순서에 대해 합의하기 위해 어떤 형태의 합의를 사용합니다.
블록체인 노드란?
블록체인 노드는 다음과 같은 핵심 구성 요소를 필요로 합니다:
트랜잭션으로 기록된 상태 변경을 위한 데이터 저장소
노드 간 탈중앙화된 통신을 위한 P2P 네트워킹
악의적인 활동으로부터 보호하고 체인의 지속적인 진행을 보장하기 위한 합의 방법론
들어오는 트랜잭션의 순서와 처리를 위한 로직
블록의 해시 다이제스트 생성 및 트랜잭션과 관련된 서명 생성 및 검증을 위한 암호화
블록체인의 핵심 구성 요소를 구축하는 데에는 복잡성이 따르기 때문에, 대부분의 블록체인 프로젝트는 모든 것을 처음부터 작성하는 대신 기존의 블록체인 코드 베이스의 완전한 사본으로 시작합니다. 예를 들어, 비트코인 저장소는 라이트코인, ZCash, Namecoin 및 비트코인 캐시를 만들기 위해 포크되었습니다. 마찬가지로, 이더리움 저장소는 Quorum, POA Network, KodakCoin 및 Musicoin을 만들기 위해 포크되었습니다.
하지만 대부분의 블록체인 플랫폼은 수정이나 사용자 정의를 허용하지 않도록 설계되어 있습니다. 결과적으로, 포크를 통해 새로운 블록체인을 구축하는 것은 확장성과 같은 제한 사항을 포함한 심각한 제한 사항을 가지고 있습니다. Substrate이 다른 블록체인 프로젝트와 관련된 많은 제한 사항을 완화하는 방법을 탐색하기 전에, 대부분의 블록체인이 공유하는 일반적인 특성들에 대해 이해하는 것이 중요합니다. 대부분의 블록체인이 어떻게 작동하는지 알아보면, Substrate이 여러분의 요구에 가장 적합한 블록체인을 구축하기 위한 대안과 기능을 제공하는 방법을 더 잘 이해할 수 있을 것입니다.
상태 전이와 충돌
블록체인은 본질적으로 상태 머신입니다. 어떤 시점에서 블록체인은 현재 내부 상태를 가지고 있습니다. 들어오는 트랜잭션이 실행됨에 따라 상태가 변경되므로, 블록체인은 현재 상태에서 새로운 상태로 전이해야 합니다. 그러나 서로 다른 미래 상태로 이어질 수 있는 여러 가지 유효한 전이가 있을 수 있으며, 블록체인은 합의할 수 있는 단일 상태 전이를 선택해야 합니다. 전이 이후의 상태에 대해 합의하기 위해, 블록체인 내의 모든 작업은 결정론적이어야 합니다. 체인이 성공적으로 진행되려면, 대다수의 노드들이 체인에 포함될 초기 상태(제네시스 상태 또는 제네시스 블록)와 각 블록에 기록된 실행된 트랜잭션의 일련의 상태 전이, 그리고 체인에 포함될 최종 상태에 대해 합의해야 합니다.
중앙 집중화된 네트워크에서는 중앙 관리 기관이 상호 배타적인 상태 전이 사이에서 선택할 수 있습니다. 예를 들어, 주 서버는 상태 전이를 본인이 보는 순서대로 기록하거나, 충돌이 발생할 때 경쟁하는 대안들 사이에서 가중치 프로세스를 사용할 수 있습니다. 탈중앙화된 네트워크에서는 노드들은 트랜잭션을 서로 다른 순서로 볼 수 있으므로, 트랜잭션을 선택하고 상태 전이를 선택하기 위해 더 복잡한 방법을 사용해야 합니다.
블록체인이 트랜잭션을 블록으로 묶고 어떤 노드가 블록을 체인에 제출할 수 있는지 선택하는 방법을 블록체인의 합의 모델 또는 합의 알고리즘이라고 합니다. 가장 일반적으로 사용되는 합의 모델은 작업 증명 합의 모델입니다. 작업 증명 합의 모델에서는 계산 문제를 가장 먼저 완료한 노드가 블록을 체인에 제출할 권리를 가집니다.
블록체인이 내결함성(fault tolerant)을 가지고 악의적인 행위자나 네트워크 장애로부터 일관된 상태를 제공하기 위해서는, 일부 합의 모델은 최소한 3분의 2의 노드들이 항상 동의해야 한다는 요구사항을 가지고 있습니다. 이 3분의 2의 과반수는 네트워크 참여자들이 의도적이든 우연히든 나쁜 행동을 할 때에도 네트워크가 내결함성(fault tolerant)을 가지고 있을 수 있도록 보장합니다.
블록체인 경제
모든 블록체인은 작업을 수행하기 위해 프로세서, 메모리, 저장소 및 네트워크 대역폭과 같은 자원이 필요합니다. 네트워크에 참여하는 컴퓨터인 노드들은 이러한 자원을 블록체인 사용자에게 제공합니다. 노드들은 사용자들의 요구를 충족시키기 위해 분산된 탈중앙화된 네트워크를 생성합니다.
커뮤니티를 지원하고 블록체인을 지속 가능하게 만들기 위해, 대부분의 블록체인은 사용자들이 트랜잭션 수수료 형태로 사용하는 네트워크 자원에 대한 비용을 지불하도록 요구합니다. 트랜잭션 수수료의 지불은 사용자 신원이 어떤 형태의 자산을 보유하는 계정과 연관되어야 한다는 것을 의미합니다. 블록체인은 일반적으로 토큰을 사용하여 계정 내 자산의 가치를 나타냅니다. 네트워크 참여자들은 토큰을 거래소를 통해 체인 외부에서 구매할 수 있습니다. 네트워크 참여자들은 토큰을 예치하여 트랜잭션을 지불할 수 있도록 할 수 있습니다.
블록체인 거버넌스
일부 블록체인은 네트워크 운영이나 블록체인 커뮤니티에 영향을 미치는 제안을 네트워크 참여자들이 제출하고 투표할 수 있도록 합니다. 제안 및 투표를 통해 블록체인 커뮤니티는 블록체인이 본질적으로 민주적인 프로세스에서 어떻게 진화하는지 결정할 수 있습니다. 하지만 온체인 거버넌스는 비교적 드물며, 참여하려면 사용자들이 계정에 상당한 양의 토큰을 유지하거나 다른 사용자들을 대표하는 대표자로 선출되어야 할 수 있습니다.
블록체인에서 실행되는 애플리케이션
블록체인에서 실행되는 애플리케이션(분산 애플리케이션 또는 dApp이라고도 함)은 일반적으로 프론트엔드 프레임워크를 사용하여 작성된 웹 애플리케이션입니다. 그러나 블록체인 상태를 변경하기 위한 백엔드 스마트 컨트랙트를 사용합니다.
스마트 컨트랙트는 블록체인에서 실행되며, 특정 조건 하에서 사용자를 대신하여 트랜잭션을 실행하는 프로그램입니다. 개발자들은 스마트 컨트랙트를 작성하여 프로그래밍적으로 실행된 트랜잭션의 결과가 기록되고 조작될 수 없도록 할 수 있습니다. 하지만 스마트 컨트랙트만으로는 일부 기본적인 블록체인 기능(예: 합의, 저장소, 트랜잭션 레이어)에 액세스할 수 없으며, 대신 체인의 고정된 규칙과 제한 사항을 준수해야 합니다. 스마트 컨트랙트 개발자들은 이러한 제한 사항을 받아들여 더 적은 핵심 설계 결정을 내리는 대신 더 빠른 개발 시간을 가능하게 하는 트레이드오프로 받아들일 수 있습니다.
다음 단계로 넘어가기
모든 블록체인은 일부 공통적인 특성을 가지고 있습니다. Substrate은 블록체인을 구축하기 위한 모듈식 프레임워크로, 저장소, 합의 및 암호화와 같은 일반적인 블록체인 구성 요소를 가져와서 제공하는 커스텀 블록체인을 만들 수 있습니다. Substrate을 사용하면 이러한 기능들을 그대로 사용하거나 프로젝트의 목적에 맞게 수정하여 사용할 수 있습니다.
Last updated