Skip to content

Documentation / @cashconnect-js/templates-dev / blockchain/blockchain-test

BlockchainTest ​

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:51

Remarks ​

This provider DOES NOT enforce the 100 confirmations Coinbase Transaction rule.

Extends ​

Constructors ​

Constructor ​

ts
new BlockchainTest(parentBlockchain?): BlockchainTest;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:86

Parameters ​
ParameterType
parentBlockchain?BaseBlockchain<unknown, unknown>
Returns ​

BlockchainTest

Overrides ​

BaseBlockchain.constructor

Methods ​

from() ​

ts
static from<T>(this, parentBlockchain?): Promise<InstanceType<T>>;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:55

Type Parameters ​
Type Parameter
T extends typeof BlockchainTest
Parameters ​
ParameterType
thisT
parentBlockchain?BaseBlockchain<unknown, unknown>
Returns ​

Promise<InstanceType<T>>

validateMiningFeeSats() ​

ts
static validateMiningFeeSats(
   tx, 
   sourceOutputs, 
   feeRateSatsPerKb): void;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:863

Parameters ​
ParameterType
txTransaction
sourceOutputsOutput[]
feeRateSatsPerKbbigint
Returns ​

void

start() ​

ts
start(): Promise<void>;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:97

Initializes the blockchain connection and required resources. Should be called before performing any blockchain operations.

Returns ​

Promise<void>

A promise that resolves when the blockchain connection is established

Throws ​

If the connection cannot be established

Overrides ​

BaseBlockchain.start

stop() ​

ts
stop(): Promise<void>;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:99

Gracefully terminates the blockchain connection and cleans up resources. Should be called when blockchain operations are no longer needed.

Returns ​

Promise<void>

A promise that resolves when the shutdown is complete

Overrides ​

BaseBlockchain.stop

fetchUTXO() ​

ts
fetchUTXO(outpoint): Promise<Output>;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:101

Parameters ​
ParameterType
outpointstring | Outpoint
Returns ​

Promise<Output>

Overrides ​

BaseBlockchain.fetchUTXO

fetchUTXOs() ​

ts
fetchUTXOs(address): Promise<ExtMap<BlockchainUTXO>>;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:134

Retrieves all unspent transaction outputs (UTXOs) for a given address.

Parameters ​
ParameterTypeDescription
addressstringThe blockchain address to query
Returns ​

Promise<ExtMap<BlockchainUTXO>>

A promise that resolves with the unspent outputs

Throws ​

If the address is invalid or the query fails

Overrides ​

BaseBlockchain.fetchUTXOs

fetchTransaction() ​

ts
fetchTransaction(txHash): Promise<Transaction>;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:150

Retrieves detailed information about a specific transaction.

Parameters ​
ParameterTypeDescription
txHashstring | Uint8Array<ArrayBufferLike>The transaction hash/ID to look up
Returns ​

Promise<Transaction>

A promise that resolves with the transaction details

Throws ​

If the transaction cannot be found or the query fails

Overrides ​

BaseBlockchain.fetchTransaction

fetchAddressHistory() ​

ts
fetchAddressHistory(address): Promise<ExtMap<BlockchainTransaction>>;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:165

Retrieves all transactions associated with a specific address.

Parameters ​
ParameterTypeDescription
addressstringThe blockchain address to query
Returns ​

Promise<ExtMap<BlockchainTransaction>>

A promise that resolves with the list of transactions

Throws ​

If the address is invalid or the query fails

Overrides ​

BaseBlockchain.fetchAddressHistory

fetchBlockHeader() ​

ts
fetchBlockHeader(blockHeight): Promise<BlockHeader>;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:186

Retrieves the Block Header at the given height.

Parameters ​
ParameterTypeDescription
blockHeightnumberThe block height of the header to retrieve
Returns ​

Promise<BlockHeader>

A promise that resolves with the Block Header

Throws ​

If the block number is invalid or the query fails

Overrides ​

BaseBlockchain.fetchBlockHeader

fetchChainTip() ​

ts
fetchChainTip(): Promise<BlockchainChainTip>;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:197

Retrieves the current chain tip block.

Returns ​

Promise<BlockchainChainTip>

A promise that resolves with the current chain tip

Throws ​

