CELO Price: $0.10 (-5.49%)

Contract

0xFFad310a995B4f676B4C896D4Ad50E43F22748EA

Overview

CELO Balance

Celo Mainnet LogoCelo Mainnet LogoCelo Mainnet Logo0 CELO

CELO Value

$0.00

More Info

Private Name Tags

Multichain Info

Transaction Hash
Block
From
To
Set Price Index ...484648152025-10-13 14:26:13110 days ago1760365573IN
0xFFad310a...3F22748EA
0 CELO0.0012104425.001
Set Price Index ...484496432025-10-13 10:13:21110 days ago1760350401IN
0xFFad310a...3F22748EA
0 CELO0.0012104425.001
Set Price Index ...483765112025-10-12 13:54:29111 days ago1760277269IN
0xFFad310a...3F22748EA
0 CELO0.0012104425.001
Set Price Index ...483763832025-10-12 13:52:21111 days ago1760277141IN
0xFFad310a...3F22748EA
0 CELO0.0012104425.001
Set Price Index ...483599782025-10-12 9:18:56111 days ago1760260736IN
0xFFad310a...3F22748EA
0 CELO0.0007835425.02048213
Set Price Index ...483595972025-10-12 9:12:35111 days ago1760260355IN
0xFFad310a...3F22748EA
0 CELO0.0007829325.001
Set Price Index ...483594922025-10-12 9:10:50111 days ago1760260250IN
0xFFad310a...3F22748EA
0 CELO0.0007829325.001
Set Price Index ...483593522025-10-12 9:08:30111 days ago1760260110IN
0xFFad310a...3F22748EA
0 CELO0.0007829325.001
Set Price Index ...483591692025-10-12 9:05:27111 days ago1760259927IN
0xFFad310a...3F22748EA
0 CELO0.0007829325.001
Set Price Index ...483590912025-10-12 9:04:09111 days ago1760259849IN
0xFFad310a...3F22748EA
0 CELO0.0007829325.001
Set Price Index ...483590392025-10-12 9:03:17111 days ago1760259797IN
0xFFad310a...3F22748EA
0 CELO0.0007829325.001
Set Price Index ...483589882025-10-12 9:02:26111 days ago1760259746IN
0xFFad310a...3F22748EA
0 CELO0.0007829325.001
Set Price Index ...483589132025-10-12 9:01:11111 days ago1760259671IN
0xFFad310a...3F22748EA
0 CELO0.0007829325.001
Set Price Index ...482849892025-10-11 12:29:07112 days ago1760185747IN
0xFFad310a...3F22748EA
0 CELO0.0007826325.001
Set Price Index ...482830812025-10-11 11:57:19112 days ago1760183839IN
0xFFad310a...3F22748EA
0 CELO0.0007832125.01014563
Set Price Index ...482826882025-10-11 11:50:46112 days ago1760183446IN
0xFFad310a...3F22748EA
0 CELO0.0012101425.001
Set Price Index ...482821292025-10-11 11:41:27112 days ago1760182887IN
0xFFad310a...3F22748EA
0 CELO0.0007829325.001
Set Price Index ...482782982025-10-11 10:37:36112 days ago1760179056IN
0xFFad310a...3F22748EA
0 CELO0.0012101425.001
Set Price Index ...482780652025-10-11 10:33:43112 days ago1760178823IN
0xFFad310a...3F22748EA
0 CELO0.0012101425.001
Set Price Index ...481952022025-10-10 11:32:40113 days ago1760095960IN
0xFFad310a...3F22748EA
0 CELO0.0012101425.001
Set Price Index ...481950752025-10-10 11:30:33113 days ago1760095833IN
0xFFad310a...3F22748EA
0 CELO0.0012101425.001
Set Price Index ...481949552025-10-10 11:28:33113 days ago1760095713IN
0xFFad310a...3F22748EA
0 CELO0.0012101425.001
Set Price Index ...481947912025-10-10 11:25:49113 days ago1760095549IN
0xFFad310a...3F22748EA
0 CELO0.0012101425.001
Set Price Index ...481947052025-10-10 11:24:23113 days ago1760095463IN
0xFFad310a...3F22748EA
0 CELO0.0012101425.001
Set Price Index ...481322392025-10-09 18:03:17114 days ago1760032997IN
0xFFad310a...3F22748EA
0 CELO0.0012101425.001
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:

Cross-Chain Transactions
Loading...
Loading

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

Contract Name:
PriceIndexQuoter

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
istanbul EvmVersion, GNU AGPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at celoscan.io on 2024-03-07
*/

