X-Git-Url: https://git.novaco.in/?p=stratum-mining.git;a=blobdiff_plain;f=lib%2Fmerkletree.py;fp=lib%2Fmerkletree.py;h=18545c075bda17141070991aaf9885a9c8bf47b6;hp=8233019fdacee077e2a42806a53442a2bc1aacbf;hb=679245b565edcb2a03d865df3c08e86c0d6f402d;hpb=8a7474eb0eefdbc68e9b57371a68c25f33427f0d diff --git a/lib/merkletree.py b/lib/merkletree.py index 8233019..18545c0 100644 --- a/lib/merkletree.py +++ b/lib/merkletree.py @@ -22,7 +22,7 @@ class MerkleTree: self.data = data self.recalculate(detailed) self._hash_steps = None - + def recalculate(self, detailed=False): L = self.data steps = [] @@ -48,26 +48,26 @@ class MerkleTree: Ll = len(L) self._steps = steps self.detail = detail - + def hash_steps(self): if self._hash_steps == None: self._hash_steps = doublesha(''.join(self._steps)) return self._hash_steps - + def withFirst(self, f): steps = self._steps for s in steps: f = doublesha(f + s) return f - + def merkleRoot(self): return self.withFirst(self.data[0]) # MerkleTree tests def _test(): import binascii - import time - + import time + mt = MerkleTree([None] + [binascii.unhexlify(a) for a in [ '999d2c8bb6bda0bf784d9ebeb631d711dbbbfe1bc006ea13d6ad0d6a2649a971', '3f92594d5a3d7b4df29d7dd7c46a0dac39a96e751ba0fc9bab5435ea5e22a19d', @@ -78,7 +78,7 @@ def _test(): b'82293f182d5db07d08acf334a5a907012bbb9990851557ac0ec028116081bd5a' == binascii.b2a_hex(mt.withFirst(binascii.unhexlify('d43b669fb42cfa84695b844c0402d410213faa4f3e66cb7248f688ff19d5e5f7'))) ) - + print '82293f182d5db07d08acf334a5a907012bbb9990851557ac0ec028116081bd5a' txes = [binascii.unhexlify(a) for a in [ 'd43b669fb42cfa84695b844c0402d410213faa4f3e66cb7248f688ff19d5e5f7', @@ -87,7 +87,7 @@ def _test(): 'a5633f03855f541d8e60a6340fc491d49709dc821f3acb571956a856637adcb6', '28d97c850eaf917a4c76c02474b05b70a197eaefb468d21c22ed110afe8ec9e0', ]] - + s = time.time() mt = MerkleTree(txes) for x in range(100): @@ -100,4 +100,4 @@ def _test(): print time.time() - s if __name__ == '__main__': - _test() \ No newline at end of file + _test()