Ledger Enterprise
Help Center
Help Center
  • Welcome to the Help Center
  • Fundamentals
    • Getting set up
      • Sign in and out
      • For Administrators
      • For Operators
  • Supported Networks
  • What's new
  • CORE
    • Workspace administration
      • Admin Rule
        • Edit the admin rule
      • Accounts
        • Create an account
        • Solana SPL token account
        • Direct Access EVM Accounts
        • Edit an account
        • Activate a view-only account
        • Generate a receiving address
      • Groups
        • Create a group
        • Edit a group
        • Delete a group
      • Whitelists
        • Create a whitelist
        • Edit a whitelist
      • Entities
        • Create an entity
        • Edit an entity
        • Delete an entity
      • Policies
    • Users
      • User Roles and Permissions
      • New users
      • Register on the Ledger Vault
    • Your Device
      • Initialize your Personal Security Device (PSD)
      • Update your Personal Security Device (PSD)
      • Configure the Ledger Cryptosteel
      • Device pairing: View your partition ID
    • Managing requests
      • Approve or reject a request
      • Track the status of a request
      • Recreate a rejected or failed request
    • Transactions
      • Create a transaction
      • Transaction fees & speed
      • UTXOs
      • Replace by Fee
      • Export transaction history
      • Vault Raw Signing Overview
    • Compliance capabilities
      • Proof of Reserve - Enable Message Signing on an account
      • Proof of Researve - Sign Messages
      • Address Screening and KYT
    • Using Vault Signer
      • Create a Vault Signer account
      • Connect your Signer account to the Ledger Live extension
      • Craft a transaction on Ledger Live with your Vault Signer account
    • Overview of the Ledger Enterprise API
    • Public Key Infrastructure (PKI) Implementation
    • Ledger Enterprise mobile application
      • Terms of Use
      • How to use the app
      • FAQ
  • staking
    • Stake Cardano
      • Overview
      • Enable ADA Staking
      • Stake ADA with Figment
      • Reporting
    • Stake Cosmos
      • Overview
      • Enable ATOM Staking on your Ledger Cosmos Enterprise accounts
      • How to stake ATOM
    • Stake Ethereum
      • Overview
      • Enable ETH Staking on your Ethereum accounts
      • Stake ETH with Kiln
      • Stake ETH with Figment
      • Stake ETH with Blockdaemon
    • Stake Solana
      • Overview
      • Enable SOL Staking on your Solana accounts
      • Stake SOL with Figment
      • Solana Staking Reporting
    • Stake Polkadot
      • Overview
      • Enable DOT Staking
      • Stake DOT with Figment
    • Stake Polygon
      • Overview
      • Enable MATIC Staking
      • Stake MATIC with Figment
      • Stake MATIC with Kiln
    • Stake Tezos
      • Overview
    • Staking Providers
      • Stake with kiln
      • Stake with Figment
      • Stake with Blockdaemon
  • Web3: DeFi & NFT
    • Web3: DeFi & NFT Interactions
      • Web3 governance & configuration
        • Enable Smart Contract Interactions on EVM accounts
        • Enable Message Signatures on EVM accounts
        • Enable Contract Deployments on EVM accounts
        • Customize DApps catalog on EVM accounts
      • Vault DApps
        • DApp Provider Guide
        • Lido
        • Paraswap
        • Yearn
      • Interact with an external DApp via WalletConnect
      • Deploy a Smart Contract
      • Sign DApp messages
      • Interact with a smart contract
    • Raw Signing Best Practices
  • TRADELINK
    • Introduction
    • Best Practices
    • Run Tradelink as an Administrator
    • Operate Tradelink as a Custodian
    • Operate Tradelink as an Asset Manager
    • Operate Tradelink as an Exchange
    • Ledger Tradelink Terms of Use
  • Support
    • Troubleshooting
    • Security best practices
      • Ledger Stax Best Practices
    • Recovering your Vault Master Seed
    • Recover your Ledger Vault's master seed on a Nano S Plus
Powered by GitBook
On this page
  • 1. Ensure compatibility with Ledger Enterprise
  • 2. Building your DApp manifest
  1. Web3: DeFi & NFT
  2. Web3: DeFi & NFT Interactions
  3. Vault DApps

DApp Provider Guide

PreviousVault DAppsNextLido

Last updated 27 days ago

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)

iframe-provider-example-wagmi/README.md at master · LedgerHQ/iframe-provider-example-wagmiGitHub
Logo
iframe-provider-example-viem/README.md at master · LedgerHQ/iframe-provider-example-viemGitHub
Logo