// Author: Louis Holbrook <[email protected]> 0826EDA1702D1E87C6E2875121D2E7BB88C2A746
// Author: Mohamed Sohail <[email protected]>
// SPDX-License-Identifier: AGPL-3.0-or-later
// File-Version: 1
// Description: ACL-enabled ERC20 token swap quoter that queries a price index for the latest exchange rates.
pragma solidity ^0.8.0;

contract PriceIndexQuoter {
    // Implements EIP173
    address public owner;
    
    uint256 public constant DEFAULT_EXCHANGE_RATE = 10 ** 4;

    mapping(address => uint256) public priceIndex;

    event PriceIndexUpdated(address _tokenAddress, uint256 _exchangeRate);
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        owner = msg.sender;
    }

    function setPriceIndexValue(
        address _tokenAddress,
        uint256 _exchangeRate
    ) public returns (uint256) {
        require(owner == msg.sender, "ERR_NOT_OWNER");
        priceIndex[_tokenAddress] = _exchangeRate;
        emit PriceIndexUpdated(_tokenAddress, _exchangeRate);
        return _exchangeRate;
    }

    // Implements TokenQuote
    function valueFor(
        address _outToken,
        address _inToken,
        uint256 _value
    ) public returns (uint256) {
        uint8 dout;
        uint8 din;
        bool r;
        bytes memory v;

        uint256 inExchangeRate = DEFAULT_EXCHANGE_RATE;
        uint256 outExchangeRate = DEFAULT_EXCHANGE_RATE;

        if (priceIndex[_inToken] > 0) {
            inExchangeRate = priceIndex[_inToken];
        }

        if (priceIndex[_outToken] > 0) {
            outExchangeRate = priceIndex[_outToken];
        }

        (r, v) = _outToken.call(abi.encodeWithSignature("decimals()"));
        require(r, "ERR_TOKEN_OUT");
        dout = abi.decode(v, (uint8));

        (r, v) = _inToken.call(abi.encodeWithSignature("decimals()"));
        require(r, "ERR_TOKEN_IN");
        din = abi.decode(v, (uint8));

        if (din == dout) {
            return determineOutput(_value, inExchangeRate, outExchangeRate);
        }

        uint256 d = din > dout ? 10 ** ((din - dout)) : 10 ** ((dout - din));
        if (din > dout) {
            return determineOutput(_value / d, inExchangeRate, outExchangeRate);
        } else {
            return determineOutput(_value * d, inExchangeRate, outExchangeRate);
        }
    }

    // When testing with forge convert to a public function
    // https://github.com/foundry-rs/foundry/issues/1040
    function determineOutput(uint256 inputValue, uint256 inExchangeRate, uint256 outExchangeRate) internal pure returns (uint256) {
        return (inputValue * inExchangeRate) / outExchangeRate;
    }

    // Implements EIP173
    function transferOwnership(address _newOwner) public returns (bool) {
        address oldOwner;
        require(msg.sender == owner, "ERR_AXX");

        oldOwner = owner;
        owner = _newOwner;

        emit OwnershipTransferred(oldOwner, owner);
        return true;
    }

    // Implements EIP165
    function supportsInterface(bytes4 _sum) public pure returns (bool) {
        if (_sum == 0x01ffc9a7) {
            // ERC165
            return true;
        }
        if (_sum == 0x9493f8b2) {
            // ERC173
            return true;
        }
        if (_sum == 0xdbb21d40) {
            // TokenQuote
            return true;
        }
        return false;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_tokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"_exchangeRate","type":"uint256"}],"name":"PriceIndexUpdated","type":"event"},{"inputs":[],"name":"DEFAULT_EXCHANGE_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"priceIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_exchangeRate","type":"uint256"}],"name":"setPriceIndexValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_outToken","type":"address"},{"internalType":"address","name":"_inToken","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"valueFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]

0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111c9806100606000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b14610100578063dbb21d401461011e578063ebc59dff1461014e578063f2fde38b1461017e5761007d565b806301ffc9a71461008257806362dfa4a5146100b257806379e25f3a146100d0575b600080fd5b61009c60048036038101906100979190610a2c565b6101ae565b6040516100a99190610a74565b60405180910390f35b6100ba61025c565b6040516100c79190610aa8565b60405180910390f35b6100ea60048036038101906100e59190610b21565b610262565b6040516100f79190610aa8565b60405180910390f35b61010861027a565b6040516101159190610b5d565b60405180910390f35b61013860048036038101906101339190610ba4565b61029e565b6040516101459190610aa8565b60405180910390f35b61016860048036038101906101639190610bf7565b61071f565b6040516101759190610aa8565b60405180910390f35b61019860048036038101906101939190610b21565b610835565b6040516101a59190610a74565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036101e65760019050610257565b639493f8b260e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361021c5760019050610257565b63dbb21d4060e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036102525760019050610257565b600090505b919050565b61271081565b60016020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080606060006127109050600061271090506000600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561033f57600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491505b6000600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156103ca57600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b8973ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f313ce567000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516104719190610ca8565b6000604051808303816000865af19150503d80600081146104ae576040519150601f19603f3d011682016040523d82523d6000602084013e6104b3565b606091505b508094508195505050836104fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f390610d1c565b60405180910390fd5b828060200190518101906105109190610d75565b95508873ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f313ce567000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516105b99190610ca8565b6000604051808303816000865af19150503d80600081146105f6576040519150601f19603f3d011682016040523d82523d6000602084013e6105fb565b606091505b50809450819550505083610644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063b90610dee565b60405180910390fd5b828060200190518101906106589190610d75565b94508560ff168560ff160361067f576106728883836109ad565b9650505050505050610718565b60008660ff168660ff16116106ab57858761069a9190610e3d565b600a6106a69190610fa5565b6106c4565b86866106b79190610e3d565b600a6106c39190610fa5565b5b90508660ff168660ff1611156106f8576106ea818a6106e3919061101f565b84846109ad565b975050505050505050610718565b61070e818a6107079190611050565b84846109ad565b9750505050505050505b9392505050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a6906110de565b60405180910390fd5b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fdb9ce1a76955721ca61ac50cd1b87f9ab8620325c8619a62192c2dc7871d56b183836040516108249291906110fe565b60405180910390a181905092915050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd90611173565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36001915050919050565b60008183856109bc9190611050565b6109c6919061101f565b90509392505050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610a09816109d4565b8114610a1457600080fd5b50565b600081359050610a2681610a00565b92915050565b600060208284031215610a4257610a416109cf565b5b6000610a5084828501610a17565b91505092915050565b60008115159050919050565b610a6e81610a59565b82525050565b6000602082019050610a896000830184610a65565b92915050565b6000819050919050565b610aa281610a8f565b82525050565b6000602082019050610abd6000830184610a99565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610aee82610ac3565b9050919050565b610afe81610ae3565b8114610b0957600080fd5b50565b600081359050610b1b81610af5565b92915050565b600060208284031215610b3757610b366109cf565b5b6000610b4584828501610b0c565b91505092915050565b610b5781610ae3565b82525050565b6000602082019050610b726000830184610b4e565b92915050565b610b8181610a8f565b8114610b8c57600080fd5b50565b600081359050610b9e81610b78565b92915050565b600080600060608486031215610bbd57610bbc6109cf565b5b6000610bcb86828701610b0c565b9350506020610bdc86828701610b0c565b9250506040610bed86828701610b8f565b9150509250925092565b60008060408385031215610c0e57610c0d6109cf565b5b6000610c1c85828601610b0c565b9250506020610c2d85828601610b8f565b9150509250929050565b600081519050919050565b600081905092915050565b60005b83811015610c6b578082015181840152602081019050610c50565b60008484015250505050565b6000610c8282610c37565b610c8c8185610c42565b9350610c9c818560208601610c4d565b80840191505092915050565b6000610cb48284610c77565b915081905092915050565b600082825260208201905092915050565b7f4552525f544f4b454e5f4f555400000000000000000000000000000000000000600082015250565b6000610d06600d83610cbf565b9150610d1182610cd0565b602082019050919050565b60006020820190508181036000830152610d3581610cf9565b9050919050565b600060ff82169050919050565b610d5281610d3c565b8114610d5d57600080fd5b50565b600081519050610d6f81610d49565b92915050565b600060208284031215610d8b57610d8a6109cf565b5b6000610d9984828501610d60565b91505092915050565b7f4552525f544f4b454e5f494e0000000000000000000000000000000000000000600082015250565b6000610dd8600c83610cbf565b9150610de382610da2565b602082019050919050565b60006020820190508181036000830152610e0781610dcb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e4882610d3c565b9150610e5383610d3c565b9250828203905060ff811115610e6c57610e6b610e0e565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115610ec957808604811115610ea557610ea4610e0e565b5b6001851615610eb45780820291505b8081029050610ec285610e72565b9450610e89565b94509492505050565b600082610ee25760019050610f9e565b81610ef05760009050610f9e565b8160018114610f065760028114610f1057610f3f565b6001915050610f9e565b60ff841115610f2257610f21610e0e565b5b8360020a915084821115610f3957610f38610e0e565b5b50610f9e565b5060208310610133831016604e8410600b8410161715610f745782820a905083811115610f6f57610f6e610e0e565b5b610f9e565b610f818484846001610e7f565b92509050818404811115610f9857610f97610e0e565b5b81810290505b9392505050565b6000610fb082610a8f565b9150610fbb83610d3c565b9250610fe87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610ed2565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061102a82610a8f565b915061103583610a8f565b92508261104557611044610ff0565b5b828204905092915050565b600061105b82610a8f565b915061106683610a8f565b925082820261107481610a8f565b9150828204841483151761108b5761108a610e0e565b5b5092915050565b7f4552525f4e4f545f4f574e455200000000000000000000000000000000000000600082015250565b60006110c8600d83610cbf565b91506110d382611092565b602082019050919050565b600060208201905081810360008301526110f7816110bb565b9050919050565b60006040820190506111136000830185610b4e565b6111206020830184610a99565b9392505050565b7f4552525f41585800000000000000000000000000000000000000000000000000600082015250565b600061115d600783610cbf565b915061116882611127565b602082019050919050565b6000602082019050818103600083015261118c81611150565b905091905056fea264697066735822122098603741719639e482e6d691a755167cf8fc9bdfb7b55562a03952e9dccfe71a64736f6c63430008180033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b14610100578063dbb21d401461011e578063ebc59dff1461014e578063f2fde38b1461017e5761007d565b806301ffc9a71461008257806362dfa4a5146100b257806379e25f3a146100d0575b600080fd5b61009c60048036038101906100979190610a2c565b6101ae565b6040516100a99190610a74565b60405180910390f35b6100ba61025c565b6040516100c79190610aa8565b60405180910390f35b6100ea60048036038101906100e59190610b21565b610262565b6040516100f79190610aa8565b60405180910390f35b61010861027a565b6040516101159190610b5d565b60405180910390f35b61013860048036038101906101339190610ba4565b61029e565b6040516101459190610aa8565b60405180910390f35b61016860048036038101906101639190610bf7565b61071f565b6040516101759190610aa8565b60405180910390f35b61019860048036038101906101939190610b21565b610835565b6040516101a59190610a74565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036101e65760019050610257565b639493f8b260e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361021c5760019050610257565b63dbb21d4060e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036102525760019050610257565b600090505b919050565b61271081565b60016020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080606060006127109050600061271090506000600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561033f57600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491505b6000600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156103ca57600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b8973ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f313ce567000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516104719190610ca8565b6000604051808303816000865af19150503d80600081146104ae576040519150601f19603f3d011682016040523d82523d6000602084013e6104b3565b606091505b508094508195505050836104fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f390610d1c565b60405180910390fd5b828060200190518101906105109190610d75565b95508873ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f313ce567000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516105b99190610ca8565b6000604051808303816000865af19150503d80600081146105f6576040519150601f19603f3d011682016040523d82523d6000602084013e6105fb565b606091505b50809450819550505083610644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063b90610dee565b60405180910390fd5b828060200190518101906106589190610d75565b94508560ff168560ff160361067f576106728883836109ad565b9650505050505050610718565b60008660ff168660ff16116106ab57858761069a9190610e3d565b600a6106a69190610fa5565b6106c4565b86866106b79190610e3d565b600a6106c39190610fa5565b5b90508660ff168660ff1611156106f8576106ea818a6106e3919061101f565b84846109ad565b975050505050505050610718565b61070e818a6107079190611050565b84846109ad565b9750505050505050505b9392505050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a6906110de565b60405180910390fd5b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fdb9ce1a76955721ca61ac50cd1b87f9ab8620325c8619a62192c2dc7871d56b183836040516108249291906110fe565b60405180910390a181905092915050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd90611173565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36001915050919050565b60008183856109bc9190611050565b6109c6919061101f565b90509392505050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610a09816109d4565b8114610a1457600080fd5b50565b600081359050610a2681610a00565b92915050565b600060208284031215610a4257610a416109cf565b5b6000610a5084828501610a17565b91505092915050565b60008115159050919050565b610a6e81610a59565b82525050565b6000602082019050610a896000830184610a65565b92915050565b6000819050919050565b610aa281610a8f565b82525050565b6000602082019050610abd6000830184610a99565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610aee82610ac3565b9050919050565b610afe81610ae3565b8114610b0957600080fd5b50565b600081359050610b1b81610af5565b92915050565b600060208284031215610b3757610b366109cf565b5b6000610b4584828501610b0c565b91505092915050565b610b5781610ae3565b82525050565b6000602082019050610b726000830184610b4e565b92915050565b610b8181610a8f565b8114610b8c57600080fd5b50565b600081359050610b9e81610b78565b92915050565b600080600060608486031215610bbd57610bbc6109cf565b5b6000610bcb86828701610b0c565b9350506020610bdc86828701610b0c565b9250506040610bed86828701610b8f565b9150509250925092565b60008060408385031215610c0e57610c0d6109cf565b5b6000610c1c85828601610b0c565b9250506020610c2d85828601610b8f565b9150509250929050565b600081519050919050565b600081905092915050565b60005b83811015610c6b578082015181840152602081019050610c50565b60008484015250505050565b6000610c8282610c37565b610c8c8185610c42565b9350610c9c818560208601610c4d565b80840191505092915050565b6000610cb48284610c77565b915081905092915050565b600082825260208201905092915050565b7f4552525f544f4b454e5f4f555400000000000000000000000000000000000000600082015250565b6000610d06600d83610cbf565b9150610d1182610cd0565b602082019050919050565b60006020820190508181036000830152610d3581610cf9565b9050919050565b600060ff82169050919050565b610d5281610d3c565b8114610d5d57600080fd5b50565b600081519050610d6f81610d49565b92915050565b600060208284031215610d8b57610d8a6109cf565b5b6000610d9984828501610d60565b91505092915050565b7f4552525f544f4b454e5f494e0000000000000000000000000000000000000000600082015250565b6000610dd8600c83610cbf565b9150610de382610da2565b602082019050919050565b60006020820190508181036000830152610e0781610dcb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e4882610d3c565b9150610e5383610d3c565b9250828203905060ff811115610e6c57610e6b610e0e565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115610ec957808604811115610ea557610ea4610e0e565b5b6001851615610eb45780820291505b8081029050610ec285610e72565b9450610e89565b94509492505050565b600082610ee25760019050610f9e565b81610ef05760009050610f9e565b8160018114610f065760028114610f1057610f3f565b6001915050610f9e565b60ff841115610f2257610f21610e0e565b5b8360020a915084821115610f3957610f38610e0e565b5b50610f9e565b5060208310610133831016604e8410600b8410161715610f745782820a905083811115610f6f57610f6e610e0e565b5b610f9e565b610f818484846001610e7f565b92509050818404811115610f9857610f97610e0e565b5b81810290505b9392505050565b6000610fb082610a8f565b9150610fbb83610d3c565b9250610fe87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610ed2565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061102a82610a8f565b915061103583610a8f565b92508261104557611044610ff0565b5b828204905092915050565b600061105b82610a8f565b915061106683610a8f565b925082820261107481610a8f565b9150828204841483151761108b5761108a610e0e565b5b5092915050565b7f4552525f4e4f545f4f574e455200000000000000000000000000000000000000600082015250565b60006110c8600d83610cbf565b91506110d382611092565b602082019050919050565b600060208201905081810360008301526110f7816110bb565b9050919050565b60006040820190506111136000830185610b4e565b6111206020830184610a99565b9392505050565b7f4552525f41585800000000000000000000000000000000000000000000000000600082015250565b600061115d600783610cbf565b915061116882611127565b602082019050919050565b6000602082019050818103600083015261118c81611150565b905091905056fea264697066735822122098603741719639e482e6d691a755167cf8fc9bdfb7b55562a03952e9dccfe71a64736f6c63430008180033

Deployed Bytecode Sourcemap

341:3181:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3132:387;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;433:55;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;497:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;400:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1175:1276;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;803:334;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2811:287;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3132:387;3193:4;3222:10;3214:18;;:4;:18;;;;3210:85;;3279:4;3272:11;;;;3210:85;3317:10;3309:18;;:4;:18;;;;3305:85;;3374:4;3367:11;;;;3305:85;3412:10;3404:18;;:4;:18;;;;3400:89;;3473:4;3466:11;;;;3400:89;3506:5;3499:12;;3132:387;;;;:::o;433:55::-;481:7;433:55;:::o;497:45::-;;;;;;;;;;;;;;;;;:::o;400:20::-;;;;;;;;;;;;:::o;1175:1276::-;1296:7;1316:10;1337:9;1357:6;1374:14;1401:22;481:7;1401:46;;1458:23;481:7;1458:47;;1545:1;1522:10;:20;1533:8;1522:20;;;;;;;;;;;;;;;;:24;1518:94;;;1580:10;:20;1591:8;1580:20;;;;;;;;;;;;;;;;1563:37;;1518:94;1652:1;1628:10;:21;1639:9;1628:21;;;;;;;;;;;;;;;;:25;1624:97;;;1688:10;:21;1699:9;1688:21;;;;;;;;;;;;;;;;1670:39;;1624:97;1742:9;:14;;1757:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1742:53;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1733:62;;;;;;;;1814:1;1806:27;;;;;;;;;;;;:::i;:::-;;;;;;;;;1862:1;1851:22;;;;;;;;;;;;:::i;:::-;1844:29;;1895:8;:13;;1909:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1895:52;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1886:61;;;;;;;;1966:1;1958:26;;;;;;;;;;;;:::i;:::-;;;;;;;;;2012:1;2001:22;;;;;;;;;;;;:::i;:::-;1995:28;;2047:4;2040:11;;:3;:11;;;2036:107;;2075:56;2091:6;2099:14;2115:15;2075;:56::i;:::-;2068:63;;;;;;;;;;2036:107;2155:9;2173:4;2167:10;;:3;:10;;;:56;;2218:3;2211:4;:10;;;;:::i;:::-;2203:2;:20;;;;:::i;:::-;2167:56;;;2194:4;2188:3;:10;;;;:::i;:::-;2180:2;:20;;;;:::i;:::-;2167:56;2155:68;;2244:4;2238:10;;:3;:10;;;2234:210;;;2272:60;2297:1;2288:6;:10;;;;:::i;:::-;2300:14;2316:15;2272;:60::i;:::-;2265:67;;;;;;;;;;;2234:210;2372:60;2397:1;2388:6;:10;;;;:::i;:::-;2400:14;2416:15;2372;:60::i;:::-;2365:67;;;;;;;;;1175:1276;;;;;;:::o;803:334::-;918:7;955:10;946:19;;:5;;;;;;;;;;:19;;;938:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;1022:13;994:10;:25;1005:13;994:25;;;;;;;;;;;;;;;:41;;;;1051:47;1069:13;1084;1051:47;;;;;;;:::i;:::-;;;;;;;;1116:13;1109:20;;803:334;;;;:::o;2811:287::-;2873:4;2890:16;2939:5;;;;;;;;;;2925:19;;:10;:19;;;2917:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;2980:5;;;;;;;;;;2969:16;;3004:9;2996:5;;:17;;;;;;;;;;;;;;;;;;3062:5;;;;;;;;;;3031:37;;3052:8;3031:37;;;;;;;;;;;;3086:4;3079:11;;;2811:287;;;:::o;2578:199::-;2695:7;2754:15;2736:14;2723:10;:27;;;;:::i;:::-;2722:47;;;;:::i;:::-;2715:54;;2578:199;;;;;:::o;88:117:1:-;197:1;194;187:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:77::-;1555:7;1584:5;1573:16;;1518:77;;;:::o;1601:118::-;1688:24;1706:5;1688:24;:::i;:::-;1683:3;1676:37;1601:118;;:::o;1725:222::-;1818:4;1856:2;1845:9;1841:18;1833:26;;1869:71;1937:1;1926:9;1922:17;1913:6;1869:71;:::i;:::-;1725:222;;;;:::o;1953:126::-;1990:7;2030:42;2023:5;2019:54;2008:65;;1953:126;;;:::o;2085:96::-;2122:7;2151:24;2169:5;2151:24;:::i;:::-;2140:35;;2085:96;;;:::o;2187:122::-;2260:24;2278:5;2260:24;:::i;:::-;2253:5;2250:35;2240:63;;2299:1;2296;2289:12;2240:63;2187:122;:::o;2315:139::-;2361:5;2399:6;2386:20;2377:29;;2415:33;2442:5;2415:33;:::i;:::-;2315:139;;;;:::o;2460:329::-;2519:6;2568:2;2556:9;2547:7;2543:23;2539:32;2536:119;;;2574:79;;:::i;:::-;2536:119;2694:1;2719:53;2764:7;2755:6;2744:9;2740:22;2719:53;:::i;:::-;2709:63;;2665:117;2460:329;;;;:::o;2795:118::-;2882:24;2900:5;2882:24;:::i;:::-;2877:3;2870:37;2795:118;;:::o;2919:222::-;3012:4;3050:2;3039:9;3035:18;3027:26;;3063:71;3131:1;3120:9;3116:17;3107:6;3063:71;:::i;:::-;2919:222;;;;:::o;3147:122::-;3220:24;3238:5;3220:24;:::i;:::-;3213:5;3210:35;3200:63;;3259:1;3256;3249:12;3200:63;3147:122;:::o;3275:139::-;3321:5;3359:6;3346:20;3337:29;;3375:33;3402:5;3375:33;:::i;:::-;3275:139;;;;:::o;3420:619::-;3497:6;3505;3513;3562:2;3550:9;3541:7;3537:23;3533:32;3530:119;;;3568:79;;:::i;:::-;3530:119;3688:1;3713:53;3758:7;3749:6;3738:9;3734:22;3713:53;:::i;:::-;3703:63;;3659:117;3815:2;3841:53;3886:7;3877:6;3866:9;3862:22;3841:53;:::i;:::-;3831:63;;3786:118;3943:2;3969:53;4014:7;4005:6;3994:9;3990:22;3969:53;:::i;:::-;3959:63;;3914:118;3420:619;;;;;:::o;4045:474::-;4113:6;4121;4170:2;4158:9;4149:7;4145:23;4141:32;4138:119;;;4176:79;;:::i;:::-;4138:119;4296:1;4321:53;4366:7;4357:6;4346:9;4342:22;4321:53;:::i;:::-;4311:63;;4267:117;4423:2;4449:53;4494:7;4485:6;4474:9;4470:22;4449:53;:::i;:::-;4439:63;;4394:118;4045:474;;;;;:::o;4525:98::-;4576:6;4610:5;4604:12;4594:22;;4525:98;;;:::o;4629:147::-;4730:11;4767:3;4752:18;;4629:147;;;;:::o;4782:246::-;4863:1;4873:113;4887:6;4884:1;4881:13;4873:113;;;4972:1;4967:3;4963:11;4957:18;4953:1;4948:3;4944:11;4937:39;4909:2;4906:1;4902:10;4897:15;;4873:113;;;5020:1;5011:6;5006:3;5002:16;4995:27;4844:184;4782:246;;;:::o;5034:386::-;5138:3;5166:38;5198:5;5166:38;:::i;:::-;5220:88;5301:6;5296:3;5220:88;:::i;:::-;5213:95;;5317:65;5375:6;5370:3;5363:4;5356:5;5352:16;5317:65;:::i;:::-;5407:6;5402:3;5398:16;5391:23;;5142:278;5034:386;;;;:::o;5426:271::-;5556:3;5578:93;5667:3;5658:6;5578:93;:::i;:::-;5571:100;;5688:3;5681:10;;5426:271;;;;:::o;5703:169::-;5787:11;5821:6;5816:3;5809:19;5861:4;5856:3;5852:14;5837:29;;5703:169;;;;:::o;5878:163::-;6018:15;6014:1;6006:6;6002:14;5995:39;5878:163;:::o;6047:366::-;6189:3;6210:67;6274:2;6269:3;6210:67;:::i;:::-;6203:74;;6286:93;6375:3;6286:93;:::i;:::-;6404:2;6399:3;6395:12;6388:19;;6047:366;;;:::o;6419:419::-;6585:4;6623:2;6612:9;6608:18;6600:26;;6672:9;6666:4;6662:20;6658:1;6647:9;6643:17;6636:47;6700:131;6826:4;6700:131;:::i;:::-;6692:139;;6419:419;;;:::o;6844:86::-;6879:7;6919:4;6912:5;6908:16;6897:27;;6844:86;;;:::o;6936:118::-;7007:22;7023:5;7007:22;:::i;:::-;7000:5;6997:33;6987:61;;7044:1;7041;7034:12;6987:61;6936:118;:::o;7060:139::-;7115:5;7146:6;7140:13;7131:22;;7162:31;7187:5;7162:31;:::i;:::-;7060:139;;;;:::o;7205:347::-;7273:6;7322:2;7310:9;7301:7;7297:23;7293:32;7290:119;;;7328:79;;:::i;:::-;7290:119;7448:1;7473:62;7527:7;7518:6;7507:9;7503:22;7473:62;:::i;:::-;7463:72;;7419:126;7205:347;;;;:::o;7558:162::-;7698:14;7694:1;7686:6;7682:14;7675:38;7558:162;:::o;7726:366::-;7868:3;7889:67;7953:2;7948:3;7889:67;:::i;:::-;7882:74;;7965:93;8054:3;7965:93;:::i;:::-;8083:2;8078:3;8074:12;8067:19;;7726:366;;;:::o;8098:419::-;8264:4;8302:2;8291:9;8287:18;8279:26;;8351:9;8345:4;8341:20;8337:1;8326:9;8322:17;8315:47;8379:131;8505:4;8379:131;:::i;:::-;8371:139;;8098:419;;;:::o;8523:180::-;8571:77;8568:1;8561:88;8668:4;8665:1;8658:15;8692:4;8689:1;8682:15;8709:191;8747:4;8767:18;8783:1;8767:18;:::i;:::-;8762:23;;8799:18;8815:1;8799:18;:::i;:::-;8794:23;;8841:1;8838;8834:9;8826:17;;8865:4;8859;8856:14;8853:40;;;8873:18;;:::i;:::-;8853:40;8709:191;;;;:::o;8906:102::-;8948:8;8995:5;8992:1;8988:13;8967:34;;8906:102;;;:::o;9014:848::-;9075:5;9082:4;9106:6;9097:15;;9130:5;9121:14;;9144:712;9165:1;9155:8;9152:15;9144:712;;;9260:4;9255:3;9251:14;9245:4;9242:24;9239:50;;;9269:18;;:::i;:::-;9239:50;9319:1;9309:8;9305:16;9302:451;;;9734:4;9727:5;9723:16;9714:25;;9302:451;9784:4;9778;9774:15;9766:23;;9814:32;9837:8;9814:32;:::i;:::-;9802:44;;9144:712;;;9014:848;;;;;;;:::o;9868:1073::-;9922:5;10113:8;10103:40;;10134:1;10125:10;;10136:5;;10103:40;10162:4;10152:36;;10179:1;10170:10;;10181:5;;10152:36;10248:4;10296:1;10291:27;;;;10332:1;10327:191;;;;10241:277;;10291:27;10309:1;10300:10;;10311:5;;;10327:191;10372:3;10362:8;10359:17;10356:43;;;10379:18;;:::i;:::-;10356:43;10428:8;10425:1;10421:16;10412:25;;10463:3;10456:5;10453:14;10450:40;;;10470:18;;:::i;:::-;10450:40;10503:5;;;10241:277;;10627:2;10617:8;10614:16;10608:3;10602:4;10599:13;10595:36;10577:2;10567:8;10564:16;10559:2;10553:4;10550:12;10546:35;10530:111;10527:246;;;10683:8;10677:4;10673:19;10664:28;;10718:3;10711:5;10708:14;10705:40;;;10725:18;;:::i;:::-;10705:40;10758:5;;10527:246;10798:42;10836:3;10826:8;10820:4;10817:1;10798:42;:::i;:::-;10783:57;;;;10872:4;10867:3;10863:14;10856:5;10853:25;10850:51;;;10881:18;;:::i;:::-;10850:51;10930:4;10923:5;10919:16;10910:25;;9868:1073;;;;;;:::o;10947:281::-;11005:5;11029:23;11047:4;11029:23;:::i;:::-;11021:31;;11073:25;11089:8;11073:25;:::i;:::-;11061:37;;11117:104;11154:66;11144:8;11138:4;11117:104;:::i;:::-;11108:113;;10947:281;;;;:::o;11234:180::-;11282:77;11279:1;11272:88;11379:4;11376:1;11369:15;11403:4;11400:1;11393:15;11420:185;11460:1;11477:20;11495:1;11477:20;:::i;:::-;11472:25;;11511:20;11529:1;11511:20;:::i;:::-;11506:25;;11550:1;11540:35;;11555:18;;:::i;:::-;11540:35;11597:1;11594;11590:9;11585:14;;11420:185;;;;:::o;11611:410::-;11651:7;11674:20;11692:1;11674:20;:::i;:::-;11669:25;;11708:20;11726:1;11708:20;:::i;:::-;11703:25;;11763:1;11760;11756:9;11785:30;11803:11;11785:30;:::i;:::-;11774:41;;11964:1;11955:7;11951:15;11948:1;11945:22;11925:1;11918:9;11898:83;11875:139;;11994:18;;:::i;:::-;11875:139;11659:362;11611:410;;;;:::o;12027:163::-;12167:15;12163:1;12155:6;12151:14;12144:39;12027:163;:::o;12196:366::-;12338:3;12359:67;12423:2;12418:3;12359:67;:::i;:::-;12352:74;;12435:93;12524:3;12435:93;:::i;:::-;12553:2;12548:3;12544:12;12537:19;;12196:366;;;:::o;12568:419::-;12734:4;12772:2;12761:9;12757:18;12749:26;;12821:9;12815:4;12811:20;12807:1;12796:9;12792:17;12785:47;12849:131;12975:4;12849:131;:::i;:::-;12841:139;;12568:419;;;:::o;12993:332::-;13114:4;13152:2;13141:9;13137:18;13129:26;;13165:71;13233:1;13222:9;13218:17;13209:6;13165:71;:::i;:::-;13246:72;13314:2;13303:9;13299:18;13290:6;13246:72;:::i;:::-;12993:332;;;;;:::o;13331:157::-;13471:9;13467:1;13459:6;13455:14;13448:33;13331:157;:::o;13494:365::-;13636:3;13657:66;13721:1;13716:3;13657:66;:::i;:::-;13650:73;;13732:93;13821:3;13732:93;:::i;:::-;13850:2;13845:3;13841:12;13834:19;;13494:365;;;:::o;13865:419::-;14031:4;14069:2;14058:9;14054:18;14046:26;;14118:9;14112:4;14108:20;14104:1;14093:9;14089:17;14082:47;14146:131;14272:4;14146:131;:::i;:::-;14138:139;;13865:419;;;:::o

Swarm Source

ipfs://98603741719639e482e6d691a755167cf8fc9bdfb7b55562a03952e9dccfe71a

Block Transaction Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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