ETH Price: $1,978.72 (-5.23%)

Contract

0xA04fECDB4E07340d3856e685Da21f2D7986d37E2
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve217117902025-01-26 22:52:11404 days ago1737931931IN
0xA04fECDB...7986d37E2
0 ETH0.000283056.14018939
Approve217113562025-01-26 21:25:11404 days ago1737926711IN
0xA04fECDB...7986d37E2
0 ETH0.000244955.27922215
Transfer215530062025-01-04 18:48:23426 days ago1736016503IN
0xA04fECDB...7986d37E2
0 ETH0.000309879.06387366
Transfer215529622025-01-04 18:39:35426 days ago1736015975IN
0xA04fECDB...7986d37E2
0 ETH0.000365610.6976508

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
0x60806040215385722025-01-02 18:26:35428 days ago1735842395  Contract Creation0 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PrisonToken

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: WTFPL
/*

  _________________________
     ||   ||     ||   ||
     ||   ||, , ,||   ||
     ||  (||/|/(\||/  ||
     ||  ||| _'_`|||  ||
     ||   || o o ||   ||
     ||  (||  - `||)  ||
     ||   ||  =  ||   ||
     ||   ||\___/||   ||
     ||___||) , (||___||
    /||---||-\_/-||---||\
   / ||--_||_____||_--|| \
  (_(||)-| $PRISON |-(||)_)

  -------------------------

  DEV1 0xf798e420ee4e25e3e1
  ee72eca57fdc73d96f77ccae9
  87b9ba7af49b46d96fabf

  When we are slandered, we
  answer kindly. We have
  become the scum of the
  earth, the garbage of the
  world--right up to this
  moment.

  [1 Corinthians 4:13]

  -------------------------

  DEV2 0x11cfabfab712a63c52
  23153d7891ffea37dfb347c36
  f7e112365db6bffcd5e55

  I testify that there is
  no god but Allah ❤️

  -------------------------

  CODE IS LAW: If you find
  a bug and exploit it, we
  will not press charges.
  If you decide to share
  the bug with us (and not
  exploit), we will pay a
  10% bounty on the amount
  the exploit would get.

  Made with love in prison,
  on an iPhone 7. It was
  not easy lol.

  -------------------------

  THE SOFTWARE IS PROVIDED
  "AS IS", WITHOUT WARRANTY
  OF ANY KIND, EXPRESS OR
  IMPLIED, INCLUDING BUT
  NOT LIMITED TO THE
  WARRANTIES OF
  MERCHANTABILITY, FITNESS
  FOR A PARTICULAR PURPOSE
  AND NONINFRINGEMENT. IN
  NO EVENT SHALL THE
  AUTHORS BE LIABLE FOR ANY
  CLAIM, DAMAGES OR OTHER
  LIABILITY, WHETHER IN AN
  ACTION OF CONTRACT, TORT
  OR OTHERWISE, ARISING
  FROM, OUT OF OR IN
  CONNECTION WITH THE
  SOFTWARE OR THE USE OR
  OTHER DEALINGS IN THE
  SOFTWARE.

*/

pragma solidity 0.8.28;

