hardware-wallets

Sign Ethereum transactions with Ledger and Trezor hardware wallets in C#/.NET.

2.3k|744|Updated Nov 23, 2015
One-click install
npx skills add https://github.com/Nethereum/Nethereum --skill hardware-wallets
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: hardware-wallets
Source: https://github.com/Nethereum/Nethereum/tree/main/plugins/nethereum-skills/skills/hardware-wallets
Command: npx skills add https://github.com/Nethereum/Nethereum --skill hardware-wallets

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires Nethereum.Signer.Ledger, Nethereum.Signer.Trezor.

What problem does it solve?

Keeping private keys in software exposes them to theft. This Skill shows how to sign Ethereum transactions with Ledger and Trezor hardware wallets using Nethereum, so the private key never leaves the physical device while your .NET code uses the same familiar Web3 API.

Core Features & Use Cases

  • Ledger Signing: Use Nethereum.Signer.Ledger with LedgerExternalSigner and ExternalAccount to send transactions, with support for the legacy Electrum derivation path.
  • Trezor Signing: Use Nethereum.Signer.Trezor with a custom ITrezorPromptHandler for PIN and passphrase entry, plus personal message signing.
  • Feature Comparison: A comparison table clarifies that Trezor supports EIP-712 and personal message signing while Ledger does not.
  • Use Case: A backend service needs to transfer ETH from a company cold wallet. Plug in a Ledger, initialize an ExternalAccount, and call TransferEtherAndWaitForReceiptAsync exactly as with a software account.

Quick Start

Ask the AI to generate C# code that sends 0.1 ETH from a Ledger hardware wallet using Nethereum's ExternalAccount pattern.

Frequently Asked Questions about hardware-wallets

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I sign Ethereum transactions with a Ledger in C#?

Install the Nethereum.Signer.Ledger NuGet package, create a LedgerExternalSigner with NethereumLedgerManagerBrokerFactory, wrap it in an ExternalAccount, and call InitialiseAsync. Then use Web3 normally, for example TransferEtherAndWaitForReceiptAsync.

How do I sign Ethereum transactions with a Trezor in .NET?

Install Nethereum.Signer.Trezor, implement ITrezorPromptHandler to supply the PIN and passphrase, then create a TrezorExternalSigner with NethereumTrezorManagerBrokerFactory. Wrap it in an ExternalAccount, initialize it, and use the standard Web3 API.

Ledger vs Trezor for Ethereum signing in Nethereum?

Trezor supports EIP-712 typed data and personal message signing, while Ledger does not in this integration. Ledger handles PIN and passphrase on the device, whereas Trezor requires them through an ITrezorPromptHandler in your code.

Does Nethereum hardware wallet signing support EIP-712?

EIP-712 typed data signing is supported with Trezor but not with Ledger in this integration. Personal message signing is also Trezor-only, via signer.SignAsync with the message bytes.

How do I use the Ledger legacy derivation path?

Pass legacyPath: true when constructing the LedgerExternalSigner along with the account index. This uses the m/44'/60'/0'/x derivation path instead of the default m/44'/60'/0'/0/x used by newer Ledger Live accounts.