ERC-20
DeFi
Overview
Max Total Supply
5,389,315.129876081863834562 sDYSN
Holders
676
Market
Price
$0.00 @ 0.000000 ETH
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.853514915716783925 sDYSNValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
sDYSON
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity 0.8.17; // SPDX-License-Identifier: AGPL-3.0-only import "./lib/ABDKMath64x64.sol"; import "./lib/TransferHelper.sol"; import "./interface/IsDYSONUpgradeReceiver.sol"; contract StakingRateModel { using ABDKMath64x64 for *; uint public immutable initialTime; uint public immutable initialRate; /// @dev `_initialRate` is the expected initial rate divided by 16 /// For example, if expected initial rate is 1, i.e., STAKING_RATE_BASE_UNIT /// then `_initialRate` passed in would be STAKING_RATE_BASE_UNIT / 16 constructor(uint _initialRate) { initialTime = block.timestamp; initialRate = _initialRate; } /// @notice Base on `lockDuration` plus time since inital time, calculate the expected staking rate. /// Note that `lockDuration` must be greater than 30 minutes and less and 4 years (1 year = 365.25 days) /// Formula to calculate staking rate: /// `initialRate` * 2^((`lockDuration` + time_since_initial_time) / 1 year) /// @param lockDuration Duration to lock DYSON /// @return rate Staking rate function stakingRate(uint lockDuration) external view returns (uint rate) { if(lockDuration < 30 minutes) return 0; if(lockDuration > 1461 days) return 0; lockDuration = lockDuration + block.timestamp - initialTime; int128 lockPeriod = lockDuration.divu(365.25 days); int128 r = lockPeriod.exp_2(); rate = r.mulu(initialRate); } } contract sDYSON { using TransferHelper for address; struct Vault { uint dysonAmount; uint sDysonAmount; uint unlockTime; } /// @dev For EIP-2612 permit bytes32 public immutable DOMAIN_SEPARATOR; /// @dev keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)") bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; /// @dev Max staking rate uint private constant STAKING_RATE_BASE_UNIT = 1e18; uint private constant MAX_MINT_AMOUNT_LIMIT = 2**255; string public constant symbol = "sDYSN"; string public constant name = "Sealed Dyson Sphere"; uint8 public constant decimals = 18; address public immutable Dyson; /// @dev bytes4(keccak256("onMigrationReceived(address,uint256,uint256,uint256)")) bytes4 private constant _MIGRATE_RECEIVED = 0xd4fb1792; address public owner; /// @dev Migration contract for user to migrate to new staking contract address public migration; uint public totalSupply; int256 public unbackedSupply; int256 public unbackedSupplyCap; StakingRateModel public currentModel; mapping(address => bool) public isMinter; /// @notice User's sDyson amount mapping(address => uint) public balanceOf; /// @notice User's sDYSON allowance for spender mapping(address => mapping(address => uint)) public allowance; /// @notice User's vault, indexed by number mapping(address => mapping(uint => Vault)) public vaults; /// @notice Number of vaults owned by user mapping(address => uint) public vaultCount; /// @notice Sum of dyson amount in all of user's current vaults mapping(address => uint) public dysonAmountStaked; /// @notice Sum of sDYSON amount in all of user's current vaults mapping(address => uint) public votingPower; /// @notice User's permit nonce mapping(address => uint256) public nonces; event TransferOwnership(address newOwner); event Transfer(address indexed from, address indexed to, uint amount); event Approval(address indexed owner, address indexed spender, uint amount); event Stake(address indexed vaultOwner, address indexed depositor, uint amount, uint sDysonAmount, uint time); event Restake(address indexed vaultOwner, uint index, uint dysonAmountAdded, uint sDysonAmountAdded, uint time); event Unstake(address indexed vaultOwner, address indexed receiver, uint amount, uint sDysonAmount); event Migrate(address indexed vaultOwner, uint index); constructor(address _owner, address dyson) { require(_owner != address(0), "owner cannot be zero"); require(dyson != address(0), "dyson cannot be zero"); owner = _owner; Dyson = dyson; uint256 chainId; assembly { chainId := chainid() } DOMAIN_SEPARATOR = keccak256( abi.encode( keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), keccak256(bytes(name)), keccak256(bytes("1")), chainId, address(this) ) ); } modifier onlyOwner() { require(msg.sender == owner, "forbidden"); _; } function transferOwnership(address _owner) external onlyOwner { require(_owner != address(0), "owner cannot be zero"); owner = _owner; emit TransferOwnership(_owner); } function addMinter(address _minter) external onlyOwner { isMinter[_minter] = true; } function removeMinter(address _minter) external onlyOwner { isMinter[_minter] = false; } function setUnbackedSupplyCap(int256 _unbackedSupplyCap) external onlyOwner { unbackedSupplyCap = _unbackedSupplyCap; } function approve(address spender, uint amount) external returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve( address _owner, address _spender, uint256 _amount ) internal virtual { require(_owner != address(0), "ERC20: approve from the zero address"); require(_spender != address(0), "ERC20: approve to the zero address"); allowance[_owner][_spender] = _amount; emit Approval(_owner, _spender, _amount); } /// @dev Mint sDYSON function _mint(address to, uint amount) internal returns (bool) { balanceOf[to] += amount; totalSupply += amount; emit Transfer(address(0), to, amount); return true; } /// @dev Burn sDYSON function _burn(address from, uint amount) internal returns (bool) { balanceOf[from] -= amount; totalSupply -= amount; emit Transfer(from, address(0), amount); return true; } function _transfer(address from, address to, uint amount) internal returns (bool) { balanceOf[from] -= amount; balanceOf[to] += amount; emit Transfer(from, to, amount); return true; } function transfer(address to, uint amount) external returns (bool) { return _transfer(msg.sender, to, amount); } function transferFrom(address from, address to, uint amount) external returns (bool) { if (allowance[from][msg.sender] != type(uint).max) { allowance[from][msg.sender] -= amount; } return _transfer(from, to, amount); } /// @notice Get staking rate /// @param lockDuration Duration to lock Dyson /// @return rate Staking rate function getStakingRate(uint lockDuration) public view returns (uint rate) { return currentModel.stakingRate(lockDuration); } /// @param newModel New StakingRateModel function setStakingRateModel(address newModel) external onlyOwner { currentModel = StakingRateModel(newModel); } /// @param _migration New Migration contract function setMigration(address _migration) external onlyOwner { migration = _migration; } // mint unbacked sDYSN function mint(address to, uint amount) external returns (bool) { require(isMinter[msg.sender] || (owner == msg.sender), "forbidden"); require(amount < MAX_MINT_AMOUNT_LIMIT, "invalid amount"); require(unbackedSupply + int256(amount) <= unbackedSupplyCap, "exceed cap"); unbackedSupply += int256(amount); return _mint(to, amount); } // burn sDYSN, decrease unbacked sDYSN amount function burn(uint amount) external returns (bool) { require(amount < MAX_MINT_AMOUNT_LIMIT, "invalid amount"); unbackedSupply -= int256(amount); return _burn(msg.sender, amount); } /// @notice Stake on behalf of `to` /// @param to Address that owns the new vault /// @param amount Amount of Dyson to stake /// @param lockDuration Duration to lock Dyson /// @return sDysonAmount Amount of sDYSON minted to `to`'s new vault function stake(address to, uint amount, uint lockDuration) external returns (uint sDysonAmount) { Vault storage vault = vaults[to][vaultCount[to]]; sDysonAmount = getStakingRate(lockDuration) * amount / STAKING_RATE_BASE_UNIT; require(sDysonAmount > 0, "invalid lockup"); vault.dysonAmount = amount; vault.sDysonAmount = sDysonAmount; vault.unlockTime = block.timestamp + lockDuration; dysonAmountStaked[to] += amount; votingPower[to] += sDysonAmount; vaultCount[to]++; _mint(to, sDysonAmount); Dyson.safeTransferFrom(msg.sender, address(this), amount); emit Stake(to, msg.sender, amount, sDysonAmount, lockDuration); } /// @notice Restake more Dyson to user's given vault. New unlock time must be greater than old unlock time. /// Note that user can restake even when the vault is unlocked /// @param index Index of user's vault to restake /// @param amount Amount of Dyson to restake /// @param lockDuration Duration to lock Dyson /// @return sDysonAmountAdded Amount of new sDYSON minted to user's vault function restake(uint index, uint amount, uint lockDuration) external returns (uint sDysonAmountAdded) { require(index < vaultCount[msg.sender], "invalid index"); Vault storage vault = vaults[msg.sender][index]; require(vault.unlockTime < block.timestamp + lockDuration, "locked"); uint sDysonAmountOld = vault.sDysonAmount; uint sDysonAmountNew = (vault.dysonAmount + amount) * getStakingRate(lockDuration) / STAKING_RATE_BASE_UNIT; require(sDysonAmountNew > 0, "invalid lockup"); sDysonAmountAdded = sDysonAmountNew - sDysonAmountOld; vault.dysonAmount += amount; vault.sDysonAmount = sDysonAmountNew; vault.unlockTime = block.timestamp + lockDuration; dysonAmountStaked[msg.sender] += amount; votingPower[msg.sender] += sDysonAmountAdded; _mint(msg.sender, sDysonAmountAdded); if(amount > 0) Dyson.safeTransferFrom(msg.sender, address(this), amount); emit Restake(msg.sender, index, amount, sDysonAmountAdded, lockDuration); } /// @notice Unstake a given user's vault after the vault is unlocked and transfer Dyson to `to` /// @param to Address that will receive Dyson /// @param index Index of user's vault to unstake /// @param sDysonAmount Amount of sDYSON to unstake /// @return amount Amount of Dyson transferred function unstake(address to, uint index, uint sDysonAmount) external returns (uint amount) { require(sDysonAmount > 0, "invalid input amount"); Vault storage vault = vaults[msg.sender][index]; require(block.timestamp >= vault.unlockTime, "locked"); require(sDysonAmount <= vault.sDysonAmount, "exceed locked amount"); amount = sDysonAmount * vault.dysonAmount / vault.sDysonAmount; vault.dysonAmount -= amount; vault.sDysonAmount -= sDysonAmount; dysonAmountStaked[msg.sender] -= amount; votingPower[msg.sender] -= sDysonAmount; _burn(msg.sender, sDysonAmount); Dyson.safeTransfer(to, amount); emit Unstake(msg.sender, to, amount, sDysonAmount); } /// @notice Migrate given user's vault to new staking contract /// @dev Owner must set `migration` before migrate. /// `migration` must implement `onMigrationReceived` /// @param index Index of user's vault to migrate function migrate(uint index) external { require(migration != address(0), "cannot migrate"); Vault storage vault = vaults[msg.sender][index]; uint dysonAmount = vault.dysonAmount; uint sDysonAmount = vault.sDysonAmount; uint unlockTime = vault.unlockTime; require(unlockTime > 0, "invalid vault"); delete vaults[msg.sender][index]; dysonAmountStaked[msg.sender] -= dysonAmount; votingPower[msg.sender] -= sDysonAmount; _approve(msg.sender, migration, sDysonAmount); Dyson.safeTransfer(migration, dysonAmount); require(IsDYSONUpgradeReceiver(migration).onMigrationReceived(msg.sender, dysonAmount, sDysonAmount, unlockTime) == _MIGRATE_RECEIVED, "migration failed"); emit Migrate(msg.sender, index); } /// @notice rescue token stucked in this contract /// @param tokenAddress Address of token to be rescued /// @param to Address that will receive token /// @param amount Amount of token to be rescued function rescueERC20(address tokenAddress, address to, uint256 amount) onlyOwner external { require(tokenAddress != Dyson); tokenAddress.safeTransfer(to, amount); } /// @notice EIP-2612 permit function permit( address _owner, address _spender, uint256 _amount, uint256 _deadline, uint8 _v, bytes32 _r, bytes32 _s ) external { require(_owner != address(0), "zero address"); require(block.timestamp <= _deadline || _deadline == 0, "permit is expired"); bytes32 digest = keccak256( abi.encodePacked(uint16(0x1901), DOMAIN_SEPARATOR, keccak256(abi.encode(PERMIT_TYPEHASH, _owner, _spender, _amount, nonces[_owner]++, _deadline))) ); require(_owner == ecrecover(digest, _v, _r, _s), "invalid signature"); _approve(_owner, _spender, _amount); } }
pragma solidity 0.8.17; // SPDX-License-Identifier: AGPL-2.0 library ABDKMath64x64 { /* * Minimum value signed 64.64-bit fixed point number may have. * -2^127 */ int128 private constant MIN_64x64 = -0x80000000000000000000000000000000; /* * Maximum value signed 64.64-bit fixed point number may have. * 2^127-1 */ int128 private constant MAX_64x64 = 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF; /** * Calculate x * y rounding down, where x is signed 64.64 fixed point number * and y is unsigned 256-bit integer number. Revert on overflow. * * @param x signed 64.64 fixed point number * @param y unsigned 256-bit integer number * @return unsigned 256-bit integer number */ function mulu (int128 x, uint256 y) internal pure returns (uint256) { unchecked { if (y == 0) return 0; require (x >= 0); uint256 lo = (uint256 (int256 (x)) * (y & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)) >> 64; uint256 hi = uint256 (int256 (x)) * (y >> 128); require (hi <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF); hi <<= 64; require (hi <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - lo); return hi + lo; } } /** * Calculate x / y rounding towards zero, where x and y are unsigned 256-bit * integer numbers. Revert on overflow or when y is zero. * * @param x unsigned 256-bit integer number * @param y unsigned 256-bit integer number * @return signed 64.64-bit fixed point number */ function divu (uint256 x, uint256 y) internal pure returns (int128) { unchecked { require (y != 0); uint128 result = divuu (x, y); require (result <= uint128 (MAX_64x64)); return int128 (result); } } /** * Calculate binary exponent of x. Revert on overflow. * * @param x signed 64.64-bit fixed point number * @return signed 64.64-bit fixed point number */ function exp_2 (int128 x) internal pure returns (int128) { unchecked { require (x < 0x400000000000000000); // Overflow if (x < -0x400000000000000000) return 0; // Underflow uint256 result = 0x80000000000000000000000000000000; if (x & 0x8000000000000000 > 0) result = result * 0x16A09E667F3BCC908B2FB1366EA957D3E >> 128; if (x & 0x4000000000000000 > 0) result = result * 0x1306FE0A31B7152DE8D5A46305C85EDEC >> 128; if (x & 0x2000000000000000 > 0) result = result * 0x1172B83C7D517ADCDF7C8C50EB14A791F >> 128; if (x & 0x1000000000000000 > 0) result = result * 0x10B5586CF9890F6298B92B71842A98363 >> 128; if (x & 0x800000000000000 > 0) result = result * 0x1059B0D31585743AE7C548EB68CA417FD >> 128; if (x & 0x400000000000000 > 0) result = result * 0x102C9A3E778060EE6F7CACA4F7A29BDE8 >> 128; if (x & 0x200000000000000 > 0) result = result * 0x10163DA9FB33356D84A66AE336DCDFA3F >> 128; if (x & 0x100000000000000 > 0) result = result * 0x100B1AFA5ABCBED6129AB13EC11DC9543 >> 128; if (x & 0x80000000000000 > 0) result = result * 0x10058C86DA1C09EA1FF19D294CF2F679B >> 128; if (x & 0x40000000000000 > 0) result = result * 0x1002C605E2E8CEC506D21BFC89A23A00F >> 128; if (x & 0x20000000000000 > 0) result = result * 0x100162F3904051FA128BCA9C55C31E5DF >> 128; if (x & 0x10000000000000 > 0) result = result * 0x1000B175EFFDC76BA38E31671CA939725 >> 128; if (x & 0x8000000000000 > 0) result = result * 0x100058BA01FB9F96D6CACD4B180917C3D >> 128; if (x & 0x4000000000000 > 0) result = result * 0x10002C5CC37DA9491D0985C348C68E7B3 >> 128; if (x & 0x2000000000000 > 0) result = result * 0x1000162E525EE054754457D5995292026 >> 128; if (x & 0x1000000000000 > 0) result = result * 0x10000B17255775C040618BF4A4ADE83FC >> 128; if (x & 0x800000000000 > 0) result = result * 0x1000058B91B5BC9AE2EED81E9B7D4CFAB >> 128; if (x & 0x400000000000 > 0) result = result * 0x100002C5C89D5EC6CA4D7C8ACC017B7C9 >> 128; if (x & 0x200000000000 > 0) result = result * 0x10000162E43F4F831060E02D839A9D16D >> 128; if (x & 0x100000000000 > 0) result = result * 0x100000B1721BCFC99D9F890EA06911763 >> 128; if (x & 0x80000000000 > 0) result = result * 0x10000058B90CF1E6D97F9CA14DBCC1628 >> 128; if (x & 0x40000000000 > 0) result = result * 0x1000002C5C863B73F016468F6BAC5CA2B >> 128; if (x & 0x20000000000 > 0) result = result * 0x100000162E430E5A18F6119E3C02282A5 >> 128; if (x & 0x10000000000 > 0) result = result * 0x1000000B1721835514B86E6D96EFD1BFE >> 128; if (x & 0x8000000000 > 0) result = result * 0x100000058B90C0B48C6BE5DF846C5B2EF >> 128; if (x & 0x4000000000 > 0) result = result * 0x10000002C5C8601CC6B9E94213C72737A >> 128; if (x & 0x2000000000 > 0) result = result * 0x1000000162E42FFF037DF38AA2B219F06 >> 128; if (x & 0x1000000000 > 0) result = result * 0x10000000B17217FBA9C739AA5819F44F9 >> 128; if (x & 0x800000000 > 0) result = result * 0x1000000058B90BFCDEE5ACD3C1CEDC823 >> 128; if (x & 0x400000000 > 0) result = result * 0x100000002C5C85FE31F35A6A30DA1BE50 >> 128; if (x & 0x200000000 > 0) result = result * 0x10000000162E42FF0999CE3541B9FFFCF >> 128; if (x & 0x100000000 > 0) result = result * 0x100000000B17217F80F4EF5AADDA45554 >> 128; if (x & 0x80000000 > 0) result = result * 0x10000000058B90BFBF8479BD5A81B51AD >> 128; if (x & 0x40000000 > 0) result = result * 0x1000000002C5C85FDF84BD62AE30A74CC >> 128; if (x & 0x20000000 > 0) result = result * 0x100000000162E42FEFB2FED257559BDAA >> 128; if (x & 0x10000000 > 0) result = result * 0x1000000000B17217F7D5A7716BBA4A9AE >> 128; if (x & 0x8000000 > 0) result = result * 0x100000000058B90BFBE9DDBAC5E109CCE >> 128; if (x & 0x4000000 > 0) result = result * 0x10000000002C5C85FDF4B15DE6F17EB0D >> 128; if (x & 0x2000000 > 0) result = result * 0x1000000000162E42FEFA494F1478FDE05 >> 128; if (x & 0x1000000 > 0) result = result * 0x10000000000B17217F7D20CF927C8E94C >> 128; if (x & 0x800000 > 0) result = result * 0x1000000000058B90BFBE8F71CB4E4B33D >> 128; if (x & 0x400000 > 0) result = result * 0x100000000002C5C85FDF477B662B26945 >> 128; if (x & 0x200000 > 0) result = result * 0x10000000000162E42FEFA3AE53369388C >> 128; if (x & 0x100000 > 0) result = result * 0x100000000000B17217F7D1D351A389D40 >> 128; if (x & 0x80000 > 0) result = result * 0x10000000000058B90BFBE8E8B2D3D4EDE >> 128; if (x & 0x40000 > 0) result = result * 0x1000000000002C5C85FDF4741BEA6E77E >> 128; if (x & 0x20000 > 0) result = result * 0x100000000000162E42FEFA39FE95583C2 >> 128; if (x & 0x10000 > 0) result = result * 0x1000000000000B17217F7D1CFB72B45E1 >> 128; if (x & 0x8000 > 0) result = result * 0x100000000000058B90BFBE8E7CC35C3F0 >> 128; if (x & 0x4000 > 0) result = result * 0x10000000000002C5C85FDF473E242EA38 >> 128; if (x & 0x2000 > 0) result = result * 0x1000000000000162E42FEFA39F02B772C >> 128; if (x & 0x1000 > 0) result = result * 0x10000000000000B17217F7D1CF7D83C1A >> 128; if (x & 0x800 > 0) result = result * 0x1000000000000058B90BFBE8E7BDCBE2E >> 128; if (x & 0x400 > 0) result = result * 0x100000000000002C5C85FDF473DEA871F >> 128; if (x & 0x200 > 0) result = result * 0x10000000000000162E42FEFA39EF44D91 >> 128; if (x & 0x100 > 0) result = result * 0x100000000000000B17217F7D1CF79E949 >> 128; if (x & 0x80 > 0) result = result * 0x10000000000000058B90BFBE8E7BCE544 >> 128; if (x & 0x40 > 0) result = result * 0x1000000000000002C5C85FDF473DE6ECA >> 128; if (x & 0x20 > 0) result = result * 0x100000000000000162E42FEFA39EF366F >> 128; if (x & 0x10 > 0) result = result * 0x1000000000000000B17217F7D1CF79AFA >> 128; if (x & 0x8 > 0) result = result * 0x100000000000000058B90BFBE8E7BCD6D >> 128; if (x & 0x4 > 0) result = result * 0x10000000000000002C5C85FDF473DE6B2 >> 128; if (x & 0x2 > 0) result = result * 0x1000000000000000162E42FEFA39EF358 >> 128; if (x & 0x1 > 0) result = result * 0x10000000000000000B17217F7D1CF79AB >> 128; result >>= uint256 (int256 (63 - (x >> 64))); require (result <= uint256 (int256 (MAX_64x64))); return int128 (int256 (result)); } } /** * Calculate x / y rounding towards zero, where x and y are unsigned 256-bit * integer numbers. Revert on overflow or when y is zero. * * @param x unsigned 256-bit integer number * @param y unsigned 256-bit integer number * @return unsigned 64.64-bit fixed point number */ function divuu (uint256 x, uint256 y) private pure returns (uint128) { unchecked { require (y != 0); uint256 result; if (x <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) result = (x << 64) / y; else { uint256 msb = 192; uint256 xc = x >> 192; if (xc >= 0x100000000) { xc >>= 32; msb += 32; } if (xc >= 0x10000) { xc >>= 16; msb += 16; } if (xc >= 0x100) { xc >>= 8; msb += 8; } if (xc >= 0x10) { xc >>= 4; msb += 4; } if (xc >= 0x4) { xc >>= 2; msb += 2; } if (xc >= 0x2) msb += 1; // No need to shift xc anymore result = (x << 255 - msb) / ((y - 1 >> msb - 191) + 1); require (result <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF); uint256 hi = result * (y >> 128); uint256 lo = result * (y & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF); uint256 xh = x >> 192; uint256 xl = x << 64; if (xl < lo) xh -= 1; xl -= lo; // We rely on overflow behavior here lo = hi << 128; if (xl < lo) xh -= 1; xl -= lo; // We rely on overflow behavior here assert (xh == hi >> 128); result += xl / y; } require (result <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF); return uint128 (result); } } }
pragma solidity 0.8.17; // SPDX-License-Identifier: AGPL-2.0 library TransferHelper { function safeApprove(address token, address to, uint value) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'transferHelper: approve failed'); } function safeTransfer(address token, address to, uint value) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'transferHelper: transfer failed'); } function safeTransferFrom(address token, address from, address to, uint value) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'transferHelper: transferFrom failed'); } function safeTransferETH(address to, uint value) internal { (bool success,) = to.call{value:value}(new bytes(0)); require(success, 'transferHelper: ETH transfer failed'); } }
pragma solidity >=0.8.0; // SPDX-License-Identifier: MIT interface IsDYSONUpgradeReceiver { function onMigrationReceived(address, uint, uint, uint) external returns (bytes4); }
{ "remappings": [ "@openzeppelin/=lib/openzeppelin-contracts/", "interface/=src/interface/", "util/=src/util/", "ds-test/=lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "openzeppelin/=lib/openzeppelin-contracts/contracts/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"dyson","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"vaultOwner","type":"address"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"Migrate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"vaultOwner","type":"address"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dysonAmountAdded","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sDysonAmountAdded","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"Restake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"vaultOwner","type":"address"},{"indexed":true,"internalType":"address","name":"depositor","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sDysonAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"TransferOwnership","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"vaultOwner","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sDysonAmount","type":"uint256"}],"name":"Unstake","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Dyson","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentModel","outputs":[{"internalType":"contract StakingRateModel","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"dysonAmountStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lockDuration","type":"uint256"}],"name":"getStakingRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migration","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"lockDuration","type":"uint256"}],"name":"restake","outputs":[{"internalType":"uint256","name":"sDysonAmountAdded","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_migration","type":"address"}],"name":"setMigration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newModel","type":"address"}],"name":"setStakingRateModel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"_unbackedSupplyCap","type":"int256"}],"name":"setUnbackedSupplyCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"lockDuration","type":"uint256"}],"name":"stake","outputs":[{"internalType":"uint256","name":"sDysonAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unbackedSupply","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unbackedSupplyCap","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"sDysonAmount","type":"uint256"}],"name":"unstake","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"vaultCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"vaults","outputs":[{"internalType":"uint256","name":"dysonAmount","type":"uint256"},{"internalType":"uint256","name":"sDysonAmount","type":"uint256"},{"internalType":"uint256","name":"unlockTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"votingPower","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c06040523480156200001157600080fd5b506040516200220438038062002204833981016040819052620000349162000212565b6001600160a01b038216620000905760405162461bcd60e51b815260206004820152601460248201527f6f776e65722063616e6e6f74206265207a65726f00000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b038116620000e85760405162461bcd60e51b815260206004820152601460248201527f6479736f6e2063616e6e6f74206265207a65726f000000000000000000000000604482015260640162000087565b600080546001600160a01b0319166001600160a01b039384161790551660a0908152604080518082018252601381527f5365616c6564204479736f6e20537068657265000000000000000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fcabe06b4a655adb0e7cc058ca86732e01882c50fe55237ea18e7384246737cf4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808083019190915230828601528351808303909501855260c0909101909252825192019190912090526200024a565b80516001600160a01b03811681146200020d57600080fd5b919050565b600080604083850312156200022657600080fd5b6200023183620001f5565b91506200024160208401620001f5565b90509250929050565b60805160a051611f6a6200029a600039600081816105b90152818161082901528181610caa01528181610fc601528181611069015261128a0152600081816103ac01526113e70152611f6a6000f3fe608060405234801561001057600080fd5b50600436106102315760003560e01c80637ecebe0011610130578063a9059cbb116100b8578063ce733e6d1161007c578063ce733e6d146105db578063d0b1ad85146105ee578063d505accf14610601578063dd62ed3e14610614578063f2fde38b1461063f57600080fd5b8063a9059cbb1461054b578063aa271e1a1461055e578063b2118a8d14610581578063c07473f614610594578063c3cf2956146105b457600080fd5b806395d89b41116100ff57806395d89b41146104ef578063983b2d5614610513578063a2bc66be14610526578063a692db6e14610539578063a7635a4e1461054257600080fd5b80637ecebe001461047c57806385f408941461049c5780638da5cb5b146104bc5780639038ff80146104cf57600080fd5b80633092afd5116101be57806340c10f191161018257806340c10f19146103ce57806342966c68146103e1578063454b0608146103f457806370a08231146104075780637bbfc69e1461042757600080fd5b80633092afd51461034057806330adf81f14610353578063313ce5671461037a578063351a5f7b146103945780633644e515146103a757600080fd5b80630f2ad452116102055780630f2ad452146102d15780631705a3bd146102e657806318160ddd1461031157806323ac136d1461031a57806323b872dd1461032d57600080fd5b80629a97561461023657806306fdde031461025c578063095ea7b31461029b5780630c51b88f146102be575b600080fd5b610249610244366004611ba1565b610652565b6040519081526020015b60405180910390f35b61028e604051806040016040528060138152602001725365616c6564204479736f6e2053706865726560681b81525081565b6040516102539190611bde565b6102ae6102a9366004611c2d565b6106c6565b6040519015158152602001610253565b6102496102cc366004611c57565b6106dc565b6102e46102df366004611c8a565b6108a8565b005b6001546102f9906001600160a01b031681565b6040516001600160a01b039091168152602001610253565b61024960025481565b6102e4610328366004611c8a565b6108f4565b6102ae61033b366004611ca5565b610940565b6102e461034e366004611c8a565b6109b8565b6102497f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610382601281565b60405160ff9091168152602001610253565b6005546102f9906001600160a01b031681565b6102497f000000000000000000000000000000000000000000000000000000000000000081565b6102ae6103dc366004611c2d565b610a03565b6102ae6103ef366004611ba1565b610b00565b6102e4610402366004611ba1565b610b68565b610249610415366004611c8a565b60076020526000908152604090205481565b610461610435366004611c2d565b600960209081526000928352604080842090915290825290208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610253565b61024961048a366004611c8a565b600d6020526000908152604090205481565b6102496104aa366004611c8a565b600b6020526000908152604090205481565b6000546102f9906001600160a01b031681565b6102496104dd366004611c8a565b600a6020526000908152604090205481565b61028e6040518060400160405280600581526020016439a22ca9a760d91b81525081565b6102e4610521366004611c8a565b610ddc565b610249610534366004611c57565b610e2a565b61024960045481565b61024960035481565b6102ae610559366004611c2d565b611030565b6102ae61056c366004611c8a565b60066020526000908152604090205460ff1681565b6102e461058f366004611ca5565b61103d565b6102496105a2366004611c8a565b600c6020526000908152604090205481565b6102f97f000000000000000000000000000000000000000000000000000000000000000081565b6102496105e9366004611ce1565b6110be565b6102e46105fc366004611ba1565b611306565b6102e461060f366004611d0d565b611335565b610249610622366004611d80565b600860209081526000928352604080842090915290825290205481565b6102e461064d366004611c8a565b611599565b6005546040516380a537d960e01b8152600481018390526000916001600160a01b0316906380a537d990602401602060405180830381865afa15801561069c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c09190611db3565b92915050565b60006106d3338484611664565b50600192915050565b6001600160a01b0383166000908152600960209081526040808320600a83528184205484529091528120670de0b6b3a76400008461071985610652565b6107239190611de2565b61072d9190611df9565b9150600082116107755760405162461bcd60e51b815260206004820152600e60248201526d0696e76616c6964206c6f636b75760941b60448201526064015b60405180910390fd5b838155600181018290556107898342611e1b565b60028201556001600160a01b0385166000908152600b6020526040812080548692906107b6908490611e1b565b90915550506001600160a01b0385166000908152600c6020526040812080548492906107e3908490611e1b565b90915550506001600160a01b0385166000908152600a6020526040812080549161080c83611e2e565b919050555061081b8583611788565b506108516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308761181b565b604080518581526020810184905290810184905233906001600160a01b038716907f4b22ccaaeb4846ec98072623a51a9070bf1f01c75ac1f8119035f373df852a0c906060015b60405180910390a3509392505050565b6000546001600160a01b031633146108d25760405162461bcd60e51b815260040161076c90611e47565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461091e5760405162461bcd60e51b815260040161076c90611e47565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166000908152600860209081526040808320338452909152812054600019146109a5576001600160a01b03841660009081526008602090815260408083203384529091528120805484929061099f908490611e6a565b90915550505b6109b084848461194b565b949350505050565b6000546001600160a01b031633146109e25760405162461bcd60e51b815260040161076c90611e47565b6001600160a01b03166000908152600660205260409020805460ff19169055565b3360009081526006602052604081205460ff1680610a2b57506000546001600160a01b031633145b610a475760405162461bcd60e51b815260040161076c90611e47565b600160ff1b8210610a8b5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015260640161076c565b60045482600354610a9c9190611e7d565b1315610ad75760405162461bcd60e51b815260206004820152600a6024820152690657863656564206361760b41b604482015260640161076c565b8160036000828254610ae99190611e7d565b90915550610af990508383611788565b9392505050565b6000600160ff1b8210610b465760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015260640161076c565b8160036000828254610b589190611ea5565b909155506106c090503383611a00565b6001546001600160a01b0316610bb15760405162461bcd60e51b815260206004820152600e60248201526d63616e6e6f74206d69677261746560901b604482015260640161076c565b336000908152600960209081526040808320848452909152902080546001820154600283015480610c145760405162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081d985d5b1d609a1b604482015260640161076c565b336000818152600960209081526040808320898452825280832083815560018101849055600201839055928252600b90529081208054859290610c58908490611e6a565b9091555050336000908152600c602052604081208054849290610c7c908490611e6a565b9091555050600154610c999033906001600160a01b031684611664565b600154610cd3906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911685611a86565b600154604051636a7d8bc960e11b808252336004830152602482018690526044820185905260648201849052916001600160a01b03169063d4fb1792906084016020604051808303816000875af1158015610d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d569190611ecc565b6001600160e01b03191614610da05760405162461bcd60e51b815260206004820152601060248201526f1b5a59dc985d1a5bdb8819985a5b195960821b604482015260640161076c565b60405185815233907fa59785389b00cbd19745afbe8d59b28e3161395c6b1e3525861a2b0dede0b90d9060200160405180910390a25050505050565b6000546001600160a01b03163314610e065760405162461bcd60e51b815260040161076c90611e47565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000808211610e725760405162461bcd60e51b81526020600482015260146024820152731a5b9d985b1a59081a5b9c1d5d08185b5bdd5b9d60621b604482015260640161076c565b33600090815260096020908152604080832086845290915290206002810154421015610ec95760405162461bcd60e51b81526020600482015260066024820152651b1bd8dad95960d21b604482015260640161076c565b8060010154831115610f145760405162461bcd60e51b8152602060048201526014602482015273195e18d95959081b1bd8dad95908185b5bdd5b9d60621b604482015260640161076c565b60018101548154610f259085611de2565b610f2f9190611df9565b915081816000016000828254610f459190611e6a565b9250508190555082816001016000828254610f609190611e6a565b9091555050336000908152600b602052604081208054849290610f84908490611e6a565b9091555050336000908152600c602052604081208054859290610fa8908490611e6a565b90915550610fb890503384611a00565b50610fed6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168684611a86565b60408051838152602081018590526001600160a01b0387169133917f18edd09e80386cd99df397e2e0d87d2bb259423eae08645e776321a36fe680ef9101610898565b6000610af933848461194b565b6000546001600160a01b031633146110675760405162461bcd60e51b815260040161076c90611e47565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036110a557600080fd5b6110b96001600160a01b0384168383611a86565b505050565b336000908152600a6020526040812054841061110c5760405162461bcd60e51b815260206004820152600d60248201526c0d2dcecc2d8d2c840d2dcc8caf609b1b604482015260640161076c565b33600090815260096020908152604080832087845290915290206111308342611e1b565b81600201541061116b5760405162461bcd60e51b81526020600482015260066024820152651b1bd8dad95960d21b604482015260640161076c565b60018101546000670de0b6b3a764000061118486610652565b8454611191908990611e1b565b61119b9190611de2565b6111a59190611df9565b9050600081116111e85760405162461bcd60e51b815260206004820152600e60248201526d0696e76616c6964206c6f636b75760941b604482015260640161076c565b6111f28282611e6a565b9350858360000160008282546112089190611e1b565b90915550506001830181905561121e8542611e1b565b6002840155336000908152600b602052604081208054889290611242908490611e1b565b9091555050336000908152600c602052604081208054869290611266908490611e1b565b9091555061127690503385611788565b5085156112b2576112b26001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308961181b565b60408051888152602081018890529081018590526060810186905233907fbc25936f61d661553dca1fb2bd2c968321f2a2f3061dc7511941bad73f2aa0639060800160405180910390a25050509392505050565b6000546001600160a01b031633146113305760405162461bcd60e51b815260040161076c90611e47565b600455565b6001600160a01b03871661137a5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015260640161076c565b8342111580611387575083155b6113c75760405162461bcd60e51b81526020600482015260116024820152701c195c9b5a5d081a5cc8195e1c1a5c9959607a1b604482015260640161076c565b6001600160a01b0387166000908152600d602052604081208054611901917f0000000000000000000000000000000000000000000000000000000000000000917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918c918c918c91908861143a83611e2e565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810188905260e001604051602081830303815290604052805190602001206040516020016114be9392919060f09390931b6001600160f01b03191683526002830191909152602282015260420190565b60408051601f1981840301815282825280516020918201206000845290830180835281905260ff8716918301919091526060820185905260808201849052915060019060a0016020604051602081039080840390855afa158015611526573d6000803e3d6000fd5b505050602060405103516001600160a01b0316886001600160a01b0316146115845760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015260640161076c565b61158f888888611664565b5050505050505050565b6000546001600160a01b031633146115c35760405162461bcd60e51b815260040161076c90611e47565b6001600160a01b0381166116105760405162461bcd60e51b81526020600482015260146024820152736f776e65722063616e6e6f74206265207a65726f60601b604482015260640161076c565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a49060200160405180910390a150565b6001600160a01b0383166116c65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161076c565b6001600160a01b0382166117275760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161076c565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166000908152600760205260408120805483919083906117b2908490611e1b565b9250508190555081600260008282546117cb9190611e1b565b90915550506040518281526001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a350600192915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b179052915160009283929088169161187f9190611ef6565b6000604051808303816000865af19150503d80600081146118bc576040519150601f19603f3d011682016040523d82523d6000602084013e6118c1565b606091505b50915091508180156118eb5750805115806118eb5750808060200190518101906118eb9190611f12565b6119435760405162461bcd60e51b815260206004820152602360248201527f7472616e7366657248656c7065723a207472616e7366657246726f6d206661696044820152621b195960ea1b606482015260840161076c565b505050505050565b6001600160a01b038316600090815260076020526040812080548391908390611975908490611e6a565b90915550506001600160a01b038316600090815260076020526040812080548492906119a2908490611e1b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119ee91815260200190565b60405180910390a35060019392505050565b6001600160a01b038216600090815260076020526040812080548391908390611a2a908490611e6a565b925050819055508160026000828254611a439190611e6a565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161180a565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691611ae29190611ef6565b6000604051808303816000865af19150503d8060008114611b1f576040519150601f19603f3d011682016040523d82523d6000602084013e611b24565b606091505b5091509150818015611b4e575080511580611b4e575080806020019051810190611b4e9190611f12565b611b9a5760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657248656c7065723a207472616e73666572206661696c656400604482015260640161076c565b5050505050565b600060208284031215611bb357600080fd5b5035919050565b60005b83811015611bd5578181015183820152602001611bbd565b50506000910152565b6020815260008251806020840152611bfd816040850160208701611bba565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114611c2857600080fd5b919050565b60008060408385031215611c4057600080fd5b611c4983611c11565b946020939093013593505050565b600080600060608486031215611c6c57600080fd5b611c7584611c11565b95602085013595506040909401359392505050565b600060208284031215611c9c57600080fd5b610af982611c11565b600080600060608486031215611cba57600080fd5b611cc384611c11565b9250611cd160208501611c11565b9150604084013590509250925092565b600080600060608486031215611cf657600080fd5b505081359360208301359350604090920135919050565b600080600080600080600060e0888a031215611d2857600080fd5b611d3188611c11565b9650611d3f60208901611c11565b95506040880135945060608801359350608088013560ff81168114611d6357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611d9357600080fd5b611d9c83611c11565b9150611daa60208401611c11565b90509250929050565b600060208284031215611dc557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176106c0576106c0611dcc565b600082611e1657634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156106c0576106c0611dcc565b600060018201611e4057611e40611dcc565b5060010190565b6020808252600990820152683337b93134b23232b760b91b604082015260600190565b818103818111156106c0576106c0611dcc565b8082018281126000831280158216821582161715611e9d57611e9d611dcc565b505092915050565b8181036000831280158383131683831282161715611ec557611ec5611dcc565b5092915050565b600060208284031215611ede57600080fd5b81516001600160e01b031981168114610af957600080fd5b60008251611f08818460208701611bba565b9190910192915050565b600060208284031215611f2457600080fd5b81518015158114610af957600080fdfea264697066735822122069b16c2dffe6e81a438b657e29cb2897194f907138f0c2dcfb7aef09e6834c7c64736f6c63430008110033000000000000000000000000922fef8f101678de12a97277d835e17d026af8850000000000000000000000009cbd81b43ba263ca894178366cfb89a246d1159c
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102315760003560e01c80637ecebe0011610130578063a9059cbb116100b8578063ce733e6d1161007c578063ce733e6d146105db578063d0b1ad85146105ee578063d505accf14610601578063dd62ed3e14610614578063f2fde38b1461063f57600080fd5b8063a9059cbb1461054b578063aa271e1a1461055e578063b2118a8d14610581578063c07473f614610594578063c3cf2956146105b457600080fd5b806395d89b41116100ff57806395d89b41146104ef578063983b2d5614610513578063a2bc66be14610526578063a692db6e14610539578063a7635a4e1461054257600080fd5b80637ecebe001461047c57806385f408941461049c5780638da5cb5b146104bc5780639038ff80146104cf57600080fd5b80633092afd5116101be57806340c10f191161018257806340c10f19146103ce57806342966c68146103e1578063454b0608146103f457806370a08231146104075780637bbfc69e1461042757600080fd5b80633092afd51461034057806330adf81f14610353578063313ce5671461037a578063351a5f7b146103945780633644e515146103a757600080fd5b80630f2ad452116102055780630f2ad452146102d15780631705a3bd146102e657806318160ddd1461031157806323ac136d1461031a57806323b872dd1461032d57600080fd5b80629a97561461023657806306fdde031461025c578063095ea7b31461029b5780630c51b88f146102be575b600080fd5b610249610244366004611ba1565b610652565b6040519081526020015b60405180910390f35b61028e604051806040016040528060138152602001725365616c6564204479736f6e2053706865726560681b81525081565b6040516102539190611bde565b6102ae6102a9366004611c2d565b6106c6565b6040519015158152602001610253565b6102496102cc366004611c57565b6106dc565b6102e46102df366004611c8a565b6108a8565b005b6001546102f9906001600160a01b031681565b6040516001600160a01b039091168152602001610253565b61024960025481565b6102e4610328366004611c8a565b6108f4565b6102ae61033b366004611ca5565b610940565b6102e461034e366004611c8a565b6109b8565b6102497f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610382601281565b60405160ff9091168152602001610253565b6005546102f9906001600160a01b031681565b6102497f7bc0190f3d731cafd9950ecabc4ea4148dbcbd1685a6ba795d31a495c6ba017781565b6102ae6103dc366004611c2d565b610a03565b6102ae6103ef366004611ba1565b610b00565b6102e4610402366004611ba1565b610b68565b610249610415366004611c8a565b60076020526000908152604090205481565b610461610435366004611c2d565b600960209081526000928352604080842090915290825290208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610253565b61024961048a366004611c8a565b600d6020526000908152604090205481565b6102496104aa366004611c8a565b600b6020526000908152604090205481565b6000546102f9906001600160a01b031681565b6102496104dd366004611c8a565b600a6020526000908152604090205481565b61028e6040518060400160405280600581526020016439a22ca9a760d91b81525081565b6102e4610521366004611c8a565b610ddc565b610249610534366004611c57565b610e2a565b61024960045481565b61024960035481565b6102ae610559366004611c2d565b611030565b6102ae61056c366004611c8a565b60066020526000908152604090205460ff1681565b6102e461058f366004611ca5565b61103d565b6102496105a2366004611c8a565b600c6020526000908152604090205481565b6102f97f0000000000000000000000009cbd81b43ba263ca894178366cfb89a246d1159c81565b6102496105e9366004611ce1565b6110be565b6102e46105fc366004611ba1565b611306565b6102e461060f366004611d0d565b611335565b610249610622366004611d80565b600860209081526000928352604080842090915290825290205481565b6102e461064d366004611c8a565b611599565b6005546040516380a537d960e01b8152600481018390526000916001600160a01b0316906380a537d990602401602060405180830381865afa15801561069c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c09190611db3565b92915050565b60006106d3338484611664565b50600192915050565b6001600160a01b0383166000908152600960209081526040808320600a83528184205484529091528120670de0b6b3a76400008461071985610652565b6107239190611de2565b61072d9190611df9565b9150600082116107755760405162461bcd60e51b815260206004820152600e60248201526d0696e76616c6964206c6f636b75760941b60448201526064015b60405180910390fd5b838155600181018290556107898342611e1b565b60028201556001600160a01b0385166000908152600b6020526040812080548692906107b6908490611e1b565b90915550506001600160a01b0385166000908152600c6020526040812080548492906107e3908490611e1b565b90915550506001600160a01b0385166000908152600a6020526040812080549161080c83611e2e565b919050555061081b8583611788565b506108516001600160a01b037f0000000000000000000000009cbd81b43ba263ca894178366cfb89a246d1159c1633308761181b565b604080518581526020810184905290810184905233906001600160a01b038716907f4b22ccaaeb4846ec98072623a51a9070bf1f01c75ac1f8119035f373df852a0c906060015b60405180910390a3509392505050565b6000546001600160a01b031633146108d25760405162461bcd60e51b815260040161076c90611e47565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461091e5760405162461bcd60e51b815260040161076c90611e47565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166000908152600860209081526040808320338452909152812054600019146109a5576001600160a01b03841660009081526008602090815260408083203384529091528120805484929061099f908490611e6a565b90915550505b6109b084848461194b565b949350505050565b6000546001600160a01b031633146109e25760405162461bcd60e51b815260040161076c90611e47565b6001600160a01b03166000908152600660205260409020805460ff19169055565b3360009081526006602052604081205460ff1680610a2b57506000546001600160a01b031633145b610a475760405162461bcd60e51b815260040161076c90611e47565b600160ff1b8210610a8b5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015260640161076c565b60045482600354610a9c9190611e7d565b1315610ad75760405162461bcd60e51b815260206004820152600a6024820152690657863656564206361760b41b604482015260640161076c565b8160036000828254610ae99190611e7d565b90915550610af990508383611788565b9392505050565b6000600160ff1b8210610b465760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015260640161076c565b8160036000828254610b589190611ea5565b909155506106c090503383611a00565b6001546001600160a01b0316610bb15760405162461bcd60e51b815260206004820152600e60248201526d63616e6e6f74206d69677261746560901b604482015260640161076c565b336000908152600960209081526040808320848452909152902080546001820154600283015480610c145760405162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081d985d5b1d609a1b604482015260640161076c565b336000818152600960209081526040808320898452825280832083815560018101849055600201839055928252600b90529081208054859290610c58908490611e6a565b9091555050336000908152600c602052604081208054849290610c7c908490611e6a565b9091555050600154610c999033906001600160a01b031684611664565b600154610cd3906001600160a01b037f0000000000000000000000009cbd81b43ba263ca894178366cfb89a246d1159c8116911685611a86565b600154604051636a7d8bc960e11b808252336004830152602482018690526044820185905260648201849052916001600160a01b03169063d4fb1792906084016020604051808303816000875af1158015610d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d569190611ecc565b6001600160e01b03191614610da05760405162461bcd60e51b815260206004820152601060248201526f1b5a59dc985d1a5bdb8819985a5b195960821b604482015260640161076c565b60405185815233907fa59785389b00cbd19745afbe8d59b28e3161395c6b1e3525861a2b0dede0b90d9060200160405180910390a25050505050565b6000546001600160a01b03163314610e065760405162461bcd60e51b815260040161076c90611e47565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000808211610e725760405162461bcd60e51b81526020600482015260146024820152731a5b9d985b1a59081a5b9c1d5d08185b5bdd5b9d60621b604482015260640161076c565b33600090815260096020908152604080832086845290915290206002810154421015610ec95760405162461bcd60e51b81526020600482015260066024820152651b1bd8dad95960d21b604482015260640161076c565b8060010154831115610f145760405162461bcd60e51b8152602060048201526014602482015273195e18d95959081b1bd8dad95908185b5bdd5b9d60621b604482015260640161076c565b60018101548154610f259085611de2565b610f2f9190611df9565b915081816000016000828254610f459190611e6a565b9250508190555082816001016000828254610f609190611e6a565b9091555050336000908152600b602052604081208054849290610f84908490611e6a565b9091555050336000908152600c602052604081208054859290610fa8908490611e6a565b90915550610fb890503384611a00565b50610fed6001600160a01b037f0000000000000000000000009cbd81b43ba263ca894178366cfb89a246d1159c168684611a86565b60408051838152602081018590526001600160a01b0387169133917f18edd09e80386cd99df397e2e0d87d2bb259423eae08645e776321a36fe680ef9101610898565b6000610af933848461194b565b6000546001600160a01b031633146110675760405162461bcd60e51b815260040161076c90611e47565b7f0000000000000000000000009cbd81b43ba263ca894178366cfb89a246d1159c6001600160a01b0316836001600160a01b0316036110a557600080fd5b6110b96001600160a01b0384168383611a86565b505050565b336000908152600a6020526040812054841061110c5760405162461bcd60e51b815260206004820152600d60248201526c0d2dcecc2d8d2c840d2dcc8caf609b1b604482015260640161076c565b33600090815260096020908152604080832087845290915290206111308342611e1b565b81600201541061116b5760405162461bcd60e51b81526020600482015260066024820152651b1bd8dad95960d21b604482015260640161076c565b60018101546000670de0b6b3a764000061118486610652565b8454611191908990611e1b565b61119b9190611de2565b6111a59190611df9565b9050600081116111e85760405162461bcd60e51b815260206004820152600e60248201526d0696e76616c6964206c6f636b75760941b604482015260640161076c565b6111f28282611e6a565b9350858360000160008282546112089190611e1b565b90915550506001830181905561121e8542611e1b565b6002840155336000908152600b602052604081208054889290611242908490611e1b565b9091555050336000908152600c602052604081208054869290611266908490611e1b565b9091555061127690503385611788565b5085156112b2576112b26001600160a01b037f0000000000000000000000009cbd81b43ba263ca894178366cfb89a246d1159c1633308961181b565b60408051888152602081018890529081018590526060810186905233907fbc25936f61d661553dca1fb2bd2c968321f2a2f3061dc7511941bad73f2aa0639060800160405180910390a25050509392505050565b6000546001600160a01b031633146113305760405162461bcd60e51b815260040161076c90611e47565b600455565b6001600160a01b03871661137a5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015260640161076c565b8342111580611387575083155b6113c75760405162461bcd60e51b81526020600482015260116024820152701c195c9b5a5d081a5cc8195e1c1a5c9959607a1b604482015260640161076c565b6001600160a01b0387166000908152600d602052604081208054611901917f7bc0190f3d731cafd9950ecabc4ea4148dbcbd1685a6ba795d31a495c6ba0177917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918c918c918c91908861143a83611e2e565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810188905260e001604051602081830303815290604052805190602001206040516020016114be9392919060f09390931b6001600160f01b03191683526002830191909152602282015260420190565b60408051601f1981840301815282825280516020918201206000845290830180835281905260ff8716918301919091526060820185905260808201849052915060019060a0016020604051602081039080840390855afa158015611526573d6000803e3d6000fd5b505050602060405103516001600160a01b0316886001600160a01b0316146115845760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015260640161076c565b61158f888888611664565b5050505050505050565b6000546001600160a01b031633146115c35760405162461bcd60e51b815260040161076c90611e47565b6001600160a01b0381166116105760405162461bcd60e51b81526020600482015260146024820152736f776e65722063616e6e6f74206265207a65726f60601b604482015260640161076c565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a49060200160405180910390a150565b6001600160a01b0383166116c65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161076c565b6001600160a01b0382166117275760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161076c565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166000908152600760205260408120805483919083906117b2908490611e1b565b9250508190555081600260008282546117cb9190611e1b565b90915550506040518281526001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a350600192915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b179052915160009283929088169161187f9190611ef6565b6000604051808303816000865af19150503d80600081146118bc576040519150601f19603f3d011682016040523d82523d6000602084013e6118c1565b606091505b50915091508180156118eb5750805115806118eb5750808060200190518101906118eb9190611f12565b6119435760405162461bcd60e51b815260206004820152602360248201527f7472616e7366657248656c7065723a207472616e7366657246726f6d206661696044820152621b195960ea1b606482015260840161076c565b505050505050565b6001600160a01b038316600090815260076020526040812080548391908390611975908490611e6a565b90915550506001600160a01b038316600090815260076020526040812080548492906119a2908490611e1b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119ee91815260200190565b60405180910390a35060019392505050565b6001600160a01b038216600090815260076020526040812080548391908390611a2a908490611e6a565b925050819055508160026000828254611a439190611e6a565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161180a565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691611ae29190611ef6565b6000604051808303816000865af19150503d8060008114611b1f576040519150601f19603f3d011682016040523d82523d6000602084013e611b24565b606091505b5091509150818015611b4e575080511580611b4e575080806020019051810190611b4e9190611f12565b611b9a5760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657248656c7065723a207472616e73666572206661696c656400604482015260640161076c565b5050505050565b600060208284031215611bb357600080fd5b5035919050565b60005b83811015611bd5578181015183820152602001611bbd565b50506000910152565b6020815260008251806020840152611bfd816040850160208701611bba565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114611c2857600080fd5b919050565b60008060408385031215611c4057600080fd5b611c4983611c11565b946020939093013593505050565b600080600060608486031215611c6c57600080fd5b611c7584611c11565b95602085013595506040909401359392505050565b600060208284031215611c9c57600080fd5b610af982611c11565b600080600060608486031215611cba57600080fd5b611cc384611c11565b9250611cd160208501611c11565b9150604084013590509250925092565b600080600060608486031215611cf657600080fd5b505081359360208301359350604090920135919050565b600080600080600080600060e0888a031215611d2857600080fd5b611d3188611c11565b9650611d3f60208901611c11565b95506040880135945060608801359350608088013560ff81168114611d6357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611d9357600080fd5b611d9c83611c11565b9150611daa60208401611c11565b90509250929050565b600060208284031215611dc557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176106c0576106c0611dcc565b600082611e1657634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156106c0576106c0611dcc565b600060018201611e4057611e40611dcc565b5060010190565b6020808252600990820152683337b93134b23232b760b91b604082015260600190565b818103818111156106c0576106c0611dcc565b8082018281126000831280158216821582161715611e9d57611e9d611dcc565b505092915050565b8181036000831280158383131683831282161715611ec557611ec5611dcc565b5092915050565b600060208284031215611ede57600080fd5b81516001600160e01b031981168114610af957600080fd5b60008251611f08818460208701611bba565b9190910192915050565b600060208284031215611f2457600080fd5b81518015158114610af957600080fdfea264697066735822122069b16c2dffe6e81a438b657e29cb2897194f907138f0c2dcfb7aef09e6834c7c64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000922fef8f101678de12a97277d835e17d026af8850000000000000000000000009cbd81b43ba263ca894178366cfb89a246d1159c
-----Decoded View---------------
Arg [0] : _owner (address): 0x922fef8f101678dE12a97277d835E17d026AF885
Arg [1] : dyson (address): 0x9CBD81b43ba263ca894178366Cfb89A246D1159C
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000922fef8f101678de12a97277d835e17d026af885
Arg [1] : 0000000000000000000000009cbd81b43ba263ca894178366cfb89a246d1159c
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.