How to develop an Ethereum plugin

This guide shows you how to start developing an Ethereum plugin for your dApp’s smart contract interactions.

The ERC-7730 process replaces plugins for simple cases by providing a standardized way to display transaction information. However, more specific dApps with complex smart contract interactions may still require custom plugin development to provide clear signing capabilities for their users.

⚠️

Plugin development requires prior approval from Ledger. If your project requires a plugin, you are already in contact with Ledger and have been directed to develop one. Plugin development is only undertaken when Ledger has determined that your use case cannot be adequately handled by the standard ERC-7730 process.

Prerequisites:

  • You have been approved by Ledger to develop a plugin.
  • You are familiar with C development and Ledger device app architecture. See What is a device app? for an overview.

What’s included in the Ethereum Plugin SDK

The Ethereum Plugin SDK documentation provides comprehensive guidance for plugin development, including:

Core components

  • Plugin architecture — how plugins work alongside the Ethereum application.
  • Handler functions — the key functions you implement: handle_init_contract, handle_provide_parameter, handle_finalize, and others.
  • Utility functions — pre-built helpers for common operations.
  • Transaction data parsing — tools for extracting and formatting smart contract data.

Development tools

  • Ethereum Plugin SDK — the main framework that handles integration with the Ethereum app.
  • Plugin boilerplate — a template repository to get started quickly.
  • Test framework — functional tests and fuzzing capabilities.
  • CI workflows — automated testing and quality assurance.

File structure

A complete plugin includes:

  • Source code (in C)
  • Plugin specification document
  • Icons and glyphs for device display
  • Makefile and build configuration
  • Test suite and fuzzing setup

Getting started

To develop your Ethereum plugin:

  1. Read the SDK documentation — use the comprehensive guide at ethereum-plugin-sdk.ledger.com.
  2. Fork the boilerplate — start with the official Plugin Boilerplate template linked from the SDK docs.
  3. Implement your handlers — focus on the smart contract parsing logic specific to your dApp, starting with handle_init_contract and handle_provide_parameter.
  4. Write functional tests — cover all transaction paths your plugin handles. Tests are mandatory for submission.
  5. Submit for review — when your plugin and tests are ready, follow the submission process.

Troubleshooting

CI: the Guidelines_enforcer workflow fails. The enforcer checks against Ledger’s published app guidelines. Review the workflow logs for the specific rule that failed, then refer to the security requirements and development requirements pages to address each issue.

I am not sure whether my use case needs a plugin or can use ERC-7730. Start with the ERC-7730 process. If your smart contract interactions are too complex for that standard, contact Ledger to discuss plugin development.

Next steps

Your plugin is ready when it passes all functional tests and the CI workflows. Submit it alongside your deliverables using the submission form.

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.