Bitcoin-Crypto
view release on metacpan or search on metacpan
t/Transaction/sign.t view on Meta::CPAN
$tx = btc_transaction->new;
btc_utxo->new(
txid => [hex => '9fb32a2b34f497274419102cfa8f79c21029e8a415936366b2b058b992f55fdf'],
output_index => 2,
output => {
locking_script => [P2WSH => $redeem_script->get_segwit_address],
value => 88888,
},
)->register;
$tx->add_input(
utxo => [[hex => '9fb32a2b34f497274419102cfa8f79c21029e8a415936366b2b058b992f55fdf'], 2],
);
$tx->add_output(
value => 88800,
locking_script => [P2PKH => '12s4mjQcz6rLpF8EyVGxFEFrgVKmNiPXxg'],
);
$prv->sign_transaction($tx, signing_index => 0, redeem_script => $redeem_script, multisig => [1, 2]);
$other_prv->sign_transaction($tx, signing_index => 0, redeem_script => $redeem_script, multisig => [2, 2]);
ok lives { $tx->verify }, 'input verification ok';
};
subtest 'should sign transactions (two inputs)' => sub {
my $ex;
$tx = btc_transaction->new;
# NOTE: uses UTXOs from previous subtests
$tx->add_input(
utxo => [[hex => '5fb32a2b34f497274419100cfa8f79c21029e8a415936366b2b058b992f55fdf'], 5],
);
$tx->add_input(
utxo => [[hex => '0437cd7f8525ceed2324359c2d0ba26006d92d856a9c20fa0241106ee5a597c9'], 0],
);
$tx->add_output(
value => '50_00000000',
locking_script => [
P2SH => $prv->get_public_key->get_compat_address
],
);
$ex = dies { $tx->verify };
ok $ex, 'input verification failed ok (none signed)';
isa_ok $ex, 'Bitcoin::Crypto::Exception::TransactionScript';
$prv->sign_transaction($tx, signing_index => 0);
$ex = dies { $tx->verify };
ok $ex, 'input verification failed ok (one signed)';
isa_ok $ex, 'Bitcoin::Crypto::Exception::TransactionScript';
$prv->sign_transaction($tx, signing_index => 1);
my $alive = lives { $tx->verify };
ok $alive, 'input verification ok (two signed)';
};
done_testing;
( run in 2.301 seconds using v1.01-cache-2.11-cpan-d8267643d1d )