If the chain tip cannot be retrieved

Overrides ​

BaseBlockchain.fetchChainTip

broadcastTransaction() ​

ts
broadcastTransaction(tx, opts): Promise<Transaction>;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:207

Broadcasts a raw transaction to the blockchain network.

Parameters ​
ParameterTypeDescription
tx| string | Transaction | Uint8Array<ArrayBufferLike> | TransactionBCHThe serialized transaction data to broadcast
opts{ skipValidation?: boolean; feeRateSatsPerKb?: bigint; }-
opts.skipValidation?boolean-
opts.feeRateSatsPerKb?bigint-
Returns ​

Promise<Transaction>

A promise that resolves when the transaction is successfully broadcast

Throws ​

If the transaction is invalid or broadcasting fails

Overrides ​

BaseBlockchain.broadcastTransaction

subscribeLockscript() ​

ts
subscribeLockscript(lockscript, callback): Promise<() => Promise<boolean>>;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:262

Subscribes to updates for a specific lockscript. The provided callback will be invoked when relevant events occur for the address.

Parameters ​
ParameterTypeDescription
lockscriptstring | Uint8Array<ArrayBufferLike>The blockchain lockscript to monitor
callbackBlockchainCallback<AddressStatusPayload>The callback function to handle address-related events
Returns ​

Promise<() => Promise<boolean>>

A promise that resolves when the subscription is established

Throws ​

If the subscription cannot be created

Overrides ​

BaseBlockchain.subscribeLockscript

unsubscribeLockscript() ​

ts
unsubscribeLockscript(lockscript, callback): Promise<boolean>;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:276

Removes a subscription for a specific blockchain address.

Parameters ​
ParameterTypeDescription
lockscriptstring | Uint8Array<ArrayBufferLike>The blockchain lockscript to unsubscribe from
callbackBlockchainCallback<AddressStatusPayload>The callback function to remove
Returns ​

Promise<boolean>

A promise that resolves when the subscription is removed

Throws ​

If the subscription cannot be removed

Overrides ​

BaseBlockchain.unsubscribeLockscript

subscribeAddress() ​

ts
subscribeAddress(address, callback): Promise<() => Promise<boolean>>;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:290

Subscribes to updates for a specific blockchain address. The provided callback will be invoked when relevant events occur for the address.

Parameters ​
ParameterTypeDescription
addressstringThe blockchain address to monitor
callbackBlockchainCallback<AddressStatusPayload>The callback function to handle address-related events
Returns ​

Promise<() => Promise<boolean>>

A promise that resolves when the subscription is established

Throws ​

If the subscription cannot be created

Overrides ​

BaseBlockchain.subscribeAddress

unsubscribeAddress() ​

ts
unsubscribeAddress(address, callback): Promise<boolean>;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:309

Removes a subscription for a specific blockchain address.

Parameters ​
ParameterTypeDescription
addressstringThe blockchain address to unsubscribe from
callbackBlockchainCallback<AddressStatusPayload>The callback function to remove
Returns ​

Promise<boolean>

A promise that resolves when the subscription is removed

Throws ​

If the subscription cannot be removed

Overrides ​

BaseBlockchain.unsubscribeAddress

subscribeTransaction() ​

ts
subscribeTransaction(transactionHash, callback): Promise<() => Promise<boolean>>;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:335

Subscribes to updates for a specific transaction. The provided callback will be invoked when relevant events occur for the transaction.

Parameters ​
ParameterTypeDescription
transactionHashstringThe transaction hash to monitor
callbackBlockchainCallbackThe callback function to handle transaction-related events
Returns ​

Promise<() => Promise<boolean>>

A promise that resolves when the subscription is established

Throws ​

If the subscription cannot be created

Overrides ​

BaseBlockchain.subscribeTransaction

unsubscribeTransaction() ​

ts
unsubscribeTransaction(transactionHash, callback): Promise<boolean>;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:349

Removes a subscription for a specific transaction.

Parameters ​
ParameterTypeDescription
transactionHashstringThe transaction hash to unsubscribe from
callbackBlockchainCallbackThe callback function to remove
Returns ​

Promise<boolean>

A promise that resolves when the subscription is removed

Throws ​

If the subscription cannot be removed

Overrides ​

