4个版本
0.1.3 | 2019年10月21日 |
---|---|
0.1.2 | 2019年10月16日 |
0.1.1 | 2019年10月14日 |
0.1.0 | 2019年10月12日 |
在#forge中排名第6
3.5MB
78K SLoC
Forge SDK - Grpc客户端
要在Forge之上开发应用程序,您应选择一个SDK。Forge SDK旨在使与Forge构建的链的交互尽可能简单。所有SDK API都组织到以下类别
- 链API:提供与链相关gRPC的客户端包装器
- 钱包API:提供与钱包相关gRPC的客户端包装器
- 状态API:提供与状态相关gRPC的客户端包装器
- 订阅API:提供与订阅相关gRPC的客户端包装器
- 事务API:事务的gRPC为send_tx,这组API提供辅助函数,使构建和发送事务变得容易。
- 其他API:解析配置、初始化SDK等。
更多信息请参见:Forge SDK概述
钱包
钱包包将帮助用户创建本地账户、验证签名等。功能如下
钱包API如下
create_default_wallet() -> 结果<钱包>
from_wallet_type(w_type: &WalletType) -> 结果<钱包>
from_pk(pk: &[u8],w_type: &WalletType) -> 结果<钱包>
from_sk(sk: &[u8],w_type: &WalletType) -> 结果<钱包>
verify(&self,message: &[u8],signature: &[u8]) -> 结果<bool>
sign(&self,message: &[u8]) -> 结果<Vec<u8>>
等
grpc
帮助您创建/获取与Forge链的连接,然后通过连接向Forge链发送消息。消息包括GetInfo
、SendTx
、GetState
、Subscribe/Unsubscribe
等。
连接模块
帮助您创建/获取与Forge链的连接。
事务
帮助您构建事务对象,然后将其发送到Forge链。
示例 如何创建本地钱包,在Forge链上声明钱包,签到以获取一些代币,然后转给其他人。 示例仓库。 更多示例
- 1.设置
Cargo.toml
[dependencies] forge_wallet = "^0.1.2" forge_grpc = "^0.1.3"
- 2.与Forge链建立连接。
let chain_address = "127.0.0.1:28210"; let chain_name = "chain_1"; connection::add_connection(chain_name, chain_address)?;
- 3.创建两个账户:Alice和bob。
// create two local wallets: Alice, Bob let alice = forge_wallet::Wallet::create_default_wallet()?; let bob = forge_wallet::Wallet::create_default_wallet()?; // declare Alice on forge 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 forge chain request.wallet = bob.clone(); declare.moniker = Some(String::from("bob_01")); 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)?;
- Alice和bob检查余额。
// sleep 5s to wait transfer transaction stable. std::thread::sleep(std::time::Duration::from_secs(5)); let resp = forge_grpc::get_account_state( &vec![alice.address, bob.address], Some(chain_name.to_string()), )?; println!( "alice balance: {:#?}, bob balance: {:#?}", resp[0].get_state().get_balance().to_string(decimal), resp[1].get_state().get_balance().to_string(decimal) );
-
GRPC公开API以帮助用户
get_info
、send_tx
、subscribe\unsubscribe
、wallets
等。详细信息请参阅lib.rs
-
获取函数
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>)
get_validators_info(chain_name: Option<String>)
get_config(is_parsed: Option<bool>,chain_name: Option<String>)
get_tx(txs: &[String],chain_name: Option<String>)
get_unconfirmed_txs(paging: &chain_client::页面输入,chain_name: Option<String>)
获取区块(高度: u64,chain_name: Option<String>)
多重签名(多重签名: &chain_client::请求多重签名,chain_name: Option<String>)
搜索(密钥: &字符串,值: &字符串,chain_name: Option<String>)
-
钱包功能
创建钱包(请求: &钱包客户端::创建钱包,锻造名称: Option<String>)
恢复钱包(请求: &钱包客户端::恢复钱包,锻造名称: Option<String>)
删除钱包(请求: &钱包客户端::删除钱包,锻造名称: Option<String>)
列出钱包(锻造名称: Option<String>)
声明节点(锻造名称: Option<String>,验证者: bool)
-
状态功能
获取账户状态(钱包地址: &[String],chain_name: Option<String>)
获取锻造状态(请求: &状态客户端::锻造状态,chain_name: Option<String>)
获取协议状态(请求: Arc<状态客户端::请求状态>,chain_name: Option<String>)
获取资产状态(请求: Arc<状态客户端::请求状态>,chain_name: Option<String>)
获取代表状态(请求: Arc<状态客户端::请求状态>,chain_name: Option<String>)
获取交换状态(请求: Arc<状态客户端::请求状态>,chain_name: Option<String>)
获取泰达币状态(请求: Arc<状态客户端::请求状态>,chain_name: Option<String>)
获取股份状态(请求: Arc<状态客户端::请求状态>,chain_name: Option<String>)
-
发送事务功能
声明(请求: &请求,递减: &构建itx::声明)
戳击(请求: &请求)
转让(请求: &请求,转让: &构建itx::转让)
创建资产(请求: &请求,itx: &构建itx::创建资产)
更新资产(请求: &请求,itx: &构建itx::更新资产)
消耗资产(请求: &请求,itx: &构建itx::消耗资产,资产地址: &字符串,签署者: &[钱包])
获取资产(请求: &请求,itx: &构建itx::获取资产)
交换(请求: &请求,itx: &构建itx::交换,签署者: &[钱包])
代表(请求: &请求,itx: &构建itx::代表事务)
账户迁移(请求: &请求,itx: &构建itx::账户迁移)
存入代币(请求: &请求,itx: &构建itx::存入代币)
设置交换(请求: &请求,itx: &构建itx::设置交换)
撤销交换(请求: &请求,itx: &构建itx::撤销交换)
检索交换(请求: &请求,itx: &构建itx::检索交换)
创建事务(请求: &构建事务::创建事务,锻造名称: Option<String>)
准备交换事务(请求: &请求,itx: &构建itx::交换,签署者: &[钱包])
发送简单事务(请求: &事务请求,锻造名称: Option<String>)
-
事件功能
订阅(请求: &事件客户端::订阅,锻造名称: Option<String>)
退订(请求: &事件客户端::退订,锻造名称: Option<String>)
-
-
事务示例
示例模块展示了如何向锻造发送事务,例如声明、戳击、资产等。此外,该模块还展示了如何创建钱包、添加连接、获取连接等。详细信息请参阅模块
grpc/src/example
。支持的交易类型
- 1. 创建钱包
- 2. 转账
- 3. 资产
- 4. 交换
- 5. 代表
- 6. 交换和代表同时进行
- 7. 原子交换
- 8. 订阅/退订
- 9. 迁移账户
相关crates
- forge_wallet:帮助您创建本地账户、验证签名等。以下API如下
create_default_wallet() -> 结果<钱包>
from_wallet_type(w_type: &WalletType) -> 结果<钱包>
from_pk(pk: &[u8],w_type: &WalletType) -> 结果<钱包>
from_sk(sk: &[u8],w_type: &WalletType) -> 结果<钱包>
verify(&self,message: &[u8],signature: &[u8]) -> 结果<bool>
哈希(&self,message: &[u8]) -> 结果<Vec<u8>>
sign(&self,message: &[u8]) -> 结果<Vec<u8>>
等
- forge_util:提供一些帮助API,例如
将json保存到本地
等。 - forge_did:从pk、sk或pk哈希生成
forge did
。forge did
示例did:abt:zNYm1gM23ZGHNYDYyBwSaywzTqLKoj4WuTeC
。 - forge_hasher:提供一些哈希算法,例如
blake2b
、keccak
、sha2
、sha3
。 - forge_signer:提供一些签名算法,例如
ed25519
、secp256k1
。 - forge_crypter:提供一些加密算法,例如
ed25519
。
依赖
~51MB
~881K SLoC