1个不稳定版本
0.1.0-alpha | 2024年3月20日 |
---|
#86 in #near
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