S Price: $0.513902 (-9.04%)

Contract

0xF830b9E88f994BbB069aC884d40fA2E09d050BB8

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Commit_transfer_...15785212024-12-25 16:52:4638 days ago1735145566IN
0xF830b9E8...09d050BB8
0 S0.000046271
Set_minter15785192024-12-25 16:52:4438 days ago1735145564IN
0xF830b9E8...09d050BB8
0 S0.000055111.185

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Minter Proxy

Compiler Version
vyper:0.3.10

Optimization Enabled:
N/A

Other Settings:
default evmVersion, MIT license

Contract Source Code (Vyper language format)

# @version 0.3.10
"""
@title Minter Proxy
@dev Middleware to allow multiple minters for a token.
"""

interface MERC20:
    def mint(_to: address, _value: uint256): nonpayable


event TransferOwnership:
    owner: address


TOKEN: public(immutable(address))


is_minter: public(HashMap[address, bool])

owner: public(address)
future_owner: public(address)


@external
def __init__(token: address):
    TOKEN = token

    self.owner = msg.sender


@external
def mint(_to: address, _value: uint256):
    assert self.is_minter[msg.sender]
    
    MERC20(TOKEN).mint(_to, _value)


@external
def set_minter(_minter: address, _is_approved: bool):
    assert msg.sender == self.owner

    self.is_minter[_minter] = _is_approved


@external
def commit_transfer_ownership(_future_owner: address):
    """
    @notice Transfer ownership to `_future_owner`
    @param _future_owner The account to commit as the future owner
    """
    assert msg.sender == self.owner  # dev: only owner

    self.future_owner = _future_owner


@external
def accept_transfer_ownership():
    """
    @notice Accept the transfer of ownership
    @dev Only the committed future owner can call this function
    """
    assert msg.sender == self.future_owner  # dev: only future owner

    self.owner = msg.sender
    log TransferOwnership(msg.sender)

Contract Security Audit

Contract ABI

[{"name":"TransferOwnership","inputs":[{"name":"owner","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"token","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"mint","inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_minter","inputs":[{"name":"_minter","type":"address"},{"name":"_is_approved","type":"bool"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"commit_transfer_ownership","inputs":[{"name":"_future_owner","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"accept_transfer_ownership","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"TOKEN","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"is_minter","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"future_owner","inputs":[],"outputs":[{"name":"","type":"address"}]}]

61020a51503461003a57602061025d5f395f518060a01c61003a5760405260405161020a523360015561020a61003e6100003961022a610000f35b5f80fd5f3560e01c60026007820660011b6101fc01601e395f51565b6382bfefc8811861003657346101f857602061020a60403960206040f35b638da5cb5b81186101f457346101f85760015460405260206040f36101f4565b6392c94f658118610090576024361034176101f8576004358060a01c6101f8576040525f6040516020525f5260405f205460605260206060f35b631ec0cdc181186101f457346101f85760025460405260206040f36101f4565b6340c10f198118610122576044361034176101f8576004358060a01c6101f8576040525f336020525f5260405f2054156101f857602061020a5f395f516340c10f1960605260405160805260243560a052803b156101f8575f60606044607c5f855af161011f573d5f5f3e3d5ffd5b50005b63e5ea47b881186101f457346101f85760025433186101f857336001557fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a43360405260206040a1006101f4565b637c3bec3c81186101f4576044361034176101f8576004358060a01c6101f8576040526024358060011c6101f85760605260015433186101f8576060515f6040516020525f5260405f2055006101f4565b636b441a4081186101f4576024361034176101f8576004358060a01c6101f85760405260015433186101f857604051600255005b5f5ffd5b5f80fd016f01f4001800b001f401c000568419020a810e1820a16576797065728300030a00150000000000000000000000005191946500e75f0a74476f146df7d386e52961d9

Deployed Bytecode

0x5f3560e01c60026007820660011b6101fc01601e395f51565b6382bfefc8811861003657346101f857602061020a60403960206040f35b638da5cb5b81186101f457346101f85760015460405260206040f36101f4565b6392c94f658118610090576024361034176101f8576004358060a01c6101f8576040525f6040516020525f5260405f205460605260206060f35b631ec0cdc181186101f457346101f85760025460405260206040f36101f4565b6340c10f198118610122576044361034176101f8576004358060a01c6101f8576040525f336020525f5260405f2054156101f857602061020a5f395f516340c10f1960605260405160805260243560a052803b156101f8575f60606044607c5f855af161011f573d5f5f3e3d5ffd5b50005b63e5ea47b881186101f457346101f85760025433186101f857336001557fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a43360405260206040a1006101f4565b637c3bec3c81186101f4576044361034176101f8576004358060a01c6101f8576040526024358060011c6101f85760605260015433186101f8576060515f6040516020525f5260405f2055006101f4565b636b441a4081186101f4576024361034176101f8576004358060a01c6101f85760405260015433186101f857604051600255005b5f5ffd5b5f80fd016f01f4001800b001f401c000560000000000000000000000005191946500e75f0a74476f146df7d386e52961d9

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000005191946500e75f0a74476f146df7d386e52961d9

-----Decoded View---------------
Arg [0] : token (address): 0x5191946500e75f0A74476F146dF7d386e52961d9

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005191946500e75f0a74476f146df7d386e52961d9


Block Transaction Gas Used Reward
view all blocks produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.