diff --git a/kernel/transaction.go b/kernel/transaction.go index e404e5d2..4468a295 100644 --- a/kernel/transaction.go +++ b/kernel/transaction.go @@ -80,6 +80,11 @@ func (t *transactionApi) Bytes() ([]byte, error) { return bytes, nil } +// GetLockTime returns the transaction's nLockTime value. +func (t *transactionApi) GetLockTime() uint32 { + return uint32(C.btck_transaction_get_locktime(t.ptr)) +} + // GetTxid returns the txid for this transaction. func (t *transactionApi) GetTxid() *TxidView { ptr := C.btck_transaction_get_txid(t.ptr) diff --git a/kernel/transaction_input.go b/kernel/transaction_input.go index 2f12ae93..fd5849fb 100644 --- a/kernel/transaction_input.go +++ b/kernel/transaction_input.go @@ -56,3 +56,8 @@ func (t *transactionInputApi) GetOutPoint() *TransactionOutPointView { ptr := C.btck_transaction_input_get_out_point(t.ptr) return newTransactionOutPointView(check(ptr)) } + +// GetSequence returns the transaction input's nSequence value. +func (t *transactionInputApi) GetSequence() uint32 { + return uint32(C.btck_transaction_input_get_sequence(t.ptr)) +} diff --git a/kernel/transaction_input_test.go b/kernel/transaction_input_test.go index 3237767b..e824f8ee 100644 --- a/kernel/transaction_input_test.go +++ b/kernel/transaction_input_test.go @@ -26,6 +26,11 @@ func TestTransactionInput(t *testing.T) { t.Fatal("GetInput(0) returned nil") } + // Test GetSequence() + if inputView.GetSequence() != 0xffffffff { + t.Errorf("Expected coinbase input sequence %d, got %d", uint32(0xffffffff), inputView.GetSequence()) + } + // Test Copy() copiedInput := inputView.Copy() if copiedInput == nil { @@ -39,6 +44,11 @@ func TestTransactionInput(t *testing.T) { t.Fatal("GetOutPoint() returned nil") } + // Verify sequence from copied input matches + if inputView.GetSequence() != copiedInput.GetSequence() { + t.Errorf("Input sequences differ: %d != %d", inputView.GetSequence(), copiedInput.GetSequence()) + } + // Verify out point from copied input matches copiedOutPoint := copiedInput.GetOutPoint() if copiedOutPoint == nil { diff --git a/kernel/transaction_test.go b/kernel/transaction_test.go index f7f813c6..7508dbe0 100644 --- a/kernel/transaction_test.go +++ b/kernel/transaction_test.go @@ -95,6 +95,12 @@ func TestTransaction(t *testing.T) { } }) + t.Run("GetLockTime", func(t *testing.T) { + if got := tx.GetLockTime(); got != 0 { + t.Errorf("Expected locktime 0, got %d", got) + } + }) + t.Run("GetInput", func(t *testing.T) { input, err := tx.GetInput(0) if err != nil {