Skip to content

Latest commit

 

History

History
78 lines (54 loc) · 2.7 KB

detailed-technical-flows.mdx

File metadata and controls

78 lines (54 loc) · 2.7 KB

import { Callout } from 'nextra/components' import Zoom from 'react-medium-image-zoom' import 'react-medium-image-zoom/dist/styles.css'

Detailed Technical Flows

Overview diagram

This is a C4 diagram that describes an overview of the exchange during the swap process.

Swap C4 diagram

Although the provider's LiveApp is embedded inside Ledger Live, we describe it as running in a separate environment because it is sandboxed.

Detailled transaction flow

Explanations about each step below the diagram.

Swap transaction flow

  1. Ledger Live opens the provider's LiveApp through a deeplink. Example:
ledgerlive://discover/swapprovidername?quoteId=CC14E626-CF1B-4EDA-AF5E-766FFD5A3457&
fromAddress=bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq&
toAddress=0xb794f5ea0ba39494ce839613fffba74279579268&
fromAddressId=AF1A7BD4-6A9A-4491-A540-98B1C7AD2407&
toAddressId=6EA9F270-91C5-4832-9A44-2713F9A6F6F0
The `quoteId` sent is the one coming from a previous request to the `/quote` endpoint of the Provider's backend. This id is linked to the `fromCurrency` and `toCurrency` wanted by the user.
  1. The provider's LiveApp starts Ledger's swap process through a call to ExchangeSDK method call: swap.

  2. After asking the user to start the process, Ledger's Swap Service will call the Provider's backend to generate and sign the payload. The backend will also returns a swapId, for status tracking purpose.

  3. The Provider's backend will generate the payload with Ledger's currency id. This part is important as Ledger's device only knows Ledger's referential currency.

  4. The Provider's backend will sign the payload with its private key. The public part must be previously sent to Ledger and must use secp256k1 curve.

  5. As soon as the user signs the transaction within his Ledger's device, Ledger Live will broadcast the transaction.

  6. The transactionId is returned in the response of the swap method, called by the LiveApp.

  7. The LiveApp should call back Ledger Live with a deeplink. Example: ledgerlive://swap?status=COMPLETED&swapId=123

Display quote information to user

Quote information flow

Details on the quote API needed.

Check swap status flow

Check swap status flow