Skip to content

Commit

Permalink
update README/Tutorial
Browse files Browse the repository at this point in the history
  • Loading branch information
chris124567 committed Dec 21, 2023
1 parent 9a6686f commit 7123e99
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 14 deletions.
26 changes: 13 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
# ledger-app-sia-x

This is an unofficial Sia wallet app for the Ledger Nano S/X.
This is an unofficial Sia wallet app for the Ledger Stax, Nano S, Nano SP, and Nano X.

When installed on a Nano S/X, the app allows you to generate Sia addresses,
When installed on a Ledger device, the app allows you to generate Sia addresses,
calculate transaction hashes, sign those hashes, and use those signatures to
construct valid transactions. The Sia app is the most secure method currently
available for performing these actions.

This code also serves as a walkthrough for writing your own Ledger Nano S/X app.
This code also serves as a walkthrough for writing your own Ledger device.
The code is heavily commented and describes both the high-level architecture
and low-level implementation details of Nano S/X app development. Begin by
and low-level implementation details of Ledger app development. Begin by
reading `src/main.c`, and the comments will tell you which files to read next.

No binaries are provided at this time. To build and install the Sia app on
your Ledger Nano S/X, follow Ledger's [setup instructions](https://ledger.readthedocs.io/en/latest/userspace/setup.html).
your Ledger device, follow Ledger's [setup instructions](https://speculos.ledger.com/user/docker.html).

After the app is installed, build the `sialedger.go` binary to interact with
the device. `./sialedger --help` will print a list of commands.

## Usage

Please refer to our [standalone guide](https://siatech.helpdocs.io/article/1tteqxvgh0) for a walkthrough that demonstrates how
Please refer to our [standalone guide](https://docs.sia.tech/sia-integrations/using-the-sia-ledger-nano-app-sia-central) for a walkthrough that demonstrates how
to generate addresses and sign transactions using the app.

## Security Model

The attack surface for using the Sia wallet app on a Ledger Nano S/X comprises
the Sia app itself, the system firmware running on the Nano S/X, the computer
that the Nano S/X is connected to, and possession/control of the device. For our
The attack surface for using the Sia wallet app on a Ledger device comprises
the Sia app itself, the system firmware running on the Ledger device, the computer
that the Ledger device is connected to, and possession/control of the device. For our
purposes, the app only needs to ensure its own correctness and protect the
user from the computer that the Nano S/X is connected to. Other attack surfaces
user from the computer that the Ledger device is connected to. Other attack surfaces
are beyond our control; we assume that the user physically controls the
device, is not running malicious/buggy software on the device, and follows
proper security protocols. The goal of the Sia app is to achieve perfect
Expand All @@ -43,9 +43,9 @@ Specifically, the computer can do the following:
1. Lie to the user about which actions it is performing. *Example: the user
runs `./sialedger addr 1`, but the computer secretly runs `./sialedger addr 2`
instead.*
2. Lie to the user about what it received from the Nano S/X. *Example: the Nano
2. Lie to the user about what it received from the Ledger device. *Example: the Nano
S generates address X, but the computer displays address Y.*
3. Exfiltrate data supplied by the user or the Nano S/X. *Example: the user
3. Exfiltrate data supplied by the user or the Ledger device. *Example: the user
generates addresses A and B; the computer "phones home" to report that A and
B are owned by the same person.*
4. Refuse to comply with the user's requests. *Example: the user runs
Expand All @@ -58,7 +58,7 @@ certain actions. Type-1 and type-2 actions, on the other hand, are much more
dangerous, and can be trivially exploited to steal the user's coins.

To combat these attacks, apps must make use of the embedded display on the
Nano S/X. If data sent to/from the Nano S/X is displayed on the screen, the user
Ledger device. If data sent to/from the Ledger device is displayed on the screen, the user
can verify that the computer is not lying about what it sent or received. In
the interest of user-friendliness, we would like to display as little
information as much as possible, but each omission brings with it the risk of
Expand Down
2 changes: 1 addition & 1 deletion TUTORIAL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## Introduction

This is a guide on how to use the Sia app on a Ledger Nano device. The Sia app currently supports the Ledger Nano S and Ledger Nano X models and supports transactions involving Siacoins.
This is a guide on how to use the Sia app on a Ledger Nano device. The Sia app currently supports the Ledger Stax, Nano S, Nano SP, and Nano X models and supports transactions involving Siacoins and Siafunds.

## Requirements

Expand Down

0 comments on commit 7123e99

Please sign in to comment.