15 releases (8 breaking)

new 0.9.0 Feb 16, 2025
0.8.1 Aug 23, 2024
0.7.2 Aug 8, 2024
0.7.1 Jun 24, 2024
0.1.2 Jun 22, 2021

#2 in #near-protocol

Download history 249/week @ 2024-10-27 255/week @ 2024-11-03 238/week @ 2024-11-10 395/week @ 2024-11-17 113/week @ 2024-11-24 452/week @ 2024-12-01 400/week @ 2024-12-08 841/week @ 2024-12-15 128/week @ 2024-12-22 23/week @ 2024-12-29 93/week @ 2025-01-05 280/week @ 2025-01-12 402/week @ 2025-01-19 270/week @ 2025-01-26 309/week @ 2025-02-02 294/week @ 2025-02-09

1,276 downloads per month
Used in 4 crates (2 directly)

GPL-3.0-or-later

39KB
360 lines

near-ledger-rs

Rust

It is NEAR <-> Ledger transport

Provides a set of commands that can be executed to communicate with NEAR App installed on Ledger device:

  • Read PublicKey from Ledger device by HD Path
  • Sign a Transaction

Examples

Get PublicKey from Ledger

use near_ledger::get_public_key;
use slipped10::BIP32Path;
use std::str::FromStr;

let hd_path = BIP32Path::from_str("44'/397'/0'/0'/1'").unwrap();
let public_key = get_public_key(hd_path).unwrap();
println!("{:#?}", public_key);

Trick

To convert the answer into near_crypto::PublicKey do:

let public_key = near_crypto::PublicKey::ED25519(
    near_crypto::ED25519PublicKey::from(
        public_key.to_bytes(),
    )
);

How to sign a transaction

use near_ledger::{sign_transaction, SignTarget};
use near_primitives::borsh::BorshSerialize;
use slipped10::BIP32Path;
use std::str::FromStr;

let hd_path = BIP32Path::from_str("44'/397'/0'/0'/1'").unwrap();
let borsh_transaction = near_unsigned_transaction.try_to_vec().unwrap();
let signature = sign_transaction(SignTarget::BorshUnsignedTx(borsh_transaction), hd_path).unwrap();
println!("{:#?}", signature);

Trick

To convert the answer into near_crypto::Signature do:

let signature = near_crypto::Signature::from_parts(near_crypto::KeyType::ED25519, &signature)
    .expect("Signature is not expected to fail on deserialization");

Executable examples

Get version

RUST_LOG=info cargo run --example get_version

Get PublicKey from Ledger

Display

RUST_LOG=info cargo run --example get_public_key_display

Silent

RUST_LOG=info cargo run --example get_public_key_silent

Get WalletID from Ledger

RUST_LOG=info cargo run --example get_wallet_id

Sign a transaction

Transfer

RUST_LOG=info cargo run --example sign_transfer

Other

export RUST_LOG=info
cargo run --example sign_create_account
cargo run --example sign_delete_account_short
cargo run --example sign_delete_account_long
cargo run --example sign_delete_key_ed25519
cargo run --example sign_delete_key_secp256k1
cargo run --example sign_stake
cargo run --example sign_add_key_fullaccess
cargo run --example sign_add_key_functioncall
cargo run --example sign_deploy_contract
cargo run --example sign_functioncall_str
cargo run --example sign_functioncall_bin
cargo run --example sign_functioncall_str_parse_err
cargo run --example sign_batch_all_actions

Sign a NEP-413 message

RUST_LOG=info cargo run --example sign_nep_413_message

Sign a NEP-366 delegate action

RUST_LOG=info cargo run --example sign_nep_366_delegate_action

Dependencies

~3–14MB
~134K SLoC

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy