Implement Transaction::new_unsigned with TransactionBuilder

This commit is contained in:
Greg Fitzgerald 2019-03-14 14:15:00 -06:00
parent 21815f26d5
commit bd8502e87e
1 changed files with 11 additions and 14 deletions

View File

@ -8,8 +8,9 @@ use crate::shortvec::{
deserialize_vec_bytes, deserialize_vec_with, encode_len, serialize_vec_bytes,
serialize_vec_with,
};
use crate::signature::{Keypair, KeypairUtil, Signature};
use crate::signature::{KeypairUtil, Signature};
use crate::system_instruction::SystemError;
use crate::transaction_builder::{BuilderInstruction, TransactionBuilder};
use bincode::{serialize, Error};
use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt};
use serde::{Deserialize, Serialize, Serializer};
@ -187,19 +188,14 @@ impl Transaction {
recent_blockhash: Hash,
fee: u64,
) -> Self {
let program_ids = vec![*program_id];
let accounts = (0..=transaction_keys.len() as u8).collect();
let instructions = vec![Instruction::new(0, data, accounts)];
let mut keys = vec![*from_pubkey];
keys.extend_from_slice(transaction_keys);
Self::new_with_instructions::<Keypair>(
&[],
&keys[..],
recent_blockhash,
fee,
program_ids,
instructions,
)
let mut account_keys = vec![(*from_pubkey, true)];
for pubkey in transaction_keys {
account_keys.push((*pubkey, false));
}
let instruction = BuilderInstruction::new(*program_id, data, account_keys);
let mut transaction = TransactionBuilder::new(fee).push(instruction).compile();
transaction.recent_blockhash = recent_blockhash;
transaction
}
/// Create a signed transaction
/// * `from_keypair` - The key used to sign the transaction. This key is stored as keys[0]
@ -473,6 +469,7 @@ impl<'de> Deserialize<'de> for Transaction {
#[cfg(test)]
mod tests {
use super::*;
use crate::signature::Keypair;
use bincode::deserialize;
#[test]