Table of Contents

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

string

PaymentHash

The invoice's payment hash, echoed back.

public string? PaymentHash { get; init; }

Property Value

string

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

string

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.