DApp Provider Guide
Last updated
Last updated
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.
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.
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.
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:
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://"]
}
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)