A compilation of scripts to perform basic Web3 wallet management functions within a single interface. Create a wallet, check its balance, submit transactions, estimate gas costs, encrypt your private key to JSON keystore, and decrypt your JSON keystore to private key. Here are some quick demo walkthroughs of some of the core functionalities:
The current implementation supports the following functions:
β
Submit transactions
β
Create a new wallet
β
Estimate gas costs
β
Check wallet balance
β
Load external wallet from private key
β
Encrypt private key to JSON keystore
β
Decrypt JSON keystore to private key
β
Set custom JSON keystore password
β
Download every function output as JSON
π
Transaction history
π
Keystore file import
π
Sign transactions
π
Multi-wallet support
π
Network selection
THIS WALLET DOES NOT COME WITH ROBUST SECURITY FEATURES AND USING IT OUTSIDE A TESTING OR DEVELOPMENT ENVIRONMENT IS STRONGLY DISCOURAGED. BY USING THIS WALLET YOU AGREE IT IS PROVIDED TO YOU WITHOUT WARRANTY AND IN NO EVENT SHALL THE AUTHOR OR COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ARISING FROM YOUR INTERACTIONS WITH IT
π Node.js
π Web3.js (installed automatically during initial setup)
π Dotenv (installed automatically during initial setup)
Clone this repo to a preferred location and install all dependencies by entering the following in CLI from your project's root folder:
// CLI
npm installTo use the functions within this script you will need a node endpoint. Get one for free via the Chainstack console.
// CLI
node indexor alternatively via npm:
// CLI
npm run start2. Set a node endpoint for your wallet to connect with from the Change endpoint section. Your wallet will not work otherwise. Get a node endpoint for free from Chainstack here.
// .env
ENDPOINT="yOuR_eNdPoInT_URL_hErE"3. Create a new wallet by pressing the Create wallet button in the Change wallet section. You can also download the output as a JSON file.
// UI returns
# {
# "address": '0xYoUrPuBlIcKeYhErE',
# "privateKey": '0xYoUrPrIvAtEkEyHeRe',
# }The script will also add the private key of your newly create wallet to the .env file automatically:
// .env file changes
ENDPOINT="yOuR_eNdPoInT_URL_hErE"
PRIVATE_KEY="0xYoUrPrIvAtEkEyHeRe"
PRIVATE_KEY_PASS="undefined"4. Check the balance of your wallet by clicking the Check balance button. You can also download the output as a JSON file.
// UI returns
# {
# "address":"0xYoUrPuBlIcKeYhErE",
# "weiBalance":"1337000000000000000"
# "gweiBalance":"1337000000"
# "ethersBalance":"1.337"
# }5. Load an externally-created wallet with a private key import from the Change wallet section. You can also download the output as a JSON file.
// UI returns
# {
# "address": "0xYoUrPuBlIcKeYhErE",
# "privateKey": "0xYoUrPrIvAtEkEyHeRe",
# }The script will also add the private key of your newly create wallet to the .env file automatically:
// .env file changes
ENDPOINT="yOuR_eNdPoInT_URL_hErE"
PRIVATE_KEY="0xYoUrPrIvAtEkEyHeRe"
PRIVATE_KEY_PASS="undefined"6. Estimate the gas costs of a transaction from the currently loaded wallet to another of your choice after entering it in the top field of the Gas estimate section. You can also download the output as a JSON file.
// UI returns
# { "sender":"0xYoUrPuBlIcKeYhErE",
# "receiver":"0xReCeIvErPuBlIcKeYhErE",
# "estimate":21000
# }7. Send a transaction with specific from, to, value, and data parameters, then get the hash as receipt from the Create transaction section. You can also download the receipt output as a JSON file.
// UI returns
# {
# "from":"0xYoUrPuBlIcKeYhErE",
# "to":"0xReCeIvErPuBlIcKeYhErE",
# "value":"1337",
# "data":"0x80085",
# "gas":"22222",
# "hash":"0xYoUrTxReCeIpThAsHhErE"
# }8. Set a custom password to encrypt your wallet keys as a keystore file from the Change password section.
// .env
ENDPOINT="yOuR_eNdPoInT_URL_hErE"
PRIVATE_KEY="0xYoUrPrIvAtEkEyHeRe"
PRIVATE_KEY_PASS="yOuRpAsSwOrDhErE"9. Encrypt your wallet keys as a keystore file with the Create keystore button. You can also download the output as a JSON file.
// UI returns
# {
# "version": 3,
# "id": 'ace5ff1c-c971-4b8c-b066-e6215f7420d9',
# "address": '224a67b1e8a6b6b0ccb5deec44919ad983c82b12',
# "crypto": {
# "ciphertext": '423964514ee7eb5ee8f7c4047836e5743d12715889787325cc65b26b2d42ab7c',
# "cipherparams": { "iv": 'b7b16712524da59ca7585bcd55263f4b' },
# "cipher": 'aes-128-ctr',
# "kdf": 'scrypt',
# "kdfparams": {
# "dklen": 32,
# "salt": 'f99a05124ac9459d7fb045371bf975671e06f0125470c94990995e6e0a981312',
# "n": 8192,
# "r": 8,
# "p": 1
# },
# mac: '888d45374904d553ce9ee60ee49a2c52829159322a36961e2bd5efb28dba58c3'
# }
# }This will be reflected in the generated /dls/encryptedKeyStore.json file
// /dls/encryptedKeyStore.json file output
{"version":3,"id":"5b90f2fd-4eee-4979-a63d-82421f00ce3c","address":"a3d13afd97d3327e29178dbd8a1bc3fc639f363b","crypto":{"ciphertext":"1b69bc20f3b55ff3b4c32ebc0825c3c2d33daf1b1c080219db05fae9d806a0e6","cipherparams":{"iv":"773dd2ad24f0fb8973dd73184f0bf2b3"},"cipher":"aes-128-ctr","kdf":"scrypt","kdfparams":{"dklen":32,"salt":"5b49ecae1740ceef08686468a6179c1d154d7fea1997e1bada81050096cb042a","n":8192,"r":8,"p":1},"mac":"8a6f36122eec78348be94fa1352ecf28be0f875b92d64924e3708b34f2440114"}}10. Decrypt your keystore file with the Decrypt keystore button after placing it in its default location shown above the button. You can also download the output as a JSON file.
// CLI script returns
# {
# "address": '0xYoUrPuBlIcKeYhErE',
# "privateKey": '0xYoUrPrIvAtEkEyHeRe',
# }This will be reflected in the generated /dls/decryptedKeyStore.json file
// /dls/decryptedKeyStore.json file output
{"address":"0xYoUrPuBlIcKeYhErE","privateKey":"0xYoUrPrIvAtEkEyHeRe"}π
Transaction history
π
Keystore file import
π
Sign transactions
π
Multi-wallet support
π
Network selection

