@velygood/btcsnap
v1.2.1
Published
btcsnap: Metamask snap to manage your bitcoin
Downloads
6
Readme
BitcoinSnap
BitcoinSnap
is the world's first application allowing users to directly manage Bitcoin within the MetaMask interface, without having to wrap tokens. Since Snaps is pre-release software, BitcoinSnap is currently live on Metamask Flask only, a canary distribution for developers that provides access to upcoming features.
*Note: MetaMask Flask is an experimental playground for developers and is not to be confused with the normal MetaMask wallet app.
MetaMask Snaps Introduction
Snaps is a system that allows developers to safely build and expand the capabilities of MetaMask. It is a program that is run in an isolated environment with a limited set of capabilities, that can customize and modify MetaMask's wallet experience for end users. For example, a snap can add new APIs to MetaMask thus adding support for different blockchains or modify existing functionalities using internal APIs.
Additional information can be found here.
Usage
- Enable
BitcoinSnap
in your dapp
const result: boolean = await ethereum.request({
method: 'wallet_requestSnaps',
params: {
"npm:btcsnap": {},
}
})
- Get an extended public key
const response = await ethereum.request({
method: 'wallet_invokeSnap',
params: {
snapId: "npm:btcsnap",
request: {
method: 'btc_getPublicExtendedKey',
params: {
network: "test",
scriptType: "P2WPKH"
},
}
}
})
- Sign Psbt
const result: { txId:string, txHex:string } = await ethereum.request({
method: 'wallet_invokeSnap',
params: {
snapId: "npm:btcsnap",
request: {
method: 'btc_signPsbt',
params: {
psbt: base64Psbt, // base64 string for the pbst,
network: "Main", // for testnet use "Test",
scriptType: "P2PKH" // "P2SH-P2WPKH" or "P2WPKH"
},
},
}
})
Building
Build the snap and test it locally with the following command:
yarn rebuild
Testing
Use the following command to run tests:
yarn test
Testing Coverage
| File | % Stmts | % Branch | % Funcs | % Lines | |------------|---------|----------|---------|---------| | All files | 97.67 | 91.46 | 100 | 97.61 |
Live Example
If you would like to integrate BitcoinSnap into your dapp, you can use the following codes here.