DApp Provider Guide

This guide provides essential information for DApp providers seeking to integrate their applications seamlessly with Ledger Enterprise. By following these guidelines, you can ensure your DApp offers a secure and smooth experience for users managing their assets with Ledger Enterprise.

1. Ensure compatibility with Ledger Enterprise

To enable your Decentralized Application (DApp) to connect and interact with Ledger Enterprise wallets when accessed through the Ledger Enterprise Web app's built-in DApp browser, a specific "DApp provider" implementation is required.

What is a DApp Provider and Why is it Essential for Ledger Enterprise?

The DApp provider acts as a crucial communication layer, allowing your DApp to interact directly with a user's Ledger hardware device via the Ledger Enterprise Web app. When your DApp runs within the Ledger Enterprise DApp browser, it needs a standardized way to:

  • Discover and connect 🤝 to the Ledger hardware wallet.

  • Request actions ✍️ from the Ledger device, such as fetching account addresses or signing transactions.

  • Receive responses and transaction confirmations securely from the Ledger device.

Most DApps communicate with wallets using the EIP-1193 interface. The Ledger Enterprise DApp provider ensures that your DApp's EIP-1193 requests are correctly translated and routed to the Ledger iframe-provider, which then communicates with the Ledger device itself.

This integration is key to:

  • Initiating secure connections with Ledger Enterprise wallets.

  • Prompting users for transaction confirmations directly on their Ledger device.

  • Enabling a smooth and secure user experience for Ledger users within the Ledger Enterprise ecosystem.

Access the DApp Provider Example Repository

For a practical implementation demonstrating the necessary setup for Ledger compatibility, especially when using popular libraries like wagmi or viem ,please refer to our example repositories:

2. Building your DApp manifest

After successfully implementing the DApp provider, you are ready to prepare your DApp for testing and integration within the Ledger Enterprise environment.

To facilitate testing and formal integration, you must provide a DApp Manifest file. This JSON-formatted file contains essential information about your DApp, its capabilities, and its integration requirements.

Please review and, if necessary, edit your manifest file as described below to ensure it meets Ledger Enterprise specifications.

Example Manifest (JSON format) for the “kiln” DApp:

{
  "id": "kiln",
  "name": "kiln - ETH staking",
  "url": "https://dapp-browser.apps.ledger.com/",
  "params": {
    "dappUrl": "https://ledger-vault-eth-dapp.kiln.fi/",
    "networks": [
      {
       "currency": "ethereum",
       "chainID": 1,
       "nodeURL": "https://eth-dapps.api.live.ledger.com"
      }
    ]
  },
  "homepageUrl": "https://www.kiln.fi/",
  "icon": "https://cdn.live.ledger.com/icons/platform/kiln.png",
  "platform": "all",
  "apiVersion": "^2.0.0",
  "manifestVersion": "2",
  "branch": "stable",
  "categories": ["staking", "defi"],
  "currencies": ["ethereum"],   
  "content": {
    "shortDescription": {
        "en": "Stake 32 ETH multiples."
    },
    "description": {
      "en": "Stake 32 ETH multiples to earn rewards."
    }
  },
  "permissions": [],
  "domains": ["https://"]        
}
Field
Description
Type

id

The identification of your DApp. Must be in lowercase.

String

name

The name of your DApp. Displayed in the UI

String

url

The Ledger Dapp browser URL used. By default “https://dapp-browser.apps.ledger.com/”.

String

params

dappURL is the url of your DApp. networks is the list of networks supported by your dApp, Ledger Live currently only support mainnet, BSC, arbitrum, optimism, base, fantom and Polygon, the nodeURL param will be set by Ledger in prod to use your node, for testing purposes, you can replace it with your own.

Object

homepageUrl

This is for information only. It is is non-critical.

String

icon

A link to the icon displayed in Ledger UI. Will be hosted on Ledger CDN before being released in production. Recommended format: PNG, 120x120 pixels.

URL

platform

To set the platform (desktop, mobile, iOS, Android) on which your service is available. Default value: “all”.

String

apiVersion

The API version. By default “^2.0.0”.

String

manifestVersion

The manifest version. By default should be “2”.

String

branch

The specific branch used by Ledger to deploy the changes. Can take the values stable ,experimental, debug, soon. By default, you should set it to stable. The value soon will mark your app as “Coming soon” and it won’t be usable.

String

categories

A JSON array of metadata information about your DApp. For instance: [“staking”,“defi” ]. You can add as many as you want. Will be used for filtering in the future.

List(String)

currencies

A JSON array of the currency/network used by your DApp. For instance [“ethereum”,”polygon”]. Leave blank if the App does not require any currency.

List(String)

content

A description of your service. It will be displayed on the entry card of your DApp.

L18n strings

permissions

Leave empty for now.

List(string)

domains

List of allowed domains to navigate to, if a domain doesn’t match it will open in the default browser. By default [“http://”, “https://“]

List(string)

Last updated