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,anyoneor 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
KeyDeriverandProtoWallet, byte for byte (pinned to the published conformance vectors intest/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
TransactionSignerthat 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
purposea 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 asDeferredPaymentState.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, schemaFeeAmount). - FeeRateQuote
- Reply to GetFeeRateMessage.
- ForeignSpend
-
One wallet output another transaction spends: found by
CheckOutputSpendersMessage, and recorded in the wallet byCheckForeignSpendsCommandwhen 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, itsminingFee). 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
HeaderSyncActortells the coordinator: where sync stands, and, after a batch, what the batch stored. Sent after every batch, and in answer to aGetHeaderSyncStatusQuery(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
HeaderSyncActorwhich actor announces header sync to the application: it reports every batch it processes there as a HeaderSyncReport. Sent byWalletCoordinatorActor.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
SplitUTXOsToBenfordCommandwill 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
- TransactionAddressLink
- 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
tellwithout 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> -
AddressEntityQueryLinks
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> -
AncestorTransactionEntityQueryLinks
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> -
BitcoinTransactionEntityQueryLinks
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> -
BitcoinUtxoEntityQueryLinks
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> -
BlockHeaderEntityQueryLinks
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> -
DeferredPaymentEntityQueryLinks
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> -
InvoiceEntityQueryLinks
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> -
MerkleProofEntityQueryLinks
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> -
PaymentChannelEntityQueryLinks
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> -
PendingReceiveEntityQueryLinks
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> -
TransactionAddressEntityQueryLinks
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> -
WalletMetadataEntityQueryLinks
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
bumpprovestxid(display hex) inside the block whose headerheaderAtreturns 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 storedMerkleProof.merkleProof[0]). -
frozenOutputSpec(
InvoiceOutputSpec output) → InvoiceOutputSpec -
outputwith unmodifiable collections that no caller shares. -
frozenOutputSpecs(
Iterable< InvoiceOutputSpec> specs) → List<InvoiceOutputSpec> -
specscopied 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