NAME
Bitcoin::Crypto::Transaction::UTXO - Unspent transaction output instance
SYNOPSIS
# register the utxos automatically from the serialized transaction
btc_utxo->extract(
$serialized_tx
);
# create the utxo manually
my
$utxo
= btc_utxo->new(
txid
=> [
hex
=>
'94e519b9c0f43228e3dc841d838fc7372de95345206ef936ac6020889abe0457'
],
output_index
=> 1,
output
=> {
locking_script
=> [
P2PKH
=>
'1HrfeGdVP4d1uAdbSknzeaFpDFQVJyVpLu'
],
value
=> 1_02119131,
}
);
# register
$utxo
->register;
# find the utxo
btc_utxo->get([
hex
=>
'94e519b9c0f43228e3dc841d838fc7372de95345206ef936ac6020889abe0457'
], 1);
# unregister
$utxo
->unregister;
DESCRIPTION
UTXO is a transaction output which hasn't been spent yet. All transaction inputs must be UTXOs. You need to register UTXOs before you can fully utilize a transaction. If a transaction has its UTXOs unregistered, its methods may raise an exception if they require full UTXO data.
INTERFACE
Attributes
txid
A bytestring - id of the source transaction.
Available in the constructor.
output_index
A positive or zero integer which is the index of the output in the source transaction.
Available in the constructor.
block
Optional instance of Bitcoin::Crypto::Block.
Available in the constructor.
output
Instance of Bitcoin::Crypto::Transaction::Output. A hash reference will be coerced into an object by passing it to the constructor.
Available in the constructor.
Methods
new
$tx
=
$class
->new(
%args
)
This is a standard Moo constructor, which can be used to create the object. It takes arguments specified in "Attributes".
Returns class instance.
register
$object
=
$object
->register()
Registers the given UTXO. It will be held in memory and will be available to fetch using "get".
unregister
$object
=
$object
->unregister()
Does the opposite of "register".
get
$utxo
=
$object
->get(
$txid
,
$output_index
);
Returns the UTXO registered with given txid and output index. Throws an exception if it cannot be found or loaded.
set_loader
$class
->set_loader(
sub
{ ... })
$class
->set_loader(
undef
)
Replaces an UTXO loader.
The subroutine should accept the same parameters as "get" and return a constructed UTXO object. If possible, the loader should not return the same UTXO twice in a single runtime of the script.
Returns nothing. Passing undef disables the custom loader.
extract
$class
->extract(
$serialized_tx
)
Extracts all outputs from the $serialized_tx
(a bytestring). Same can be achieved by calling update_utxos
on a transaction object.
Returns nothing.
EXCEPTIONS
This module throws an instance of Bitcoin::Crypto::Exception if it encounters an error. It can produce the following error types from the Bitcoin::Crypto::Exception namespace:
UTXO - UTXO was not found