Skip to Content
📢 Breaking change: Applications using LedgerJS for transport implementation should migrate to the Device Management Kit (DMK). Learn more.
DocumentationDevice AppExplanationAbout Ethereum plugins and clone apps

About Ethereum plugins and clone apps

An Ethereum plugin and a clone app both start from an existing Ledger device application, and they solve different problems. A plugin makes one dApp’s contract calls readable on the signer. A clone app is another chain’s application, built by forking the Bitcoin or Ethereum device app rather than writing a new one.

A plugin is a small C application installed next to the Ethereum app. When the user signs a transaction whose to address is one of the plugin’s registered contracts, the Ethereum app hands the display to the plugin. The plugin implements handlers such as handle_init_contract, handle_provide_parameter, and handle_finalize, and returns a string the Ethereum app shows. That is Clear Signing for a contract the Ethereum app does not know how to describe on its own. The manifest of the Live App names the plugin in dapp.nanoApp. If the name does not match, the signer falls back to blind signing.

Plugins are the exception. ERC-7730 metadata covers the contracts whose data fits that schema, and it does not need on-device code. Ledger accepts a plugin when that schema is not enough, and only after a plugin slot is agreed. The Ethereum Plugin SDK and app-plugin-boilerplate are the implementation path once that approval exists.

A clone app does not parse someone else’s contract. It is a variant of the Bitcoin app or the Ethereum app for another network, including a Bitcoin layer 2 or an Ethereum-compatible chain. You fork the matching boilerplate, replace the icons, the chain parameters, and the validation screens, and submit the result as its own device app. Users install that app. They do not install it beside Ethereum the way they install a plugin.

The practical distinction is where the new behavior lives. A plugin is invoked by the Ethereum app for a known contract address, and it only changes what the signer displays. A clone app is the application the signer runs for that chain, and it performs the chain’s own signing flow.

Summary

Use a plugin when an existing Ethereum app must display a specific contract, and ERC-7730 does not fit. Use a clone app when the chain needs its own Bitcoin or Ethereum application. The two are not substitutes: a clone app does not clear-sign an Ethereum dApp’s contracts, and a plugin does not add a new chain.

Further reading

Last updated on
Ledger
Copyright © Ledger SAS. All rights reserved. Ledger, Ledger Stax, Ledger Flex, Ledger Nano, Ledger Nano S, Ledger OS, Ledger Wallet, [LEDGER] (logo), [L] (logo) are trademarks owned by Ledger SAS.