🔖 서론
이번 시간에는 블록체인의 핵심 5요소인 "분산원장 기술", "합의 알고리즘","탈중앙화","Smart Contract", "암호화"에 대해서 추가적인 설명을 하나씩 해보도록 하겠다.
⛓️ 분산 원장 기술(DLT)
블록체인은 분산 원장 기술인 P2P를 기반으로 한다.
P2P는 Peer to Peer의 약자로, 네트워크에 연결된 컴퓨터가 서버와 클라이언트의 기능을 동시에 수행하는 컴퓨터 네트워크를 의미한다.
P2P 네트워크 방식 사용 이유
- 사고 등으로 전체 시스템이 멈출 위험이 매우 낮기 때문이다.
- 51%이상의 노드가 공격받지 않는다면 시스템이 유지가 된다.
- 연결된 노드 수가 많아질 수록 보안성과 안정성이 좋아진다.
- 투명성 : 모든 노드가 동일한 원장을 유지하므로 트랜잭션 기록이 투명하게 관리된다.
CAP theorem
일관성(Consistency), 가용성(Availability), 분할 내성(Partition Tolerance)을 의미한다.
- Consistency : 분산 시스템 내의 모든 데이터가 최신 상태이고, 모든 사용자가 동시에 같은 데이터를 볼 수 있다는 개념.
- Availability : 시스템의 구성 요소 일부에 장애가 발생하더라도 시스템 전체의 작업 수행 능력에 영향을 주지 않고 서비스를 지속할 수 있는 특성 (최신 값임을 보장할 순 없어도 모든 요청에 응답)
- 네트워크 분할이 발생하더라도, 시스템이 정상적으로 작동할 수 있는 특성 -> 일부가 다운되거나 문제가 생겨도 작동 가능.
⚠️ 하지만!! p2p만으로는 네트워크상의 데이터 불변성과 무결성을 보장할 수 없다. 따라서 "합의 알고리즘"이라는 기술을 같이 적용해 이를 해결한다.
🤝 합의 알고리즘
블록체인 네트워크에서 다수의 참여자가 통일된 의사결정을 하기 위해 사용하는 알고리즘.
작업증명 : PoW (Proof of Work)
PoW는 암호화폐 네트워크에서 트랜잭션을 검증하고 새 블록을 생성하기 위해 계산 작업을 요구하는 방식이다.

- 노드는 SHA-256과 같은 해시 퍼즐을 풀어서 유효한 해시값을 찾는다. = 논스
- 처음 해시 퍼즐을 푼 채굴자는 유효한 논스와 블록을 네트워크로 보낸다.
- 다른 노드들은 수신한 블록을 검증하고 논스가 유효한지 직접 돌려보면서 검증한다.
- 블록이 합의를 통해 승인되면, 해당 블록에 포함된 트렌젝션들은 메모리폴에서 제거가 된다.
- 이때, 트렌젝션은 FIFO가 아니라 수수료가 높은 트렌젝션들을 우선으로 선택이 된다.
- 블록이 생성되면 합의 네트워크에 기여했다는 의미로 보상을 준다.(비트코인)
지분증명 : PoS (Proof of Stake)
PoS는 코인 보유량(스테이킹)을 기반으로 검증자를 선정하여 에너지 효율성을 높인 방식이다. (pow보다 99프로 효율적임)
PoS에서는 검증자가 블록을 생성하고 네트워크를 유지한다.

- 코인을 스테이킹한다. -> 코인을 맡기고, 검증활동에 참여해서, 보상을 받는것.
- 검증자를 선택한다. -> 더 많은 코인을 스테이킹 하면 네트워크 참여율이 높다고 인식이 돼서 선정될 확률이 올라감.
- 검증자가 블록을 생성하면 보상으로 코인을 준다.

- 블록 생성 확률을 높이기 위해서는 하드웨어 성능보다는 지분량을 늘려야한다.
지분증명 : PoS - 방식
사용자 입장에서 ETH를 스테이킹 하는 방법은
1. 직접 스테이킹 : 최소 스테이킹 기준인 32개를 모아 컴퓨터를 세팅하고 직접 참여해야한다.
2. 스테이킹 서비스 & 스테이킹 풀 프로토콜 : 32개를 모으기 힘들기 때문에 대신 서로 묶어서 대량으로 스테이킹 후 보상을 분배함.
3. 거래소 스테이킹은 간단하지만 수수료가 가장 적다.

