Overview
S Balance
S Value
$18.23 (@ $0.45/S)More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
12790635 | 1 hr ago | 0 S | ||||
12790635 | 1 hr ago | 0.01345631 S | ||||
12790635 | 1 hr ago | 0.01227895 S | ||||
12790635 | 1 hr ago | 0.00007054 S | ||||
12790635 | 1 hr ago | 0.02139353 S | ||||
12790635 | 1 hr ago | 0.00642095 S | ||||
12790635 | 1 hr ago | 0.01876236 S | ||||
12790635 | 1 hr ago | 0.00010726 S | ||||
12790635 | 1 hr ago | 0.0824011 S | ||||
12790635 | 1 hr ago | 0.00105974 S | ||||
12790635 | 1 hr ago | 0.12810404 S | ||||
12790635 | 1 hr ago | 0.61812687 S | ||||
12790635 | 1 hr ago | 0.00343204 S | ||||
12790635 | 1 hr ago | 0.21598294 S | ||||
12790635 | 1 hr ago | 1.15703896 S | ||||
12790635 | 1 hr ago | 0.00000953 S | ||||
12790635 | 1 hr ago | 0.02271127 S | ||||
12790635 | 1 hr ago | 0.64539844 S | ||||
12790635 | 1 hr ago | 0.07558458 S | ||||
12790635 | 1 hr ago | 1.49447319 S | ||||
12790635 | 1 hr ago | 2.36355119 S | ||||
12790635 | 1 hr ago | 0.16164333 S | ||||
12790635 | 1 hr ago | 0.68161055 S | ||||
12790635 | 1 hr ago | 0.76781216 S | ||||
12790635 | 1 hr ago | 1.60365769 S |
Loading...
Loading
Contract Name:
DividendDistributor
Compiler Version
v0.8.21+commit.d9974bed
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.21; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. C U ON THE Sunny side of the MOON */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; if(currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } 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"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: cannot mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: cannot burn from the zero address"); require(amount <= _balances[account], "ERC20: burn amount exceeds balance"); _balances[account] -= amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface ISmartRouter { struct route { address from; address to; bool stable; } function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, route[] calldata routes, address to, uint256 deadline ) external; function swapExactETHForTokens( uint amountOutMin, route[] calldata routes, address to, uint deadline) external payable returns (uint[] memory amounts); function addLiquidityETH( address token, bool stable, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } interface IDividendDistributor { function initialize() external; function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _claimAfter) external; function setShare(address shareholder, uint256 amount, bool exclude) external; function deposit() external payable; function claimDividend(address shareholder) external; function getUnpaidEarnings(address shareholder) external view returns (uint256); function getPaidDividends(address shareholder) external view returns (uint256); function getTotalPaid() external view returns (uint256); function getClaimTime(address shareholder) external view returns (uint256); function getTotalDividends() external view returns (uint256); function getTotalDistributed() external view returns (uint256); function countShareholders() external view returns (uint256); function migrate(address newDistributor) external; function process() external; } contract DividendDistributor is IDividendDistributor, Ownable { address public _token; IERC20 public immutable reward; address public immutable ETH; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } address[] public shareholders; mapping (address => uint256) public shareholderIndexes; mapping (address => uint256) public shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public unclaimed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 30 seconds; uint256 public minDistribution = 1; uint256 public gas = 800000; uint256 public currentIndex; address constant routerAddress = 0x1D368773735ee1E678950B7A97bcA2CafB330CDc; ISmartRouter constant smartRouter = ISmartRouter(routerAddress); bool public initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } function getTotalDividends() external view override returns (uint256) { return totalDividends; } function getTotalDistributed() external view override returns (uint256) { return totalDistributed; } constructor (address rwd) { reward = IERC20(rwd); reward.approve(routerAddress, type(uint256).max); ETH = smartRouter.WETH(); } function initialize() external override initialization { _token = msg.sender; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _gas) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; gas = _gas; } function setShare(address shareholder, uint256 amount, bool exclude) external override onlyToken { uint256 currentShare = shares[shareholder].amount; if (amount > 0 && currentShare == 0){ addShareholder(shareholder); shares[shareholder].totalExcluded = getCumulativeDividends(amount); shareholderClaims[shareholder] = block.timestamp; } else if(amount == 0 && currentShare > 0){ removeShareholder(shareholder); } uint256 unpaid = getUnpaidEarnings(shareholder); if (currentShare > 0 && !exclude){ if (unpaid > 0) { if (shouldDistribute(shareholder, unpaid)) { distributeDividend(shareholder, unpaid); } else { unclaimed += unpaid; } } } totalShares = (totalShares - currentShare) + amount; shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends(amount); } function deposit() external payable override { uint256 amount; if (address(reward) != ETH) { ISmartRouter.route[] memory routes = new ISmartRouter.route[](1); routes[0] = ISmartRouter.route({ from: smartRouter.WETH(), to: address(reward), stable: false }); uint256 spend = address(this).balance; uint256 curBal = reward.balanceOf(address(this)); smartRouter.swapExactETHForTokens{value: spend}( 0, routes, address(this), block.timestamp ); amount = reward.balanceOf(address(this)) - curBal; } else { amount = msg.value; } totalDividends += amount; if (totalShares > 0) { if (dividendsPerShare == 0) { dividendsPerShare = (dividendsPerShareAccuracyFactor * totalDividends) / totalShares; } else { dividendsPerShare += ((dividendsPerShareAccuracyFactor * amount) / totalShares); } } } function extractUnclaimed() external onlyOwner { uint256 uncl = unclaimed; unclaimed = 0; reward.transfer(msg.sender, uncl); } function extractLostETH() external onlyOwner { bool success; (success, ) = msg.sender.call{value: address(this).balance}(""); require(success, "Transfer failed"); } function migrate(address newDistributor) external onlyToken { DividendDistributor newD = DividendDistributor(newDistributor); require(!newD.initialized(), "Already initialized"); bool success; (success, ) = newDistributor.call{value: address(this).balance}(""); reward.transfer(newDistributor, reward.balanceOf(address(this))); require(success, "Transfer failed"); } function shouldDistribute(address shareholder, uint256 unpaidEarnings) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && unpaidEarnings > minDistribution; } function getClaimTime(address shareholder) external override view onlyToken returns (uint256) { uint256 scp = shareholderClaims[shareholder] + minPeriod; if (scp <= block.timestamp) { return 0; } else { return scp - block.timestamp; } } function distributeDividend(address shareholder, uint256 unpaidEarnings) internal { if(shares[shareholder].amount == 0){ return; } if(unpaidEarnings > 0){ totalDistributed = totalDistributed + unpaidEarnings; shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised += unpaidEarnings; shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); if(address(reward) == ETH) { bool success; (success, ) = shareholder.call{value: unpaidEarnings}(""); } else reward.transfer(shareholder, unpaidEarnings); } } function process() public override { uint256 shareholderCount = shareholders.length; if (shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while (gasUsed < gas && iterations < shareholderCount) { if (currentIndex >= shareholderCount){ currentIndex = 0; } uint256 unpaid = getUnpaidEarnings(shareholders[currentIndex]); if (shouldDistribute(shareholders[currentIndex], unpaid)){ distributeDividend(shareholders[currentIndex], unpaid); } gasUsed = gasUsed + (gasLeft - gasleft()); gasLeft = gasleft(); currentIndex++; iterations++; } } function claimDividend(address shareholder) external override onlyToken { uint256 unpaid = getUnpaidEarnings(shareholder); require(shouldDistribute(shareholder, unpaid), "Dividends not available yet"); distributeDividend(shareholder, unpaid); } function processClaim(address shareholder) external onlyOwner { uint256 unpaid = getUnpaidEarnings(shareholder); require(shouldDistribute(shareholder, unpaid), "Dividends not available yet"); distributeDividend(shareholder, unpaid); } function getUnpaidEarnings(address shareholder) public view override returns (uint256) { if (shares[shareholder].amount == 0) { return 0; } uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if (shareholderTotalDividends <= shareholderTotalExcluded) { return 0; } return shareholderTotalDividends - shareholderTotalExcluded; } function getPaidDividends(address shareholder) external view override onlyToken returns (uint256) { return shares[shareholder].totalRealised; } function getTotalPaid() external view override onlyToken returns (uint256) { return totalDistributed; } function getCumulativeDividends(uint256 share) internal view returns (uint256) { if(share == 0){ return 0; } return (share * dividendsPerShare) / dividendsPerShareAccuracyFactor; } function countShareholders() public view returns(uint256) { return shareholders.length; } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1]; shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder]; shareholders.pop(); } } contract SuperSonic is ERC20, Ownable { ISmartRouter public immutable smartRouter; mapping(address => uint256) public walletProtection; bool public protectionDisabled = false; uint256 public REWARD_TAX_BASIS = 300; // 3% reward tax (300 basis points) uint256 public BURN_TAX_BASIS = 25; // 0.25% burn tax (25 basis points) uint256 public LP_TAX_BASIS = 100; // 1% Self LP tax (100 basis points) uint256 private constant BASIS_POINTS = 10000; // 10000 basis points = 100% uint8 constant _decimals = 18; uint256 constant _decimalFactor = 10 ** _decimals; bool private locked; IDividendDistributor public distributor; address public liquidityAddress; bool public autoProcess = true; bool public burnEnabled = true; bool public selfLPEnabled = true; uint256 public tradingActiveTime; mapping(address => bool) private isExcludedFromFees; mapping(address => bool) public isDividendExempt; mapping(address => bool) public pairs; event SetPair(address indexed pair, bool indexed value); event ExcludeFromFees(address indexed account, bool isExcluded); struct route { address from; address to; bool stable; } constructor(string memory name, string memory ticker, uint256 supply, address reward) ERC20(name, ticker) { address routerAddress = 0x1D368773735ee1E678950B7A97bcA2CafB330CDc; smartRouter = ISmartRouter(routerAddress); liquidityAddress = msg.sender; _approve(msg.sender, routerAddress, type(uint256).max); _approve(address(this), routerAddress, type(uint256).max); IERC20(smartRouter.WETH()).approve(routerAddress, type(uint256).max); uint256 totalSupply = supply * _decimalFactor; excludeFromFees(msg.sender, true); excludeFromFees(address(this), true); isDividendExempt[msg.sender] = true; isDividendExempt[routerAddress] = true; isDividendExempt[address(this)] = true; _mint(msg.sender, totalSupply); DividendDistributor dist = new DividendDistributor(reward); setDistributor(address(dist), false); } receive() external payable {} function decimals() public pure override returns (uint8) { return _decimals; } function toggleProcess() external onlyOwner { autoProcess = !autoProcess; } function setPair(address pair, bool value) external onlyOwner { pairs[pair] = value; setDividendExempt(pair, true); emit SetPair(pair, value); } function excludeFromFees(address account, bool excluded) public onlyOwner { isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setDividendExempt(address holder, bool exempt) public onlyOwner { isDividendExempt[holder] = exempt; if (exempt) { distributor.setShare(holder, 0, true); } else { distributor.setShare(holder, balanceOf(holder), false); } } function burn(uint256 amount) external virtual { _burn(msg.sender, amount); } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (tradingActiveTime == 0) { require(isExcludedFromFees[from] || isExcludedFromFees[to], "Trading not yet active"); super._transfer(from, to, amount); } else { if (!isExcludedFromFees[from] && !isExcludedFromFees[to]) { uint256 fees = amount * REWARD_TAX_BASIS / BASIS_POINTS; if (fees > 0) { super._transfer(from, address(this), fees); amount -= fees; } if (!locked && selfLPEnabled && pairs[to]) { locked = true; uint256 lpAmount = amount * LP_TAX_BASIS / BASIS_POINTS; super._transfer(from, address(this), lpAmount); addLiquidity(lpAmount); amount -= lpAmount; swapBack(); locked = false; } } if (pairs[from] || pairs[to]) { if (burnEnabled) { uint256 burnAmount = amount * BURN_TAX_BASIS / BASIS_POINTS; super._transfer(from, address(this), burnAmount); _burn(address(this), burnAmount); amount -= burnAmount; } } super._transfer(from, to, amount); if (autoProcess) { try distributor.process() {} catch {} } } _beforeTokenTransfer(from, to); if (!isDividendExempt[from]) { try distributor.setShare(from, balanceOf(from), false) {} catch {} } if (!isDividendExempt[to]) { try distributor.setShare(to, balanceOf(to), false) {} catch {} } } function swapBack() private { uint256 amountToSwap = balanceOf(address(this)); if (amountToSwap == 0) return; swapTokensForEth(amountToSwap); uint256 ethBalance = address(this).balance; if (ethBalance > 0) { try distributor.deposit{value: ethBalance}() {} catch {} } } function swapTokensForEth(uint256 tokenAmount) private { ISmartRouter.route[] memory routes = new ISmartRouter.route[](1); routes[0] = ISmartRouter.route({ from: address(this), to: smartRouter.WETH(), stable: false }); smartRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, routes, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount) private { uint256 half = tokenAmount / 2; uint256 otherHalf = tokenAmount - half; swapTokensForEth(half); uint256 ethBalance = address(this).balance; smartRouter.addLiquidityETH{value: ethBalance}( address(this), false, otherHalf, 0, 0, liquidityAddress, block.timestamp ); } function setLiquidityAddress(address newLiquidityAddress) external onlyOwner { liquidityAddress = newLiquidityAddress; } function setSelfLiquidity(bool enabled) external onlyOwner { selfLPEnabled = enabled; } function setTokenBurn(bool enabled) external onlyOwner { burnEnabled = enabled; } function setTaxBasis(uint256 newTaxBasis) external onlyOwner { require(newTaxBasis <= 5000, "Cannot set higher than 50 percent"); REWARD_TAX_BASIS = newTaxBasis; } function launch() external onlyOwner { require(tradingActiveTime == 0); tradingActiveTime = block.number; } function setDistributor(address _distributor, bool migrate) public onlyOwner { if (migrate) { distributor.migrate(_distributor); } distributor = IDividendDistributor(_distributor); distributor.initialize(); } function claimDistributor(address _distributor) external onlyOwner { Ownable(_distributor).transferOwnership(msg.sender); } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _claimAfter) external onlyOwner { distributor.setDistributionCriteria(_minPeriod, _minDistribution, _claimAfter); } function manualDeposit() payable external { distributor.deposit{value: msg.value}(); } function getPoolStatistics() external view returns (uint256 totalRewards, uint256 totalRewardsPaid, uint256 rewardHolders) { totalRewards = distributor.getTotalDividends(); totalRewardsPaid = distributor.getTotalDistributed(); rewardHolders = distributor.countShareholders(); } function myStatistics(address wallet) external view returns (uint256 reward, uint256 rewardClaimed) { reward = distributor.getUnpaidEarnings(wallet); rewardClaimed = distributor.getPaidDividends(wallet); } function checkClaimTime(address wallet) external view returns (uint256) { return distributor.getClaimTime(wallet); } function claim() external { distributor.claimDividend(msg.sender); } function airdropToWallets(address[] memory wallets, uint256[] memory amountsInTokens, bool dividends) external onlyOwner { require(wallets.length == amountsInTokens.length, "Arrays must be the same length"); for (uint256 i = 0; i < wallets.length; i++) { super._transfer(msg.sender, wallets[i], amountsInTokens[i] * _decimalFactor); if(dividends) { distributor.setShare(wallets[i], amountsInTokens[i] * _decimalFactor, false); } } } function disableProtection() external onlyOwner { protectionDisabled = true; } function transferProtection(address[] calldata _wallets, uint256 _enabled) external onlyOwner { if (_enabled > 0) require(!protectionDisabled, "Disabled"); for (uint256 i = 0; i < _wallets.length; i++) { walletProtection[_wallets[i]] = _enabled; } } function _beforeTokenTransfer(address from, address to) internal view { require(walletProtection[from] == 0 || to == owner(), "Wallet protection enabled, please contact dev"); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"rwd","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"ETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"countShareholders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"dividendsPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendsPerShareAccuracyFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extractLostETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"extractUnclaimed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getClaimTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getPaidDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newDistributor","type":"address"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"process","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"processClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"},{"internalType":"uint256","name":"_gas","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shareholderClaims","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shareholderIndexes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shareholders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unclaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c06040526ec097ce7bc90715b34b9f1000000000600b55601e600c556001600d55620c3500600e553480156200003557600080fd5b5060405162001e9438038062001e948339810160408190526200005891620001b3565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b038116608081905260405163095ea7b360e01b8152731d368773735ee1e678950b7a97bca2cafb330cdc6004820152600019602482015263095ea7b3906044016020604051808303816000875af115801562000100573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001269190620001e5565b50731d368773735ee1e678950b7a97bca2cafb330cdc6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200017a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a09190620001b3565b6001600160a01b031660a0525062000209565b600060208284031215620001c657600080fd5b81516001600160a01b0381168114620001de57600080fd5b9392505050565b600060208284031215620001f857600080fd5b81518015158114620001de57600080fd5b60805160a051611c1f62000275600039600081816104b601528181610f8301526116030152600081816102f101528181610a9601528181610e4e01528181610fad015281816110b10152818161111d015281816112320152818161162601526116cf0152611c1f6000f3fe6080604052600436106102255760003560e01c8063715018a611610123578063ce7c2ac2116100ab578063e5e1d9491161006f578063e5e1d94914610638578063ecd0c0c31461064d578063efca2eed1461066d578063f2fde38b14610683578063ffd49c84146106a357600080fd5b8063ce7c2ac214610576578063d0e30db0146105cd578063d4fda1f2146105d5578063dabae90b14610602578063e2d2e2191461062257600080fd5b8063997664d7116100f2578063997664d7146104f65780639df62df21461050c578063ab377daa14610521578063c33fb87714610541578063ce5494bb1461055657600080fd5b8063715018a61461047a5780638129fc1c1461048f5780638322fff2146104a45780638da5cb5b146104d857600080fd5b80633a98ef39116101b157806366817df51161017557806366817df5146103f7578063669416b8146104245780636793141f1461043a57806367ee5f091461044f5780636ca7c2161461046457600080fd5b80633a98ef39146103815780633cbf8a61146103975780634fab0ae8146103b75780635695fa58146103cd578063636b8289146103e257600080fd5b806315f7e05e116101f857806315f7e05e146102bf578063228cb733146102df57806326987b601461032b57806328fd31981461034157806329cc05cf1461036157600080fd5b80630ca61cb11461022a57806311ce023d1461024c5780631329f86214610275578063158ef93e14610295575b600080fd5b34801561023657600080fd5b5061024a61024536600461187d565b6106b9565b005b34801561025857600080fd5b50610262600b5481565b6040519081526020015b60405180910390f35b34801561028157600080fd5b506102626102903660046118be565b6106de565b3480156102a157600080fd5b506010546102af9060ff1681565b604051901515815260200161026c565b3480156102cb57600080fd5b5061024a6102da3660046118be565b610742565b3480156102eb57600080fd5b506103137f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161026c565b34801561033757600080fd5b50610262600f5481565b34801561034d57600080fd5b5061026261035c3660046118be565b6107cf565b34801561036d57600080fd5b5061024a61037c3660046118e9565b61085a565b34801561038d57600080fd5b5061026260065481565b3480156103a357600080fd5b506102626103b23660046118be565b610a0e565b3480156103c357600080fd5b50610262600d5481565b3480156103d957600080fd5b50600854610262565b3480156103ee57600080fd5b5061024a610a47565b34801561040357600080fd5b506102626104123660046118be565b60046020526000908152604090205481565b34801561043057600080fd5b5061026260095481565b34801561044657600080fd5b50610262610b0b565b34801561045b57600080fd5b50600754610262565b34801561047057600080fd5b50610262600e5481565b34801561048657600080fd5b5061024a610b2c565b34801561049b57600080fd5b5061024a610ba0565b3480156104b057600080fd5b506103137f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e457600080fd5b506000546001600160a01b0316610313565b34801561050257600080fd5b5061026260075481565b34801561051857600080fd5b50600254610262565b34801561052d57600080fd5b5061031361053c36600461192b565b610bd1565b34801561054d57600080fd5b5061024a610bfb565b34801561056257600080fd5b5061024a6105713660046118be565b610d21565b34801561058257600080fd5b506105b26105913660046118be565b60056020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161026c565b61024a610f7f565b3480156105e157600080fd5b506102626105f03660046118be565b60036020526000908152604090205481565b34801561060e57600080fd5b5061024a61061d3660046118be565b61133d565b34801561062e57600080fd5b50610262600a5481565b34801561064457600080fd5b5061024a611367565b34801561065957600080fd5b50600154610313906001600160a01b031681565b34801561067957600080fd5b5061026260085481565b34801561068f57600080fd5b5061024a61069e3660046118be565b61141d565b3480156106af57600080fd5b50610262600c5481565b6001546001600160a01b031633146106d057600080fd5b600c92909255600d55600e55565b6001546000906001600160a01b031633146106f857600080fd5b600c546001600160a01b038316600090815260046020526040812054909161071f9161195a565b90504281116107315750600092915050565b61073b428261196d565b9392505050565b6001546001600160a01b0316331461075957600080fd5b6000610764826107cf565b90506107708282611507565b6107c15760405162461bcd60e51b815260206004820152601b60248201527f4469766964656e6473206e6f7420617661696c61626c6520796574000000000060448201526064015b60405180910390fd5b6107cb8282611548565b5050565b6001600160a01b03811660009081526005602052604081205481036107f657506000919050565b6001600160a01b0382166000908152600560205260408120546108189061173c565b6001600160a01b038416600090815260056020526040902060010154909150808211610848575060009392505050565b610852818361196d565b949350505050565b6001546001600160a01b0316331461087157600080fd5b6001600160a01b0383166000908152600560205260409020548215801590610897575080155b1561093057600280546001600160a01b0386166000818152600360205260408120839055600183018455929092527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b03191690911790556109018361173c565b6001600160a01b038516600090815260056020908152604080832060010193909355600490522042905561094c565b8215801561093e5750600081115b1561094c5761094c84611768565b6000610957856107cf565b9050600082118015610967575082155b156109a85780156109a85761097c8582611507565b156109905761098b8582611548565b6109a8565b80600960008282546109a2919061195a565b90915550505b83826006546109b7919061196d565b6109c1919061195a565b6006556001600160a01b03851660009081526005602052604090208490556109e88461173c565b6001600160a01b0390951660009081526005602052604090206001019490945550505050565b6001546000906001600160a01b03163314610a2857600080fd5b506001600160a01b031660009081526005602052604090206002015490565b6000546001600160a01b03163314610a715760405162461bcd60e51b81526004016107b890611980565b60098054600090915560405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610ae7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cb91906119b5565b6001546000906001600160a01b03163314610b2557600080fd5b5060085490565b6000546001600160a01b03163314610b565760405162461bcd60e51b81526004016107b890611980565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60105460ff1615610bb057600080fd5b600180546001600160a01b031916331781556010805460ff19169091179055565b60028181548110610be157600080fd5b6000918252602090912001546001600160a01b0316905081565b6002546000819003610c0a5750565b6000805a905060005b600e5483108015610c2357508381105b15610d1b5783600f5410610c37576000600f555b6000610c6b6002600f5481548110610c5157610c516119d2565b6000918252602090912001546001600160a01b03166107cf565b9050610ca06002600f5481548110610c8557610c856119d2565b6000918252602090912001546001600160a01b031682611507565b15610cd857610cd86002600f5481548110610cbd57610cbd6119d2565b6000918252602090912001546001600160a01b031682611548565b5a610ce3908461196d565b610ced908561195a565b93505a600f80549194506000610d02836119e8565b91905055508180610d12906119e8565b92505050610c13565b50505050565b6001546001600160a01b03163314610d3857600080fd5b6000819050806001600160a01b031663158ef93e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9f91906119b5565b15610de25760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016107b8565b6000826001600160a01b03164760405160006040518083038185875af1925050503d8060008114610e2f576040519150601f19603f3d011682016040523d82523d6000602084013e610e34565b606091505b50506040516370a0823160e01b81523060048201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90859083906370a0823190602401602060405180830381865afa158015610ea7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecb9190611a01565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3a91906119b5565b5080610f7a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016107b8565b505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146112b957604080516001808252818301909252600091816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610ff15790505090506040518060600160405280731d368773735ee1e678950b7a97bca2cafb330cdc6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561107d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a19190611a30565b6001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200160001515815250816000815181106110f8576110f86119d2565b60209081029190910101526040516370a0823160e01b815230600482015247906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561116c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111909190611a01565b6040516333ffdb3560e11b8152909150731d368773735ee1e678950b7a97bca2cafb330cdc906367ffb66a9084906111d390600090889030904290600401611a4d565b60006040518083038185885af11580156111f1573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261121a9190810190611adc565b506040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a59190611a01565b6112af919061196d565b93505050506112bc565b50345b80600760008282546112ce919061195a565b90915550506006541561133a57600a5460000361130857600654600754600b546112f89190611b9a565b6113029190611bb1565b600a5550565b60065481600b546113199190611b9a565b6113239190611bb1565b600a6000828254611334919061195a565b90915550505b50565b6000546001600160a01b031633146107595760405162461bcd60e51b81526004016107b890611980565b6000546001600160a01b031633146113915760405162461bcd60e51b81526004016107b890611980565b604051600090339047908381818185875af1925050503d80600081146113d3576040519150601f19603f3d011682016040523d82523d6000602084013e6113d8565b606091505b5050809150508061133a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016107b8565b6000546001600160a01b031633146114475760405162461bcd60e51b81526004016107b890611980565b6001600160a01b0381166114ac5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107b8565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600c546001600160a01b03831660009081526004602052604081205490914291611531919061195a565b10801561153f5750600d5482115b90505b92915050565b6001600160a01b038216600090815260056020526040812054900361156b575050565b80156107cb578060085461157f919061195a565b6008556001600160a01b03821660009081526004602090815260408083204290556005909152812060020180548392906115ba90849061195a565b90915550506001600160a01b0382166000908152600560205260409020546115e19061173c565b6001600160a01b038084166000908152600560205260409020600101919091557f000000000000000000000000000000000000000000000000000000000000000081167f0000000000000000000000000000000000000000000000000000000000000000909116036116a9576000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461169a576040519150601f19603f3d011682016040523d82523d6000602084013e61169f565b606091505b506107cb92505050565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015611718573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7a91906119b5565b60008160000361174e57506000919050565b600b54600a5461175e9084611b9a565b6115429190611bb1565b600280546117789060019061196d565b81548110611788576117886119d2565b60009182526020808320909101546001600160a01b03848116845260039092526040909220546002805492909316929181106117c6576117c66119d2565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600391829052604081205460028054919392916118129060019061196d565b81548110611822576118226119d2565b60009182526020808320909101546001600160a01b03168352820192909252604001902055600280548061185857611858611bd3565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60008060006060848603121561189257600080fd5b505081359360208301359350604090920135919050565b6001600160a01b038116811461133a57600080fd5b6000602082840312156118d057600080fd5b813561073b816118a9565b801515811461133a57600080fd5b6000806000606084860312156118fe57600080fd5b8335611909816118a9565b9250602084013591506040840135611920816118db565b809150509250925092565b60006020828403121561193d57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561154257611542611944565b8181038181111561154257611542611944565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156119c757600080fd5b815161073b816118db565b634e487b7160e01b600052603260045260246000fd5b6000600182016119fa576119fa611944565b5060010190565b600060208284031215611a1357600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611a4257600080fd5b815161073b816118a9565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015611ab257845180516001600160a01b03908116855285820151168585015260409081015115159084015293830193606090920191600101611a72565b50506001600160a01b03871660408601529250611acd915050565b82606083015295945050505050565b60006020808385031215611aef57600080fd5b825167ffffffffffffffff80821115611b0757600080fd5b818501915085601f830112611b1b57600080fd5b815181811115611b2d57611b2d611a1a565b8060051b604051601f19603f83011681018181108582111715611b5257611b52611a1a565b604052918252848201925083810185019188831115611b7057600080fd5b938501935b82851015611b8e57845184529385019392850192611b75565b98975050505050505050565b808202811582820484141761154257611542611944565b600082611bce57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122004cfaf4fd41594aa9a2385e3540b4cc15608058134c12ddd2d7689f08cba25b564736f6c63430008150033000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38
Deployed Bytecode
0x6080604052600436106102255760003560e01c8063715018a611610123578063ce7c2ac2116100ab578063e5e1d9491161006f578063e5e1d94914610638578063ecd0c0c31461064d578063efca2eed1461066d578063f2fde38b14610683578063ffd49c84146106a357600080fd5b8063ce7c2ac214610576578063d0e30db0146105cd578063d4fda1f2146105d5578063dabae90b14610602578063e2d2e2191461062257600080fd5b8063997664d7116100f2578063997664d7146104f65780639df62df21461050c578063ab377daa14610521578063c33fb87714610541578063ce5494bb1461055657600080fd5b8063715018a61461047a5780638129fc1c1461048f5780638322fff2146104a45780638da5cb5b146104d857600080fd5b80633a98ef39116101b157806366817df51161017557806366817df5146103f7578063669416b8146104245780636793141f1461043a57806367ee5f091461044f5780636ca7c2161461046457600080fd5b80633a98ef39146103815780633cbf8a61146103975780634fab0ae8146103b75780635695fa58146103cd578063636b8289146103e257600080fd5b806315f7e05e116101f857806315f7e05e146102bf578063228cb733146102df57806326987b601461032b57806328fd31981461034157806329cc05cf1461036157600080fd5b80630ca61cb11461022a57806311ce023d1461024c5780631329f86214610275578063158ef93e14610295575b600080fd5b34801561023657600080fd5b5061024a61024536600461187d565b6106b9565b005b34801561025857600080fd5b50610262600b5481565b6040519081526020015b60405180910390f35b34801561028157600080fd5b506102626102903660046118be565b6106de565b3480156102a157600080fd5b506010546102af9060ff1681565b604051901515815260200161026c565b3480156102cb57600080fd5b5061024a6102da3660046118be565b610742565b3480156102eb57600080fd5b506103137f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3881565b6040516001600160a01b03909116815260200161026c565b34801561033757600080fd5b50610262600f5481565b34801561034d57600080fd5b5061026261035c3660046118be565b6107cf565b34801561036d57600080fd5b5061024a61037c3660046118e9565b61085a565b34801561038d57600080fd5b5061026260065481565b3480156103a357600080fd5b506102626103b23660046118be565b610a0e565b3480156103c357600080fd5b50610262600d5481565b3480156103d957600080fd5b50600854610262565b3480156103ee57600080fd5b5061024a610a47565b34801561040357600080fd5b506102626104123660046118be565b60046020526000908152604090205481565b34801561043057600080fd5b5061026260095481565b34801561044657600080fd5b50610262610b0b565b34801561045b57600080fd5b50600754610262565b34801561047057600080fd5b50610262600e5481565b34801561048657600080fd5b5061024a610b2c565b34801561049b57600080fd5b5061024a610ba0565b3480156104b057600080fd5b506103137f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3881565b3480156104e457600080fd5b506000546001600160a01b0316610313565b34801561050257600080fd5b5061026260075481565b34801561051857600080fd5b50600254610262565b34801561052d57600080fd5b5061031361053c36600461192b565b610bd1565b34801561054d57600080fd5b5061024a610bfb565b34801561056257600080fd5b5061024a6105713660046118be565b610d21565b34801561058257600080fd5b506105b26105913660046118be565b60056020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161026c565b61024a610f7f565b3480156105e157600080fd5b506102626105f03660046118be565b60036020526000908152604090205481565b34801561060e57600080fd5b5061024a61061d3660046118be565b61133d565b34801561062e57600080fd5b50610262600a5481565b34801561064457600080fd5b5061024a611367565b34801561065957600080fd5b50600154610313906001600160a01b031681565b34801561067957600080fd5b5061026260085481565b34801561068f57600080fd5b5061024a61069e3660046118be565b61141d565b3480156106af57600080fd5b50610262600c5481565b6001546001600160a01b031633146106d057600080fd5b600c92909255600d55600e55565b6001546000906001600160a01b031633146106f857600080fd5b600c546001600160a01b038316600090815260046020526040812054909161071f9161195a565b90504281116107315750600092915050565b61073b428261196d565b9392505050565b6001546001600160a01b0316331461075957600080fd5b6000610764826107cf565b90506107708282611507565b6107c15760405162461bcd60e51b815260206004820152601b60248201527f4469766964656e6473206e6f7420617661696c61626c6520796574000000000060448201526064015b60405180910390fd5b6107cb8282611548565b5050565b6001600160a01b03811660009081526005602052604081205481036107f657506000919050565b6001600160a01b0382166000908152600560205260408120546108189061173c565b6001600160a01b038416600090815260056020526040902060010154909150808211610848575060009392505050565b610852818361196d565b949350505050565b6001546001600160a01b0316331461087157600080fd5b6001600160a01b0383166000908152600560205260409020548215801590610897575080155b1561093057600280546001600160a01b0386166000818152600360205260408120839055600183018455929092527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b03191690911790556109018361173c565b6001600160a01b038516600090815260056020908152604080832060010193909355600490522042905561094c565b8215801561093e5750600081115b1561094c5761094c84611768565b6000610957856107cf565b9050600082118015610967575082155b156109a85780156109a85761097c8582611507565b156109905761098b8582611548565b6109a8565b80600960008282546109a2919061195a565b90915550505b83826006546109b7919061196d565b6109c1919061195a565b6006556001600160a01b03851660009081526005602052604090208490556109e88461173c565b6001600160a01b0390951660009081526005602052604090206001019490945550505050565b6001546000906001600160a01b03163314610a2857600080fd5b506001600160a01b031660009081526005602052604090206002015490565b6000546001600160a01b03163314610a715760405162461bcd60e51b81526004016107b890611980565b60098054600090915560405163a9059cbb60e01b8152336004820152602481018290527f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610ae7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cb91906119b5565b6001546000906001600160a01b03163314610b2557600080fd5b5060085490565b6000546001600160a01b03163314610b565760405162461bcd60e51b81526004016107b890611980565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60105460ff1615610bb057600080fd5b600180546001600160a01b031916331781556010805460ff19169091179055565b60028181548110610be157600080fd5b6000918252602090912001546001600160a01b0316905081565b6002546000819003610c0a5750565b6000805a905060005b600e5483108015610c2357508381105b15610d1b5783600f5410610c37576000600f555b6000610c6b6002600f5481548110610c5157610c516119d2565b6000918252602090912001546001600160a01b03166107cf565b9050610ca06002600f5481548110610c8557610c856119d2565b6000918252602090912001546001600160a01b031682611507565b15610cd857610cd86002600f5481548110610cbd57610cbd6119d2565b6000918252602090912001546001600160a01b031682611548565b5a610ce3908461196d565b610ced908561195a565b93505a600f80549194506000610d02836119e8565b91905055508180610d12906119e8565b92505050610c13565b50505050565b6001546001600160a01b03163314610d3857600080fd5b6000819050806001600160a01b031663158ef93e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9f91906119b5565b15610de25760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016107b8565b6000826001600160a01b03164760405160006040518083038185875af1925050503d8060008114610e2f576040519150601f19603f3d011682016040523d82523d6000602084013e610e34565b606091505b50506040516370a0823160e01b81523060048201529091507f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b03169063a9059cbb90859083906370a0823190602401602060405180830381865afa158015610ea7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecb9190611a01565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3a91906119b5565b5080610f7a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016107b8565b505050565b60007f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b03167f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b0316146112b957604080516001808252818301909252600091816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610ff15790505090506040518060600160405280731d368773735ee1e678950b7a97bca2cafb330cdc6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561107d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a19190611a30565b6001600160a01b031681526020017f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b0316815260200160001515815250816000815181106110f8576110f86119d2565b60209081029190910101526040516370a0823160e01b815230600482015247906000907f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b0316906370a0823190602401602060405180830381865afa15801561116c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111909190611a01565b6040516333ffdb3560e11b8152909150731d368773735ee1e678950b7a97bca2cafb330cdc906367ffb66a9084906111d390600090889030904290600401611a4d565b60006040518083038185885af11580156111f1573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261121a9190810190611adc565b506040516370a0823160e01b815230600482015281907f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b0316906370a0823190602401602060405180830381865afa158015611281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a59190611a01565b6112af919061196d565b93505050506112bc565b50345b80600760008282546112ce919061195a565b90915550506006541561133a57600a5460000361130857600654600754600b546112f89190611b9a565b6113029190611bb1565b600a5550565b60065481600b546113199190611b9a565b6113239190611bb1565b600a6000828254611334919061195a565b90915550505b50565b6000546001600160a01b031633146107595760405162461bcd60e51b81526004016107b890611980565b6000546001600160a01b031633146113915760405162461bcd60e51b81526004016107b890611980565b604051600090339047908381818185875af1925050503d80600081146113d3576040519150601f19603f3d011682016040523d82523d6000602084013e6113d8565b606091505b5050809150508061133a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016107b8565b6000546001600160a01b031633146114475760405162461bcd60e51b81526004016107b890611980565b6001600160a01b0381166114ac5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107b8565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600c546001600160a01b03831660009081526004602052604081205490914291611531919061195a565b10801561153f5750600d5482115b90505b92915050565b6001600160a01b038216600090815260056020526040812054900361156b575050565b80156107cb578060085461157f919061195a565b6008556001600160a01b03821660009081526004602090815260408083204290556005909152812060020180548392906115ba90849061195a565b90915550506001600160a01b0382166000908152600560205260409020546115e19061173c565b6001600160a01b038084166000908152600560205260409020600101919091557f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3881167f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38909116036116a9576000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461169a576040519150601f19603f3d011682016040523d82523d6000602084013e61169f565b606091505b506107cb92505050565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390527f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38169063a9059cbb906044016020604051808303816000875af1158015611718573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7a91906119b5565b60008160000361174e57506000919050565b600b54600a5461175e9084611b9a565b6115429190611bb1565b600280546117789060019061196d565b81548110611788576117886119d2565b60009182526020808320909101546001600160a01b03848116845260039092526040909220546002805492909316929181106117c6576117c66119d2565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600391829052604081205460028054919392916118129060019061196d565b81548110611822576118226119d2565b60009182526020808320909101546001600160a01b03168352820192909252604001902055600280548061185857611858611bd3565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60008060006060848603121561189257600080fd5b505081359360208301359350604090920135919050565b6001600160a01b038116811461133a57600080fd5b6000602082840312156118d057600080fd5b813561073b816118a9565b801515811461133a57600080fd5b6000806000606084860312156118fe57600080fd5b8335611909816118a9565b9250602084013591506040840135611920816118db565b809150509250925092565b60006020828403121561193d57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561154257611542611944565b8181038181111561154257611542611944565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156119c757600080fd5b815161073b816118db565b634e487b7160e01b600052603260045260246000fd5b6000600182016119fa576119fa611944565b5060010190565b600060208284031215611a1357600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611a4257600080fd5b815161073b816118a9565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015611ab257845180516001600160a01b03908116855285820151168585015260409081015115159084015293830193606090920191600101611a72565b50506001600160a01b03871660408601529250611acd915050565b82606083015295945050505050565b60006020808385031215611aef57600080fd5b825167ffffffffffffffff80821115611b0757600080fd5b818501915085601f830112611b1b57600080fd5b815181811115611b2d57611b2d611a1a565b8060051b604051601f19603f83011681018181108582111715611b5257611b52611a1a565b604052918252848201925083810185019188831115611b7057600080fd5b938501935b82851015611b8e57845184529385019392850192611b75565b98975050505050505050565b808202811582820484141761154257611542611944565b600082611bce57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fdfea264697066735822122004cfaf4fd41594aa9a2385e3540b4cc15608058134c12ddd2d7689f08cba25b564736f6c63430008150033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38
-----Decoded View---------------
Arg [0] : rwd (address): 0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.