0 txs
41.6k calls
constructor
constructor(bool _timeBased, uint256 _blocksPerYear)
functions
accessControlManager
viewfunction accessControlManager() view returns (address)
blocksOrSecondsPerYear
viewfunction blocksOrSecondsPerYear() view returns (uint256)
DEFAULT_MAX_DISTRIBUTION_SPEED
viewfunction DEFAULT_MAX_DISTRIBUTION_SPEED() view returns (uint256)
getBlockNumberOrTimestamp
viewfunction getBlockNumberOrTimestamp() view returns (uint256)
getEffectiveDistributionSpeed
viewfunction getEffectiveDistributionSpeed(address token_) view returns (uint256)
isTimeBased
viewfunction isTimeBased() view returns (bool)
lastAccruedBlock
viewfunction lastAccruedBlock(address token_) view returns (uint256)
lastAccruedBlockOrSecond
viewfunction lastAccruedBlockOrSecond(address) view returns (uint256)
maxLoopsLimit
viewfunction maxLoopsLimit() view returns (uint256)
maxTokenDistributionSpeeds
viewfunction maxTokenDistributionSpeeds(address) view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pendingOwner
viewfunction pendingOwner() view returns (address)
prime
viewfunction prime() view returns (address)
tokenAmountAccrued
viewfunction tokenAmountAccrued(address token_) view returns (uint256)
tokenDistributionSpeeds
viewfunction tokenDistributionSpeeds(address) view returns (uint256)
acceptOwnership
nonpayablefunction acceptOwnership()
accrueTokens
nonpayablefunction accrueTokens(address token_)
initialize
nonpayablefunction initialize(address accessControlManager_, address[] tokens_, uint256[] distributionSpeeds_, uint256[] maxDistributionSpeeds_, uint256 loopsLimit_)
initializeTokens
nonpayablefunction initializeTokens(address[] tokens_)
pauseFundsTransfer
nonpayablefunction pauseFundsTransfer()
releaseFunds
nonpayablefunction releaseFunds(address token_)
renounceOwnership
nonpayablefunction renounceOwnership()
resumeFundsTransfer
nonpayablefunction resumeFundsTransfer()
setAccessControlManager
nonpayablefunction setAccessControlManager(address accessControlManager_)
setMaxLoopsLimit
nonpayablefunction setMaxLoopsLimit(uint256 loopsLimit)
setMaxTokensDistributionSpeed
nonpayablefunction setMaxTokensDistributionSpeed(address[] tokens_, uint256[] maxDistributionSpeeds_)
setPrimeToken
nonpayablefunction setPrimeToken(address prime_)
setTokensDistributionSpeed
nonpayablefunction setTokensDistributionSpeed(address[] tokens_, uint256[] distributionSpeeds_)
sweepToken
nonpayablefunction sweepToken(address token_, address to_, uint256 amount_)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Initialized
event Initialized(uint8 version)
MaxLoopsLimitUpdated
event MaxLoopsLimitUpdated(uint256 oldMaxLoopsLimit, uint256 newmaxLoopsLimit)
MaxTokenDistributionSpeedUpdated
event MaxTokenDistributionSpeedUpdated(address indexed token, uint256 oldSpeed, uint256 newSpeed)
NewAccessControlManager
event NewAccessControlManager(address oldAccessControlManager, address newAccessControlManager)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PrimeTokenUpdated
event PrimeTokenUpdated(address indexed oldPrimeToken, address indexed newPrimeToken)
SweepToken
event SweepToken(address indexed token, address indexed to, uint256 sweepAmount)
TokenDistributionInitialized
event TokenDistributionInitialized(address indexed token)
TokenDistributionSpeedUpdated
event TokenDistributionSpeedUpdated(address indexed token, uint256 oldSpeed, uint256 newSpeed)
TokensAccrued
event TokensAccrued(address indexed token, uint256 amount)
TokenTransferredToPrime
event TokenTransferredToPrime(address indexed token, uint256 amount)
Unpaused
event Unpaused(address account)
errors
AddressesMustDiffer
error AddressesMustDiffer()
FundsTransferIsPaused
error FundsTransferIsPaused()
InsufficientBalance
error InsufficientBalance(uint256 sweepAmount, uint256 balance)
InvalidArguments
error InvalidArguments()
InvalidBlocksPerYear
error InvalidBlocksPerYear()
InvalidCaller
error InvalidCaller()
InvalidDistributionSpeed
error InvalidDistributionSpeed(uint256 speed, uint256 maxSpeed)
InvalidTimeBasedConfiguration
error InvalidTimeBasedConfiguration()
MaxLoopsLimitExceeded
error MaxLoopsLimitExceeded(uint256 loopsLimit, uint256 requiredLoops)
TokenAlreadyInitialized
error TokenAlreadyInitialized(address token)
TokenNotInitialized
error TokenNotInitialized(address token_)
Unauthorized
error Unauthorized(address sender, address calledContract, string methodSignature)
creation bytecode
0x60e060405234801561001057600080fd5b5060405161207a38038061207a83398101604081905261002f916101a3565b81818115801561003d575080155b1561005b576040516302723dfb60e21b815260040160405180910390fd5b81801561006757508015155b156100855760405163ae0fcab360e01b815260040160405180910390fd5b81151560a05281610096578061009c565b6301e133805b608052816100b3576100dc60201b610f61176100be565b6100e060201b610f65175b6001600160401b031660c052506100d590506100e4565b50506101d6565b4390565b4290565b600054610100900460ff16156101505760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146101a1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b600080604083850312156101b657600080fd5b825180151581146101c657600080fd5b6020939093015192949293505050565b60805160a05160c051611e756102056000396000610cb7015260006103e8015260006102db0152611e756000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806393920bf81161010f578063c7ad0895116100a2578063e30c397811610071578063e30c397814610439578063e458a65d1461044a578063f2fde38b1461045d578063fa7781ff1461047057600080fd5b8063c7ad0895146103e3578063c7ee005e1461040a578063ce82e8411461041e578063e1d146fb1461043157600080fd5b8063b4a0bdf3116100de578063b4a0bdf3146103ae578063bc2f7dc3146103bf578063be26317e146103c7578063c32094c7146103d057600080fd5b806393920bf8146103585780639d3cc5431461036b5780639dd5428e1461038c578063a666642b1461039b57600080fd5b8063637c9b4e1161018757806379ba50971161015657806379ba50971461030557806380d45a2d1461030d5780638aadf799146103205780638da5cb5b1461033357600080fd5b8063637c9b4e146102a257806364aff9ec146102c35780636857249c146102d6578063715018a6146102fd57600080fd5b80633131b065116101c35780633131b0651461024657806343bf7283146102595780635a38f84d146102835780635c975abb1461028b57600080fd5b80630e32cb86146101ea578063192e7a7b146101ff578063231f82bb14610212575b600080fd5b6101fd6101f83660046119e5565b61049a565b005b6101fd61020d3660046119e5565b6104ae565b6102336102203660046119e5565b61012e6020526000908152604090205481565b6040519081526020015b60405180910390f35b6101fd610254366004611a55565b610574565b6102336102673660046119e5565b6001600160a01b03166000908152610130602052604090205490565b6101fd6105ce565b60c95460ff165b604051901515815260200161023d565b6102336102b03660046119e5565b61012f6020526000908152604090205481565b6101fd6102d1366004611a97565b61060d565b6102337f000000000000000000000000000000000000000000000000000000000000000081565b6101fd610713565b6101fd610725565b6101fd61031b366004611ad8565b61079c565b6101fd61032e3660046119e5565b6107e3565b6033546001600160a01b03165b6040516001600160a01b03909116815260200161023d565b6101fd610366366004611af1565b610993565b6102336103793660046119e5565b6101306020526000908152604090205481565b610233670de0b6b3a764000081565b6102336103a93660046119e5565b610a41565b6097546001600160a01b0316610340565b6101fd610af8565b61023360fb5481565b6101fd6103de3660046119e5565b610b36565b6102927f000000000000000000000000000000000000000000000000000000000000000081565b61012d54610340906001600160a01b031681565b6101fd61042c366004611af1565b610bdb565b610233610cb0565b6065546001600160a01b0316610340565b6101fd610458366004611b5d565b610ce3565b6101fd61046b3660046119e5565b610ef0565b61023361047e3660046119e5565b6001600160a01b03166000908152610131602052604090205490565b6104a2610f69565b6104ab81610fc3565b50565b61012d546001600160a01b03163381146104db576040516348f5c3ed60e01b815260040160405180910390fd5b60c95460ff16156104ff5760405163f4eaf50160e01b815260040160405180910390fd5b610508826107e3565b6001600160a01b0382166000818152610131602090815260408083208054939055518281529192917fa80c25cc8959419d41ee66f93961c567b272badc10e0e117261a0ee31b55c312910160405180910390a261056f6001600160a01b0384168383611089565b505050565b61057c610f69565b80610586816110db565b60005b818110156105c8576105c08484838181106105a6576105a6611c11565b90506020020160208101906105bb91906119e5565b61110c565b600101610589565b50505050565b61060360405180604001604052806014815260200173706175736546756e64735472616e73666572282960601b8152506111ad565b61060b61124b565b565b610615610f69565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa15801561065c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106809190611c27565b9050808211156106b25760405163cf47918160e01b815260048101839052602481018290526044015b60405180910390fd5b826001600160a01b0316846001600160a01b03167f6d25be279134f4ecaa4770aff0c3d916d9e7c5ef37b65ed95dbdba411f5d54d5846040516106f791815260200190565b60405180910390a36105c86001600160a01b0385168484611089565b61071b610f69565b61060b60006112a5565b60655433906001600160a01b031681146107935760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106a9565b6104ab816112a5565b6107da6040518060400160405280601981526020017f7365744d61784c6f6f70734c696d69742875696e7432353629000000000000008152506111ad565b6104ab816112be565b6107ec81611358565b6107f58161137f565b60006107ff610cb0565b6001600160a01b0383166000908152610130602052604090205490915080820390821461056f576001600160a01b038316600081815261012e60205260408082205490516370a0823160e01b81523060048201529092906370a0823190602401602060405180830381865afa15801561087c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a09190611c27565b6001600160a01b03861660009081526101316020526040812054919250906108c89083611c56565b905082158015906108d857508015155b156109715760006108e98486611c6f565b90506000818311156108fb57816108fd565b825b6001600160a01b0389166000908152610131602052604081208054929350839290919061092b908490611c86565b90915550506040518181526001600160a01b038916907ffe854c4c4e633d5bb31aec1f39f01d9f8f01ad2e0212a0e576825ac986af05899060200160405180910390a250505b505050506001600160a01b039190911660009081526101306020526040902055565b6109b4604051806060016040528060328152602001611ddf603291396111ad565b826109be816110db565b8082146109de576040516317dbc4cb60e21b815260040160405180910390fd5b60005b81811015610a3957610a318686838181106109fe576109fe611c11565b9050602002016020810190610a1391906119e5565b858584818110610a2557610a25611c11565b905060200201356113c5565b6001016109e1565b505050505050565b6001600160a01b038116600081815261012e60205260408082205490516370a0823160e01b8152306004820152919290918391906370a0823190602401602060405180830381865afa158015610a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abf9190611c27565b6001600160a01b0385166000908152610131602052604090205490915080821115610aed5750909392505050565b506000949350505050565b610b2e60405180604001604052806015815260200174726573756d6546756e64735472616e73666572282960581b8152506111ad565b61060b611436565b610b3e610f69565b61012d546001600160a01b039081169082908116829003610b72576040516380ae98f560e01b815260040160405180910390fd5b610b7b83611358565b61012d546040516001600160a01b038086169216907fcf4d0ac7a2f943727f0189dd1f26ba0cde29a1b14f222163ac866d4f5167db9490600090a3505061012d80546001600160a01b0319166001600160a01b0392909216919091179055565b610bfc6040518060600160405280602f8152602001611e11602f91396111ad565b82610c06816110db565b808214610c26576040516317dbc4cb60e21b815260040160405180910390fd5b60005b81811015610a3957610c60868683818110610c4657610c46611c11565b9050602002016020810190610c5b91906119e5565b61137f565b610ca8868683818110610c7557610c75611c11565b9050602002016020810190610c8a91906119e5565b858584818110610c9c57610c9c611c11565b9050602002013561146f565b600101610c29565b6000610cde7f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b905090565b600054610100900460ff1615808015610d035750600054600160ff909116105b80610d1d5750303b158015610d1d575060005460ff166001145b610d805760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a9565b6000805460ff191660011790558015610da3576000805461ff0019166101001790555b610dac89611358565b610db58961156a565b610dbd6115a2565b610dc6826112be565b86610dd0816110db565b8086141580610ddf5750808414155b15610dfd576040516317dbc4cb60e21b815260040160405180910390fd5b60005b81811015610e9d57610e1d8a8a838181106105a6576105a6611c11565b610e598a8a83818110610e3257610e32611c11565b9050602002016020810190610e4791906119e5565b878784818110610a2557610a25611c11565b610e958a8a83818110610e6e57610e6e611c11565b9050602002016020810190610e8391906119e5565b898984818110610c9c57610c9c611c11565b600101610e00565b50508015610ee5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b610ef8610f69565b606580546001600160a01b0383166001600160a01b03199091168117909155610f296033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b4390565b4290565b6033546001600160a01b0316331461060b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a9565b6001600160a01b0381166110275760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b60648201526084016106a9565b609780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa091015b60405180910390a15050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261056f9084906115d1565b60fb548111156104ab5760fb5460405163792bfb1b60e11b81526004810191909152602481018290526044016106a9565b61111581611358565b600061111f610cb0565b6001600160a01b038316600090815261013060205260409020549091508015611166576040516303b51ceb60e11b81526001600160a01b03841660048201526024016106a9565b6001600160a01b03831660008181526101306020526040808220859055517fcf6e06116a82c1b468912f23d8bb1d126edbb21bc0864d6d5169e3be39b1a8189190a2505050565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab906111e09033908690600401611ce9565b602060405180830381865afa1580156111fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112219190611d0d565b90508061124757333083604051634a3fa29360e01b81526004016106a993929190611d2f565b5050565b6112536116a6565b60c9805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112883390565b6040516001600160a01b03909116815260200160405180910390a1565b606580546001600160a01b03191690556104ab816116ec565b60fb54811161131a5760405162461bcd60e51b815260206004820152602260248201527f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d6044820152611a5d60f21b60648201526084016106a9565b60fb80549082905560408051828152602081018490527fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa910161107d565b6001600160a01b0381166104ab576040516317dbc4cb60e21b815260040160405180910390fd5b6001600160a01b0381166000908152610130602052604081205490819003611247576040516341ea4b5960e01b81526001600160a01b03831660048201526024016106a9565b6001600160a01b038216600081815261012e60209081526040918290205482519081529081018490527f2351eb1e51f0d96d3d2dc08e3c9bddbdb2153580843330b57433c3bf5031be01910160405180910390a26001600160a01b03909116600090815261012f6020526040902055565b61143e61173e565b60c9805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611288565b6001600160a01b038216600090815261012f6020526040812054908190036114b957506001600160a01b038216600090815261012f60205260409020670de0b6b3a7640000908190555b808211156114e457604051631cf8f4dd60e11b815260048101839052602481018290526044016106a9565b6001600160a01b038316600090815261012e60205260409020548281146105c85761150e846107e3565b6001600160a01b038416600081815261012e602090815260409182902086905581518481529081018690527f2a139b40b9bf8c89ae5053746323912620b9d8ea3b076b098b1bc57702abf3a5910160405180910390a250505050565b600054610100900460ff166115915760405162461bcd60e51b81526004016106a990611d64565b611599611787565b6104ab816117b6565b600054610100900460ff166115c95760405162461bcd60e51b81526004016106a990611d64565b61060b6117dd565b6000611626826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166118109092919063ffffffff16565b90508051600014806116475750808060200190518101906116479190611d0d565b61056f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a9565b60c95460ff161561060b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016106a9565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60c95460ff1661060b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016106a9565b600054610100900460ff166117ae5760405162461bcd60e51b81526004016106a990611d64565b61060b611827565b600054610100900460ff166104a25760405162461bcd60e51b81526004016106a990611d64565b600054610100900460ff166118045760405162461bcd60e51b81526004016106a990611d64565b60c9805460ff19169055565b606061181f8484600085611857565b949350505050565b600054610100900460ff1661184e5760405162461bcd60e51b81526004016106a990611d64565b61060b336112a5565b6060824710156118b85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a9565b600080866001600160a01b031685876040516118d49190611daf565b60006040518083038185875af1925050503d8060008114611911576040519150601f19603f3d011682016040523d82523d6000602084013e611916565b606091505b509150915061192787838387611932565b979650505050505050565b606083156119a157825160000361199a576001600160a01b0385163b61199a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a9565b508161181f565b61181f83838151156119b65781518083602001fd5b8060405162461bcd60e51b81526004016106a99190611dcb565b6001600160a01b03811681146104ab57600080fd5b6000602082840312156119f757600080fd5b8135611a02816119d0565b9392505050565b60008083601f840112611a1b57600080fd5b50813567ffffffffffffffff811115611a3357600080fd5b6020830191508360208260051b8501011115611a4e57600080fd5b9250929050565b60008060208385031215611a6857600080fd5b823567ffffffffffffffff811115611a7f57600080fd5b611a8b85828601611a09565b90969095509350505050565b600080600060608486031215611aac57600080fd5b8335611ab7816119d0565b92506020840135611ac7816119d0565b929592945050506040919091013590565b600060208284031215611aea57600080fd5b5035919050565b60008060008060408587031215611b0757600080fd5b843567ffffffffffffffff80821115611b1f57600080fd5b611b2b88838901611a09565b90965094506020870135915080821115611b4457600080fd5b50611b5187828801611a09565b95989497509550505050565b60008060008060008060008060a0898b031215611b7957600080fd5b8835611b84816119d0565b9750602089013567ffffffffffffffff80821115611ba157600080fd5b611bad8c838d01611a09565b909950975060408b0135915080821115611bc657600080fd5b611bd28c838d01611a09565b909750955060608b0135915080821115611beb57600080fd5b50611bf88b828c01611a09565b999c989b50969995989497949560800135949350505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611c3957600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115611c6957611c69611c40565b92915050565b8082028115828204841417611c6957611c69611c40565b80820180821115611c6957611c69611c40565b60005b83811015611cb4578181015183820152602001611c9c565b50506000910152565b60008151808452611cd5816020860160208601611c99565b601f01601f19169290920160200192915050565b6001600160a01b038316815260406020820181905260009061181f90830184611cbd565b600060208284031215611d1f57600080fd5b81518015158114611a0257600080fd5b6001600160a01b03848116825283166020820152606060408201819052600090611d5b90830184611cbd565b95945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611dc1818460208701611c99565b9190910192915050565b602081526000611a026020830184611cbd56fe7365744d6178546f6b656e73446973747269627574696f6e537065656428616464726573735b5d2c75696e743235365b5d29736574546f6b656e73446973747269627574696f6e537065656428616464726573735b5d2c75696e743235365b5d29a26469706673582212200c9d46a058dbf3a96c4cd4ce25d3f05a6a88096bf609a1ae8de1fb215c20c2b864736f6c634300081900330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000140cd00