위임 지분 증명 : DPoS(Delegate Proof of Stake)
코인 보유자들이 자신들의 작업을 제3자에게 위임하는 투표 시스템을 통해 운영되는 블록체인 방식이다.
- 투표의 영향력은 해당 이용자가 보유한 코인의 수에 비례하고 대표는 노드 검증의 대가로 보상을 받는다. 그리고 이를 투표자들에게 재분배한다.
- 선출된 노드가 호율적으로 작업하지 않으면 대체된다.
- 확장성이 좋아서 pow와 pos보다 빠르다.
<단점>
- DPoS는 소수 노드가 권력을 집중한다. -> 탈중앙화가 제한적이다.
- 보안 리스트 : 대표 노드가 동시에 해킹당하면 전체가 위험해짐.
💧 MemPool?
채굴자는 유저들의 트랜젝션을 멤풀 이라는 임시 저장공간에 저장하고, 그중에서 몇개(수수료 높은) 트랜젝션을 선택해 임시 블록에 포함시킨다.
- 이 임시 블록은 아직 네트워크 노드들에게 전파되지는 않고 후보 블록으로 대기하고 있다가 블록으로 선택이 되면 모든 노드들은 이 블록을 추가해야 한다.
중간 점검
우리는 지금 분산원장 기술과 합의 알고리즘에 대해서 배웠다. 그리고 사실 2가지 기술을 이용해 "탈중앙화"를 이루기 때문에 이것도 같이 배웠다고 할 수 있다. 남은 내용은 "암호화" 부분과 "Smart Contract"이다. 암호화 부분은 나의 벨로그에 따로 정리가 되어있기 때문에 간략하게만 하고 넘어가도록 하겠다. 잠시 숨을 고르고 다시 시작해보자.
블록체인 암호화 기술
먼저 대칭키, 공개키, 해시에 대한 설명은 넘어가도록 하겠다. 이 부분은 선행이 되어야 블록체인의 보안에 대해서 이해할 수 있기 때문이다.
머클트리
여러 트렌젝션의 해시 값을 이진트리로 묶어서 하나의 최종 해시로 요약하는 구조.

이렇게 여러 트렌젝션의 해시값들을 이용해 다음 트렌젝션을 구하는 식으로 올라가면 결국 하나의 해시값(머클해시)가 나오는데 이 값을 통해 중간에서 데이터가 변경되었는지 확인할 수 있다.
영지식 증명 : ZKP (Zero-Knowledge Proof)
증명자가 검증자에게 자신의 주장이 사실임을 증명하는데 사용하는 알고리즘이다.
- 증명자는 자신의 주장을 증명하기 위해 검증자에게 어떠한 정보도 제공하지 않아야 한다.
- 검증자는 증명자의 주장에 대한 어떠한 근거도 몰라야 한다.

Smart Contract
사람의 개입 없이 자동으로 실행되는 계약(프로그램), 블록체인 위에 배포되며, 특정 조건이 만족되면 자동으로 실행이 된다.
Smart Contract 원칙
- 목적 명확화 : 작업과 조건을 자세히 정의해야함 (문서화).
- 자동화 가능성 : 조건을 자동으로 검사하고 실행할 수 있어야 한다.
- 의존성 관리 : 스마트 계약은 다른 스마트 계약이나 외부 데이터에 의존한 수 있으므로 신뢰성을 확인해야함.
- 사용자 경험 : 상호작용이 쉬워야함.
- 법률 및 규제 준수 : 해야함.
- 테스트 및 검증 : 해야함.
- 업데이트 가능성 : 있어야함.
Smart Contract 실제 예시
- 특정 지역의 강우량이 명시된 조건보다 높아지면 자동으로 보험금을 지급하게 설정.
Oracle
오라클은 블록체인 외부에 있는 데이터를 트랜젝션에 등록해 동의를 얻은 후 블록체인 안으로 들여오고, 블록체인 데이터를 외부로 내보내는 역할을 하며, 블록체인을 외부와 연결하는 다리의 역할을 한다.

<하드웨어 오라클 문제>
<소프트웨어 오라클 문제>
- 블록체인 안에 기록할때 생기는 문제.
- 자료수집 봇의 잘못된 크롤링 및 판단, 소프트웨어 버그등등 문제
- 블록체인 자체는 해킹이 거의 불가능 하지만, 데이터를 전달하는 SW는 해킹가능.
<해결 방법>
- 투표, 중앙값, 중간자등의 다양한 방안이 제시되고 있다.
마치며
이렇게 블록체인의 핵심 5요소에 대해서 알아보았다. 합의 알고리즘, smart contract등 중요한 내용이 많기 때문에 반복을 통해 공부하는 것이 좋을 것 같다.