Class LightningSendQuoteProfile
- Namespace
- NArk.ArkadeIntents.Rfq.Profiles.Lightning
- Assembly
- NArk.ArkadeIntents.dll
Quote fields of the Lightning send profile: compare-only, except for the one rung of the CSV ladder the solver is allowed to set.
public sealed class LightningSendQuoteProfile
- Inheritance
-
LightningSendQuoteProfile
- Inherited Members
Remarks
The rule this profile follows, and the exception to it, are both worth stating. Everything here is checked against the client's own derivation rather than believed — LockupAddress most of all. RefundWithoutReceiverDelay is the exception: it is a binding field, built into the script the client funds, because it is the one number the client cannot derive on its own.
Properties
LockupAddress
The solver's derivation of the swap contract's address. Compare-only: check it against your own derivation and refuse to fund on any mismatch.
public string? LockupAddress { get; init; }
Property Value
PaymentHash
The invoice's payment hash, echoed back.
public string? PaymentHash { get; init; }
Property Value
ReceiverPkScript
The solver's own claim destination as a P2TR scriptPubKey (hex), which the covenant's
nonInteractiveClaim leaf pins its payout to.
public string? ReceiverPkScript { get; init; }
Property Value
Remarks
Compare-only, but unlike LockupAddress it is also an input: every leaf contributes to the merkle root, so the local reconstruction needs this exact value to arrive at a matching address. It carries none of LockupAddress's trust weight though — a wrong value only makes that one leaf unusable for the solver, and it pays the solver, never away from anything the client controls.
RefundWithoutReceiverDelay
The exact BIP68 delay, in seconds, the client must put in its
unilateralRefundWithoutReceiver leaf.
public long? RefundWithoutReceiverDelay { get; init; }
Property Value
- long?
Remarks
Binding, unlike the rest of this profile: it goes into the script rather than being compared against one. The solver stretches this rung past the operator's base ladder whenever the horizon it just quoted needs it to, so a client re-deriving the base value alone builds a different covenant and ends up refusing a quote that was never wrong.
Absent on a solver predating the field, hence nullable rather than required. See ResolveSoloRefundDelay(long?, (uint Claim, uint Refund, uint RefundWithoutReceiver), long, long) for what happens then, and for every bound checked before this number reaches a leaf.