Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 6 from a total of 6 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Create Poll | 14122423 | 1202 days ago | IN | 0 ETH | 0.03890223 | ||||
Create Poll | 11277460 | 1643 days ago | IN | 0 ETH | 0.01779024 | ||||
Create Poll | 10972862 | 1690 days ago | IN | 0 ETH | 0.00860818 | ||||
Create Poll | 10913858 | 1699 days ago | IN | 0 ETH | 0.04342351 | ||||
Create Poll | 10622495 | 1744 days ago | IN | 0 ETH | 0.00793318 | ||||
Create Poll | 10046522 | 1833 days ago | IN | 0 ETH | 0.00401715 |
Latest 6 internal transactions
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
- | 14122423 | 1202 days ago | Contract Creation | 0 ETH | |||
- | 11277460 | 1643 days ago | Contract Creation | 0 ETH | |||
- | 10972862 | 1690 days ago | Contract Creation | 0 ETH | |||
- | 10913858 | 1699 days ago | Contract Creation | 0 ETH | |||
- | 10622495 | 1744 days ago | Contract Creation | 0 ETH | |||
- | 10046522 | 1833 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
PollCreator
Compiler Version
v0.5.11+commit.c082d0b4
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-05-10 */ // File: contracts/polling/Poll.sol pragma solidity ^0.5.11; contract Poll { // The block at which the poll ends and votes can no longer be submitted. uint256 public endBlock; // Vote is emitted when an account submits a vote with 'choiceID'. // This event can be indexed to tally all votes for each choiceID event Vote(address indexed voter, uint256 choiceID); modifier isActive() { require( block.number <= endBlock, "poll is over" ); _; } constructor(uint256 _endBlock) public { endBlock = _endBlock; } /** * @dev Vote for the poll's proposal. * Reverts if the poll period is over. * @param _choiceID the ID of the option to vote for */ function vote(uint256 _choiceID) external isActive { emit Vote(msg.sender, _choiceID); } /** * @dev Destroy the Poll contract after the poll has finished * Reverts if the poll is still active */ function destroy() external { require(block.number > endBlock, "poll is active"); selfdestruct(msg.sender); } } // File: openzeppelin-solidity/contracts/token/ERC20/IERC20.sol pragma solidity ^0.5.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see `ERC20Detailed`. */ interface IERC20 { /** * @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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a `Transfer` event. */ function transfer(address recipient, 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. * * > 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount) external returns (bool); /** * @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); } // File: openzeppelin-solidity/contracts/math/SafeMath.sol pragma solidity ^0.5.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "SafeMath: modulo by zero"); return a % b; } } // File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol pragma solidity ^0.5.0; /** * @dev Implementation of the `IERC20` interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using `_mint`. * For a generic mechanism see `ERC20Mintable`. * * *For a detailed writeup see our guide [How to implement supply * mechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).* * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an `Approval` event is emitted on calls to `transferFrom`. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard `decreaseAllowance` and `increaseAllowance` * functions have been added to mitigate the well-known issues around setting * allowances. See `IERC20.approve`. */ contract ERC20 is IERC20 { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; /** * @dev See `IERC20.totalSupply`. */ function totalSupply() public view returns (uint256) { return _totalSupply; } /** * @dev See `IERC20.balanceOf`. */ function balanceOf(address account) public view returns (uint256) { return _balances[account]; } /** * @dev See `IERC20.transfer`. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(msg.sender, recipient, amount); return true; } /** * @dev See `IERC20.allowance`. */ function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } /** * @dev See `IERC20.approve`. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 value) public returns (bool) { _approve(msg.sender, spender, value); return true; } /** * @dev See `IERC20.transferFrom`. * * Emits an `Approval` event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of `ERC20`; * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `value`. * - the caller must have allowance for `sender`'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount)); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to `approve` that can be used as a mitigation for * problems described in `IERC20.approve`. * * Emits an `Approval` event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to `approve` that can be used as a mitigation for * problems described in `IERC20.approve`. * * Emits an `Approval` event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue)); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to `transfer`, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a `Transfer` event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub(amount); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a `Transfer` event with `from` set to the zero address. * * Requirements * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destoys `amount` tokens from `account`, reducing the * total supply. * * Emits a `Transfer` event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 value) internal { require(account != address(0), "ERC20: burn from the zero address"); _totalSupply = _totalSupply.sub(value); _balances[account] = _balances[account].sub(value); emit Transfer(account, address(0), value); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. * * This is internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an `Approval` event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 value) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = value; emit Approval(owner, spender, value); } /** * @dev Destoys `amount` tokens from `account`.`amount` is then deducted * from the caller's allowance. * * See `_burn` and `_approve`. */ function _burnFrom(address account, uint256 amount) internal { _burn(account, amount); _approve(account, msg.sender, _allowances[account][msg.sender].sub(amount)); } } // File: contracts/zeppelin/Ownable.sol pragma solidity ^0.5.11; /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } // File: contracts/token/ILivepeerToken.sol pragma solidity ^0.5.11; contract ILivepeerToken is ERC20, Ownable { function mint(address _to, uint256 _amount) public returns (bool); function burn(uint256 _amount) public; } // File: contracts/polling/PollCreator.sol pragma solidity ^0.5.11; contract PollCreator { // 33.33% uint256 public constant QUORUM = 333300; // 50% uint256 public constant QUOTA = 500000; // 10 rounds uint256 public constant POLL_PERIOD = 10 * 5760; uint256 public constant POLL_CREATION_COST = 100 * 1 ether; ILivepeerToken public token; event PollCreated( address indexed poll, bytes proposal, uint256 endBlock, uint256 quorum, uint256 quota ); constructor(address _tokenAddr) public { token = ILivepeerToken(_tokenAddr); } /** * @dev Create a poll by burning POLL_CREATION_COST LPT. * Reverts if this contract's LPT allowance for the sender < POLL_CREATION_COST. * @param _proposal The IPFS multihash for the proposal. */ function createPoll(bytes calldata _proposal) external { uint256 endBlock = block.number + POLL_PERIOD; Poll poll = new Poll(endBlock); require( token.transferFrom(msg.sender, address(this), POLL_CREATION_COST), "LivepeerToken transferFrom failed" ); token.burn(POLL_CREATION_COST); emit PollCreated( address(poll), _proposal, endBlock, QUORUM, QUOTA ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"QUORUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"_proposal","type":"bytes"}],"name":"createPoll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"POLL_CREATION_COST","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"QUOTA","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"POLL_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"contract ILivepeerToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"poll","type":"address"},{"indexed":false,"internalType":"bytes","name":"proposal","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"quorum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"quota","type":"uint256"}],"name":"PollCreated","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516105f93803806105f98339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610594806100656000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80632e80d9b6146100675780634d2942ab146100815780635359fbc0146100f3578063a502303b146100fb578063cb61e46e14610103578063fc0c546a1461010b575b600080fd5b61006f61012f565b60408051918252519081900360200190f35b6100f16004803603602081101561009757600080fd5b8101906020810181356401000000008111156100b257600080fd5b8201836020820111156100c457600080fd5b803590602001918460018302840111640100000000831117156100e657600080fd5b509092509050610136565b005b61006f610336565b61006f610343565b61006f61034a565b610113610350565b604080516001600160a01b039092168252519081900360200190f35b620515f481565b600061e1004301905060008160405161014e9061035f565b90815260405190819003602001906000f080158015610171573d6000803e3d6000fd5b5060008054604080516323b872dd60e01b815233600482015230602482015268056bc75e2d63100000604482015290519394506001600160a01b03909116926323b872dd92606480840193602093929083900390910190829087803b1580156101d957600080fd5b505af11580156101ed573d6000803e3d6000fd5b505050506040513d602081101561020357600080fd5b50516102405760405162461bcd60e51b815260040180806020018281038252602181526020018061053f6021913960400191505060405180910390fd5b6000805460408051630852cd8d60e31b815268056bc75e2d63100000600482015290516001600160a01b03909216926342966c689260248084019382900301818387803b15801561029057600080fd5b505af11580156102a4573d6000803e3d6000fd5b50505050806001600160a01b03167f8afbc4e1826cefcfc1e64fd5ff7d8484e700867fdbe36e9b6db047c010a6229e858585620515f46207a12060405180806020018581526020018481526020018381526020018281038252878782818152602001925080828437600083820152604051601f909101601f19169092018290039850909650505050505050a250505050565b68056bc75e2d6310000081565b6207a12081565b61e10081565b6000546001600160a01b031681565b6101d28061036d8339019056fe608060405234801561001057600080fd5b506040516101d23803806101d28339818101604052602081101561003357600080fd5b505160005561018b806100476000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630121b93f14610046578063083c63231461006557806383197ef01461007f575b600080fd5b6100636004803603602081101561005c57600080fd5b5035610087565b005b61006d610106565b60408051918252519081900360200190f35b61006361010c565b6000544311156100cd576040805162461bcd60e51b815260206004820152600c60248201526b3837b6361034b99037bb32b960a11b604482015290519081900360640190fd5b60408051828152905133917ff668ead05c744b9178e571d2edb452e72baf6529c8d72160e64e59b50d865bd0919081900360200190a250565b60005481565b6000544311610153576040805162461bcd60e51b815260206004820152600e60248201526d706f6c6c2069732061637469766560901b604482015290519081900360640190fd5b33fffea265627a7a723158206c9ce9bb5a8444cdce50e29a4427a60253222473d36eb7b1ee1eea3cb051f4b564736f6c634300050b00324c69766570656572546f6b656e207472616e7366657246726f6d206661696c6564a265627a7a723158200d868814202d495ec9b003a308844af50641cadb8e17d162c2465746fe7037f164736f6c634300050b003200000000000000000000000058b6a8a3302369daec383334672404ee733ab239
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100625760003560e01c80632e80d9b6146100675780634d2942ab146100815780635359fbc0146100f3578063a502303b146100fb578063cb61e46e14610103578063fc0c546a1461010b575b600080fd5b61006f61012f565b60408051918252519081900360200190f35b6100f16004803603602081101561009757600080fd5b8101906020810181356401000000008111156100b257600080fd5b8201836020820111156100c457600080fd5b803590602001918460018302840111640100000000831117156100e657600080fd5b509092509050610136565b005b61006f610336565b61006f610343565b61006f61034a565b610113610350565b604080516001600160a01b039092168252519081900360200190f35b620515f481565b600061e1004301905060008160405161014e9061035f565b90815260405190819003602001906000f080158015610171573d6000803e3d6000fd5b5060008054604080516323b872dd60e01b815233600482015230602482015268056bc75e2d63100000604482015290519394506001600160a01b03909116926323b872dd92606480840193602093929083900390910190829087803b1580156101d957600080fd5b505af11580156101ed573d6000803e3d6000fd5b505050506040513d602081101561020357600080fd5b50516102405760405162461bcd60e51b815260040180806020018281038252602181526020018061053f6021913960400191505060405180910390fd5b6000805460408051630852cd8d60e31b815268056bc75e2d63100000600482015290516001600160a01b03909216926342966c689260248084019382900301818387803b15801561029057600080fd5b505af11580156102a4573d6000803e3d6000fd5b50505050806001600160a01b03167f8afbc4e1826cefcfc1e64fd5ff7d8484e700867fdbe36e9b6db047c010a6229e858585620515f46207a12060405180806020018581526020018481526020018381526020018281038252878782818152602001925080828437600083820152604051601f909101601f19169092018290039850909650505050505050a250505050565b68056bc75e2d6310000081565b6207a12081565b61e10081565b6000546001600160a01b031681565b6101d28061036d8339019056fe608060405234801561001057600080fd5b506040516101d23803806101d28339818101604052602081101561003357600080fd5b505160005561018b806100476000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630121b93f14610046578063083c63231461006557806383197ef01461007f575b600080fd5b6100636004803603602081101561005c57600080fd5b5035610087565b005b61006d610106565b60408051918252519081900360200190f35b61006361010c565b6000544311156100cd576040805162461bcd60e51b815260206004820152600c60248201526b3837b6361034b99037bb32b960a11b604482015290519081900360640190fd5b60408051828152905133917ff668ead05c744b9178e571d2edb452e72baf6529c8d72160e64e59b50d865bd0919081900360200190a250565b60005481565b6000544311610153576040805162461bcd60e51b815260206004820152600e60248201526d706f6c6c2069732061637469766560901b604482015290519081900360640190fd5b33fffea265627a7a723158206c9ce9bb5a8444cdce50e29a4427a60253222473d36eb7b1ee1eea3cb051f4b564736f6c634300050b00324c69766570656572546f6b656e207472616e7366657246726f6d206661696c6564a265627a7a723158200d868814202d495ec9b003a308844af50641cadb8e17d162c2465746fe7037f164736f6c634300050b0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000058b6a8a3302369daec383334672404ee733ab239
-----Decoded View---------------
Arg [0] : _tokenAddr (address): 0x58b6A8A3302369DAEc383334672404Ee733aB239
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000058b6a8a3302369daec383334672404ee733ab239
Deployed Bytecode Sourcemap
17282:1342:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17282:1342:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17325:39;;;:::i;:::-;;;;;;;;;;;;;;;;18101:520;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18101:520:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;18101:520:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18101:520:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;18101:520:0;;-1:-1:-1;18101:520:0;-1:-1:-1;18101:520:0;:::i;:::-;;17500:58;;;:::i;17383:38::-;;;:::i;17446:47::-;;;:::i;17567:27::-;;;:::i;:::-;;;;-1:-1:-1;;;;;17567:27:0;;;;;;;;;;;;;;17325:39;17358:6;17325:39;:::o;18101:520::-;18167:16;17484:9;18186:12;:26;18167:45;;18223:9;18244:8;18235:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;18288:5:0;;;:65;;;-1:-1:-1;;;18288:65:0;;18307:10;18288:65;;;;18327:4;18288:65;;;;17545:13;18288:65;;;;;;18223:30;;-1:-1:-1;;;;;;18288:5:0;;;;:18;;:65;;;;;;;;;;;;;;;;;;:5;:65;;;5:2:-1;;;;30:1;27;20:12;5:2;18288:65:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18288:65:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18288:65:0;18266:148;;;;-1:-1:-1;;;18266:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18427:5;;;:30;;;-1:-1:-1;;;18427:30:0;;17545:13;18427:30;;;;;;-1:-1:-1;;;;;18427:5:0;;;;:10;;:30;;;;;;;;;;:5;;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;18427:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18427:30:0;;;;18509:4;-1:-1:-1;;;;;18475:138:0;;18529:9;;18553:8;17358:6;17415;18475:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;18475:138:0;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;18475:138:0;;;;-1:-1:-1;18475:138:0;;-1:-1:-1;;;;;;;18475:138:0;18101:520;;;;:::o;17500:58::-;17545:13;17500:58;:::o;17383:38::-;17415:6;17383:38;:::o;17446:47::-;17484:9;17446:47;:::o;17567:27::-;;;-1:-1:-1;;;;;17567:27:0;;:::o;17282:1342::-;;;;;;;;:::o
Swarm Source
bzzr://0d868814202d495ec9b003a308844af50641cadb8e17d162c2465746fe7037f1
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.