
밑바닥부터 시작하는 비트코인
286
그림
11-5
머클증명
11.8.1
머클트리 구조
라이트 노드는 먼저 머클트리의 일반적인 구조를 만듭니다. 머클트리는 단말 노드에서 루트 노
드 방향으로 생성되기 때문에 라이트 노드는 단말 노드의 개수만 알면 머클트리의 구조를 알
수 있습니다. [그림
11
-
5
]에서 머클트리는
16
개의 단말 노드를 가지고 있습니다. 라이트 노드
에서는 일단 다음과 같이
None
값으로 채워진 머클트리를 생성할 수 있습니다.
>>> import math
>>> total = 16
>>> max_depth = math.ceil(math.log(total, 2))
➊
>>> merkle_tree = []
➋
>>> for depth in range(max_depth + 1):
➌
... num_items = math.ceil(total / 2**(max_depth - depth))
➍
... level_hashes = [None] * num_items
➎
... merkle_tree.append(level_hashes)
➏
>>> for level in merkle_tree:
... print(level)
[None]
[None, None]
[None, None, None, None]
[None, None, None, None, None, None, None, None ...