#crypto #ethereum #wasm #web3 #parse-url #walletconnect

walletconnect-client

用于 walletconnect dApp 连接的 WASM 库

6 个版本

0.2.0 2024 年 6 月 21 日
0.1.4 2024 年 4 月 22 日
0.1.2 2024 年 2 月 27 日

#2188 in 神奇豆

Download history 253/week @ 2024-04-14 245/week @ 2024-04-21 12/week @ 2024-04-28 42/week @ 2024-05-05 28/week @ 2024-05-12 45/week @ 2024-05-19 24/week @ 2024-05-26 48/week @ 2024-06-02 10/week @ 2024-06-09 125/week @ 2024-06-16 43/week @ 2024-06-23 60/week @ 2024-06-30 84/week @ 2024-07-28

123 个月下载量
用于 ethers-web

MIT/Apache

130KB
3K SLoC

快速入门

将其添加到您的 Cargo.toml 中

[dependencies]
walletconnect-client = "0.1"

并将其添加到您的代码中

use walletconnect_client::prelude::*;

要使用钱包初始化 walletconnect 连接,请设置您的 dApps 元数据

use url::Url;
use walletconnect_client::prelude::*;

let dapp = Metadata::from("Your dApp's name", 
                          "Your dApp's short description", 
                          Url::parse("https://url.of.your.dapp").expect("Wrong URL"), 
                          vec!["https://url.to.your.dapps.icon".to_string()]);

...一旦您从 WalletConnect 门户获取到项目 ID,您就可以简单地创建连接

use walletconnect_client::prelude::*;

const PROJECT_ID: &str = "myprojectidfromwalletconnectportal";

async fn start_session(dapp: Metadata) -> Result<String, WalletConnectError> {
    let client = WalletConnect::connect(PROJECT_ID.into(), 
            1 /* Ethereums chain id */, 
            dapp, 
            None)?;
    let url = client.initiate_session(None).await?;
    Ok(url)
}

现在您的钱包需要获取您的会话 URL。您可以通过带有适当方案的 URL 调用来传递它,或者使用如 qrcode-generator 这样的 crate 生成二维码来展示它

状态循环由实现者手动处理(某些地方没有并发)。您必须在某个地方循环以获取来自 WalletConnect 的任何更新。

use walletconnect_client::prelude::*;

async fn handle_messages(wc: WalletConnect) {
    while let Ok(event) = wc.next().await {
        match event {
            Some(event) => println!("Got a new WC event {event:?}"),
            None => println!("This loop brought no new event, and that is fine")
        }
    }
}

文档

正在创建中。

功能

  • 会话创建和处理
  • 处理交易签名
  • 处理类型数据签名
  • 处理手动链更改
  • 处理事件
  • 处理 ping
  • 处理会话更新
  • 处理会话删除
  • 处理服务器非 WASM 使用

关于 WASM 的说明

这个库目前需要 WASM 来工作。尽管如此,有一个计划来支持服务器端实现。目前,我们专注于为网站的 WASM 实现构建稳健的解决方案。

依赖关系

34–51MB
~1M SLoC