2个不稳定版本
0.7.2 | 2023年11月19日 |
---|---|
0.1.1 | 2023年1月16日 |
#22 in #wasm-client
175KB
4K SLoC
Near-client
TL;DR near-client
是Near Protocol的RPC实现
详细说明
该库的主要目标是实现跨平台兼容性。它可以编译为各种目标,如wasm
、linux
、ios
、android
等。总体目标是遵循“一次编写,到处运行”的理念。生成的库专为合约调用而设计,功能多样,可以无缝集成到任何平台和前端。
虽然Near Protocol提供了关于如何使用其RPC(远程过程调用)系统的全面文档,但在某些情况下,这可能并不方便,尤其是在您想在Rust代码中调用这些函数时。near-client库通过简化流程,消除了手动构建HTTP请求的需要。目前,它提供了一套常用方法,如view
、deploy_contract
、function_call
、view_access_keys
、view_account
等。
实时演示
您可以在examples/wallet
中找到实现代码
使用示例
对于仅查看contract
,让我们创建一个NearClient
实例并调用view。
let client = NearClient::new(url).unwrap(); // Please handle an error
let output = client
.view::<String>(
contract_id, // `AccountId` of a contract id
Finality::None, // Take a look in a documentation
"show_type", // name of the function that we are trying to call
Some(json!({"is_message": true})),
)
.await
.unwrap(); // Handle an error
output // is an output of a contract execution
如果应该执行事务,则应创建Signer
对象。
Signer::from_secret_str(secret_key, account_id, nonce)
Signer::from_secret(secret_key, account_id, nonce)
以str
表示的密钥,应类似于以下内容ed25519:5nEtNZTBUPJUwB7v9tfCgm1xfp1E7wXcZdWDpz1JwKckqG5pqstumaqRHJjtfFZMtik4TpgCVmmpvpxjEcq3CTLx
这是前缀ed25519
:密钥+以base58
格式表示的公钥的组合。
在此之后,您可以按需使用它。例如,您想在之前部署的合约上调用某个函数。比如说,可以在哈希表中设置某个值。然后您可以使用类似以下的内容
let result = client
.function_call(signer, contract_id, "add_value")
.args(serde_json::json!({
"superb_value": "5"
}))
.gas(gas("300 T"))
.commit(Finality::None) // you can choose your finality for a block
.retry(Retry::ONCE) // If InvalidNonce error received try to execute one more time
.await
.unwrap()
更新GitHub Pages
要更新您的GitHub Pages,请按照以下步骤操作
- 使用以下命令构建您的应用程序:
trunk build --release --public-url near-client
- 从dist目录复制所有文件,并将它们粘贴到gh-pages分支。
- 提交更改并将它们推送到您的仓库。
依赖项
~13–27MB
~437K SLoC