블록체인
간단풀이 블록체인 chapter3(합의 알고리즘)
코린F&F프티
2022. 4. 19. 14:25
블록체인에서의 합의(Consensus)
트랜잭션을 처리하는데에 있어서 어떻게 처리할 것인가?
- 블록체인 모든 참여자의 원장에 일관성이 있는지 확인
1. 거래 및 거래 실행 순서에 대한동의
2. 동일한 원장을 유지하기 위하여 검증 참여자들의 상태를 동기화
3. 거래 원장이 일치하지 않는 참여자 노드의 상태 수정
4. 악의적인 참여자 노드들을 격리
참여자와 사용자는 다르다 !
- 참여자 : 합의 알고리즘을 구성하는 일원
- 사용자 : 트랜잭션을 제출 하는 일원
합의 알고리즘 예시
Public_BlockChain : 작업증명(Proof of work), 지분증명(Proof of stake)
Private_BlockChain : Solo/No-ops, Kafka/Zookeeper
PBFT based
ps. 비트코인 등 암호화폐를 발행하는 대부분이 퍼블릭 블록체인에 속한다.
합의 알고리즘의 일관성
트랜잭션을 처리할 노드는 무조건 랜덤적으로 정해진다
작업증명(Proof of work : 채굴합의 알고리즘)
- 랜덤적인 숫자 nonce에서 0의 개수를 찾는다 -> 채굴
- 채굴 한 뒤 모든 노드에 검증 받기 위해 서명을 받는다 (51%이상 받으면 모든 노드에 추가)
- 걸리는 시간에 따라 난이도 조정
- coinbase에 트랜잭션 코인을 받기위해 채굴(보상)
ps. 여기서 발생할 수 있는 문제가 51%문제
↑51%의 노트를 조작하면 모든 노드가 조작이 가능하다
단점
컴퓨터의 자원이 너무 심하게 소모된다.
처리 속도가 느리다.
BF공격
-> 만약 4가지 자리의 비밀번호라면 0000~9999까지 다 적용
Dictionary Attack
-> 생일, 등 중요한 번호를 유추해 적용
치명정인 약점(멀티 체인, 이중 지불)
-2개의 노드가 동시에 채굴에 성공하는 경우 유리한 쪽을 선택
-같은 트랜잭션을 두개를 받는다면 깊이가 긴 블럭을 선택
■ 문제해결 : 머클 트리 생성