Wallet Transactions
How to transfer tokenized fiat to other accounts using publicmint-web3.js
Transactions in the Public Mint blockchain are quite similar to Ethereum. All transactions take place through ERC-20-like smart contracts that handle the tokenised fiat. This means that checking balances, sending or receiving fiat require calls to that fiat currency's smart contract, with the default being USD.
Read on to learn your way around the basics.
If you haven't created a Public Mint Web Wallet and don't have your own, then the first thing you need is a wallet. Start by connecting to a node - check the previous section to get the code.
After that, it's simple - instantiate a wallet and add the private key of your funded account:
import PublicMint from '@publicmint/publicmint-web3';
const web3 = new PublicMint();
// Instantiate wallet
const {
wallet
} = web3.pm
// Add your first account
// 0x4389Af2E0515dDFe3453B1bD748aDfD5e2598cFd
const walletAccountPrivateKey1 = "0xba6cdfcc795484a9774eb98e756983da822ef3481b37d4ba649864e2d1ab4e5e";
wallet.add(walletAccountPrivateKey1);
const getAccountsRes = pm.wallet.accounts.getAccounts;
// [
// '0x4389Af2E0515dDFe3453B1bD748aDfD5e2598cFd'
// ]
And that's it - keep your keys safe and don't show anyone.
Let's use web3 instance to check the balance of a Public Mint address.
The ERC20 token balance is mapped directly against the native token - for all effects, they are the same. While you can use the web3 wallet method
balanceOf
, for performance reasons, we strongly recommend you use the JSON-RPC getBalances
to do it.After instantiating web3 and create a connection to a Public Mint node, instantiate a local version of the ERC20_USD contract:
// Instantiate publicmint-web3 module
const PublicMint = require('@publicmint/publicmint-web3').default;
const web3 = new PublicMint('testNet');
const {
USD
} = web3.pm.contracts.token
Then all you need to do is call the contract's
getBalances
method for your wallet's address.// Making web3 JSON-RPC getBalance method:
web3.eth.getBalance("0x407d73d8a49eeb85d32cf465507dd71d507100c1")
.then(console.log);
> "1000000000000"
// Alternatively, you can also use:
const myBalance = await web3.pm.wallet.accounts.getBalance("address in wallet");
// To get balances of all accounts in wallet:
const myBalances = await web3.pm.wallet.accounts.getBalances;
/*
{
'0x4389Af2E0515dDFe3453B1bD748aDfD5e2598cFd': '0',
'0xd2FA48924906e00069E81aaf778c4f586b5CA58B': '0'
}
*/
Here is what you need to do to send funds to another Public Mint address.
After getting a wallet and checking your balance to make sure everything is working, you can start transacting.
Here's the full code snippet to get you through all the steps:
// Instantiate: web3
const PublicMint from '@publicmint/publicmint-web3';
const web3 = new PublicMint(2019); // 'testNet'
// Your wallet
const {
wallet
} = web3.pm
// Method to convert USD to native token units
const {
toToken
} = web3.pm.utils;
// 0x4389Af2E0515dDFe3453B1bD748aDfD5e2598cFd
const walletAccountPrivateKey1 = "0xba6cdfcc795484a9774eb98e756983da822ef3481b37d4ba649864e2d1ab4e5e";
wallet.add(walletAccountPrivateKey1);
const destinationAccount = '0x994e6a8c5F4c15FD004B6DAcb305cC1213C5503B';
// 10 USD will be converted to small unit using toToken function
const transferReceipt =
await web3.pm.wallet.accounts.transfer(destinationAccount, toToken(10))
//
And that's it. To make sure it worked, you should check the balance on both accounts as described above.
For a comprehensive list of transactions with examples, please check the web3.js documentation's list of methods.
Last modified 3yr ago