Connect Wallet To Test
When you deploy your game to production, of course you can use whatever wallet system you want to interact with your application.
The steps below, however, are to make connecting a wallet to your local network as you test a breeze.
A Note on Browser Profilesβ
To avoid making a mistake, it's usually best to have a special environment you use just for testing (that you never connect you main wallet to).
Chrome has a great features that allows creating multiple profiles in your browser -- each with its own totally separate browser storage and separate browser extensions. It makes it easy to create a "test" profile for setting up wallets.
Learn more here.
(Recommended) Using Rivetβ
Rivet is a browser extension wallet optimized for developers who are testing making it perfect for developing with Paima Engine.
You can see an example of Rivet being used as the wallet to test a game running on localhost below:
Step 1: Download Rivetβ
You can download it here.
If you're running a special environment other than Chrome, refer to the Rivet docs
Step 2: Run your game UI and open it in your browserβ
Unlike other wallets, Rivet does nothing on regular web pages (you cannot tap it like MetaMask). See here if you need help on getting your game running
Step 3: Go through the Anvil setupβ
Once you've opened the frontend for your game, you may see Rivet appear on the screen, or you may have to tap its icon in the extension bar at the top-right of your browser (it may be hidden by default until you press the extensions icon). We'll walk you through the setup steps.
1. Press the Create Anvil instance
(it doesn't matter that you're not actually running Anvil. You don't need to know what it is).β
2. Ignore the instructions and just press "Continue"β
3. Configure the options to match your hardhat.config.ts
for your game (you can find this in the template you downloaded for Paima)β
- Chain ID
31337
- Network Name
Hardhat
- RPC URL
http://localhost:8545
- Block Number
1
- Block Time
2
4. Approve the request to connect to localhostβ
5. (optional) Take it all inβ
You should now get significantly more detailed views of the transactions for your game, and you can also see all the transactions, addresses and contracts deployed to your local network.
Note that Rivet uses addresses automatically generated for your local network. These addresses are for testing purposes only. You should NEVER use them on a real network (these are not your addresses magically imported from MetaMask or elsewhere. They are publicly known addresses that anybody can reuse).
Some features of Rivet will crash (just refresh the page if this happens). This is happens because Rivet was originally designed for Anvil which is a different tool for managing local networks (and we're using Hardhat instead). Fortunately these tools are compatible enough that things mostly work.
6. (optional) Setup auto-signingβ
If you don't want to manually approve every transaction for your application, and don't want to setup Paima's account abstraction layer just to play around on a test network, Rivet comes with a functionality to auto-sign transactions for you.
Just open the settings icon at the top-right and check the two boxes seen below (or all three if you're following our recommendation to use browser profile just for testing ). Note: this is only safe because we're doing this on a local network. Do not do this with a real wallet on a real network.
(Not Recommended) Using MetaMaskβ
MetaMask is a popular browser extension wallet. Although it works okay for mainnet, it is not optimized for developer usage on networks running locally. We'll show your the steps on how to get it working despite this, but we recommend Rivet if possible.
Key points to keep in mind:
- These steps are only required if running on a localhost network (not required on mainnet / testnet)
- You will need to reset your nonce often for this by going to
Settings > Advanced > Clear activity and nonce data
(more on this later)
There are two ways to connect MetaMask to your local network
Option 1:Hardhat Private Key β MetaMask
β
1. Open MetaMask and click on the account selector at the top of the screenβ
2. Click "Add Account" at the bottomβ
3. Select "import account"β
4. Paste in the private key seen when running npm run chain:start
β
Option 2: MetaMask mnemonic β Hardhat
β
See the MetaMask guide for this here
Important MetaMask Issueβ
The main issue with MetaMask is that it will not automatically detect if your locally running network got reset. This is problematic because in EVM, every transaction made by an account has an ID ("nonce") that needs to be a continuously increasing value (learn more here), and so if you restart your local network MetaMask will use the wrong nonce and your transactions will fail silently.
To solve this issue, follow the steps below every time you restart your local network.
Rivet does not have this issue and refreshing the page is generally sufficient.