6 个版本
0.2.0 | 2024 年 6 月 21 日 |
---|---|
0.1.4 | 2024 年 4 月 22 日 |
0.1.2 | 2024 年 2 月 27 日 |
#2188 in 神奇豆
123 个月下载量
用于 ethers-web
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