ATOS Token β ERC-20 Smart Contract
ATOS Token is a production-ready, audit-standard ERC-20 token
built with OpenZeppelin contracts. It is the foundational smart
contract layer of the Autonomous Token Orchestration System (ATOS)
β a decentralized multi-agent platform built on libp2p principles.
Part of NSUT x SEETA x AIC initiative.
Feature
Description
β
ERC-20 Standard
Fully compliant ERC-20 token
β
Mintable
Role-based minting
β
Burnable
Token burning (user + admin)
β
Capped
Max supply of 2,000,000 ATOS
β
Pausable
Emergency pause/unpause
β
ERC20Permit
Gasless approvals (EIP-2612)
β
AccessControl
Multi-role permission system
β
Miner Rewards
Auto-reward block miners
β
Ownable
Contract ownership management
Property
Value
Name
ATOS
Symbol
ATOS
Decimals
18
Initial Supply
200,000 ATOS
Max Supply (Cap)
2,000,000 ATOS
Network
Sepolia Testnet
Standard
ERC-20
License
MIT
ποΈ Project Structure
ERC20-EXP/
βββ contracts/
β βββ ATOSToken.sol # Main ERC-20 contract
βββ ignition/
β βββ modules/
β βββ ATOSToken.ts # Hardhat Ignition deploy module
βββ scripts/
β βββ deploy.ts # Deploy script (alternative)
βββ test/
β βββ ATOSToken.test.ts # Unit tests
βββ hardhat.config.ts # Hardhat v3 configuration
βββ package.json
βββ .env.example
βββ README.md
π Roles & Access Control
Role
Capability
DEFAULT_ADMIN_ROLE
Manage all roles
MINTER_ROLE
Mint new tokens
BURNER_ROLE
Burn tokens from any address
PAUSER_ROLE
Pause and unpause transfers
All roles are assigned to the deployer at construction.
Roles can be granted or revoked via grantRole / revokeRole.
// contracts/ATOSToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^ 0.8.20 ;
import {ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol " ;
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol " ;
import {ERC20Burnable } from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol " ;
import {ERC20Capped } from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Capped.sol " ;
import {ERC20Pausable } from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol " ;
import {ERC20Permit } from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol " ;
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol " ;
contract ATOSToken is
ERC20 ,
Ownable ,
ERC20Burnable ,
ERC20Capped ,
ERC20Pausable ,
ERC20Permit ,
AccessControl
{
bytes32 public constant MINTER_ROLE = keccak256 ("MINTER_ROLE " );
bytes32 public constant BURNER_ROLE = keccak256 ("BURNER_ROLE " );
bytes32 public constant PAUSER_ROLE = keccak256 ("PAUSER_ROLE " );
// ... (see full contract in contracts/ATOSToken.sol)
}
Node.js >= 18
npm or yarn
MetaMask wallet
Sepolia testnet ETH
# Clone the repository
git clone https://github.com/YOUR_USERNAME/ERC20-EXP.git
# Navigate to project
cd ERC20-EXP
# Install dependencies
npm install
# Set environment variables (Linux/Mac)
export SEPOLIA_RPC_URL=" https://sepolia.infura.io/v3/YOUR_KEY"
export SEPOLIA_PRIVATE_KEY=" 0xYOUR_PRIVATE_KEY"
# Windows (PowerShell)
setx SEPOLIA_RPC_URL " https://sepolia.infura.io/v3/YOUR_KEY"
setx SEPOLIA_PRIVATE_KEY " 0xYOUR_PRIVATE_KEY"
βοΈ Hardhat Configuration
// hardhat.config.ts
import hardhatToolboxMochaEthersPlugin from
"@nomicfoundation/hardhat-toolbox-mocha-ethers" ;
import { defineConfig } from "hardhat/config" ;
const SEPOLIA_RPC_URL = process . env . SEPOLIA_RPC_URL ?? "" ;
const SEPOLIA_PRIVATE_KEY = process . env . SEPOLIA_PRIVATE_KEY ?? "" ;
export default defineConfig ( {
plugins : [ hardhatToolboxMochaEthersPlugin ] ,
solidity : {
profiles : {
default : { version : "0.8.28" } ,
production : {
version : "0.8.28" ,
settings : {
optimizer : { enabled : true , runs : 200 } ,
} ,
} ,
} ,
} ,
networks : {
sepolia : {
type : "http" ,
chainType : "l1" ,
url : SEPOLIA_RPC_URL ,
accounts : SEPOLIA_PRIVATE_KEY ? [ SEPOLIA_PRIVATE_KEY ] : [ ] ,
} ,
} ,
} ) ;
# Compile contracts
npx hardhat compile
Using Hardhat Ignition (Recommended)
npx hardhat ignition deploy ignition/modules/ATOSToken.ts \
--network sepolia
cat ignition/deployments/chain-11155111/deployed_addresses.json
npx hardhat ignition verify chain-11155111
Or:
npx hardhat verify --network sepolia YOUR_CONTRACT_ADDRESS
π§ͺ Testing All Functions
Function
Expected Output
name()
ATOS
symbol()
ATOS
decimals()
18
totalSupply()
200000 Γ 10^18
cap()
2000000 Γ 10^18
paused()
false
owner()
deployer address
Function
Parameters
Result
mint
to, amount
Mints tokens
burn
amount
Burns caller's tokens
adminBurn
from, amount
Burns any address tokens
pauseContract
β
Pauses all transfers
unpause
β
Resumes transfers
transfer
to, amount
Transfers tokens
approve
spender, amount
Approves allowance
transferFrom
from, to, amount
Transfers on behalf
grantRole
role, account
Grants a role
revokeRole
role, account
Revokes a role
Property
Value
Network
Sepolia Testnet
Contract Address
0xYOUR_DEPLOYED_ADDRESS
Etherscan
View on Etherscan
Verified
β
Yes
Phase 1 β ERC-20 Smart Contract β
DONE
Phase 2 β Multi-Agent Framework π Next
Phase 3 β DEX Integration (Uniswap) π Planned
Phase 4 β PQC Integration π Planned
Phase 5 β IPLD + Multiformats π Planned
Phase 6 β CEX Preparation π Planned
Phase 7 β Dashboard π Planned
ποΈ Architecture Overview
βββββββββββββββββββββββββββββββββββββββββββ
β ATOS β Full System β
βββββββββββββββββββββββββββββββββββββββββββ€
β Smart Contract Layer (β
Done) β
β βββββββββββββββββββββββββββββββββββ β
β β ATOSToken.sol β β
β β ERC20 + Roles + Permit + Cap β β
β βββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββ€
β Multi-Agent Layer (π Next) β
β ββββββββ ββββββββ ββββββββ β
β βDeployβ β Liq β β Mon β β
β βAgent β βAgent β βAgent β β
β ββββββββ ββββββββ ββββββββ β
βββββββββββββββββββββββββββββββββββββββββββ€
β libp2p Network Layer β
β Peer Discovery + PubSub + Transport β
βββββββββββββββββββββββββββββββββββββββββββ€
β DEX Layer (Uniswap V3) β
β Liquidity Pools + Swaps β
βββββββββββββββββββββββββββββββββββββββββββ€
β Data Layer (IPLD + Multiformats) β
β Agent State + Task DAGs + Logs β
βββββββββββββββββββββββββββββββββββββββββββ
Technology
Purpose
Solidity 0.8.28
Smart contract language
Hardhat v3
Development environment
OpenZeppelin 5.x
Secure contract libraries
Hardhat Ignition
Deployment system
TypeScript
Scripting + config
Ethers.js
Blockchain interaction
Sepolia
Test network
Role
Organization
Developer
NSUT
Mentor
@seetadev
Mentor
@johannamoran
Mentor
@aspiringsecurity
Mentor
@yashksaini-coder
Mentor
@prithagupta
Mentor
@acul71
Fork the repository
Create your feature branch
git checkout -b feature/your-feature
Commit your changes
git commit -m " Add: your feature"
Push to the branch
git push origin feature/your-feature
Open a Pull Request
All roles use OpenZeppelin AccessControl
Contract is pausable in case of emergency
Cap prevents infinite minting
Never share your private key
Use hardware wallet for mainnet
This project is licensed under the MIT License .
Built with β€οΈ by NSUT x SEETA x AIC