MetaMask Snaps is a system that allows anyone to safely expand the capabilities of MetaMask. A snap is a program that we run in an isolated environment that can customize the wallet experience.
This snap uses Sourcify to get information about the contract with which the transaction is about to happen and provides a human-readable description of what is about to happen in the transaction.
Warning The human-readable description of the funciton is generated from the NatSpec comment on the function. So don't trust it blindly!
Note The site has a example tx inside
packages/site/pages/index.tsx
Clone the repository and setup the development environment:
yarn install && yarn start
This repository contains GitHub Actions that you may find useful, see .github/workflows
and Releasing & Publishing below for more information.
If you clone or create this repository outside the MetaMask GitHub organization, you probably want to run ./scripts/cleanup.sh
to remove some files that will not work properly outside the MetaMask GitHub organization.
Note that the action-publish-relase.yml
workflow contains a step that publishes the frontend of this snap (contained in the public/
directory) to GitHub pages. If you do not want to publish the frontend to GitHub pages, simply remove the step named "Publish to GitHub Pages" in that workflow.
If you don't wish to use any of the existing GitHub actions in this repository, simply delete the .github/workflows
directory.
- Snap Code is in
packages/snap
Run yarn test
to run the tests once.
Run yarn lint
to run the linter, or run yarn lint:fix
to run the linter and fix any automatically fixable issues.
- Babel is used for transpiling TypeScript to JavaScript, so when building with the CLI,
transpilationMode
must be set tolocalOnly
(default) orlocalAndDeps
. - For the global
wallet
type to work, you have to add the following to yourtsconfig.json
:{ "files": ["./node_modules/@metamask/snap-types/global.d.ts"] }
- Sourcify Repo for Contract includes code and metadata file
Questions? Dm @harpaljadeja11 on twitter