#snap #exports #api #metamask #ru-snap #data #basic

rusnap-exports

RuSnap 将 API 导出至 Metamask Snap

2 个版本

0.1.1 2023年10月13日
0.1.0 2023年10月13日

#4 in #metamask


rusnap 中使用

MIT 协议

16KB
277

RuSnap

使用 Rust 构建Metamask Snap

特性

  • Snap 基本功能
    • 管理密钥
    • 对话框和通知
    • 随机
    • 存储数据
    • 网络访问(WIP)
    • Ethereum 提供程序(WIP)
  • RPC 处理
  • Keyring 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 的基本功能: docs.rs

随机

rand_core 中使用 OsRng 或其他基于 getrandom 的随机 crate。

请使用 getrandom 并添加 js 功能。

getrandom = { version = "0.2.10", features = ["js"] }

Web3 SDK

使用 rusnap-ethersethers

注意:rusnap-ethers 不会重新导出到 rusnap crate 中,请独立添加此 crate。

依赖项

~1.2–2.1MB
~39K SLoC