Add basic `test_verify_merkle_proof` and `test_verify_merkle_multiproof` tests

This commit is contained in:
Hsiao-Wei Wang 2019-08-20 20:57:37 +08:00
parent d6bbd9bfa1
commit 7409b5ae82
No known key found for this signature in database
GPG Key ID: 95B070122902DEA4
1 changed files with 50 additions and 0 deletions

View File

@ -96,3 +96,53 @@ def test_get_generalized_index(spec, state):
yield 'typ', typ yield 'typ', typ
yield 'path', path yield 'path', path
yield 'generalized_index', generalized_index yield 'generalized_index', generalized_index
@with_all_phases_except(['phase0'])
@spec_state_test
def test_verify_merkle_proof(spec, state):
h = spec.hash
a = b'\x11' * 32
b = b'\x22' * 32
c = b'\x33' * 32
d = b'\x44' * 32
root = h(h(a + b) + h(c + d))
leaf = a
generalized_index = 4
proof = [b, h(c + d)]
is_valid = spec.verify_merkle_proof(
leaf=leaf,
proof=proof,
index=generalized_index,
root=root,
)
assert is_valid
yield 'proof', proof
yield 'is_valid', is_valid
@with_all_phases_except(['phase0'])
@spec_state_test
def test_verify_merkle_multiproof(spec, state):
h = spec.hash
a = b'\x11' * 32
b = b'\x22' * 32
c = b'\x33' * 32
d = b'\x44' * 32
root = h(h(a + b) + h(c + d))
leaves = [a, d]
generalized_indices = [4, 7]
proof = [c, b] # helper_indices = [6, 5]
is_valid = spec.verify_merkle_multiproof(
leaves=leaves,
proof=proof,
indices=generalized_indices,
root=root,
)
assert is_valid
yield 'proof', proof
yield 'is_valid', is_valid