#applications #ledger #devices #syscalls #bindings #wrapper #signature

已下架 nanos_sdk

Rust SDK for Ledger设备应用

1个不稳定版本

0.2.1 2023年9月25日

#144 in #ledger


用于 nanos_ui

Apache-2.0

2.5MB
57K SLoC

Bitbake 27K SLoC // 0.0% comments C 23K SLoC // 0.1% comments Rust 5.5K SLoC // 0.0% comments GNU Style Assembly 1.5K SLoC // 0.0% comments

Ledger钱包SDK,用于Rust应用

允许使用默认配置在Rust中开发Ledger Nano应用。

包含

  • 针对C SDK 2.0版本的低级预生成的绑定
  • 一些常见的系统调用安全包装
  • IO抽象
  • 签名抽象

此SDK不完整,因为目前缺少包装,并且并非所有包装都有良好的Rust抽象,但已有两个应用使用它。

如果您想贡献,可以提交问题或甚至拉取请求,我们将检查我们能做什么。

支持的设备

Nano S Nano X Nano S Plus
✔️ ✔️ ✔️

用法

构建需要将 rust-src 添加到您的Rust安装中,以及Clang和arm-none-eabi-gcc。在Ubuntu上,可能还需要安装 gcc-multilib

使用rustc nightly版本是强制性的,因为需要一些不稳定的功能。

如果您想使用您发行版的包安装ARM gcc工具链,以下命令应该可以工作

# On Debian and Ubuntu
sudo apt install clang gcc-arm-none-eabi gcc-multilib

# On Fedora or Red Hat Entreprise Linux
sudo dnf install clang arm-none-eabi-gcc arm-none-eabi-newlib

# On ArchLinux
sudo pacman -S clang arm-none-eabi-gcc arm-none-eabi-newlib

此SDK为Nano S、Nano X和Nano S+提供了三个 自定义目标文件

为Nano S构建

cargo build --release -Z build-std=core --target=./nanos.json

为Nano X构建

cargo build --release -Z build-std=core --target=./nanox.json

为Nano S+构建

cargo build --release -Z build-std=core --target=./nanosplus.json

使用rustc < 1.54构建

在rustc 1.54之前构建应该会失败,错误信息为 error[E0635]: unknown feature const_fn_trait_bound

可以通过激活特定功能来解决此问题: cargo build --features pre1_54

贡献

确保您已遵循上面的安装步骤。为了使您的PR被接受,它必须通过CI,CI会执行以下检查

  • 检查代码在nightly上是否可以构建
  • 检查 clippy 是否不发出任何警告
  • 检查您的代码是否符合 rustfmt 的格式(使用 cargo fmt

依赖项