contract PrisonToken {

  bytes32 constant _adminStorage = 0xf67be69b6ad25aabeffc62bd19264f3c30ad964894b5fc1e74e609a144194c7c;
  bytes32 constant _allowanceStorage = 0xadbae967d9c307f2be79145ccac3c7dd3b1756d4168dc78420e5df547cb90157;
  bytes32 constant _balanceStorage = 0x146464e727c9f4b5af3a01a7cb966c630adbd470f82d401ae9430ce338ff7845;
  bytes32 constant _chainIdStorage = 0xd5cae22d506e84df30c510c1b8256278721345fcf8d4be64743ee4aa81e12864;
  bytes32 constant _domainSeperatorStorage = 0x3027cd467a8723dc03f0378c9f873197ce7c4fbb7bf54996a65245113e26d96d;
  bytes32 constant _nonceStorage = 0x4f77ee05ca2adc851fd5746b7fb0ecd7626242920d991bf3b91859dec213863a;
  bytes32 constant _supplyStorage = 0x6f385d8cb4190bdec0329fe907465553e5e421c9e47a5bce58d69c33100ac473;

  modifier admin() {
    _onlyAdmin(msg.sender);
    _;
  }

  fallback() external payable {
    assembly ("memory-safe") {
      revert(0, 0)
    }
  }

  receive() external payable {
    assembly ("memory-safe") {
      revert(0, 0)
    }
  }

  constructor() {
    assembly ("memory-safe") {
      sstore(_chainIdStorage, chainid())
      let ptr := mload(0x40)
      mstore(0x40, add(ptr, 0xA0))
      mstore(ptr, 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f)
      mstore(add(ptr, 0x20), 0x1af0097cc103f3ba97f08c6bac2006fc42563cdbe9668c6d534c6be342fbc80d)
      mstore(add(ptr, 0x40), 0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6)
      mstore(add(ptr, 0x60), chainid())
      mstore(add(ptr, 0x80), address())
      let typeHash := keccak256(ptr, 0xA0)
      sstore(_domainSeperatorStorage, typeHash)
    }
  }

  function allowance(address _owner, address _spender) external view returns (uint256 _remaining) {
    assembly ("memory-safe") {
      let ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x60))
      mstore(ptr, _allowanceStorage)
      mstore(add(ptr, 0x20), _owner)
      mstore(add(ptr, 0x40), _spender)
      let slot := sub(keccak256(ptr, 0x60), 0x01)
      _remaining := sload(slot)
    }
  }

  function balanceOf(address _owner) external view returns (uint256) {
    assembly ("memory-safe") {
      let ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x60))
      mstore(ptr, _balanceStorage)
      mstore(add(ptr, 0x20), _owner)
      let slot := sub(keccak256(ptr, 0x40), 0x01)
      mstore(add(ptr, 0x40), sload(slot))
      return(add(ptr, 0x40), 0x20)
    }
  }

  function decimals() external pure returns (uint8) {
    assembly ("memory-safe") {
      let ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x20))
      mstore(ptr, 0x12)
      return(ptr, 0x20)
    }
  }

  function DOMAIN_SEPARATOR() external view returns (bytes32 domainSeperator) {
    assembly ("memory-safe") {
      let ptr := mload(0x40)
      mstore(0x40, add(ptr, 0xA0))
      mstore(ptr, 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f)
      mstore(add(ptr, 0x20), 0x1af0097cc103f3ba97f08c6bac2006fc42563cdbe9668c6d534c6be342fbc80d)
      mstore(add(ptr, 0x40), 0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6)
      mstore(add(ptr, 0x60), chainid())
      mstore(add(ptr, 0x80), address())
      domainSeperator := keccak256(ptr, 0xA0)
    }
  }

  function eip712Domain()
    external
    view
    returns (
      bytes1 fields,
      string memory domainName,
      string memory domainVersion,
      uint256 chainId,
      address verifyingContract,
      bytes32 salt,
      uint256[] memory extensions
    )
  {
    return (0x0F, "Prison Token", "1", block.chainid, address(this), bytes32(0), new uint256[](0));
  }

  function getAdmin() external view returns (address _account) {
    assembly ("memory-safe") {
      _account := sload(_adminStorage)
    }
  }

  function name() external pure returns (string memory) {
    assembly ("memory-safe") {
      let ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x60))
      mstore(ptr, 0x20)
      mstore(add(ptr, 0x20), 0x0c)
      mstore(add(ptr, 0x40), "Prison Token")
      return(ptr, 0x60)
    }
  }

  function nonces(address account) external view returns (uint256 nonce) {
    assembly ("memory-safe") {
      let ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x40))
      mstore(ptr, _nonceStorage)
      mstore(add(ptr, 0x20), account)
      let slot := sub(keccak256(ptr, 0x40), 0x01)
      nonce := sload(slot)
    }
  }

  function supportsInterface(bytes4 _id) external pure returns (bool _success) {
    assembly ("memory-safe") {
      switch _id
        case 0x01ffc9a7 {
          _success := true
        }
        case 0x36372b07 {
          _success := true
        }
        case 0x313ce567 {
          _success := true
        }
        case 0x06fdde03 {
          _success := true
        }
        case 0x95d89b41 {
          _success := true
        }
        case 0x39509351 {
          _success := true
        }
        case 0xa457c2d7 {
          _success := true
        }
        case 0x42966c68 {
          _success := true
        }
        case 0x79cc6790 {
          _success := true
        }
        case 0x9d8ff7da {
          _success := true
        }
        case 0x3644e515 {
          _success := true
        }
        case 0x7ecebe00 {
          _success := true
        }
        case 0xd505accf {
          _success := true
        }
        case 0xffffffff {
          _success := false
        }
        default {
          _success := false
        }
    }
  }

  function symbol() external pure returns (string memory) {
    assembly ("memory-safe") {
      let ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x60))
      mstore(ptr, 0x20)
      mstore(add(ptr, 0x20), 0x06)
      mstore(add(ptr, 0x40), "PRISON")
      return(ptr, 0x60)
    }
  }

  function totalSupply() external view returns (uint256) {
    assembly ("memory-safe") {
      let ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x20))
      mstore(ptr, sload(_supplyStorage))
      return(ptr, 0x20)
    }
  }

  function approve(address _spender, uint256 _value) external returns (bool _success) {
    assembly ("memory-safe") {
      let ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x80))
      mstore(ptr, _allowanceStorage)
      mstore(add(ptr, 0x20), caller())
      mstore(add(ptr, 0x40), _spender)
      let slot := sub(keccak256(ptr, 0x60), 0x01)
      sstore(slot, _value)
      mstore(add(ptr, 0x60), _value)
      log3(add(ptr, 0x60), 0x20, 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925, caller(), _spender)
      _success := true
    }
  }

  function burn(uint256 _value) external returns (bool _success) {
    assembly ("memory-safe") {
      let ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x40))
      mstore(ptr, _balanceStorage)
      mstore(add(ptr, 0x20), caller())
      let slot := sub(keccak256(ptr, 0x40), 0x01)
      let _balance := sload(slot)
      if gt(_value, _balance) {
        ptr := mload(0x40)
        mstore(0x40, add(ptr, 0x64))
        mstore(ptr, 0x08c379a000000000000000000000000000000000000000000000000000000000)
        mstore(add(ptr, 0x04), 0x20)
        mstore(add(ptr, 0x24), 0x1a)
        mstore(add(ptr, 0x44), "PR1S0N: not enough balance")
        revert(ptr, 0x64)
      }
      sstore(slot, sub(_balance, _value))
      let _supply := sload(_supplyStorage)
      sstore(_supplyStorage, sub(_supply, _value))
      ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x20))
      mstore(ptr, _value)
      log3(
        ptr,
        0x20,
        0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef,
        caller(),
        0x0000000000000000000000000000000000000000
      )
      _success := true
    }
  }

  function burnFrom(address _from, uint256 _value) external returns (bool _success) {
    assembly ("memory-safe") {
      let ptr
      let slot
      switch eq(caller(), _from)
      case 0 {
        ptr := mload(0x40)
        mstore(0x40, add(ptr, 0x60))
        mstore(ptr, _allowanceStorage)
        mstore(add(ptr, 0x20), caller())
        mstore(add(ptr, 0x40), _from)
        slot := sub(keccak256(ptr, 0x60), 0x01)
        let _allowance := sload(slot)
        if gt(_value, _allowance) {
          ptr := mload(0x40)
          mstore(0x40, add(ptr, 0x64))
          mstore(ptr, 0x08c379a000000000000000000000000000000000000000000000000000000000)
          mstore(add(ptr, 0x04), 0x20)
          mstore(add(ptr, 0x24), 0x1c)
          mstore(add(ptr, 0x44), "PR1S0N: not enough allowance")
          revert(ptr, 0x64)
        }
        if gt(0x8000000000000000000000000000000000000000000000000000000000000000, _allowance) {
          sstore(slot, sub(_allowance, _value))
        }
      }
      case 1 {}
      ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x40))
      mstore(ptr, _balanceStorage)
      mstore(add(ptr, 0x20), _from)
      slot := sub(keccak256(ptr, 0x40), 0x01)
      let _balance := sload(slot)
      if gt(_value, _balance) {
        ptr := mload(0x40)
        mstore(0x40, add(ptr, 0x64))
        mstore(ptr, 0x08c379a000000000000000000000000000000000000000000000000000000000)
        mstore(add(ptr, 0x04), 0x20)
        mstore(add(ptr, 0x24), 0x1a)
        mstore(add(ptr, 0x44), "PR1S0N: not enough balance")
        revert(ptr, 0x64)
      }
      sstore(slot, sub(_balance, _value))
      let _supply := sload(_supplyStorage)
      sstore(_supplyStorage, sub(_supply, _value))
      ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x20))
      mstore(ptr, _value)
      log3(
        ptr,
        0x20,
        0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef,
        _from,
        0x0000000000000000000000000000000000000000
      )
      _success := true
    }
  }

  function decreaseAllowance(address _spender, uint256 _subtractedValue) external returns (bool _success) {
    assembly ("memory-safe") {
      let ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x80))
      mstore(ptr, _allowanceStorage)
      mstore(add(ptr, 0x20), caller())
      mstore(add(ptr, 0x40), _spender)
      let slot := sub(keccak256(ptr, 0x60), 0x01)
      let _value := sload(slot)
      if gt(0x8000000000000000000000000000000000000000000000000000000000000000, _value) {
        let _newValue := sub(_value, _subtractedValue)
        if gt(_newValue, _value) {
          ptr := mload(0x40)
          mstore(0x40, add(ptr, 0x64))
          mstore(ptr, 0x08c379a000000000000000000000000000000000000000000000000000000000)
          mstore(add(ptr, 0x04), 0x20)
          mstore(add(ptr, 0x24), 0x18)
          mstore(add(ptr, 0x44), "PR1S0N: numeric overflow")
          revert(ptr, 0x64)
        }
        sstore(slot, _newValue)
        mstore(add(ptr, 0x60), _newValue)
        log3(add(ptr, 0x60), 0x20, 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925, caller(), _spender)
      }
      _success := true
    }
  }

  function increaseAllowance(address _spender, uint256 _addedValue) external returns (bool _success) {
    assembly ("memory-safe") {
      let ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x80))
      mstore(ptr, _allowanceStorage)
      mstore(add(ptr, 0x20), caller())
      mstore(add(ptr, 0x40), _spender)
      let slot := sub(keccak256(ptr, 0x60), 0x01)
      let _value := sload(slot)
      let _newValue := add(_value, _addedValue)
      if gt(_value, _newValue) {
        ptr := mload(0x40)
        mstore(0x40, add(ptr, 0x64))
        mstore(ptr, 0x08c379a000000000000000000000000000000000000000000000000000000000)
        mstore(add(ptr, 0x04), 0x20)
        mstore(add(ptr, 0x24), 0x18)
        mstore(add(ptr, 0x44), "PR1S0N: numeric overflow")
        revert(ptr, 0x64)
      }
      sstore(slot, _newValue)
      mstore(add(ptr, 0x60), _newValue)
      log3(add(ptr, 0x60), 0x20, 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925, caller(), _spender)
      _success := true
    }
  }

  function mint(address _to, uint256 _value) external admin returns (bool _success) {
    assembly ("memory-safe") {
      let ptr
      let _supply := sload(_supplyStorage)
      if gt(add(_supply, _value), 0xC9F2C9CD04674EDEA40000000) {
        ptr := mload(0x40)
        mstore(0x40, add(ptr, 0x64))
        mstore(ptr, 0x08c379a000000000000000000000000000000000000000000000000000000000)
        mstore(add(ptr, 0x04), 0x20)
        mstore(add(ptr, 0x24), 0x19)
        mstore(add(ptr, 0x44), "PR1S0N: 1 trillion limit")
        revert(ptr, 0x64)
      }
      sstore(_supplyStorage, add(_supply, _value))
      ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x40))
      mstore(ptr, _balanceStorage)
      mstore(add(ptr, 0x20), _to)
      let slot := sub(keccak256(ptr, 0x40), 0x01)
      let _balance := sload(slot)
      sstore(slot, add(_balance, _value))
      ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x20))
      mstore(ptr, _value)
      log3(
        ptr,
        0x20,
        0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef,
        0x0000000000000000000000000000000000000000,
        _to
      )
      _success := true
    }
  }

  function permit(
    address owner,
    address spender,
    uint256 value,
    uint256 deadline,
    uint8 v,
    bytes32 r,
    bytes32 s
  ) external {
    assembly ("memory-safe") {
      let ptr
      let slot
      if gt(timestamp(), deadline) {
        ptr := mload(0x40)
        mstore(0x40, add(ptr, 0x64))
        mstore(ptr, 0x08c379a000000000000000000000000000000000000000000000000000000000)
        mstore(add(ptr, 0x04), 0x20)
        mstore(add(ptr, 0x24), 0x1b)
        mstore(add(ptr, 0x44), "ERC2612: expired signature")
        revert(ptr, 0x64)
      }
      let domainSeperator := sload(_domainSeperatorStorage)
      switch eq(chainid(), sload(_chainIdStorage))
      case 1 {}
      case 0 {
        ptr := mload(0x40)
        mstore(0x40, add(ptr, 0xA0))
        mstore(ptr, 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f)
        mstore(add(ptr, 0x20), 0x1af0097cc103f3ba97f08c6bac2006fc42563cdbe9668c6d534c6be342fbc80d)
        mstore(add(ptr, 0x40), 0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6)
        mstore(add(ptr, 0x60), chainid())
        mstore(add(ptr, 0x80), address())
        domainSeperator := keccak256(ptr, 0xA0)
        sstore(_domainSeperatorStorage, domainSeperator)
      }
      ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x40))
      mstore(ptr, _nonceStorage)
      mstore(add(ptr, 0x20), owner)
      slot := sub(keccak256(ptr, 0x40), 0x01)
      let nonce := sload(slot)
      sstore(slot, add(nonce, 0x01))
      ptr := mload(0x40)
      mstore(0x40, add(ptr, 0xC0))
      mstore(ptr, 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9)
      mstore(add(ptr, 0x20), owner)
      mstore(add(ptr, 0x40), spender)
      mstore(add(ptr, 0x60), value)
      mstore(add(ptr, 0x80), nonce)
      mstore(add(ptr, 0xA0), deadline)
      let structHash := keccak256(ptr, 0xC0)
      ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x42))
      mstore(ptr, 0x1901000000000000000000000000000000000000000000000000000000000000)
      mstore(add(ptr, 0x02), domainSeperator)
      mstore(add(ptr, 0x22), structHash)
      let hash := keccak256(ptr, 0x42)
      if gt(s, 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
        ptr := mload(0x40)
        mstore(0x40, add(ptr, 0x64))
        mstore(ptr, 0x08c379a000000000000000000000000000000000000000000000000000000000)
        mstore(add(ptr, 0x04), 0x20)
        mstore(add(ptr, 0x24), 0x1b)
        mstore(add(ptr, 0x44), "ERC2612: invalid signature s")
        revert(ptr, 0x64)
      }
      ptr := mload(0x40)
      mstore(0x40, add(ptr, 0xA0))
      mstore(ptr, hash)
      mstore(add(ptr, 0x20), v)
      mstore(add(ptr, 0x40), r)
      mstore(add(ptr, 0x60), s)
      let result := staticcall(gas(), 0x01, ptr, 0x80, add(ptr, 0x80), 0x20)
      if iszero(result) {
        revert(0, 0)
      }
      let signer := mload(add(ptr, 0x80))
      switch eq(signer, owner)
      case 1 {
        if iszero(signer) {
          ptr := mload(0x40)
          mstore(0x40, add(ptr, 0x64))
          mstore(ptr, 0x08c379a000000000000000000000000000000000000000000000000000000000)
          mstore(add(ptr, 0x04), 0x20)
          mstore(add(ptr, 0x24), 0x1b)
          mstore(add(ptr, 0x44), "ERC2612: invalid signature")
          revert(ptr, 0x64)
        }
      }
      case 0 {
        ptr := mload(0x40)
        mstore(0x40, add(ptr, 0x64))
        mstore(ptr, 0x08c379a000000000000000000000000000000000000000000000000000000000)
        mstore(add(ptr, 0x04), 0x20)
        mstore(add(ptr, 0x24), 0x1b)
        mstore(add(ptr, 0x44), "ERC2612: invalid signer")
        revert(ptr, 0x64)
      }
      ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x80))
      mstore(ptr, _allowanceStorage)
      mstore(add(ptr, 0x20), owner)
      mstore(add(ptr, 0x40), spender)
      slot := sub(keccak256(ptr, 0x60), 0x01)
      sstore(slot, value)
      mstore(add(ptr, 0x60), value)
      log3(add(ptr, 0x60), 0x20, 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925, owner, spender)
    }
  }

  function setAdmin(address _account) external admin {
    assembly ("memory-safe") {
      sstore(_adminStorage, _account)
    }
  }

  function transfer(address _to, uint256 _value) external returns (bool _success) {
    assembly ("memory-safe") {
      let ptr
      if iszero(_to) {
        ptr := mload(0x40)
        mstore(0x40, add(ptr, 0x64))
        mstore(ptr, 0x08c379a000000000000000000000000000000000000000000000000000000000)
        mstore(add(ptr, 0x04), 0x20)
        mstore(add(ptr, 0x24), 0x19)
        mstore(add(ptr, 0x44), "PR1S0N: use burn function")
        revert(ptr, 0x64)
      }
      ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x40))
      mstore(ptr, _balanceStorage)
      mstore(add(ptr, 0x20), caller())
      let slot := sub(keccak256(ptr, 0x40), 0x01)
      let _balance := sload(slot)
      if gt(_value, _balance) {
        ptr := mload(0x40)
        mstore(0x40, add(ptr, 0x64))
        mstore(ptr, 0x08c379a000000000000000000000000000000000000000000000000000000000)
        mstore(add(ptr, 0x04), 0x20)
        mstore(add(ptr, 0x24), 0x1a)
        mstore(add(ptr, 0x44), "PR1S0N: not enough balance")
        revert(ptr, 0x64)
      }
      sstore(slot, sub(_balance, _value))
      ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x60))
      mstore(ptr, _balanceStorage)
      mstore(add(ptr, 0x20), _to)
      slot := sub(keccak256(ptr, 0x40), 0x01)
      _balance := sload(slot)
      sstore(slot, add(_balance, _value))
      mstore(add(ptr, 0x40), _value)
      log3(add(ptr, 0x40), 0x20, 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, caller(), _to)
      _success := true
    }
  }

  function transferFrom(address _from, address _to, uint256 _value) external returns (bool _success) {
    assembly ("memory-safe") {
      let ptr
      if iszero(_to) {
        ptr := mload(0x40)
        mstore(0x40, add(ptr, 0x64))
        mstore(ptr, 0x08c379a000000000000000000000000000000000000000000000000000000000)
        mstore(add(ptr, 0x04), 0x20)
        mstore(add(ptr, 0x24), 0x19)
        mstore(add(ptr, 0x44), "PR1S0N: use burn function")
        revert(ptr, 0x64)
      }
      let slot
      switch eq(caller(), _from)
      case 0 {
        ptr := mload(0x40)
        mstore(0x40, add(ptr, 0x60))
        mstore(ptr, _allowanceStorage)
        mstore(add(ptr, 0x20), _from)
        mstore(add(ptr, 0x40), caller())
        slot := sub(keccak256(ptr, 0x60), 0x01)
        let _allowance := sload(slot)
        if gt(_value, _allowance) {
          ptr := mload(0x40)
          mstore(0x40, add(ptr, 0x64))
          mstore(ptr, 0x08c379a000000000000000000000000000000000000000000000000000000000)
          mstore(add(ptr, 0x04), 0x20)
          mstore(add(ptr, 0x24), 0x1c)
          mstore(add(ptr, 0x44), "PR1S0N: not enough allowance")
          revert(ptr, 0x64)
        }
        if gt(0x8000000000000000000000000000000000000000000000000000000000000000, _allowance) {
          sstore(slot, sub(_allowance, _value))
        }
      }
      case 1 {}
      ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x40))
      mstore(ptr, _balanceStorage)
      mstore(add(ptr, 0x20), _from)
      slot := sub(keccak256(ptr, 0x40), 0x01)
      let _balance := sload(slot)
      if gt(_value, _balance) {
        ptr := mload(0x40)
        mstore(0x40, add(ptr, 0x64))
        mstore(ptr, 0x08c379a000000000000000000000000000000000000000000000000000000000)
        mstore(add(ptr, 0x04), 0x20)
        mstore(add(ptr, 0x24), 0x1a)
        mstore(add(ptr, 0x44), "PR1S0N: not enough balance")
        revert(ptr, 0x64)
      }
      sstore(slot, sub(_balance, _value))
      ptr := mload(0x40)
      mstore(0x40, add(ptr, 0x60))
      mstore(ptr, _balanceStorage)
      mstore(add(ptr, 0x20), _to)
      slot := sub(keccak256(ptr, 0x40), 0x01)
      _balance := sload(slot)
      sstore(slot, add(_balance, _value))
      mstore(add(ptr, 0x40), _value)
      log3(add(ptr, 0x40), 0x20, 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, _from, _to)
      _success := true
    }
  }

  function _onlyAdmin(address _account) internal view {
    assembly ("memory-safe") {
      let _admin := sload(_adminStorage)
      let _found := 0
      switch eq(_admin, _account)
      case 1 {
        _found := 1
      }
      case 0 {
        if eq(_admin, 0x0000000000000000000000000000000000000000) {
          _found := 1
        }
      }
      switch _found
      case 1 {}
      case 0 {
        let ptr := mload(0x40)
        mstore(0x40, add(ptr, 0x64))
        mstore(ptr, 0x08c379a000000000000000000000000000000000000000000000000000000000)
        mstore(add(ptr, 0x04), 0x20)
        mstore(add(ptr, 0x24), 0x1b)
        mstore(add(ptr, 0x44), "PR1S0N: admin only function")
        revert(ptr, 0x64)
      }
    }
  }

}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 999999
  },
  "metadata": {
    "bytecodeHash": "none",
    "useLiteralContent": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "remappings": [
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "erc721a-upgradeable/=erc721a-upgradeable/",
    "forge-std/=lib/forge-std/src/"
  ],
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"domainSeperator","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"_remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burnFrom","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"domainName","type":"string"},{"internalType":"string","name":"domainVersion","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAdmin","outputs":[{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_id","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052348015600e575f5ffd5b50467fd5cae22d506e84df30c510c1b8256278721345fcf8d4be64743ee4aa81e128645560405160a081016040527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f1af0097cc103f3ba97f08c6bac2006fc42563cdbe9668c6d534c6be342fbc80d60208201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6604082015246606082015230608082015260a081209050807f3027cd467a8723dc03f0378c9f873197ce7c4fbb7bf54996a65245113e26d96d5550611c59806100ee5f395ff3fe608060405260043610610162575f3560e01c80636e9960c3116100c657806384b0196e1161007c578063a9059cbb11610057578063a9059cbb146104ba578063d505accf146104d9578063dd62ed3e146104f8575f5ffd5b806384b0196e1461046057806395d89b4114610487578063a457c2d71461049b575f5ffd5b806370a08231116100ac57806370a08231146103ac57806379cc6790146103cb5780637ecebe00146103ea575f5ffd5b80636e9960c314610338578063704b6c021461038b575f5ffd5b8063313ce5671161011b578063395093511161010157806339509351146102db57806340c10f19146102fa57806342966c6814610319575f5ffd5b8063313ce5671461021b5780633644e51514610241575f5ffd5b8063095ea7b31161014b578063095ea7b3146101bb57806318160ddd146101da57806323b872dd146101fc575f5ffd5b806301ffc9a71461016657806306fdde031461019a575b5f5ffd5b348015610171575f5ffd5b50610185610180366004611991565b610576565b60405190151581526020015b60405180910390f35b3480156101a5575f5ffd5b506101ae61062d565b6040516101919190611a23565b3480156101c6575f5ffd5b506101856101d5366004611a5d565b61066f565b3480156101e5575f5ffd5b506101ee6106ee565b604051908152602001610191565b348015610207575f5ffd5b50610185610216366004611a85565b610722565b348015610226575f5ffd5b5061022f6109df565b60405160ff9091168152602001610191565b34801561024c575f5ffd5b506040805160a080820183527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f1af0097cc103f3ba97f08c6bac2006fc42563cdbe9668c6d534c6be342fbc80d60208301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc692820192909252466060820152306080820152206101ee565b3480156102e6575f5ffd5b506101856102f5366004611a5d565b6109f3565b348015610305575f5ffd5b50610185610314366004611a5d565b610ae9565b348015610324575f5ffd5b50610185610333366004611abf565b610c57565b348015610343575f5ffd5b507ff67be69b6ad25aabeffc62bd19264f3c30ad964894b5fc1e74e609a144194c7c5460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b348015610396575f5ffd5b506103aa6103a5366004611ad6565b610d92565b005b3480156103b7575f5ffd5b506101ee6103c6366004611ad6565b610dbf565b3480156103d6575f5ffd5b506101856103e5366004611a5d565b610e0a565b3480156103f5575f5ffd5b506101ee610404366004611ad6565b6040805180820182527f4f77ee05ca2adc851fd5746b7fb0ecd7626242920d991bf3b91859dec213863a8152602081019290925290207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015490565b34801561046b575f5ffd5b50610474611049565b6040516101919796959493929190611aef565b348015610492575f5ffd5b506101ae611103565b3480156104a6575f5ffd5b506101856104b5366004611a5d565b611145565b3480156104c5575f5ffd5b506101856104d4366004611a5d565b611264565b3480156104e4575f5ffd5b506103aa6104f3366004611bae565b611420565b348015610503575f5ffd5b506101ee610512366004611c1b565b60408051606080820183527fadbae967d9c307f2be79145ccac3c7dd3b1756d4168dc78420e5df547cb901578252602082019490945290810191909152207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015490565b5f816301ffc9a7811461061a576336372b07811461061a5763313ce567811461061a576306fdde03811461061a576395d89b41811461061a576339509351811461061a5763a457c2d7811461061a576342966c68811461061a576379cc6790811461061a57639d8ff7da811461061a57633644e515811461061a57637ecebe00811461061a5763d505accf811461061a5763ffffffff8114610623575f9150610627565b60019150610627565b5f91505b50919050565b60606040516060810160405260208152600c60208201527f507269736f6e20546f6b656e00000000000000000000000000000000000000006040820152606081f35b5f604051608081016040527fadbae967d9c307f2be79145ccac3c7dd3b1756d4168dc78420e5df547cb901578152336020820152836040820152600160608220038381555082606082015283337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a35060019392505050565b5f604051602081016040527f6f385d8cb4190bdec0329fe907465553e5e421c9e47a5bce58d69c33100ac473548152602081f35b5f5f83610791576040519050606481016040527f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f50523153304e3a20757365206275726e2066756e6374696f6e000000000000006044820152606481fd5b5f33861480156107a8576001811461088e5761088e565b6040519250606083016040527fadbae967d9c307f2be79145ccac3c7dd3b1756d4168dc78420e5df547cb90157835286602084015233604084015260016060842003915081548086111561085e576040519350606484016040527f08c379a000000000000000000000000000000000000000000000000000000000845260206004850152601c60248501527f50523153304e3a206e6f7420656e6f75676820616c6c6f77616e6365000000006044850152606484fd5b807f8000000000000000000000000000000000000000000000000000000000000000111561088c5785810383555b505b506040519150604082016040527f146464e727c9f4b5af3a01a7cb966c630adbd470f82d401ae9430ce338ff7845825285602083015260016040832003905080548085111561093f576040519250606483016040527f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152601a60248401527f50523153304e3a206e6f7420656e6f7567682062616c616e63650000000000006044840152606483fd5b849003905550604080516060810182527f146464e727c9f4b5af3a01a7cb966c630adbd470f82d401ae9430ce338ff7845815260208082018690528282207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018054860190559181018481529091859187917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a3506001949350505050565b5f6040516020810160405260128152602081f35b5f604051608081016040527fadbae967d9c307f2be79145ccac3c7dd3b1756d4168dc78420e5df547cb90157815233602082015283604082015260016060822003805484810180821115610aa9576040519350606484016040527f08c379a000000000000000000000000000000000000000000000000000000000845260206004850152601860248501527f50523153304e3a206e756d65726963206f766572666c6f7700000000000000006044850152606484fd5b80835580606085015250505083337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a35060019392505050565b5f610af3336118bd565b5f7f6f385d8cb4190bdec0329fe907465553e5e421c9e47a5bce58d69c33100ac473546c0c9f2c9cd04674edea400000008482011115610b95576040519150606482016040527f08c379a000000000000000000000000000000000000000000000000000000000825260206004830152601960248301527f50523153304e3a2031207472696c6c696f6e206c696d697400000000000000006044830152606482fd5b83017f6f385d8cb4190bdec0329fe907465553e5e421c9e47a5bce58d69c33100ac47355506040805180820182527f146464e727c9f4b5af3a01a7cb966c630adbd470f82d401ae9430ce338ff784581526020808201869052908290207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01805485019055815180820190925283825284905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084a35060019392505050565b5f604051604081016040527f146464e727c9f4b5af3a01a7cb966c630adbd470f82d401ae9430ce338ff7845815233602082015260016040822003805480851115610d04576040519250606483016040527f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152601a60248401527f50523153304e3a206e6f7420656e6f7567682062616c616e63650000000000006044840152606483fd5b848103825550507f6f385d8cb4190bdec0329fe907465553e5e421c9e47a5bce58d69c33100ac473548381037f6f385d8cb4190bdec0329fe907465553e5e421c9e47a5bce58d69c33100ac47355506040519050602081016040528281525f337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602084a350600192915050565b610d9b336118bd565b7ff67be69b6ad25aabeffc62bd19264f3c30ad964894b5fc1e74e609a144194c7c55565b5f604051606081016040527f146464e727c9f4b5af3a01a7cb966c630adbd470f82d401ae9430ce338ff78458152826020820152600160408220038054604083015250602060408201f35b5f80803385148015610e235760018114610f0957610f09565b6040519250606083016040527fadbae967d9c307f2be79145ccac3c7dd3b1756d4168dc78420e5df547cb901578352336020840152856040840152600160608420039150815480861115610ed9576040519350606484016040527f08c379a000000000000000000000000000000000000000000000000000000000845260206004850152601c60248501527f50523153304e3a206e6f7420656e6f75676820616c6c6f77616e6365000000006044850152606484fd5b807f80000000000000000000000000000000000000000000000000000000000000001115610f075785810383555b505b506040519150604082016040527f146464e727c9f4b5af3a01a7cb966c630adbd470f82d401ae9430ce338ff78458252846020830152600160408320039050805480851115610fba576040519250606483016040527f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152601a60248401527f50523153304e3a206e6f7420656e6f7567682062616c616e63650000000000006044840152606483fd5b848103825550507f6f385d8cb4190bdec0329fe907465553e5e421c9e47a5bce58d69c33100ac473548381037f6f385d8cb4190bdec0329fe907465553e5e421c9e47a5bce58d69c33100ac47355506040519050602081016040528281525f847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602084a35060019392505050565b5f60608082808083600f46308480604051908082528060200260200182016040528015611080578160200160208202803683370190505b50604080518082018252600c81527f507269736f6e20546f6b656e00000000000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015260f89690961b9d959c509a50929850909650945092509050565b60606040516060810160405260208152600660208201527f505249534f4e00000000000000000000000000000000000000000000000000006040820152606081f35b5f604051608081016040527fadbae967d9c307f2be79145ccac3c7dd3b1756d4168dc78420e5df547cb901578152336020820152836040820152600160608220038054807f800000000000000000000000000000000000000000000000000000000000000011156112585784810381811115611223576040519350606484016040527f08c379a000000000000000000000000000000000000000000000000000000000845260206004850152601860248501527f50523153304e3a206e756d65726963206f766572666c6f7700000000000000006044850152606484fd5b8083558060608501525085337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608701a35b50600195945050505050565b5f5f836112d3576040519050606481016040527f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f50523153304e3a20757365206275726e2066756e6374696f6e000000000000006044820152606481fd5b6040519050604081016040527f146464e727c9f4b5af3a01a7cb966c630adbd470f82d401ae9430ce338ff7845815233602082015260016040822003805480851115611381576040519250606483016040527f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152601a60248401527f50523153304e3a206e6f7420656e6f7567682062616c616e63650000000000006044840152606483fd5b849003905550604080516060810182527f146464e727c9f4b5af3a01a7cb966c630adbd470f82d401ae9430ce338ff7845815260208082018690528282207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018054860190559181018481529091859133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a35060019392505050565b5f5f85421115611492576040519150606482016040527f08c379a000000000000000000000000000000000000000000000000000000000825260206004830152601b60248301527f455243323631323a2065787069726564207369676e61747572650000000000006044830152606482fd5b7f3027cd467a8723dc03f0378c9f873197ce7c4fbb7bf54996a65245113e26d96d547fd5cae22d506e84df30c510c1b8256278721345fcf8d4be64743ee4aa81e12864544614600181146114eb5780156114f0576115a1565b6115a1565b604051935060a084016040527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84527f1af0097cc103f3ba97f08c6bac2006fc42563cdbe9668c6d534c6be342fbc80d60208501527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6604085015246606085015230608085015260a084209150817f3027cd467a8723dc03f0378c9f873197ce7c4fbb7bf54996a65245113e26d96d555b506040519250604083016040527f4f77ee05ca2adc851fd5746b7fb0ecd7626242920d991bf3b91859dec213863a83528960208401526001604084200391508154600181018355604051935060c084016040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a6020850152896040850152886060850152806080850152508660a084015260c083206040519350604284016040527f190100000000000000000000000000000000000000000000000000000000000084528160028501528060228501525050604282207f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561170b576040519250606483016040527f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152601b60248401527f455243323631323a20696e76616c6964207369676e61747572652073000000006044840152606483fd5b604051925060a083016040528083525084602083015283604083015282606083015260206080830160808460015afa80611743575f5ffd5b5060808201518981146001811461175f5780156117d157611839565b816117cc576040519350606484016040527f08c379a000000000000000000000000000000000000000000000000000000000845260206004850152601b60248501527f455243323631323a20696e76616c6964207369676e61747572650000000000006044850152606484fd5b611839565b6040519350606484016040527f08c379a000000000000000000000000000000000000000000000000000000000845260206004850152601b60248501527f455243323631323a20696e76616c6964207369676e65720000000000000000006044850152606484fd5b50506040519150608082016040527fadbae967d9c307f2be79145ccac3c7dd3b1756d4168dc78420e5df547cb9015782528860208301528760408301526001606083200390508681555085606082015286887f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a35050505050505050565b7ff67be69b6ad25aabeffc62bd19264f3c30ad964894b5fc1e74e609a144194c7c545f828214600181146118f65780156118ff57611909565b60019150611909565b8261190957600191505b50806001811461191e5780156119235761198b565b61198b565b6040519250606483016040527f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152601b60248401527f50523153304e3a2061646d696e206f6e6c792066756e6374696f6e00000000006044840152606483fd5b50505050565b5f602082840312156119a1575f5ffd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146119d0575f5ffd5b9392505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6119d060208301846119d7565b803573ffffffffffffffffffffffffffffffffffffffff81168114611a58575f5ffd5b919050565b5f5f60408385031215611a6e575f5ffd5b611a7783611a35565b946020939093013593505050565b5f5f5f60608486031215611a97575f5ffd5b611aa084611a35565b9250611aae60208501611a35565b929592945050506040919091013590565b5f60208284031215611acf575f5ffd5b5035919050565b5f60208284031215611ae6575f5ffd5b6119d082611a35565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f611b2960e08301896119d7565b8281036040840152611b3b81896119d7565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611b9d578351835260209384019390920191600101611b7f565b50909b9a5050505050505050505050565b5f5f5f5f5f5f5f60e0888a031215611bc4575f5ffd5b611bcd88611a35565b9650611bdb60208901611a35565b95506040880135945060608801359350608088013560ff81168114611bfe575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611c2c575f5ffd5b611c3583611a35565b9150611c4360208401611a35565b9050925092905056fea164736f6c634300081c000a

Deployed Bytecode

0x608060405260043610610162575f3560e01c80636e9960c3116100c657806384b0196e1161007c578063a9059cbb11610057578063a9059cbb146104ba578063d505accf146104d9578063dd62ed3e146104f8575f5ffd5b806384b0196e1461046057806395d89b4114610487578063a457c2d71461049b575f5ffd5b806370a08231116100ac57806370a08231146103ac57806379cc6790146103cb5780637ecebe00146103ea575f5ffd5b80636e9960c314610338578063704b6c021461038b575f5ffd5b8063313ce5671161011b578063395093511161010157806339509351146102db57806340c10f19146102fa57806342966c6814610319575f5ffd5b8063313ce5671461021b5780633644e51514610241575f5ffd5b8063095ea7b31161014b578063095ea7b3146101bb57806318160ddd146101da57806323b872dd146101fc575f5ffd5b806301ffc9a71461016657806306fdde031461019a575b5f5ffd5b348015610171575f5ffd5b50610185610180366004611991565b610576565b60405190151581526020015b60405180910390f35b3480156101a5575f5ffd5b506101ae61062d565b6040516101919190611a23565b3480156101c6575f5ffd5b506101856101d5366004611a5d565b61066f565b3480156101e5575f5ffd5b506101ee6106ee565b604051908152602001610191565b348015610207575f5ffd5b50610185610216366004611a85565b610722565b348015610226575f5ffd5b5061022f6109df565b60405160ff9091168152602001610191565b34801561024c575f5ffd5b506040805160a080820183527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f1af0097cc103f3ba97f08c6bac2006fc42563cdbe9668c6d534c6be342fbc80d60208301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc692820192909252466060820152306080820152206101ee565b3480156102e6575f5ffd5b506101856102f5366004611a5d565b6109f3565b348015610305575f5ffd5b50610185610314366004611a5d565b610ae9565b348015610324575f5ffd5b50610185610333366004611abf565b610c57565b348015610343575f5ffd5b507ff67be69b6ad25aabeffc62bd19264f3c30ad964894b5fc1e74e609a144194c7c5460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b348015610396575f5ffd5b506103aa6103a5366004611ad6565b610d92565b005b3480156103b7575f5ffd5b506101ee6103c6366004611ad6565b610dbf565b3480156103d6575f5ffd5b506101856103e5366004611a5d565b610e0a565b3480156103f5575f5ffd5b506101ee610404366004611ad6565b6040805180820182527f4f77ee05ca2adc851fd5746b7fb0ecd7626242920d991bf3b91859dec213863a8152602081019290925290207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015490565b34801561046b575f5ffd5b50610474611049565b6040516101919796959493929190611aef565b348015610492575f5ffd5b506101ae611103565b3480156104a6575f5ffd5b506101856104b5366004611a5d565b611145565b3480156104c5575f5ffd5b506101856104d4366004611a5d565b611264565b3480156104e4575f5ffd5b506103aa6104f3366004611bae565b611420565b348015610503575f5ffd5b506101ee610512366004611c1b565b60408051606080820183527fadbae967d9c307f2be79145ccac3c7dd3b1756d4168dc78420e5df547cb901578252602082019490945290810191909152207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015490565b5f816301ffc9a7811461061a576336372b07811461061a5763313ce567811461061a576306fdde03811461061a576395d89b41811461061a576339509351811461061a5763a457c2d7811461061a576342966c68811461061a576379cc6790811461061a57639d8ff7da811461061a57633644e515811461061a57637ecebe00811461061a5763d505accf811461061a5763ffffffff8114610623575f9150610627565b60019150610627565b5f91505b50919050565b60606040516060810160405260208152600c60208201527f507269736f6e20546f6b656e00000000000000000000000000000000000000006040820152606081f35b5f604051608081016040527fadbae967d9c307f2be79145ccac3c7dd3b1756d4168dc78420e5df547cb901578152336020820152836040820152600160608220038381555082606082015283337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a35060019392505050565b5f604051602081016040527f6f385d8cb4190bdec0329fe907465553e5e421c9e47a5bce58d69c33100ac473548152602081f35b5f5f83610791576040519050606481016040527f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f50523153304e3a20757365206275726e2066756e6374696f6e000000000000006044820152606481fd5b5f33861480156107a8576001811461088e5761088e565b6040519250606083016040527fadbae967d9c307f2be79145ccac3c7dd3b1756d4168dc78420e5df547cb90157835286602084015233604084015260016060842003915081548086111561085e576040519350606484016040527f08c379a000000000000000000000000000000000000000000000000000000000845260206004850152601c60248501527f50523153304e3a206e6f7420656e6f75676820616c6c6f77616e6365000000006044850152606484fd5b807f8000000000000000000000000000000000000000000000000000000000000000111561088c5785810383555b505b506040519150604082016040527f146464e727c9f4b5af3a01a7cb966c630adbd470f82d401ae9430ce338ff7845825285602083015260016040832003905080548085111561093f576040519250606483016040527f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152601a60248401527f50523153304e3a206e6f7420656e6f7567682062616c616e63650000000000006044840152606483fd5b849003905550604080516060810182527f146464e727c9f4b5af3a01a7cb966c630adbd470f82d401ae9430ce338ff7845815260208082018690528282207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018054860190559181018481529091859187917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a3506001949350505050565b5f6040516020810160405260128152602081f35b5f604051608081016040527fadbae967d9c307f2be79145ccac3c7dd3b1756d4168dc78420e5df547cb90157815233602082015283604082015260016060822003805484810180821115610aa9576040519350606484016040527f08c379a000000000000000000000000000000000000000000000000000000000845260206004850152601860248501527f50523153304e3a206e756d65726963206f766572666c6f7700000000000000006044850152606484fd5b80835580606085015250505083337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a35060019392505050565b5f610af3336118bd565b5f7f6f385d8cb4190bdec0329fe907465553e5e421c9e47a5bce58d69c33100ac473546c0c9f2c9cd04674edea400000008482011115610b95576040519150606482016040527f08c379a000000000000000000000000000000000000000000000000000000000825260206004830152601960248301527f50523153304e3a2031207472696c6c696f6e206c696d697400000000000000006044830152606482fd5b83017f6f385d8cb4190bdec0329fe907465553e5e421c9e47a5bce58d69c33100ac47355506040805180820182527f146464e727c9f4b5af3a01a7cb966c630adbd470f82d401ae9430ce338ff784581526020808201869052908290207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01805485019055815180820190925283825284905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084a35060019392505050565b5f604051604081016040527f146464e727c9f4b5af3a01a7cb966c630adbd470f82d401ae9430ce338ff7845815233602082015260016040822003805480851115610d04576040519250606483016040527f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152601a60248401527f50523153304e3a206e6f7420656e6f7567682062616c616e63650000000000006044840152606483fd5b848103825550507f6f385d8cb4190bdec0329fe907465553e5e421c9e47a5bce58d69c33100ac473548381037f6f385d8cb4190bdec0329fe907465553e5e421c9e47a5bce58d69c33100ac47355506040519050602081016040528281525f337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602084a350600192915050565b610d9b336118bd565b7ff67be69b6ad25aabeffc62bd19264f3c30ad964894b5fc1e74e609a144194c7c55565b5f604051606081016040527f146464e727c9f4b5af3a01a7cb966c630adbd470f82d401ae9430ce338ff78458152826020820152600160408220038054604083015250602060408201f35b5f80803385148015610e235760018114610f0957610f09565b6040519250606083016040527fadbae967d9c307f2be79145ccac3c7dd3b1756d4168dc78420e5df547cb901578352336020840152856040840152600160608420039150815480861115610ed9576040519350606484016040527f08c379a000000000000000000000000000000000000000000000000000000000845260206004850152601c60248501527f50523153304e3a206e6f7420656e6f75676820616c6c6f77616e6365000000006044850152606484fd5b807f80000000000000000000000000000000000000000000000000000000000000001115610f075785810383555b505b506040519150604082016040527f146464e727c9f4b5af3a01a7cb966c630adbd470f82d401ae9430ce338ff78458252846020830152600160408320039050805480851115610fba576040519250606483016040527f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152601a60248401527f50523153304e3a206e6f7420656e6f7567682062616c616e63650000000000006044840152606483fd5b848103825550507f6f385d8cb4190bdec0329fe907465553e5e421c9e47a5bce58d69c33100ac473548381037f6f385d8cb4190bdec0329fe907465553e5e421c9e47a5bce58d69c33100ac47355506040519050602081016040528281525f847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602084a35060019392505050565b5f60608082808083600f46308480604051908082528060200260200182016040528015611080578160200160208202803683370190505b50604080518082018252600c81527f507269736f6e20546f6b656e00000000000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015260f89690961b9d959c509a50929850909650945092509050565b60606040516060810160405260208152600660208201527f505249534f4e00000000000000000000000000000000000000000000000000006040820152606081f35b5f604051608081016040527fadbae967d9c307f2be79145ccac3c7dd3b1756d4168dc78420e5df547cb901578152336020820152836040820152600160608220038054807f800000000000000000000000000000000000000000000000000000000000000011156112585784810381811115611223576040519350606484016040527f08c379a000000000000000000000000000000000000000000000000000000000845260206004850152601860248501527f50523153304e3a206e756d65726963206f766572666c6f7700000000000000006044850152606484fd5b8083558060608501525085337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608701a35b50600195945050505050565b5f5f836112d3576040519050606481016040527f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f50523153304e3a20757365206275726e2066756e6374696f6e000000000000006044820152606481fd5b6040519050604081016040527f146464e727c9f4b5af3a01a7cb966c630adbd470f82d401ae9430ce338ff7845815233602082015260016040822003805480851115611381576040519250606483016040527f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152601a60248401527f50523153304e3a206e6f7420656e6f7567682062616c616e63650000000000006044840152606483fd5b849003905550604080516060810182527f146464e727c9f4b5af3a01a7cb966c630adbd470f82d401ae9430ce338ff7845815260208082018690528282207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018054860190559181018481529091859133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a35060019392505050565b5f5f85421115611492576040519150606482016040527f08c379a000000000000000000000000000000000000000000000000000000000825260206004830152601b60248301527f455243323631323a2065787069726564207369676e61747572650000000000006044830152606482fd5b7f3027cd467a8723dc03f0378c9f873197ce7c4fbb7bf54996a65245113e26d96d547fd5cae22d506e84df30c510c1b8256278721345fcf8d4be64743ee4aa81e12864544614600181146114eb5780156114f0576115a1565b6115a1565b604051935060a084016040527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84527f1af0097cc103f3ba97f08c6bac2006fc42563cdbe9668c6d534c6be342fbc80d60208501527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6604085015246606085015230608085015260a084209150817f3027cd467a8723dc03f0378c9f873197ce7c4fbb7bf54996a65245113e26d96d555b506040519250604083016040527f4f77ee05ca2adc851fd5746b7fb0ecd7626242920d991bf3b91859dec213863a83528960208401526001604084200391508154600181018355604051935060c084016040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a6020850152896040850152886060850152806080850152508660a084015260c083206040519350604284016040527f190100000000000000000000000000000000000000000000000000000000000084528160028501528060228501525050604282207f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561170b576040519250606483016040527f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152601b60248401527f455243323631323a20696e76616c6964207369676e61747572652073000000006044840152606483fd5b604051925060a083016040528083525084602083015283604083015282606083015260206080830160808460015afa80611743575f5ffd5b5060808201518981146001811461175f5780156117d157611839565b816117cc576040519350606484016040527f08c379a000000000000000000000000000000000000000000000000000000000845260206004850152601b60248501527f455243323631323a20696e76616c6964207369676e61747572650000000000006044850152606484fd5b611839565b6040519350606484016040527f08c379a000000000000000000000000000000000000000000000000000000000845260206004850152601b60248501527f455243323631323a20696e76616c6964207369676e65720000000000000000006044850152606484fd5b50506040519150608082016040527fadbae967d9c307f2be79145ccac3c7dd3b1756d4168dc78420e5df547cb9015782528860208301528760408301526001606083200390508681555085606082015286887f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a35050505050505050565b7ff67be69b6ad25aabeffc62bd19264f3c30ad964894b5fc1e74e609a144194c7c545f828214600181146118f65780156118ff57611909565b60019150611909565b8261190957600191505b50806001811461191e5780156119235761198b565b61198b565b6040519250606483016040527f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152601b60248401527f50523153304e3a2061646d696e206f6e6c792066756e6374696f6e00000000006044840152606483fd5b50505050565b5f602082840312156119a1575f5ffd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146119d0575f5ffd5b9392505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6119d060208301846119d7565b803573ffffffffffffffffffffffffffffffffffffffff81168114611a58575f5ffd5b919050565b5f5f60408385031215611a6e575f5ffd5b611a7783611a35565b946020939093013593505050565b5f5f5f60608486031215611a97575f5ffd5b611aa084611a35565b9250611aae60208501611a35565b929592945050506040919091013590565b5f60208284031215611acf575f5ffd5b5035919050565b5f60208284031215611ae6575f5ffd5b6119d082611a35565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f611b2960e08301896119d7565b8281036040840152611b3b81896119d7565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611b9d578351835260209384019390920191600101611b7f565b50909b9a5050505050505050505050565b5f5f5f5f5f5f5f60e0888a031215611bc4575f5ffd5b611bcd88611a35565b9650611bdb60208901611a35565b95506040880135945060608801359350608088013560ff81168114611bfe575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611c2c575f5ffd5b611c3583611a35565b9150611c4360208401611a35565b9050925092905056fea164736f6c634300081c000a

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.