This is a simple example of how to use the sats-connect library to build a dapp. The dapp is a simple web application that allows users to send and receive btc and stx using the sats-connect library.
The dapp is built in typescript with Create-React-App.
- sats-connect source code
- sats-connect v2.0.0 documentation
- xverse-web-extension-RC v0.31.0
- xverse-web-extension
This dapp uses an RC version of sats-connect, which implements the WBIP standard, and requires that an RC version of Xverse wallet is installed.
To install the RC version of Xverse wallet, follow the below instructions:
- Download the latest release candidate from the RC v0.31.0 page. The link is in the comment at the top of the page under
Release candidate. Download thexverse-web-extension.v0.31.0-rc.X.zipfile. - Unzip the file into an easily accessible folder
- Open Chrome and go to
chrome://extensions/ - Enable developer mode by clicking the toggle in the top right corner
- Click the
Load unpackedbutton and select the folder where you unzipped the release candidate
Further to this, you will need to have Node.js installed on your machine. You can download it from the Node.js website.
To install the node dependencies for the dapp, run the following command:
npm iTo run the dapp, run the following command:
npm startThe dapp should now be reachable in your browser on http://localhost:3001
Sats-connect is an open source library which allows you to interact with the Xverse wallet from your dapp. The library exposes a request function which you can use to send requests to the Xverse wallet. The request function takes a method and params as arguments. The method is the name of the method you want to call in the Xverse wallet and the params is an object with the parameters typed specifically for the method.
If using typescript, the methods are typed and will come up in the intellisense of your IDE. Once you have typed a specific method, the params will be typed according to that method and will also come up in the intellisense.
The methods are namespaced according to the functionality they provide, with the exception of Bitcoin methods, which live in the global namespace. For example, to create a Bitcoin send transaction you would call request('sendTransfer', { ... }). To create a Stacks send transaction you would call request('stx_transferStx', { ... }).
The available Bitcoin methods are:
getInfo
getAddresses
signMessage
sendTransfer
signPsbt
The Stacks methods are:
stx_callContract
stx_deployContract
stx_getAccounts
stx_getAddresses
stx_signMessage
stx_signStructuredMessage
stx_signTransaction
stx_transferStx
There are also some more specialised methods exposed by sats connect which have not been migrated to the request function yet. One of these can be seen in the main App.tsx file, where we use the getAddresses method to get both the Bitcoin and Stacks addresses. However, these methods have a different calling convention using callback functions instead of promises.
And buidl on! 🚀