[블록체인] 11주차_블록의 생성 2
이 내용은 K-MOOC 알기쉬운블록체인 강의를 듣고 정리한 내용입니다.
블록 생성 시 발생하는 문제들
Node의 작업 상태
1. Node들의 두 가지 작업 상태
- 작업 상태 종류
- peer가 생성하고 제출한 새 블록 평가하는 상태
- 새 블록 만드는 상태
- hash puzzle 플어서 블록 완성하고 제출
- 다른 peer들의 검증 결과를 기다려야 한다.
- 작업 상태 결정하는 요인: 개별 node에 도착하는 message
- 각 노드는 새 블록을 포함하는 메시지를 받자마자 평가 상태로 전환
- 평가가 완료되면 새 블록 생성 상태로 전환
Node의 처리 규칙
1. 노드의 처리 규칙
- 새 트랜잭션 데이터와 새 블록은 peer간 네트워크 통신으로 전달
- 각 노드는 message수신함에 모인 새 트랜잭션 중 선택해서 처리
- 각 노드는 새 블록을 최우선으로 처리한다.: 트랜잭션 처리 vs 새로운 블록 검증-> 블록 처리 우선
- 각 노드는 새 트랜잭션 데이터의 승인 여부와 형식상, 의미상 정확성 검증하여 처리
- 각 노드는 유효한 트랜잭션들만 골라서 Merkle tree를 구성하고, hash puzzle 풀어 새 블록 생성
- 각 노드는 hash puzzle을 해결하자마다 새로 생성한 블록을 모든 노드에게 전달
- 각 노드는 새 블록에 대해 hash puzzle의 해를 검증하고, 새 블록에 포함된 모든 트랜잭션 데이터의 형식, 의미상 정확성 및 승인 여부 검증: hash puzzle의 해를 찾는 것은 어렵지만, 해를 검증하는 것은 쉽다.
- 각 노드는 자신이 가진
블록체인-데이터-구조
의 복사본에 유효한 블록을 추가 - 새 블록이 유효하지 않을 경우 이를 폐기하고, 노드는 계속 트랜잭션 데이터를 처리하거나 새 블록의 hash puzzle을 처리하는 등 하던 일 이어서 처리
- 새 블록이 유효한 경우 노드는 새 블록에 포함된 트랜잭션들을 message수신함에서 제거하고, 트랜잭션 데이터 처리 및 새 블록 생성 시작
블록체인-데이터-구조
에 추가된 블록이 추후 유효하지 않거나 불필요한 것으로 밝혀지면, 그 블록과 이후에 연결된 모든 블록을 제거한 다음, 해당 트랜잭션들은 재처리를 위해 message수신함에 다시 추가된다.- 제출한 블록의 유효성을 인정 받은 노드는 블록에 포함된 모든 트랜잭션에 대해 보상 받는다.
- 새로 추가되었던 블록이 추후 검증을 통해 제거되면 이를 제출한 노드는 받았던 보상금 반환
부정직한 Node의 처리
1. 시스템의 목표
- 안정성, 신뢰성 알 수 없는 개별 노드들로 구성된 완전 개방 P2P시스템에서 무결성과 신뢰성을 유지하는 것
2. 소유권 관리하는 P2P시스템에서 가장 두드러진 부정행위
- 다른 사람으로 위장해 transaction 제출
- 유효하지 않은 transaction이나 블록 인정: 여러 노드 담합->한 노드가 조작한 데이터 블록을 다른 노드들이 인정해줌
- 노드를 다운시키기 위해 수많은 transaction data 전송: 한꺼번에 많은 트랜잭션 발생시켜
Denial of Service
공격 효과: 전체 블록체인 시스템이 정상적인 트랜잭션도 제대로 처리하지 못하는 상태가 될 수 있음 - 특정 transaction의 처리 거부: 특정 주소값을 가진 사람의 transaction 계속 거부하면 그 사람은 거래 불가
- 정보 전달 거부: 내가 받은 정보를 피어들에게 전달하지 않음
3. 부정직한 행위의 방지책
- 각 게정의
개인key
를 소유한 주인에게만 접근을 허용하는 transaction의 보안 개념 적용- 계정 주인 및 거래 식별, 인증:
비대칭 암호화 기법
,디지털 서명
- 따라서 다른 사람으로 위장해서 transaction 제출하는 것 자체가 불가능
- 계정 주인 및 거래 식별, 인증:
- peer들 간 통신으로 모든 노드가 모든 정보 수신하는 것 보장
- 일부 노드가 정보 전달 거부해도 다른 경로로 정보 전달 ->결국 모든 노드가 모든 정보 알게 됨
- 특정 노드가 잘못되거나 데이터 처리를 멈추어도 전체 시스템은 작동하는 시스템 구조
- 일부 노드 과부하&다운 혹은 일부 노드가 거래 처리 거부해도 다른 노드들이 그 역할 대신 해 줄 수 있음
- 블록체인-알고리즘
- 일부 부정직한 노드들이 조작 시도해도 합의 알고리즘에 의해 정직한 다수의 힘으로 극복
- 적절한 보상과 처벌의 효과
- 무결성을 해치려는 부정직한 노드의 욕망: 위조된 transaction 보냄 or 유효하지 않은 transaction이나 블록 승인
- 보상을 향한 다수의 열망: 훨씬 크고 강력함
- 이를 위해 기본적으로 꽤 많은 숫자의 정직한 노드를 확보하는 것이 필요
분쟁의 해결
동일한 거래 이력의 유지
1. 블록체인 내 모든 노드들이 같은 정보 유지하는 방법?
- 예시) 새로운 길의 생성: 수많은 경로 중 많은 사람들이 사용해서 다져 진 길이 선택됨 = 합의의 결과
- 블록체인에서 모든 노드들이 같은 정보를 유지하게 만드는 원리 = 합의 메커니즘
2. 해결 과제
- 블록체인-알고리즘에는 중앙 통제 장치가 없고, 각 노드가 수신함에 도착한 메시지를 보고 어떤 일을 할 지 판단함
- 즉 개별노드의 수신함에 도착한 새 블록이 노드가 뭘 해야 할 지 알려주는 신호이다.
- 문제점
- message가 분실, 지연, 또는 순서 바뀔 수 있음
- 모든 노드의 작업 상태가 동일하지 않음
- node들의 작업이 중복될 수 있음
- 그럼에도 불구하고 모든 노드가 동일한 거래 이력 유지하도록 만드는 것이 과제
해결 방법
1. 분산 합의
- 분산합의란? 집단적 의사결정 문제에서 동의나 합의에 이르는 과정
- 중앙 통제, 조정 없이 독립적으로 행동하는 개인들에 의한 합의
2. 분산 합의 과정의 특징
- 집단을 구성하는 독립된 개인들은 동일한 환경에서 행동함
- 주어진 Peer to Peer 네트워크가 동일
- 네트워크를 통해 전달되는 정보가 동일
- 동일한 규칙에 의해 동작됨
- 집단적 의사결정이 필요한 문제가 존재함
- 새 블록 생성 시 해당 블록 검증하기
- 여러 블록이 충돌 일으킬 때 어느 쪽을 선택할지
- 개인들은 동일한 목표 달성을 위해 독립적으로 노력함
- 각 노드의 목표: 새로운 블록을 자기가 만들어서 등록->보상 받기
- 목표달성을 위해 개인이 취한 행동은 환경에 영향을 미쳐서 집단적인 의사결정 문제를 결정하는 데 도움됨
- 새 블록 생성 or 타인의 블록 검증 등이 전체 의사결정 과정의 일부
- 각 개인은 환경 변화에 기반한 동일한 기준을 사용해서 의사결정 문제 평가
3. BlockChain의 분산합의
- 모든 노드는 네트워크
블록체인-데이터-구조
에 개별 복사본을 가지고 동일한 알고리즘에 의해 동일한 환경에서 작동함 - 집단 의사결정 문제: 단일 transaction 선택 문제
- 모든 노드는 자신의 이익을 최대화하기 위해 유효한 새 블록 추가하고 보상 받기 위해 노력함
- 각 노드는 자신이 생성한 새 블록을 다른 피어들에게 인정받기 위해 공개함: 각 노드는 집단으로 유지되는 블록체인-데이터-구조 환경에서 개별적인 흔적 남김
- 작업 증명(POW)방식의 경우 새 블록 생성에 많은 노력이 들고 이를 조작하는 데 더 많은 노력 소요
- 두 개 이상의 상충되는 트랜잭션 이력이 있으면?
- 이력 전체에 대해 그 이력을 만드는 데 들어간 총 노력의 양이 큰 쪽 선택: 노력 총량이 클 수록 이력 조작하기 어렵기 때문
- 모든 노드가 트랜잭션 데이터 선택할 때 동일한 기준을 적용하면-> 모든 녿가 동일한 버전 이력 가지게 됨
- autoritative chain(권위 체인) or authoritative history
작동 원리 - 가장 긴 체인 기준
1. 계산 노력 판단 기준 2가지
- 가장 긴 chain 기준
- 가장 무거운 chain 기준
2. 가장 긴 chain 기준
- 전제: 많은 블록을 가진 트랜잭션 이력을 만드는 데 가장 많은 계산 노력이 들어갔을 거라고 가정
- 네트워크 상 속도 차이로 인해 두 개 이상의 블록이 거의 동시에 새로 생성이 된다면?
- 길이가 같은 두 개 이상의 블록이 있으면 개별 노드가 임의로 선택함(=새로운 블록 생성해서 선택한 블록 뒤에 붙임)
- 길이가 다른 블록이 생기면 사람들이 더 긴 블록에 새 블록 붙이려 함-> 짧은 블록 자연스럽게 도태됨
- 도태되어 쓰이지 않는 블록을 만든 사람들은 추후 블록 생성 보상 반환 (필요 없거나 유효하지 않은 블록임이 밝혀지면 보상 회수)
작동 원리 - 가장 무거운 체인 기준
1. 가장 무거운 체인 기준
- 과연 ‘길이가 가장 긴 체인’이 가장 많은 노력을 소요한 체인
- 각 블록 생성 시 해시 퍼즐 난이도가 동적으로 결정됨 -> 즉 각 블록 만들어질 때 들어가는 노력 다름
- 블록 별로 난이도가 표시되어 있으니 체인 갈래가 나뉘었을 때 난이도의 합을 비교한다.
2. 선택 받지 못한 chain의 처리
- 고아 블록: 권위 블록이 아닌, 선택 받지 못한 블록
- 권위 chain이 선택되면, 나머지 가지에 속한 블록은 버려짐
- 권위 chain에 속해있지 않음 = 고아 블록 = 소유권 명확하게 하는 데에 도움 안 됨 = 보상 회수
- 고아 블록 및 그 후속 블록을 생성해서 받은 보상 회수됨
- 고아 블록에 포함된 transaction들은 발생한 적이 없던 것으로 간주
- 고아 블록에 포함되어 버려 진 transaction 수신함으로 수거됨-> 차후 다시 추가될 기회 얻게 됨
3. 블록 처리 과정
- 공통 몸통의 성장: 충돌되는 블록체인이 공통으로 연결되어 있는 부분들은 권위 체인의 일부임이 명확해짐
- 궁극적인 일관성 생김: 권위 체인에 속해 있어도 가장 나중에 붙은 블록은 다른 노드의 선택에 의해 언제든 고아 블록이 될 수 있지만, 오래 전에 만들어져 권위 체인의 안쪽에 있는 블록들은 고아 블록이 될 위험성이 없다.
- 조작에 대한 견고성 구축: 권위 체인의 일부 블록을 조작하기 위해서는 그 후로 붙어 있는 모든 불록을 다시 새로 만들어야 함 ~ 이미 만들어진 체인보다 더 빨리, 더 길게, 더 무겁게(어렵게) 만들어서 권위 체인으로 선택받는 것이 아주 어려움
조작의 방지
1. 공격자의 목표
- 권위 chain의 일부를 고아 블록으로 만듦
- 조작된 transaction들로 이루어진 새로운 블록들을 권위 chain에 포함시킴
- 공격자에게 이익을 가져다 주도록 소유권 정보를 배부
2. 조작의 다양한 관점
- 경제적 측면: transaction 이력을 변경하여 소유권 조작
- 정치적 측면: 집단적 의사결정과 관련해 원하는 결과를 얻기 위해 대다수의 표를 얻는 것
- 기술적 측면: 시스템 무결성 약화
3. 조작 방법
- 숨겨진 중앙 통제 요소를 일정 시간 이상 확보-> 시스템 상태 변경
- 예시) 51% 공격: 의사결정을 위한 권리, 힘을 얻기 위해 전체 네트워크의 51%이상 확보해야 함
4. hash puzzle을 이용한 조작 방지
- 블록 생성 시 계산 비용 높아짐 -> 조작 방지
- 기술적 관점: 불변성을 부여하기 위한 수단으로 해시 퍼즐 사용 됨
- 예시) 각각의 블록이 선거라고 하면
- 어떤 노드가 새로운 블록 생성, 배포(publish)하는 것 = 선거 출마
- 생성된 블록을 기존 블록체인 구조에 붙일 것인지 선택 = 투표
- hash puzzle은 선거 출마(새 블록 생성)에 드는 비용 증가시킴
- 아무나 출마(조작된 새 블록 생성)하는 것 억제: 부정직한 사람들이 투표에 참여하는 것 억제
블록 생성의 보장
결제 수단
1. 블록체인 시스템의 보상과 처벌
- 어떤 시스템에서 생산되는 아이템 / 그 아이템을 만들기 위한 참여자들의 노력 / 그에 대한 보상 관계
- 블록체인의 POW 방식 합의 알고리즘
- 보상: 트랜잭션 처리 수수료
- 처벌: 작업 증명에 드는 노력
- 보상을 어떤 결제 수단으로 지불할 것인가? 실제로 보상 수단을 어떻게 사용할 수 있도록 만들 것인가?
결제 수단에 대한 고려 사항
- 시스템에 미치는 영향 고려해야 함: 시스템 무결성, 개방성, 분산 속성, 시스템 철학
1. 시스템 무결성에 대한 영향
- peer들이 시스템 무결성 유지에 기여하는 이유는? 보상을 얻을 수 있기 때문
- 만약 보상인 결제 수단이 가치를 상실하거나 신뢰할 수 없다면? 쓸모 없는 보상을 받으면 작업 계속하지 않을 것
- 즉 보상으로 사용되는 결제 수단은 블록체인 자체의 가치에 직접적으로 영향을 미친다.
2. 시스템 개방성에 대한 영향
- 블록체인 = 개방형 P2P 시스템으로 누구나 자신의 컴퓨터로 시스템에 연결해서 작업, 보상 받기 가능
- 그런데 보상으로 지급되는 결제수단이 특정 국가에서만 인정되거나 이동에 제한이 있다면?
- 일은 누구나 할 수 있는데 보상을 언제 어디서나 자유롭게 사용하기 힘들다면 기술적 개방성과 정면으로 배치되어 신뢰성 하락
3. 시스템의 분산 속성에 대한 영향
- 블록체인 = 중앙 통제, 조정 요소 없는 ‘순수한’ 분산 P2P 시스템
- 그런데 피어에게 보상하기 위해 사용하는 지불수단이 어떤 단일 중앙기관에 의해 통제, 제어된다면?
- 뒷문을 통해 중앙 통제를 허용하는 꼴이 되어 분산 속성과 정면으로 상충됨
4. 시스템 철학에 대한 영향
- 보상으로 지급되는 결제수단의 성격에 따라 블록체인 시스템이 추구하는 가치와 상반되는 결과 발생
- 신뢰성을 확보하기 위해 중앙 통제 요소 없이 설계된 시스템에서 보상 때문에 시스템 전체에 대한 신뢰성 무너짐
BlockChain에 적합한 결제 수단 (=완전한 국제 통화가 갖춰야 할 조건)
1. Digital 형태로 제공해야 함
- 블록체인에 포함될 수 있어야 함
2. 실생활에서 결제 수단으로 인정받아야 함
- 일반 상품 구매에 사용이 가능해야 함
- peer들이 받은 보상에 대한 가치 부여 필요
3. 모든 국가에서 결제 수단으로 인정받아야 함
- 이를 인정하지 않는 국가에서는 사용자의 참여가 불가능하도록 해야 함
4. 이동에 제한이 없어야 함
- peer들 간 결제 수단의 이전이 가능해야 함: 이로 인해 통화로서의 의미, 가치가 부여됨
5. 안정적인 가치를 유지해야 함
- 구매력 상실이라는 경제적 위험성 방지: 가치 폭락 -> 전부 팔아버림 or 네트워크 이탈
- 채산성(채굴에 참여할 만한 보상을 주어야 한다.)이 맞지 않는 경우
- 가치 폭등 -> 코인 팔지 않고 보유만 -> 경제활동을 위해 쓰이지 않음
6. 신뢰할 수 있어야 함
- 신뢰를 생성하는 블록체인의 능력 유지
7. 단일 중앙기관이나 국가에 의해 통제 받아서는 안 됨
- 블록체인의 분산 속성 지켜야 함
8. Bitcoin이 보상으로 등장한 배경
- 기존 통화 중 위의 완전한 국제통화의 조건을 전부 갖춘 통화는 존재하지 않는다.
- 예시) 미국 달러: 이동에 제한 있음 / 미국 단일 국가의 통제
- 반대로 모든 조건 만족하는 통화 나온다면? 분산 시스템에서 보상 외에 우리의 모든 경제활동에서 이 결제수단 사용 가능
9. 비트코인
- 새로운 종류의 Digital 홮폐 소유권을 관리하는 순수 분산 P2P 시스템
- 블록체인-데이터-구조의 새 블록을 생성, 검증하는 peer에 대한 보상으로 사용됨
- 암호 화폐 = 블록체인 암호화 기법에 기반한 화폐
10. 비트코인은 완전한 국제 통화의 7가지 기준을 만족하는가?
- 디지털 형테로 제공[o]
- 실생활에서 결제 수단으로 인정[x]: 아직 암호화폐에 대한 법적 지위가 정의되지 않음
- 모든 국가에서 결제 수단으로 인정[x]: 아직 극히 일부 국가에서만 가능
- 이동에 제한이 없어야 한다. [x]: 내부 교환은 가능, 그러나 법정 화폐롤 교환은 아직
- 안정적인 가치 유지[x]: 가치 변동성 심함
- 신뢰할 수 있어야 한다. [o]: 덩치 큰 시스템이 되어 해킹하기 어려움
- 단일 중앙 기관, 국가에 의한 통제 아님[o]
댓글남기기