libspiffy library

LibSpiffy - Actor-Based Bitcoin SPV Wallet Library

A comprehensive SPV wallet library built on the Dactor/Eventador stack with SpiffyNode integration for robust P2P functionality and chain tracking.

Classes

ActorResponse
Base class of actor replies.
AddressDiscoveryResult
Result of address discovery scan
AddressEntity
Address entity for efficient address lookup and metadata
AddressGeneratedResponse
Response from BitcoinWalletAggregate after processing GenerateAddressCommand
AddressMetadata
Domain model for address metadata
AddressScriptInfo
Information about a script associated with an address
AncestorTransactionEntity
A transaction a received BEEF carried as an ancestor of the paid transaction (bead libspiffy-zsh): SPV evidence needed to spend the received outputs before they are mined, not a wallet transaction. Keyed by txid only; rows are never deleted.
AnchorKeyResponse
Reply of the wallet aggregate to IssueAnchorKeyCommand and SignWithAnchorKeyCommand (beads libspiffy-zxkd, libspiffy-fdal): the anchor public key (compressed hex), and for a signing request the DER signature (hex) of SHA-256 of the message. Empty on failure.
ARCActor
Actor that handles ARC service integration for transaction broadcasting and monitoring
ArcHealthResponse
Health status response from ARC
ArcMerkleProofResponse
Merkle proof of a mined transaction, taken from GET /v1/tx/{txid}.
ArcPolicyResponse
Policy returned by GET /v1/policy.
ArcService
Service for interacting with the ARC API (Advanced Relayer Console)
ArcServiceConfig
Configuration for the ARC service
ArcSubmitResponse
Response from submitting a transaction to ARC
ArcTransactionResponse
Response from querying a transaction status from ARC
ArcWorkStoppedMessage
ARCActor has no work in flight and will start none (StopArcWorkMessage).
AwaitedAncestorProof
An ancestor transaction a spend is waiting on, and what its last stored proof said (bead libspiffy-0lx).
BEEF
Represents a Background Evaluation Extended Format transaction
BeefBumps
The BUMPs of a BEEF: one per block, not one per proven transaction.
BEEFPaymentResponse
Response with BEEF package ready to send to receiver
BEEFValidationResult
BEEF validation result
BenfordCoordinatorActor
Coordinator actor for Benford UTXO splitting operations
BenfordDistribution
Utility class for distributing amounts according to Benford's Law
BitcoinTransaction
Represents a Bitcoin transaction in the wallet.
BitcoinTransactionEntity
Bitcoin transaction storage entity
BitcoinUtxo
Represents a Bitcoin UTXO (Unspent Transaction Output) in the wallet.
BitcoinUtxoEntity
Bitcoin UTXO storage entity
BlockchainDataSource
Abstract interface for blockchain data providers
BlockchainReorganizationNotification
Notification about blockchain reorganization
BlockHeaderAnchor
The header a BlockHeaderChain is anchored to: normally the network genesis at height 0, optionally a hard-coded checkpoint further up.
BlockHeaderChain
Manages the block header chain for SPV validation.
BlockHeaderEntity
Block header storage entity for SPV validation
BlockHeaderUpdateMessage
Block header update from SpiffyNode
Brc100Counterparty
The other party of a BRC-42 derivation: the root key's own public key (self), the public key of private key 1 (anyone), or a key.
Brc100KeyOperationResponse
Reply of the wallet aggregate to Brc100KeyOperationCommand: the operation's result, or why there is none.
Brc100KeyRequest
One BRC-100 key operation: operation with the child key named by the BRC-43 protocol (securityLevel, protocolName), keyID and counterparty (self, anyone or a compressed public key in hex).
Brc100KeyResult
What a Brc100KeyRequest gave: publicKey for getPublicKey, bytes for a signature, a ciphertext, a plaintext or an HMAC, valid for a verification. identityKey is the anchor public key the operation ran under, which is the BRC-100 identity key when the anchor is the identity.
Brc100Keys
BRC-100's key operations over one root private key: BRC-42 child keys named by BRC-43 invoice numbers, BRC-3 signatures, BRC-2 encryption and HMACs. The equivalent of the reference SDK's KeyDeriver and ProtoWallet, byte for byte (pinned to the published conformance vectors in test/crypto/brc100_keys_test.dart).
Brc43Protocol
A BRC-43 protocol ID: a security level (0, 1 or 2) and a protocol name, held as the reference SDK normalises it (lowercased and trimmed).
Brc95
Reading and writing the BEEF forms of BRC-62, BRC-95 and BRC-96.
BroadcastBEEFMessage
Request to broadcast BEEF data
BroadcastDeferredPaymentMessage
Asks ARCActor to broadcast the deferred payment txid itself: the unproven transactions of beefHex (its unconfirmed ancestors) first, then rawTxHex. Idempotent. Replied with DeferredPaymentNetworkResult.
BroadcastFailedMessage
A submission that did not reach ARC, or that ARC refused.
BroadcastSuccessMessage
ARC accepted a submission: it holds the transaction.
BroadcastTransactionMessage
Request to broadcast a transaction
BUMP
A BSV Universal Merkle Path (BRC-74).
CallbackTransactionSigner
A TransactionSigner that delegates ECDSA signing to a callback.
CancelInvoiceMessage
Cancel an invoice
CdnChunkInfo
Describes a single chunk of binary block headers on the CDN.
CdnHeaderSyncConfig
Configuration for CDN-based fast initial block header sync.
CdnHeaderSyncService
Downloads and imports block headers from a CDN for fast initial sync.
CdnManifest
CDN manifest describing all available header chunks for a network.
CdnSyncResult
Result of a CDN header sync operation.
ChannelP2PAdapter
Transport-agnostic adapter that translates between P2P protocol messages (as raw maps) and LibSpiffy's PaymentChannelManagerActor messages.
ChannelProjection
Channel projection that builds read models from channel events
ChannelTiming
The timing a node holds its payment channels to.
ChannelTransactionResult
Result of a payment channel transaction build
CheckDeferredPaymentStatusMessage
Asks ARCActor to query the network status of the deferred payment txid now, instead of waiting for the periodic scan. The wallet is updated as for a scan result (spend applied on SEEN_ON_NETWORK / MINED, a MINED merkle proof checked against the local headers before confirming, the payment failed on REJECTED; DOUBLE_SPEND_ATTEMPTED keeps it outstanding), and the status is journaled. Replied with DeferredPaymentNetworkResult.
CheckInvoiceMessage
Request to check/lookup invoice details
CheckOutputSpendersMessage
Asks ARCActor which of utxoKeys (outputs of wallet walletId) the configured data source reports spent, and by what. A spender that is confirmed and whose merkle proof matches the local headers is evidence, and comes back with its proof as a BEEF (ForeignSpend.spenderBeefHex) for the coordinator to receive into the wallet. Anything less is reported as a lead. Nothing is recorded here: the wallet decides what in the spender is its own. Replied with OutputSpendersResult.
CheckStoragePendingUTXOsMessage
Message to trigger checking all pending UTXOs from storage against Arc
CheckTransactionStatusMessage
Check transaction status
ClientChannelInfo
Tracks state for a channel we initiated (client role).
CreateInvoiceMessage
Request to create a new invoice/payment request
CreateWalletMessage
Messages for coordinating between actors in the LibSpiffy system Request to create a new wallet
CryptoService
Cryptographic service interface for Bitcoin operations Provides all cryptographic functionality needed by the wallet
DartSVCryptoService
CryptoService backed by dartsv.
DeferredNetworkStatus
Network status strings recorded for deferred payments.
DeferredPayment
Read model of a deferred payment. Never deleted (only a wallet deletion removes it): resolved payments stay listable with their state.
DeferredPaymentEntity
A deferred payment (bead libspiffy-7p2): an outgoing transaction recorded with a deferred spend, with the inputs it holds and its state. Rows are never deleted except with their wallet.
DeferredPaymentInput
One input a deferred payment holds.
DeferredPaymentNetworkResult
What ARCActor learned from a CheckDeferredPaymentStatusMessage or a BroadcastDeferredPaymentMessage.
DeferredPaymentPage
One page of deferred payments.
DeferredPaymentPurpose
The purpose a deferred payment carries, for the values the wallet itself sets and reads back.
DeferredPaymentQuery
Filter and page of ReadModelStorage.listDeferredPayments.
DeferredSpendCancelledResponse
Reply of the wallet aggregate to CancelDeferredSpendCommand.
DeferredSpendCompletedResponse
Reply to a CompleteDeferredSpendCommand: the wallet journaled the completed transaction, moved the hold on the half's inputs to it, and resolved the half as DeferredPaymentState.completed.
DeferredSpendReclaimedResponse
Reply to a ReclaimDeferredSpendCommand (bead libspiffy-87a): the wallet journaled the self-spend, moved the hold on the reclaimed payment's inputs to it, and journaled the reclaim.
DelegatedAddressesRecordedResponse
Reply of the wallet aggregate to RecordDelegatedAddressesCommand (bead libspiffy-m8qu): the address of each requested index, in order, and those it journaled (the others it had recorded already).
DiscoveredAddress
Information about a discovered address
EncryptionResult
Result of an encryption operation.
EncryptionService
Service for encrypting and decrypting sensitive data.
EventStorage
Abstract interface for event storage operations.
FailureResponse
A reply that can only report failure (bead libspiffy-kl4i).
FeeRate
A fee rate: satoshis per bytes, as ARC publishes it in its policy (GET /v1/policy, miningFee, schema FeeAmount).
FeeRateQuote
Reply to GetFeeRateMessage.
ForeignSpend
One wallet output another transaction spends: found by CheckOutputSpendersMessage, and recorded in the wallet by CheckForeignSpendsCommand when the spender is proven.
FundingTransactionBuiltResponse
Response from building and signing a funding transaction
GetFeeRateMessage
Asks ARCActor for ARC's published policy rate (GET /v1/policy, its miningFee). Replied with FeeRateQuote.
HarvestedUTXO
HarvestResult
HdKeyPath
The key at m/{chain}/{derivationIndex} of the wallet's HD tree. Ignored by the aggregate for a single-key (WIF) wallet, whose one key signs.
HeaderAcceptResult
Result of BlockHeaderChain.acceptHeader.
HeaderBatchOutcome
What one batch of headers did to the chain.
HeaderChainReorganizedMessage
Sent by HeaderSyncActor to SPVActor when accepting a batch of headers moved the active chain to another branch.
HeaderSyncReport
What HeaderSyncActor tells the coordinator: where sync stands, and, after a batch, what the batch stored. Sent after every batch, and in answer to a GetHeaderSyncStatusQuery (then with its requestId).
ImportableTransaction
Raw transaction with merkle proof for import
ImportedTransaction
Represents a successfully imported transaction
InitiateHeaderSyncMessage
Message to initiate header sync after P2P setup is complete
InMemorySecureStorage
In-memory implementation of SecureStorage for development and testing.
InMemoryWalletStorage
In-memory implementation of WalletStorage for development and testing.
InputSignedResponse
Reply to SignInputCommand: the signature for one input and the public key of the wallet key that produced it.
Invoice
Invoice data class for storage
InvoiceCoordinatorActor
Coordinator actor for invoice management using CQRS pattern
InvoiceCreatedMessage
Response when an invoice is successfully created
InvoiceDetailsResponse
Response with invoice details
InvoiceEntity
Invoice entity for payment request management
InvoiceOutputSpec
Specification for a single invoice output (distinct UTXO) Supports both P2PKH (address-based) and P2MS (multisig) outputs
InvoiceProjection
Invoice projection that builds read models from invoice events
InvoiceReadModel
Read model for invoice queries - optimized for UI/query needs
InvoicesListMessage
Response with list of invoices
InvoiceState
Represents the current state of an invoice aggregate (write model)
InvoiceStatusMessage
Invoice status update notification
IsarWalletStorage
Isar-based implementation of ReadModelStorage.
IssuedAddress
An address the wallet issued, with where it sits in the HD tree.
KeyPath
Where the key of a wallet address comes from; the wallet aggregate derives the private key from it when it signs.
Leaf
Represents a leaf in the merkle tree
Level
Represents a level in the merkle tree
LibSpiffyActorSystem
Initialization and management utilities for the LibSpiffy actor system
LibSpiffySchemas
LibSpiffy's Isar schemas that developers can add to their Isar instance.
ListInvoicesMessage
List all invoices for a wallet
ListWalletsMessage
Request list of all wallets
MarkInvoicePaidMessage
Mark an invoice as paid
MerkleProof
Merkle proof data for SPV validation
MerkleProofData
Merkle proof data in a generic format
MerkleProofEntity
Merkle proof storage entity for SPV validation
MerkleProofMessage
Merkle proof retrieved from ARC (NEW)
Migration
Base class for database migrations.
MultisigSignatureResult
Result of signing a multisig input
MultisigTransactionSignedResponse
Response for multisig transaction signing
NetworkName
Normalises the network identifiers used across libspiffy.
NetworkParams
Consensus constants for one Bitcoin SV network.
OPReturnOutputSpec
OP_RETURN (data carrier) output specification OP_RETURN outputs are unspendable and carry arbitrary data on-chain
OutputAwaitingProof
One of a wallet's unspent outputs that cannot be proven to a counterparty right now (bead libspiffy-0lx): the walk back from its transaction to a merkle proof on the active header chain does not complete.
OutputSpender
The transaction that spent an output, as a data source reports it.
OutputSpendersResult
Reply to CheckOutputSpendersMessage.
P2MSOutputSpec
P2MS (Pay-to-Multisig) output specification
P2PKHOutputSpec
P2PKH (Pay-to-Public-Key-Hash) output specification
PayInvoiceMessage
Request to pay an invoice with BEEF-formatted transaction
PaymentChannelBuilder
Payment Channel Builder Service
PaymentChannelEntity
PaymentCoordinatorActor
Coordinator actor for payment operations with SPV BEEF construction
PaymentPrivacy
How a payment hides which of its outputs is the payer's change and which coins funded it (bead libspiffy-o7a4). Off unless a caller asks: PayInvoiceCommand(privacy: null) builds the payment as before.
PaymentWithBEEF
Result of building a payment transaction with BEEF ancestry
PeerInfo
Tracks which peers are involved in a channel.
PendingReceive
A receive parked until the block header(s) its merkle proof(s) need arrive.
PendingReceiveEntity
A receive parked until the block header(s) its merkle proof(s) need arrive (bead libspiffy-vfai): the BEEF exactly as a counterparty handed it to us, so the wallet is still credited when the header lands after a restart. Keyed by (walletId, txid); rows are never deleted except with their wallet.
PendingRequest
A pending incoming channel request awaiting accept/reject.
PluginFundingInput
One funding UTXO as a plugin spends it (bead libspiffy-0nfk): the output over its real locking script, and the unlocking script the wallet writes for it.
PluginKey
A wallet key a plugin names by the HASH160 of its public key: a signer whose signatures come from that key, and the public key itself.
PluginOutputSpec
Plugin-delegated output specification.
PluginRegistry
Central registry for script plugins. Singleton.
PluginTransactionRequest
Request for a TransactionBuilderPlugin to build a complete transaction.
PluginUnlockSpec
Parameters for building an unlocking script to spend a plugin-managed UTXO.
PostgresConfig
Configuration for PostgreSQL database connections.
PostgresEventStore
PostgreSQL implementation of EventStore and EventStream.
PostgresMigrations
Manages database migrations for PostgreSQL.
PostgresSecureStorage
PostgreSQL-based secure storage that ONLY supports xpub storage.
PostgresWalletStorage
PostgreSQL implementation of ReadModelStorage.
ProofHeaderCheck
Result of checkBumpAgainstHeaders.
ProvenTransaction
A transaction a received BEEF carried with a BUMP that verifies against our active header chain (bead libspiffy-fggl).
ProvisionedTransaction
A single transaction in a funding provision batch.
ProvisionFundingMessage
Internal message forwarded to PaymentCoordinatorActor for funding provisioning.
ProvisionFundingResponse
Response from PaymentCoordinatorActor after funding provisioning.
ReadModelStorage
Abstract interface for read-model storage operations.
ReceiveTransactionMessage
Receive transaction directly from counterparty with proofs (CORE SPV)
RetrieveMerkleProofMessage
Request merkle proof retrieval from ARC (NEW)
ScriptPlugin
Interface that external token/script libraries implement to teach libspiffy how to identify, parse, and build their script types.
ScriptTypeRegistry
A wrapper around DartSV's script template system focused on accounting
SecureStorage
Abstract interface for secure storage operations.
ServerChannelInfo
Tracks state for a channel we accepted (server role).
SetArcActorForSPVMessage
Message to set the ARC actor reference in SPVActor
SetArcActorMessage
Internal message to set ARC actor reference in WalletManager
SetBenfordCoordinatorMessage
Message to set the Benford coordinator reference in WalletManager
SetCoordinatorForHeadersMessage
Tells HeaderSyncActor which actor announces header sync to the application: it reports every batch it processes there as a HeaderSyncReport. Sent by WalletCoordinatorActor.preStart, as SetCoordinatorForSPVMessage is.
SetCoordinatorForSplitsMessage
Tells BenfordCoordinatorActor which actor announces a split's progress to the application (bead libspiffy-7ye4).
SetCoordinatorForSPVMessage
Tells SPVActor which actor speaks for the app (bead libspiffy-4gy8).
SetHeaderSyncActorMessage
Message to set HeaderSyncActor reference in SPVActor
SetInvoiceManagerMessage
Internal message to set InvoiceManager reference in WalletManager
SetPeerManagerMessage
Message to set the PeerManager reference after P2P initialization
SetSpiffyNodeBridgeMessage
Message to set the SpiffyNode bridge reference after P2P initialization
SpentOutputLookup
A data source that can say which transaction spent an output.
SplitTransactionOutcome
One Benford split transaction and how it ended (SplitTransactionStatus).
SplitUTXOsResponse
Response from BenfordCoordinatorActor or BitcoinWalletAggregate for SplitUTXOsToBenfordCommand
SplitUTXOsStartedMessage
The Benford coordinator has decided what a SplitUTXOsToBenfordCommand will split and is about to build the first transaction.
SPVActor
Actor that handles true SPV validation - receives transactions from counterparties and validates them using merkle proofs against the block header chain
SPVValidationResult
SPV validation result after processing received transaction
StopArcWorkMessage
Asks ARCActor to finish the work it has in flight and start no more, before the system shuts down (bead libspiffy-vr89). Answered with ArcWorkStoppedMessage once nothing of ARCActor's can still write the retry queue's Isar store, so the host may close it.
StorageFactory
Factory for creating storage instances based on the selected backend.
TransactionAddressEntity
Junction table for transaction-address many-to-many relationship Enables efficient queries like "all transactions involving address X"
TransactionAddresses
Contains all addresses involved in a transaction
Represents a link between a transaction and an address
TransactionAnalyzer
Analyzes transactions to identify wallet outputs and spending patterns
TransactionAncestorsRecordedResponse
Answer to RecordTransactionAncestorsCommand: given also when nothing was journaled (the transaction is not one this wallet recorded, or its ancestors are kept already).
TransactionBuilderPlugin
Extended plugin interface for protocols that build complete multi-output transactions with protocol-specific structure.
TransactionBuilderResult
Result of a plugin's TransactionBuilderPlugin.buildTransaction call.
TransactionConfirmationsRevertedMessage
Sent by SPVActor to ARCActor after it reverted the confirmation of txids (a reorganization orphaned their block, or a proof imported before its header was known turned out not to match it).
TransactionImportResult
Result of transaction import operation
TransactionImportService
Service for importing transactions with SPV validation
TransactionInfo
Information about a single transaction
TransactionRecordedResponse
Response from BitcoinWalletAggregate after processing RecordImportedTransactionCommand or RecordOutgoingTransactionCommand.
TransactionSignedResponse
Response from BitcoinWalletAggregate after signing transaction
TransactionStatusMessage
Transaction status response (ENHANCED)
TxInput
Transaction input
TxOutput
Transaction output
Type42
BRC-42 (BSV "type-42") key derivation.
Type42AddressesRecordedResponse
Reply of the wallet aggregate to RecordType42AddressesCommand (bead libspiffy-zxkd): the address of each requested derivation, in order, and those it journaled (the others it had recorded already).
Type42AddressesResponse
Reply of the wallet aggregate to LookupType42AddressesCommand (bead libspiffy-zxkd): the type-42 derivation of each requested address the wallet knows one of.
Type42Derivation
The type-42 (BRC-42) derivation of a payment destination (beads libspiffy-zxkd, libspiffy-fdal): the payee's anchor key anchorPublicKey A, the anchorContext it was issued for, the payer's key senderPublicKey B, and the invoiceNumber the two agreed. This is the hand-off a payer gives with the payment.
Type42Destination
A type-42 destination the wallet derived as a payer (bead libspiffy-zxkd): address pays the holder of the anchor key Type42Derivation.anchorPublicKey, and derivation is what the recipient derives it from, so it is the hand-off that goes with the payment.
Type42DestinationDerivedResponse
Reply of the wallet aggregate to DeriveType42DestinationCommand (bead libspiffy-zxkd), sent once the destination is journaled; destination is null on failure.
Type42KeyPath
The type-42 child of the wallet's anchor key for derivation.
UtxoInfo
Information about an unspent transaction output (UTXO)
UTXOReceivedResponse
UTXOReservedResponse
Response from BitcoinWalletAggregate after processing ReceiveUTXOCommand Reply to ReserveUTXOCommand. Sent on success as well as failure so callers no longer have to treat "no reply within 2 s" as success.
UTXOsReleasedResponse
Answer to ReleaseUTXOsCommand: the UTXOs the reservation held, now released; empty when it held none (released already, expired, or a deferred payment's hold, which only its settlement releases).
ValidateBEEFMessage
Request BEEF validation (enhanced transaction format)
ValidateCounterpartyTransactionMessage
Ask SPVActor to judge a transaction a counterparty handed us WITHOUT receiving it (bead libspiffy-6e5).
WalletCommandFailed
BitcoinWalletAggregate refused or failed a command it has no specific reply for (bead libspiffy-kl4i).
WalletCommandMessage
Route a command to a specific wallet
WalletCoordinator
The coordinator, as an application talks to it: send a command and wait for its own answer (ask), send one and leave the answer on the event stream (tell), or follow the events of one kind (on).
WalletCoordinatorActor
The canonical public interface for third-party apps using LibSpiffy.
WalletCreatedMessage
Response containing wallet creation result (from WalletManagerActor to external caller)
WalletCreatedResponse
Response from BitcoinWalletAggregate after processing CreateWalletCommand
WalletDeletedResponse
Answer to DeleteWalletCommand: the deletion is journaled.
WalletEvent
Base class for all wallet events that integrates with Eventador event sourcing
WalletListMessage
Response with list of wallet IDs
WalletManagerActor
Central coordinator that manages multiple wallet aggregates and routes commands
WalletManagerFailure
WalletManagerActor could not carry out a request (bead libspiffy-kl4i).
WalletMetadataEntity
Wallet metadata storage entity
WalletOwnershipQuery
Asks a wallet which of addresses and outpoints are its own (bead libspiffy-29t). Sent by SPVActor to WalletManagerActor, which hands it to the wallet aggregate; the aggregate answers from its event-sourced state with a WalletOwnershipResponse.
WalletOwnershipResponse
The answer to a WalletOwnershipQuery.
WalletPreloadedResponse
WalletManagerActor's reply to a PreloadWalletCommand that was sent with a sender (a plain tell without one gets no reply). success is true when the wallet's aggregate is loaded; otherwise error says why.
WalletProjection
Wallet projection that builds read models from wallet events
WalletReadModel
Read model for wallet queries - optimized for UI/query needs
WalletRowRules
The rules, shared by the in-memory, Isar and Postgres backends.
WalletSpendableUtxosQuery
Asks a wallet for its type and the UTXOs it can spend now (bead libspiffy-ypp). Sent by BenfordCoordinatorActor to WalletManagerActor, which hands it to the wallet aggregate; the aggregate answers from its event-sourced state with a WalletSpendableUtxosResponse, after every command it has already acknowledged (the read model lags the journal, so a wallet created or funded moments earlier looked unknown or empty).
WalletSpendableUtxosResponse
The answer to a WalletSpendableUtxosQuery.
WalletState
Represents the current state of a wallet at a specific point in time.
WalletStorage
Combined storage interface for backward compatibility.
WatchAddressAddedResponse
Reply of the wallet aggregate to AddWatchAddressCommand (bead libspiffy-p4kv).
WhatsOnChainDataSource
WhatsOnChain implementation of BlockchainDataSource

Enums

AddressChain
Which chain of the wallet's HD tree an address is on.
ArcTransactionStatus
Status of a transaction in the ARC system, with the name ARC's API gives it (wireName). The one mapping between the two: both response parsers read it with fromWire, and what the wallet journals is wireName.
BitcoinScriptType
BitcoinTransactionDirection
Represents the direction of a Bitcoin transaction
Brc100KeyOperation
The BRC-100 key methods a wallet runs on an anchor key's children.
CdnSyncPhase
Phase of CDN block header synchronization.
DeferredPaymentNetworkSource
Where a network check or a broadcast of a deferred payment goes.
DeferredPaymentState
Lifecycle of a deferred payment.
HeaderRejectReason
Why a header was not accepted.
InvoiceStatus
Messages for invoice/payment request management Status of an invoice
MerkleProofStatus
Where a stored MerkleProof stands against the local header chain (audit beads libspiffy-mny, libspiffy-azl).
ProofHeaderStatus
Outcome of checking a merkle proof against the local header chain.
SplitTransactionStatus
How one Benford split transaction ended (bead libspiffy-wdch). A split is recorded as a deferred payment before it is broadcast (bead libspiffy-ypp), so every status but notRecorded names a transaction the wallet lists (GetDeferredPaymentsQuery) until the network settles it.
StorageBackend
Available storage backend options for libspiffy.
TransactionStatus
Enumeration of transaction statuses
UTXOStatus
Enumeration of UTXO statuses
WalletType
Supported wallet types in LibSpiffy

Extensions

AddressEntityByIndex on IsarCollection<AddressEntity>
AddressEntityQueryFilter on QueryBuilder<AddressEntity, AddressEntity, QFilterCondition>
AddressEntityQueryObject on QueryBuilder<AddressEntity, AddressEntity, QFilterCondition>
AddressEntityQueryProperty on QueryBuilder<AddressEntity, AddressEntity, QQueryProperty>
AddressEntityQuerySortBy on QueryBuilder<AddressEntity, AddressEntity, QSortBy>
AddressEntityQuerySortThenBy on QueryBuilder<AddressEntity, AddressEntity, QSortThenBy>
AddressEntityQueryWhere on QueryBuilder<AddressEntity, AddressEntity, QWhereClause>
AddressEntityQueryWhereDistinct on QueryBuilder<AddressEntity, AddressEntity, QDistinct>
AddressEntityQueryWhereSort on QueryBuilder<AddressEntity, AddressEntity, QWhere>
AncestorTransactionEntityByIndex on IsarCollection<AncestorTransactionEntity>
AncestorTransactionEntityQueryFilter on QueryBuilder<AncestorTransactionEntity, AncestorTransactionEntity, QFilterCondition>
AncestorTransactionEntityQueryObject on QueryBuilder<AncestorTransactionEntity, AncestorTransactionEntity, QFilterCondition>
AncestorTransactionEntityQueryProperty on QueryBuilder<AncestorTransactionEntity, AncestorTransactionEntity, QQueryProperty>
AncestorTransactionEntityQuerySortBy on QueryBuilder<AncestorTransactionEntity, AncestorTransactionEntity, QSortBy>
AncestorTransactionEntityQuerySortThenBy on QueryBuilder<AncestorTransactionEntity, AncestorTransactionEntity, QSortThenBy>
AncestorTransactionEntityQueryWhere on QueryBuilder<AncestorTransactionEntity, AncestorTransactionEntity, QWhereClause>
AncestorTransactionEntityQueryWhereDistinct on QueryBuilder<AncestorTransactionEntity, AncestorTransactionEntity, QDistinct>
AncestorTransactionEntityQueryWhereSort on QueryBuilder<AncestorTransactionEntity, AncestorTransactionEntity, QWhere>
BitcoinTransactionEntityByIndex on IsarCollection<BitcoinTransactionEntity>
BitcoinTransactionEntityQueryFilter on QueryBuilder<BitcoinTransactionEntity, BitcoinTransactionEntity, QFilterCondition>
BitcoinTransactionEntityQueryObject on QueryBuilder<BitcoinTransactionEntity, BitcoinTransactionEntity, QFilterCondition>
BitcoinTransactionEntityQueryProperty on QueryBuilder<BitcoinTransactionEntity, BitcoinTransactionEntity, QQueryProperty>
BitcoinTransactionEntityQuerySortBy on QueryBuilder<BitcoinTransactionEntity, BitcoinTransactionEntity, QSortBy>
BitcoinTransactionEntityQuerySortThenBy on QueryBuilder<BitcoinTransactionEntity, BitcoinTransactionEntity, QSortThenBy>
BitcoinTransactionEntityQueryWhere on QueryBuilder<BitcoinTransactionEntity, BitcoinTransactionEntity, QWhereClause>
BitcoinTransactionEntityQueryWhereDistinct on QueryBuilder<BitcoinTransactionEntity, BitcoinTransactionEntity, QDistinct>
BitcoinTransactionEntityQueryWhereSort on QueryBuilder<BitcoinTransactionEntity, BitcoinTransactionEntity, QWhere>
BitcoinUtxoEntityByIndex on IsarCollection<BitcoinUtxoEntity>
BitcoinUtxoEntityQueryFilter on QueryBuilder<BitcoinUtxoEntity, BitcoinUtxoEntity, QFilterCondition>
BitcoinUtxoEntityQueryObject on QueryBuilder<BitcoinUtxoEntity, BitcoinUtxoEntity, QFilterCondition>
BitcoinUtxoEntityQueryProperty on QueryBuilder<BitcoinUtxoEntity, BitcoinUtxoEntity, QQueryProperty>
BitcoinUtxoEntityQuerySortBy on QueryBuilder<BitcoinUtxoEntity, BitcoinUtxoEntity, QSortBy>
BitcoinUtxoEntityQuerySortThenBy on QueryBuilder<BitcoinUtxoEntity, BitcoinUtxoEntity, QSortThenBy>
BitcoinUtxoEntityQueryWhere on QueryBuilder<BitcoinUtxoEntity, BitcoinUtxoEntity, QWhereClause>
BitcoinUtxoEntityQueryWhereDistinct on QueryBuilder<BitcoinUtxoEntity, BitcoinUtxoEntity, QDistinct>
BitcoinUtxoEntityQueryWhereSort on QueryBuilder<BitcoinUtxoEntity, BitcoinUtxoEntity, QWhere>
BlockHeaderEntityByIndex on IsarCollection<BlockHeaderEntity>
BlockHeaderEntityQueryFilter on QueryBuilder<BlockHeaderEntity, BlockHeaderEntity, QFilterCondition>
BlockHeaderEntityQueryObject on QueryBuilder<BlockHeaderEntity, BlockHeaderEntity, QFilterCondition>
BlockHeaderEntityQueryProperty on QueryBuilder<BlockHeaderEntity, BlockHeaderEntity, QQueryProperty>
BlockHeaderEntityQuerySortBy on QueryBuilder<BlockHeaderEntity, BlockHeaderEntity, QSortBy>
BlockHeaderEntityQuerySortThenBy on QueryBuilder<BlockHeaderEntity, BlockHeaderEntity, QSortThenBy>
BlockHeaderEntityQueryWhere on QueryBuilder<BlockHeaderEntity, BlockHeaderEntity, QWhereClause>
BlockHeaderEntityQueryWhereDistinct on QueryBuilder<BlockHeaderEntity, BlockHeaderEntity, QDistinct>
BlockHeaderEntityQueryWhereSort on QueryBuilder<BlockHeaderEntity, BlockHeaderEntity, QWhere>
DeferredPaymentEntityByIndex on IsarCollection<DeferredPaymentEntity>
DeferredPaymentEntityQueryFilter on QueryBuilder<DeferredPaymentEntity, DeferredPaymentEntity, QFilterCondition>
DeferredPaymentEntityQueryObject on QueryBuilder<DeferredPaymentEntity, DeferredPaymentEntity, QFilterCondition>
DeferredPaymentEntityQueryProperty on QueryBuilder<DeferredPaymentEntity, DeferredPaymentEntity, QQueryProperty>
DeferredPaymentEntityQuerySortBy on QueryBuilder<DeferredPaymentEntity, DeferredPaymentEntity, QSortBy>
DeferredPaymentEntityQuerySortThenBy on QueryBuilder<DeferredPaymentEntity, DeferredPaymentEntity, QSortThenBy>
DeferredPaymentEntityQueryWhere on QueryBuilder<DeferredPaymentEntity, DeferredPaymentEntity, QWhereClause>
DeferredPaymentEntityQueryWhereDistinct on QueryBuilder<DeferredPaymentEntity, DeferredPaymentEntity, QDistinct>
DeferredPaymentEntityQueryWhereSort on QueryBuilder<DeferredPaymentEntity, DeferredPaymentEntity, QWhere>
GetAddressEntityCollection on Isar
GetAncestorTransactionEntityCollection on Isar
GetBitcoinTransactionEntityCollection on Isar
GetBitcoinUtxoEntityCollection on Isar
GetBlockHeaderEntityCollection on Isar
GetDeferredPaymentEntityCollection on Isar
GetInvoiceEntityCollection on Isar
GetMerkleProofEntityCollection on Isar
GetPaymentChannelEntityCollection on Isar
GetPendingReceiveEntityCollection on Isar
GetTransactionAddressEntityCollection on Isar
GetWalletMetadataEntityCollection on Isar
InvoiceEntityByIndex on IsarCollection<InvoiceEntity>
InvoiceEntityQueryFilter on QueryBuilder<InvoiceEntity, InvoiceEntity, QFilterCondition>
InvoiceEntityQueryObject on QueryBuilder<InvoiceEntity, InvoiceEntity, QFilterCondition>
InvoiceEntityQueryProperty on QueryBuilder<InvoiceEntity, InvoiceEntity, QQueryProperty>
InvoiceEntityQuerySortBy on QueryBuilder<InvoiceEntity, InvoiceEntity, QSortBy>
InvoiceEntityQuerySortThenBy on QueryBuilder<InvoiceEntity, InvoiceEntity, QSortThenBy>
InvoiceEntityQueryWhere on QueryBuilder<InvoiceEntity, InvoiceEntity, QWhereClause>
InvoiceEntityQueryWhereDistinct on QueryBuilder<InvoiceEntity, InvoiceEntity, QDistinct>
InvoiceEntityQueryWhereSort on QueryBuilder<InvoiceEntity, InvoiceEntity, QWhere>
MerkleProofEntityQueryFilter on QueryBuilder<MerkleProofEntity, MerkleProofEntity, QFilterCondition>
MerkleProofEntityQueryObject on QueryBuilder<MerkleProofEntity, MerkleProofEntity, QFilterCondition>
MerkleProofEntityQueryProperty on QueryBuilder<MerkleProofEntity, MerkleProofEntity, QQueryProperty>
MerkleProofEntityQuerySortBy on QueryBuilder<MerkleProofEntity, MerkleProofEntity, QSortBy>
MerkleProofEntityQuerySortThenBy on QueryBuilder<MerkleProofEntity, MerkleProofEntity, QSortThenBy>
MerkleProofEntityQueryWhere on QueryBuilder<MerkleProofEntity, MerkleProofEntity, QWhereClause>
MerkleProofEntityQueryWhereDistinct on QueryBuilder<MerkleProofEntity, MerkleProofEntity, QDistinct>
MerkleProofEntityQueryWhereSort on QueryBuilder<MerkleProofEntity, MerkleProofEntity, QWhere>
PaymentChannelEntityByIndex on IsarCollection<PaymentChannelEntity>
PaymentChannelEntityQueryFilter on QueryBuilder<PaymentChannelEntity, PaymentChannelEntity, QFilterCondition>
PaymentChannelEntityQueryObject on QueryBuilder<PaymentChannelEntity, PaymentChannelEntity, QFilterCondition>
PaymentChannelEntityQueryProperty on QueryBuilder<PaymentChannelEntity, PaymentChannelEntity, QQueryProperty>
PaymentChannelEntityQuerySortBy on QueryBuilder<PaymentChannelEntity, PaymentChannelEntity, QSortBy>
PaymentChannelEntityQuerySortThenBy on QueryBuilder<PaymentChannelEntity, PaymentChannelEntity, QSortThenBy>
PaymentChannelEntityQueryWhere on QueryBuilder<PaymentChannelEntity, PaymentChannelEntity, QWhereClause>
PaymentChannelEntityQueryWhereDistinct on QueryBuilder<PaymentChannelEntity, PaymentChannelEntity, QDistinct>
PaymentChannelEntityQueryWhereSort on QueryBuilder<PaymentChannelEntity, PaymentChannelEntity, QWhere>
PendingReceiveEntityByIndex on IsarCollection<PendingReceiveEntity>
PendingReceiveEntityQueryFilter on QueryBuilder<PendingReceiveEntity, PendingReceiveEntity, QFilterCondition>
PendingReceiveEntityQueryObject on QueryBuilder<PendingReceiveEntity, PendingReceiveEntity, QFilterCondition>
PendingReceiveEntityQueryProperty on QueryBuilder<PendingReceiveEntity, PendingReceiveEntity, QQueryProperty>
PendingReceiveEntityQuerySortBy on QueryBuilder<PendingReceiveEntity, PendingReceiveEntity, QSortBy>
PendingReceiveEntityQuerySortThenBy on QueryBuilder<PendingReceiveEntity, PendingReceiveEntity, QSortThenBy>
PendingReceiveEntityQueryWhere on QueryBuilder<PendingReceiveEntity, PendingReceiveEntity, QWhereClause>
PendingReceiveEntityQueryWhereDistinct on QueryBuilder<PendingReceiveEntity, PendingReceiveEntity, QDistinct>
PendingReceiveEntityQueryWhereSort on QueryBuilder<PendingReceiveEntity, PendingReceiveEntity, QWhere>
TransactionAddressEntityQueryFilter on QueryBuilder<TransactionAddressEntity, TransactionAddressEntity, QFilterCondition>
TransactionAddressEntityQueryObject on QueryBuilder<TransactionAddressEntity, TransactionAddressEntity, QFilterCondition>
TransactionAddressEntityQueryProperty on QueryBuilder<TransactionAddressEntity, TransactionAddressEntity, QQueryProperty>
TransactionAddressEntityQuerySortBy on QueryBuilder<TransactionAddressEntity, TransactionAddressEntity, QSortBy>
TransactionAddressEntityQuerySortThenBy on QueryBuilder<TransactionAddressEntity, TransactionAddressEntity, QSortThenBy>
TransactionAddressEntityQueryWhere on QueryBuilder<TransactionAddressEntity, TransactionAddressEntity, QWhereClause>
TransactionAddressEntityQueryWhereDistinct on QueryBuilder<TransactionAddressEntity, TransactionAddressEntity, QDistinct>
TransactionAddressEntityQueryWhereSort on QueryBuilder<TransactionAddressEntity, TransactionAddressEntity, QWhere>
WalletMetadataEntityByIndex on IsarCollection<WalletMetadataEntity>
WalletMetadataEntityQueryFilter on QueryBuilder<WalletMetadataEntity, WalletMetadataEntity, QFilterCondition>
WalletMetadataEntityQueryObject on QueryBuilder<WalletMetadataEntity, WalletMetadataEntity, QFilterCondition>
WalletMetadataEntityQueryProperty on QueryBuilder<WalletMetadataEntity, WalletMetadataEntity, QQueryProperty>
WalletMetadataEntityQuerySortBy on QueryBuilder<WalletMetadataEntity, WalletMetadataEntity, QSortBy>
WalletMetadataEntityQuerySortThenBy on QueryBuilder<WalletMetadataEntity, WalletMetadataEntity, QSortThenBy>
WalletMetadataEntityQueryWhere on QueryBuilder<WalletMetadataEntity, WalletMetadataEntity, QWhereClause>
WalletMetadataEntityQueryWhereDistinct on QueryBuilder<WalletMetadataEntity, WalletMetadataEntity, QDistinct>
WalletMetadataEntityQueryWhereSort on QueryBuilder<WalletMetadataEntity, WalletMetadataEntity, QWhere>
WalletTypeExtension on WalletType

Constants

AddressEntitySchema → const CollectionSchema<AddressEntity>
AncestorTransactionEntitySchema → const CollectionSchema<AncestorTransactionEntity>
atomicBeefPrefix → const int
Atomic BEEF's prefix, 01010101 (BRC-95).
beefMagicAndVersion → const int
BeefMagicAndVersion is the magic bytes and version for BEEF format (0100BEEF)
beefV2MagicAndVersion → const int
BEEF V2's magic and version, 0200BEEF (BRC-96).
BitcoinTransactionEntitySchema → const CollectionSchema<BitcoinTransactionEntity>
BitcoinUtxoEntitySchema → const CollectionSchema<BitcoinUtxoEntity>
BlockHeaderEntitySchema → const CollectionSchema<BlockHeaderEntity>
DeferredPaymentEntitySchema → const CollectionSchema<DeferredPaymentEntity>
InvoiceEntitySchema → const CollectionSchema<InvoiceEntity>
MerkleProofEntitySchema → const CollectionSchema<MerkleProofEntity>
PaymentChannelEntitySchema → const CollectionSchema<PaymentChannelEntity>
PendingReceiveEntitySchema → const CollectionSchema<PendingReceiveEntity>
TransactionAddressEntitySchema → const CollectionSchema<TransactionAddressEntity>
WalletMetadataEntitySchema → const CollectionSchema<WalletMetadataEntity>

Functions

checkBumpAgainstHeaders({required String txid, required BUMP bump, required HeaderAtHeight headerAt, int? claimedHeight}) → Future<ProofHeaderCheck>
Check that bump proves txid (display hex) inside the block whose header headerAt returns for the BUMP's height.
checkBumpHexAgainstHeaders({required String txid, required String bumpHex, required HeaderAtHeight headerAt, int? claimedHeight}) → Future<ProofHeaderCheck>
checkBumpAgainstHeaders for a raw BUMP hex string (ARC's merklePath, the stored MerkleProof.merkleProof[0]).
frozenOutputSpec(InvoiceOutputSpec output) → InvoiceOutputSpec
output with unmodifiable collections that no caller shares.
frozenOutputSpecs(Iterable<InvoiceOutputSpec> specs) → List<InvoiceOutputSpec>
specs copied into an unmodifiable list of frozenOutputSpecs.
frozenOutputSpecsOrNull(Iterable<InvoiceOutputSpec>? specs) → List<InvoiceOutputSpec>?
frozenOutputSpecs for a field that may be null.
getLibSpiffySystem() → LibSpiffyActorSystem
Get or create the global LibSpiffy actor system instance
initializeLibSpiffy({ActorSystem? actorSystem, String? dataDirectory, ActorSystemConfig? config, ReadModelStorage? readModelStorage, SecureStorage? secureStorage, CryptoService? cryptoService, ArcServiceConfig? arcConfig, Isar? isar, String networkType = 'test', bool enableP2P = true, int? startHeight, List<String>? peerAddresses, String? userAgent, String channelPeerId = '', ChannelTiming? channelTiming}) → Future<void>
Initialize the global LibSpiffy actor system instance
outputsAwaitingAncestorProof(ReadModelStorage storage, String walletId, {int maxDepth = 20}) → Future<List<OutputAwaitingProof>>
The shared implementation of ReadModelStorage.getOutputsAwaitingAncestorProof, in terms of the interface's own reads, so every backend answers it the same way (bead libspiffy-0lx). Backends call it from their override.
shutdownLibSpiffy() → Future<void>
Shutdown the global LibSpiffy actor system instance

Typedefs

CdnSyncProgressCallback = void Function(int current, int total, CdnSyncPhase phase)
Callback type for CDN sync progress reporting.
PluginKeyLookup = Future<PluginKey> Function(String pubkeyHash)
The wallet key whose public key hashes to pubkeyHash (40 hex characters). Fails when the wallet holds no such key.
ReadBeef = ({BEEF beef, String? subjectTxid})
A BEEF as BRC-100 wallets send it, read into a V1 beef; subjectTxid (display hex) is the transaction an Atomic BEEF is about, null for a bare BEEF.
SigningCallback = Uint8List Function(Uint8List sighash, int inputIndex)
A synchronous function that signs a sighash and returns a DER-encoded signature.
SigningCallbackWithScript = Uint8List Function(Uint8List sighash, int inputIndex, Uint8List scriptPubKey)
Extended signing callback that receives the locking script of the output being spent, enabling per-input key derivation.
TransactionLookup = Future<String?> Function(String txid)
Callback for resolving raw transaction hex by txid from the wallet's append-only transaction log.

Exceptions / Errors

ArcException
Exception thrown by ARC service operations
BEEFException
BUMPException
CryptoException
Exception thrown by cryptographic operations
DataSourceException
Exception thrown by blockchain data sources
EncryptionException
Exception thrown when encryption or decryption fails.
ScriptVerificationException
Exception thrown when script verification fails
SecureStorageException
Exception thrown when secure storage operations fail.
StorageException
Exception thrown when event storage operations fail.
TransactionBuildException
Thrown when a payment channel transaction cannot be built (insufficient funds, invalid parameters, missing keys).
TransactionImportException
Exception thrown during transaction import