2 releases
0.1.1 | Oct 18, 2023 |
---|---|
0.1.0 | Oct 13, 2023 |
#3 in #metamask
Used in rusnap
19KB
327 lines
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:
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 inrusnap
crate, please add this crate independently.
Dependencies
~1.2–3.5MB
~61K SLoC