Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
SyncusCalculator
Compiler Version
v0.7.5+commit.eb77ed08
Optimization Enabled:
Yes with 200 runs
Other Settings:
istanbul EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; import "./lib/ISyncusCalculator.sol"; import "./lib/FixedPoint.sol"; import "./lib/SafeMath.sol"; import "./lib/IERC20.sol"; import "./lib/IUniswapV2Pair.sol"; import "./Ownable.sol"; import "./lib/IPriceFeed.sol"; contract SyncusCalculator is Ownable, ISyncusCalculator { using FixedPoint for *; using SafeMath for uint; using SafeMath for uint112; address public immutable Sync; IPriceFeed public priceFeed = IPriceFeed(0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419); constructor(address _Sync) { require(_Sync != address(0), "Sync is the zero address"); Sync = _Sync; } function getKValue(address _pair) public view returns (uint k_) { uint token0Decimals = IERC20(IUniswapV2Pair(_pair).token0()).decimals(); uint token1Decimals = IERC20(IUniswapV2Pair(_pair).token1()).decimals(); (uint reserve0, uint reserve1, ) = IUniswapV2Pair(_pair).getReserves(); uint sumDecimals = token0Decimals.add(token1Decimals); uint pairDecimals = IERC20(_pair).decimals(); if (sumDecimals > pairDecimals) { uint decimals = sumDecimals.sub(pairDecimals); k_ = reserve0.mul(reserve1).div(10 ** decimals); } else if (sumDecimals == pairDecimals) { k_ = reserve0.mul(reserve1); } else { uint decimals = pairDecimals.sub(sumDecimals); k_ = reserve0.mul(reserve1).mul(10 ** decimals); } } function getTotalValue(address _pair) public view returns (uint _value) { _value = getKValue(_pair).sqrrt().mul(2); } function valuation( address _pair, uint amount_ ) external view override returns (uint _value) { uint totalValue = getTotalValue(_pair); uint totalSupply = IUniswapV2Pair(_pair).totalSupply(); _value = totalValue .mul(FixedPoint.fraction(amount_, totalSupply).decode112with18()) .div(1e18); } function markdown(address _pair) external view override returns (uint) { (uint reserve0, uint reserve1, ) = IUniswapV2Pair(_pair).getReserves(); uint reserve; if (IUniswapV2Pair(_pair).token0() == Sync) { reserve = reserve1; } else { reserve = reserve0; } return reserve.mul(2 * (10 ** IERC20(Sync).decimals())).div( getTotalValue(_pair) ); } function valuationEther( uint _amount ) external view override returns (uint _value) { uint256 ethValue = priceFeed.latestAnswer(); ethValue = ethValue.div(10 ** 8); _value = (_amount.div(10 ** 18).mul(ethValue)).mul(10 ** 9); } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; interface ISyncusCalculator { function valuation( address pair_, uint amount_ ) external view returns (uint _value); function valuationEther(uint amount_) external view returns (uint _value); function markdown(address _pair) external view returns (uint); }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; import "./FullMath.sol"; import "./BitMath.sol"; import "./Babylonian.sol"; library FixedPoint { // range: [0, 2**112 - 1] // resolution: 1 / 2**112 struct uq112x112 { uint224 _x; } // range: [0, 2**144 - 1] // resolution: 1 / 2**112 struct uq144x112 { uint256 _x; } uint8 private constant RESOLUTION = 112; uint256 private constant Q112 = 0x10000000000000000000000000000; uint256 private constant Q224 = 0x100000000000000000000000000000000000000000000000000000000; uint256 private constant LOWER_MASK = 0xffffffffffffffffffffffffffff; // decimal of UQ*x112 (lower 112 bits) // decode a UQ112x112 into a uint112 by truncating after the radix point function decode(uq112x112 memory self) internal pure returns (uint112) { return uint112(self._x >> RESOLUTION); } // decode a uq112x112 into a uint with 18 decimals of precision function decode112with18( uq112x112 memory self ) internal pure returns (uint) { return uint(self._x) / 5192296858534827; } function fraction( uint256 numerator, uint256 denominator ) internal pure returns (uq112x112 memory) { require(denominator > 0, "FixedPoint::fraction: division by zero"); if (numerator == 0) return FixedPoint.uq112x112(0); if (numerator <= uint144(-1)) { uint256 result = (numerator << RESOLUTION) / denominator; require(result <= uint224(-1), "FixedPoint::fraction: overflow"); return uq112x112(uint224(result)); } else { uint256 result = FullMath.mulDiv(numerator, Q112, denominator); require(result <= uint224(-1), "FixedPoint::fraction: overflow"); return uq112x112(uint224(result)); } } // square root of a UQ112x112 // lossy between 0/1 and 40 bits function sqrt( uq112x112 memory self ) internal pure returns (uq112x112 memory) { if (self._x <= uint144(-1)) { return uq112x112(uint224(Babylonian.sqrt(uint256(self._x) << 112))); } uint8 safeShiftBits = 255 - BitMath.mostSignificantBit(self._x); safeShiftBits -= safeShiftBits % 2; return uq112x112( uint224( Babylonian.sqrt(uint256(self._x) << safeShiftBits) << ((112 - safeShiftBits) / 2) ) ); } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function add32(uint32 a, uint32 b) internal pure returns (uint32) { uint32 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function sub32(uint32 a, uint32 b) internal pure returns (uint32) { return sub32(a, b, "SafeMath: subtraction overflow"); } function sub32( uint32 a, uint32 b, string memory errorMessage ) internal pure returns (uint32) { require(b <= a, errorMessage); uint32 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function mul32(uint32 a, uint32 b) internal pure returns (uint32) { if (a == 0) { return 0; } uint32 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } function sqrrt(uint256 a) internal pure returns (uint c) { if (a > 3) { c = a; uint b = add(div(a, 2), 1); while (b < c) { c = b; b = div(add(div(a, b), b), 2); } } else if (a != 0) { c = 1; } } function percentageAmount( uint256 total_, uint8 percentage_ ) internal pure returns (uint256 percentAmount_) { return div(mul(total_, percentage_), 1000); } function substractPercentage( uint256 total_, uint8 percentageToSub_ ) internal pure returns (uint256 result_) { return sub(total_, div(mul(total_, percentageToSub_), 1000)); } function percentageOfTotal( uint256 part_, uint256 total_ ) internal pure returns (uint256 percent_) { return div(mul(part_, 100), total_); } function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow, so we distribute return (a / 2) + (b / 2) + (((a % 2) + (b % 2)) / 2); } function quadraticPricing( uint256 payment_, uint256 multiplier_ ) internal pure returns (uint256) { return sqrrt(mul(multiplier_, payment_)); } function bondingCurve( uint256 supply_, uint256 multiplier_ ) internal pure returns (uint256) { return mul(multiplier_, supply_); } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; interface IERC20 { function decimals() external view returns (uint8); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer( address recipient, uint256 amount ) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance( address owner, address spender ) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * 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 ); }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; import "./IUniswapV2ERC20.sol"; interface IUniswapV2Pair is IUniswapV2ERC20 { function token0() external pure returns (address); function token1() external pure returns (address); function getReserves() external view returns ( uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast ); }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; import "./lib/IOwnable.sol"; contract Ownable is IOwnable { address internal _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } function owner() public view override returns (address) { return _owner; } modifier onlyOwner() { require(_owner == msg.sender, "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual override onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership( address newOwner_ ) public virtual override onlyOwner { require( newOwner_ != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner_); _owner = newOwner_; } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; interface IPriceFeed { function latestAnswer() external view returns (uint256); }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; library FullMath { function fullMul(uint256 x, uint256 y) private pure returns (uint256 l, uint256 h) { uint256 mm = mulmod(x, y, uint256(-1)); l = x * y; h = mm - l; if (mm < l) h -= 1; } function fullDiv( uint256 l, uint256 h, uint256 d ) private pure returns (uint256) { uint256 pow2 = d & -d; d /= pow2; l /= pow2; l += h * ((-pow2) / pow2 + 1); uint256 r = 1; r *= 2 - d * r; r *= 2 - d * r; r *= 2 - d * r; r *= 2 - d * r; r *= 2 - d * r; r *= 2 - d * r; r *= 2 - d * r; r *= 2 - d * r; return l * r; } function mulDiv( uint256 x, uint256 y, uint256 d ) internal pure returns (uint256) { (uint256 l, uint256 h) = fullMul(x, y); uint256 mm = mulmod(x, y, d); if (mm > l) h -= 1; l -= mm; require(h < d, 'FullMath::mulDiv: overflow'); return fullDiv(l, h, d); } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; library BitMath { function mostSignificantBit(uint256 x) internal pure returns (uint8 r) { require(x > 0, 'BitMath::mostSignificantBit: zero'); if (x >= 0x100000000000000000000000000000000) { x >>= 128; r += 128; } if (x >= 0x10000000000000000) { x >>= 64; r += 64; } if (x >= 0x100000000) { x >>= 32; r += 32; } if (x >= 0x10000) { x >>= 16; r += 16; } if (x >= 0x100) { x >>= 8; r += 8; } if (x >= 0x10) { x >>= 4; r += 4; } if (x >= 0x4) { x >>= 2; r += 2; } if (x >= 0x2) r += 1; } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; library Babylonian { function sqrt(uint256 x) internal pure returns (uint256) { if (x == 0) return 0; uint256 xx = x; uint256 r = 1; if (xx >= 0x100000000000000000000000000000000) { xx >>= 128; r <<= 64; } if (xx >= 0x10000000000000000) { xx >>= 64; r <<= 32; } if (xx >= 0x100000000) { xx >>= 32; r <<= 16; } if (xx >= 0x10000) { xx >>= 16; r <<= 8; } if (xx >= 0x100) { xx >>= 8; r <<= 4; } if (xx >= 0x10) { xx >>= 4; r <<= 2; } if (xx >= 0x8) { r <<= 1; } r = (r + x / r) >> 1; r = (r + x / r) >> 1; r = (r + x / r) >> 1; r = (r + x / r) >> 1; r = (r + x / r) >> 1; r = (r + x / r) >> 1; r = (r + x / r) >> 1; // Seven iterations should be enough uint256 r1 = x / r; return (r < r1 ? r : r1); } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; interface IUniswapV2ERC20 { function totalSupply() external view returns (uint); }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; interface IOwnable { function owner() external view returns (address); function renounceOwnership() external; function transferOwnership(address newOwner_) external; }
{ "remappings": [ "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": "istanbul", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_Sync","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":"Sync","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"getKValue","outputs":[{"internalType":"uint256","name":"k_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"getTotalValue","outputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"markdown","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":"priceFeed","outputs":[{"internalType":"contract IPriceFeed","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"valuation","outputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"valuationEther","outputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a0604052600180546001600160a01b031916735f4ec3df9cbd43714fe2740f5e3616155c5b841917905534801561003657600080fd5b506040516111b43803806111b48339818101604052602081101561005957600080fd5b5051600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160a01b0381166100ff576040805162461bcd60e51b815260206004820152601860248201527f53796e6320697320746865207a65726f20616464726573730000000000000000604482015290519081900360640190fd5b606081901b6001600160601b0319166080526001600160a01b031661107961013b6000398061032d52806103cb528061093a52506110796000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063715018a611610066578063715018a614610170578063741bef1a1461017a5780638da5cb5b1461019e578063da35e06c146101a6578063f2fde38b146101ae5761009e565b806325545c6b146100a357806332da80a3146100d25780634249719f146100f8578063490084ef14610124578063686375491461014a575b600080fd5b6100c0600480360360208110156100b957600080fd5b50356101d4565b60408051918252519081900360200190f35b6100c0600480360360208110156100e857600080fd5b50356001600160a01b031661028c565b6100c06004803603604081101561010e57600080fd5b506001600160a01b03813516906020013561046f565b6100c06004803603602081101561013a57600080fd5b50356001600160a01b0316610517565b6100c06004803603602081101561016057600080fd5b50356001600160a01b0316610853565b610178610871565b005b61018261091a565b604080516001600160a01b039092168252519081900360200190f35b610182610929565b610182610938565b610178600480360360208110156101c457600080fd5b50356001600160a01b031661095c565b600080600160009054906101000a90046001600160a01b03166001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561022557600080fd5b505afa158015610239573d6000803e3d6000fd5b505050506040513d602081101561024f57600080fd5b50519050610261816305f5e100610a5b565b9050610285633b9aca0061027f838187670de0b6b3a7640000610a5b565b90610a9d565b9392505050565b6000806000836001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156102ca57600080fd5b505afa1580156102de573d6000803e3d6000fd5b505050506040513d60608110156102f457600080fd5b50805160209182015160408051630dfe168160e01b815290516001600160701b0393841696509290911693506000926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169390891692630dfe1681926004808301939192829003018186803b15801561037557600080fd5b505afa158015610389573d6000803e3d6000fd5b505050506040513d602081101561039f57600080fd5b50516001600160a01b031614156103b75750806103ba565b50815b6104646103c686610853565b61045e7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561042257600080fd5b505afa158015610436573d6000803e3d6000fd5b505050506040513d602081101561044c57600080fd5b5051849060ff16600a0a600202610a9d565b90610a5b565b93505050505b919050565b60008061047b84610853565b90506000846001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104b857600080fd5b505afa1580156104cc573d6000803e3d6000fd5b505050506040513d60208110156104e257600080fd5b5051905061050e670de0b6b3a764000061045e6105076105028886610af6565b610c6d565b8590610a9d565b95945050505050565b600080826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561055357600080fd5b505afa158015610567573d6000803e3d6000fd5b505050506040513d602081101561057d57600080fd5b50516040805163313ce56760e01b815290516001600160a01b039092169163313ce56791600480820192602092909190829003018186803b1580156105c157600080fd5b505afa1580156105d5573d6000803e3d6000fd5b505050506040513d60208110156105eb57600080fd5b50516040805163d21220a760e01b8152905160ff90921692506000916001600160a01b0386169163d21220a7916004808301926020929190829003018186803b15801561063757600080fd5b505afa15801561064b573d6000803e3d6000fd5b505050506040513d602081101561066157600080fd5b50516040805163313ce56760e01b815290516001600160a01b039092169163313ce56791600480820192602092909190829003018186803b1580156106a557600080fd5b505afa1580156106b9573d6000803e3d6000fd5b505050506040513d60208110156106cf57600080fd5b505160408051630240bc6b60e21b8152905160ff909216925060009182916001600160a01b03881691630902f1ac91600480820192606092909190829003018186803b15801561071e57600080fd5b505afa158015610732573d6000803e3d6000fd5b505050506040513d606081101561074857600080fd5b5080516020909101516001600160701b039182169350169050600061076d8585610c85565b90506000876001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156107aa57600080fd5b505afa1580156107be573d6000803e3d6000fd5b505050506040513d60208110156107d457600080fd5b505160ff1690508082111561080b5760006107ef8383610cdf565b9050610803600a82900a61045e8787610a9d565b975050610848565b808214156108245761081d8484610a9d565b9650610848565b60006108308284610cdf565b9050610844600a82900a61027f8787610a9d565b9750505b505050505050919050565b600061086b600261027f61086685610517565b610d21565b92915050565b6000546001600160a01b031633146108d0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001546001600160a01b031681565b6000546001600160a01b031690565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031633146109bb576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610a005760405162461bcd60e51b8152600401808060200182810382526026815260200180610fd76026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600061028583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d8b565b600082610aac5750600061086b565b82820282848281610ab957fe5b04146102855760405162461bcd60e51b81526004018080602001828103825260218152602001806110236021913960400191505060405180910390fd5b610afe610fc4565b60008211610b3d5760405162461bcd60e51b8152600401808060200182810382526026815260200180610ffd6026913960400191505060405180910390fd5b82610b57575060408051602081019091526000815261086b565b71ffffffffffffffffffffffffffffffffffff8311610bfe57600082607085901b81610b7f57fe5b0490506001600160e01b03811115610bde576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6040518060200160405280826001600160e01b031681525091505061086b565b6000610c0f84600160701b85610e2d565b90506001600160e01b03811115610bde576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b516612725dd1d243ab6001600160e01b039091160490565b600082820183811015610285576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061028583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ecd565b60006003821115610d7d5750806000610d45610d3e836002610a5b565b6001610c85565b90505b81811015610d7757809150610d70610d69610d638584610a5b565b83610c85565b6002610a5b565b9050610d48565b5061046a565b811561046a57506001919050565b60008183610e175760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ddc578181015183820152602001610dc4565b50505050905090810190601f168015610e095780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610e2357fe5b0495945050505050565b6000806000610e3c8686610f27565b9150915060008480610e4a57fe5b868809905082811115610e5e576001820391505b8083039250848210610eb7576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a3a6d756c4469763a206f766572666c6f77000000000000604482015290519081900360640190fd5b610ec2838387610f54565b979650505050505050565b60008184841115610f1f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610ddc578181015183820152602001610dc4565b505050900390565b6000808060001984860990508385029250828103915082811015610f4c576001820391505b509250929050565b60008181038216808381610f6457fe5b049250808581610f7057fe5b049450808160000381610f7f57fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b6040805160208101909152600081529056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220aec67616c0e268c2aadadd8949b0e231039441607a4d0906954db9d54676666a64736f6c63430007050033000000000000000000000000a41d2f8ee4f47d3b860a149765a7df8c3287b7f0
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063715018a611610066578063715018a614610170578063741bef1a1461017a5780638da5cb5b1461019e578063da35e06c146101a6578063f2fde38b146101ae5761009e565b806325545c6b146100a357806332da80a3146100d25780634249719f146100f8578063490084ef14610124578063686375491461014a575b600080fd5b6100c0600480360360208110156100b957600080fd5b50356101d4565b60408051918252519081900360200190f35b6100c0600480360360208110156100e857600080fd5b50356001600160a01b031661028c565b6100c06004803603604081101561010e57600080fd5b506001600160a01b03813516906020013561046f565b6100c06004803603602081101561013a57600080fd5b50356001600160a01b0316610517565b6100c06004803603602081101561016057600080fd5b50356001600160a01b0316610853565b610178610871565b005b61018261091a565b604080516001600160a01b039092168252519081900360200190f35b610182610929565b610182610938565b610178600480360360208110156101c457600080fd5b50356001600160a01b031661095c565b600080600160009054906101000a90046001600160a01b03166001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561022557600080fd5b505afa158015610239573d6000803e3d6000fd5b505050506040513d602081101561024f57600080fd5b50519050610261816305f5e100610a5b565b9050610285633b9aca0061027f838187670de0b6b3a7640000610a5b565b90610a9d565b9392505050565b6000806000836001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156102ca57600080fd5b505afa1580156102de573d6000803e3d6000fd5b505050506040513d60608110156102f457600080fd5b50805160209182015160408051630dfe168160e01b815290516001600160701b0393841696509290911693506000926001600160a01b037f000000000000000000000000a41d2f8ee4f47d3b860a149765a7df8c3287b7f081169390891692630dfe1681926004808301939192829003018186803b15801561037557600080fd5b505afa158015610389573d6000803e3d6000fd5b505050506040513d602081101561039f57600080fd5b50516001600160a01b031614156103b75750806103ba565b50815b6104646103c686610853565b61045e7f000000000000000000000000a41d2f8ee4f47d3b860a149765a7df8c3287b7f06001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561042257600080fd5b505afa158015610436573d6000803e3d6000fd5b505050506040513d602081101561044c57600080fd5b5051849060ff16600a0a600202610a9d565b90610a5b565b93505050505b919050565b60008061047b84610853565b90506000846001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104b857600080fd5b505afa1580156104cc573d6000803e3d6000fd5b505050506040513d60208110156104e257600080fd5b5051905061050e670de0b6b3a764000061045e6105076105028886610af6565b610c6d565b8590610a9d565b95945050505050565b600080826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561055357600080fd5b505afa158015610567573d6000803e3d6000fd5b505050506040513d602081101561057d57600080fd5b50516040805163313ce56760e01b815290516001600160a01b039092169163313ce56791600480820192602092909190829003018186803b1580156105c157600080fd5b505afa1580156105d5573d6000803e3d6000fd5b505050506040513d60208110156105eb57600080fd5b50516040805163d21220a760e01b8152905160ff90921692506000916001600160a01b0386169163d21220a7916004808301926020929190829003018186803b15801561063757600080fd5b505afa15801561064b573d6000803e3d6000fd5b505050506040513d602081101561066157600080fd5b50516040805163313ce56760e01b815290516001600160a01b039092169163313ce56791600480820192602092909190829003018186803b1580156106a557600080fd5b505afa1580156106b9573d6000803e3d6000fd5b505050506040513d60208110156106cf57600080fd5b505160408051630240bc6b60e21b8152905160ff909216925060009182916001600160a01b03881691630902f1ac91600480820192606092909190829003018186803b15801561071e57600080fd5b505afa158015610732573d6000803e3d6000fd5b505050506040513d606081101561074857600080fd5b5080516020909101516001600160701b039182169350169050600061076d8585610c85565b90506000876001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156107aa57600080fd5b505afa1580156107be573d6000803e3d6000fd5b505050506040513d60208110156107d457600080fd5b505160ff1690508082111561080b5760006107ef8383610cdf565b9050610803600a82900a61045e8787610a9d565b975050610848565b808214156108245761081d8484610a9d565b9650610848565b60006108308284610cdf565b9050610844600a82900a61027f8787610a9d565b9750505b505050505050919050565b600061086b600261027f61086685610517565b610d21565b92915050565b6000546001600160a01b031633146108d0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001546001600160a01b031681565b6000546001600160a01b031690565b7f000000000000000000000000a41d2f8ee4f47d3b860a149765a7df8c3287b7f081565b6000546001600160a01b031633146109bb576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610a005760405162461bcd60e51b8152600401808060200182810382526026815260200180610fd76026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600061028583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d8b565b600082610aac5750600061086b565b82820282848281610ab957fe5b04146102855760405162461bcd60e51b81526004018080602001828103825260218152602001806110236021913960400191505060405180910390fd5b610afe610fc4565b60008211610b3d5760405162461bcd60e51b8152600401808060200182810382526026815260200180610ffd6026913960400191505060405180910390fd5b82610b57575060408051602081019091526000815261086b565b71ffffffffffffffffffffffffffffffffffff8311610bfe57600082607085901b81610b7f57fe5b0490506001600160e01b03811115610bde576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6040518060200160405280826001600160e01b031681525091505061086b565b6000610c0f84600160701b85610e2d565b90506001600160e01b03811115610bde576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b516612725dd1d243ab6001600160e01b039091160490565b600082820183811015610285576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061028583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ecd565b60006003821115610d7d5750806000610d45610d3e836002610a5b565b6001610c85565b90505b81811015610d7757809150610d70610d69610d638584610a5b565b83610c85565b6002610a5b565b9050610d48565b5061046a565b811561046a57506001919050565b60008183610e175760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ddc578181015183820152602001610dc4565b50505050905090810190601f168015610e095780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610e2357fe5b0495945050505050565b6000806000610e3c8686610f27565b9150915060008480610e4a57fe5b868809905082811115610e5e576001820391505b8083039250848210610eb7576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a3a6d756c4469763a206f766572666c6f77000000000000604482015290519081900360640190fd5b610ec2838387610f54565b979650505050505050565b60008184841115610f1f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610ddc578181015183820152602001610dc4565b505050900390565b6000808060001984860990508385029250828103915082811015610f4c576001820391505b509250929050565b60008181038216808381610f6457fe5b049250808581610f7057fe5b049450808160000381610f7f57fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b6040805160208101909152600081529056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220aec67616c0e268c2aadadd8949b0e231039441607a4d0906954db9d54676666a64736f6c63430007050033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a41d2f8ee4f47d3b860a149765a7df8c3287b7f0
-----Decoded View---------------
Arg [0] : _Sync (address): 0xa41d2f8Ee4F47D3B860A149765A7dF8c3287b7F0
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a41d2f8ee4f47d3b860a149765a7df8c3287b7f0
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.