serialization of joinsplit

This commit is contained in:
NikVolf 2018-11-20 19:54:06 +03:00
parent 534d09457b
commit a992d84bb2
4 changed files with 10 additions and 6 deletions

View File

@ -129,8 +129,8 @@ pub fn serialize_join_split(stream: &mut Stream, join_split: &Option<JoinSplit>)
};
stream.append(&d.ciphertexts);
}
stream.append(&join_split.pubkey)
.append(&join_split.sig);
stream.append(&join_split.pubkey);
stream.append(&join_split.sig);
}
}
}

View File

@ -229,6 +229,7 @@ impl Serializable for Transaction {
.append_list(&sapling.outputs);
}
println!("serializing tx! ({:?})", self.join_split);
serialize_join_split(stream, &self.join_split);
if let Some(sapling) = self.sapling.as_ref() {

View File

@ -5,7 +5,7 @@ use keys::KeyPair;
use crypto::dhash256;
use hash::H256;
use ser::Stream;
use chain::{Transaction, TransactionOutput, OutPoint, TransactionInput};
use chain::{Transaction, TransactionOutput, OutPoint, TransactionInput, JoinSplit};
use {Script, Builder};
#[derive(Debug, PartialEq, Clone, Copy)]
@ -104,6 +104,7 @@ pub struct TransactionInputSigner {
pub inputs: Vec<UnsignedTransactionInput>,
pub outputs: Vec<TransactionOutput>,
pub lock_time: u32,
pub join_split: Option<JoinSplit>
}
/// Used for resigning and loading test transactions
@ -114,6 +115,7 @@ impl From<Transaction> for TransactionInputSigner {
inputs: t.inputs.into_iter().map(Into::into).collect(),
outputs: t.outputs,
lock_time: t.lock_time,
join_split: t.join_split,
}
}
}
@ -177,7 +179,8 @@ impl TransactionInputSigner {
outputs: outputs,
version: self.version,
lock_time: self.lock_time,
..Default::default() // TODO
join_split: self.join_split.clone(),
..Default::default()
};
let mut stream = Stream::default();
@ -260,6 +263,7 @@ mod tests {
lock_time: 0,
inputs: vec![unsigned_input],
outputs: vec![output],
join_split: None,
};
let hash = input_signer.signature_hash(0, &previous_output, SighashBase::All.into());

View File

@ -435,7 +435,6 @@ mod tests {
use script::{Script, VerificationFlags, TransactionSignatureChecker, TransactionInputSigner, verify_script};
#[test]
#[ignore]
fn join_split() {
let input_hex = "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff05021d010101ffffffff021070d90000000000232102bdbbb2eb3066bb138d31349ce32b7f05871ac08cfb382023155249b213417d82ac045c36000000000017a9147d46a730d31f97b1930d3368a967c309bd4d136a8700000000";
@ -448,7 +447,7 @@ mod tests {
let output_script: Script = coinbase_tx.outputs()[0].script_pubkey.clone().into();
let input_script: Script = spending_tx.inputs()[0].script_sig.clone().into();
let signer: TransactionInputSigner = coinbase_tx.into();
let signer: TransactionInputSigner = spending_tx.into();
let checker = TransactionSignatureChecker {
signer: signer,