Add new utility methods on Transaction type
This PR adds the txid(), is_coin_base(), is_explicitly_rbf(), and is_lock_time_enabled() methods. Fixes #303
This commit is contained in:
parent
d3e183a498
commit
e0506deffa
8
Cargo.lock
generated
8
Cargo.lock
generated
@ -1197,18 +1197,18 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
|
||||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "1.0.38"
|
||||
version = "1.0.39"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0"
|
||||
checksum = "a5ab016db510546d856297882807df8da66a16fb8c4101cb8b30054b0d5b2d9c"
|
||||
dependencies = [
|
||||
"thiserror-impl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror-impl"
|
||||
version = "1.0.38"
|
||||
version = "1.0.39"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f"
|
||||
checksum = "5420d42e90af0c38c3290abcca25b9b3bdf379fc9f55c528f53a269d9c9a267e"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -288,13 +288,15 @@ class Blockchain(
|
||||
* @param transactionBytes The transaction bytes, bitcoin consensus encoded.
|
||||
*/
|
||||
class Transaction(transactionBytes: List<UByte>) {
|
||||
/** Return the transaction bytes, bitcoin consensus encoded. */
|
||||
fun serialize(): List<UByte> {}
|
||||
/** Computes the txid. */
|
||||
fun txid(): String {}
|
||||
|
||||
/**
|
||||
* Returns the "weight" of this transaction, as defined by BIP141.
|
||||
*
|
||||
* For transactions with an empty witness, this is simply the consensus-serialized size times four. For transactions with a witness, this is the non-witness consensus-serialized size multiplied by three plus the with-witness consensus-serialized size.
|
||||
* For transactions with an empty witness, this is simply the consensus-serialized size times four.
|
||||
* For transactions with a witness, this is the non-witness consensus-serialized size multiplied by three
|
||||
* plus the with-witness consensus-serialized size.
|
||||
*/
|
||||
fun weight(): ULong {}
|
||||
|
||||
@ -304,9 +306,25 @@ class Transaction(transactionBytes: List<UByte>) {
|
||||
/**
|
||||
* Returns the "virtual size" (vsize) of this transaction.
|
||||
*
|
||||
* Will be ceil(weight / 4.0). Note this implements the virtual size as per BIP141, which is different to what is implemented in Bitcoin Core. The computation should be the same for any remotely sane transaction.
|
||||
* Will be ceil(weight / 4.0). Note this implements the virtual size as per BIP141, which is different to
|
||||
* what is implemented in Bitcoin Core. The computation should be the same for any remotely sane transaction.
|
||||
*/
|
||||
fun vsize(): ULong {}
|
||||
|
||||
/** Return the transaction bytes, bitcoin consensus encoded. */
|
||||
fun serialize(): List<UByte> {}
|
||||
|
||||
/** Is this a coin base transaction? */
|
||||
fun isCoinBase(): Boolean {}
|
||||
|
||||
/**
|
||||
* Returns true if the transaction itself opted in to be BIP-125-replaceable (RBF).
|
||||
* This does not cover the case where a transaction becomes replaceable due to ancestors being RBF.
|
||||
*/
|
||||
fun isExplicitlyRbf(): Boolean {}
|
||||
|
||||
/** Returns true if this transactions nLockTime is enabled (BIP-65). */
|
||||
fun isLockTimeEnabled(): Boolean {}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -247,13 +247,21 @@ interface Transaction {
|
||||
[Throws=BdkError]
|
||||
constructor(sequence<u8> transaction_bytes);
|
||||
|
||||
sequence<u8> serialize();
|
||||
string txid();
|
||||
|
||||
u64 weight();
|
||||
|
||||
u64 size();
|
||||
|
||||
u64 vsize();
|
||||
|
||||
sequence<u8> serialize();
|
||||
|
||||
boolean is_coin_base();
|
||||
|
||||
boolean is_explicitly_rbf();
|
||||
|
||||
boolean is_lock_time_enabled();
|
||||
};
|
||||
|
||||
interface PartiallySignedTransaction {
|
||||
|
@ -251,8 +251,8 @@ impl Transaction {
|
||||
Ok(Transaction { internal: tx })
|
||||
}
|
||||
|
||||
fn serialize(&self) -> Vec<u8> {
|
||||
self.internal.serialize()
|
||||
fn txid(&self) -> String {
|
||||
self.internal.txid().to_string()
|
||||
}
|
||||
|
||||
fn weight(&self) -> u64 {
|
||||
@ -266,6 +266,22 @@ impl Transaction {
|
||||
fn vsize(&self) -> u64 {
|
||||
self.internal.vsize() as u64
|
||||
}
|
||||
|
||||
fn serialize(&self) -> Vec<u8> {
|
||||
self.internal.serialize()
|
||||
}
|
||||
|
||||
fn is_coin_base(&self) -> bool {
|
||||
self.internal.is_coin_base()
|
||||
}
|
||||
|
||||
fn is_explicitly_rbf(&self) -> bool {
|
||||
self.internal.is_explicitly_rbf()
|
||||
}
|
||||
|
||||
fn is_lock_time_enabled(&self) -> bool {
|
||||
self.internal.is_lock_time_enabled()
|
||||
}
|
||||
}
|
||||
|
||||
/// A Bitcoin address.
|
||||
|
Loading…
x
Reference in New Issue
Block a user