マークルツリーでsha256のハッシュ計算を行う際に、単純にハッシュ値をつなぎ合わせて、それをさらにsha256で計算しているようだ。
トランザクション1とトランザクション2からのハッシュ値は何度実行しても同じになる。
import hashlib tx1 = 'abc' tx2 = 'cde' tx1hash = hashlib.sha256(tx1.encode()).hexdigest() print(tx1hash) tx2hash = hashlib.sha256(tx2.encode()).hexdigest() print(tx2hash) tx12 = tx1hash + tx2hash tx12hash = hashlib.sha256(tx12.encode()).hexdigest() print(tx12hash)
$ python3 test.py
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
08a018a9549220d707e11c5c4fe94d8dd60825f010e71efaa91e5e784f364d7b
e7ea6d8ded8ff13bb4e3fccadb13878004f69bad2d3d9d33f071c13a650303ba