5 个版本
0.1.4 | 2023年10月17日 |
---|---|
0.1.3 | 2023年10月17日 |
0.1.2 | 2023年10月17日 |
0.1.1 | 2023年10月13日 |
0.1.0 | 2023年10月13日 |
#2788 in 魔法豆
12KB
153 行
RuSnap
使用 Rust 构建 Metamask Snap。
特性
- Snap 基本功能。
- 管理密钥
- 对话框和通知
- 随机
- 存储数据
- 网络访问(进行中)
- 以太坊提供者(进行中)
- RPC 处理
- 密钥环 API(待办事项)
示例
https://github.com/tiannian/rusnap-example
安装和使用
安装 cargo-rusnap
。
cargo install rusnap
依赖项
请安装以下依赖项。
- wasm-pack
- npm (yarn 或 pnpm)
创建 Snap
cargo rusnap new <pkg-name>
构建 Snap
# Build dev mode in default
cargo rusnap build
# Build release mode
cargo rusnap build --release
启动 Snap
cargo rusnap start
Snap
在 Metamask 中安装 Snap
然后您可以在 metamask 中加载 snap。
在浏览器开发者工具中执行以下 js 语句
window.ethereum.request({
method: "wallet_requestSnaps",
params: { "local:https://127.0.0.1:8080": {} },
});
或使用 Metamask Snap 调试工具。
调用 Snap
在浏览器开发者工具中执行以下 js 语句
window.ethereum.request({
method: "wallet_invokeSnap",
params: {
snapId: "local:https://127.0.0.1:8080",
request: {
method: "hello",
},
},
});
发布 Snap
待办事项
参考
基本功能
Snap 的基本功能:
随机
在 rand_core
中使用 OsRng
或其他基于 getrandom
的随机 crate。
请使用 getrandom
的 js
功能。
getrandom = { version = "0.2.10", features = ["js"] }
Web3 SDK
使用 rusnap-ethers
和 ethers
。
注意:
rusnap-ethers
不重新导出到rusnap
crate,请独立添加此 crate。
依赖项
~21–36MB
~691K SLoC