{
 "ok": true,
 "product": "contract-powers",
 "chain": "base",
 "chainId": 8453,
 "address": "0x0b3e328455c4059eeb9e3f84b5543f74e24e7e1b",
 "type": "contract",
 "explorer": "https://basescan.org/address/0x0b3e328455c4059eeb9e3f84b5543f74e24e7e1b",
 "verified": true,
 "sourceLookupFailed": false,
 "name": "OptimismMintableERC20",
 "compiler": "v0.8.20+commit.a1b79de6",
 "license": null,
 "sourceLookup": "etherscan-v2",
 "proxy": {
  "isProxy": false,
  "pattern": null,
  "implementation": null,
  "implementationVerified": null,
  "evidence": []
 },
 "admin": {
  "owner": null,
  "source": null,
  "ownerType": null,
  "isContract": null,
  "note": "no owner()/getOwner()/admin() responded — access control may use roles (AccessControl) or be renounced"
 },
 "powers": [
  {
   "power": "burn_others",
   "confidence": "declared",
   "evidence": [
    {
     "sig": "burn(address,uint256)",
     "from": "abi"
    },
    {
     "selector": "0x9dc29fac",
     "sig": "burn(address,uint256)",
     "from": "bytecode-selector"
    }
   ]
  },
  {
   "power": "mint",
   "confidence": "declared",
   "evidence": [
    {
     "sig": "mint(address,uint256)",
     "from": "abi"
    },
    {
     "selector": "0x40c10f19",
     "sig": "mint(address,uint256)",
     "from": "bytecode-selector"
    }
   ]
  },
  {
   "power": "ownership",
   "confidence": "declared",
   "evidence": [
    {
     "sig": "renounceOwnership()",
     "from": "abi"
    },
    {
     "sig": "transferOwnership(address)",
     "from": "abi"
    },
    {
     "selector": "0xf2fde38b",
     "sig": "transferOwnership(address)",
     "from": "bytecode-selector"
    },
    {
     "selector": "0x715018a6",
     "sig": "renounceOwnership()",
     "from": "bytecode-selector"
    }
   ]
  }
 ],
 "bytecode": {
  "sizeBytes": 14849,
  "delegatecall": false,
  "selfdestruct": false,
  "create2": false,
  "knownSelectors": 76,
  "implementationSizeBytes": null
 },
 "bounty": {
  "covered": true,
  "match": "name-heuristic",
  "corpus": {
   "immunefi": 183,
   "cantina": 52
  },
  "note": "Matched the contract name against a corpus of live bug-bounty programs (Immunefi + Cantina). A name match is NOT proof this address is in scope — open the program page and check the asset list.",
  "programs": [
   {
    "platform": "immunefi",
    "project": "Optimism",
    "slug": "optimism",
    "maxBounty": 2000042,
    "kyc": true,
    "url": "https://immunefi.com/bug-bounty/optimism/information/",
    "matchedOn": "optimism"
   }
  ]
 },
 "coverage": {
  "checked": true,
  "method": "source-gate-scan",
  "functionsInAbi": 18,
  "classified": 4,
  "unclassifiedOwnerOnly": [
   {
    "name": "setDelegate",
    "sig": "setDelegate(address)",
    "gate": "onlyOwner",
    "from": "abi"
   },
   {
    "name": "setEnforcedOptions",
    "sig": "setEnforcedOptions(tuple[])",
    "gate": "onlyOwner",
    "from": "abi"
   },
   {
    "name": "setMsgInspector",
    "sig": "setMsgInspector(address)",
    "gate": "onlyOwner",
    "from": "abi"
   },
   {
    "name": "setPeer",
    "sig": "setPeer(uint32,bytes32)",
    "gate": "onlyOwner",
    "from": "abi"
   },
   {
    "name": "setPreCrime",
    "sig": "setPreCrime(address)",
    "gate": "onlyOwner",
    "from": "abi"
   }
  ],
  "count": 5,
  "state": "gaps-found",
  "note": "5 state-changing function(s) in the published interface are restricted to a privileged role in the source, but match none of this engine's power categories. They are listed in full below — the engine has no opinion on what they do, so read them yourself."
 },
 "summary": "retained powers: burn_others, mint, ownership; 5 further owner-only function(s) the engine could not categorise (listed under coverage)",
 "notAnAudit": "Facts read from chain state, bytecode and (where verified) the ABI. This is not a security audit, not a safety score, and not investment advice. Absence of a flag is not proof of absence.",
 "caveats": [
  "confidence=\"declared\" means the ABI exposes the function. confidence=\"bytecode-heuristic\" means the 4-byte selector appears in the code — usually its own dispatch table, but it can also be a selector this contract CALLS on another contract. Only a verified ABI settles it.",
  "admin.controller identifies a Safe-style multisig, an OZ timelock, or an owned admin contract by the functions it answers. A contract that answers none is reported as unknown-contract, not as safe.",
  "bounty.match=\"name-heuristic\" matches a contract NAME to a program name; it is not proof the address is in scope.",
  "coverage.unclassifiedOwnerOnly lists functions the source restricts to a privileged role but which match no power category here. It is read from the verified source by matching function name + argument count, so an overloaded or inherited function can be attributed imprecisely. When coverage.checked is false the engine could not read the source at all, and the power list must be treated as a floor."
 ],
 "latencyMs": 1833,
 "builtAt": "2026-09-19T10:06:30.504Z",
 "canonical": "https://agent.zbang.net/c/base/0x0b3e328455c4059eeb9e3f84b5543f74e24e7e1b/"
}