Contract 0xe05A08226c49b636ACf99c40Da8DC6aF83CE5bB3 14

 

Contract Overview

Ankr Staked ETH: ankrETH Token
Balance:
0 ETH

ETH Value:
$0.00
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x1c0c86d04d7856a0287794fb0e9d41eba72c5e46a5016a5b27acfc0e132d40a7Approve2014861642024-04-16 3:24:581 day 22 hrs ago0x058569c56df7bb4a5e2af11c3a53f5cbfbed8534 IN  Ankr Staked ETH: ankrETH Token0 ETH0.0000009 0.01
0x2504bad36ad1a5e8f54df0330c7c6b224472fb3514b1633ac470d681de542d5aApprove2009893902024-04-14 16:33:433 days 9 hrs ago0x05aa6ba76a24fc531ab876bb4395baf7129ad14c IN  Ankr Staked ETH: ankrETH Token0 ETH0.000001080.010391
0x4e9b92e1fa6ba28ceb5e940d348e98e0d7cc142bf8df75284ae0453c8aa20791Approve2008992962024-04-14 10:14:013 days 15 hrs ago0x8fa66b0f585a4286ff692c66b7f19e748eb3c897 IN  Ankr Staked ETH: ankrETH Token0 ETH0.00000094 0.01
0x9a78b400b3cfce595da8a6d2956285bfe3a9d589682d6e774fb357497144f8a8Approve2008212242024-04-14 4:45:483 days 21 hrs ago0xc57ea958e33dc87c7c7951774bab9221346ba26f IN  Ankr Staked ETH: ankrETH Token0 ETH0.00000103 0.01
0xbe15b78a210126676c66e93ea9a389f83158aba8462d0afb72ddbeb56f7b483cApprove2007175352024-04-13 21:24:164 days 4 hrs ago0x7bb4a792e990313445b42ae334e0d7b9c7f24409 IN  Ankr Staked ETH: ankrETH Token0 ETH0.000050850.68768
0xad8e697cd66a5f333fe91c3c1dc8e406775faf6a18efff37d5265c75d22bd030Approve2005260722024-04-13 8:00:354 days 17 hrs ago0xae1c38847fb90a13a2a1d7e5552ccd80c62c6508 IN  Ankr Staked ETH: ankrETH Token0 ETH0.00000102 0.01
0xe0627bbef7dde5f978a2edfb9db981a28a5518d56b1171ebeb8e075443d65d35Approve2003619582024-04-12 20:29:575 days 5 hrs ago0x5a010c2f9182c03a2247b2daa9fe5033b727a06a IN  Ankr Staked ETH: ankrETH Token0 ETH0.000006820.111439
0x59146037d569569307e3c8c2d26d2b0056d878bd34d6857c1541d97d838c1b12Approve2003603232024-04-12 20:22:415 days 5 hrs ago0x5a010c2f9182c03a2247b2daa9fe5033b727a06a IN  Ankr Staked ETH: ankrETH Token0 ETH0.000012330.157503
0x86d93502d3349b360f26f267b8dfa5995eb1bf30afa087875e48621923fe0bc3Approve2001922282024-04-12 8:35:045 days 17 hrs ago0x8fa66b0f585a4286ff692c66b7f19e748eb3c897 IN  Ankr Staked ETH: ankrETH Token0 ETH0.000001240.01
0x68568e9a0b82b29998926279ef12cbde4fdc67b5542e1305efc6ff57de72f5a5Transfer2000229152024-04-11 20:45:026 days 5 hrs ago0xa098a01ad8d38b62f422146fb4d2d6d30271f7a3 IN  Ankr Staked ETH: ankrETH Token0 ETH0.000001150.01
0x4d7434fa7bf896dcfdb1afbd4c70b938c97e3b818bc8f49519d3424e3f5db2a0Approve1999130102024-04-11 13:02:026 days 12 hrs ago0x799c0b0e6206346d772310e88f832ddf2b4f62ee IN  Ankr Staked ETH: ankrETH Token0 ETH0.000001690.01
0x5793d3bb381e1b23c90109a1e94ff659cd18f8eb38e685bfd169853a5436c41fApprove1998345042024-04-11 7:34:026 days 18 hrs ago0x602da2908b166dc0f897c84cc095ae2675b118c5 IN  Ankr Staked ETH: ankrETH Token0 ETH0.000001350.01
0x2950629aa66017c413d8f331e2ec53a62624748159cf21ced34b696e319f639cApprove1997591012024-04-11 2:19:106 days 23 hrs ago0x602da2908b166dc0f897c84cc095ae2675b118c5 IN  Ankr Staked ETH: ankrETH Token0 ETH0.000001020.01
0x8eb8f44095c45cca4561639b58d8a2f0fa6bfb51a1e0cb9475bd20c6ab3646c1Approve1996799042024-04-10 20:47:047 days 5 hrs ago0x3bac788c71cf5d038fca98b45f3f4b57153a5e4f IN  Ankr Staked ETH: ankrETH Token0 ETH0.000000970.01
0xf80a3c6aab86d042ae7b130067e8a4cae62ef1c3d18546f5ed1630744e36ea8aApprove1996002302024-04-10 15:11:527 days 10 hrs ago0xf508181994b962fbb9366121e49da9fa954a3ed9 IN  Ankr Staked ETH: ankrETH Token0 ETH0.00000165 0.01
0x51c892fb4123e49f4bf0fb612001818f0802476dc01277f8cc6ea169a940a7feApprove1995511132024-04-10 11:44:387 days 14 hrs ago0x180552b16df48de918c781e3eeac09371fe2c5eb IN  Ankr Staked ETH: ankrETH Token0 ETH0.00000116 0.01
0xca8fc27e4b6ff82553204afe7d5511349b91585eadb038f2c794908a42ef6c0bApprove1993424782024-04-09 21:12:188 days 4 hrs ago0x28348a7e51c290ed7e9ebae3b9cbfc90acda380b IN  Ankr Staked ETH: ankrETH Token0 ETH0.000001270.01
0x999fdf184649dc25225630acd06d93464600b7e55d966755a0a4df5058ed9229Approve1993303312024-04-09 20:21:028 days 5 hrs ago0xfb563cb2572c50480f0ff1a009da54f1fc5d9af3 IN  Ankr Staked ETH: ankrETH Token0 ETH0.000001050.01
0xa8455b31b1700cf79a9f01a8af9b01ed5a574f3a64bbcfa1aa0241fb6519df0fApprove1990500422024-04-09 0:45:429 days 1 hr ago0x1666576e3d527fb46e61dc41380f8d98a2501308 IN  Ankr Staked ETH: ankrETH Token0 ETH0.00000115 0.01
0xb046dae602d148f7560a2991c011cdbd15d2c18b2e045c68b39144a32496dc06Approve1989994412024-04-08 21:13:569 days 4 hrs ago0x631d000e8ae30d941a04a450fcb5cddb76173456 IN  Ankr Staked ETH: ankrETH Token0 ETH0.00000117 0.01
0x727f4d9f0d2bafbdf1b2fa4794c50c72864c503a678d826c9782bddcd8259fc4Approve1989087632024-04-08 14:54:299 days 10 hrs ago0xffab14b181409170378471b13ff2bff5be012c64 IN  Ankr Staked ETH: ankrETH Token0 ETH0.000001650.01
0x1e685083b0ebc4e0e0041ebbb4efb427c0c5e4ef083a674f781e81ca22caa810Approve1989037682024-04-08 14:33:359 days 11 hrs ago0xc7640068f0977f4da290e100318985d1dab50e19 IN  Ankr Staked ETH: ankrETH Token0 ETH0.00000196 0.01
0x5fc324bb6daf758761dc419599bee6019608c0ad313be402a2f23b8ab56487fbApprove1988946742024-04-08 13:55:219 days 11 hrs ago0x645b667cd9a1911f9c9f2b4a161d1455da023103 IN  Ankr Staked ETH: ankrETH Token0 ETH0.00000167 0.01
0x0832a7a3549a5e32f1dcbcdeed5cf885ab4d35de20a9e6b05df5873b2dff7009Approve1988804922024-04-08 12:55:539 days 12 hrs ago0x6ee62fb521531b587e79262d759dec8ce4fef341 IN  Ankr Staked ETH: ankrETH Token0 ETH0.00000151 0.01
0x77d425fde9942c73ced53928751325b28fd98ae22b7fd9ac8498e6374e8fe5e5Approve1986399732024-04-07 20:10:0610 days 5 hrs ago0x26e9c91e3590c403ef5ad4e53bff8584615f40f4 IN  Ankr Staked ETH: ankrETH Token0 ETH0.00000099 0.01
[ Download CSV Export 

OVERVIEW

Ankr connects developers, dApps, wallets, exchanges, and all other use cases to blockchains

Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x2505c6f38e45ed19d87fb012a799e9fa9d110cb2c6785f6c387c4bfd3ac525a0909237222023-05-15 11:05:15338 days 14 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:
InternetBondProxy

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 4 : InternetBondProxy.sol
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity ^0.8.6;

import "./interfaces/ICrossChainBridge.sol";

contract InternetBondProxy {

    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).getBondImplementation();
        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 InternetBondProxyUtils {

    bytes constant internal INTERNET_BOND_PROXY_BYTECODE = hex"608060405234801561001057600080fd5b50610215806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d42afb56146100fd575b60008061005960017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d516101a2565b60001b9050805491506000826001600160a01b0316631626425c6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561009f57600080fd5b505af11580156100b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d79190610185565b90503660008037600080366000845af43d6000803e8080156100f8573d6000f35b3d6000fd5b61011061010b366004610161565b610112565b005b60008061014060017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d516101a2565b8054925090506001600160a01b0382161561015a57600080fd5b9190915550565b60006020828403121561017357600080fd5b813561017e816101c7565b9392505050565b60006020828403121561019757600080fd5b815161017e816101c7565b6000828210156101c257634e487b7160e01b600052601160045260246000fd5b500390565b6001600160a01b03811681146101dc57600080fd5b5056fea2646970667358221220d283edebb1e56b63c1cf809c7a7219bbf056c367c289dabb51fdba5f71cdf44c64736f6c63430008060033";

    bytes32 constant internal INTERNET_BOND_PROXY_HASH = keccak256(INTERNET_BOND_PROXY_BYTECODE);

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

    function deployInternetBondProxy(address bridge, bytes32 salt, ICrossChainBridge.Metadata memory metaData, address ratioFeed) internal returns (address) {
        /* lets concat bytecode with constructor parameters */
        bytes memory bytecode = INTERNET_BOND_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, bytes memory returnValue) = result.call(abi.encodePacked(SET_BEACON_SIG, abi.encode(bridge)));
        require(success, string(abi.encodePacked("setBeacon failed: ", returnValue)));
        /* setup meta data */
        bytes memory inputData = new bytes(0xc4);
        bool isRebasing = metaData.bondMetadata[1] == bytes1(0x01);
        bytes4 selector = SET_META_DATA_SIG;
        assembly {
            mstore(add(inputData, 0x20), selector)
            mstore(add(inputData, 0x24), mload(metaData))
            mstore(add(inputData, 0x44), mload(add(metaData, 0x20)))
            mstore(add(inputData, 0x64), mload(add(metaData, 0x40)))
            mstore(add(inputData, 0x84), mload(add(metaData, 0x60)))
            mstore(add(inputData, 0xa4), ratioFeed)
            mstore(add(inputData, 0xc4), isRebasing)
        }
        (success, returnValue) = result.call(inputData);
        require(success, string(abi.encodePacked("set metadata failed: ", returnValue)));
        /* return generated contract address */
        return result;
    }

    function internetBondProxyAddress(address deployer, bytes32 salt) internal pure returns (address) {
        bytes32 bytecodeHash = keccak256(INTERNET_BOND_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"}]

608060405234801561001057600080fd5b50610215806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d42afb56146100fd575b60008061005960017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d516101a2565b60001b9050805491506000826001600160a01b0316631626425c6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561009f57600080fd5b505af11580156100b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d79190610185565b90503660008037600080366000845af43d6000803e8080156100f8573d6000f35b3d6000fd5b61011061010b366004610161565b610112565b005b60008061014060017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d516101a2565b8054925090506001600160a01b0382161561015a57600080fd5b9190915550565b60006020828403121561017357600080fd5b813561017e816101c7565b9392505050565b60006020828403121561019757600080fd5b815161017e816101c7565b6000828210156101c257634e487b7160e01b600052601160045260246000fd5b500390565b6001600160a01b03811681146101dc57600080fd5b5056fea2646970667358221220d283edebb1e56b63c1cf809c7a7219bbf056c367c289dabb51fdba5f71cdf44c64736f6c63430008060033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d42afb56146100fd575b60008061005960017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d516101a2565b60001b9050805491506000826001600160a01b0316631626425c6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561009f57600080fd5b505af11580156100b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d79190610185565b90503660008037600080366000845af43d6000803e8080156100f8573d6000f35b3d6000fd5b61011061010b366004610161565b610112565b005b60008061014060017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d516101a2565b8054925090506001600160a01b0382161561015a57600080fd5b9190915550565b60006020828403121561017357600080fd5b813561017e816101c7565b9392505050565b60006020828403121561019757600080fd5b815161017e816101c7565b6000828210156101c257634e487b7160e01b600052601160045260246000fd5b500390565b6001600160a01b03811681146101dc57600080fd5b5056fea2646970667358221220d283edebb1e56b63c1cf809c7a7219bbf056c367c289dabb51fdba5f71cdf44c64736f6c63430008060033

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.