# Polkadot Asset Hub · Integra

> On Polkadot Asset Hub, a remark batched with the transfer holds the ATR hash.

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

Payment rail

## Polkadot Asset Hub

On Polkadot Asset Hub, a remark batched with the transfer holds 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 a remark batched with the transfer.

#### The standard

The remark and the asset transfer go in one signed extrinsic, so both land or neither does. An x402 facilitator for this profile is published: `@integraledger/profile-facilitator`. [Source: lcp docs: rails⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/rails.md) · [Source: @integraledger/profile-facilitator README⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-agentic-connectors/blob/48500fe/profile-facilitator/README.md)

- A `system.remark_with_event` holding H’s LCP string with lowercase hex, byte for byte, batched atomically with the asset transfer in one signed extrinsic. [Source: lcp docs: rails⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/rails.md)

  `x402/exact/polkadot/lcp-assets-remark`

Entry points: `@integraledger/lcp/polkadot`

#### 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 LCP string, in a `system.remark_with_event`

lcp:sha256: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 1 pairings, 1 have the buyer’s signature cover the ATR hash, 1 leave a public proof of it, and 1 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/polkadot/lcp-assets-remark` Native Field Buyer signs H: yes H on chain: yes Public proof: yes Recoverable from chain: yes**

  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: A `system.remark_with_event` holding H’s LCP string with lowercase hex, byte for byte, batched atomically with the asset transfer in one signed extrinsic.

  What a payment through it proves: The payer signed one Polkadot Asset Hub extrinsic whose call is an atomic batch of a transfer of the asset and an on-chain remark whose bytes are this ATR's hash in LCP string form. The chain verified the signature, which covers the call, and executed the batch, which applies both calls or neither. Its Remarked event carries the BLAKE2b-256 of the remark, and its Transferred event names the asset, at the finality recorded. This does not show that amount, payee, asset or timing match the ATR's content.

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

### Reading the settlement

The package reads a payment’s settlement through a reader you supply: the endpoint, the credentials, the timeouts and the retries are yours. A reader that fails never makes a payment read as failed. [Source: lcp docs: reading settlement⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/rails.md#reading-settlement)

**Sources (1)**

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

#### The standard

**Reader**

`PolkadotReader`

**Its calls**

Sidecar’s extrinsic by block and index, a block’s raw extrinsics, the finalized head

**A settled read carries**

`finalized` or `head` [Source: lcp docs: reading settlement⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/rails.md#reading-settlement)

### The protocols that pay on it

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

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