It woooooorks
This commit is contained in:
parent
30491c2c55
commit
ebbb494fb3
|
@ -60,9 +60,7 @@ lazy_static! {
|
||||||
let mut v = vec![[0u8; 32]];
|
let mut v = vec![[0u8; 32]];
|
||||||
|
|
||||||
for d in 0..MERKLE_DEPTH {
|
for d in 0..MERKLE_DEPTH {
|
||||||
|
v.push(merkle_crh_sprout(v[d], v[d]));
|
||||||
let next = merkle_crh_sprout(v[d], v[d]);
|
|
||||||
v.push(next);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
v
|
v
|
||||||
|
@ -140,7 +138,9 @@ impl From<Vec<NoteCommitment>> for NoteCommitmentTree {
|
||||||
} else {
|
} else {
|
||||||
right = current_layer.remove(0);
|
right = current_layer.remove(0);
|
||||||
}
|
}
|
||||||
next_layer_up.push(merkle_crh_sprout(left, right));
|
let node = merkle_crh_sprout(left, right);
|
||||||
|
|
||||||
|
next_layer_up.push(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
height += 1;
|
height += 1;
|
||||||
|
@ -535,24 +535,27 @@ mod tests {
|
||||||
"206a202bd08dd31f77afc7114b17850192b83948cff5828df0d638cbe734c884",
|
"206a202bd08dd31f77afc7114b17850192b83948cff5828df0d638cbe734c884",
|
||||||
];
|
];
|
||||||
|
|
||||||
// From https://github.com/zcash/zcash/blob/master/src/test/data/merkle_roots.json
|
// Calculated by the above implementation for MERKLE_DEPTH = 29 by the
|
||||||
|
// same code confirmed to produce the test vectors from
|
||||||
|
// https://github.com/zcash/zcash/blob/master/src/test/data/merkle_roots.json
|
||||||
|
// when MERKLE_DEPTH = 4.
|
||||||
let roots = [
|
let roots = [
|
||||||
"95bf71d8e803b8601c14b5949d0f92690181154ef9d82eb3e24852266823317a",
|
"b8e10b6c157be92c43a733e2c9bddb963a2fb9ea80ebcb307acdcc5fc89f1656",
|
||||||
"73f18d3f9cd11010aa01d4f444039e566f14ef282109df9649b2eb75e7a53ed1",
|
"83a7754b8240699dd1b63bf70cf70db28ffeb74ef87ce2f4dd32c28ae5009f4f",
|
||||||
"dcde8a273c9672bee1a894d7f7f4abb81078f52b498e095f2a87d0aec5addf25",
|
"c45297124f50dcd3f78eed017afd1e30764cd74cdf0a57751978270fd0721359",
|
||||||
"4677d481ec6d1e97969afbc530958d1cbb4f1c047af6fdad4687cd10830e02bd",
|
"b61f588fcba9cea79e94376adae1c49583f716d2f20367141f1369a235b95c98",
|
||||||
"74cd9d82de30c4222a06d420b75522ae1273729c1d8419446adf1184df61dc69",
|
"a3165c1708f0cc028014b9bf925a81c30091091ca587624de853260cd151b524",
|
||||||
"2ff57f5468c6afdad30ec0fb6c2cb67289f12584e2c20c4e0065f66748697d77",
|
"6bb8c538c550abdd26baa2a7510a4ae50a03dc00e52818b9db3e4ffaa29c1f41",
|
||||||
"27e4ce010670801911c5765a003b15f75cde31d7378bd36540f593c8a44b3011",
|
"e04e4731085ba95e3fa7c8f3d5eb9a56af63363403b783bc68802629c3fe505b",
|
||||||
"62231ef2ec8c4da461072871ab7bc9de10253fcb40e164ddbad05b47e0b7fb69",
|
"c3714ab74d8e3984e8b58a2b4806934d20f6e67d7246cf8f5b2762305294a0ea",
|
||||||
"733a4ce688fdf07efb9e9f5a4b2dafff87cfe198fbe1dff71e028ef4cdee1f1b",
|
"63657edeead4bc45610b6d5eb80714a0622aad5788119b7d9961453e3aacda21",
|
||||||
"df39ed31924facdd69a93db07311d45fceac7a4987c091648044f37e6ecbb0d2",
|
"e31b80819221718440c5351525dbb902d60ed16b74865a2528510959a1960077",
|
||||||
"87795c069bdb55281c666b9cb872d13174334ce135c12823541e9536489a9107",
|
"872f13df2e12f5503c39100602930b0f91ea360e5905a9f5ceb45d459efc36b2",
|
||||||
"438c80f532903b283230446514e400c329b29483db4fe9e279fdfc79e8f4347d",
|
"bdd7105febb3590832e946aa590d07377d1366cf5e7267507efa399dd0febdbc",
|
||||||
"08afb2813eda17e94aba1ab28ec191d4af99283cd4f1c5a04c0c2bc221bc3119",
|
"0f45f4adcb846a8bb56833ca0cae96f2fb8747958daa191a46d0f9d93268260a",
|
||||||
"a8b3ab3284f3288f7caa21bd2b69789a159ab4188b0908825b34723305c1228c",
|
"41c6e456e2192ab74f72cb27c444a2734ca8ade5a4788c1bc2546118dda01778",
|
||||||
"db9b289e620de7dca2ae8fdac96808752e32e7a2c6d97ce0755dcebaa03123ab",
|
"8261355fd9bafc52a08d738fed29a859fbe15f2e74a5353954b150be200d0e16",
|
||||||
"0bf622cb9f901b7532433ea2e7c1b7632f5935899b62dcf897a71551997dc8cc",
|
"90665cb8a43001f0655169952399590cd17f99165587c1dd842eb674fb9f0afe",
|
||||||
];
|
];
|
||||||
|
|
||||||
let mut leaves = vec![];
|
let mut leaves = vec![];
|
||||||
|
@ -560,6 +563,10 @@ mod tests {
|
||||||
for (i, cm) in commitments.iter().enumerate() {
|
for (i, cm) in commitments.iter().enumerate() {
|
||||||
let mut bytes = [0u8; 32];
|
let mut bytes = [0u8; 32];
|
||||||
let _ = hex::decode_to_slice(cm, &mut bytes);
|
let _ = hex::decode_to_slice(cm, &mut bytes);
|
||||||
|
|
||||||
|
// Byte-reverse
|
||||||
|
bytes.reverse();
|
||||||
|
|
||||||
leaves.push(NoteCommitment::from(bytes));
|
leaves.push(NoteCommitment::from(bytes));
|
||||||
|
|
||||||
let tree = NoteCommitmentTree::from(leaves.clone());
|
let tree = NoteCommitmentTree::from(leaves.clone());
|
||||||
|
|
Loading…
Reference in New Issue