mirror of
https://github.com/logos-messaging/logos-messaging-simulator.git
synced 2026-02-09 00:23:10 +00:00
* 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
111 lines
3.8 KiB
Markdown
111 lines
3.8 KiB
Markdown
# token-management
|
|
|
|
CLI utility for interacting with the [TestStableToken](https://github.com/logos-messaging/logos-messaging-rlnv2-contract/blob/main/test/TestStableToken.sol) 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](https://github.com/logos-messaging/logos-messaging-rlnv2-contract/blob/main/test/README.md).
|
|
|
|
## Configuration
|
|
|
|
Set the following environment variables (or use a `.env` file):
|
|
|
|
- `TOKEN_CONTRACT_ADDRESS`: The token contract proxy address
|
|
- `RLN_CONTRACT_ADDRESS`: The RLN contract proxy address
|
|
- `RLN_RELAY_ETH_CLIENT_ADDRESS`: The Ethereum JSON-RPC endpoint
|
|
- `ETH_FROM`: The default user account address of the deployer/owner of the TestStableToken contract
|
|
- `PRIVATE_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:
|
|
```bash
|
|
python3 tools/token_management/interactions.py total-supply
|
|
```
|
|
|
|
Get max supply:
|
|
```bash
|
|
python3 tools/token_management/interactions.py max-supply
|
|
```
|
|
|
|
Get token contract owner:
|
|
```bash
|
|
python3 tools/token_management/interactions.py owner
|
|
```
|
|
|
|
Get token implementation address:
|
|
```bash
|
|
python3 tools/token_management/interactions.py implementation
|
|
```
|
|
|
|
Get balance (defaults to USER_ACCOUNT_ADDRESS from env):
|
|
```bash
|
|
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):
|
|
```bash
|
|
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):
|
|
```bash
|
|
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:
|
|
```bash
|
|
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:
|
|
```bash
|
|
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:
|
|
```bash
|
|
python3 tools/token_management/interactions.py approve 0xSpender 500
|
|
python3 tools/token_management/interactions.py approve 0xSpender 500 --private-key 0xYourPrivateKey
|
|
```
|
|
|
|
Transfer contract ownership:
|
|
```bash
|
|
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:
|
|
```bash
|
|
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:
|
|
```bash
|
|
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:
|
|
```bash
|
|
python3 tools/token_management/interactions.py --help
|
|
```
|