Skip to content

Commit 652c7fa

Browse files
committed
Merge main
2 parents b68ac3c + 004b6bd commit 652c7fa

File tree

27 files changed

+283
-1
lines changed

27 files changed

+283
-1
lines changed

content/get-started/ledger.mdx

Lines changed: 273 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,273 @@
1+
---
2+
title: Ledger
3+
4+
---
5+
6+
A Ledger is a hardware wallet used to securely store your crypto assets offline. The private key used to sign transactions never leaves the Ledger device, so even if your machine or wallet is compromised, your private key is never leaked.
7+
8+
Using Ledger for Iron Fish will enable you to manage IRON as well as any other Iron Fish asset on the Ledger device. There are two flows that will be described in this tutorial: the single-signer flow, which is the most common type of wallet, or the multi-sig wallet flow allowing a wallet to be controlled by a number of participants.
9+
10+
If you have any questions on how to use your Ledger for Iron Fish assets, please reach out on our [Discord](https://discord.ironfish.network/) in the questions channel.
11+
12+
## Video Walkthrough Tutorial
13+
14+
The video walkthrough tutorial for both single-signer flow using the Ironfish Ledger app as well as the multi-sig wallet flow using the Ironfish DKG app can be found here:
15+
16+
<iframe width="560" height="315" src="https://www.youtube.com/embed/ELBw9I1AVrk?si=TM3qJzGzSRlp5uQF" title="YouTube video player" frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerPolicy="strict-origin-when-cross-origin" allowFullScreen></iframe>
17+
18+
## Single Signer Ledger Flow
19+
20+
### Requirements
21+
22+
You’ll need the latest version of the [Node App](https://ironfish.network/use/node-app) to see the balance, transaction history, and facilitate creating transactions for your Ledger wallet. Please make sure to always have your Iron Fish [Node App](https://ironfish.network/use/node-app) up to date. Installing a new version will preserve all your chain and wallet history.
23+
24+
For your Ledger device, make sure to:
25+
26+
- Install [Ledger Live](https://support.ledger.com/article/4404389503889-zd)
27+
- [Set up your Ledger device](https://support.ledger.com/topic?topic=ledger-hardware-wallets)
28+
- Connect your device and check for any updates
29+
30+
### Installation
31+
32+
You’ll need a non-deprecated Ledger device that is set up with the Ironfish app.
33+
34+
To install the **Ironfish** app on your Ledger:
35+
36+
- Open the **Manager** in Ledger Live.
37+
- Connect and unlock your Ledger Device.
38+
- If asked, follow the onscreen instructions and **Allow Ledger Manager**.
39+
- Find Ironfish in the app catalog.
40+
- Click the Install button. Your device will display **Processing…** and then the app installation is confirmed
41+
- Close Ledger Live.
42+
43+
### Import the View Key for your Ledger Account into the Node App
44+
45+
For the most common flow involving a single signer, you’ll need the [Iron Fish Node App](https://ironfish.network/use/node-app). Make sure it’s up to date by either opening up the app and having it update, or installing the latest version. Updating the Node App still preserves all your chain and wallet data.
46+
47+
To connect your Iron Fish Node App to your Ledger, click on '+ Add Account' button on the top right, and click 'Connect Ledger'
48+
49+
<div style={{ marginBottom: '2rem' }}>
50+
<img src="/images/blog/ledger/1.png" width="30%"/>
51+
</div>
52+
53+
The Node App will then prompt you to unlock your device and approve sharing the view keys about your Ledger account with the Node App. Iron Fish is a full privacy chain, and Iron Fish accounts have private keys for signing, public keys for requesting funds, and view keys for revealing balance, revealing transaction history, or creating *unsigned* transactions. Importing the Ledger view key therefore gives the Node App the ability to give you your balance while the private key that’s needed to finalize the transaction through signing never leaves the Ledger device.
54+
55+
<div className="side-by-side-images-container">
56+
<img
57+
src="/images/blog/ledger/2.png"
58+
style={{ maxWidth: '45%', height: 'auto' }}
59+
/>
60+
<img
61+
src="/images/blog/ledger/3.png"
62+
style={{ maxWidth: '45%', height: 'auto' }}
63+
/>
64+
</div>
65+
66+
<div className="side-by-side-images-container">
67+
<img
68+
src="/images/blog/ledger/4.png"
69+
style={{ maxWidth: '45%', height: 'auto' }}
70+
/>
71+
<img
72+
src="/images/blog/ledger/5.png"
73+
style={{ maxWidth: '45%', height: 'auto' }}
74+
/>
75+
</div>
76+
77+
### How to View Account Balance
78+
79+
After you’ve imported the view key for your Ledger wallet, you should see your Ledger wallet displayed as a *view only* account in the Node App. It’ll take a few moments for your wallet to sync. After it’s synced, you should see your wallet balance displayed in the Node App.
80+
81+
<div className="side-by-side-images-container">
82+
<img
83+
src="/images/blog/ledger/6.png"
84+
style={{ maxWidth: '45%', height: 'auto' }}
85+
/>
86+
<img
87+
src="/images/blog/ledger/7.png"
88+
style={{ maxWidth: '45%', height: 'auto' }}
89+
/>
90+
</div>
91+
92+
### How to Receive Funds
93+
94+
After importing the Ledger account into the Node App, you can find the public address for that wallet either by clicking on the public address below account name to save it to your clipboard, navigating to wallet details or by going to the Receive tab:
95+
96+
<div className="side-by-side-images-container">
97+
<img
98+
src="/images/blog/ledger/8.png"
99+
style={{ maxWidth: '45%', height: 'auto' }}
100+
/>
101+
<img
102+
src="/images/blog/ledger/9.png"
103+
style={{ maxWidth: '45%', height: 'auto' }}
104+
/>
105+
</div>
106+
107+
### How to Send Funds
108+
109+
To send funds, you can either click on the 'Send' button directly, use the 'Send' tab, or navigate to the wallet details and click on the 'Send' button from there:
110+
111+
<div className="side-by-side-images-container">
112+
<img
113+
src="/images/blog/ledger/10.png"
114+
style={{ maxWidth: '45%', height: 'auto' }}
115+
/>
116+
<img
117+
src="/images/blog/ledger/11.png"
118+
style={{ maxWidth: '45%', height: 'auto' }}
119+
/>
120+
</div>
121+
122+
You’ll then be able to construct your transaction:
123+
124+
![](/images/blog/ledger/12.png)
125+
126+
You’ll be prompted to fill in the **To** input field for the receiving public address, which **Asset** you’re sending if your wallet has multiple assets, the **Amount** you’re sending, the **Fee** (with suggested amounts for fast/medium/slow transaction times), and an optional **Memo** field to describe the transaction (only visible to sender/recipient).
127+
128+
After clicking on the 'Send Asset' button, you’ll need to review and approve the transaction on the Ledger device. If anything looks incorrect, you’ll have the chance to reject the transaction.
129+
130+
Iron Fish is a UTXO model, so a transaction consumes and produces new Notes (e.g. UTXOs). During the review process on the Ledger device, you’ll see those Notes being consumed or created and the corresponding 'AssetID', 'Amount', 'Owner' for that note displayed:
131+
132+
![](/images/blog/ledger/13.png)
133+
134+
Please note that amounts in Iron Fish are displayed without decimal points, meaning that 1 IRON will be displayed as 10000000 since Iron Fish has 8 decimal points for precision.
135+
136+
## Multi-signature Wallet Ledger Flow
137+
138+
### Requirements
139+
140+
For the Multi-signature Ledger flow you’ll need the [Node App](https://ironfish.network/use/node-app) as well as the Iron Fish CLI. The easiest way to install the Iron Fish CLI is through NPM. If you already have NodeJS on your computer, you can install Iron Fish CLI by simply running the command:
141+
```
142+
npm install -g ironfish
143+
```
144+
For full instructions, please reference the [installation docs](https://ironfish.network/use/get-started/installation).
145+
146+
For your Ledger device, make sure to:
147+
148+
- Have [Ledger Live installed](https://support.ledger.com/article/4404389503889-zd)
149+
- [Set up your Ledger device](https://support.ledger.com/topic?topic=ledger-hardware-wallets)
150+
- Connect your device and check for any updates
151+
152+
### Installation
153+
154+
You’ll need a non-deprecated Ledger device that is set up with the **Ironfish DKG** app.
155+
156+
To install the **Ironfish DKG** app on your Ledger:
157+
158+
- Open the **Manager** in Ledger Live.
159+
- Connect and unlock your Ledger Device.
160+
- If asked, follow the onscreen instructions and **Allow Ledger Manager**.
161+
- Find Ironfish DKG in the app catalog.
162+
- Click the Install button. Your device will display **Processing…** and then the app installation is confirmed
163+
- Close Ledger Live.
164+
165+
### How to create your Multi-Sig Wallet
166+
167+
To create a multi-sig wallet you’ll need information from other participants. Let’s run through an example of how to create a multi-sig wallet that’ll have 3 participants, and will need at least 2 of them to sign a transaction to move funds out of that wallet (e.g. a 2 of 3 multi-sig). One of these participants in this example is going to be using their Ledger and the **Ironfish DKG** app.
168+
169+
*Please note that the highest number of participants that is currently supported is 4 participants.*
170+
171+
First, we’ll create the two other participants that are not using Ledger (in this example we’ll use Alice and Bob).
172+
173+
**Creating Alice’s portion for the multi-sig wallet**
174+
175+
Alice will use the Iron Fish CLI tool to create her identity using the server service to broker the interactive part of creating a multi-sig wallet.
176+
177+
```
178+
ironfish wallet:multisig:dkg:create --name dkg-alice --server
179+
```
180+
181+
- the `--name` flag gives this wallet a human-readable name or label
182+
- the `--server` flag uses the server broker service to streamline the interactive part of creating a multi-sig wallet. If for some reason you want to do this step manually, see the documentation for that [here](https://ironfish.network/use/get-started/multisig-creation-dkg).
183+
184+
The initial output of this command will give you a **DKG session connection string** that you can give to other participants to streamline the interactive part of making a multi-sig wallet:
185+
186+
![](/images/blog/ledger/14.png)
187+
188+
**Creating Bob’s portion for the multi-sig wallet**
189+
190+
Using the session ID that Alice would provide, Bob can create his own multi-sig wallet by running the command:
191+
192+
```
193+
ironfish wallet:multisig:dkg:create --name dkg-bob -c <connection session ID string>
194+
```
195+
196+
- the `--name` flag gives Bob a human readable label for his wallet
197+
- the `-c` flag gives Bob the ability to use the session ID string that Alice gave him to streamline the interactive portion of creating a multi-sig account
198+
199+
**Creating a portion for the multi-sig wallet using Ledger**
200+
201+
To create a Ledger multi-sig account:
202+
203+
```
204+
ironfish wallet:multisig:dkg:create --name ledger-dkg --ledger -c <connection session ID string>
205+
```
206+
207+
- the `--name` flag allows you to give this wallet a human readable name or label
208+
- the `-c` flag gives you the ability to use the connection session ID string to streamline the interactive portion of creating the multi-sig account with other participants
209+
- the `--ledger` flag indicates that this portion of the multi-sig wallet is going to live on Ledger such that signatures approving transactions for this wallet will only be created within the Ledger device for this participant
210+
211+
Since the secret seed for approving transactions for this wallet lives in Ledger, you’ll have to manually approve 'Round 1','Round 2' and 'Round 3' on your Ledger device to interactively create this multi-sig wallet with the other two participants (in this example Alice and Bob).
212+
213+
![](/images/blog/ledger/15.png)
214+
215+
After approving the three interactive Rounds on your Ledger device, you’ll see the prompt to save your Backup DKG Keys on the Ledger device and verifying once again that you’ve created a 2 of 3 multi-sig account and its newly created public address. This public address can now be used to receive funds.
216+
217+
*Please note that the highest number of participants that is currently supported is 4 participants.*
218+
219+
### Add your Ledger Multi-Sig Account into the Iron Fish Node App
220+
221+
The easiest way to interact with the multi-sig Ledger wallet after creation is by using the Iron Fish [Node App](https://ironfish.network/use/node-app). In order for us to use the Node App, we’ll first need to import the newly created Ledger multi-sig wallet. As of now, importing the Ledger DKG multi-sig wallet is only enabled on the CLI tool with this command:
222+
223+
```
224+
ironfish wallet:import --ledger --multisig
225+
```
226+
227+
(Please note if you’re on an older version of the Iron Fish CLI tool, the is going to be `ironfish wallet:multisig:ledger:import`. You’ll also need to make sure that the Node App is *not* open when you’re importing the wallet).
228+
229+
After you’ve run this command to import your Ledger multi-sig wallet, you can open the Node App and see that it’s there as a *view-only* account:
230+
231+
![](/images/blog/ledger/16.png)
232+
233+
### How to Receive Funds
234+
235+
During multi-sig account creation, you’ll see the Public Address associated with this Ledger multi-sig account. This is the Public Address that you can use to request funds.
236+
237+
To receive funds you can retrieve the Public Address by either clicking on the clipboard button below the wallet name, clicking into the wallet to see more details, or by clicking on the 'Receive' button. Note that this is the same Public Address you’ve witnessed on the Ledger device during account creation.
238+
239+
![](/images/blog/ledger/17.png)
240+
241+
### How to Send Funds
242+
243+
After adding your Ledger multi-sig account into the Iron Fish Node App, we can then construct *unsigned* transactions for that multi-sig wallet in the Node App, use the Ledger device to product a signature share, and then aggregate signatures from other participants to sign and broadcast it out.
244+
245+
**Constructing an unsigned transaction**
246+
247+
First, navigate to the 'Multisig Ledger' tab on the left navigation, and click on 'Create Transfer Transaction' tab. Fill in the recipient, asset type, amount, fee, and optional memo, and click on the 'Create Unsigned Transaction' button.
248+
249+
![](/images/blog/ledger/18.png)
250+
251+
This will produce an unsigned transaction that you can then share out with other participants:
252+
253+
![](/images/blog/ledger/19.png)
254+
255+
For other participants, you’ll also be prompted to enter in their Identity (this would be either Alice or Bob in this example):
256+
257+
![](/images/blog/ledger/20.png)
258+
259+
And then you’ll be able to review and sign this transaction on your Ledger device. Please make sure to review all details of the transaction on your Ledger device during this step:
260+
261+
![](/images/blog/ledger/21.png)
262+
263+
The other participant(s) in this transaction would also have to provide their signature commitments and shares:
264+
265+
![](/images/blog/ledger/22.png)
266+
267+
After signature shares from the minimum number of participants required for this transaction are shared and aggregated in the Node App, the transaction can be submitted to the Iron Fish network:
268+
269+
![](/images/blog/ledger/23.png)
270+
271+
## Where to Ask for Help
272+
273+
The best way to ask for help is through our [Discord questions channel](https://discord.gg/THvGgbU89U). If email is preferred, you can also reach out at [email protected].

content/get-started/sidebar.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export const sidebar: SidebarDefinition = [
2929
label: "Reference",
3030
items: ["node-config", "node-datadir", "bootstrap-nodes"],
3131
},
32+
"ledger",
3233
{
3334
label: "CLI Commands",
3435
items: [

public/images/blog/ledger/1.png

48.6 KB
Loading

public/images/blog/ledger/10.png

2.04 MB
Loading

public/images/blog/ledger/11.png

1.94 MB
Loading

public/images/blog/ledger/12.png

1.9 MB
Loading

public/images/blog/ledger/13.png

1.84 MB
Loading

public/images/blog/ledger/14.png

623 KB
Loading

public/images/blog/ledger/15.png

1.79 MB
Loading

public/images/blog/ledger/16.png

90.6 KB
Loading

0 commit comments

Comments
 (0)