Overview
This case study documents the complete technical architecture of the INRC ERC-20 smart contract deployed on Polygon Mainnet at address 0xe0B74D04706274Bc1B57b9a47E3e220D827834fc.
Technology Stack
- Language: Solidity 0.8.x
- Framework: OpenZeppelin Contracts v4.x
- IDE: Remix IDE + Hardhat for testing
- Network: Polygon (ChainID: 137)
- Verification: PolygonScan source verification
Contract Modules
ERC20: Base implementation providing the standard interface. All standard transfer, approval, and allowance functions are inherited with zero custom modification — ensuring maximum compatibility with all DeFi protocols.
ERC20Burnable: Adds burn() and burnFrom() functions. Any holder can permanently destroy their tokens. This reduces circulating supply over time, creating deflationary pressure.
Ownable: Single-owner access control. The deployer wallet is the initial owner. Owner-exclusive functions: pause/unpause. Minting is NOT an owner function — the supply was fixed at deployment.
Pausable: Allows the owner to freeze all transfers via pause(). Unpause() resumes normal operation. This emergency stop prevents losses during discovered vulnerabilities.
Deployment Process
- Contract written and unit tested on Polygon Mumbai testnet
- Gas estimation performed for deployment
- Deployed to Polygon Mainnet using Remix IDE
- Contract source code submitted to PolygonScan for verification
- Initial token supply minted to deployer wallet
- Liquidity provided to Uniswap V3 INRC/MATIC pool
Security Decisions
The decision to use OpenZeppelin over custom implementations was the most critical security choice. Custom ERC-20 implementations introduce attack surface — reentrancy, overflow, and access control bugs are common in custom code. OpenZeppelin's code has been audited by the industry's best security firms and used in protocols securing +.
Gas Optimization
Polygon's low gas costs mean gas optimization is less critical than on Ethereum, but we still followed best practices: using uint256 (not smaller uints), minimizing storage writes, and leveraging immutable variables where possible.
