prefix = 익스텐션노드는 0, 리프노드 홀수 3, 짝수 2
branch, extension 두개의 노드가 반복되며 leaf 노드에서 마무리되며 value 값을 찾게 된다.
패트리샤 트라이로 value 를 찾을땐 아래의 그림과 같이 key 를 따라간다.
예시로 'duck' 이라는 value 를 찾으려고 한다면, 395 라는 key 를 따라가야한다.
- 최상단 merkle Hash 의 '3' 을 가지고 hashA 로 이동한다.
- hashA 에서 merkle hash 의 '9' 를 가지고 hashC 로 이동한다.
- hashC 에서 merkle hash 의 '5' 를 가지고 hashD 로 이동한다.
- hashD 에서 그대로 data 값인 duck 을 읽어온다. (key = '395' : value = 'duck')
주관적으로 번역 및 해석한 요약이다.
이중지불 문제를 해결한 제3자 중개인이 없는 P2P 네트워크를 만들었다.
이 네트워크는 정직한 노드들의 CPU 파워가 공격자 노드들의 CPU 파워를 통제할 수 있을때는 안전하다.
전자 화폐를 디지털서명의 체인으로 정의한다.
이중지불 문제를 해결하는 유일한 방법은, 모든 결제를 확인하는 것.
모든 거래를 확인하기 위해 중앙화된 은행에서 컨트롤 하는 것이 방법이지만, 중앙화 되어있다.
첫 번째 해결방안은 타임스탬프 서버이다.
타임스탬프와 함께 해시를 퍼블리싱한 후, 뉴스나 유즈넷 처럼 널리 배포한다.
해시는 이전의 타임스탬프 값을 포함하고 추가되는 타임스탬프에도 똑같이 적용한다.
P2P 를 기반으로한 배포된 타임스탬프 서버는 작업증명 방식을 사용해야 할 필요가 있다.
작업증명 방식은 몇개의 0비트로 시작하는 SHA-256 의 해시를 찾아내는 것이다.
작업증명 방식은 다수결의 원칙 문제도 해결할 수 있다. 1 IP 당 1 투표가 가능했던 것이, 작업증명 방식에서는 1 CPU 1 투표이다.
만약, 정직한 노드들이 다수의 CPU 파워를 컨트롤 할 수 있다면, 다른 경쟁 노드보다 빠르게 체인을 이어나갈 수 있을 것이다.
공격자들이 과거의 블록을 변경시키려면 현재 정직한 노드들의 블록을 앞질러야 한다.
작업증명 방식의 난이도는 시간당 블록생성 평균과 타겟값에 따라 결정된다.
너무 빠르게 블록이 생성된다면, 난이도는 올라갈 것이다.
5장은 다음 TIL 에서..