블록체인

간단풀이 블록체인 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개의 노드가 동시에 채굴에 성공하는 경우 유리한 쪽을 선택
-같은 트랜잭션을 두개를 받는다면 깊이가 긴 블럭을 선택

 ■ 문제해결 : 머클 트리 생성