Client-side Bitcoin JavaScript library for node.js and browsers with comprehensive Bitcoin protocol support
Overall
score
99%
Build a utility module that manages Bitcoin transaction input sequence numbers for different use cases including time-locked transactions and transaction replacement scenarios.
Your implementation should provide functionality to:
Create a transaction with custom sequence numbers: Build a Bitcoin transaction that allows setting specific sequence values for each input to control transaction replaceability and time locks.
Enable Replace-By-Fee (RBF): Configure transaction inputs to signal that the transaction can be replaced with a higher-fee version before confirmation.
Implement relative time locks: Set sequence numbers to enforce waiting periods based on block count (e.g., must wait 10 blocks after the previous transaction confirms).
Handle final transactions: Create transactions with sequence numbers that indicate the transaction is final and cannot be replaced.
Create a module src/sequenceManager.js that exports the following functions:
createTransactionWithSequence(inputs, outputs, sequenceValues): Creates a transaction with custom sequence numbers for each inputenableRBF(transaction): Modifies a transaction to enable Replace-By-Fee signalingsetRelativeTimeLock(sequenceNumber, blocks): Calculates the appropriate sequence number for a relative block-based time lockisFinal(sequenceNumber): Checks if a sequence number indicates a final transactionThe module should handle standard Bitcoin transaction construction and properly encode sequence numbers according to BIP 68 and BIP 125 specifications.
// File: src/sequenceManager.test.js
const { createTransactionWithSequence, enableRBF } = require('./sequenceManager');
test('should create RBF-enabled transaction', () => {
const inputs = [{ txid: 'abc123...', vout: 0 }];
const outputs = [{ address: 'bc1q...', value: 50000 }];
const tx = createTransactionWithSequence(inputs, outputs, [0xfffffffd]);
// Verify sequence number signals RBF (< 0xfffffffe)
expect(tx.ins[0].sequence).toBe(0xfffffffd);
});// File: src/sequenceManager.test.js
const { setRelativeTimeLock } = require('./sequenceManager');
test('should calculate sequence for 10 block relative timelock', () => {
const sequence = setRelativeTimeLock(10);
// Should return sequence number encoding 10 blocks
expect(sequence).toBe(10);
});// File: src/sequenceManager.test.js
const { isFinal } = require('./sequenceManager');
test('should identify final sequence number', () => {
expect(isFinal(0xffffffff)).toBe(true);
expect(isFinal(0xfffffffd)).toBe(false);
});Provides Bitcoin transaction construction and manipulation functionality.
Install with Tessl CLI
npx tessl i tessl/npm-bitcoinjs-libdocs
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10