Auto merge of #5251 - nuttycom:manual_incrementalmerkletree_ser, r=str4d
Use manual serialization for Merkle frontiers rather than bincode.
This commit is contained in:
commit
a496afd9c2
|
@ -10,7 +10,19 @@ checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes-soft",
|
"aes-soft",
|
||||||
"aesni",
|
"aesni",
|
||||||
"cipher",
|
"cipher 0.2.5",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aes"
|
||||||
|
version = "0.7.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "495ee669413bfbe9e8cace80f4d3d78e6d8c8d99579f97fb93bde351b185f2d4"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if 1.0.0",
|
||||||
|
"cipher 0.3.0",
|
||||||
|
"cpufeatures",
|
||||||
|
"opaque-debug",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -19,7 +31,7 @@ version = "0.6.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072"
|
checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cipher",
|
"cipher 0.2.5",
|
||||||
"opaque-debug",
|
"opaque-debug",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -29,7 +41,7 @@ version = "0.10.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce"
|
checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cipher",
|
"cipher 0.2.5",
|
||||||
"opaque-debug",
|
"opaque-debug",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -137,15 +149,6 @@ dependencies = [
|
||||||
"crunchy",
|
"crunchy",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "bincode"
|
|
||||||
version = "1.3.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bip0039"
|
name = "bip0039"
|
||||||
version = "0.8.0"
|
version = "0.8.0"
|
||||||
|
@ -216,7 +219,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "57a0e8073e8baa88212fb5823574c02ebccb395136ba9a164ab89379ec6072f0"
|
checksum = "57a0e8073e8baa88212fb5823574c02ebccb395136ba9a164ab89379ec6072f0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"block-padding",
|
"block-padding",
|
||||||
"cipher",
|
"cipher 0.2.5",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "block-modes"
|
||||||
|
version = "0.8.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2cb03d1bed155d89dce0f845b7899b18a9a163e148fd004e1c28421a783e2d8e"
|
||||||
|
dependencies = [
|
||||||
|
"block-padding",
|
||||||
|
"cipher 0.3.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -293,6 +306,15 @@ dependencies = [
|
||||||
"generic-array",
|
"generic-array",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cipher"
|
||||||
|
version = "0.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7"
|
||||||
|
dependencies = [
|
||||||
|
"generic-array",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "constant_time_eq"
|
name = "constant_time_eq"
|
||||||
version = "0.1.5"
|
version = "0.1.5"
|
||||||
|
@ -546,7 +568,7 @@ checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "equihash"
|
name = "equihash"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/zcash/librustzcash.git?rev=98dc330cdb1c96e980e62b5bc901edbaa128fea2#98dc330cdb1c96e980e62b5bc901edbaa128fea2"
|
source = "git+https://github.com/zcash/librustzcash.git?rev=19a97f16945c68c33aedcc89f2a4f4d398658b05#19a97f16945c68c33aedcc89f2a4f4d398658b05"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"blake2b_simd",
|
"blake2b_simd",
|
||||||
"byteorder",
|
"byteorder",
|
||||||
|
@ -575,9 +597,23 @@ version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a25080721bbcd2cd4d765b7d607ea350425fa087ce53cd3e31afcacdab850352"
|
checksum = "a25080721bbcd2cd4d765b7d607ea350425fa087ce53cd3e31afcacdab850352"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes",
|
"aes 0.6.0",
|
||||||
"block-modes",
|
"block-modes 0.7.0",
|
||||||
"num-bigint",
|
"num-bigint 0.3.2",
|
||||||
|
"num-integer",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "fpe"
|
||||||
|
version = "0.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "fcf3e40fc9accc7218e082db8a75aeea244b8f5db73e591774ef93b4276365e6"
|
||||||
|
dependencies = [
|
||||||
|
"block-modes 0.8.1",
|
||||||
|
"cipher 0.3.0",
|
||||||
|
"libm",
|
||||||
|
"num-bigint 0.4.0",
|
||||||
"num-integer",
|
"num-integer",
|
||||||
"num-traits",
|
"num-traits",
|
||||||
]
|
]
|
||||||
|
@ -789,7 +825,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "incrementalmerkletree"
|
name = "incrementalmerkletree"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/zcash/incrementalmerkletree?rev=8b59049f1746827ffa3763efa8af948f680491d0#8b59049f1746827ffa3763efa8af948f680491d0"
|
source = "git+https://github.com/zcash/incrementalmerkletree?rev=b7bd6246122a6e9ace8edb51553fbf5228906cbb#b7bd6246122a6e9ace8edb51553fbf5228906cbb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
@ -850,12 +886,17 @@ version = "0.2.98"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790"
|
checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libm"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "librustzcash"
|
name = "librustzcash"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bellman",
|
"bellman",
|
||||||
"bincode",
|
|
||||||
"blake2b_simd",
|
"blake2b_simd",
|
||||||
"blake2s_simd",
|
"blake2s_simd",
|
||||||
"bls12_381",
|
"bls12_381",
|
||||||
|
@ -1073,6 +1114,17 @@ dependencies = [
|
||||||
"num-traits",
|
"num-traits",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-bigint"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4e0d047c1062aa51e256408c560894e5251f08925980e53cf1aa5bd00eec6512"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"num-integer",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-integer"
|
name = "num-integer"
|
||||||
version = "0.1.44"
|
version = "0.1.44"
|
||||||
|
@ -1117,15 +1169,15 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "orchard"
|
name = "orchard"
|
||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
source = "git+https://github.com/zcash/orchard.git?rev=8454f86d423edbf0b53a1d5d32df1c691f8b7188#8454f86d423edbf0b53a1d5d32df1c691f8b7188"
|
source = "git+https://github.com/zcash/orchard.git?rev=d0baa18fc6105df4a7847de2b6dc50c5919b3123#d0baa18fc6105df4a7847de2b6dc50c5919b3123"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes",
|
"aes 0.6.0",
|
||||||
"arrayvec 0.7.1",
|
"arrayvec 0.7.1",
|
||||||
"bigint",
|
"bigint",
|
||||||
"bitvec",
|
"bitvec",
|
||||||
"blake2b_simd",
|
"blake2b_simd",
|
||||||
"ff",
|
"ff",
|
||||||
"fpe",
|
"fpe 0.4.0",
|
||||||
"group",
|
"group",
|
||||||
"halo2",
|
"halo2",
|
||||||
"incrementalmerkletree",
|
"incrementalmerkletree",
|
||||||
|
@ -1802,7 +1854,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zcash_address"
|
name = "zcash_address"
|
||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
source = "git+https://github.com/zcash/librustzcash.git?rev=98dc330cdb1c96e980e62b5bc901edbaa128fea2#98dc330cdb1c96e980e62b5bc901edbaa128fea2"
|
source = "git+https://github.com/zcash/librustzcash.git?rev=19a97f16945c68c33aedcc89f2a4f4d398658b05#19a97f16945c68c33aedcc89f2a4f4d398658b05"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bech32",
|
"bech32",
|
||||||
"blake2b_simd",
|
"blake2b_simd",
|
||||||
|
@ -1812,7 +1864,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zcash_history"
|
name = "zcash_history"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
source = "git+https://github.com/zcash/librustzcash.git?rev=98dc330cdb1c96e980e62b5bc901edbaa128fea2#98dc330cdb1c96e980e62b5bc901edbaa128fea2"
|
source = "git+https://github.com/zcash/librustzcash.git?rev=19a97f16945c68c33aedcc89f2a4f4d398658b05#19a97f16945c68c33aedcc89f2a4f4d398658b05"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bigint",
|
"bigint",
|
||||||
"blake2b_simd",
|
"blake2b_simd",
|
||||||
|
@ -1822,7 +1874,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zcash_note_encryption"
|
name = "zcash_note_encryption"
|
||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
source = "git+https://github.com/zcash/librustzcash.git?rev=98dc330cdb1c96e980e62b5bc901edbaa128fea2#98dc330cdb1c96e980e62b5bc901edbaa128fea2"
|
source = "git+https://github.com/zcash/librustzcash.git?rev=19a97f16945c68c33aedcc89f2a4f4d398658b05#19a97f16945c68c33aedcc89f2a4f4d398658b05"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"blake2b_simd",
|
"blake2b_simd",
|
||||||
"byteorder",
|
"byteorder",
|
||||||
|
@ -1836,9 +1888,9 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zcash_primitives"
|
name = "zcash_primitives"
|
||||||
version = "0.5.0"
|
version = "0.5.0"
|
||||||
source = "git+https://github.com/zcash/librustzcash.git?rev=98dc330cdb1c96e980e62b5bc901edbaa128fea2#98dc330cdb1c96e980e62b5bc901edbaa128fea2"
|
source = "git+https://github.com/zcash/librustzcash.git?rev=19a97f16945c68c33aedcc89f2a4f4d398658b05#19a97f16945c68c33aedcc89f2a4f4d398658b05"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes",
|
"aes 0.7.4",
|
||||||
"bip0039",
|
"bip0039",
|
||||||
"bitvec",
|
"bitvec",
|
||||||
"blake2b_simd",
|
"blake2b_simd",
|
||||||
|
@ -1848,9 +1900,10 @@ dependencies = [
|
||||||
"crypto_api_chachapoly",
|
"crypto_api_chachapoly",
|
||||||
"equihash",
|
"equihash",
|
||||||
"ff",
|
"ff",
|
||||||
"fpe",
|
"fpe 0.5.0",
|
||||||
"group",
|
"group",
|
||||||
"hex",
|
"hex",
|
||||||
|
"incrementalmerkletree",
|
||||||
"jubjub",
|
"jubjub",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
"log",
|
"log",
|
||||||
|
@ -1867,7 +1920,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zcash_proofs"
|
name = "zcash_proofs"
|
||||||
version = "0.5.0"
|
version = "0.5.0"
|
||||||
source = "git+https://github.com/zcash/librustzcash.git?rev=98dc330cdb1c96e980e62b5bc901edbaa128fea2#98dc330cdb1c96e980e62b5bc901edbaa128fea2"
|
source = "git+https://github.com/zcash/librustzcash.git?rev=19a97f16945c68c33aedcc89f2a4f4d398658b05#19a97f16945c68c33aedcc89f2a4f4d398658b05"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bellman",
|
"bellman",
|
||||||
"blake2b_simd",
|
"blake2b_simd",
|
||||||
|
|
15
Cargo.toml
15
Cargo.toml
|
@ -21,7 +21,6 @@ crate-type = ["staticlib"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
bellman = "0.10"
|
bellman = "0.10"
|
||||||
bincode = "1.3"
|
|
||||||
blake2b_simd = "0.5"
|
blake2b_simd = "0.5"
|
||||||
blake2s_simd = "0.5"
|
blake2s_simd = "0.5"
|
||||||
bls12_381 = "0.5"
|
bls12_381 = "0.5"
|
||||||
|
@ -65,11 +64,11 @@ codegen-units = 1
|
||||||
[patch.crates-io]
|
[patch.crates-io]
|
||||||
ed25519-zebra = { git = "https://github.com/ZcashFoundation/ed25519-zebra.git", rev = "d3512400227a362d08367088ffaa9bd4142a69c7" }
|
ed25519-zebra = { git = "https://github.com/ZcashFoundation/ed25519-zebra.git", rev = "d3512400227a362d08367088ffaa9bd4142a69c7" }
|
||||||
halo2 = { git = "https://github.com/zcash/halo2.git", rev = "27c4187673a9c6ade13fbdbd4f20955530c22d7f" }
|
halo2 = { git = "https://github.com/zcash/halo2.git", rev = "27c4187673a9c6ade13fbdbd4f20955530c22d7f" }
|
||||||
incrementalmerkletree = { git = "https://github.com/zcash/incrementalmerkletree", rev = "8b59049f1746827ffa3763efa8af948f680491d0" }
|
incrementalmerkletree = { git = "https://github.com/zcash/incrementalmerkletree", rev = "b7bd6246122a6e9ace8edb51553fbf5228906cbb" }
|
||||||
jubjub = { git = "https://github.com/zkcrypto/jubjub.git", rev = "96ab4162b83303378eae32a326b54d88b75bffc2" }
|
jubjub = { git = "https://github.com/zkcrypto/jubjub.git", rev = "96ab4162b83303378eae32a326b54d88b75bffc2" }
|
||||||
orchard = { git = "https://github.com/zcash/orchard.git", rev = "8454f86d423edbf0b53a1d5d32df1c691f8b7188" }
|
orchard = { git = "https://github.com/zcash/orchard.git", rev = "d0baa18fc6105df4a7847de2b6dc50c5919b3123" }
|
||||||
zcash_address = { git = "https://github.com/zcash/librustzcash.git", rev = "98dc330cdb1c96e980e62b5bc901edbaa128fea2" }
|
zcash_address = { git = "https://github.com/zcash/librustzcash.git", rev = "19a97f16945c68c33aedcc89f2a4f4d398658b05" }
|
||||||
zcash_history = { git = "https://github.com/zcash/librustzcash.git", rev = "98dc330cdb1c96e980e62b5bc901edbaa128fea2" }
|
zcash_history = { git = "https://github.com/zcash/librustzcash.git", rev = "19a97f16945c68c33aedcc89f2a4f4d398658b05" }
|
||||||
zcash_note_encryption = { git = "https://github.com/zcash/librustzcash.git", rev = "98dc330cdb1c96e980e62b5bc901edbaa128fea2" }
|
zcash_note_encryption = { git = "https://github.com/zcash/librustzcash.git", rev = "19a97f16945c68c33aedcc89f2a4f4d398658b05" }
|
||||||
zcash_primitives = { git = "https://github.com/zcash/librustzcash.git", rev = "98dc330cdb1c96e980e62b5bc901edbaa128fea2" }
|
zcash_primitives = { git = "https://github.com/zcash/librustzcash.git", rev = "19a97f16945c68c33aedcc89f2a4f4d398658b05" }
|
||||||
zcash_proofs = { git = "https://github.com/zcash/librustzcash.git", rev = "98dc330cdb1c96e980e62b5bc901edbaa128fea2" }
|
zcash_proofs = { git = "https://github.com/zcash/librustzcash.git", rev = "19a97f16945c68c33aedcc89f2a4f4d398658b05" }
|
||||||
|
|
|
@ -50,7 +50,7 @@ impl FromAddress for UnifiedAddressHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UnifiedAddressHelper {
|
impl UnifiedAddressHelper {
|
||||||
fn to_cpp(
|
fn into_cpp(
|
||||||
self,
|
self,
|
||||||
network: Network,
|
network: Network,
|
||||||
ua_obj: Option<UnifiedAddressObj>,
|
ua_obj: Option<UnifiedAddressObj>,
|
||||||
|
@ -145,7 +145,7 @@ pub extern "C" fn zcash_address_parse_unified(
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
ua.to_cpp(network, ua_obj, sapling_cb, p2sh_cb, p2pkh_cb, unknown_cb)
|
ua.into_cpp(network, ua_obj, sapling_cb, p2sh_cb, p2pkh_cb, unknown_cb)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
|
|
|
@ -88,6 +88,7 @@ pub extern "system" fn librustzcash_mmr_append(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(clippy::too_many_arguments)]
|
||||||
fn librustzcash_mmr_append_inner<V: Version>(
|
fn librustzcash_mmr_append_inner<V: Version>(
|
||||||
// Consensus branch id
|
// Consensus branch id
|
||||||
cbranch: u32,
|
cbranch: u32,
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
use bincode;
|
|
||||||
use incrementalmerkletree::{
|
use incrementalmerkletree::{
|
||||||
bridgetree::{self, BridgeTree},
|
bridgetree::{self, BridgeTree},
|
||||||
Altitude, Frontier, Hashable, Tree,
|
Altitude, Frontier, Hashable, Tree,
|
||||||
|
@ -8,7 +7,10 @@ use std::ptr;
|
||||||
|
|
||||||
use orchard::{bundle::Authorized, tree::MerkleCrhOrchardOutput};
|
use orchard::{bundle::Authorized, tree::MerkleCrhOrchardOutput};
|
||||||
|
|
||||||
use zcash_primitives::transaction::components::Amount;
|
use zcash_primitives::{
|
||||||
|
merkle_tree::incremental::{read_frontier_v1, read_tree, write_frontier_v1, write_tree},
|
||||||
|
transaction::components::Amount,
|
||||||
|
};
|
||||||
|
|
||||||
use crate::orchard_ffi::{error, CppStreamReader, CppStreamWriter, ReadCb, StreamObj, WriteCb};
|
use crate::orchard_ffi::{error, CppStreamReader, CppStreamWriter, ReadCb, StreamObj, WriteCb};
|
||||||
|
|
||||||
|
@ -22,7 +24,7 @@ pub const MAX_CHECKPOINTS: usize = 100;
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C" fn orchard_merkle_frontier_empty(
|
pub extern "C" fn orchard_merkle_frontier_empty(
|
||||||
) -> *mut bridgetree::Frontier<MerkleCrhOrchardOutput, MERKLE_DEPTH> {
|
) -> *mut bridgetree::Frontier<MerkleCrhOrchardOutput, MERKLE_DEPTH> {
|
||||||
let empty_tree = bridgetree::Frontier::<MerkleCrhOrchardOutput, MERKLE_DEPTH>::new();
|
let empty_tree = bridgetree::Frontier::<MerkleCrhOrchardOutput, MERKLE_DEPTH>::empty();
|
||||||
Box::into_raw(Box::new(empty_tree))
|
Box::into_raw(Box::new(empty_tree))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +53,7 @@ pub extern "C" fn orchard_merkle_frontier_parse(
|
||||||
) -> *mut bridgetree::Frontier<MerkleCrhOrchardOutput, MERKLE_DEPTH> {
|
) -> *mut bridgetree::Frontier<MerkleCrhOrchardOutput, MERKLE_DEPTH> {
|
||||||
let reader = CppStreamReader::from_raw_parts(stream, read_cb.unwrap());
|
let reader = CppStreamReader::from_raw_parts(stream, read_cb.unwrap());
|
||||||
|
|
||||||
match bincode::deserialize_from(reader) {
|
match read_frontier_v1(reader) {
|
||||||
Ok(parsed) => Box::into_raw(Box::new(parsed)),
|
Ok(parsed) => Box::into_raw(Box::new(parsed)),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
error!("Failed to parse Orchard bundle: {}", e);
|
error!("Failed to parse Orchard bundle: {}", e);
|
||||||
|
@ -62,17 +64,18 @@ pub extern "C" fn orchard_merkle_frontier_parse(
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C" fn orchard_merkle_frontier_serialize(
|
pub extern "C" fn orchard_merkle_frontier_serialize(
|
||||||
tree: *const bridgetree::Frontier<MerkleCrhOrchardOutput, MERKLE_DEPTH>,
|
frontier: *const bridgetree::Frontier<MerkleCrhOrchardOutput, MERKLE_DEPTH>,
|
||||||
stream: Option<StreamObj>,
|
stream: Option<StreamObj>,
|
||||||
write_cb: Option<WriteCb>,
|
write_cb: Option<WriteCb>,
|
||||||
) -> bool {
|
) -> bool {
|
||||||
let tree = unsafe {
|
let frontier = unsafe {
|
||||||
tree.as_ref()
|
frontier
|
||||||
|
.as_ref()
|
||||||
.expect("Orchard note commitment tree pointer may not be null.")
|
.expect("Orchard note commitment tree pointer may not be null.")
|
||||||
};
|
};
|
||||||
|
|
||||||
let writer = CppStreamWriter::from_raw_parts(stream, write_cb.unwrap());
|
let writer = CppStreamWriter::from_raw_parts(stream, write_cb.unwrap());
|
||||||
match bincode::serialize_into(writer, tree) {
|
match write_frontier_v1(writer, frontier) {
|
||||||
Ok(()) => true,
|
Ok(()) => true,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
error!("{}", e);
|
error!("{}", e);
|
||||||
|
@ -130,7 +133,7 @@ pub extern "C" fn orchard_merkle_frontier_num_leaves(
|
||||||
.expect("Orchard note commitment tree pointer may not be null.")
|
.expect("Orchard note commitment tree pointer may not be null.")
|
||||||
};
|
};
|
||||||
|
|
||||||
tree.position().map_or(0, |p| <usize>::from(p) + 1)
|
tree.position().map_or(0, |p| (<u64>::from(p) + 1) as usize)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
|
@ -182,7 +185,7 @@ pub extern "C" fn incremental_sinsemilla_tree_parse(
|
||||||
) -> *mut BridgeTree<MerkleCrhOrchardOutput, MERKLE_DEPTH> {
|
) -> *mut BridgeTree<MerkleCrhOrchardOutput, MERKLE_DEPTH> {
|
||||||
let reader = CppStreamReader::from_raw_parts(stream, read_cb.unwrap());
|
let reader = CppStreamReader::from_raw_parts(stream, read_cb.unwrap());
|
||||||
|
|
||||||
match bincode::deserialize_from(reader) {
|
match read_tree(reader) {
|
||||||
Ok(parsed) => Box::into_raw(Box::new(parsed)),
|
Ok(parsed) => Box::into_raw(Box::new(parsed)),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
error!("Failed to parse Orchard bundle: {}", e);
|
error!("Failed to parse Orchard bundle: {}", e);
|
||||||
|
@ -203,7 +206,7 @@ pub extern "C" fn incremental_sinsemilla_tree_serialize(
|
||||||
};
|
};
|
||||||
|
|
||||||
let writer = CppStreamWriter::from_raw_parts(stream, write_cb.unwrap());
|
let writer = CppStreamWriter::from_raw_parts(stream, write_cb.unwrap());
|
||||||
match bincode::serialize_into(writer, tree) {
|
match write_tree(writer, tree) {
|
||||||
Ok(()) => true,
|
Ok(()) => true,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
error!("{}", e);
|
error!("{}", e);
|
||||||
|
|
|
@ -946,10 +946,7 @@ pub extern "C" fn librustzcash_sapling_spend_proof(
|
||||||
};
|
};
|
||||||
|
|
||||||
// Construct the proof generation key
|
// Construct the proof generation key
|
||||||
let proof_generation_key = ProofGenerationKey {
|
let proof_generation_key = ProofGenerationKey { ak, nsk };
|
||||||
ak: ak.clone(),
|
|
||||||
nsk,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Grab the diversifier from the caller
|
// Grab the diversifier from the caller
|
||||||
let diversifier = Diversifier(unsafe { *diversifier });
|
let diversifier = Diversifier(unsafe { *diversifier });
|
||||||
|
|
|
@ -21,9 +21,8 @@ fn test_key_agreement() {
|
||||||
let addr = loop {
|
let addr = loop {
|
||||||
let mut d = [0; 11];
|
let mut d = [0; 11];
|
||||||
rng.fill_bytes(&mut d);
|
rng.fill_bytes(&mut d);
|
||||||
match vk.to_payment_address(Diversifier(d)) {
|
if let Some(a) = vk.to_payment_address(Diversifier(d)) {
|
||||||
Some(a) => break a,
|
break a;
|
||||||
None => {}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -491,7 +491,7 @@ fn redjubjub_signatures() {
|
||||||
|
|
||||||
{
|
{
|
||||||
let mut vec = Vec::new();
|
let mut vec = Vec::new();
|
||||||
sk.randomize(alpha.clone()).write(&mut vec).unwrap();
|
sk.randomize(alpha).write(&mut vec).unwrap();
|
||||||
assert_eq!(&vec, &tv.rsk);
|
assert_eq!(&vec, &tv.rsk);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue