12 txs
26 calls
constructor
constructor(address farmableToken_, uint256 rewardsTokensLimit_)
functions
distributor
viewfunction distributor() view returns (address)
farmed
viewfunction farmed(address rewardsToken, address account) view returns (uint256)
farmInfo
viewfunction farmInfo(address rewardsToken) view returns (tuple)
owner
viewfunction owner() view returns (address)
rewardsTokens
viewfunction rewardsTokens() view returns (address[])
rewardsTokensLimit
viewfunction rewardsTokensLimit() view returns (uint256)
token
viewfunction token() view returns (address)
totalSupply
viewfunction totalSupply() view returns (uint256)
addRewardsToken
nonpayablefunction addRewardsToken(address rewardsToken)
claim
nonpayablefunction claim()
claim
nonpayablefunction claim(address rewardsToken)
renounceOwnership
nonpayablefunction renounceOwnership()
rescueFunds
nonpayablefunction rescueFunds(address token, uint256 amount)
setDistributor
nonpayablefunction setDistributor(address distributor_)
startFarming
nonpayablefunction startFarming(address rewardsToken, uint256 amount, uint256 period)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateBalances
nonpayablefunction updateBalances(address from, address to, uint256 amount)
events
DistributorChanged
event DistributorChanged(address oldDistributor, address newDistributor)
FarmCreated
event FarmCreated(address token, address reward)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RewardAdded
event RewardAdded(address token, uint256 reward, uint256 duration)
errors
AccessDenied
error AccessDenied()
AmountTooLarge
error AmountTooLarge()
DurationTooLarge
error DurationTooLarge()
OutputArrayTooSmall
error OutputArrayTooSmall()
RewardsTokenAlreadyAdded
error RewardsTokenAlreadyAdded()
RewardsTokenNotFound
error RewardsTokenNotFound()
RewardsTokensLimitReached
error RewardsTokensLimitReached()
RewardsTokensLimitTooHigh
error RewardsTokensLimitTooHigh(uint256)
SafeTransferFailed
error SafeTransferFailed()
SafeTransferFromFailed
error SafeTransferFromFailed()
SameDistributor
error SameDistributor()
ZeroDuration
error ZeroDuration()
ZeroFarmableTokenAddress
error ZeroFarmableTokenAddress()
ZeroRewardsTokenAddress
error ZeroRewardsTokenAddress()
creation bytecode
0x60c06040523480156200001157600080fd5b5060405162001fbb38038062001fbb8339810160408190526200003491620000f8565b6001600160a01b0382166080526200004c33620000a8565b60058111156200007657604051632c22366560e11b81526004810182905260240160405180910390fd5b6001600160a01b0382166200009e5760405163d0af4eb760e01b815260040160405180910390fd5b60a0525062000134565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156200010c57600080fd5b82516001600160a01b03811681146200012457600080fd5b6020939093015192949293505050565b60805160a051611e37620001846000396000818161023d015261056901526000818161036b015281816103ca01528181610492015281816106250152818161085601526109080152611e376000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806378e3214f116100b2578063bfe1092811610081578063e6235ba711610066578063e6235ba714610340578063f2fde38b14610353578063fc0c546a1461036657600080fd5b8063bfe109281461030d578063cd00671b1461032b57600080fd5b806378e3214f146102955780637a1f1aa9146102a85780638da5cb5b146102bb578063b1bd3517146102fa57600080fd5b80634e71d92d116100ee5780634e71d92d1461025f57806366fa3e1e14610267578063715018a61461027a57806375619ab51461028257600080fd5b806318160ddd146101205780631e83409a146101375780632915cbec1461014c5780633717a68914610238575b600080fd5b6002545b6040519081526020015b60405180910390f35b61014a610145366004611ac6565b610393565b005b6101f061015a366004611ac6565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526003825292829020825193840183525464ffffffffff8116845265010000000000810463ffffffff16918401919091526901000000000000000000900476ffffffffffffffffffffffffffffffffffffffffffffff169082015290565b60408051825164ffffffffff16815260208084015163ffffffff16908201529181015176ffffffffffffffffffffffffffffffffffffffffffffff169082015260600161012e565b6101247f000000000000000000000000000000000000000000000000000000000000000081565b61014a61045b565b61014a610275366004611ac6565b61055f565b61014a61067d565b61014a610290366004611ac6565b610691565b61014a6102a3366004611ae3565b610788565b61014a6102b6366004611b0f565b61083e565b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161012e565b610124610308366004611b50565b6108b8565b60015473ffffffffffffffffffffffffffffffffffffffff166102d5565b610333610994565b60405161012e9190611b89565b61014a61034e366004611be3565b6109a5565b61014a610361366004611ac6565b610aeb565b6102d57f000000000000000000000000000000000000000000000000000000000000000081565b60025490565b6040517f3466a8860000000000000000000000000000000000000000000000000000000081523060048201523360248201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633466a88690604401602060405180830381865afa158015610426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044a9190611c18565b9050610457823383610ba7565b5050565b6040517f3466a8860000000000000000000000000000000000000000000000000000000081523060048201523360248201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633466a88690604401602060405180830381865afa1580156104ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105129190611c18565b905060006105206004610bd1565b905060005b815181101561055a5761055282828151811061054357610543611c31565b60200260200101513385610ba7565b600101610525565b505050565b610567610c3e565b7f00000000000000000000000000000000000000000000000000000000000000006105926004610cbf565b036105c9576040517f62bc61f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105d4600482610cd6565b61060a576040517f4c95008300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081168252831660208201527f6bff9ddd187ef283e9c7726f406ab27bcc3719a41b6bee3585c7447183cffcec910160405180910390a150565b610685610c3e565b61068f6000610d47565b565b610699610c3e565b60015473ffffffffffffffffffffffffffffffffffffffff9081169082168190036106f0576040517f8750ee9000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8084168252841660208201527fa9f739537fc57540bed0a44e33e27baa63290d865cc15f0f16cf17d38c998a4d910160405180910390a150600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff1633146107d9576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610817576001546104579073ffffffffffffffffffffffffffffffffffffffff1682610dbc565b6001546104579073ffffffffffffffffffffffffffffffffffffffff848116911683610f16565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146108ad576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61055a838383610f78565b6040517f3466a88600000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff828116602483015260009182917f00000000000000000000000000000000000000000000000000000000000000001690633466a88690604401602060405180830381865afa15801561094f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109739190611c18565b905061098a838261098387611036565b9190611086565b9150505b92915050565b60606109a06004610bd1565b905090565b60015473ffffffffffffffffffffffffffffffffffffffff1633146109f6576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260056020526040902054610a52576040517f24060f4f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a698383610a6287611036565b91906110ae565b6040805173ffffffffffffffffffffffffffffffffffffffff87168152602081018390529081018490529091507f6a6f77044107a33658235d41bedbbaf2fe9ccdceb313143c947a5e76e1ec84749060600160405180910390a1610ae573ffffffffffffffffffffffffffffffffffffffff8516333086611139565b50505050565b610af3610c3e565b73ffffffffffffffffffffffffffffffffffffffff8116610b9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610ba481610d47565b50565b6000610bbe8383610bb787611036565b91906111d6565b90508015610ae557610ae5848483611222565b60008080526020829052604090205460609060a081901c67ffffffffffffffff811115610c0057610c00611c60565b604051908082528060200260200182016040528015610c29578160200160208202803683370190505b509150610c37838383611243565b5050919050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461068f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b92565b60008080526020829052604081205460a01c61098e565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205415610d0b5750600061098e565b610d15838361132c565b73ffffffffffffffffffffffffffffffffffffffff929092166000908152600193840160205260409020919091555090565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80471015610e26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b92565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610e80576040519150601f19603f3d011682016040523d82523d6000602084013e610e85565b606091505b505090508061055a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b92565b610f42837fa9059cbb0000000000000000000000000000000000000000000000000000000084846113f4565b61055a576040517ffb7f507900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f846004610bd1565b905060005b8151811015610fca57610fc2858585610fba868681518110610fad57610fad611c31565b6020026020010151611036565b929190611447565b600101610f89565b5073ffffffffffffffffffffffffffffffffffffffff8416610ffe578160026000828254610ff89190611cbe565b90915550505b73ffffffffffffffffffffffffffffffffffffffff8316610ae557816002600082825461102b9190611cd1565b909155505050505050565b604080518082018252611a9c81526000602080830182905273ffffffffffffffffffffffffffffffffffffffff851682526003815290839020835180850190945261038d8452908301529061098e565b60006110a6838361109687611467565b6020880151600101929190611489565b949350505050565b6000806110bc856020015190565b90506111256110ca86611467565b600183019064ffffffffff42167affffffffffffffffffffffffffffffffffffffffffffffffffffff90911665010000000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000016179055565b6111308185856114d9565b95945050505050565b60006323b872dd60e01b905060006040518281528560048201528460248201528360448201526020600060648360008b5af19150508015611197573d801561118d57600160005114601f3d11169150611195565b6000873b1191505b505b806111ce576040517ff405907100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6000806111e4856020015190565b905060006111f186611467565b905061120260018301868684611489565b925082156112195761121960018301868684611715565b50509392505050565b61055a73ffffffffffffffffffffffffffffffffffffffff84168383610f16565b815160609060a083901c90811115611287576040517ff9a99b2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156113235782846000815181106112a1576112a1611c31565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015260015b818110156113215760008181526020879052604090205485518690839081106112f4576112f4611c31565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526001016112c9565b505b50919392505050565b60008080526020839052604081205460a081901c8083036113a157600080805260208690526040902074ffffffffffffffffffffffffffffffffffffffffff7401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8716011690556113e9565b6000808052602086905260408082207401000000000000000000000000000000000000000085019055828252902073ffffffffffffffffffffffffffffffffffffffff851690555b600101949350505050565b60006040518481528360048201528260248201526020600060448360008a5af191505080156110a6573d801561143657600160005114601f3d1116915061143e565b6000863b1191505b50949350505050565b610ae583838361145688611467565b60208901516001019392919061174e565b600061098e826118aa6118e461147e866020015190565b600101929190611979565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600185016020526040812054670de0b6b3a7640000906114c58486611ce4565b6114cf9190611cfb565b6111309190611d51565b600081600003611515576040517f68d5686e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff821115611553576040517f426a107300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6d04ee2d6d415b85acef810000000083111561159b576040517f0625040100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051606081018252855464ffffffffff811680835265010000000000820463ffffffff166020840152690100000000000000000090910476ffffffffffffffffffffffffffffffffffffffffffffff16928201929092529042101561166e57670de0b6b3a764000061162f82836020015163ffffffff1684600001516116239190611d8c565b64ffffffffff166119f9565b6116399190611d51565b816040015176ffffffffffffffffffffffffffffffffffffffffffffff166116619190611cd1565b61166b9085611cbe565b93505b6116788342611cbe565b855464ffffffffff908116690100000000000000000076ffffffffffffffffffffffffffffffffffffffffffffff8816027fffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffff16176501000000000063ffffffff9690961695909502949094177fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001693169290921790935550919050565b61171f8183611ce4565b73ffffffffffffffffffffffffffffffffffffffff909316600090815260019094016020525050604090912055565b73ffffffffffffffffffffffffffffffffffffffff848116159084161583158015906117a657508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b156118a15781806117b45750805b1561180d577fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000650100000000007affffffffffffffffffffffffffffffffffffffffffffffffffffff851602164264ffffffffff161787555b60006118198486611ce4565b90508261185d5773ffffffffffffffffffffffffffffffffffffffff8716600090815260018901602052604081208054839290611857908490611cfb565b90915550505b8161189f5773ffffffffffffffffffffffffffffffffffffffff8616600090815260018901602052604081208054839290611899908490611daa565b90915550505b505b50505050505050565b6000806118cb8360408051808201909152611a9c8152600060208201525090565b90506118dd816000015163ffffffff16565b9392505050565b6000806119058460408051808201909152611a9c8152600060208201525090565b905061098a83611916836020015190565b60408051606081018252915464ffffffffff8116835265010000000000810463ffffffff9081166020850152690100000000000000000090910476ffffffffffffffffffffffffffffffffffffffffffffff16918301919091529091906119f916565b835460009064ffffffffff8116906501000000000090047affffffffffffffffffffffffffffffffffffffffffffffffffffff164282146119ef5760006119c3878763ffffffff16565b905080156119ed57806119da88858863ffffffff16565b816119e7576119e7611d22565b04820191505b505b9695505050505050565b602082015160009063ffffffff161561098e576000611a2383856000015164ffffffffff16611a86565b611a3842866000015164ffffffffff16611a86565b039050836020015163ffffffff16670de0b6b3a7640000856040015176ffffffffffffffffffffffffffffffffffffffffffffff1683020281611a7d57611a7d611d22565b0491505061098e565b6000818310611a9557816118dd565b5090919050565b61068f611dd2565b73ffffffffffffffffffffffffffffffffffffffff81168114610ba457600080fd5b600060208284031215611ad857600080fd5b81356118dd81611aa4565b60008060408385031215611af657600080fd5b8235611b0181611aa4565b946020939093013593505050565b600080600060608486031215611b2457600080fd5b8335611b2f81611aa4565b92506020840135611b3f81611aa4565b929592945050506040919091013590565b60008060408385031215611b6357600080fd5b8235611b6e81611aa4565b91506020830135611b7e81611aa4565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015611bd757835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611ba5565b50909695505050505050565b600080600060608486031215611bf857600080fd5b8335611c0381611aa4565b95602085013595506040909401359392505050565b600060208284031215611c2a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561098e5761098e611c8f565b8181038181111561098e5761098e611c8f565b808202811582820484141761098e5761098e611c8f565b8181036000831280158383131683831282161715611d1b57611d1b611c8f565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611d87577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b64ffffffffff828116828216039080821115611d1b57611d1b611c8f565b8082018281126000831280158216821582161715611dca57611dca611c8f565b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea264697066735822122033d2e53b7d8d7fef22ac60ee554dd5c92e09220b60eab4ee92937f19f8b38d7864736f6c63430008110033000000000000000000000000e2355d322bdaced6c39db456a96809f4e56db46e0000000000000000000000000000000000000000000000000000000000000003