Update create_transaction test
This commit is contained in:
parent
91a20112d1
commit
81e01d01b5
@ -5,10 +5,8 @@ use anyhow::{Error, Result};
|
||||
|
||||
use rand::{thread_rng, Rng};
|
||||
use sp_client::bitcoin::consensus::deserialize;
|
||||
use sp_client::bitcoin::key::{Keypair, Secp256k1, TapTweak};
|
||||
use sp_client::bitcoin::psbt::{raw, Output};
|
||||
use sp_client::bitcoin::{Address, Psbt, ScriptBuf, Transaction, Txid};
|
||||
use sp_client::bitcoin::{Amount, OutPoint, TxOut};
|
||||
use sp_client::bitcoin::psbt::raw;
|
||||
use sp_client::bitcoin::{Psbt, Amount, OutPoint};
|
||||
use sp_client::constants::{
|
||||
self, DUST_THRESHOLD, PSBT_SP_ADDRESS_KEY, PSBT_SP_PREFIX, PSBT_SP_SUBTYPE,
|
||||
};
|
||||
@ -52,7 +50,7 @@ pub fn create_transaction(
|
||||
for outpoint in mandatory_inputs {
|
||||
let (must_outpoint, must_output) = available_outpoints
|
||||
.remove_entry(&outpoint)
|
||||
.ok_or_else(|| Error::msg("Mandatory outpoint unknown"))?;
|
||||
.ok_or_else(|| Error::msg(format!("Mandatory outpoint unknown: {}", outpoint)))?;
|
||||
total_available += must_output.amount;
|
||||
inputs.insert(must_outpoint, must_output);
|
||||
}
|
||||
@ -174,13 +172,13 @@ pub fn map_outputs_to_sp_address(psbt_str: &str) -> Result<HashMap<String, Vec<u
|
||||
mod tests {
|
||||
use std::io::Write;
|
||||
|
||||
use crate::network::CipherMessage;
|
||||
use crate::network::{Pcd, Prd};
|
||||
|
||||
use super::*;
|
||||
use sp_client::bitcoin::hashes::{sha256, Hash};
|
||||
use sp_client::bitcoin::hex::{DisplayHex, FromHex};
|
||||
use sp_client::bitcoin::hex::FromHex;
|
||||
use sp_client::bitcoin::secp256k1::PublicKey;
|
||||
use sp_client::bitcoin::Transaction;
|
||||
use sp_client::bitcoin::{ScriptBuf, Transaction};
|
||||
use sp_client::silentpayments::utils::receiving::{
|
||||
calculate_tweak_data, get_pubkey_from_input,
|
||||
};
|
||||
@ -193,8 +191,8 @@ mod tests {
|
||||
const BOB_WALLET_ANSWER: &str = "{\"tx_history\": [],\"client\":{\"network\":\"regtest\",\"label\":\"default\",\"scan_sk\":\"0de90b7195c1380d5fde13de3f1d66d53423a9896314839e36ba672653af60b4\",\"spend_key\":{\"Secret\":\"affe686075ecbe17b8ce7de45ec31314804259d0a4bc1c863de21ffd6dc598f8\"},\"mnemonic\":null,\"sp_receiver\":{\"version\":0,\"network\":\"Regtest\",\"scan_pubkey\":[2,85,96,92,243,247,237,192,205,9,178,146,101,237,132,232,15,2,69,138,31,118,76,140,142,207,90,13,192,94,254,150,133],\"spend_pubkey\":[3,5,157,91,250,169,41,61,190,37,30,98,152,253,180,138,250,86,162,102,82,148,130,220,44,153,127,83,43,246,93,17,232],\"change_label\":\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",\"labels\":[[\"56572fc770b52096879662f97f98263d3e126f5a4a38f00f2895a9dde4c47c1c\",[2,237,237,247,213,154,87,34,239,168,235,87,122,152,94,41,35,101,184,201,58,201,6,185,58,157,52,208,129,167,2,224,198]]]}},\"outputs\":{\"wallet_fingerprint\":[203,200,4,248,139,36,241,232],\"birthday\":2146,\"last_scan\":2146,\"outputs\":{\"fbd9c63e0dd08c2569b51a0d6095a79ee2acfcac66acdb594328a095f1fadb63:1\":{\"blockheight\":2146,\"tweak\":\"678dbcbdb40cd3733c8dbbd508761a0937009cf75a9f466e3c98877e79037cbc\",\"amount\":99896595,\"script\":\"5120deab0c5a3d23de30477b0b5a95a261c96e29afdd9813c665d2bf025ad2b3f919\",\"label\":null,\"spend_status\":\"Unspent\"},\"148e0faa2f203b6e9488e2da696d8a49ebff4212946672f0bb072ced0909360d:0\":{\"blockheight\":0,\"tweak\":\"0e3395ff27bde9187ffaeeb2521f6277d3b83911f16ccbaf59a1a68d99a0ab93\",\"amount\":1200,\"script\":\"512010f06f764cbc923ec3198db946307bf0c06a1b4f09206055e47a6fec0a33d52c\",\"label\":null,\"spend_status\":{\"Spent\":\"bc207c02bc4f1d4359fcd604296c0938bf1e6ff827662a56410676b8cbd768d9\"}}}}}";
|
||||
const ALICE_ADDRESS: &str = "sprt1qqf50y6deqe7dqg3vj562xf3lmktqe3sct78ha6e9jh54sa3q2m5esq7x2tz0xrpm0ekclyyaszc2sh3ksm5gkumxpwegpa80lv5wgsuefqaufx8q";
|
||||
const BOB_ADDRESS: &str = "sprt1qqf2kqh8n7lkupngfk2fxtmvyaq8sy3v2ramyeryweadqmsz7l6tg2qc9n4dl42ff8klz28nznr7mfzh6263xv555stwzextl2v4lvhg3aqq7ru8u";
|
||||
const COMMITMENT: &str = "e4395114bdb1276bbcf3b0b6ef1c970a213f689b2bf8524e08599a1a65c146e7";
|
||||
const FEE_RATE: Amount = Amount::from_sat(1);
|
||||
const KEY: &str = "442a5ea418921c4aa8ce3f7a95427d9450059a3ac11db3dced9abb709b2d9f42";
|
||||
|
||||
fn helper_get_tweak_data(tx: &Transaction, spk: ScriptBuf) -> PublicKey {
|
||||
let prevout = tx.input.get(0).unwrap().to_owned();
|
||||
@ -209,11 +207,11 @@ mod tests {
|
||||
tweak_data
|
||||
}
|
||||
|
||||
fn helper_create_commitment(payload_to_hash: String) -> String {
|
||||
fn helper_create_commitment(payload_to_hash: String) -> sha256::Hash {
|
||||
let mut engine = sha256::HashEngine::default();
|
||||
engine.write_all(&payload_to_hash.as_bytes());
|
||||
engine.write_all(&payload_to_hash.as_bytes()).unwrap();
|
||||
let hash = sha256::Hash::from_engine(engine);
|
||||
hash.to_byte_array().to_lower_hex_string()
|
||||
hash
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -225,17 +223,19 @@ mod tests {
|
||||
};
|
||||
let mut alice_wallet: SpWallet = serde_json::from_str(ALICE_WALLET).unwrap();
|
||||
let mut bob_wallet: SpWallet = serde_json::from_str(BOB_WALLET).unwrap();
|
||||
let message: CipherMessage = CipherMessage::new(ALICE_ADDRESS.to_owned(), "TEST".to_owned());
|
||||
let commitment = helper_create_commitment(serde_json::to_string(&message).unwrap());
|
||||
|
||||
assert!(commitment == "d12f3c5b37240bc3abf2976f41fdf9a594f0680aafd2781ac448f80440fbeb99");
|
||||
let pcd = Pcd::new("TEST".to_owned());
|
||||
let pcd_hash = helper_create_commitment(pcd.to_string());
|
||||
let mut key = [0u8; 32];
|
||||
key.copy_from_slice(&Vec::from_hex(KEY).unwrap());
|
||||
let prd = Prd::new(ALICE_ADDRESS.try_into().unwrap(), key, pcd_hash);
|
||||
let commitment = helper_create_commitment(serde_json::to_string(&prd).unwrap());
|
||||
|
||||
let psbt = create_transaction(
|
||||
&vec![],
|
||||
&HashSet::new(),
|
||||
&alice_wallet,
|
||||
vec![recipient],
|
||||
Some(Vec::from_hex(COMMITMENT).unwrap()),
|
||||
Some(commitment.as_byte_array().to_vec()),
|
||||
FEE_RATE,
|
||||
None,
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user