BaseBlockchain.unsubscribeTransaction

addTransaction() ​

ts
addTransaction(tx): void;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:421

Parameters ​
ParameterType
txBlockchainTransaction
Returns ​

void

removeTransaction() ​

ts
removeTransaction(txHash): void;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:425

Parameters ​
ParameterType
txHashstring
Returns ​

void

deriveSpentUtxos() ​

ts
deriveSpentUtxos(): Set<string>;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:429

Returns ​

Set<string>

deriveUtxoSet() ​

ts
deriveUtxoSet(): BlockchainUTXOs;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:444

Returns ​

BlockchainUTXOs

mineBlock() ​

ts
mineBlock(outputs, includeTransactionHashes?): Promise<void>;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:471

Parameters ​
ParameterType
outputsOutput[]
includeTransactionHashes?string[]
Returns ​

Promise<void>

replaceBlocks() ​

ts
replaceBlocks(blocks, options): void;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:562

Replace only the last N blocks (N = blocks.length) of the chain with the provided blocks. Transactions confirmed in the replaced blocks are first unconfirmed (set to height 0). Transactions listed in the new blocks are then confirmed at their new heights. Earlier blocks are preserved.

Parameters ​
ParameterType
blocksobject[]
optionsPartial<{ dropMempool: boolean; }>
Returns ​

void

validateTransaction() ​

ts
validateTransaction(
   tx, 
   sourceOutputs, 
   feeRateSatsPerKb): void;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:636

Parameters ​
ParameterTypeDefault value
txTransactionundefined
sourceOutputsOutput[]undefined
feeRateSatsPerKbbigint1000n
Returns ​

void

Remarks ​

Consider moving this to Transaction Primitive. Trade-off is that it's probably big. Maybe standalone util?

registerSourceMap() ​

ts
registerSourceMap(scriptHex, debug): void;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:726

Parameters ​
ParameterType
scriptHexstring
debug{ }
Returns ​

void

registerSourceMaps() ​

ts
registerSourceMaps(scripts): void;

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:755

Parameters ​
ParameterType
scriptsTemplateScripts
Returns ​

void

toBlocks() ​

ts
toBlocks(): object[];

Defined in: packages/templates-dev/src/blockchain/blockchain-test.ts:854

Convert the in-memory blockchain transactions to an array of blocks.

Returns ​

object[]

broadcastTransactions() ​

ts
broadcastTransactions(transactions): Promise<Transaction[]>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:210

Parameters ​
ParameterType
transactions( | string | Transaction | Uint8Array<ArrayBufferLike> | TransactionBCH)[]
Returns ​

Promise<Transaction[]>

Inherited from ​

BaseBlockchain.broadcastTransactions

waitForTransaction() ​

ts
waitForTransaction(tx, timeoutMs): Promise<void>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:232

Waits for a transaction to be seen by the node.

Parameters ​
ParameterTypeDefault valueDescription
tx| string | Transaction | Uint8Array<ArrayBufferLike> | TransactionBCHundefinedThe transaction to wait for. Can be a Uint8Array, Transaction instance, or a string.
timeoutMsnumber10_000The maximum time to wait in milliseconds before timing out. Defaults to 10,000ms (10 seconds).
Returns ​

Promise<void>

A Promise that resolves when the transaction is seen by the node or rejects if the timeout is reached.

Throws ​

Error if the transaction is not seen by the node within the specified timeout.

Inherited from ​

BaseBlockchain.waitForTransaction

waitForTransactionHash() ​

ts
waitForTransactionHash(txHash, timeoutMs): Promise<void>;

Defined in: packages/templates-dev/src/blockchain/base-blockchain.ts:242

Parameters ​
ParameterTypeDefault value
txHashstring | TransactionHash | Uint8Array<ArrayBufferLike>undefined
timeoutMsnumber10_000
Returns ​

Promise<void>

Inherited from ​

BaseBlockchain.waitForTransactionHash

on() ​

ts
on<K>(
   type, 
   listener, 
   debounceMilliseconds?): OffCallback;

Defined in: packages/core/dist/primitives.d.ts:593

Registers a listener for the specified event type.

