* Add token management interface * remove git tracking of certain python files * add additional token management functions * Update global variables in token management tool * clean up contract ABI * Add comments to refer to helper function descriptions * Clarify token-management tool usage in README
3.8 KiB
token-management
CLI utility for interacting with the TestStableToken ERC-20 used by the Logos Messaging RLN v2 contract tests.
Point it at a deployed token contract (proxy) and an Ethereum JSON-RPC endpoint to:
- Read token state (e.g. balance, allowance, total/max supply, owner, proxy implementation).
- Perform write operations like mint/transfer/approve and minter/ownership management (requires
PRIVATE_KEY).
For the semantics and intended use of TestStableToken itself, see the TST README.
Configuration
Set the following environment variables (or use a .env file):
TOKEN_CONTRACT_ADDRESS: The token contract proxy addressRLN_CONTRACT_ADDRESS: The RLN contract proxy addressRLN_RELAY_ETH_CLIENT_ADDRESS: The Ethereum JSON-RPC endpointETH_FROM: The default user account address of the deployer/owner of the TestStableToken contractPRIVATE_KEY: Private key for the ETH_FROM account, it will lbe used for write operations (transfer, mint)
Usage
The interactions.py script provides a CLI interface for all token operations.
Read-Only Commands (no PRIVATE_KEY required)
Get total supply:
python3 tools/token_management/interactions.py total-supply
Get max supply:
python3 tools/token_management/interactions.py max-supply
Get token contract owner:
python3 tools/token_management/interactions.py owner
Get token implementation address:
python3 tools/token_management/interactions.py implementation
Get balance (defaults to USER_ACCOUNT_ADDRESS from env):
python3 tools/token_management/interactions.py balance
python3 tools/token_management/interactions.py balance 0xYourAddress
Get allowance (defaults to USER_ACCOUNT_ADDRESS and RLN_CONTRACT_PROXY_ADDRESS):
python3 tools/token_management/interactions.py allowance
python3 tools/token_management/interactions.py allowance 0xOwner 0xSpender
Check if address is a minter (defaults to USER_ACCOUNT_ADDRESS):
python3 tools/token_management/interactions.py is-minter
python3 tools/token_management/interactions.py is-minter 0xAddress
Write Commands (PRIVATE_KEY required)
All write commands accept an optional --private-key flag to specify a custom private key. If not provided, the PRIVATE_KEY environment variable will be used.
Transfer tokens:
python3 tools/token_management/interactions.py transfer 0xRecipient 100.5
python3 tools/token_management/interactions.py transfer 0xRecipient 100.5 --private-key 0xYourPrivateKey
Mint tokens:
python3 tools/token_management/interactions.py mint 0xRecipient 1000
python3 tools/token_management/interactions.py mint 0xRecipient 1000 --private-key 0xYourPrivateKey
Approve spender to use tokens:
python3 tools/token_management/interactions.py approve 0xSpender 500
python3 tools/token_management/interactions.py approve 0xSpender 500 --private-key 0xYourPrivateKey
Transfer contract ownership:
python3 tools/token_management/interactions.py transfer-ownership 0xNewOwner
python3 tools/token_management/interactions.py transfer-ownership 0xNewOwner --private-key 0xYourPrivateKey
Add minter role to an account:
python3 tools/token_management/interactions.py add-minter 0xAccount
python3 tools/token_management/interactions.py add-minter 0xAccount --private-key 0xYourPrivateKey
Remove minter role from an account:
python3 tools/token_management/interactions.py remove-minter 0xAccount
python3 tools/token_management/interactions.py remove-minter 0xAccount --private-key 0xYourPrivateKey
Help
View all available commands:
python3 tools/token_management/interactions.py --help