More Info
Private Name Tags
ContractCreator:
Latest 8 from a total of 8 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Advance | 21869526 | 866 days ago | IN | 0 FTM | 0.01471324 | ||||
Advance | 20484183 | 880 days ago | IN | 0 FTM | 0.0127593 | ||||
Advance | 19187790 | 894 days ago | IN | 0 FTM | 0.02046889 | ||||
Advance | 18089419 | 908 days ago | IN | 0 FTM | 0.00435065 | ||||
Advance | 17205334 | 922 days ago | IN | 0 FTM | 0.01262653 | ||||
Advance | 16673352 | 932 days ago | IN | 0 FTM | 0.00302686 | ||||
Advance | 15089758 | 950 days ago | IN | 0 FTM | 0.01023312 | ||||
0x61012060 | 14760782 | 955 days ago | IN | Create: FarmingPool | 0 FTM | 0.0427323 |
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
14760782 | 955 days ago | Contract Creation | 0 FTM |
Loading...
Loading
Contract Name:
FarmingPool
Compiler Version
v0.6.6+commit.6c089d02
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity =0.6.6; import "./Distributor.sol"; import "./interfaces/IBorrowTracker.sol"; import "./interfaces/IVester.sol"; import "./libraries/Math.sol"; // ASSUMTPIONS: // - advance is called at least once for each epoch // - farmingPool shares edits are effective starting from the next epoch contract FarmingPool is IBorrowTracker, Distributor { address public immutable borrowable; uint public immutable vestingBegin; uint public immutable segmentLength; uint public epochBegin; uint public epochAmount; uint public lastUpdate; event UpdateShareIndex(uint shareIndex); event Advance(uint epochBegin, uint epochAmount); constructor( address tarot_, address claimable_, address borrowable_, address vester_ ) public Distributor(tarot_, claimable_) { borrowable = borrowable_; uint _vestingBegin = IVester(vester_).vestingBegin(); vestingBegin = _vestingBegin; segmentLength = IVester(vester_).vestingEnd().sub(_vestingBegin).div(IVester(vester_).segments()); } function updateShareIndex() public virtual override returns (uint _shareIndex) { if (totalShares == 0) return shareIndex; if (epochBegin == 0) return shareIndex; uint epochEnd = epochBegin + segmentLength; uint blockTimestamp = getBlockTimestamp(); uint timestamp = Math.min(blockTimestamp, epochEnd); uint timeElapsed = timestamp - lastUpdate; assert(timeElapsed <= segmentLength); if (timeElapsed == 0) return shareIndex; uint amount = epochAmount.mul(timeElapsed).div(segmentLength); _shareIndex = amount.mul(2**160).div(totalShares).add(shareIndex); shareIndex = _shareIndex; lastUpdate = timestamp; emit UpdateShareIndex(_shareIndex); } function advance() public nonReentrant { uint blockTimestamp = getBlockTimestamp(); if (blockTimestamp < vestingBegin) return; uint _epochBegin = epochBegin; if (_epochBegin != 0 && blockTimestamp < _epochBegin + segmentLength) return; uint amount = IClaimable(claimable).claim(); if (amount == 0) return; updateShareIndex(); uint timeSinceBeginning = blockTimestamp - vestingBegin; epochBegin = blockTimestamp.sub(timeSinceBeginning.mod(segmentLength)); epochAmount = amount; lastUpdate = epochBegin; emit Advance(epochBegin, epochAmount); } function claimInternal(address account) internal override returns (uint amount) { advance(); return super.claimInternal(account); } function claimAccount(address account) external returns (uint amount) { return claimInternal(account); } function trackBorrow( address borrower, uint borrowBalance, uint borrowIndex ) external override { require(msg.sender == borrowable, "FarmingPool: UNAUTHORIZED"); uint newShares = borrowBalance.mul(2**96).div(borrowIndex); editRecipientInternal(borrower, newShares); } function getBlockTimestamp() public view virtual returns (uint) { return block.timestamp; } }
pragma solidity =0.6.6; import "./libraries/SafeMath.sol"; import "./interfaces/ITarot.sol"; import "./interfaces/IClaimable.sol"; abstract contract Distributor is IClaimable { using SafeMath for uint; address public immutable tarot; address public immutable claimable; struct Recipient { uint shares; uint lastShareIndex; uint credit; } mapping(address => Recipient) public recipients; uint public totalShares; uint public shareIndex; event UpdateShareIndex(uint shareIndex); event UpdateCredit(address indexed account, uint lastShareIndex, uint credit); event Claim(address indexed account, uint amount); event EditRecipient(address indexed account, uint shares, uint totalShares); constructor(address tarot_, address claimable_) public { tarot = tarot_; claimable = claimable_; } function updateShareIndex() public virtual nonReentrant returns (uint _shareIndex) { if (totalShares == 0) return shareIndex; uint amount = IClaimable(claimable).claim(); if (amount == 0) return shareIndex; _shareIndex = amount.mul(2**160).div(totalShares).add(shareIndex); shareIndex = _shareIndex; emit UpdateShareIndex(_shareIndex); } function updateCredit(address account) public returns (uint credit) { uint _shareIndex = updateShareIndex(); if (_shareIndex == 0) return 0; Recipient storage recipient = recipients[account]; credit = recipient.credit + _shareIndex.sub(recipient.lastShareIndex).mul(recipient.shares) / 2**160; recipient.lastShareIndex = _shareIndex; recipient.credit = credit; emit UpdateCredit(account, _shareIndex, credit); } function claimInternal(address account) internal virtual returns (uint amount) { amount = updateCredit(account); if (amount > 0) { recipients[account].credit = 0; ITarot(tarot).transfer(account, amount); emit Claim(account, amount); } } function claim() external virtual override returns (uint amount) { return claimInternal(msg.sender); } function editRecipientInternal(address account, uint shares) internal { updateCredit(account); Recipient storage recipient = recipients[account]; uint prevShares = recipient.shares; uint _totalShares = shares > prevShares ? totalShares.add(shares - prevShares) : totalShares.sub(prevShares - shares); totalShares = _totalShares; recipient.shares = shares; emit EditRecipient(account, shares, _totalShares); } // Prevents a contract from calling itself, directly or indirectly. bool internal _notEntered = true; modifier nonReentrant() { require(_notEntered, "Distributor: REENTERED"); _notEntered = false; _; _notEntered = true; } }
pragma solidity >=0.5.0; interface IBorrowTracker { function trackBorrow( address borrower, uint borrowBalance, uint borrowIndex ) external; }
pragma solidity >=0.5.0; interface IVester { function segments() external pure returns (uint); function vestingAmount() external pure returns (uint); function vestingBegin() external pure returns (uint); function vestingEnd() external pure returns (uint); }
pragma solidity =0.6.6; // a library for performing various math operations // forked from: https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/libraries/Math.sol library Math { function min(uint x, uint y) internal pure returns (uint z) { z = x < y ? x : y; } // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method) function sqrt(uint y) internal pure returns (uint z) { if (y > 3) { z = y; uint x = y / 2 + 1; while (x < z) { z = x; x = (y / x + x) / 2; } } else if (y != 0) { z = 1; } } }
pragma solidity =0.6.6; // From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol // Subject to the MIT license. /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, errorMessage); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot underflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction underflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot underflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, errorMessage); return c; } /** * @dev Returns the integer division of two unsigned integers. * Reverts on division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. * Reverts with custom message on division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 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; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
pragma solidity =0.6.6; //IERC20 interface ITarot { function balanceOf(address account) external view returns (uint); function transfer(address dst, uint rawAmount) external returns (bool); }
pragma solidity =0.6.6; interface IClaimable { function claim() external returns (uint amount); event Claim(address indexed account, uint amount); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"tarot_","type":"address"},{"internalType":"address","name":"claimable_","type":"address"},{"internalType":"address","name":"borrowable_","type":"address"},{"internalType":"address","name":"vester_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"epochBegin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"epochAmount","type":"uint256"}],"name":"Advance","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalShares","type":"uint256"}],"name":"EditRecipient","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"lastShareIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"credit","type":"uint256"}],"name":"UpdateCredit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"shareIndex","type":"uint256"}],"name":"UpdateShareIndex","type":"event"},{"inputs":[],"name":"advance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"borrowable","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"claimAccount","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimable","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epochAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epochBegin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"recipients","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"lastShareIndex","type":"uint256"},{"internalType":"uint256","name":"credit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"segmentLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"shareIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tarot","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"borrowBalance","type":"uint256"},{"internalType":"uint256","name":"borrowIndex","type":"uint256"}],"name":"trackBorrow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"updateCredit","outputs":[{"internalType":"uint256","name":"credit","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateShareIndex","outputs":[{"internalType":"uint256","name":"_shareIndex","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vestingBegin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6101206040526003805460ff191660011790553480156200001f57600080fd5b50604051620011fe380380620011fe833981810160405260808110156200004557600080fd5b5080516020808301516040808501516060958601516001600160601b031986881b811660805284881b811660a0529682901b90961660c052815163e29bc68b60e01b815291519495929490936000926001600160a01b0385169263e29bc68b92600480840193919291829003018186803b158015620000c357600080fd5b505afa158015620000d8573d6000803e3d6000fd5b505050506040513d6020811015620000ef57600080fd5b505160e08190526040805163716b438560e11b815290519192506200020a916001600160a01b0385169163e2d6870a916004808301926020929190829003018186803b1580156200013f57600080fd5b505afa15801562000154573d6000803e3d6000fd5b505050506040513d60208110156200016b57600080fd5b5051604080516384a1931f60e01b81529051620001f69185916001600160a01b038816916384a1931f916004808301926020929190829003018186803b158015620001b557600080fd5b505afa158015620001ca573d6000803e3d6000fd5b505050506040513d6020811015620001e157600080fd5b5051906200021a602090811b62000a0717901c565b6200026b60201b620009111790919060201c565b6101005250620003b99350505050565b60006200026483836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250620002b560201b60201c565b9392505050565b60006200026483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200035060201b60201c565b60008184841115620003485760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200030c578181015183820152602001620002f2565b50505050905090810190601f1680156200033a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183620003a25760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156200030c578181015183820152602001620002f2565b506000838581620003af57fe5b0495945050505050565b60805160601c60a05160601c60c05160601c60e05161010051610dca62000434600039806104ac52806104ee528061053052806105ec52806106ff52806107fc52508061061652806106c452806107d2525080610288528061063a52508061045f52806107335250806104265280610c5b5250610dca6000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063b260187d116100a2578063d01b671711610071578063d01b671714610219578063e29bc68b14610221578063e99a6ac714610229578063ea105ac714610231578063eb8203121461023957610116565b8063b260187d146101f9578063c046371114610201578063c56ad1ad14610209578063d013666e1461021157610116565b80634e71d92d116100e95780634e71d92d146101975780636d5360c11461019f5780637429d95a146101c3578063796b89b9146101e9578063af38d757146101f157610116565b806305285d7f1461011b5780632f5ee99b1461014f5780633a98ef391461016957806345c0871814610171575b600080fd5b61014d6004803603606081101561013157600080fd5b506001600160a01b03813516906020810135906040013561027d565b005b610157610332565b60408051918252519081900360200190f35b610157610338565b6101576004803603602081101561018757600080fd5b50356001600160a01b031661033e565b610157610413565b6101a7610424565b604080516001600160a01b039092168252519081900360200190f35b610157600480360360208110156101d957600080fd5b50356001600160a01b0316610448565b610157610459565b6101a761045d565b610157610481565b6101576105de565b6101576105e4565b6101576105ea565b61015761060e565b610157610614565b6101a7610638565b61014d61065c565b61025f6004803603602081101561024f57600080fd5b50356001600160a01b0316610890565b60408051938452602084019290925282820152519081900360600190f35b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102fa576040805162461bcd60e51b815260206004820152601960248201527f4661726d696e67506f6f6c3a20554e415554484f52495a454400000000000000604482015290519081900360640190fd5b60006103208261031485600160601b63ffffffff6108b116565b9063ffffffff61091116565b905061032c8482610953565b50505050565b60045481565b60015481565b600080610349610481565b90508061035a57600091505061040e565b6001600160a01b038316600090815260208190526040902080546001820154600160a01b916103a09161039490869063ffffffff610a0716565b9063ffffffff6108b116565b816103a757fe5b048160020154019250818160010181905550828160020181905550836001600160a01b03167ff7240857a4f83123f14a7bc3f77cd32d0ae71ede635c92ebdcc14d5ea8ed018a8385604051808381526020018281526020019250505060405180910390a250505b919050565b600061041e33610a49565b90505b90565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061045382610a49565b92915050565b4290565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600154600014156104975750600254610421565b6004546104a75750600254610421565b6004547f00000000000000000000000000000000000000000000000000000000000000000160006104d6610459565b905060006104e48284610a5c565b60065490915081037f000000000000000000000000000000000000000000000000000000000000000081111561051657fe5b8061052957600254945050505050610421565b60006105647f0000000000000000000000000000000000000000000000000000000000000000610314846005546108b190919063ffffffff16565b9050610595600254610589600154610314600160a01b866108b190919063ffffffff16565b9063ffffffff610a7216565b600281905560068490556040805182815290519197507f8cae7c5b456d193882de6985578f406aefb641501192211706c5aa0a32612fec919081900360200190a1505050505090565b60065481565b60025481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60055481565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60035460ff166106ac576040805162461bcd60e51b8152602060048201526016602482015275111a5cdd1c9a589d5d1bdc8e8814915153951154915160521b604482015290519081900360640190fd5b6003805460ff1916905560006106c0610459565b90507f00000000000000000000000000000000000000000000000000000000000000008110156106f05750610881565b600454801580159061072357507f0000000000000000000000000000000000000000000000000000000000000000810182105b1561072f575050610881565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634e71d92d6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561078c57600080fd5b505af11580156107a0573d6000803e3d6000fd5b505050506040513d60208110156107b657600080fd5b50519050806107c757505050610881565b6107cf610481565b507f00000000000000000000000000000000000000000000000000000000000000008303610833610826827f000000000000000000000000000000000000000000000000000000000000000063ffffffff610acc16565b859063ffffffff610a0716565b600481905560058390556006819055604080519182526020820184905280517f80ed4614ab2b2c5fd2e6f2f0bb3c55b8bac2a16aee9296e0275b2214ebee65719281900390910190a1505050505b6003805460ff19166001179055565b60006020819052908152604090208054600182015460029092015490919083565b6000826108c057506000610453565b828202828482816108cd57fe5b041461090a5760405162461bcd60e51b8152600401808060200182810382526021815260200180610d746021913960400191505060405180910390fd5b9392505050565b600061090a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610b0e565b61095c8261033e565b506001600160a01b03821660009081526020819052604081208054909181841161099a576001546109959085840363ffffffff610a0716565b6109af565b6001546109af9083860363ffffffff610a7216565b6001819055848455604080518681526020810183905281519293506001600160a01b038816927fff3664f5f2f8f85ecd8d30ef2aa6773d8a8448219c7421dcbb67957fb3fafba1929181900390910190a25050505050565b600061090a83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250610bb0565b6000610a5361065c565b61045382610c0a565b6000818310610a6b578161090a565b5090919050565b60008282018381101561090a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061090a83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250610d11565b60008183610b9a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b5f578181015183820152602001610b47565b50505050905090810190601f168015610b8c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610ba657fe5b0495945050505050565b60008184841115610c025760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610b5f578181015183820152602001610b47565b505050900390565b6000610c158261033e565b9050801561040e576001600160a01b03808316600081815260208181526040808320600201839055805163a9059cbb60e01b8152600481019490945260248401869052517f00000000000000000000000000000000000000000000000000000000000000009094169363a9059cbb93604480820194918390030190829087803b158015610ca157600080fd5b505af1158015610cb5573d6000803e3d6000fd5b505050506040513d6020811015610ccb57600080fd5b50506040805182815290516001600160a01b038416917f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4919081900360200190a2919050565b60008183610d605760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610b5f578181015183820152602001610b47565b50828481610d6a57fe5b0694935050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122057ebfcd2b32e242e00d92c5050c4c288bbca60fc1c0083ccfdb3861e0c7afcb964736f6c63430006060033000000000000000000000000c5e2b037d30a390e62180970b3aa4e91868764cd000000000000000000000000d346910e464e719476372a9e9fd0bf4ddea09c0c000000000000000000000000beb8c1266b6a561f2f10b2d242628d7ed4ba458e000000000000000000000000bec5e148fee22932b321019f39d5f9bad8e75f18
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063b260187d116100a2578063d01b671711610071578063d01b671714610219578063e29bc68b14610221578063e99a6ac714610229578063ea105ac714610231578063eb8203121461023957610116565b8063b260187d146101f9578063c046371114610201578063c56ad1ad14610209578063d013666e1461021157610116565b80634e71d92d116100e95780634e71d92d146101975780636d5360c11461019f5780637429d95a146101c3578063796b89b9146101e9578063af38d757146101f157610116565b806305285d7f1461011b5780632f5ee99b1461014f5780633a98ef391461016957806345c0871814610171575b600080fd5b61014d6004803603606081101561013157600080fd5b506001600160a01b03813516906020810135906040013561027d565b005b610157610332565b60408051918252519081900360200190f35b610157610338565b6101576004803603602081101561018757600080fd5b50356001600160a01b031661033e565b610157610413565b6101a7610424565b604080516001600160a01b039092168252519081900360200190f35b610157600480360360208110156101d957600080fd5b50356001600160a01b0316610448565b610157610459565b6101a761045d565b610157610481565b6101576105de565b6101576105e4565b6101576105ea565b61015761060e565b610157610614565b6101a7610638565b61014d61065c565b61025f6004803603602081101561024f57600080fd5b50356001600160a01b0316610890565b60408051938452602084019290925282820152519081900360600190f35b336001600160a01b037f000000000000000000000000beb8c1266b6a561f2f10b2d242628d7ed4ba458e16146102fa576040805162461bcd60e51b815260206004820152601960248201527f4661726d696e67506f6f6c3a20554e415554484f52495a454400000000000000604482015290519081900360640190fd5b60006103208261031485600160601b63ffffffff6108b116565b9063ffffffff61091116565b905061032c8482610953565b50505050565b60045481565b60015481565b600080610349610481565b90508061035a57600091505061040e565b6001600160a01b038316600090815260208190526040902080546001820154600160a01b916103a09161039490869063ffffffff610a0716565b9063ffffffff6108b116565b816103a757fe5b048160020154019250818160010181905550828160020181905550836001600160a01b03167ff7240857a4f83123f14a7bc3f77cd32d0ae71ede635c92ebdcc14d5ea8ed018a8385604051808381526020018281526020019250505060405180910390a250505b919050565b600061041e33610a49565b90505b90565b7f000000000000000000000000c5e2b037d30a390e62180970b3aa4e91868764cd81565b600061045382610a49565b92915050565b4290565b7f000000000000000000000000d346910e464e719476372a9e9fd0bf4ddea09c0c81565b6000600154600014156104975750600254610421565b6004546104a75750600254610421565b6004547f00000000000000000000000000000000000000000000000000000000001275000160006104d6610459565b905060006104e48284610a5c565b60065490915081037f000000000000000000000000000000000000000000000000000000000012750081111561051657fe5b8061052957600254945050505050610421565b60006105647f0000000000000000000000000000000000000000000000000000000000127500610314846005546108b190919063ffffffff16565b9050610595600254610589600154610314600160a01b866108b190919063ffffffff16565b9063ffffffff610a7216565b600281905560068490556040805182815290519197507f8cae7c5b456d193882de6985578f406aefb641501192211706c5aa0a32612fec919081900360200190a1505050505090565b60065481565b60025481565b7f000000000000000000000000000000000000000000000000000000000012750081565b60055481565b7f00000000000000000000000000000000000000000000000000000000612010c881565b7f000000000000000000000000beb8c1266b6a561f2f10b2d242628d7ed4ba458e81565b60035460ff166106ac576040805162461bcd60e51b8152602060048201526016602482015275111a5cdd1c9a589d5d1bdc8e8814915153951154915160521b604482015290519081900360640190fd5b6003805460ff1916905560006106c0610459565b90507f00000000000000000000000000000000000000000000000000000000612010c88110156106f05750610881565b600454801580159061072357507f0000000000000000000000000000000000000000000000000000000000127500810182105b1561072f575050610881565b60007f000000000000000000000000d346910e464e719476372a9e9fd0bf4ddea09c0c6001600160a01b0316634e71d92d6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561078c57600080fd5b505af11580156107a0573d6000803e3d6000fd5b505050506040513d60208110156107b657600080fd5b50519050806107c757505050610881565b6107cf610481565b507f00000000000000000000000000000000000000000000000000000000612010c88303610833610826827f000000000000000000000000000000000000000000000000000000000012750063ffffffff610acc16565b859063ffffffff610a0716565b600481905560058390556006819055604080519182526020820184905280517f80ed4614ab2b2c5fd2e6f2f0bb3c55b8bac2a16aee9296e0275b2214ebee65719281900390910190a1505050505b6003805460ff19166001179055565b60006020819052908152604090208054600182015460029092015490919083565b6000826108c057506000610453565b828202828482816108cd57fe5b041461090a5760405162461bcd60e51b8152600401808060200182810382526021815260200180610d746021913960400191505060405180910390fd5b9392505050565b600061090a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610b0e565b61095c8261033e565b506001600160a01b03821660009081526020819052604081208054909181841161099a576001546109959085840363ffffffff610a0716565b6109af565b6001546109af9083860363ffffffff610a7216565b6001819055848455604080518681526020810183905281519293506001600160a01b038816927fff3664f5f2f8f85ecd8d30ef2aa6773d8a8448219c7421dcbb67957fb3fafba1929181900390910190a25050505050565b600061090a83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250610bb0565b6000610a5361065c565b61045382610c0a565b6000818310610a6b578161090a565b5090919050565b60008282018381101561090a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061090a83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250610d11565b60008183610b9a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b5f578181015183820152602001610b47565b50505050905090810190601f168015610b8c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610ba657fe5b0495945050505050565b60008184841115610c025760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610b5f578181015183820152602001610b47565b505050900390565b6000610c158261033e565b9050801561040e576001600160a01b03808316600081815260208181526040808320600201839055805163a9059cbb60e01b8152600481019490945260248401869052517f000000000000000000000000c5e2b037d30a390e62180970b3aa4e91868764cd9094169363a9059cbb93604480820194918390030190829087803b158015610ca157600080fd5b505af1158015610cb5573d6000803e3d6000fd5b505050506040513d6020811015610ccb57600080fd5b50506040805182815290516001600160a01b038416917f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4919081900360200190a2919050565b60008183610d605760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610b5f578181015183820152602001610b47565b50828481610d6a57fe5b0694935050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122057ebfcd2b32e242e00d92c5050c4c288bbca60fc1c0083ccfdb3861e0c7afcb964736f6c63430006060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c5e2b037d30a390e62180970b3aa4e91868764cd000000000000000000000000d346910e464e719476372a9e9fd0bf4ddea09c0c000000000000000000000000beb8c1266b6a561f2f10b2d242628d7ed4ba458e000000000000000000000000bec5e148fee22932b321019f39d5f9bad8e75f18
-----Decoded View---------------
Arg [0] : tarot_ (address): 0xC5e2B037D30a390e62180970B3aa4E91868764cD
Arg [1] : claimable_ (address): 0xD346910E464e719476372A9E9fd0bf4DdEa09C0C
Arg [2] : borrowable_ (address): 0xbeB8c1266B6a561F2f10B2d242628D7Ed4bA458e
Arg [3] : vester_ (address): 0xbeC5e148FeE22932B321019F39d5f9BAD8E75F18
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000c5e2b037d30a390e62180970b3aa4e91868764cd
Arg [1] : 000000000000000000000000d346910e464e719476372a9e9fd0bf4ddea09c0c
Arg [2] : 000000000000000000000000beb8c1266b6a561f2f10b2d242628d7ed4ba458e
Arg [3] : 000000000000000000000000bec5e148fee22932b321019f39d5f9bad8e75f18
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 24 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
FTM | 100.00% | $0.031462 | 4,029.3135 | $126.77 |
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.