Polygon Sponsored slots available. Book your slot here!
Contract Overview
Balance:
0 MATIC
MATIC Value:
$0.00
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
Oracle
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT // ______ __ // / \ / | // _______ ______ ______ _______ /$$$$$$ |$$/ _______ ______ _______ _______ ______ // / | / \ / \ / \ $$ |_ $$/ / |/ \ / \ / \ / | / \ // /$$$$$$$/ /$$$$$$ |/$$$$$$ |$$$$$$$ | $$ | $$ |$$$$$$$ | $$$$$$ |$$$$$$$ |/$$$$$$$/ /$$$$$$ | // $$ | $$ | $$ |$$ | $$/ $$ | $$ | $$$$/ $$ |$$ | $$ | / $$ |$$ | $$ |$$ | $$ $$ | // $$ \_____ $$ \__$$ |$$ | $$ | $$ | $$ | $$ |$$ | $$ |/$$$$$$$ |$$ | $$ |$$ \_____ $$$$$$$$/ // $$ |$$ $$/ $$ | $$ | $$ | $$ | $$ |$$ | $$ |$$ $$ |$$ | $$ |$$ |$$ | // $$$$$$$/ $$$$$$/ $$/ $$/ $$/ $$/ $$/ $$/ $$/ $$$$$$$/ $$/ $$/ $$$$$$$/ $$$$$$$/ // .-. // .-""`""-. |(@ @) // _/`oOoOoOoOo`\_ \ \-/ // '.-=-=-=-=-=-=-.' \/ \ // `-=.=-.-=.=-' \ /\ // ^ ^ ^ _H_ \ pragma solidity ^0.8.0; import "./interfaces/IOffchainOracle.sol"; import "./interfaces/IChainlinkOracle.sol"; import "./interfaces/IUniswapV2Pair.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; contract Oracle is Ownable { struct Token { uint256 index; bool active; } IOffchainOracle public oracle = IOffchainOracle(0x7F069df72b7A39bCE9806e3AfaF579E54D8CF2b9); IERC20 public USDC = IERC20(0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174); IChainlinkOracle public usdcOracle = IChainlinkOracle(0xfE4A8cc5b5B2366C1B58Bea3858e81843581b2F7); IERC20[] public tokens; mapping(IERC20 => Token) public tokenInfo; uint8 public constant decimals = 6; event TokenAdded(address indexed token); event TokenRemoved(address indexed token); function getRateUSD(IERC20 token) public view returns (uint256) { ( , int256 answer, , , ) = usdcOracle.latestRoundData(); if(token == USDC) { return uint256(answer) / 1e2; } uint256 rateUSDC = oracle.getRate(token, USDC, true); uint256 denominator = 10 ** (18 - IERC20Metadata(address(token)).decimals()); rateUSDC /= denominator; return (rateUSDC * 1e8) / uint256(answer); } function getLpRateUSD(IUniswapV2Pair lpToken) public view returns (uint256) { IERC20Metadata token0 = IERC20Metadata(lpToken.token0()); IERC20Metadata token1 = IERC20Metadata(lpToken.token1()); (uint112 reserve0, uint112 reserve1, ) = lpToken.getReserves(); uint256 rate0USD = getRateUSD(token0); uint256 rate1USD = getRateUSD(token1); uint256 denominator0 = 10 ** token0.decimals(); uint256 denominator1 = 10 ** token1.decimals(); uint256 token0TotalUSD = (rate0USD * reserve0) / denominator0; uint256 token1TotalUSD = (rate1USD * reserve1) / denominator1; uint256 totalUSD = token0TotalUSD + token1TotalUSD; return (totalUSD * (10**lpToken.decimals())) / lpToken.totalSupply(); } function addTokens(IERC20[] memory _tokens) external onlyOwner { for(uint256 i = 0; i < _tokens.length; i++) { require(!tokenInfo[_tokens[i]].active, "CornFi Oracle: Token already added"); tokenInfo[_tokens[i]] = Token(tokens.length, true); tokens.push(_tokens[i]); emit TokenAdded(address(_tokens[i])); } } function removeToken(IERC20 _token) external onlyOwner { require(tokenInfo[_token].active, "CornFi Oracle: Inactive token"); Token storage removedToken = tokenInfo[_token]; IERC20 _lastToken = tokens[tokens.length-1]; Token storage lastToken = tokenInfo[_lastToken]; tokens[removedToken.index] = tokens[lastToken.index]; lastToken = removedToken; delete tokenInfo[_token]; emit TokenRemoved(address(_token)); } }
pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; interface IOffchainOracle { function getRateToEth(IERC20 srcToken, bool useSrcWrappers) external view returns (uint256 weightedRate); function getRate(IERC20 srcToken, IERC20 dstToken, bool useWrappers) external view returns (uint256 weightedRate); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IChainlinkOracle { function decimals() external view returns (uint8); function description() external view returns (string memory); function version() external view returns (uint256); // getRoundData and latestRoundData should both raise "No data present" // if they do not have data to report, instead of returning unset values // which could be misinterpreted as actual reported values. function getRoundData(uint80 _roundId) external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ); function latestRoundData() external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ); }
pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @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. * * By default, the owner account will be the one that deploys the contract. 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; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing 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 { require(newOwner != address(0), "Ownable: new owner is the zero address"); _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); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; import "../IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); }
// 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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @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; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":true,"internalType":"address","name":"token","type":"address"}],"name":"TokenAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"}],"name":"TokenRemoved","type":"event"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"_tokens","type":"address[]"}],"name":"addTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IUniswapV2Pair","name":"lpToken","type":"address"}],"name":"getLpRateUSD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getRateUSD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracle","outputs":[{"internalType":"contract IOffchainOracle","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"removeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"name":"tokenInfo","outputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"bool","name":"active","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdcOracle","outputs":[{"internalType":"contract IChainlinkOracle","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052737f069df72b7a39bce9806e3afaf579e54d8cf2b9600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732791bca1f2de4661ed88a30c99a7a9449aa84174600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fe4a8cc5b5b2366c1b58bea3858e81843581b2f7600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561010f57600080fd5b5061012c61012161013160201b60201c565b61013960201b60201c565b6101fd565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612174806200020d6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806389a302711161008c578063bdaf1fee11610066578063bdaf1fee146101dc578063eecc7bfe1461020c578063f2fde38b1461023c578063f5dab71114610258576100cf565b806389a30271146101825780638da5cb5b146101a0578063a382fe62146101be576100cf565b8063313ce567146100d45780634ae05c7d146100f25780634f64b2be1461010e5780635fa7b5841461013e578063715018a61461015a5780637dc0d1d014610164575b600080fd5b6100dc610289565b6040516100e991906119f4565b60405180910390f35b61010c600480360381019061010791906115c4565b61028e565b005b610128600480360381019061012391906116a6565b6105ec565b60405161013591906118c3565b60405180910390f35b61015860048036038101906101539190611605565b61062b565b005b6101626109cf565b005b61016c610a57565b6040516101799190611915565b60405180910390f35b61018a610a7d565b60405161019791906118c3565b60405180910390f35b6101a8610aa3565b6040516101b5919061188d565b60405180910390f35b6101c6610acc565b6040516101d391906118a8565b60405180910390f35b6101f660048036038101906101f1919061162e565b610af2565b60405161020391906119b0565b60405180910390f35b61022660048036038101906102219190611605565b610f48565b60405161023391906119b0565b60405180910390f35b61025660048036038101906102519190611572565b611200565b005b610272600480360381019061026d9190611605565b6112f8565b6040516102809291906119cb565b60405180910390f35b600681565b610296611329565b73ffffffffffffffffffffffffffffffffffffffff166102b4610aa3565b73ffffffffffffffffffffffffffffffffffffffff161461030a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030190611970565b60405180910390fd5b60005b81518110156105e85760056000838381518110610353577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff16156103e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103dd90611990565b60405180910390fd5b604051806040016040528060048054905081526020016001151581525060056000848481518110610440577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff02191690831515021790555090505060048282815181106104ea577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081818151811061058b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f784c8f4dbf0ffedd6e72c76501c545a70f8b203b30a26ce542bf92ba87c248a460405160405180910390a280806105e090611e8b565b91505061030d565b5050565b600481815481106105fc57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610633611329565b73ffffffffffffffffffffffffffffffffffffffff16610651610aa3565b73ffffffffffffffffffffffffffffffffffffffff16146106a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069e90611970565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff16610736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072d90611950565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006004600160048054905061078f9190611cc3565b815481106107c6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506004816000015481548110610874577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660048460000154815481106108dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550829050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160006101000a81549060ff021916905550508373ffffffffffffffffffffffffffffffffffffffff167f4c910b69fe65a61f7531b9c5042b2329ca7179c77290aa7e2eb3afa3c8511fd360405160405180910390a250505050565b6109d7611329565b73ffffffffffffffffffffffffffffffffffffffff166109f5610aa3565b73ffffffffffffffffffffffffffffffffffffffff1614610a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4290611970565b60405180910390fd5b610a556000611331565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808273ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3b57600080fd5b505afa158015610b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b73919061159b565b905060008373ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbd57600080fd5b505afa158015610bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf5919061159b565b90506000808573ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610c4057600080fd5b505afa158015610c54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c789190611657565b50915091506000610c8885610f48565b90506000610c9585610f48565b905060008673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610cdf57600080fd5b505afa158015610cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d17919061176f565b600a610d239190611b4b565b905060008673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610d6d57600080fd5b505afa158015610d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da5919061176f565b600a610db19190611b4b565b9050600082876dffffffffffffffffffffffffffff1686610dd29190611c69565b610ddc9190611ac7565b9050600082876dffffffffffffffffffffffffffff1686610dfd9190611c69565b610e079190611ac7565b905060008183610e179190611a71565b90508c73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e5f57600080fd5b505afa158015610e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9791906116cf565b8d73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610edd57600080fd5b505afa158015610ef1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f15919061176f565b600a610f219190611b4b565b82610f2c9190611c69565b610f369190611ac7565b9b505050505050505050505050919050565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b158015610fb357600080fd5b505afa158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb91906116f8565b505050915050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561105c576064816110549190611ac7565b9150506111fb565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663802431fb85600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016040518463ffffffff1660e01b81526004016110e0939291906118de565b60206040518083038186803b1580156110f857600080fd5b505afa15801561110c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113091906116cf565b905060008473ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561117a57600080fd5b505afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b2919061176f565b60126111be9190611cf7565b600a6111ca9190611b4b565b905080826111d89190611ac7565b9150826305f5e100836111eb9190611c69565b6111f59190611ac7565b93505050505b919050565b611208611329565b73ffffffffffffffffffffffffffffffffffffffff16611226610aa3565b73ffffffffffffffffffffffffffffffffffffffff161461127c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127390611970565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e390611930565b60405180910390fd5b6112f581611331565b50565b60056020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16905082565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600061140861140384611a34565b611a0f565b9050808382526020820190508285602086028201111561142757600080fd5b60005b85811015611457578161143d88826114b5565b84526020840193506020830192505060018101905061142a565b5050509392505050565b6000813590506114708161206f565b92915050565b6000815190506114858161206f565b92915050565b600082601f83011261149c57600080fd5b81356114ac8482602086016113f5565b91505092915050565b6000813590506114c481612086565b92915050565b6000813590506114d98161209d565b92915050565b6000815190506114ee816120b4565b92915050565b600081519050611503816120cb565b92915050565b600081359050611518816120e2565b92915050565b60008151905061152d816120e2565b92915050565b600081519050611542816120f9565b92915050565b60008151905061155781612127565b92915050565b60008151905061156c81612110565b92915050565b60006020828403121561158457600080fd5b600061159284828501611461565b91505092915050565b6000602082840312156115ad57600080fd5b60006115bb84828501611476565b91505092915050565b6000602082840312156115d657600080fd5b600082013567ffffffffffffffff8111156115f057600080fd5b6115fc8482850161148b565b91505092915050565b60006020828403121561161757600080fd5b6000611625848285016114b5565b91505092915050565b60006020828403121561164057600080fd5b600061164e848285016114ca565b91505092915050565b60008060006060848603121561166c57600080fd5b600061167a868287016114f4565b935050602061168b868287016114f4565b925050604061169c86828701611533565b9150509250925092565b6000602082840312156116b857600080fd5b60006116c684828501611509565b91505092915050565b6000602082840312156116e157600080fd5b60006116ef8482850161151e565b91505092915050565b600080600080600060a0868803121561171057600080fd5b600061171e88828901611548565b955050602061172f888289016114df565b94505060406117408882890161151e565b93505060606117518882890161151e565b925050608061176288828901611548565b9150509295509295909350565b60006020828403121561178157600080fd5b600061178f8482850161155d565b91505092915050565b6117a181611d2b565b82525050565b6117b081611d3d565b82525050565b6117bf81611dee565b82525050565b6117ce81611e12565b82525050565b6117dd81611e36565b82525050565b60006117f0602683611a60565b91506117fb82611f7f565b604082019050919050565b6000611813601d83611a60565b915061181e82611fce565b602082019050919050565b6000611836602083611a60565b915061184182611ff7565b602082019050919050565b6000611859602283611a60565b915061186482612020565b604082019050919050565b61187881611db1565b82525050565b61188781611dcb565b82525050565b60006020820190506118a26000830184611798565b92915050565b60006020820190506118bd60008301846117b6565b92915050565b60006020820190506118d860008301846117c5565b92915050565b60006060820190506118f360008301866117c5565b61190060208301856117c5565b61190d60408301846117a7565b949350505050565b600060208201905061192a60008301846117d4565b92915050565b60006020820190508181036000830152611949816117e3565b9050919050565b6000602082019050818103600083015261196981611806565b9050919050565b6000602082019050818103600083015261198981611829565b9050919050565b600060208201905081810360008301526119a98161184c565b9050919050565b60006020820190506119c5600083018461186f565b92915050565b60006040820190506119e0600083018561186f565b6119ed60208301846117a7565b9392505050565b6000602082019050611a09600083018461187e565b92915050565b6000611a19611a2a565b9050611a258282611e5a565b919050565b6000604051905090565b600067ffffffffffffffff821115611a4f57611a4e611f32565b5b602082029050602081019050919050565b600082825260208201905092915050565b6000611a7c82611db1565b9150611a8783611db1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611abc57611abb611ed4565b5b828201905092915050565b6000611ad282611db1565b9150611add83611db1565b925082611aed57611aec611f03565b5b828204905092915050565b6000808291508390505b6001851115611b4257808604811115611b1e57611b1d611ed4565b5b6001851615611b2d5780820291505b8081029050611b3b85611f72565b9450611b02565b94509492505050565b6000611b5682611db1565b9150611b6183611dcb565b9250611b8e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611b96565b905092915050565b600082611ba65760019050611c62565b81611bb45760009050611c62565b8160018114611bca5760028114611bd457611c03565b6001915050611c62565b60ff841115611be657611be5611ed4565b5b8360020a915084821115611bfd57611bfc611ed4565b5b50611c62565b5060208310610133831016604e8410600b8410161715611c385782820a905083811115611c3357611c32611ed4565b5b611c62565b611c458484846001611af8565b92509050818404811115611c5c57611c5b611ed4565b5b81810290505b9392505050565b6000611c7482611db1565b9150611c7f83611db1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611cb857611cb7611ed4565b5b828202905092915050565b6000611cce82611db1565b9150611cd983611db1565b925082821015611cec57611ceb611ed4565b5b828203905092915050565b6000611d0282611dcb565b9150611d0d83611dcb565b925082821015611d2057611d1f611ed4565b5b828203905092915050565b6000611d3682611d91565b9050919050565b60008115159050919050565b6000611d5482611d2b565b9050919050565b6000611d6682611d2b565b9050919050565b6000819050919050565b60006dffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b600069ffffffffffffffffffff82169050919050565b6000611df982611e00565b9050919050565b6000611e0b82611d91565b9050919050565b6000611e1d82611e24565b9050919050565b6000611e2f82611d91565b9050919050565b6000611e4182611e48565b9050919050565b6000611e5382611d91565b9050919050565b611e6382611f61565b810181811067ffffffffffffffff82111715611e8257611e81611f32565b5b80604052505050565b6000611e9682611db1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611ec957611ec8611ed4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f436f726e4669204f7261636c653a20496e61637469766520746f6b656e000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f436f726e4669204f7261636c653a20546f6b656e20616c72656164792061646460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b61207881611d2b565b811461208357600080fd5b50565b61208f81611d49565b811461209a57600080fd5b50565b6120a681611d5b565b81146120b157600080fd5b50565b6120bd81611d6d565b81146120c857600080fd5b50565b6120d481611d77565b81146120df57600080fd5b50565b6120eb81611db1565b81146120f657600080fd5b50565b61210281611dbb565b811461210d57600080fd5b50565b61211981611dcb565b811461212457600080fd5b50565b61213081611dd8565b811461213b57600080fd5b5056fea2646970667358221220bcc0c8fc80c16dd0cec219cce75a88fe59a9c8a7ec032a035388f3643cdc8f4c64736f6c63430008040033
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.