#near #client #wasm #wasm-client

near-client

用于从任何平台访问合约API。主要设计用于WebAssembly

2个不稳定版本

0.7.2 2023年11月19日
0.1.1 2023年1月16日

#22 in #wasm-client

MIT/ApacheGPL-3.0 许可证

175KB
4K SLoC

crates.io

Near-client

TL;DR near-client 是Near Protocol的RPC实现

详细说明

该库的主要目标是实现跨平台兼容性。它可以编译为各种目标,如wasmlinuxiosandroid等。总体目标是遵循“一次编写,到处运行”的理念。生成的库专为合约调用而设计,功能多样,可以无缝集成到任何平台和前端。

虽然Near Protocol提供了关于如何使用其RPC(远程过程调用)系统的全面文档,但在某些情况下,这可能并不方便,尤其是在您想在Rust代码中调用这些函数时。near-client库通过简化流程,消除了手动构建HTTP请求的需要。目前,它提供了一套常用方法,如viewdeploy_contractfunction_callview_access_keysview_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,请按照以下步骤操作

  1. 使用以下命令构建您的应用程序: trunk build --release --public-url near-client
  2. 从dist目录复制所有文件,并将它们粘贴到gh-pages分支。
  3. 提交更改并将它们推送到您的仓库。

依赖项

~13–27MB
~437K SLoC