[ad_1]
Input transaction : single p2wpkh
output transaction : single p2wsh and single p2wpkh
The following error signifies that my pubkey hash is different on checking , it is clear that my pubkey hashes match! Here are the implementations for scriptcode and witness generation
fn get_p2wpkh_scriptcode(utxo: Utxo) -> Vec<u8> {
let mut script = Vec::new();
script.push(0x19); // 25 bytes , script length
script.push(0x76); // OP_DUP
script.push(0xa9); // OP_HASH160
script.push(0x14); // 20 bytes , public key hash length
let pubkey_hash = extract_pubkey_hash(&utxo.script_pubkey); //takes last 20 bytes from the scriptpubkey of type {0x0014<pubkeyhash>}
script.extend_from_slice(&pubkey_hash); // [pubkey hash]
//print the pubkey hash
// let pubkey_hash_in_hex = hex::encode(&pubkey_hash);
// println!("pubkey_hash_in_hex: {:?}", pubkey_hash_in_hex);
script.push(0x88); // OP_EQUALVERIFY
script.push(0xac); // OP_CHECKSIG
script
//OK
}
fn get_p2wpkh_witness(privkey: &[u8; 32], msg: Vec<u8>) -> Vec<u8> {
let signature = sign(privkey, msg);
let pubkey = derive_public_key_from_private(privkey);
let mut witness = Vec::new();
// let pubkey_hashed = hash160(&pubkey);
// let pubkey_hashed_in_hex = hex::encode(&pubkey_hashed);
// println!("pubkey_hashed_in_hex: {:?}", pubkey_hashed_in_hex);
witness.push(0x02);
let signature_length = signature.len() as u8;
witness.push(signature_length);
witness.extend_from_slice(&signature);
witness.push(0x21);
witness.extend_from_slice(&pubkey);
witness
}
RAW signed transaction
020000000001013ccb46c8366e39d7ff36df4f199813aa8b9dc4bed143a0eb9205cf698ca16298c401000000ffffffff0240420f00000000002200202d67ce38ba266a68f0f7c4668e9d0f5584c6da7c454bcc2368bf9fff10135157a086010000000000160014d765749aa66430b85765bdedee488f5fe3c82a8e02473044022062c000ca2cdfcd39de875d0b6a3f3da7af4e5c1ba07bb26e24cef8974cdc1c820220540f540a43027475fe359cc7ae98eddb6fbd09082ef9602c08669448e393d1e7012102d3428014dd5ccf1927c6dc164e6324e2c0945a9f50b84769592e195ae6a40e8a00000000
What are the other scenarios that might throw this error ?
[ad_2]
Source link