RequestAncestorProofCommand class

Ask the counterparty who handed us txid for a fresh merkle proof for its ancestry (bead libspiffy-a2v3).

When a reorganization takes an ancestor's block off the active chain the wallet can no longer walk txid back to a proof, so the outputs it gave us cannot go into a BEEF and cannot be spent (ReadModelStorage.getOutputsAwaitingAncestorProof lists them). There are exactly two recoveries: the block comes back, or the counterparty who sent us the payment supplies a fresh BEEF. This command is the second.

It is app-triggered: libspiffy never polls a peer for proofs.

Who is asked is BitcoinTransaction.counterpartyMarker on txid's row — the sender of that payment, who owed us its ancestry's proofs in the first place, not the ancestor's own (unknown) counterparty. The request goes out as a P2PMessageToSendEvent with messageType proof_request addressed to the marker; the app delivers it. When no marker is recorded (a payment received before markers existed, or an app that supplied none) nobody can be asked: AncestorProofRequestedEvent reports the output as unrecoverable by request.

Inheritance

Constructors

RequestAncestorProofCommand({required String walletId, required String txid, List<String> ancestorTxids = const [], String? requestId})

Properties

ancestorTxids → List<String>
The ancestors a proof is wanted for. Informational — the responder rebuilds the whole BEEF for txid — and filled in from ReadModelStorage.getOutputsAwaitingAncestorProof when left empty.
final
correlationId → String
The correlation ID of the message.
no setterinherited
hashCode → int
The hash code for this object.
no setterinherited
metadata → Map<String, dynamic>
The metadata of the message.
no setter
replyTimeout → Duration
How long WalletCoordinator.ask waits for the reply when the caller gives no timeout. A request that is still running then is not cancelled: its reply arrives on the event stream later.
no setterinherited
replyTo → ActorRef?
The actor to reply to.
no setterinherited
requestId → String
Identifies this request; its reply carries it back.
finalinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
timestamp → DateTime
The timestamp of the message.
finalinherited
txid → String
The transaction we received whose ancestry no longer reaches a proof.
final
walletId → String
final

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited