#near #account #blockchain #transaction #management #operations #api

near-api-lib

这是一个Rust库,用于无缝开发NEAR区块链应用程序,提供账户管理、交易操作和区块链查询的工具。

1个不稳定版本

0.1.0-alpha2024年3月20日

#86 in #near

MIT/Apache

26KB

near-api-lib

NEAR API库是一个综合性的Rust库,旨在简化NEAR区块链应用程序的开发。它为开发者提供管理账户、构建和签名交易、查询区块链状态以及执行加密操作的基本工具和抽象,所有这些都可以在Rust的环境中完成。

功能

  • 账户管理:轻松管理NEAR账户,允许创建新账户、密钥管理以及账户删除。

  • 交易构建和签名:利用构建器模式构建和签名交易,支持各种操作。

  • 区块链交互:使用提供的JSON RPC提供者与NEAR区块链进行通信,以查询数据或发送交易。

  • 加密工具:访问用于密钥生成、签名和验证的加密函数。(通过Rexport轻松访问现有的near-crypto crate。)

  • NEAR区块链原语:直接与NEAR区块链原语进行操作,用于低级操作。(通过Rexport轻松访问现有的near-primitives crate。)

入门指南

将以下内容添加到您的Cargo.toml文件中

[dependencies]
near-api-lib = "0.1.0-alpha"

用法

use near_api_lib::primitives::types::{AccountId, Balance, Gas};
use near_api_lib::Account;
use near_api_lib::InMemorySigner;
use near_api_lib::JsonRpcProvider;

use serde_json::json;
use std::sync::Arc;

mod utils;

#[tokio::main]
async  fn main() -> Result<(), Box<dyn std::error::Error>> {

env_logger::init();
let signer_account_id: AccountId = utils::input("Enter the signer Account ID: ")?.parse()?;
let signer_secret_key = utils::input("Enter the signer's private key: ")?.parse()?;
//To-do, implement account exist check.
let new_account_id: AccountId = utils::input("Enter new account name: ")?.parse()?;
let signer = InMemorySigner::from_secret_key(signer_account_id.clone(), signer_secret_key);

  
let gas: Gas = 100_000_000_000_000; // Example amount in yoctoNEAR
// Amount to transfer to the new account
let amount: Balance = 10_000_000_000_000_000_000_000; // Example amount in yoctoNEAR

  
let new_secret_key = near_crypto::SecretKey::from_random(near_crypto::KeyType::ED25519);
let provider = Arc::new(JsonRpcProvider::new("https://rpc.testnet.near.org"));
let signer = Arc::new(signer);

  

let account = Account::new(signer_account_id, signer, provider);
let contract_id: AccountId = "testnet".parse::<AccountId>()?;
let method_name = "create_account".to_string();

let args_json = json!({
"new_account_id": new_account_id,
"new_public_key": new_secret_key.public_key()
});

let result = account
.function_call(contract_id, method_name, args_json, gas, amount)
.await;


println!("Response: {:#?}", result);
println!("New Account ID: {}", new_account_id);
println!("Secret Key: {}", new_secret_key);

Ok(())
}

示例

该crate包含示例,展示了如何使用各种功能。要运行示例,请使用以下命令:cargo run --example <example_name>

例如,要测试create_account函数:cargo run --example create_account

贡献

我们欢迎对near-api-lib crate的贡献!请随时提交拉取请求或打开问题,以建议改进或添加新功能。

依赖关系

~34–50MB
~776K SLoC