# Lightning · Integra

> On Lightning, the invoice the seller’s node signs carries the ATR hash.

URL: https://integraledger.com/rails/lightning

Payment rail

## Lightning

On Lightning, the invoice the seller’s node signs carries the ATR hash. [Source: lcp docs: rails⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/rails.md)

**Sources (1)**

[lcp docs: rails⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/rails.md)

### Where the ATR hash rides

On this rail, the ATR hash rides in the BOLT11 invoice.

#### The standard

Lightning has no public settlement to read: the invoice and its preimage, which the parties hold, are the proof of payment, and no public ledger shows it. [Source: lcp docs: rails⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/rails.md)

- The BOLT11 invoice’s `m` field, which the seller’s node signs. [Source: lcp docs: rails⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/rails.md)

  `x402/exact/lnbtc`
- Nothing in the invoice: the ATR’s `x402` slot names the invoice instead. [Source: lcp docs: rails⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/rails.md)

  `x402/exact/lnbtc/invoice-named`
- The BOLT11 invoice’s description hash `h`, which the seller’s node signs. [Source: lcp docs: rails⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/rails.md)

  `mpp/charge/lightning` `mpp/session/lightning`

Entry points: `@integraledger/lcp/lightning`

#### The data

Read from the published packages when the site was built; nothing here is typed by hand.

The ATR hash of the site’s example ATR, as this rail carries it

H’s 32 bytes, in the invoice the seller’s node signs

0x8448dc1b716a5103287cb8f35e36b614ffd91e630ab8b7911833c54748ad5ca6

Computed from the site’s example ATR by this rail’s own helper in the package, when the site was built.

### What a payment on this rail proves

Of these 4 pairings, 0 have the buyer’s signature cover the ATR hash, 0 leave a public proof of it, and 0 let anyone read it back from the chain alone. [Source: lcp docs: pairings reference⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/reference/pairings.md)

Switch to Technical to see each pairing, and the sentence its record states about what a payment through it proves.

#### The standard

- **`x402/exact/lnbtc` Native Field Buyer signs H: no H on chain: no Public proof: no Recoverable from chain: no**

  Pattern: [Native Field (LCP §8.3.1)⁠ (opens in a new tab)](https://github.com/legal-context-protocol/legal-context-protocol/blob/c8df26d/spec/legal-context-protocol-v1.md#831-native-field)

  Where the ATR hash rides: The BOLT11 invoice’s `m` field, which the seller’s node signs.

  What a payment through it proves: Before this payment, the buyer signed and paid an agreement transaction carrying this ATR's hash on \<network>, recorded in \<transaction>. The seller's node signed a BOLT11 invoice whose payment metadata is this ATR's hash, and whose description hash is x402's request hash. The payer paid that invoice, and its node checked the node signature before paying. The payer signed nothing that carries the hash, and the seller did not verify the invoice signature. The invoice and its preimage, which the parties hold, are the proof of the payment. No public ledger shows it. This does not show that amount, payee or timing match the ATR's content.

  LCP profile: [x402/exact/lnbtc⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/lcp/profiles/x402-exact-lnbtc.md)
- **`x402/exact/lnbtc/invoice-named` HTTP-layer advisory Buyer signs H: no H on chain: no Public proof: no Recoverable from chain: no**

  Pattern: [HTTP-layer advisory (LCP §8.3.7)⁠ (opens in a new tab)](https://github.com/legal-context-protocol/legal-context-protocol/blob/c8df26d/spec/legal-context-protocol-v1.md#837-http-layer-advisory-reference)

  Where the ATR hash rides: Nothing in the invoice: the ATR’s `x402` slot names the invoice instead.

  What a payment through it proves: Before this payment, the buyer signed and paid an agreement transaction carrying this ATR's hash on \<network>, recorded in \<transaction>. The ATR names this payment: its binding slot holds the payment option as issued, including the seller node's signed BOLT11 invoice, whose payment hash the payer paid and whose description hash is x402's request hash. The invoice does not carry this ATR's hash, and the payer signed nothing that does. The buyer's gate paid only an invoice its ATR names, and the seller checked that the paid invoice is the one issued with this ATR. The invoice and its preimage, which the parties hold, are the proof of the payment. No public ledger shows it. This does not show that amount, payee or timing match the ATR's content.
- **`mpp/charge/lightning` Native Field Buyer signs H: no H on chain: no Public proof: no Recoverable from chain: no**

  Pattern: [Native Field (LCP §8.3.1)⁠ (opens in a new tab)](https://github.com/legal-context-protocol/legal-context-protocol/blob/c8df26d/spec/legal-context-protocol-v1.md#831-native-field)

  Where the ATR hash rides: The BOLT11 invoice’s description hash `h`, which the seller’s node signs.

  What a payment through it proves: Before this payment, the buyer signed and paid an agreement transaction carrying this ATR's hash on \<network>, recorded in \<transaction>. The seller's node signed a BOLT11 invoice whose description hash is this ATR's hash, and whose payment hash the ATR commits. The payer paid that invoice, and its node checked the node signature before paying. The payer signed nothing that carries the hash, and the seller did not verify the invoice signature. The invoice and its preimage, which the parties hold, are the proof of the payment. No public ledger shows it. This does not show that amount, payee or timing match the ATR's content.

  LCP profile: [mpp/charge⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/lcp/profiles/mpp-charge.md)
- **`mpp/session/lightning` Native Field Buyer signs H: no H on chain: no Public proof: no Recoverable from chain: no**

  Pattern: [Native Field (LCP §8.3.1)⁠ (opens in a new tab)](https://github.com/legal-context-protocol/legal-context-protocol/blob/c8df26d/spec/legal-context-protocol-v1.md#831-native-field)

  Where the ATR hash rides: The BOLT11 invoice’s description hash `h`, which the seller’s node signs.

  What a payment through it proves: Before this payment, the buyer signed and paid an agreement transaction carrying this ATR's hash on \<network>, recorded in \<transaction>. The seller's node signed a BOLT11 invoice whose description hash is this ATR's hash, and whose payment hash the ATR commits. The payer paid that invoice, and its node checked the node signature before paying. The payer signed nothing that carries the hash, and the seller did not verify the invoice signature. The invoice and its preimage, which the parties hold, are the proof of the payment. No public ledger shows it. This does not show that amount, payee or timing match the ATR's content. Later requests in this session were paid under this ATR from its deposit, by bearer proofs the seller did not meter. The close is the seller's report.

  LCP profile: [mpp/charge⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/lcp/profiles/mpp-charge.md)

Where a sentence names `<network>` and `<transaction>`, the pairing’s record fills them in: they name the agreement payment the buyer made first. [Source: lcp docs: pairings reference⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/reference/pairings.md) · [Source: lcp docs: the agreement URL⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/concepts/buyer-gate.md#the-agreement-url)

### Reading the settlement

This rail has no public settlement for the package to read.

### The protocols that pay on it

- [x402](https://integraledger.com/protocols/x402)
- [MPP](https://integraledger.com/protocols/mpp)

[lcp docs: rails⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/rails.md)
