Overview
ETH Balance
30 ETH
Eth Value
$74,037.77 (@ $2,467.93/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 7 from a total of 7 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 17819709 | 460 days ago | IN | 0 ETH | 0.00770053 | ||||
Withdraw | 13199294 | 1150 days ago | IN | 0 ETH | 0.03759065 | ||||
Set Reward Per B... | 12643138 | 1237 days ago | IN | 0 ETH | 0.00045642 | ||||
Change Gov DAO | 12617789 | 1240 days ago | IN | 0 ETH | 0.00029629 | ||||
Set Reward Per B... | 12617789 | 1240 days ago | IN | 0 ETH | 0.00057469 | ||||
Set Anonymity Fe... | 12617066 | 1241 days ago | IN | 0 ETH | 0.00094164 | ||||
0x60806040 | 12617008 | 1241 days ago | IN | 0 ETH | 0.07514544 |
Latest 9 internal transactions
Advanced mode:
Loading...
Loading
This contract contains unverified libraries: Hasher
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
CycloneV2dot3
Compiler Version
v0.5.17+commit.d19bba13
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity <0.6 >=0.4.24; import "./math/SafeMath.sol"; import "./token/IMintableToken.sol"; import "./token/SafeERC20.sol"; import "./utils/Address.sol"; import "./zksnarklib/MerkleTreeWithHistory.sol"; import "./zksnarklib/IVerifier.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; contract CycloneV2dot3 is MerkleTreeWithHistory, ReentrancyGuard { using SafeMath for uint256; using SafeERC20 for IERC20; uint256 public tokenDenomination; // (10K or 100k or 1M) * 10^18 uint256 public coinDenomination; uint256 public initCYCDenomination; mapping(bytes32 => bool) public nullifierHashes; mapping(bytes32 => bool) public commitments; // we store all commitments just to prevent accidental deposits with the same commitment IVerifier public verifier; IERC20 public token; IMintableToken public cycToken; address public treasury; address public govDAO; uint256 public numOfShares; uint256 public lastRewardBlock; uint256 public rewardPerBlock; uint256 public accumulateCYC; uint256 public anonymityFee; modifier onlyGovDAO { // Start with an governance DAO address and will transfer to a governance DAO, e.g., Timelock + GovernorAlpha, after launch require(msg.sender == govDAO, "Only Governance DAO can call this function."); _; } event Deposit(bytes32 indexed commitment, uint32 leafIndex, uint256 timestamp, uint256 cycDenomination, uint256 anonymityFee); event Withdrawal(address to, bytes32 nullifierHash, address indexed relayer, uint256 reward, uint256 relayerFee); event RewardPerBlockUpdated(uint256 oldValue, uint256 newValue); event AnonymityFeeUpdated(uint256 oldValue, uint256 newValue); /** @dev The constructor @param _verifier the address of SNARK verifier for this contract @param _merkleTreeHeight the height of deposits' Merkle Tree @param _govDAO governance DAO address */ constructor( address _govDAO, IERC20 _token, IMintableToken _cycToken, address _treasury, uint256 _initCYCDenomination, uint256 _coinDenomination, uint256 _tokenDenomination, uint256 _startBlock, IVerifier _verifier, uint32 _merkleTreeHeight ) MerkleTreeWithHistory(_merkleTreeHeight) public { require(address(_token) != address(_cycToken), "token cannot be identical to CYC token"); verifier = _verifier; treasury = _treasury; cycToken = _cycToken; token = _token; govDAO = _govDAO; if (_startBlock < block.number) { lastRewardBlock = block.number; } else { lastRewardBlock = _startBlock; } initCYCDenomination = _initCYCDenomination; coinDenomination = _coinDenomination; tokenDenomination = _tokenDenomination; numOfShares = 0; } function calcAccumulateCYC() internal view returns (uint256) { uint256 reward = block.number.sub(lastRewardBlock).mul(rewardPerBlock); uint256 remaining = cycToken.balanceOf(address(this)).sub(accumulateCYC); if (remaining < reward) { reward = remaining; } return accumulateCYC.add(reward); } function updateBlockReward() public { uint256 blockNumber = block.number; if (blockNumber <= lastRewardBlock) { return; } if (rewardPerBlock != 0) { accumulateCYC = calcAccumulateCYC(); } // always update lastRewardBlock no matter there is sufficient reward or not lastRewardBlock = blockNumber; } function cycDenomination() public view returns (uint256) { if (numOfShares == 0) { return initCYCDenomination; } uint256 blockNumber = block.number; uint256 accCYC = accumulateCYC; if (blockNumber > lastRewardBlock && rewardPerBlock > 0) { accCYC = calcAccumulateCYC(); } return accCYC.add(numOfShares - 1).div(numOfShares); } /** @dev Deposit funds into the contract. The caller must send (for Coin) or approve (for ERC20) value equal to or `denomination` of this instance. @param _commitment the note commitment, which is PedersenHash(nullifier + secret) */ function deposit(bytes32 _commitment) external payable nonReentrant { require(!commitments[_commitment], "The commitment has been submitted"); require(msg.value >= coinDenomination, "insufficient coin amount"); uint256 refund = msg.value - coinDenomination; uint32 insertedIndex = _insert(_commitment); commitments[_commitment] = true; updateBlockReward(); uint256 cycDeno = cycDenomination(); uint256 fee = anonymityFee; if (cycDeno.add(fee) > 0) { require(cycToken.transferFrom(msg.sender, address(this), cycDeno.add(fee)), "insufficient CYC allowance"); } if (fee > 0) { address t = treasury; if (t == address(0)) { require(cycToken.burn(fee), "failed to burn anonymity fee"); } else { safeTransfer(cycToken, t, fee); } } uint256 td = tokenDenomination; if (td > 0) { token.safeTransferFrom(msg.sender, address(this), td); } accumulateCYC += cycDeno; numOfShares += 1; if (refund > 0) { (bool success, ) = msg.sender.call.value(refund)(""); require(success, "failed to refund"); } emit Deposit(_commitment, insertedIndex, block.timestamp, cycDeno, fee); } /** @dev Withdraw a deposit from the contract. `proof` is a zkSNARK proof data, and input is an array of circuit public inputs `input` array consists of: - merkle root of all deposits in the contract - hash of unique deposit nullifier to prevent double spends - the recipient of funds - optional fee that goes to the transaction sender (usually a relay) */ function withdraw(bytes calldata _proof, bytes32 _root, bytes32 _nullifierHash, address payable _recipient, address payable _relayer, uint256 _relayerFee, uint256 _refund) external payable nonReentrant { require(_refund == 0, "refund is not zero"); require(!Address.isContract(_recipient), "recipient of cannot be contract"); require(!nullifierHashes[_nullifierHash], "The note has been already spent"); require(isKnownRoot(_root), "Cannot find your merkle root"); // Make sure to use a recent one require(verifier.verifyProof(_proof, [uint256(_root), uint256(_nullifierHash), uint256(_recipient), uint256(_relayer), _relayerFee, _refund]), "Invalid withdraw proof"); nullifierHashes[_nullifierHash] = true; uint256 td = tokenDenomination; if (td > 0) { safeTransfer(token, _recipient, td); } updateBlockReward(); uint256 relayerFee = 0; // numOfShares should be larger than 0 uint256 cycDeno = accumulateCYC.div(numOfShares); if (cycDeno > 0) { accumulateCYC -= cycDeno; safeTransfer(cycToken, _recipient, cycDeno); } uint256 cd = coinDenomination; if (_relayerFee > cd) { _relayerFee = cd; } if (_relayerFee > 0) { (bool success,) = _relayer.call.value(_relayerFee)(""); require(success, "failed to send relayer fee"); cd -= _relayerFee; } if (cd > 0) { (bool success,) = _recipient.call.value(cd)(""); require(success, "failed to withdraw coin"); } numOfShares -= 1; emit Withdrawal(_recipient, _nullifierHash, _relayer, cycDeno, relayerFee); } /** @dev whether a note is already spent */ function isSpent(bytes32 _nullifierHash) public view returns(bool) { return nullifierHashes[_nullifierHash]; } /** @dev whether an array of notes is already spent */ function isSpentArray(bytes32[] calldata _nullifierHashes) external view returns(bool[] memory spent) { spent = new bool[](_nullifierHashes.length); for(uint i = 0; i < _nullifierHashes.length; i++) { if (isSpent(_nullifierHashes[i])) { spent[i] = true; } } } /** @dev allow governance DAO to update SNARK verification keys. This is needed to update keys if tornado.cash update their keys in production. */ function updateVerifier(address _newVerifier) external onlyGovDAO { verifier = IVerifier(_newVerifier); } /** @dev governance DAO can change his address */ function changeGovDAO(address _newGovDAO) external onlyGovDAO { govDAO = _newGovDAO; } function setRewardPerBlock(uint256 _rewardPerBlock) public onlyGovDAO { updateBlockReward(); emit RewardPerBlockUpdated(rewardPerBlock, _rewardPerBlock); rewardPerBlock = _rewardPerBlock; } function setAnonymityFee(uint256 _fee) public onlyGovDAO { emit AnonymityFeeUpdated(anonymityFee, _fee); anonymityFee = _fee; } // Safe transfer function, just in case if rounding error causes pool to not have enough CYCs. function safeTransfer(IERC20 _token, address _to, uint256 _amount) internal { uint256 balance = _token.balanceOf(address(this)); if (_amount > balance) { _token.safeTransfer(_to, balance); } else { _token.safeTransfer(_to, _amount); } } function version() public pure returns(string memory) { return "2.3"; } }
pragma solidity <0.6 >=0.4.21; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ /*@CTK SafeMath_mul @tag spec @post __reverted == __has_assertion_failure @post __has_assertion_failure == __has_overflow @post __reverted == false -> c == a * b @post msg == msg__post */ /* CertiK Smart Labelling, for more details visit: https://certik.org */ function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) { return 0; } c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ /*@CTK SafeMath_div @tag spec @pre b != 0 @post __reverted == __has_assertion_failure @post __has_overflow == true -> __has_assertion_failure == true @post __reverted == false -> __return == a / b @post msg == msg__post */ /* CertiK Smart Labelling, for more details visit: https://certik.org */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 // uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return a / b; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ /*@CTK SafeMath_sub @tag spec @post __reverted == __has_assertion_failure @post __has_overflow == true -> __has_assertion_failure == true @post __reverted == false -> __return == a - b @post msg == msg__post */ /* CertiK Smart Labelling, for more details visit: https://certik.org */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ /*@CTK SafeMath_add @tag spec @post __reverted == __has_assertion_failure @post __has_assertion_failure == __has_overflow @post __reverted == false -> c == a + b @post msg == msg__post */ /* CertiK Smart Labelling, for more details visit: https://certik.org */ function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; assert(c >= a); return c; } }
pragma solidity <0.6 >=0.4.21; import "./IERC20Basic.sol"; /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract IERC20 is IERC20Basic { function name() external view returns (string memory); function symbol() external view returns (string memory); function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); }
pragma solidity <0.6 >=0.4.21; /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract IERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); }
pragma solidity <0.6 >=0.4.24; import "./IERC20.sol"; contract IMintableToken is IERC20 { function mint(address, uint) external returns (bool); function burn(uint) external returns (bool); event Minted(address indexed to, uint256 amount); event Burned(address indexed from, uint256 amount); event MinterAdded(address indexed minter); event MinterRemoved(address indexed minter); }
pragma solidity ^0.5.0; import "./IERC20.sol"; import "../math/SafeMath.sol"; import "../utils/Address.sol"; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } }
pragma solidity ^0.5.0; /** * @dev Collection of functions related to the address type, */ library Address { /** * @dev Returns true if `account` is a contract. * * This test is non-exhaustive, and there may be false-negatives: during the * execution of a contract's constructor, its address will be reported as * not containing a contract. * * > It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. */ function isContract(address account) internal view returns (bool) { // This method relies in extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } }
pragma solidity <0.6 >=0.4.24; contract IVerifier { function verifyProof(bytes memory _proof, uint256[6] memory _input) public returns(bool); }
pragma solidity <0.6 >=0.4.24; library Hasher { function MiMCSponge(uint256 in_xL, uint256 in_xR) public pure returns (uint256 xL, uint256 xR); } contract MerkleTreeWithHistory { uint256 public constant FIELD_SIZE = 21888242871839275222246405745257275088548364400416034343698204186575808495617; uint256 public constant ZERO_VALUE = 21663839004416932945382355908790599225266501822907911457504978515578255421292; // = keccak256("tornado") % FIELD_SIZE uint32 public levels; // the following variables are made public for easier testing and debugging and // are not supposed to be accessed in regular code bytes32[] public filledSubtrees; bytes32[] public zeros; uint32 public currentRootIndex = 0; uint32 public nextIndex = 0; uint32 public constant ROOT_HISTORY_SIZE = 100; bytes32[ROOT_HISTORY_SIZE] public roots; constructor(uint32 _treeLevels) public { require(_treeLevels > 0, "_treeLevels should be greater than zero"); require(_treeLevels < 32, "_treeLevels should be less than 32"); levels = _treeLevels; bytes32 currentZero = bytes32(ZERO_VALUE); zeros.push(currentZero); filledSubtrees.push(currentZero); for (uint32 i = 1; i < levels; i++) { currentZero = hashLeftRight(currentZero, currentZero); zeros.push(currentZero); filledSubtrees.push(currentZero); } roots[0] = hashLeftRight(currentZero, currentZero); } /** @dev Hash 2 tree leaves, returns MiMC(_left, _right) */ function hashLeftRight(bytes32 _left, bytes32 _right) public pure returns (bytes32) { require(uint256(_left) < FIELD_SIZE, "_left should be inside the field"); require(uint256(_right) < FIELD_SIZE, "_right should be inside the field"); uint256 R = uint256(_left); uint256 C = 0; (R, C) = Hasher.MiMCSponge(R, C); R = addmod(R, uint256(_right), FIELD_SIZE); (R, C) = Hasher.MiMCSponge(R, C); return bytes32(R); } function _insert(bytes32 _leaf) internal returns(uint32 index) { uint32 currentIndex = nextIndex; require(currentIndex != uint32(2)**levels, "Merkle tree is full. No more leafs can be added"); nextIndex += 1; bytes32 currentLevelHash = _leaf; bytes32 left; bytes32 right; for (uint32 i = 0; i < levels; i++) { if (currentIndex % 2 == 0) { left = currentLevelHash; right = zeros[i]; filledSubtrees[i] = currentLevelHash; } else { left = filledSubtrees[i]; right = currentLevelHash; } currentLevelHash = hashLeftRight(left, right); currentIndex /= 2; } currentRootIndex = (currentRootIndex + 1) % ROOT_HISTORY_SIZE; roots[currentRootIndex] = currentLevelHash; return nextIndex - 1; } /** @dev Whether the root is present in the root history */ function isKnownRoot(bytes32 _root) public view returns(bool) { if (_root == 0) { return false; } uint32 i = currentRootIndex; do { if (_root == roots[i]) { return true; } if (i == 0) { i = ROOT_HISTORY_SIZE; } i--; } while (i != currentRootIndex); return false; } /** @dev Returns the last root */ function getLastRoot() public view returns(bytes32) { return roots[currentRootIndex]; } }
pragma solidity ^0.5.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. * * _Since v2.5.0:_ this module is now much more gas efficient, given net gas * metering changes introduced in the Istanbul hardfork. */ contract ReentrancyGuard { bool private _notEntered; constructor () internal { // Storing an initial non-zero value makes deployment a bit more // expensive, but in exchange the refund on every call to nonReentrant // will be lower in amount. Since refunds are capped to a percetange of // the total transaction's gas, it is best to keep them low in cases // like this one, to increase the likelihood of the full refund coming // into effect. _notEntered = true; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_notEntered, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _notEntered = false; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _notEntered = true; } }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "istanbul", "libraries": { "": { "Hasher": "0x949452e32db13a5771445cf20b304474b866202b" } }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_govDAO","type":"address"},{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"contract IMintableToken","name":"_cycToken","type":"address"},{"internalType":"address","name":"_treasury","type":"address"},{"internalType":"uint256","name":"_initCYCDenomination","type":"uint256"},{"internalType":"uint256","name":"_coinDenomination","type":"uint256"},{"internalType":"uint256","name":"_tokenDenomination","type":"uint256"},{"internalType":"uint256","name":"_startBlock","type":"uint256"},{"internalType":"contract IVerifier","name":"_verifier","type":"address"},{"internalType":"uint32","name":"_merkleTreeHeight","type":"uint32"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"AnonymityFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"commitment","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"leafIndex","type":"uint32"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"cycDenomination","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"anonymityFee","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"RewardPerBlockUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bytes32","name":"nullifierHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"relayer","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"relayerFee","type":"uint256"}],"name":"Withdrawal","type":"event"},{"constant":true,"inputs":[],"name":"FIELD_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ROOT_HISTORY_SIZE","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ZERO_VALUE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"accumulateCYC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"anonymityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newGovDAO","type":"address"}],"name":"changeGovDAO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"coinDenomination","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"commitments","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentRootIndex","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cycDenomination","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cycToken","outputs":[{"internalType":"contract IMintableToken","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"_commitment","type":"bytes32"}],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"filledSubtrees","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getLastRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"govDAO","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"_left","type":"bytes32"},{"internalType":"bytes32","name":"_right","type":"bytes32"}],"name":"hashLeftRight","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"initCYCDenomination","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"isKnownRoot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"_nullifierHash","type":"bytes32"}],"name":"isSpent","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32[]","name":"_nullifierHashes","type":"bytes32[]"}],"name":"isSpentArray","outputs":[{"internalType":"bool[]","name":"spent","type":"bool[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"levels","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nextIndex","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"nullifierHashes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numOfShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"roots","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setAnonymityFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_rewardPerBlock","type":"uint256"}],"name":"setRewardPerBlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenDenomination","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"updateBlockReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newVerifier","type":"address"}],"name":"updateVerifier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"verifier","outputs":[{"internalType":"contract IVerifier","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"_proof","type":"bytes"},{"internalType":"bytes32","name":"_root","type":"bytes32"},{"internalType":"bytes32","name":"_nullifierHash","type":"bytes32"},{"internalType":"address payable","name":"_recipient","type":"address"},{"internalType":"address payable","name":"_relayer","type":"address"},{"internalType":"uint256","name":"_relayerFee","type":"uint256"},{"internalType":"uint256","name":"_refund","type":"uint256"}],"name":"withdraw","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"zeros","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052600380546001600160401b03191690553480156200002157600080fd5b50604051620026963803806200269683398181016040526101408110156200004857600080fd5b508051602082015160408301516060840151608085015160a086015160c087015160e088015161010089015161012090990151979896979596949593949293919290918063ffffffff8116620000d05760405162461bcd60e51b81526004018080602001828103825260278152602001806200260d6027913960400191505060405180910390fd5b60208163ffffffff1610620001175760405162461bcd60e51b8152600401808060200182810382526022815260200180620026546022913960400191505060405180910390fd5b6000805463ffffffff191663ffffffff83161781556002805460018181019092557f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c600080516020620025cc8339815191529091018190558154808301835592829052600080516020620026768339815191529092018290555b60005463ffffffff90811690821610156200020557620001bb82806001600160e01b036200030b16565b600280546001818101909255600080516020620025cc8339815191520182905580548082018255600082905260008051602062002676833981519152018290559092500162000191565b506200021b81806001600160e01b036200030b16565b60046000015550506068805460ff191660011790556001600160a01b0389811690891614156200027d5760405162461bcd60e51b8152600401808060200182810382526026815260200180620025a66026913960400191505060405180910390fd5b606e80546001600160a01b03199081166001600160a01b03858116919091179092556071805482168a84161790556070805482168b8416179055606f805482168c841617905560728054909116918c1691909117905543831015620002e65743607455620002ec565b60748390555b505050606b92909255606a556069555050600060735550620004f89050565b600060008051602062002634833981519152831062000371576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b600080516020620026348339815191528210620003c05760405162461bcd60e51b8152600401808060200182810382526021815260200180620025ec6021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273949452e32db13a5771445cf20b304474b866202b9263f47d33b592604480840193829003018186803b1580156200041b57600080fd5b505af415801562000430573d6000803e3d6000fd5b505050506040513d60408110156200044757600080fd5b508051602090910151909250905060008051602062002634833981519152848308915073949452e32db13a5771445cf20b304474b866202b63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b158015620004c157600080fd5b505af4158015620004d6573d6000803e3d6000fd5b505050506040513d6040811015620004ed57600080fd5b505195945050505050565b61209e80620005086000396000f3fe6080604052600436106102255760003560e01c80638daac0df11610123578063bb872b4a116100ab578063e82955881161006f578063e8295588146107dd578063ec73295914610807578063f178e47c1461081c578063fc0c546a14610846578063fc7e9c6f1461085b57610225565b8063bb872b4a14610735578063c2b40ae41461075f578063cd87a3b414610789578063e28cecda1461079e578063e5285dcc146107b357610225565b80639fa12d0b116100f25780639fa12d0b1461060e578063a9f8d181146106d9578063ab5bbfd8146106ee578063b214faa514610703578063ba70f7571461072057610225565b80638daac0df1461058757806390eeb02b146105b157806397fc007c146105c6578063997318ec146105f957610225565b8063414a37ba116101b157806361d027b31161017557806361d027b3146104f45780636d9833e314610509578063839df945146105335780638ae39cac1461055d5780638d949d4b1461057257610225565b8063414a37ba146103fd5780634ecf518b146104125780635129b3e11461044057806354fd4d50146104555780635759e5f5146104df57610225565b806321a0adb6116101f857806321a0adb6146102f55780632b7ac3f31461038e5780633409038c146103a357806338bf282e146103b85780633b406fb7146103e857610225565b806317cc915c1461022a57806318006104146102685780631a4be74c146102995780631e85e711146102ce575b600080fd5b34801561023657600080fd5b506102546004803603602081101561024d57600080fd5b5035610870565b604080519115158252519081900360200190f35b34801561027457600080fd5b5061027d610885565b604080516001600160a01b039092168252519081900360200190f35b3480156102a557600080fd5b506102cc600480360360208110156102bc57600080fd5b50356001600160a01b0316610894565b005b3480156102da57600080fd5b506102e36108ff565b60408051918252519081900360200190f35b6102cc600480360360e081101561030b57600080fd5b810190602081018135600160201b81111561032557600080fd5b82018360208201111561033757600080fd5b803590602001918460018302840111600160201b8311171561035857600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610905565b34801561039a57600080fd5b5061027d610e7f565b3480156103af57600080fd5b506102e3610e8e565b3480156103c457600080fd5b506102e3600480360360408110156103db57600080fd5b5080359060200135610e94565b3480156103f457600080fd5b506102e3611077565b34801561040957600080fd5b506102e361107d565b34801561041e57600080fd5b5061042761108f565b6040805163ffffffff9092168252519081900360200190f35b34801561044c57600080fd5b506102e361109b565b34801561046157600080fd5b5061046a6110a1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104a457818101518382015260200161048c565b50505050905090810190601f1680156104d15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104eb57600080fd5b506102e36110bf565b34801561050057600080fd5b5061027d61112c565b34801561051557600080fd5b506102546004803603602081101561052c57600080fd5b503561113b565b34801561053f57600080fd5b506102546004803603602081101561055657600080fd5b50356111ae565b34801561056957600080fd5b506102e36111c3565b34801561057e57600080fd5b506102cc6111c9565b34801561059357600080fd5b506102cc600480360360208110156105aa57600080fd5b50356111f4565b3480156105bd57600080fd5b5061042761127f565b3480156105d257600080fd5b506102cc600480360360208110156105e957600080fd5b50356001600160a01b031661128b565b34801561060557600080fd5b506102e36112f6565b34801561061a57600080fd5b506106896004803603602081101561063157600080fd5b810190602081018135600160201b81111561064b57600080fd5b82018360208201111561065d57600080fd5b803590602001918460208302840111600160201b8311171561067e57600080fd5b5090925090506112fc565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156106c55781810151838201526020016106ad565b505050509050019250505060405180910390f35b3480156106e557600080fd5b506102e3611384565b3480156106fa57600080fd5b5061027d61138a565b6102cc6004803603602081101561071957600080fd5b5035611399565b34801561072c57600080fd5b506102e3611836565b34801561074157600080fd5b506102cc6004803603602081101561075857600080fd5b5035611856565b34801561076b57600080fd5b506102e36004803603602081101561078257600080fd5b50356118e9565b34801561079557600080fd5b506104276118fd565b3480156107aa57600080fd5b506102e3611902565b3480156107bf57600080fd5b50610254600480360360208110156107d657600080fd5b5035611908565b3480156107e957600080fd5b506102e36004803603602081101561080057600080fd5b503561191d565b34801561081357600080fd5b506102e361193b565b34801561082857600080fd5b506102e36004803603602081101561083f57600080fd5b503561195f565b34801561085257600080fd5b5061027d61196c565b34801561086757600080fd5b5061042761197b565b606c6020526000908152604090205460ff1681565b6070546001600160a01b031681565b6072546001600160a01b031633146108dd5760405162461bcd60e51b815260040180806020018281038252602b81526020018061203f602b913960400191505060405180910390fd5b607280546001600160a01b0319166001600160a01b0392909216919091179055565b60765481565b60685460ff1661095c576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff1916905580156109ae576040805162461bcd60e51b8152602060048201526012602482015271726566756e64206973206e6f74207a65726f60701b604482015290519081900360640190fd5b6109b78461198e565b15610a09576040805162461bcd60e51b815260206004820152601f60248201527f726563697069656e74206f662063616e6e6f7420626520636f6e747261637400604482015290519081900360640190fd5b6000858152606c602052604090205460ff1615610a6d576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b610a768661113b565b610ac7576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606e546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b83811015610b4c578181015183820152602001610b34565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b158015610b9e57600080fd5b505af1158015610bb2573d6000803e3d6000fd5b505050506040513d6020811015610bc857600080fd5b5051610c14576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606c60205260409020805460ff191660011790556069548015610c4d57606f54610c4d906001600160a01b03168683611994565b610c556111c9565b6073546076546000918291610c6f9163ffffffff611a5316565b90508015610c9757607680548290039055607054610c97906001600160a01b03168883611994565b606a5480861115610ca6578095505b8515610d57576040516000906001600160a01b0389169088908381818185875af1925050503d8060008114610cf7576040519150601f19603f3d011682016040523d82523d6000602084013e610cfc565b606091505b5050905080610d52576040805162461bcd60e51b815260206004820152601a60248201527f6661696c656420746f2073656e642072656c6179657220666565000000000000604482015290519081900360640190fd5b508590035b8015610e05576040516000906001600160a01b038a169083908381818185875af1925050503d8060008114610da8576040519150601f19603f3d011682016040523d82523d6000602084013e610dad565b606091505b5050905080610e03576040805162461bcd60e51b815260206004820152601760248201527f6661696c656420746f20776974686472617720636f696e000000000000000000604482015290519081900360640190fd5b505b60738054600019019055604080516001600160a01b038a81168252602082018c9052818301859052606082018690529151918916917f6d7aac54bd3d1c91db3b1fd7b8d6cb45324ad6b5e373c0f0ea4d7b2606c4c2c89181900360800190a250506068805460ff1916600117905550505050505050505050565b606e546001600160a01b031681565b60735481565b6000600080516020611fd48339815191528310610ef8576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b600080516020611fd48339815191528210610f445760405162461bcd60e51b8152600401808060200182810382526021815260200180611fb36021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273949452e32db13a5771445cf20b304474b866202b9263f47d33b592604480840193829003018186803b158015610f9e57600080fd5b505af4158015610fb2573d6000803e3d6000fd5b505050506040513d6040811015610fc857600080fd5b5080516020909101519092509050600080516020611fd4833981519152848308915073949452e32db13a5771445cf20b304474b866202b63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b15801561104057600080fd5b505af4158015611054573d6000803e3d6000fd5b505050506040513d604081101561106a57600080fd5b5051925050505b92915050565b60775481565b600080516020611fd483398151915281565b60005463ffffffff1681565b60695481565b604080518082019091526003815262322e3360e81b60208201525b90565b6000607354600014156110d55750606b546110bc565b607654607454439190821180156110ee57506000607554115b156110fe576110fb611a66565b90505b6073546111259061111983600019830163ffffffff611b3f16565b9063ffffffff611a5316565b9250505090565b6071546001600160a01b031681565b60008161114a575060006111a9565b60035463ffffffff165b60048163ffffffff166064811061116757fe5b015483141561117a5760019150506111a9565b63ffffffff8116611189575060645b6003546000199091019063ffffffff808316911614156111545760009150505b919050565b606d6020526000908152604090205460ff1681565b60755481565b607454439081116111da57506111f2565b607554156111ee576111ea611a66565b6076555b6074555b565b6072546001600160a01b0316331461123d5760405162461bcd60e51b815260040180806020018281038252602b81526020018061203f602b913960400191505060405180910390fd5b607754604080519182526020820183905280517ff077eec825bf8719ab7021daf299e3feb4cb33472ac3f1e661657fd9701a3e7e9281900390910190a1607755565b60035463ffffffff1681565b6072546001600160a01b031633146112d45760405162461bcd60e51b815260040180806020018281038252602b81526020018061203f602b913960400191505060405180910390fd5b606e80546001600160a01b0319166001600160a01b0392909216919091179055565b606a5481565b604080518281526020808402820101909152606090828015611328578160200160208202803883390190505b50905060005b8281101561137d5761135184848381811061134557fe5b90506020020135611908565b1561137557600182828151811061136457fe5b911515602092830291909101909101525b60010161132e565b5092915050565b60745481565b6072546001600160a01b031681565b60685460ff166113f0576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606d602052604090205460ff16156114485760405162461bcd60e51b8152600401808060200182810382526021815260200180611ff46021913960400191505060405180910390fd5b606a5434101561149f576040805162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420636f696e20616d6f756e740000000000000000604482015290519081900360640190fd5b606a54340360006114af83611b4c565b6000848152606d60205260409020805460ff1916600117905590506114d26111c9565b60006114dc6110bf565b60775490915060006114f4838363ffffffff611b3f16565b1115611602576070546001600160a01b03166323b872dd333061151d868663ffffffff611b3f16565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b15801561158557600080fd5b505af1158015611599573d6000803e3d6000fd5b505050506040513d60208110156115af57600080fd5b5051611602576040805162461bcd60e51b815260206004820152601a60248201527f696e73756666696369656e742043594320616c6c6f77616e6365000000000000604482015290519081900360640190fd5b8015611702576071546001600160a01b0316806116e95760705460408051630852cd8d60e31b81526004810185905290516001600160a01b03909216916342966c68916024808201926020929091908290030181600087803b15801561166757600080fd5b505af115801561167b573d6000803e3d6000fd5b505050506040513d602081101561169157600080fd5b50516116e4576040805162461bcd60e51b815260206004820152601c60248201527f6661696c656420746f206275726e20616e6f6e796d6974792066656500000000604482015290519081900360640190fd5b611700565b607054611700906001600160a01b03168284611994565b505b606954801561172957606f54611729906001600160a01b031633308463ffffffff611ce316565b607680548401905560738054600101905584156117d257604051600090339087908381818185875af1925050503d8060008114611782576040519150601f19603f3d011682016040523d82523d6000602084013e611787565b606091505b50509050806117d0576040805162461bcd60e51b815260206004820152601060248201526f19985a5b1959081d1bc81c99599d5b9960821b604482015290519081900360640190fd5b505b6040805163ffffffff8616815242602082015280820185905260608101849052905187917fcb186cc0add5be357ae2d3845e42be2ffbed8cb23b60f1b058ea371adff0a363919081900360800190a250506068805460ff1916600117905550505050565b60035460009060049063ffffffff166064811061184f57fe5b0154905090565b6072546001600160a01b0316331461189f5760405162461bcd60e51b815260040180806020018281038252602b81526020018061203f602b913960400191505060405180910390fd5b6118a76111c9565b607554604080519182526020820183905280517f842e6f2b482c6f39924c8be7b71d40631362ef78f833f0371ceb2649edc5fb109281900390910190a1607555565b600481606481106118f657fe5b0154905081565b606481565b606b5481565b6000908152606c602052604090205460ff1690565b6002818154811061192a57fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b6001818154811061192a57fe5b606f546001600160a01b031681565b600354600160201b900463ffffffff1681565b3b151590565b604080516370a0823160e01b815230600482015290516000916001600160a01b038616916370a0823191602480820192602092909190829003018186803b1580156119de57600080fd5b505afa1580156119f2573d6000803e3d6000fd5b505050506040513d6020811015611a0857600080fd5b5051905080821115611a3357611a2e6001600160a01b038516848363ffffffff611d3d16565b611a4d565b611a4d6001600160a01b038516848463ffffffff611d3d16565b50505050565b6000818381611a5e57fe5b049392505050565b600080611a90607554611a8460745443611d9490919063ffffffff16565b9063ffffffff611da616565b607654607054604080516370a0823160e01b81523060048201529051939450600093611b1e93926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611ae657600080fd5b505afa158015611afa573d6000803e3d6000fd5b505050506040513d6020811015611b1057600080fd5b50519063ffffffff611d9416565b905081811015611b2c578091505b607654611125908363ffffffff611b3f16565b8181018281101561107157fe5b60035460008054909163ffffffff600160201b909104811691811660020a16811415611ba95760405162461bcd60e51b815260040180806020018281038252602f815260200180611f84602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff9081169082161015611c815760018516611c3d5783925060028163ffffffff1681548110611c0b57fe5b906000526020600020015491508360018263ffffffff1681548110611c2c57fe5b600091825260209091200155611c61565b60018163ffffffff1681548110611c5057fe5b906000526020600020015492508391505b611c6b8383610e94565b9350600263ffffffff8616049450600101611bd9565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff908116929092179081905584916004911660648110611cc357fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611a4d908590611dcb565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611d8f908490611dcb565b505050565b600082821115611da057fe5b50900390565b600082611db557506000611071565b5081810281838281611dc357fe5b041461107157fe5b611ddd826001600160a01b031661198e565b611e2e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611e6c5780518252601f199092019160209182019101611e4d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611ece576040519150601f19603f3d011682016040523d82523d6000602084013e611ed3565b606091505b509150915081611f2a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611a4d57808060200190516020811015611f4657600080fd5b5051611a4d5760405162461bcd60e51b815260040180806020018281038252602a815260200180612015602a913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e2062652061646465645f72696768742073686f756c6420626520696e7369646520746865206669656c6430644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465645361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565644f6e6c7920476f7665726e616e63652044414f2063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a723158205c4d8e6f3d8602aa49a09530ce4aead57613d8cef26fb8ab98cdbe2a8a1df62a64736f6c63430005110032746f6b656e2063616e6e6f74206265206964656e746963616c20746f2043594320746f6b656e405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5f72696768742073686f756c6420626520696e7369646520746865206669656c645f747265654c6576656c732073686f756c642062652067726561746572207468616e207a65726f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000015f747265654c6576656c732073686f756c64206265206c657373207468616e203332b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60000000000000000000000002acb8663b18d8c8180783c18b88d60b86de26df200000000000000000000000000000000000000000000000000000000000000000000000000000000000000008861cff2366c1128fd699b68304ad99a0764ef9a00000000000000000000000092d221682384a3ad3549b8b8ea992c9048cf222800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008ac7230489e8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c084c40000000000000000000000007c994fb3a8c208c1750df937d473040c604292d60000000000000000000000000000000000000000000000000000000000000014
Deployed Bytecode
0x6080604052600436106102255760003560e01c80638daac0df11610123578063bb872b4a116100ab578063e82955881161006f578063e8295588146107dd578063ec73295914610807578063f178e47c1461081c578063fc0c546a14610846578063fc7e9c6f1461085b57610225565b8063bb872b4a14610735578063c2b40ae41461075f578063cd87a3b414610789578063e28cecda1461079e578063e5285dcc146107b357610225565b80639fa12d0b116100f25780639fa12d0b1461060e578063a9f8d181146106d9578063ab5bbfd8146106ee578063b214faa514610703578063ba70f7571461072057610225565b80638daac0df1461058757806390eeb02b146105b157806397fc007c146105c6578063997318ec146105f957610225565b8063414a37ba116101b157806361d027b31161017557806361d027b3146104f45780636d9833e314610509578063839df945146105335780638ae39cac1461055d5780638d949d4b1461057257610225565b8063414a37ba146103fd5780634ecf518b146104125780635129b3e11461044057806354fd4d50146104555780635759e5f5146104df57610225565b806321a0adb6116101f857806321a0adb6146102f55780632b7ac3f31461038e5780633409038c146103a357806338bf282e146103b85780633b406fb7146103e857610225565b806317cc915c1461022a57806318006104146102685780631a4be74c146102995780631e85e711146102ce575b600080fd5b34801561023657600080fd5b506102546004803603602081101561024d57600080fd5b5035610870565b604080519115158252519081900360200190f35b34801561027457600080fd5b5061027d610885565b604080516001600160a01b039092168252519081900360200190f35b3480156102a557600080fd5b506102cc600480360360208110156102bc57600080fd5b50356001600160a01b0316610894565b005b3480156102da57600080fd5b506102e36108ff565b60408051918252519081900360200190f35b6102cc600480360360e081101561030b57600080fd5b810190602081018135600160201b81111561032557600080fd5b82018360208201111561033757600080fd5b803590602001918460018302840111600160201b8311171561035857600080fd5b91935091508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a00135610905565b34801561039a57600080fd5b5061027d610e7f565b3480156103af57600080fd5b506102e3610e8e565b3480156103c457600080fd5b506102e3600480360360408110156103db57600080fd5b5080359060200135610e94565b3480156103f457600080fd5b506102e3611077565b34801561040957600080fd5b506102e361107d565b34801561041e57600080fd5b5061042761108f565b6040805163ffffffff9092168252519081900360200190f35b34801561044c57600080fd5b506102e361109b565b34801561046157600080fd5b5061046a6110a1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104a457818101518382015260200161048c565b50505050905090810190601f1680156104d15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104eb57600080fd5b506102e36110bf565b34801561050057600080fd5b5061027d61112c565b34801561051557600080fd5b506102546004803603602081101561052c57600080fd5b503561113b565b34801561053f57600080fd5b506102546004803603602081101561055657600080fd5b50356111ae565b34801561056957600080fd5b506102e36111c3565b34801561057e57600080fd5b506102cc6111c9565b34801561059357600080fd5b506102cc600480360360208110156105aa57600080fd5b50356111f4565b3480156105bd57600080fd5b5061042761127f565b3480156105d257600080fd5b506102cc600480360360208110156105e957600080fd5b50356001600160a01b031661128b565b34801561060557600080fd5b506102e36112f6565b34801561061a57600080fd5b506106896004803603602081101561063157600080fd5b810190602081018135600160201b81111561064b57600080fd5b82018360208201111561065d57600080fd5b803590602001918460208302840111600160201b8311171561067e57600080fd5b5090925090506112fc565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156106c55781810151838201526020016106ad565b505050509050019250505060405180910390f35b3480156106e557600080fd5b506102e3611384565b3480156106fa57600080fd5b5061027d61138a565b6102cc6004803603602081101561071957600080fd5b5035611399565b34801561072c57600080fd5b506102e3611836565b34801561074157600080fd5b506102cc6004803603602081101561075857600080fd5b5035611856565b34801561076b57600080fd5b506102e36004803603602081101561078257600080fd5b50356118e9565b34801561079557600080fd5b506104276118fd565b3480156107aa57600080fd5b506102e3611902565b3480156107bf57600080fd5b50610254600480360360208110156107d657600080fd5b5035611908565b3480156107e957600080fd5b506102e36004803603602081101561080057600080fd5b503561191d565b34801561081357600080fd5b506102e361193b565b34801561082857600080fd5b506102e36004803603602081101561083f57600080fd5b503561195f565b34801561085257600080fd5b5061027d61196c565b34801561086757600080fd5b5061042761197b565b606c6020526000908152604090205460ff1681565b6070546001600160a01b031681565b6072546001600160a01b031633146108dd5760405162461bcd60e51b815260040180806020018281038252602b81526020018061203f602b913960400191505060405180910390fd5b607280546001600160a01b0319166001600160a01b0392909216919091179055565b60765481565b60685460ff1661095c576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff1916905580156109ae576040805162461bcd60e51b8152602060048201526012602482015271726566756e64206973206e6f74207a65726f60701b604482015290519081900360640190fd5b6109b78461198e565b15610a09576040805162461bcd60e51b815260206004820152601f60248201527f726563697069656e74206f662063616e6e6f7420626520636f6e747261637400604482015290519081900360640190fd5b6000858152606c602052604090205460ff1615610a6d576040805162461bcd60e51b815260206004820152601f60248201527f546865206e6f746520686173206265656e20616c7265616479207370656e7400604482015290519081900360640190fd5b610a768661113b565b610ac7576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742066696e6420796f7572206d65726b6c6520726f6f7400000000604482015290519081900360640190fd5b606e546040805160c08082018352898252602082018990526001600160a01b038881168385015287811660608401526080830187905260a08301869052925163695ef6f960e01b8152929093169263695ef6f9928c928c9290916004810191829160240190849080838360005b83811015610b4c578181015183820152602001610b34565b505050509050018281038252858582818152602001925080828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b158015610b9e57600080fd5b505af1158015610bb2573d6000803e3d6000fd5b505050506040513d6020811015610bc857600080fd5b5051610c14576040805162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103bb4ba34323930bb90383937b7b360511b604482015290519081900360640190fd5b6000858152606c60205260409020805460ff191660011790556069548015610c4d57606f54610c4d906001600160a01b03168683611994565b610c556111c9565b6073546076546000918291610c6f9163ffffffff611a5316565b90508015610c9757607680548290039055607054610c97906001600160a01b03168883611994565b606a5480861115610ca6578095505b8515610d57576040516000906001600160a01b0389169088908381818185875af1925050503d8060008114610cf7576040519150601f19603f3d011682016040523d82523d6000602084013e610cfc565b606091505b5050905080610d52576040805162461bcd60e51b815260206004820152601a60248201527f6661696c656420746f2073656e642072656c6179657220666565000000000000604482015290519081900360640190fd5b508590035b8015610e05576040516000906001600160a01b038a169083908381818185875af1925050503d8060008114610da8576040519150601f19603f3d011682016040523d82523d6000602084013e610dad565b606091505b5050905080610e03576040805162461bcd60e51b815260206004820152601760248201527f6661696c656420746f20776974686472617720636f696e000000000000000000604482015290519081900360640190fd5b505b60738054600019019055604080516001600160a01b038a81168252602082018c9052818301859052606082018690529151918916917f6d7aac54bd3d1c91db3b1fd7b8d6cb45324ad6b5e373c0f0ea4d7b2606c4c2c89181900360800190a250506068805460ff1916600117905550505050505050505050565b606e546001600160a01b031681565b60735481565b6000600080516020611fd48339815191528310610ef8576040805162461bcd60e51b815260206004820181905260248201527f5f6c6566742073686f756c6420626520696e7369646520746865206669656c64604482015290519081900360640190fd5b600080516020611fd48339815191528210610f445760405162461bcd60e51b8152600401808060200182810382526021815260200180611fb36021913960400191505060405180910390fd5b6040805163f47d33b560e01b81526004810185905260006024820181905282518693919273949452e32db13a5771445cf20b304474b866202b9263f47d33b592604480840193829003018186803b158015610f9e57600080fd5b505af4158015610fb2573d6000803e3d6000fd5b505050506040513d6040811015610fc857600080fd5b5080516020909101519092509050600080516020611fd4833981519152848308915073949452e32db13a5771445cf20b304474b866202b63f47d33b583836040518363ffffffff1660e01b81526004018083815260200182815260200192505050604080518083038186803b15801561104057600080fd5b505af4158015611054573d6000803e3d6000fd5b505050506040513d604081101561106a57600080fd5b5051925050505b92915050565b60775481565b600080516020611fd483398151915281565b60005463ffffffff1681565b60695481565b604080518082019091526003815262322e3360e81b60208201525b90565b6000607354600014156110d55750606b546110bc565b607654607454439190821180156110ee57506000607554115b156110fe576110fb611a66565b90505b6073546111259061111983600019830163ffffffff611b3f16565b9063ffffffff611a5316565b9250505090565b6071546001600160a01b031681565b60008161114a575060006111a9565b60035463ffffffff165b60048163ffffffff166064811061116757fe5b015483141561117a5760019150506111a9565b63ffffffff8116611189575060645b6003546000199091019063ffffffff808316911614156111545760009150505b919050565b606d6020526000908152604090205460ff1681565b60755481565b607454439081116111da57506111f2565b607554156111ee576111ea611a66565b6076555b6074555b565b6072546001600160a01b0316331461123d5760405162461bcd60e51b815260040180806020018281038252602b81526020018061203f602b913960400191505060405180910390fd5b607754604080519182526020820183905280517ff077eec825bf8719ab7021daf299e3feb4cb33472ac3f1e661657fd9701a3e7e9281900390910190a1607755565b60035463ffffffff1681565b6072546001600160a01b031633146112d45760405162461bcd60e51b815260040180806020018281038252602b81526020018061203f602b913960400191505060405180910390fd5b606e80546001600160a01b0319166001600160a01b0392909216919091179055565b606a5481565b604080518281526020808402820101909152606090828015611328578160200160208202803883390190505b50905060005b8281101561137d5761135184848381811061134557fe5b90506020020135611908565b1561137557600182828151811061136457fe5b911515602092830291909101909101525b60010161132e565b5092915050565b60745481565b6072546001600160a01b031681565b60685460ff166113f0576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6068805460ff191690556000818152606d602052604090205460ff16156114485760405162461bcd60e51b8152600401808060200182810382526021815260200180611ff46021913960400191505060405180910390fd5b606a5434101561149f576040805162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420636f696e20616d6f756e740000000000000000604482015290519081900360640190fd5b606a54340360006114af83611b4c565b6000848152606d60205260409020805460ff1916600117905590506114d26111c9565b60006114dc6110bf565b60775490915060006114f4838363ffffffff611b3f16565b1115611602576070546001600160a01b03166323b872dd333061151d868663ffffffff611b3f16565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b15801561158557600080fd5b505af1158015611599573d6000803e3d6000fd5b505050506040513d60208110156115af57600080fd5b5051611602576040805162461bcd60e51b815260206004820152601a60248201527f696e73756666696369656e742043594320616c6c6f77616e6365000000000000604482015290519081900360640190fd5b8015611702576071546001600160a01b0316806116e95760705460408051630852cd8d60e31b81526004810185905290516001600160a01b03909216916342966c68916024808201926020929091908290030181600087803b15801561166757600080fd5b505af115801561167b573d6000803e3d6000fd5b505050506040513d602081101561169157600080fd5b50516116e4576040805162461bcd60e51b815260206004820152601c60248201527f6661696c656420746f206275726e20616e6f6e796d6974792066656500000000604482015290519081900360640190fd5b611700565b607054611700906001600160a01b03168284611994565b505b606954801561172957606f54611729906001600160a01b031633308463ffffffff611ce316565b607680548401905560738054600101905584156117d257604051600090339087908381818185875af1925050503d8060008114611782576040519150601f19603f3d011682016040523d82523d6000602084013e611787565b606091505b50509050806117d0576040805162461bcd60e51b815260206004820152601060248201526f19985a5b1959081d1bc81c99599d5b9960821b604482015290519081900360640190fd5b505b6040805163ffffffff8616815242602082015280820185905260608101849052905187917fcb186cc0add5be357ae2d3845e42be2ffbed8cb23b60f1b058ea371adff0a363919081900360800190a250506068805460ff1916600117905550505050565b60035460009060049063ffffffff166064811061184f57fe5b0154905090565b6072546001600160a01b0316331461189f5760405162461bcd60e51b815260040180806020018281038252602b81526020018061203f602b913960400191505060405180910390fd5b6118a76111c9565b607554604080519182526020820183905280517f842e6f2b482c6f39924c8be7b71d40631362ef78f833f0371ceb2649edc5fb109281900390910190a1607555565b600481606481106118f657fe5b0154905081565b606481565b606b5481565b6000908152606c602052604090205460ff1690565b6002818154811061192a57fe5b600091825260209091200154905081565b7f2fe54c60d3acabf3343a35b6eba15db4821b340f76e741e2249685ed4899af6c81565b6001818154811061192a57fe5b606f546001600160a01b031681565b600354600160201b900463ffffffff1681565b3b151590565b604080516370a0823160e01b815230600482015290516000916001600160a01b038616916370a0823191602480820192602092909190829003018186803b1580156119de57600080fd5b505afa1580156119f2573d6000803e3d6000fd5b505050506040513d6020811015611a0857600080fd5b5051905080821115611a3357611a2e6001600160a01b038516848363ffffffff611d3d16565b611a4d565b611a4d6001600160a01b038516848463ffffffff611d3d16565b50505050565b6000818381611a5e57fe5b049392505050565b600080611a90607554611a8460745443611d9490919063ffffffff16565b9063ffffffff611da616565b607654607054604080516370a0823160e01b81523060048201529051939450600093611b1e93926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611ae657600080fd5b505afa158015611afa573d6000803e3d6000fd5b505050506040513d6020811015611b1057600080fd5b50519063ffffffff611d9416565b905081811015611b2c578091505b607654611125908363ffffffff611b3f16565b8181018281101561107157fe5b60035460008054909163ffffffff600160201b909104811691811660020a16811415611ba95760405162461bcd60e51b815260040180806020018281038252602f815260200180611f84602f913960400191505060405180910390fd5b6003805463ffffffff600160201b80830482166001019091160267ffffffff000000001990911617905582600080805b60005463ffffffff9081169082161015611c815760018516611c3d5783925060028163ffffffff1681548110611c0b57fe5b906000526020600020015491508360018263ffffffff1681548110611c2c57fe5b600091825260209091200155611c61565b60018163ffffffff1681548110611c5057fe5b906000526020600020015492508391505b611c6b8383610e94565b9350600263ffffffff8616049450600101611bd9565b5060035460649063ffffffff908116600101166003805463ffffffff19169290910663ffffffff908116929092179081905584916004911660648110611cc357fe5b01555050600354600160201b900463ffffffff1660001901949350505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611a4d908590611dcb565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611d8f908490611dcb565b505050565b600082821115611da057fe5b50900390565b600082611db557506000611071565b5081810281838281611dc357fe5b041461107157fe5b611ddd826001600160a01b031661198e565b611e2e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611e6c5780518252601f199092019160209182019101611e4d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611ece576040519150601f19603f3d011682016040523d82523d6000602084013e611ed3565b606091505b509150915081611f2a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611a4d57808060200190516020811015611f4657600080fd5b5051611a4d5760405162461bcd60e51b815260040180806020018281038252602a815260200180612015602a913960400191505060405180910390fdfe4d65726b6c6520747265652069732066756c6c2e204e6f206d6f7265206c656166732063616e2062652061646465645f72696768742073686f756c6420626520696e7369646520746865206669656c6430644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000154686520636f6d6d69746d656e7420686173206265656e207375626d69747465645361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565644f6e6c7920476f7665726e616e63652044414f2063616e2063616c6c20746869732066756e6374696f6e2ea265627a7a723158205c4d8e6f3d8602aa49a09530ce4aead57613d8cef26fb8ab98cdbe2a8a1df62a64736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002acb8663b18d8c8180783c18b88d60b86de26df200000000000000000000000000000000000000000000000000000000000000000000000000000000000000008861cff2366c1128fd699b68304ad99a0764ef9a00000000000000000000000092d221682384a3ad3549b8b8ea992c9048cf222800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008ac7230489e8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c084c40000000000000000000000007c994fb3a8c208c1750df937d473040c604292d60000000000000000000000000000000000000000000000000000000000000014
-----Decoded View---------------
Arg [0] : _govDAO (address): 0x2AcB8663B18d8c8180783C18b88D60b86de26dF2
Arg [1] : _token (address): 0x0000000000000000000000000000000000000000
Arg [2] : _cycToken (address): 0x8861cfF2366C1128fd699B68304aD99a0764Ef9a
Arg [3] : _treasury (address): 0x92D221682384A3Ad3549B8B8eA992C9048cF2228
Arg [4] : _initCYCDenomination (uint256): 0
Arg [5] : _coinDenomination (uint256): 10000000000000000000
Arg [6] : _tokenDenomination (uint256): 0
Arg [7] : _startBlock (uint256): 12616900
Arg [8] : _verifier (address): 0x7C994FB3a8C208C1750Df937d473040c604292D6
Arg [9] : _merkleTreeHeight (uint32): 20
-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 0000000000000000000000002acb8663b18d8c8180783c18b88d60b86de26df2
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000008861cff2366c1128fd699b68304ad99a0764ef9a
Arg [3] : 00000000000000000000000092d221682384a3ad3549b8b8ea992c9048cf2228
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000008ac7230489e80000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000c084c4
Arg [8] : 0000000000000000000000007c994fb3a8c208c1750df937d473040c604292d6
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000014
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.