여러 블록체인 강의를 듣다보면 입문자를 위한 블록체인 소개 부분이 대부분 있습니다...
그.러.나
저를 포함한 어떤 사람들은 이 부분들… 혹시나 내가 모르던 정보가 있지 않을까…? 해서 알면서도 듣게 되는데….
그냥 이번에 한번 이전에 정리했던 글과 지금 듣고 있는 강의의 초반 부분을 기준으로 입문자를 위한 간단한 블록체인 요약서를 정리해보려 합니다 🫠🫠🫠🫠🫠🫠
이러한 이유로 여러 블록체인 강의를 들으면 나오는 기초들 정리를 시작해봅니다 ^~^
분산원장기술(DLT, Distributed Ledger Technology)을 기반으로 여러 사용자가 Transaction이 들어있는 Block과 Chain을 통하여 같은 데이터를 갖는 구조
🚨 분산원장과 블록체인 기술은 엄밀히 말하면 차이점이 존재한다
하나의 예시로 분산원장은 데이터를 저장할 대 꼭 순서대로 저장할 필요가 없지만, 블록체인은 모든 블록들이 직전 블록을 가리킴으로 순차적으로 저장된다.
블록체인의 구성 단위로, 여러 개의 트랜잭션을 포함. 일정한 크기로 제한되어 있는 특징이 있으며 이전 블록과 연결되어 순차적으로 구성
구성요소
블록체인 네트워크 상 제일 첫 번째 블록을 의미하며, 해당 블록체인 네트워크의 초기 상태를 정의
# Geneis Block JSON File
{
"config": {
"chainId": 12345,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"berlinBlock": 0,
"ethash": {}
},
"difficulty": "1",
"gasLimit": "8000000",
# genesis block에 등록한 계정 및 balance
"alloc": {
"7df9a875a174b3bc565e6424a0050ebc1b2d1d82": { "balance": "300000" },
"f41c74c9ae680c1aa78f42e5647a62f353b7bdde": { "balance": "400000" }
}
}
블록체인 네트워크에서 데이터를 전송하거나 상태 변경을 요청하는 작업 단위
🚨 조금 더 자세하게 알고 싶다면, 트랜잭션의 구조를 이더리움과 함께 조금 더 자세하게 적어본 게시글을 참고하면 좋을 것 같다 🥲
입력 값을 고정된 길이의 데이터로 변환하며 역으로 고정된 길이로는 입력 문서를 찾을 수 없는 단방향 속성을 갖고 있는 암호화 방식이며 데이터의 무결성을 증명할 수 있는 수단
🚨 해싱에 대하여 조금 더 자세한 내용은 여기서확인 가능하다. 🥲
트랜잭션을 제안, 검증하며 합의를 이루고 채굴을 수행하기도 하는 블록체인의 서버 단위
✔️ 검증단계
1. 원본 데이터를 자신의 암호키를 이용해 암호화와 서명을 진행
2. 원본 데이터 & 서명을 다른 노드들에게 전파
3. 해당 트랜잭션을 받은 노드들은 검증을 위해 해당 데이터와 암호키를 이용해 암호화
4. 암호화된 데이터와 원본데이터를 비교해 무결성 검증
5. 이상이 없을 경우 블록에 업데이트 후 다른 노드들에게도 전파
Full Node
: 블록체인 상에서 이루어지는 모든 거래정보를 저장하고 있는 NodeLight Node
: 블록체인 상에서 이루어지는 거래를 수행하지만, 검증을 위해 Full Node에게 데이터를 요청하는 NodeMaster Node
: Full Node중에서도 권한과 보상을 받는 노드로, 상위노드라고도 함.Mining Node
: 채굴을 하는 노드이며 PoW에만 존재Random Node
: 블록체인의 무결성을 위해 존재하는 노드로, 마스터노드와 함께 블록을 생성Consensus Node
: 합의 노드라고도 불리며 BFT합의 알고리즘을 사용하여 블록들을 확인하는 NodeSuper Node
(Representative Node) : Node들의 대표이며 블록을 생성하고, 보상을 받는 노드이다 DPoS에서 존재한다History Node
: 블록에 있는 데이터들을 찾을 수 있는 노드네트워크 상에 공개되는 키로, 보통 해당 키를 이용해 메세지를 암호화 하는데 사용된다. 그러나 블록체인에서는 자신이 암호화 했다는 것을 증명하기 위해 자신의 비공개 키로 암호화 한 후 다른 사람들이 자신의 공개 키로 복호화하는 작업을 통해 사용되기도 한다.
🚨 조금 더 자세한 공개 키에 대한 정보는 여기에 작성되어 있다! 🖊️
공개 키와 한 쌍을 이루는 개인 키로, 공개 키로 암호화한 데이터를 해독하는데 사용한다.
🚨 조금 더 자세한 비 공개키에 대한 정보는 여기에 작성되어 있다! 🖊️
디지털 자산을 안전하게 보관하고 관리할 수 있는 소프트웨어나 하드웨어 기반의 지갑을 의미하며, 월렛은 사용자가 자신의 디지털 자산에 접근하고, 트랜잭션을 생성하고 서명하며, 잔액을 확인하는 등의 기능을 제공
인터넷에 연결되어 있는 사용자 친화적인 지갑으로, 주로 즉시 사용 가능한 자산을 보관하고 빠른 트랜잭션 처리를 위해 사용하며 핫 월렛은 보안 위험이 높을 수 있으며, 해킹이나 악의적인 공격에 취약할 수 있음
인터넷과 연결되어 있지 않으며 Cold Storage에 오프라인으로 저장하며 주로 보안이 중요한 큰 금액의 자산을 보관하고, 장기 보관이 필요한 경우에 사용
계층적 결정 지갑이라고 하며 하나의 seed Key를 사용하여 여러 주소를 생성할 수 있는 암호화폐 지갑
특징
- BIP32에서 제안한 지갑구조
- 하나의 부모 키가 여러개의 자식 키를 만들며 자식 키는 자손키를 만들어 내는 트리구조
- DRGB (Deterministic Random Bits Generate)를 사용
- HMAC-SHA512를 이용
- Normal Child Key
- 0~2^32-1번 인덱스 사용
- 부모 키의 공개 키를 통해 자신의 공개 키를 구한다
- Hardened Child Key
- 2^31 ~ 2^32-1번 인덱스를 사용
- 부모 키의 비밀 키를 이용해 자신의 공개 키를 구한다
비결정적 지갑
개인정보 보호를 위해 매번 비밀 키를 무작위로 생성하여 사용하는 방식의 지갑결정적 지갑
하나의 SeedKey를 이용해 비밀 키를 생성하며 SeedKey로 파생된 모든 비밀키를 알 수 있는 형태의 지갑Brain Wallet
비밀 키를 랜덤으로 생성하지 않고 일련의 단어 목록이나 문장을 사용해 비밀 키를 만드는 지갑
이더리움에서 사용하는 계정의 2가지 주소 유형이며 둘 다 토큰을 전송 받거나 보유 가능
개인 등 외부 주체에 의해 소유되는 계정으로 이더리움 네트워크에 참여하고 트랜잭션을 생성할 수 있는 일반 사용자 계정
스마트 컨트랙트의 주소를 나타내는 계정으로, 컨트랙트가 가진 상태와 실행로직 등을 포함하고 있으며 CA는 EOA와 다르게 CA 스스로 새로운 트랜잭션을 생성할 수 없음
1994년 닉 제보의 제안으로 시작되었으며 “계약조건을 실행하는 전산화된 트랜잭션 프로토콜”로 **정의
일반적인 계약과는 다르게 코드로 작성되어 코드에 의해 실행되는 특징을 갖고 있음
블록체인 네트워크의 기본 자산 단위이며, 네트워크의 합의 알고리즘에 기여하기 위한 보상체게로서, 네트워크 단위에서 사용
코드로 만든 암호화폐의 일종으로 만든 사람이 추가발행, 소각등의 컨트롤이 가능
Token의 종류
🐣 예시로, 만약 코인이 대한민국 화폐라면 토큰은 지역화폐라고 생각할 수 있다.
대한민국 화폐
는 대한민국 어디서나 사용 가능하지만,경기 지역 화폐
는 경기도에서만 사용 가능하다.
다수의 참여자들이 통일된 의사결정을 하기 위해 사용하는 알고리즘
합의 방식 | 설명 |
---|---|
PoW(작업 증명) | 각 노드의 연산 능력을 증명하여 블록 생성 높은 컴퓨팅 파워를 가진 노드가 블록을 생성할 확률이 높음 오랫동안 사용되며 안전성이 검증되었지만 단점도 많이 도출 |
PoS(지분 증명) | 소유 지분 양에 비례하여 블록 생성 권한을 높은 확률로 부여 받음 많은 지분을 가진 노드가 블록을 생성할 확률 높음 이론적으로 우수하지만 실제 대규모 환경에서 검증 사례가 부족 |
DPoS (위임 지분 증명) | 일부 위임된 Validator끼리 PoS 수행 트랜잭션 속도가 더 빠름 신뢰도는 Validator의 신뢰도에 종속 |
PoET (경과 시간 증명) | 경쟁적 연산으로 낭비되는 에너지를 줄이면서 작업 증명과 유사 효과 하이퍼레저 쏘투스 레이크(Sawtooth Lake)에서 제안 인텔 SGX을 기반으로 블록을 생성하는 리더를 랜덤으로 선정 |
PBTF | 참가자 1명이 프라이머리(리더)가 되어 모든 참가자에게 요청 송신 그 요청에 대한 결과를 집계한 뒤 다수의 값을 사용해 블록을 확정 각 노드는 브로드캐스트 된 명령을 받게 되면 모든 노드에 회신 각 노드는 명령을 일정 수 이상 수신하면 명령을 실행하고 블록을 등록 |
PoA(권한 증명) | 트랜잭션 및 블록의 Validator라고 승인된 계정에 의해 유효성이 검사 Validator의 권리를 얻으므로 그들이 얻은 지위를 유지하고자 함 자신의 신원에 부정적 평판이 생기길 원치 않도록 노력할 거라 가정 |
PAXOS | 트랜잭션 및 블록의 validator라고 승인된 계정에 의해 유효성이 검사 validator가 될 수 있는 권리를 얻으므로 그들이 얻은 지위를 유지하고자 함 자신의 신원에 부정적인 평판이 생기길 원치 않도록 노력할 것이라 가정 |
RAFT | 리더를 선정한 후 시스템의 모든 변화를 리더를 통해 결정 신뢰된 네트워크에서만 사용 |
Sieve | IBM에서 고안한 PBFT 확장 알고리즘 실행결과 전송과 집계 결과 전송으로 흐름이 나뉜다. |
블록체인에서 Fork란 블록체인의 분기를 의미하며, 기존 블록체인의 데이터 구조에 대한 변경을 발생하며 새로운 버젼을 만드는 현상을 의미
블록체인을 Fork 할 때 기존의 체인을 그대로 사용하면서 Fork하는 것을 의미하며 간단한 시스템 업데이트에서 사용. 기존의 규칙을 따르며 기본 구조 변경 기능 업데이트
블록체인을 Fork할 때 기존의 규칙 그대로를 따르는 것이 아닌 새로운 규칙을 추가 하는 것을 의미하며 이런 경우에는 기존의 규칙을 따르는 노드들로 구성되어 있는 네트워크와 새로운 규칙을 따르는 노드들로 구성된 네트워크로 나누어 질 수 있음
누구나 네트워크에 참여해서 데이터를 읽고, 쓰고, 검증할 수 있는 블록체인이며 네트워크가 운영되기 위해 코인을 발급하는 경우가 많으며, 탈중앙화의 가치를 추구
검증되고 인증된 참여자들로 이루어지는 블록체인 네트워크이며, 탈중앙화가 덜 되어 있는 대신 확상성과 안전성을 확보
Private BlockChain과 마찬가지로 검등되고 인증된 참여자들로 이루어 지는 블록체인 네트워크로, 네트워크의 참여자는 보안 및 규칙 설정에 관여하고 네트워크 운영에 대한 결정을 공동으로 이룸
블록체인 트릴레마란 3가지 문제가 각각 서로 영향을 주어 3가지 중 어느 하나를 선택하면 다른 부분이 약화되는 것에 대한 딜레마를 의미
사용자가 늘어나 네트워크가 커져도 더 많은 트랜잭션을 처리하기 위함
장점
- 많은 트랜잭션 처리 가능
- 보안이 덜 중요한 DApp에서 사용 선호
단점
- 보안 저하
- 네트워크가 확장되면서 합의 메커니즘도 확장해야함
중앙집권이 아닌 분산된 노드들을 통해 네트워크를 운영하여 투명성과 불변성 증가
장점
- 사용자는 단일 엔티티를 신뢰하지 않고도 합의를 유지할 수 있다
- 시스템 견고성 증가와 재산권 향상
단점
- 네트워크 속도 저하로 확장성 저하
- 비용의 증가와 모든 애플리케이션에서는 바람직하지 않음
제일 기본적이며 새로운 기술임으로 더욱 보안이 중요
장점
- 기존의 가치이전보다 더욱 빠르고, 저렴한 가치이전 가능
단점
- 많은 투자가 필요
합의 알고리즘의 속성을 의미
안전성을 우선시 하며, 모든 정상적인 참여자는 동일한 유효한 상태에 동의해야 한다는 속성
⇒ 문제 없는 노드는 잘못된 합의를 하지 않는다
`Safety over Liveness`** : 잘못된 합의의 가능성이 있다면 블록을 만들지 않는다
생존성을 우선시 하기 때문에 블록의 생성을 우선시 하며, 모든 참여자는 동의된 어떠한 상태에 동의하여 도달해야 한다는 속성
⇒ 문제 없는 노드는 반드시 합의를 해야한다
• Liveness over Safety
: 잘못된 합의의 가능성은 있으나 합의를 우선으로 한다
🚨 FLP Impossibility
비동기화 및 부분동기화된 네트워크 환경에서는 Safety와 Liveness룰 동시에 만족시키는 분산된 합의 알고리즘이 존재할 수 없다는 전재로 어떤 항목을 우선시 할지 나누어짐.
이전에 정리했던 글들과 현재 수강중인 강의의 내용을 기준으로 다시 작성해보았는데,
블록체인 공부를 시작하는 분들이 배경지식을 이해할 때 시간을 조금 더 절약할 수 있는 글이 되었으면 좋겠습니다! 😃😃
혹여, 잘못된 정보 혹은 너무 오래되어 이제는 해당되지 않는 정보들이 있다면 피드백 부탁드립니다 🙇🏻🙇🏻