fix
This commit is contained in:
parent
38d3e9dad9
commit
3227d875f7
|
@ -88,8 +88,10 @@ fn main() -> anyhow::Result<()> {
|
||||||
orchard: orchard_sk,
|
orchard: orchard_sk,
|
||||||
};
|
};
|
||||||
|
|
||||||
let tx = build_tx(&network, &keys, &tx_plan, true, OsRng)?;
|
let tx = build_tx(&network, &keys, &tx_plan, false, OsRng)?;
|
||||||
|
|
||||||
fs::write(out_filename, hex::encode(&tx))?;
|
fs::write(out_filename, hex::encode(&tx))?;
|
||||||
|
|
||||||
|
println!("Tx written to {}", out_filename);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ use crate::{AccountData, CoinConfig};
|
||||||
use anyhow::anyhow;
|
use anyhow::anyhow;
|
||||||
use ff::PrimeField;
|
use ff::PrimeField;
|
||||||
use jubjub::Fr;
|
use jubjub::Fr;
|
||||||
use orchard::builder::{Builder as OrchardBuilder, SigningMetadata};
|
use orchard::builder::{Builder as OrchardBuilder, MaybeSigned, SigningMetadata};
|
||||||
use orchard::bundle::Flags;
|
use orchard::bundle::Flags;
|
||||||
use orchard::keys::{FullViewingKey, Scope, SpendAuthorizingKey, SpendingKey};
|
use orchard::keys::{FullViewingKey, Scope, SpendAuthorizingKey, SpendingKey};
|
||||||
use orchard::note::Nullifier;
|
use orchard::note::Nullifier;
|
||||||
|
@ -288,29 +288,44 @@ pub fn build_tx(
|
||||||
hex::encode(<[u8; 32]>::from(ask))
|
hex::encode(<[u8; 32]>::from(ask))
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let proven = proven.prepare(&mut rng, sig_hash);
|
||||||
|
|
||||||
|
let expected_ak = (&orchard_signing_keys[0]).into();
|
||||||
|
|
||||||
let mut alphas = Vec::new();
|
let mut alphas = Vec::new();
|
||||||
let proven = proven.map_authorization(
|
let proven = proven.map_authorization(
|
||||||
&mut rng,
|
&mut rng,
|
||||||
|_rng, _, SigningMetadata { dummy_ask, parts }| {
|
|_rng, _partial, maybe| {
|
||||||
alphas.push(parts.alpha);
|
if let MaybeSigned::SigningMetadata(parts) = &maybe {
|
||||||
SigningMetadata { dummy_ask, parts }
|
if parts.ak == expected_ak {
|
||||||
|
alphas.push(parts.alpha);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
maybe
|
||||||
},
|
},
|
||||||
|_rng, auth| auth,
|
|_rng, auth| auth,
|
||||||
);
|
);
|
||||||
assert!(alphas.len() == 1);
|
|
||||||
println!("Randomizer: {}", hex::encode(alphas[0].to_repr().as_ref()));
|
|
||||||
|
|
||||||
let mut buffer = String::new();
|
let mut signatures = Vec::new();
|
||||||
let stdin = std::io::stdin();
|
|
||||||
println!("Input hex-encoded signature: ");
|
for (i, alpha) in alphas.iter().enumerate() {
|
||||||
stdin.read_line(&mut buffer).unwrap();
|
println!(
|
||||||
let signature = hex::decode(buffer.trim()).unwrap();
|
"Randomizer #{}: {}",
|
||||||
let signature: [u8; 64] = signature.try_into().unwrap();
|
i,
|
||||||
let signature = redpallas::Signature::<SpendAuth>::from(signature);
|
hex::encode(alpha.to_repr().as_ref())
|
||||||
|
);
|
||||||
|
let mut buffer = String::new();
|
||||||
|
let stdin = std::io::stdin();
|
||||||
|
println!("Input hex-encoded signature #{}: ", i);
|
||||||
|
stdin.read_line(&mut buffer).unwrap();
|
||||||
|
let signature = hex::decode(buffer.trim()).unwrap();
|
||||||
|
let signature: [u8; 64] = signature.try_into().unwrap();
|
||||||
|
let signature = redpallas::Signature::<SpendAuth>::from(signature);
|
||||||
|
signatures.push(signature);
|
||||||
|
}
|
||||||
|
|
||||||
proven
|
proven
|
||||||
.prepare(&mut rng, sig_hash)
|
.append_signatures(&signatures)
|
||||||
.append_signatures(&[signature])
|
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.finalize()
|
.finalize()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
|
Loading…
Reference in New Issue