3 个版本
0.1.3 | 2019 年 10 月 21 日 |
---|---|
0.1.2 | 2019 年 10 月 16 日 |
0.1.0 | 2019 年 10 月 12 日 |
#5 in #forge
3.5MB
78K SLoC
Forge SDK
要在 Forge 上开发应用程序,您需要选择一个 SDK。Forge SDK 的目的是使与 Forge 构建的链交互尽可能容易。所有 SDK API 都组织到以下类别
- 链 API:提供与链相关 gRPC 的客户端包装器
- 钱包 API:提供与钱包相关 gRPC 的客户端包装器
- 状态 API:提供与状态相关 gRPC 的客户端包装器
- 订阅 API:提供与订阅相关 gRPC 的客户端包装器
- 交易 API:交易 gRPC 为 send_tx,这组 API 提供辅助函数,以简化构建和发送交易。
- 其他 API:解析配置、初始化 SDK 等。
有关更多信息,请参阅: Forge SDK 概述
如何通过 Rust SDK 与 Forge 链通信?
准备
- 1. 安装 forge,并创建一个链。
- 通过命令
$ npm install -g @arcblock/forge-cli
安装forge cli
。 详情。 - 通过 forge cli 创建链
- 通过命令
- 2. 安装 Rust 开发环境。
编写您的应用程序代码
-
3. 创建您的 Rust 项目。
$ cargo new demo
创建名为demo
的 rust 项目。- 设置
Cargo.toml
的Dependencies
[dependencies] forge_wallet = "^0.1.2" forge_grpc = "^0.1.3"
- 在
main.rs
或lib.rs
中使用 forge 包extern crate forge_grpc; extern crate forge_wallet;
详情请参阅 rust_sdk_example
-
4. 编写您的 Rust 项目代码。以下是一个示例
- 创建与上述创建的链的 gRPC 连接
let chain_address = "127.0.0.1:28210"; let chain_name = "chain_1"; connection::add_connection(chain_name, chain_address)?;
- 获取链配置
forge_grpc::get_chain_info(Some(chain_name.to_string()))?;
- 声明钱包
use forge_grpc::transaction; // -.create two wallets: alice, bob let alice = forge_wallet::Wallet::create_default_wallet()?; let bob = forge_wallet::Wallet::create_default_wallet()?; // -.declare alice on chain let mut request = transaction::build_request::Request { wallet: alice.clone(), forge_name: Some(chain_name.to_string()), ..Default::default() }; let mut declare = transaction::build_itx::Declare { moniker: Some(String::from("alice")), ..Default::default() }; forge_grpc::declare(&request, &declare)?; // -.declare bob on chain request.wallet = bob.clone(); declare.moniker = Some(String::from("bob_01")); let resp = forge_grpc::declare(&request, &declare)?;
- Alice 检入以获取一些代币
request.wallet = alice.clone(); forge_grpc::poke(&request)?;
- Alice 向 Bob 转账 1.0 代币
let decimal = connection::get_connection(Some(chain_name.to_string())).unwrap().get_decimal() as usize; let transfer_itx = transaction::build_itx::Transfer { to: Some(bob.address.to_owned()), value: Some(forge_grpc::BigUint::from_string("1", decimal)?), ..Default::default() }; forge_grpc::transfer(&request, &transfer_itx)?;
- 然后您可以在 forge_web 上检查发送的交易。默认地址为
127.0.0.1:8210
。
详情请参阅 rust_sdk_example
更多示例请见 grpc_example
- 创建与上述创建的链的 gRPC 连接
相关包
-
forge_wallet:帮助您创建本地账户,验证签名等。API 如下
create_default_wallet() -> 结果<钱包>
from_wallet_type(类型: &WalletType) -> 结果<钱包>
from_pk(私钥: &[u8],类型: &WalletType) -> 结果<钱包>
from_sk(密钥: &[u8],类型: &WalletType) -> 结果<钱包>
verify(&self,消息: &[u8],签名: &[u8]) -> 结果<bool>
hash(&self,消息: &[u8]) -> 结果<Vec<u8>>
sign(&self,消息: &[u8]) -> 结果<Vec<u8>>
等
-
forge_grpc:帮助您连接到 forge 链,从链中搜索内容,向 forge 链发送交易等。
get_chain_info(chain_name: Option<String>)
get_chain_id(chain_name: Option<String>)
get_net_info(chain_name: Option<String>)
get_node_info(chain_name: Option<String>)
create_wallet(request: &wallet_client::CreateWallet,forge_name: Option<String>)
recover_wallet(request: &wallet_client::RecoverWallet,forge_name: Option<String>)
remove_wallet(request: &wallet_client::RemoveWallet,forge_name: Option<String>)
declare(request: &Request,dec: &build_itx::Declare)
poke(request: &Request)
transfer(request: &Request,transfer: &build_itx::Transfer)
create_asset(request: &Request,itx: &build_itx::CreateAsset)
等
-
forge_util:提供一些帮助 API,例如
将 JSON 保存到本地
等。 -
forge_did:从
pk
、sk
或pk hash
生成forge did
。例如did:abt:zNYm1gM23ZGHNYDYyBwSaywzTqLKoj4WuTeC
。 -
forge_hasher:提供一些哈希算法,例如
blake2b
、keccak
、sha2
、sha3
。 -
forge_signer:提供一些签名算法,例如
ed25519
、secp256k1
。 -
forge_crypter:提供一些加密算法,例如
ed25519
。
依赖项
~67MB
~1M SLoC