serialization of joinsplit
This commit is contained in:
parent
534d09457b
commit
a992d84bb2
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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());
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue