rusnap-api

Crates.iorusnap-api
lib.rsrusnap-api
version0.1.1
sourcesrc
created_at2023-10-13 14:44:46.352453
updated_at2023-10-18 07:02:17.888916
descriptionJSONRPC API for Metamask Snap
homepage
repositoryhttps://github.com/tiannian/rusnap
max_upload_size
id1002360
size14,394
(tiannian)

documentation

README

RuSnap

Build Metamask Snap use Rust.

Features

  • Snap basic function.
    • Manage keys
    • Dialog and Notification
    • Random
    • Store Data
    • Network Access (WIP)
    • Ethereum Provider
  • RPC Handle
  • Keyring API (TODO)

Example

https://github.com/tiannian/rusnap-example

Install and Usage

Install cargo-rusnap.

cargo install rusnap

Dependencies

Please install these dependencies.

  • wasm-pack
  • npm (yarn or pnpm)

Create Snap

cargo rusnap new <pkg-name>

Build Snap

# Build dev mode in default
cargo rusnap build

# Build release mode
cargo rusnap build --release

Start Snap

cargo rusnap start

Snap

Install Snap in Metamask

Then you can load snap in metamask.

Execute these js statement in broswer devtool:

window.ethereum.request({
  method: "wallet_requestSnaps",
  params: { "local:http://localhost:8080": {} },
});

Or use Metamask Snap Debug Tool.

Call Snap

Execute these js statement in broswer devtool:

window.ethereum.request({
  method: "wallet_invokeSnap",
  params: {
    snapId: "local:http://localhost:8080",
    request: {
      method: "hello",
    },
  },
});

Publish Snap

TODO

Reference

Basic Function

Basic function of Snap: docs.rs

Random

Use OsRng in rand_core or other random crate based on getrandom.

Please add getrandom with js feature.

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

Web3 SDK

Use rusnap-ethers and ethers.

Note: rusnap-ethers don't re-export in rusnap crate, please add this crate independently.

Commit count: 80

cargo fmt