Please enable JavaScript.
Coggle requires JavaScript to display documents.
블럭체인 (기술 구성 요소 (합의 알고리즘 (PoW(Proof of Work) (문제점 (51% 문제
특정 마이너가 네트워크의…
블럭체인
기술 구성 요소
P2P 네트워크
-
오버레이
-
-
Hyperledger Fabric
- validating peer / non-validating peer(슈퍼노드 개념 도입)
-
합의 알고리즘
PoW(Proof of Work)
문제점
51% 문제
- 특정 마이너가 네트워크의 과반수를 점령하는 문제
파이널리티 불확실성
- 최소 6블럭의 긴 체인이 이루어져야지만 결제가 완료되는 문제점
- 짧은 체인에 있던 트랜잭션 정보는 계류처리되어 사라진다.
성능한계
- 합의/네트워크 확상에 대한 비용
- 그로인한 실시간 처리에 비적합
블록체인의 용량
- 축적된 블럭 데이터
- 노드 하드 디스크 용량 압박
- 초기 실행 시간 증가
-
-
-
PoS(Proof of Stake)
정의
- 화폐량을 더 많이 소유하는 승인자가 우선하여 블럭 생성
- 대량 통화 소유자는 통화 가치를 지키기 위해 시스템 신뢰성을 손실 하지 않는 다는 전제를 바탕으로 하고 있음
-
-
-
-
Paxos
정의
- 과반수의 동의를 얻었다면 그 동의 내용이 나중에 변경되지 않는 점
- 합의 형성에만 특화된 알고리즘
단점
- 시스템으로 구현하기 어렵다
- 리더를 중심으로 합의 수행하여, 부정이 있는 경우 동기화가 되지 않음
- 구성원이 거짓으로 신고할 경우에도 동기화 되지 않음
- 악의적 참가자가 없다는 전제하에서만 사용되어야 함
-
전자 서명/해시 함수
해시
- 데이터 위/변조에 많이 사용됨
- 원본 데이터를 해시로 변환하여 해시값 비교로 검증
- 생성된 해시값으로 원본 데이터를 만들어 낼 수 없음(복호화 불가능)
- 항상 유일한 랜덤값을 가진 해시가 나온다는 전제하에 사용함.
- 동일한 값이 나올 확률은 있지만 충분한 비트수(SHA-256 등)를 사용하여
만들어내면 충돌 확률은 0에 가까워서 무시한다.
전자서명
정의
- 전자 서명과 함께 전송된 전자 데이터의 타당성을 증명하기 위한 방법
- 암호화 된 전문
- 비밀키(서명 생성)/공개키(서명 검증)로 위/변조를 검증
흐름
- 받는 사람에게 공개키 미리 전달
- 보내는 사람은 비밀키를 이용하여 전자 데이터를 암호화된 전문(전자서명)을 생성
- 전자 데이터 + 전자서명을 받는 사람에게 전송
- 받는 사람은 공개 키로 복호화를 수행하여 원본 전자 데이터를 생성
- 수신된 전자 데이터와 원본 전자 데이터가 동일한지 비교하여 위/변조를 판단
해시와 비트코인
블록 구성
블록 헤더
블록 헤더 구성
- 이전 블록 헤더의 해시값
- Nonce(해답값) - 블록 생성 자격 조건을 가지는 해답
- 해시 트리의 루트(트랜잭션을 조합하여 생성한 해시 값)
Nonce
- 블록 생성자가 임의로 결정한 값
- 블록을 생성하기 위해 지속적으로 변경한다.
- 블록을 생성하려면 특정 임계치 값(해시)내의 범위로 Nonce 값을 변경하면서(루프) 생성된 해시로 찾는다.
- 여기서의 특정 임계치를 난이도라고 볼 수도 있다.
-
블록 생성 및 위/변조 검증
블록 생성 해시
- 이전 블록의 해더 값 + 해시 트리의 루트 + Nonce = 해시 생성
-
블록 위/변조 검증
- 이전에 생성된 특정 블록의 트랜잭션 정보를 수정(위/변조)할 경우 - 달라진 해시 루트 값으로 인해 변경된 블록 해시를 생성
- 위에서 생성한 위/변조 블록 해시 값이 이전 해시 값으로 하위 블록에 전달되어야 하므로
해당 블록의 해시값 정보도 변경되어야 해서 모든 이전 해시값 정보가 변경되면서 전달(연쇄적) 되어야 한다.
- 이러한 위/변조 블록에 대한 해시 값 생성이 연쇄적이며, 모든 네트워크에 동시적으로 접근하여 시도되어야만 위/변조에 성공한다.
- 이런 네트워크 동시성, 이전 블록 해시의 연쇄성을 제한된 시간내에 위/변조하기엔 사실상 불가능에 가깝다.
- 위의 특성으로 블록체인은 참여노드 증가 + 시간이 지날 수록 위/변조에 대한 위험성이 매우 적어진다.
※ 블록의 신뢰와 자생적 생태계가 가능하다는 얘기가 여기서 비롯된 것 같다.
문제 발견 - 트랜잭션 전성 문제
- 모든 트랜잭션이 전자서명으로 처리되어 있지 않았음
- 거래를 실행하는 스크립트는 전자서명에서 제외됨
- 이 부분을 공격하여, 블록 위/변조(전자서명의 검증)는 통과하지만,
실행시 에러 또는 잘못된 데이터가 블록 체인에 등록되게됨
- PoW 합의 알고리즘에 의해 다수가 되지 않은 블록은 파기가 되어 큰 문제가 되지 않았지만,
결과적으로 허점을 남겨 암호화 강도가 저하될 가능성이 있다.
-
그 외 정보
비잔티움 장군 문제
- 로마 제국을 비유한 시스템 문제
- 동시에 적군을 처야하는데 몇시에 쳐야하는가?
- 배신자나 변절자의 정보가 있을 수 있다.
- 봉화를 사용할 수 없다.(적군이 눈치채면 안됨)
사례: 삼국지(읽은글)
- 조조/손권이 유비에게 밤 10시에 미국 치자고 전령을 보냄
- 유비 10시에 공격하러 감
- 그 시각 조조/손권은 클럽에서 놀고 있었음
- 유비 혼자 개발림.....알고보니 다 배신자
- 이거 뭐 믿을 수가 있나.......P2P의 문제점
-
분산 시스템
장애 모델
Fail Stop 모델
- 어떤 오류로 중지된 서버는 깨끗이 퇴출하는 모델
- Raxos, Raft 합의 알고리즘
Fail Recover 모델
- 한 번 정지한 서버가 부활하는 모델(지연과 중단을 구분하지 않음)
- Raxos, Raft 합의 알고리즘
Byzantine Fault 모델
- 임의 노드가 악의적으로 실수를 일으키는 모델
- Pow, Pos, PBFT