링크: http://slides.com/dongsunlim/deck-3-4#/
3강. 작업 증명
- 이전 강의:
1. 암호학적 해시 함수: A와 B가 소통하는 메세지(m)의 보안 증가
2. 비대칭키 암호학: A와 B가 소통하는 채널의 보안 증가
나. 이번 강의:
1. A와 B의 거래 데이터를 네트워크에 전송할 때 보안을 보장하는 방법
2. 거래 네트워크: A와 B가 전송한 데이터를 하나의 거래 데이터라고 할 때 이와 동일하게 서로
거래 데이터를 전송한 여러 노드(예 C, D, E)가 있을 때 이들 사이에 데이터를 전송하는 방법
다. 문제점
1.악의적 정보:
예시) 이중 지불 문제(Double Spending Problem): A가 B에게 코인을 지불한 후 같은 코인을 C에게 다시
지불했을 때 생기는 문제
2. 무의미한 정보:
예시) 콩 심은데 콩 나고 밭 심은데 팥 난다(Garbage in, garbage out problem): 사용자가 쓸모없는
정보를 입력한다면 저장된 데이터는 쓸모 없는 정보로 가득하게 됨
라. 중앙 서버 모델
중앙 서버 모델: 중앙 관리자가 모든 데이터를 수집 및 관리함
문제: 중앙 관리자 실패 및 중앙 관리자 신뢰 문제
마. 분산원장 모델
분산원장 모델: 각 노드의 데이터를 하나로 모아서 공공 원장을 만들고 그 원장을 각 노드가 소유함
문제: 각 노드가 공공원장을 저장 및 검증해야 함
바. 분산 원장 생성 과정
1. 노드 전송: 모든 거래 데이터가 각 분산 노드에게 전송됨
2. 검증 및 원장(블록) 생성: 각 노드(예 A)는 전송된 데이터를 검증한 후 통합하여 원장(블록)을 생성함
3. 원장(블록) 검증: 생성된 원장(블록)을 모든 노드(예 B, C, D)에 전달하고 각 노드가 이를 검증함
사. 원장(블록)의 구성
1. 거래 데이터
2. 블록해더: 블록 메타 데이터(블록 버전, 이전 블락해더 해시, 거래 데이터 머클루트, 시간, 비트(타겟), 난수)
의 해시 값. 각 노드는 해더를 생성하기 위해 타겟에 충족하는 난수 값을 찾아야 함
아. 블록해더 해시 계산 과정
1. 타겟: 블록해더 해시가 충족해야 하는 최소값
난이도: 타겟 X 난이도 = 최대 타겟
2. 난수: 블록해더 해시가 타겟 값을 총족할 때까지 더해지는 임의의 값
3. 노드가 타겟을 충족하는 해시 값을 찾으면 블록해더를 완성하고 블록을 다른 노드에게 전송함
자. 네트워크 합의 문제:
1. 난이도 설정: 해시파워가 비약적으로 높은 참여자가 나타나거나 운이 매우 좋은 참여자가 해시 값을
지속적으로 빠른 시간 내에 찾아낼 경우 블록 생성 시간이 너무 짧아질 수 있음
2. 블록 동시 생성: 우연히 다른 두 사용자가 같은 시간에 블록을 생성 했을 경우 네트워크가 분열(포킹)할
수 있는 가능성이 생김
차. 비트코인 백서 참조:
1. “작업증명의 난이도는 시간 당 생성되는 평균 블록수의 평균 변화에 따라 결정된다”
: 단위 시간(T1,T2) 내에 생성되는 블록의 수가 다를 경우 그 차이만큼 난이도를 조정함
예시) 현재 비트코인은 2주 동안 2016블록을 생성하는 것을 기준으로 난이도를 조정함(10분당 1블록)
2. “노드는 항상 가장 긴 체인을 옳은 체인으로 간주한다”
: 네트워크 분열(포킹)이 생긴 경우 사용자는 포킹된 두 블록 중 원하는 블록 위에 작업을 지속함. 이후
블록이 더 빨리 더 많이 생성된 블록이 네트워크의 승자가 됨
카. 인센티브의 문제:
1. 네트워크 검증 인센티브: 인센티브가 없으면 노드가 검증을 수행할 이유도 원장을 생성할 이유도 없어짐
2. 거래포함 인센티브: 네트워크에 존재하는 최대한 많은 거래를 하나의 블록에 포함할 인센티브가 필요함
파. 인센티브
1. 네트워크 검증 인센티브: 분산원장을 생성하는 채굴자는 첫 번째 거래에 자신의 디지털 사인과 난수를
포함하고 성공적으로 해더 해시를 생성하면 채굴에 대한 보상으로 일정 화폐를 받음
2. 거래포함 인센티브: A가 B에게 코인을 전송하여 거래를 생성할 때 A는 일정 양의 수수료를 거래 데이터에
포함하여 채굴자에게 지불함