Contract 0xaeaeed23478c3a4b798e4ed40d8b7f41366ae861 9

 

Contract Overview

Ankr Network: ANKR Token
Balance:
0 ETH

ETH Value:
$0.00
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x3795e7f46bf9f845b1ab169fae573fc7489a9dd62582d173a0f71b6c2da0d995Approve2004409512024-04-13 2:03:566 hrs 43 mins ago0x7bb4a792e990313445b42ae334e0d7b9c7f24409 IN  Ankr Network: ANKR Token0 ETH0.000003270.043619
0x6209aa46f4ac2b684f679ec026ad39b1f59e1a7a72dbc2dd8ef670686fd92196Approve1989575282024-04-08 18:18:124 days 14 hrs ago0x82f9ea8d814a6eb335cfe17500cdcbb69c7ebbfe IN  Ankr Network: ANKR Token0 ETH0.00000203 0.01
0x57e84a2efef5b14366113f6f961b09a293ce16d57e8838a7aa9f9f59fbdeb0f7Approve1988803172024-04-08 12:55:094 days 19 hrs ago0x6ee62fb521531b587e79262d759dec8ce4fef341 IN  Ankr Network: ANKR Token0 ETH0.00000149 0.01
0x26778e1a74f221fa9f81a2d4c8577b3247424b9b0974fa68d12d76e21f6bed42Approve1980713242024-04-06 4:34:247 days 4 hrs ago0xae1c38847fb90a13a2a1d7e5552ccd80c62c6508 IN  Ankr Network: ANKR Token0 ETH0.00000099 0.01
0x8447bfc90f97d1365b2d7c7540844471640864defd0f742b7673b83334fb01d0Approve1979458232024-04-05 19:47:147 days 13 hrs ago0xc8d5053c206a977828b762dde253ed9db37c18f5 IN  Ankr Network: ANKR Token0 ETH0.00000125 0.01
0x936f7e5aa06139dd06320808d42ac24249d1b61673151eed041aed85cc43b75eApprove1970358532024-04-03 4:15:0710 days 4 hrs ago0x82f9ea8d814a6eb335cfe17500cdcbb69c7ebbfe IN  Ankr Network: ANKR Token0 ETH0.00000797 0.01
0xd87d65f0d52f1ed4ec350a4fc1ae8b0aa9417e147eb86ccb241a57101f0058c8Approve1967748142024-04-02 9:59:2110 days 22 hrs ago0xc73806a5f4100f41011d3599fb12d2f24f4b2417 IN  Ankr Network: ANKR Token0 ETH0.00000844 0.01
0x1d5674d17e133c816c267e7bd8bf59f125c2cebc842c9ba01419c71f70427238Transfer1967737102024-04-02 9:54:4510 days 22 hrs ago0xefaca864edc669d047aaef5dfde7cf4d07a6a15e IN  Ankr Network: ANKR Token0 ETH0.00000982 0.01
0x9f7dc4724e2e70677fa9008c651aca89a3a9af411302f0f15a907fa6501731fdApprove1964329452024-04-01 10:06:4611 days 22 hrs ago0xb34f2089268c1e7a08b5579248328b20a9f8efd9 IN  Ankr Network: ANKR Token0 ETH0.00000524 0.01
0x71b4d94eb675de4a3efa93645bcf7b47da1473289d5ea750d8f5c005d349db9bApprove1960581262024-03-31 7:58:4813 days 48 mins ago0x5a010c2f9182c03a2247b2daa9fe5033b727a06a IN  Ankr Network: ANKR Token0 ETH0.000008830.01
0xbf3f32aa785301c745af51edc4af7768896128566d1477df10dec4f3989ba836Approve1960514142024-03-31 7:30:5013 days 1 hr ago0x5a010c2f9182c03a2247b2daa9fe5033b727a06a IN  Ankr Network: ANKR Token0 ETH0.000005740.01
0x8bc33b8204bc05eb33bc6d96d269cf0623fd9545eaf9ae57928b726f76d47836Approve1953454522024-03-29 6:18:0215 days 2 hrs ago0x6de4c504b365f72ebbcc8206f5c2903d80e5c73e IN  Ankr Network: ANKR Token0 ETH0.00000211 0.01
0xd60cfc1d7cb877d131c2b65cee3607d2976dfba7f5f223edd1bbd6eb8d63c333Approve1952669852024-03-29 0:49:2615 days 7 hrs ago0x82f9ea8d814a6eb335cfe17500cdcbb69c7ebbfe IN  Ankr Network: ANKR Token0 ETH0.0000028 0.01
0x4235eeb863c7411ac6af94783fae401b4b4d45ecd44dcc0cde3cd21533dbedaeApprove1950763902024-03-28 11:27:2315 days 21 hrs ago0x82f9ea8d814a6eb335cfe17500cdcbb69c7ebbfe IN  Ankr Network: ANKR Token0 ETH0.0000035 0.01
0x90f63ff27c706d7d96f5ea03676f9c516b3d13fda3908a4908832f3acfae6365Approve1950603962024-03-28 10:20:2015 days 22 hrs ago0xa9ddd91249dfdd450e81e1c56ab60e1a62651701 IN  Ankr Network: ANKR Token0 ETH0.000002020.010723
0xa21b79938bbc8d5bd71e34999d391da66b53124b9c165091656aafbd630ac16fApprove1938454152024-03-24 21:46:3919 days 11 hrs ago0x82f9ea8d814a6eb335cfe17500cdcbb69c7ebbfe IN  Ankr Network: ANKR Token0 ETH0.00000145 0.01
0xcf63232aac7953b5ff01b886317749d33e4cd8bec814c108982094c651b059caApprove1929672442024-03-22 8:38:2422 days 9 mins ago0xa016b59cea666f53da4da3c9f99b97da1e0b016b IN  Ankr Network: ANKR Token0 ETH0.00000107 0.01
0x76ee265dff6ff8540c7fbc195f17c2f60c94d12e57c05ee74626fe32e4485b92Approve1924853182024-03-20 22:59:4323 days 9 hrs ago0x82f9ea8d814a6eb335cfe17500cdcbb69c7ebbfe IN  Ankr Network: ANKR Token0 ETH0.0000017 0.01
0xadc9a4b76873bc7e78de4da2364cbda1770dc533e1005ba63ea339b6afd0e498Approve1922724252024-03-20 8:09:0924 days 38 mins ago0xc818cfac035b67141ebc9b605df5502552aa4a69 IN  Ankr Network: ANKR Token0 ETH0.000001770.01
0xa751c1745ef740e4a1eb285f52a53e588dbb4d9b763661dd28b3507acd10a3a7Approve1920293722024-03-19 15:14:1424 days 17 hrs ago0x82f9ea8d814a6eb335cfe17500cdcbb69c7ebbfe IN  Ankr Network: ANKR Token0 ETH0.00000197 0.01
0x9c6b0270f78c2bc92c4d661eac8a53e1f58db326abbc114e3d5b0a75ae5943ceApprove1920047362024-03-19 13:31:2724 days 19 hrs ago0xcdba088616966f1347bdc13b50cfa51676b40325 IN  Ankr Network: ANKR Token0 ETH0.00000166 0.01
0xa7e591781e9ee63a8f499ffd508f450662f6461622d72df077e6800afcb18818Approve1920047232024-03-19 13:31:2424 days 19 hrs ago0xcdba088616966f1347bdc13b50cfa51676b40325 IN  Ankr Network: ANKR Token0 ETH0.00000166 0.01
0x1e8b56b068c39754a17d44444a6622cdb8ee6aa32867da8723b8f29259195bc7Approve1917430012024-03-18 19:11:4925 days 13 hrs ago0x82f9ea8d814a6eb335cfe17500cdcbb69c7ebbfe IN  Ankr Network: ANKR Token0 ETH0.000013910.1
0x9fd29b02f18e7f57f2d90a0f6bdaa16e64ecb6abf060ecd69cab97904ec4a8f3Approve1917163662024-03-18 17:19:0925 days 15 hrs ago0xcdba088616966f1347bdc13b50cfa51676b40325 IN  Ankr Network: ANKR Token0 ETH0.00001206 0.1
0x5fec2a938d3037211c5a031f355afbf41d3c85f3087760c83fb765a38fe1ab55Approve1917133202024-03-18 17:06:2625 days 15 hrs ago0xcdba088616966f1347bdc13b50cfa51676b40325 IN  Ankr Network: ANKR Token0 ETH0.00001247 0.1
[ Download CSV Export 

OVERVIEW

Build web3 apps with a full suite of developer tools. Power them with fast, global, decentralized connections to dozens of chains.

Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x95eca6d742174081ef7dc13c60a2d9eacb4e5d81acbd8c277171ad7db27db1ef1131427602023-07-20 12:58:33267 days 19 hrs ago 0xc437df90b37c1db6657339e31bfe54627f0e7181  Contract Creation0 ETH
[ Download CSV Export 
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Contract Source Code Verified (Exact Match)

Contract Name:
SimpleTokenProxy

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 200 runs

Other Settings:
berlin EvmVersion
File 1 of 4 : SimpleTokenProxy.sol
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity ^0.8.6;

import "./interfaces/ICrossChainBridge.sol";

contract SimpleTokenProxy {

    bytes32 private constant BEACON_SLOT = bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1);

    fallback() external {
        address bridge;
        bytes32 slot = BEACON_SLOT;
        assembly {
            bridge := sload(slot)
        }
        address impl = ICrossChainBridge(bridge).getTokenImplementation();
        assembly {
            calldatacopy(0, 0, calldatasize())
            let result := delegatecall(gas(), impl, 0, calldatasize(), 0, 0)
            returndatacopy(0, 0, returndatasize())
            switch result
            case 0 {revert(0, returndatasize())}
            default {return (0, returndatasize())}
        }
    }

    function setBeacon(address newBeacon) external {
        address beacon;
        bytes32 slot = BEACON_SLOT;
        assembly {
            beacon := sload(slot)
        }
        require(beacon == address(0x00));
        assembly {
            sstore(slot, newBeacon)
        }
    }
}

library SimpleTokenProxyUtils {

    bytes constant internal SIMPLE_TOKEN_PROXY_BYTECODE = hex"608060405234801561001057600080fd5b50610215806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d42afb56146100fd575b60008061005960017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d516101a2565b60001b9050805491506000826001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561009f57600080fd5b505af11580156100b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d79190610185565b90503660008037600080366000845af43d6000803e8080156100f8573d6000f35b3d6000fd5b61011061010b366004610161565b610112565b005b60008061014060017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d516101a2565b8054925090506001600160a01b0382161561015a57600080fd5b9190915550565b60006020828403121561017357600080fd5b813561017e816101c7565b9392505050565b60006020828403121561019757600080fd5b815161017e816101c7565b6000828210156101c257634e487b7160e01b600052601160045260246000fd5b500390565b6001600160a01b03811681146101dc57600080fd5b5056fea2646970667358221220e6ae4b3dc2474e43ff609e19eb520ce54b6f38170a43a6f96541360be5efc2b464736f6c63430008060033";

    bytes32 constant internal SIMPLE_TOKEN_PROXY_HASH = keccak256(SIMPLE_TOKEN_PROXY_BYTECODE);

    bytes4 constant internal SET_META_DATA_SIG = bytes4(keccak256("initAndObtainOwnership(bytes32,bytes32,uint256,address)"));
    bytes4 constant internal SET_BEACON_SIG = bytes4(keccak256("setBeacon(address)"));

    function deploySimpleTokenProxy(address bridge, bytes32 salt, ICrossChainBridge.Metadata memory metaData) internal returns (address) {
        /* lets concat bytecode with constructor parameters */
        bytes memory bytecode = SIMPLE_TOKEN_PROXY_BYTECODE;
        /* deploy new contract and store contract address in result variable */
        address result;
        assembly {
            result := create2(0, add(bytecode, 0x20), mload(bytecode), salt)
        }
        require(result != address(0x00), "deploy failed");
        /* setup impl */
        (bool success,) = result.call(abi.encodePacked(SET_BEACON_SIG, abi.encode(bridge)));
        require(success, "setBeacon failed");
        /* setup meta data */
        (success,) = result.call(abi.encodePacked(SET_META_DATA_SIG, abi.encode(metaData)));
        require(success, "set metadata failed");
        /* return generated contract address */
        return result;
    }

    function simpleTokenProxyAddress(address deployer, bytes32 salt) internal pure returns (address) {
        bytes32 bytecodeHash = keccak256(SIMPLE_TOKEN_PROXY_BYTECODE);
        bytes32 hash = keccak256(abi.encodePacked(uint8(0xff), address(deployer), salt, bytecodeHash));
        return address(bytes20(hash << 96));
    }
}

File 2 of 4 : IERC20.sol
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity ^0.8.6;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";

interface IERC20Mintable {

    function mint(address account, uint256 amount) external;

    function burn(address account, uint256 amount) external;
}

interface IERC20Pegged {

    function getOrigin() external view returns (uint256, address);
}

interface IERC20Extra {

    function name() external returns (string memory);

    function decimals() external returns (uint8);

    function symbol() external returns (string memory);
}

interface IERC20MetadataChangeable {

    event NameChanged(string prevValue, string newValue);

    event SymbolChanged(string prevValue, string newValue);

    function changeName(bytes32) external;

    function changeSymbol(bytes32) external;
}

interface IERC20InternetBond {

    function ratio() external view returns (uint256);

    function isRebasing() external view returns (bool);
}

File 3 of 4 : ICrossChainBridge.sol
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity ^0.8.6;

import "../interfaces/IERC20.sol";

interface ICrossChainBridge {

    event ContractAllowed(address contractAddress, uint256 toChain);
    event ContractDisallowed(address contractAddress, uint256 toChain);
    event ConsensusChanged(address consensusAddress);
    event TokenImplementationChanged(address consensusAddress);
    event BondImplementationChanged(address consensusAddress);

    struct Metadata {
        bytes32 symbol;
        bytes32 name;
        uint256 originChain;
        address originAddress;
        bytes32 bondMetadata; // encoded metadata version, bond type
    }

    event DepositLocked(
        uint256 chainId,
        address indexed fromAddress,
        address indexed toAddress,
        address fromToken,
        address toToken,
        uint256 totalAmount,
        Metadata metadata
    );
    event DepositBurned(
        uint256 chainId,
        address indexed fromAddress,
        address indexed toAddress,
        address fromToken,
        address toToken,
        uint256 totalAmount,
        Metadata metadata,
        address originToken
    );

    event WithdrawMinted(
        bytes32 receiptHash,
        address indexed fromAddress,
        address indexed toAddress,
        address fromToken,
        address toToken,
        uint256 totalAmount
    );
    event WithdrawUnlocked(
        bytes32 receiptHash,
        address indexed fromAddress,
        address indexed toAddress,
        address fromToken,
        address toToken,
        uint256 totalAmount
    );

    enum InternetBondType {
        NOT_BOND,
        REBASING_BOND,
        NONREBASING_BOND
    }

    function isPeggedToken(address toToken) external returns (bool);

    function deposit(uint256 toChain, address toAddress) payable external;

    function deposit(address fromToken, uint256 toChain, address toAddress, uint256 amount) external;

    function withdraw(bytes calldata encodedProof, bytes calldata rawReceipt, bytes calldata receiptRootSignature) external;

    function factoryPeggedToken(uint256 fromChain, Metadata calldata metaData) external;

    function factoryPeggedBond(uint256 fromChain, Metadata calldata metaData) external;

    function getTokenImplementation() external returns (address);

    function getBondImplementation() external returns (address);

}

File 4 of 4 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "berlin",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract ABI

[{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[{"internalType":"address","name":"newBeacon","type":"address"}],"name":"setBeacon","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50610215806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d42afb56146100fd575b60008061005960017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d516101a2565b60001b9050805491506000826001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561009f57600080fd5b505af11580156100b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d79190610185565b90503660008037600080366000845af43d6000803e8080156100f8573d6000f35b3d6000fd5b61011061010b366004610161565b610112565b005b60008061014060017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d516101a2565b8054925090506001600160a01b0382161561015a57600080fd5b9190915550565b60006020828403121561017357600080fd5b813561017e816101c7565b9392505050565b60006020828403121561019757600080fd5b815161017e816101c7565b6000828210156101c257634e487b7160e01b600052601160045260246000fd5b500390565b6001600160a01b03811681146101dc57600080fd5b5056fea2646970667358221220e6ae4b3dc2474e43ff609e19eb520ce54b6f38170a43a6f96541360be5efc2b464736f6c63430008060033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d42afb56146100fd575b60008061005960017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d516101a2565b60001b9050805491506000826001600160a01b031663709bc7f36040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561009f57600080fd5b505af11580156100b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d79190610185565b90503660008037600080366000845af43d6000803e8080156100f8573d6000f35b3d6000fd5b61011061010b366004610161565b610112565b005b60008061014060017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d516101a2565b8054925090506001600160a01b0382161561015a57600080fd5b9190915550565b60006020828403121561017357600080fd5b813561017e816101c7565b9392505050565b60006020828403121561019757600080fd5b815161017e816101c7565b6000828210156101c257634e487b7160e01b600052601160045260246000fd5b500390565b6001600160a01b03811681146101dc57600080fd5b5056fea2646970667358221220e6ae4b3dc2474e43ff609e19eb520ce54b6f38170a43a6f96541360be5efc2b464736f6c63430008060033

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.