Type Parameters ​
Type ParameterDescription
K extends keyof BlockchainEventsThe event type key
Parameters ​
ParameterTypeDescription
typeKThe event type to listen for
listenerListener<BlockchainEvents[K]>The function to call when the event is emitted
debounceMilliseconds?numberOptional debounce time in milliseconds
Returns ​

OffCallback

A callback function that can be used to unregister this listener

Example ​
typescript
const off = emitter.on('data-change', (data) => {
  console.log('Data updated:', data);
}, 300); // Debounce for 300ms

// Later, unregister the listener
off();
Inherited from ​

BaseBlockchain.on

once() ​

ts
once<K>(
   type, 
   listener, 
   debounceMilliseconds?): OffCallback;

Defined in: packages/core/dist/primitives.d.ts:611

Registers a one-time listener for the specified event type. The listener will be automatically removed after being called once.

Type Parameters ​
Type ParameterDescription
K extends keyof BlockchainEventsThe event type key
Parameters ​
ParameterTypeDescription
typeKThe event type to listen for
listenerListener<BlockchainEvents[K]>The function to call when the event is emitted
debounceMilliseconds?numberOptional debounce time in milliseconds
Returns ​

OffCallback

A callback function that can be used to unregister this listener before it fires

Example ​
typescript
emitter.once('user-login', ({ userId }) => {
  console.log(`Welcome ${userId}! This will only show once.`);
});
Inherited from ​

BaseBlockchain.once

off() ​

ts
off<K>(type, listener): void;

Defined in: packages/core/dist/primitives.d.ts:626

Removes a specific listener for the given event type.

Type Parameters ​
Type ParameterDescription
K extends keyof BlockchainEventsThe event type key
Parameters ​
ParameterTypeDescription
typeKThe event type to remove the listener from
listenerListener<BlockchainEvents[K]>The listener function to remove
Returns ​

void

Example ​
typescript
const handler = (data) => console.log(data);
emitter.on('test', handler);
emitter.off('test', handler); // Removes the listener
Inherited from ​

BaseBlockchain.off

emit() ​

ts
emit<K>(type, payload): boolean;

Defined in: packages/core/dist/primitives.d.ts:648

Emits an event of the specified type with the given payload. All registered listeners for this event type will be called.

Type Parameters ​
Type ParameterDescription
K extends keyof BlockchainEventsThe event type key
Parameters ​
ParameterTypeDescription
typeKThe event type to emit
payloadBlockchainEvents[K]The data to pass to all listeners
Returns ​

boolean

true if there were listeners for this event, false otherwise

Example ​
typescript
const hasListeners = emitter.emit('user-login', {
  userId: '123',
  timestamp: Date.now()
});

if (!hasListeners) {
  console.log('No one was listening for user-login events');
}
Inherited from ​

BaseBlockchain.emit

removeAllListeners() ​

ts
removeAllListeners(): void;

Defined in: packages/core/dist/primitives.d.ts:659

Removes all listeners for all events. This effectively resets the EventEmitter to its initial state.

Returns ​

void

Example ​
typescript
emitter.removeAllListeners();
// All previously registered listeners are now gone
Inherited from ​

BaseBlockchain.removeAllListeners

waitFor() ​

ts
waitFor<K>(
   type, 
   predicate, 
   timeoutMs?): Promise<BlockchainEvents[K]>;

Defined in: packages/core/dist/primitives.d.ts:685

Returns a Promise that resolves when an event of the specified type is emitted and matches the given predicate.

Type Parameters ​
Type ParameterDescription
K extends keyof BlockchainEventsThe event type key
Parameters ​
ParameterTypeDescription
typeKThe event type to wait for
predicate(payload) => booleanA function that determines if the event payload matches what we're waiting for
timeoutMs?numberOptional timeout in milliseconds. If specified, the promise will reject after this time
Returns ​

Promise<BlockchainEvents[K]>

A Promise that resolves with the event payload when the condition is met

Throws ​

If the timeout is reached before a matching event occurs

Example ​
typescript
try {
  const loginData = await emitter.waitFor(
    'user-login',
    ({ userId }) => userId === 'admin',
    5000 // Wait up to 5 seconds
  );
  console.log('Admin logged in:', loginData);
} catch (error) {
  console.log('Timeout: Admin never logged in');
}
Inherited from ​

BaseBlockchain.waitFor