블록체인 구조와 아키텍처
✏️ 블록체인 아키텍처
블록체인은 분산 컴퓨터 네트워크(P2P)에 기반한 분산 원장 기술입니다.
일반적으로 중앙화된 중앙 서버가 아닌 참여자들 간에 데이터의 복사본이 분산되어 저장되며, 이러한 복사본은 브로드캐스트를 통해 모두 동기화되어 전체 네트워크에서 동일한 정보를 가지게 됩니다.
🤔 분산 원장 구조 특징
🔴 분산성
블록체인은 중앙화된 서버 대신 참여자들의 분산된 컴퓨터 네트워크에 의해 운영됩니다.
이는 중앙 기관이나 중개자 없이도 신뢰성과 보안을 제공할 수 있는 장점을 가집니다. 데이터는 여러 노드에 복사되고 동기화되기 때문에 단일 고장점을 제거하고 시스템의 내결함성을 강화합니다.
❓단일 고장점
단일 고장점은 시스템 또는 구조에게 한 개체, 구성 요소 또는 리소스가 장애로 인해 전체 시스템의 작동을 중단시킬 수 있는 취약점을 의미합니다. 이는 시스템의 안정성과 가용에 위험을 초래할 수 있으나 블록체인은 이러한 단일 고장점의 문제를 분산 네트워크를 통해 해결합니다.
❓내결함성
내결함성은 시스템이 장애나 공격에 대해 저항력을 가지고 계속해서 원활하게 작동하거나 복구할 수 있는 능력을 의미합니다. 내결함성은 시스템이 예기치 않은 상황에서도 계속해서 기능하고 사용자에게 서비스를 제공할 수 있도록 보장합니다.
블록체인은 분산된 데이터 저장, 합의 알고리즘, 브로드캐스트를 통한 자동 복제 및 동기화, 분산된 합의와 자가 관리를 통해 내결함성을 갖습니다.
🔴 보안성
블록체인은 암호화 기술과 합의 알고리즘을 통해 보안을 강화합니다.
데이터는 블록으로 묶여 해시 함수로 암호화되어 체인 형태로 연결됩니다. 한 번 블록에 저장된 데이터는 수정이 어렵고, 블록체인의 무결성을 검증할 수 있습니다. 또한, 합의 알고리즘은 악의적인 행위를 방지하고 블록 생성에 대한 경쟁을 조절하여 보안을 강화합니다.
❓무결성
무결성은 데이터나 정보가 올바르고 정확하며 변조되지 않음을 보장하는 특성을 말합니다. 데이터의 무결성은 데이터가 변조되거나 손상되지 않았음을 확인하고 보호하기 위한 중요한 개념입니다.
블록체인은 해시 함수, 분산된 데이터 저장, 합의 알고리즘을 통해 데이터의 무결성을 강력하게 보호하는 서비스를 제공합니다.
🔴 투명성
블록체인은 분산된 원장으로 모든 거래 기록을 투명하게 기록합니다.
모든 참여자들은 원장에 접근하여 트랜잭션의 세부 정보를 확인할 수 있으며, 이는 신뢰와 투명성을 제공합니다. 거래가 변경되지 않고 블록체인에 저장되기 때문에 거래의 추적과 검증이 가능하며, 이는 사기나 부정행위를 방지하는데 도움을 줍니다.
🔴 자기 주권
블록체인은 개인의 자산과 신원에 대한 직접적인 소유와 통제를 가능하게 합니다.
개인은 암호화폐 지갑을 통해 자산을 보유하고 관리할 수 있으며, 개인의 신원 정보는 암호화되어 공개키와 개인키로 보호됩니다. 이는 중앙 기관의 개인 정보 수집과 제어에 대한 의존성을 줄이고, 사용자에게 더 큰 개인 자유와 프라이버시를 제공합니다.
중앙화 & 탈중앙화
블록체인 구조
모든 블록체인 구조는 세 가지로 나뉩니다.
🔴 퍼블릭 블록체인 아키텍처
퍼블릭 블록체인은 개방된 공개 네트워크에서 운영되며, 누구나 참여할 수 있는 형태의 블록체인입니다. ( 예 : 비트코인, 이더리움, 폴리곤 )
💡특징
- 공개적인 접근성 : 누구나 퍼블릭 블록체인 네트워크에 참여하고, 트랜잭션을 확인하고 블록 생성에 참여할 수 있습니다.
- 분산된 합의 : 다수의 참여자들이 합의 알고리즘을 통해 블록 생성과 트랜잭션 검증에 참여합니다.
- 완전한 탈중앙화 : 중앙 기관이 없이 참여자들 간의 직접적인 신뢰를 기반으로 작동합니다.
🔴 프라이빗 블록체인 아키텍처
프라이빗 블록체인은 특정한 조직이나 그룹 내에서 운영되는 비공개 네트워크 기반의 블록체인입니다.
💡특징
- 참여자 제한 : 특정한 조직, 기업, 그룹의 참여자들만이 네트워크에 참여하고 트랜잭션을 생성, 검증할 수 있습니다.
- 제한된 접근성 : 프라이빗 블록체인의 데이터 및 기능은 특정한 인가된 참여자에게만 공개됩니다.
- 합의 제어 : 합의 알고리즘은 네트워크 참여자들이 직접 제어하고 선택할 수 있습니다.
🔴 컨소시엄 블록체인 아키텍처
컨소시엄 블록체인은 일부 조직이나 기업들이 함께 운영하는 반공개적인 블록체인입니다.
💡특징
- 제한된 참여자 : 특정한 조직이나 기업들이 네트워크의 참여자로서 권한을 가지고 참여합니다.
- 중앙화된 관리 : 네트워크에 참여하는 기업들이 함께 관리하며, 일부 중앙화된 요소가 존재할 수 있습니다.
- 합의 규칙 : 컨소시엄 블록체인은 참여자들 사이에서 합의 알고리즘을 정의하고, 트랜잭션 검증 및 블록 생성을 진행합니다.
블록체인 데이터 구조
블록체인에서 사용되는 데이터 구조에는 포인터(pointer)와 연결 목록(linked list)이 중요한 역할을 합니다.
🔴 포인터
포인터는 다른 데이터 구조나 객체를 가리키는 변수로, 블록체인에서 포인터는 블록과 이전 블록을 연결하는 역할을 합니다.
각 블록은 이전 블록의 해시 값을 포함한 포인터를 가지고 있으며, 이를 통해 블록들이 체인 형태로 연결됩니다. 이전 블록의 포인터를 통해 블록체인의 무결성을 검증하고 트랜잭션의 연속성을 확인할 수 있습니다.
🔴 연결 목록
연결 목록은 블록체인에서 노드들이 연결된 구조로, 각 노드는 데이터와 다음 노드를 가리키는 포인터로 구성됩니다.
각 블록은 이전 블록을 가리키는 포인터를 가지고 있으며, 이를 통해 블록들이 체인 형태로 연결됩니다. 연결 목록을 통해 블록체인은 데이터를 순차적으로 저장하고 연속성을 유지하고 변조 방지를 보장합니다.
포인터 & 연결목록
블록체인 아키텍처 핵심 구성 요소
🔴 체인
체인은 블록들이 연속적으로 연결된 구조를 말합니다.
각 블록은 이전 블록의 해시 값을 가지고 있으므로 블록체인은 데이터의 변경을 검증하고 무결성을 유지합니다. 블록체인의 체인 구조는 데이터의 수정을 어렵게 하고, 트랜잭션의 연속성과 신뢰성을 제공합니다.
🔴 합의 프로토콜
합의 프로토콜은 블록체인 네트워크의 참여자들 간에 합의를 도출하기 위한 알고리즘과 규칙을 의미합니다.
합의 프로토콜은 블록 생성과 트랜잭션 검증에 사용되며, 블록체인의 신뢰성과 일관성을 유지하는 역할을 합니다.
🔴 노드
노드는 블록체인 네트워크의 참여자로서 컴퓨터 또는 장치를 가리킵니다.
노드는 블록체인의 데이터를 저장하고 전파하며, 합의에 참여하여 블록 생성 및 트랜잭션 검증을 수행합니다. 노드는 보안성과 신뢰성을 유지하고 블록체인 네트워크의 운영에 기여합니다.
🔴 블록
블록은 여러개의 트랜잭션을 묶어서 저장하는 단위입니다.
각 블록은 이전 블록의 해시값과 트랜잭션 데이터를 포함합니다. 블록은 시간순으로 생성되어 체인 형태로 연결되며, 블록체인은 이러한 블록들의 연속으로 구성됩니다.
🔴 트랜잭션
트랜잭션은 블록체인에서 데이터를 전송하거나 변경하는 작업을 나타냅니다.
암호화폐 송금, 자산 교환, 스마트 컨트랙트 실행 등이 트랜잭션에 해당합니다. 트랜잭션은 데이터의 송신자, 수신자, 금액 또는 실행 조건을 포함하며, 블록에 기록되어 블록체인의 무결성과 투명성을 보장합니다.
🔴 광부
광부는 블록체인에서 새로운 블록을 생성하는 역할을 수행하는 참여자입니다.
광부는 트랜잭션을 검증하고 블록에 추가하기 위해 암호학적 계산을 수행합니다. 이를 통해 블록체인의 보안성을 유지하고 블록 생성에 참여하는 노드는 보상을 받습니다.
블록의 구성 요소
- 블록 해시 : 블록체인에서 각 블록을 식별하는 고유한 해시 값입니다.
- 버전 : 블록의 형식과 규칙을 지정하는 버전 번호입니다.
- 이전 블록 해시 : 이전 블록의 해시 값으로, 이를 통해 블록들이 체인으로 연결됩니다.
- 머클 루트 : 블록 내에 포함된 모든 트랜잭션 데이터의 머클 트리 루트 해시로, 이를 통해 트랜잭션 데이터의 무결성을 검증할 수 있습니다.
- 타임스탬프 : 블록이 생성된 시간입니다.
- 난이도 : 블록의 생성 난이도로, 채굴 작업의 난이도를 조절하는 역할을 합니다.
- 논스 : 블록 생성 과정에서 사용되는 임의의 값으로, 블록의 해시를 찾는 작업에 사용됩니다.
트랜잭션의 구성 요소
🔴 비트코인 트랜잭션
- 버전 번호 : 채굴자와 노드가 트랜잭션 처리에 사용할 규칙을 지정하는 데 사용합니다.
- 입력 카운터 : 트랜잭션에 포함된 입력의 개수
- 입력 리스트 : 트랜잭션에 포함된 입력
- 출력 카운터 : 출력의 개수를 나타내는 양의 정수
- 출력 리스트 : 트랜잭션에 포함된 출력
- 락 시간 : 트랜잭션이 유효해지는 가장 빠른 시간을 정의하는 필드
🔵 이더리움 트랜잭션
- 발신자 : 트랜잭션을 생성하는 주체 또는 계정입니다.
- 수신자 : 트랜잭션의 수신 대상입니다. 수신자는 이더를 받거나, 스마트 컨트랙트의 실행을 요청하는 주체입니다.
- 이더리움 양 : 트랜잭션에서 전송되는 이더리움의 양을 나타냅니다.
- 데이터 : 스마트 컨트랙트의 호출 정보로, 컨트랙트의 함수 이름, 매개 변수 및 실행 조건을 포함할 수 있습니다.
- 가스 비용 : 이더리움에서 트랜잭션을 실행하거나 스마트 컨트랙트를 호출하는데 필요한 가스 비용입니다. 가스는 트랜잭션의 실행에 필요한 컴퓨팅 리소스를 측정하는 단위로, 가스 가격과 가스 한도를 곱한 값으로 결정됩니다.
- 서명 : 트랜잭션을 인증하기 위한 디지털 서명입니다. 발신자는 개인키를 사용하여 트랜잭션에 대한 서명을 생성하고, 이를 통해 트랜잭션의 무결성과 발신자의 신원을 증명합니다.
블록체인 작동 원리
1️⃣ 트랜잭션 생성
블록체인의 작동은 먼저 트랜잭션이 생성되는 단계로 시작합니다.
암호화폐의 송금, 스마트 컨트랙트의 실행 등이 트랜잭션에 해당합니다.
2️⃣ 트랜잭션 검증
생성된 트랜잭션은 블록체인 네트워크의 참여자들에게 전파됩니다.
네트워크의 노드들은 트랜잭션의 유효성을 검증합니다. 이때, 트랜잭션이 중복되지 않고 유요한 서명과 데이터를 포함하고 있는지를 확인합니다.
3️⃣ 블록 생성
유효성 검증된 트랜잭션들은 블록으로 그룹화되어 체인에 추가될 준비를 합니다.
블록은 일정한 크기로 구성되며, 여러 트랜잭션 데이터와 추가 정보를 포함합니다. 일반적으로 블록은 이전 블록의 해시값을 가지고 있어 체인 구조를 형성합니다.
4️⃣ 합의 알고리즘 적용
블록 생성 후, 블록체인 네트워크의 참여자들은 합의 알고리즘을 사용하여 블록의 유효성을 검증하고 추가합니다.
합의 알고리즘은 분산된 네트워크의 노드들이 동의된 규칙에 따라 블록의 유효성을 판단하고 체인에 추가하는 역할을 수행합니다.
5️⃣ 블록체인 확장
유효성이 검증된 블록은 네트워크의 모든 노드에게 전파되어 동기화됩니다.
이를 통해 블록체인 네트워크의 모든 참여자들은 동일한 체인 상태를 유지하게 됩니다. 블록체인은 새로운 블록이 계속해서 생성되고 체인에 추가되는 과정을 반복하여 확장합니다.
6️⃣ 보상과 보안 유지
블록체인 네트워크에서 광부라고 불리는 참여자들은 블록 생성과 트랜잭션 검증을 수행합니다.
광부들은 암호학적 계산을 통해 작업을 수행하고, 블록체인의 보안을 유지하는 역할을 합니다. 이에 보상으로 암호화폐나 수수료를 받게 되며, 이를 통해 블록체인의 보안과 동작을 지원합니다.