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(&d.ciphertexts);
} }
stream.append(&join_split.pubkey) stream.append(&join_split.pubkey);
.append(&join_split.sig); stream.append(&join_split.sig);
} }
} }
} }

View File

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

View File

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