Files
smom-dbis-138/contracts/tokens/OfficialStableMirrorToken.sol
defiQUG 2a4753eb2d feat: restore operator WIP — PMM JSON sync entrypoint, dotenv RPC trim + secrets, pool env alignment
- Resolve stash: merge load_deployment_env path with secure-secrets and CR/LF RPC strip
- create-pmm-full-mesh-chain138.sh delegates to sync-chain138-pmm-pools-from-json.sh
- env.additions.example: canonical PMM pool defaults (cUSDT/USDT per crosscheck)
- Include Chain138 scripts, official mirror deploy scaffolding, and prior staged changes

Made-with: Cursor
2026-03-27 19:02:30 -07:00

41 lines
1.2 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
/**
* @title OfficialStableMirrorToken
* @notice Lightweight ERC-20 used as the local Chain 138 "official" stable mirror.
* @dev This token exists only to provide a live ERC-20 quote-side asset for local PMM pools.
* It is intentionally separate from the compliant token contracts.
*/
contract OfficialStableMirrorToken is ERC20, Ownable {
uint8 private immutable _decimalsStorage;
constructor(
string memory name_,
string memory symbol_,
uint8 decimals_,
address initialOwner,
uint256 initialSupply
) ERC20(name_, symbol_) Ownable(initialOwner) {
_decimalsStorage = decimals_;
if (initialSupply > 0) {
_mint(msg.sender, initialSupply);
}
}
function decimals() public view override returns (uint8) {
return _decimalsStorage;
}
function mint(address to, uint256 amount) external onlyOwner {
_mint(to, amount);
}
function burn(address from, uint256 amount) external onlyOwner {
_burn(from, amount);
}
}