S Price: $0.523889 (-7.27%)

Contract

0xc0b338DA0fDD43Dc48539837594cf6363795FEeA

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_...15837272024-12-25 18:09:2137 days ago1735150161IN
0xc0b338DA...63795FEeA
0 S0.000046271
Set_minter15837232024-12-25 18:09:1837 days ago1735150158IN
0xc0b338DA...63795FEeA
0 S0.000046511

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

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xF830b9E8...09d050BB8
The constructor portion of the code might be different and could alter the actual behaviour of the contract

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"}]}]

Deployed Bytecode

0x5f3560e01c60026007820660011b6101fc01601e395f51565b6382bfefc8811861003657346101f857602061020a60403960206040f35b638da5cb5b81186101f457346101f85760015460405260206040f36101f4565b6392c94f658118610090576024361034176101f8576004358060a01c6101f8576040525f6040516020525f5260405f205460605260206060f35b631ec0cdc181186101f457346101f85760025460405260206040f36101f4565b6340c10f198118610122576044361034176101f8576004358060a01c6101f8576040525f336020525f5260405f2054156101f857602061020a5f395f516340c10f1960605260405160805260243560a052803b156101f8575f60606044607c5f855af161011f573d5f5f3e3d5ffd5b50005b63e5ea47b881186101f457346101f85760025433186101f857336001557fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a43360405260206040a1006101f4565b637c3bec3c81186101f4576044361034176101f8576004358060a01c6101f8576040526024358060011c6101f85760605260015433186101f8576060515f6040516020525f5260405f2055006101f4565b636b441a4081186101f4576024361034176101f8576004358060a01c6101f85760405260015433186101f857604051600255005b5f5ffd5b5f80fd016f01f4001800b001f401c000560000000000000000000000008fb3ec8f2d1dc089e70cd61f1e49496d443b2124

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.