ETH Price: $1,974.31 (-1.93%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

TokenTracker

Fung Token (FUNG) (@$0.0122)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve220489132025-03-15 1:12:356 days ago1742001155IN
FungifyNFT: FUNG Token
0 ETH0.000030161.02757134
Approve220246122025-03-11 15:46:239 days ago1741707983IN
FungifyNFT: FUNG Token
0 ETH0.000084161.64052972
Approve220108312025-03-09 17:34:3511 days ago1741541675IN
FungifyNFT: FUNG Token
0 ETH0.000186653.61467244
Approve219998042025-03-08 4:35:1113 days ago1741408511IN
FungifyNFT: FUNG Token
0 ETH0.000060471.17113389
Transfer219858832025-03-06 5:53:1115 days ago1741240391IN
FungifyNFT: FUNG Token
0 ETH0.000040391.09481285
Transfer219858752025-03-06 5:51:3515 days ago1741240295IN
FungifyNFT: FUNG Token
0 ETH0.000069271.17938469
Transfer219858632025-03-06 5:49:1115 days ago1741240151IN
FungifyNFT: FUNG Token
0 ETH0.000044381.20304396
Transfer219858522025-03-06 5:46:5915 days ago1741240019IN
FungifyNFT: FUNG Token
0 ETH0.000068011.15790081
Approve219616032025-03-02 20:32:3518 days ago1740947555IN
FungifyNFT: FUNG Token
0 ETH0.000141722.7618366
Approve219436882025-02-28 8:36:1120 days ago1740731771IN
FungifyNFT: FUNG Token
0 ETH0.000286695.55188236
Approve218416882025-02-14 2:20:5935 days ago1739499659IN
FungifyNFT: FUNG Token
0 ETH0.000039741.26750349
Approve218285372025-02-12 6:08:4737 days ago1739340527IN
FungifyNFT: FUNG Token
0 ETH0.000042461.35434079
Approve218285352025-02-12 6:08:2337 days ago1739340503IN
FungifyNFT: FUNG Token
0 ETH0.000041751.33179899
Approve218242042025-02-11 15:33:5937 days ago1739288039IN
FungifyNFT: FUNG Token
0 ETH0.000095251.85419486
Approve217926062025-02-07 5:40:4742 days ago1738906847IN
FungifyNFT: FUNG Token
0 ETH0.000106192.05940924
Approve217882542025-02-06 15:07:1142 days ago1738854431IN
FungifyNFT: FUNG Token
0 ETH0.000239464.63732873
Approve217771122025-02-05 1:48:1144 days ago1738720091IN
FungifyNFT: FUNG Token
0 ETH0.000157643.05275382
Approve217672712025-02-03 16:47:4745 days ago1738601267IN
FungifyNFT: FUNG Token
0 ETH0.0008598716.67104761
Approve217511482025-02-01 10:43:5947 days ago1738406639IN
FungifyNFT: FUNG Token
0 ETH0.000232934.51616809
Approve217150022025-01-27 9:35:3552 days ago1737970535IN
FungifyNFT: FUNG Token
0 ETH0.000331866.42655225
Approve217132902025-01-27 3:52:1153 days ago1737949931IN
FungifyNFT: FUNG Token
0 ETH0.000331736.43157523
Transfer216960762025-01-24 18:12:3555 days ago1737742355IN
FungifyNFT: FUNG Token
0 ETH0.000446312.1
Transfer216960632025-01-24 18:09:5955 days ago1737742199IN
FungifyNFT: FUNG Token
0 ETH0.0007108612.1
Transfer216856822025-01-23 7:25:1156 days ago1737617111IN
FungifyNFT: FUNG Token
0 ETH0.000358656.64514827
Approve216835382025-01-23 0:13:2357 days ago1737591203IN
FungifyNFT: FUNG Token
0 ETH0.000421868.1695043
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FungTokenProxy

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
istanbul EvmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2024-01-01
*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.23;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * The initial owner is set to the address provided by the deployer. This can
 * later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract Upgradeable is Ownable {
    address public implementation;

    constructor() Ownable(msg.sender) {}
}

contract Proxy is Upgradeable {

    constructor(address impl_) {
        replaceImplementation(impl_);
    }

    fallback() external payable {
        assembly {
            calldatacopy(0, 0, calldatasize())
            let result := delegatecall(gas(), sload(implementation.slot), 0, calldatasize(), 0, 0)
            returndatacopy(0, 0, returndatasize())
            switch result
            case 0 { revert(0, returndatasize()) }
            default { return(0, returndatasize()) }
        }
    }

    function replaceImplementation(address impl_) public onlyOwner {
        implementation = impl_;
    }
}

contract FungTokenProxy is Proxy {
    constructor(address impl_) Proxy(impl_) {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"impl_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"impl_","type":"address"}],"name":"replaceImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506040516103de3803806103de83398101604081905261002f9161011a565b80338061005757604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61006081610071565b5061006a816100c1565b505061014a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100c96100eb565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146101185760405163118cdaa760e01b815233600482015260240161004e565b565b60006020828403121561012c57600080fd5b81516001600160a01b038116811461014357600080fd5b9392505050565b610285806101596000396000f3fe60806040526004361061004a5760003560e01c80635c60da1b14610072578063715018a6146100ae5780638da5cb5b146100c3578063d69efdc5146100e1578063f2fde38b14610101575b36600080376000803660006001545af43d6000803e80801561006b573d6000f35b3d6000fd5b005b34801561007e57600080fd5b50600154610092906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b3480156100ba57600080fd5b50610070610121565b3480156100cf57600080fd5b506000546001600160a01b0316610092565b3480156100ed57600080fd5b506100706100fc36600461021f565b610135565b34801561010d57600080fd5b5061007061011c36600461021f565b61015f565b6101296101a2565b61013360006101cf565b565b61013d6101a2565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6101676101a2565b6001600160a01b03811661019657604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61019f816101cf565b50565b6000546001600160a01b031633146101335760405163118cdaa760e01b815233600482015260240161018d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561023157600080fd5b81356001600160a01b038116811461024857600080fd5b939250505056fea2646970667358221220cbd60be925f0750716b6168dd82ca343d4cb5637742b4c337e67d03ea354ee7064736f6c6343000817003300000000000000000000000039022b55287c5eb9f87cdf119bb43423faa41b83

Deployed Bytecode

0x60806040526004361061004a5760003560e01c80635c60da1b14610072578063715018a6146100ae5780638da5cb5b146100c3578063d69efdc5146100e1578063f2fde38b14610101575b36600080376000803660006001545af43d6000803e80801561006b573d6000f35b3d6000fd5b005b34801561007e57600080fd5b50600154610092906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b3480156100ba57600080fd5b50610070610121565b3480156100cf57600080fd5b506000546001600160a01b0316610092565b3480156100ed57600080fd5b506100706100fc36600461021f565b610135565b34801561010d57600080fd5b5061007061011c36600461021f565b61015f565b6101296101a2565b61013360006101cf565b565b61013d6101a2565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6101676101a2565b6001600160a01b03811661019657604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61019f816101cf565b50565b6000546001600160a01b031633146101335760405163118cdaa760e01b815233600482015260240161018d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561023157600080fd5b81356001600160a01b038116811461024857600080fd5b939250505056fea2646970667358221220cbd60be925f0750716b6168dd82ca343d4cb5637742b4c337e67d03ea354ee7064736f6c63430008170033

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

00000000000000000000000039022b55287c5eb9f87cdf119bb43423faa41b83

-----Decoded View---------------
Arg [0] : impl_ (address): 0x39022b55287C5eB9F87CdF119bb43423FaA41B83

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000039022b55287c5eb9f87cdf119bb43423faa41b83


Deployed Bytecode Sourcemap

4602:85:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4166:14;4163:1;4160;4147:34;4279:1;4276;4260:14;4257:1;4235:19;4229:26;4222:5;4209:72;4316:16;4313:1;4310;4295:38;4354:6;4374:38;;;;4446:16;4443:1;4436:27;4374:38;4393:16;4390:1;4383:27;4347:118;;3882:29;;;;;;;;;;-1:-1:-1;3882:29:0;;;;-1:-1:-1;;;;;3882:29:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;3882:29:0;;;;;;;3007:103;;;;;;;;;;;;;:::i;2332:87::-;;;;;;;;;;-1:-1:-1;2378:7:0;2405:6;-1:-1:-1;;;;;2405:6:0;2332:87;;4491:104;;;;;;;;;;-1:-1:-1;4491:104:0;;;;;:::i;:::-;;:::i;3265:220::-;;;;;;;;;;-1:-1:-1;3265:220:0;;;;;:::i;:::-;;:::i;3007:103::-;2218:13;:11;:13::i;:::-;3072:30:::1;3099:1;3072:18;:30::i;:::-;3007:103::o:0;4491:104::-;2218:13;:11;:13::i;:::-;4565:14:::1;:22:::0;;-1:-1:-1;;;;;;4565:22:0::1;-1:-1:-1::0;;;;;4565:22:0;;;::::1;::::0;;;::::1;::::0;;4491:104::o;3265:220::-;2218:13;:11;:13::i;:::-;-1:-1:-1;;;;;3350:22:0;::::1;3346:93;;3396:31;::::0;-1:-1:-1;;;3396:31:0;;3424:1:::1;3396:31;::::0;::::1;160:51:1::0;133:18;;3396:31:0::1;;;;;;;;3346:93;3449:28;3468:8;3449:18;:28::i;:::-;3265:220:::0;:::o;2497:166::-;2378:7;2405:6;-1:-1:-1;;;;;2405:6:0;687:10;2557:23;2553:103;;2604:40;;-1:-1:-1;;;2604:40:0;;687:10;2604:40;;;160:51:1;133:18;;2604:40:0;14:203:1;3645:191:0;3719:16;3738:6;;-1:-1:-1;;;;;3755:17:0;;;-1:-1:-1;;;;;;3755:17:0;;;;;;3788:40;;3738:6;;;;;;;3788:40;;3719:16;3788:40;3708:128;3645:191;:::o;222:286:1:-;281:6;334:2;322:9;313:7;309:23;305:32;302:52;;;350:1;347;340:12;302:52;376:23;;-1:-1:-1;;;;;428:31:1;;418:42;;408:70;;474:1;471;464:12;408:70;497:5;222:286;-1:-1:-1;;;222:286:1:o

Swarm Source

ipfs://cbd60be925f0750716b6168dd82ca343d4cb5637742b4c337e67d03ea354ee70

Block Transaction Difficulty 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
Loading...
Loading
[ 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.