#ledger #near #near-protocol #transport #integrate #sign #public-key

near-ledger

与NEAR账本应用集成的传输库

14个版本 (7个破坏性版本)

新版本 0.8.1 2024年8月23日
0.7.2 2024年8月8日
0.7.1 2024年6月24日
0.5.0 2024年2月29日
0.1.2 2021年6月22日

#179 in 魔法豆

Download history 170/week @ 2024-05-03 150/week @ 2024-05-10 166/week @ 2024-05-17 179/week @ 2024-05-24 49/week @ 2024-05-31 224/week @ 2024-06-07 275/week @ 2024-06-14 475/week @ 2024-06-21 128/week @ 2024-06-28 286/week @ 2024-07-05 170/week @ 2024-07-12 231/week @ 2024-07-19 150/week @ 2024-07-26 319/week @ 2024-08-02 413/week @ 2024-08-09 457/week @ 2024-08-16

每月下载量1,349次
用于 3 个crate(通过 near-cli-rs

GPL-3.0-or-later

39KB
360

near-ledger-rs

Rust

它是NEAR <-> Ledger传输

提供一系列可以执行的命令,用于与安装在Ledger设备上的NEAR应用通信

  • 通过HD路径从Ledger设备读取公钥
  • 签名交易

示例

从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);

技巧

要将答案转换为 near_crypto::PublicKey,请执行以下操作

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

如何签名交易

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);

技巧

要将答案转换为 near_crypto::Signature,请执行以下操作

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

可执行示例

获取版本

RUST_LOG=info cargo run --example get_version

从Ledger获取公钥

显示

RUST_LOG=info cargo run --example get_public_key_display

静默

RUST_LOG=info cargo run --example get_public_key_silent

从Ledger获取钱包ID

RUST_LOG=info cargo run --example get_wallet_id

签名交易

转账

RUST_LOG=info cargo run --example sign_transfer

其他

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

签名NEP-413消息

RUST_LOG=info cargo run --example sign_nep_413_message

签名NEP-366代理操作

RUST_LOG=info cargo run --example sign_nep_366_delegate_action

依赖关系

~3–14MB
~132K SLoC