0 txs
3.1k calls
constructor
constructor(address _core, address _lockingController, address _farmRegistry)
functions
core
viewfunction core() view returns (address)
farmRegistry
viewfunction farmRegistry() view returns (address)
farmWeightData
viewfunction farmWeightData(address farm) view returns (uint32 epoch, uint112 currentWeight, uint112 nextWeight)
getAssetVoteWeights
viewfunction getAssetVoteWeights(address _asset, uint256 _farmType) view returns (address[], uint256[], uint256)
getVote
viewfunction getVote(address _farm) view returns (uint256)
getVoteWeights
viewfunction getVoteWeights(uint256 _farmType) view returns (address[], uint256[], uint256)
lastVoteEpoch
viewfunction lastVoteEpoch(address user, uint32 unwindingEpochs) view returns (uint32 epoch)
lockingController
viewfunction lockingController() view returns (address)
paused
viewfunction paused() view returns (bool)
emergencyAction
payablefunction emergencyAction(tuple[] calls) payable returns (bytes[] returnData)
pause
nonpayablefunction pause()
setCore
nonpayablefunction setCore(address newCore)
unpause
nonpayablefunction unpause()
vote
nonpayablefunction vote(address _user, address _asset, uint32 _unwindingEpochs, tuple[] _liquidVotes, tuple[] _illiquidVotes)
events
CoreUpdate
event CoreUpdate(address indexed oldCore, address indexed newCore)
FarmVoteRegistered
event FarmVoteRegistered(uint256 indexed timestamp, uint256 indexed epoch, address indexed user, uint32 unwindingEpochs, (address farm, uint96 weight)[] liquidVotes, (address farm, uint96 weight)[] illiquidVotes, uint256 userWeight)
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
errors
AlreadyVoted
error AlreadyVoted(address _user, uint32 _unwindingEpochs)
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
InvalidAsset
error InvalidAsset(address _asset)
InvalidTargetBucket
error InvalidTargetBucket(address _farm, uint256 _maturity, uint256 _userUnbondingTimestamp)
InvalidWeights
error InvalidWeights(uint256 _expectedPower, uint256 _actualPower)
NoVotingPower
error NoVotingPower(address _user, uint32 _unwindingEpochs)
UnderlyingCallReverted
error UnderlyingCallReverted(bytes returnData)
UnknownFarm
error UnknownFarm(address farm, bool liquid)
creation bytecode
0x6080604052348015600e575f5ffd5b5060405161213a38038061213a833981016040819052602b91608e565b5f80546001600160a01b0394851661010002610100600160a81b0319909116179055600180549284166001600160a01b03199384161790556002805491909316911617905560c7565b80516001600160a01b03811681146089575f5ffd5b919050565b5f5f5f60608486031215609f575f5ffd5b60a6846074565b925060b2602085016074565b915060be604085016074565b90509250925092565b612066806100d45f395ff3fe6080604052600436106100d9575f3560e01c80638456cb591161007c5780638d337b81116100575780638d337b81146102bb5780639a957be8146102e8578063bae4182914610307578063f2f4eb2614610326575f5ffd5b80638456cb591461024257806386644ac71461025657806387418e4a14610284575f5ffd5b80635c975abb116100b75780635c975abb146101915780637df3927e146101b257806380009630146101d25780638359f1fb146101f1575f5ffd5b806313527eda146100dd5780632610409b1461015c5780633f4ba83a1461017d575b5f5ffd5b3480156100e8575f5ffd5b5061012b6100f73660046119f6565b60036020525f908152604090205463ffffffff8116906001600160701b036401000000008204811691600160901b90041683565b6040805163ffffffff90941684526001600160701b0392831660208501529116908201526060015b60405180910390f35b348015610167575f5ffd5b5061017b610176366004611a71565b610347565b005b348015610188575f5ffd5b5061017b61086c565b34801561019c575f5ffd5b505f5460ff166040519015158152602001610153565b6101c56101c0366004611b15565b610947565b6040516101539190611bb4565b3480156101dd575f5ffd5b5061017b6101ec3660046119f6565b610be2565b3480156101fc575f5ffd5b5061022d61020b366004611c17565b600460209081525f928352604080842090915290825290205463ffffffff1681565b60405163ffffffff9091168152602001610153565b34801561024d575f5ffd5b5061017b610cbf565b348015610261575f5ffd5b50610275610270366004611c4a565b610d97565b60405161015393929190611c74565b34801561028f575f5ffd5b506002546102a3906001600160a01b031681565b6040516001600160a01b039091168152602001610153565b3480156102c6575f5ffd5b506102da6102d53660046119f6565b610e48565b604051908152602001610153565b3480156102f3575f5ffd5b50610275610302366004611d05565b610f1b565b348015610312575f5ffd5b506001546102a3906001600160a01b031681565b348015610331575f5ffd5b505f5461010090046001600160a01b03166102a3565b61034f610fc7565b5f54604051632474521560e21b81527f276ea66e969b021a947c47a128f4d53c55387336443ef7a5391a75f0d2e48d25600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa1580156103c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103e49190611d1c565b6104245760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b6002546040517f114cb92f0000000000000000000000000000000000000000000000000000000081526001600160a01b0389811660048301529091169063114cb92f90602401602060405180830381865afa158015610485573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a99190611d1c565b87906104d4576040516337bce3c560e11b81526001600160a01b03909116600482015260240161041b565b50604051635487c57760e01b81524260048201525f90734e7b4a37cb9d88e555daea7503dc942954ff742e90635487c57790602401602060405180830381865af4158015610524573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105489190611d3b565b6001600160a01b038a165f90815260046020908152604080832063ffffffff8c811685529252909120549192508a9189918085169116106105cc576040517f5897763b0000000000000000000000000000000000000000000000000000000081526001600160a01b03909216600483015263ffffffff16602482015260440161041b565b50506001600160a01b038981165f81815260046020818152604080842063ffffffff8e811680875291909352818520805463ffffffff19169389169390931790925560015490517f5be7d3c800000000000000000000000000000000000000000000000000000000815292830194909452602482015290929190911690635be7d3c890604401602060405180830381865afa15801561066d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106919190611d3b565b90508988826106e3576040517f7f2355dd0000000000000000000000000000000000000000000000000000000081526001600160a01b03909216600483015263ffffffff16602482015260440161041b565b505083156106fa576106fa8989848489895f611005565b851561071057610710898984848b8b6001611005565b6001546040517fe7dda2eb00000000000000000000000000000000000000000000000000000000815263ffffffff8a1660048201525f916001600160a01b03169063e7dda2eb90602401602060405180830381865afa158015610775573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107999190611d5d565b6040517faf4c8de10000000000000000000000000000000000000000000000000000000081526001600160a01b038d811660048301529192509082169063af4c8de1906024015f604051808303815f87803b1580156107f6575f5ffd5b505af1158015610808573d5f5f3e3d5ffd5b505050508a6001600160a01b03168363ffffffff16427fbbd11426a9a704850f29cfe15773b80a70d18908735d36e0234021efefce83698c8c8c8c8c8a60405161085796959493929190611dfa565b60405180910390a45050505050505050505050565b5f54604051632474521560e21b81527fe7276a2a84d8de556657ec9cf93a55a7d66f096e529d0582ed08e9e2208b92b5600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa1580156108dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109019190611d1c565b61093c5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161041b565b6109446112e3565b50565b5f54604051632474521560e21b81527f1a6838efa4183e08fe3607359d1259272af9d4716f65e1a7b5921f78fd5a3c6a6004820181905233602483015260609290916101009091046001600160a01b0316906391d1485490604401602060405180830381865afa1580156109bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e19190611d1c565b610a1c5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161041b565b8267ffffffffffffffff811115610a3557610a35611e40565b604051908082528060200260200182016040528015610a6857816020015b6060815260200190600190039081610a535790505b5091505f5b83811015610bda575f858583818110610a8857610a88611e54565b9050602002810190610a9a9190611e68565b610aa89060208101906119f6565b90505f868684818110610abd57610abd611e54565b9050602002810190610acf9190611e68565b602001359050365f888886818110610ae957610ae9611e54565b9050602002810190610afb9190611e68565b610b09906040810190611e86565b915091505f5f856001600160a01b0316858585604051610b2a929190611ec9565b5f6040518083038185875af1925050503d805f8114610b64576040519150601f19603f3d011682016040523d82523d5f602084013e610b69565b606091505b5091509150818190610ba8576040517f4ad176bb00000000000000000000000000000000000000000000000000000000815260040161041b9190611ed8565b5080898881518110610bbc57610bbc611e54565b60200260200101819052505050505050508080600101915050610a6d565b505092915050565b5f54604051632474521560e21b81527f1a6838efa4183e08fe3607359d1259272af9d4716f65e1a7b5921f78fd5a3c6a600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015610c53573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c779190611d1c565b610cb25760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161041b565b610cbb82611334565b5050565b5f54604051632474521560e21b81527ffcb9fcbfa83b897fb2d5cf4b58962164105c1e71489a37ef3ae0db3fdce576f6600482018190523360248301529161010090046001600160a01b0316906391d1485490604401602060405180830381865afa158015610d30573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d549190611d1c565b610d8f5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b604482015260640161041b565b6109446113a3565b6002546040517edb56450000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301526024820184905260609283925f928392169062db5645906044015f60405180830381865afa158015610e03573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e2a9190810190611eea565b90505f5f610e37836113df565b939650945091925050509250925092565b6001600160a01b0381165f9081526003602090815260408083208151606081018352905463ffffffff811682526001600160701b036401000000008204811694830194909452600160901b90049092168282015251635487c57760e01b8152426004820152610f159190734e7b4a37cb9d88e555daea7503dc942954ff742e90635487c57790602401602060405180830381865af4158015610eec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f109190611d3b565b611582565b92915050565b6002546040517fc108e2c40000000000000000000000000000000000000000000000000000000081526004810183905260609182915f9182916001600160a01b039091169063c108e2c4906024015f60405180830381865afa158015610f83573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610faa9190810190611eea565b90505f5f610fb7836113df565b9398909750929550919350505050565b5f5460ff1615611003576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f805b83811015611277575f85858381811061102357611023611e54565b61103992602060409092020190810191506119f6565b905083156110525761104d8a8260016115e9565b611068565b61105e8a8260026115e9565b611068818a611782565b6001600160a01b0381165f908152600360209081526040918290208251606081018452905463ffffffff8082168084526001600160701b036401000000008404811695850195909552600160901b9092049093169382019390935291908a161461113f576110d760018a611fc9565b63ffffffff16815f015163ffffffff160361111b576040805160608101825263ffffffff8b168152918101516001600160701b031660208301525f9082015261113f565b506040805160608101825263ffffffff8a1681525f60208201819052918101919091525b61118187878581811061115457611154611e54565b905060400201602001602081019061116c9190611fe5565b89906bffffffffffffffffffffffff16611971565b816040018181516111929190611ffe565b6001600160701b039081169091526001600160a01b0384165f908152600360209081526040918290208551815492870151938701518516600160901b0271ffffffffffffffffffffffffffffffffffff94909516640100000000027fffffffffffffffffffffffffffff00000000000000000000000000000000000090931663ffffffff9091161791909117919091169190911790555086868481811061123b5761123b611e54565b90506040020160200160208101906112539190611fe5565b61126b906bffffffffffffffffffffffff168561201d565b93505050600101611008565b50670de0b6b3a764000081148061128c575080155b670de0b6b3a76400008290916112d7576040517ff57d5b320000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161041b565b50505050505050505050565b6112eb61198c565b5f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f80546001600160a01b038381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff851617855560405193049190911692909183917f9209b7c8c06dcfd261686a663e7c55989337b18d59da5433c6f2835fb697092091a35050565b6113ab610fc7565b5f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113173390565b604051635487c57760e01b81524260048201526060905f908190734e7b4a37cb9d88e555daea7503dc942954ff742e90635487c57790602401602060405180830381865af4158015611433573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114579190611d3b565b90505f845167ffffffffffffffff81111561147457611474611e40565b60405190808252806020026020018201604052801561149d578160200160208202803683370190505b5090505f805b86518110156115765761152960035f8984815181106114c4576114c4611e54565b6020908102919091018101516001600160a01b031682528181019290925260409081015f208151606081018352905463ffffffff811682526001600160701b036401000000008204811694830194909452600160901b90049092169082015285611582565b83828151811061153b5761153b611e54565b60200260200101818152505082818151811061155957611559611e54565b60200260200101518261156c919061201d565b91506001016114a3565b50909590945092505050565b5f8163ffffffff16835f015163ffffffff16036115ad575060208201516001600160701b0316610f15565b6115b8600183611fc9565b63ffffffff16835f015163ffffffff16036115e1575060408201516001600160701b0316610f15565b505f92915050565b6002546040517fbf0f013e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301526024820184905290911690819063bf0f013e90604401602060405180830381865afa158015611653573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116779190611d1c565b83600190916116c5576040517fc8cf6f410000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301521515602482015260440161041b565b50506040517f88f290830000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015285811660248301528216906388f2908390604401602060405180830381865afa15801561172c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117509190611d1c565b849061177b576040516337bce3c560e11b81526001600160a01b03909116600482015260240161041b565b5050505050565b5f826001600160a01b031663204f83f96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117e39190611d3b565b6040517f342a7b010000000000000000000000000000000000000000000000000000000081524260048201529091505f9063ffffffff841690734e7b4a37cb9d88e555daea7503dc942954ff742e9063342a7b0190602401602060405180830381865af4158015611856573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061187a9190611d3b565b611884919061201d565b6040517f72b864890000000000000000000000000000000000000000000000000000000081526004810191909152734e7b4a37cb9d88e555daea7503dc942954ff742e906372b8648990602401602060405180830381865af41580156118ec573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119109190611d3b565b905083828280821115611968576040517fe86011220000000000000000000000000000000000000000000000000000000081526001600160a01b0390931660048401526024830191909152604482015260640161041b565b50505050505050565b5f6119858383670de0b6b3a76400006119c7565b9392505050565b5f5460ff16611003576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f825f1904841183021582026119db575f5ffd5b5091020490565b6001600160a01b0381168114610944575f5ffd5b5f60208284031215611a06575f5ffd5b8135611985816119e2565b803563ffffffff81168114611a24575f5ffd5b919050565b5f5f83601f840112611a39575f5ffd5b50813567ffffffffffffffff811115611a50575f5ffd5b6020830191508360208260061b8501011115611a6a575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a031215611a87575f5ffd5b8735611a92816119e2565b96506020880135611aa2816119e2565b9550611ab060408901611a11565b9450606088013567ffffffffffffffff811115611acb575f5ffd5b611ad78a828b01611a29565b909550935050608088013567ffffffffffffffff811115611af6575f5ffd5b611b028a828b01611a29565b989b979a50959850939692959293505050565b5f5f60208385031215611b26575f5ffd5b823567ffffffffffffffff811115611b3c575f5ffd5b8301601f81018513611b4c575f5ffd5b803567ffffffffffffffff811115611b62575f5ffd5b8560208260051b8401011115611b76575f5ffd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611c0b57603f19878603018452611bf6858351611b86565b94506020938401939190910190600101611bda565b50929695505050505050565b5f5f60408385031215611c28575f5ffd5b8235611c33816119e2565b9150611c4160208401611a11565b90509250929050565b5f5f60408385031215611c5b575f5ffd5b8235611c66816119e2565b946020939093013593505050565b606080825284519082018190525f9060208601906080840190835b81811015611cb65783516001600160a01b0316835260209384019390920191600101611c8f565b5050838103602080860191909152865180835291810192508601905f5b81811015611cf1578251845260209384019390920191600101611cd3565b505050604092909201929092529392505050565b5f60208284031215611d15575f5ffd5b5035919050565b5f60208284031215611d2c575f5ffd5b81518015158114611985575f5ffd5b5f60208284031215611d4b575f5ffd5b5051919050565b8051611a24816119e2565b5f60208284031215611d6d575f5ffd5b8151611985816119e2565b80356bffffffffffffffffffffffff81168114611a24575f5ffd5b8183526020830192505f815f5b84811015611df0578135611db3816119e2565b6001600160a01b031686526bffffffffffffffffffffffff611dd760208401611d78565b1660208701526040958601959190910190600101611da0565b5093949350505050565b63ffffffff87168152608060208201525f611e19608083018789611d93565b8281036040840152611e2c818688611d93565b915050826060830152979650505050505050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112611e7c575f5ffd5b9190910192915050565b5f5f8335601e19843603018112611e9b575f5ffd5b83018035915067ffffffffffffffff821115611eb5575f5ffd5b602001915036819003821315611a6a575f5ffd5b818382375f9101908152919050565b602081525f6119856020830184611b86565b5f60208284031215611efa575f5ffd5b815167ffffffffffffffff811115611f10575f5ffd5b8201601f81018413611f20575f5ffd5b805167ffffffffffffffff811115611f3a57611f3a611e40565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715611f6757611f67611e40565b604052918252602081840181019290810187841115611f84575f5ffd5b6020850194505b83851015611faa57611f9c85611d52565b815260209485019401611f8b565b509695505050505050565b634e487b7160e01b5f52601160045260245ffd5b63ffffffff8281168282160390811115610f1557610f15611fb5565b5f60208284031215611ff5575f5ffd5b61198582611d78565b6001600160701b038181168382160190811115610f1557610f15611fb5565b80820180821115610f1557610f15611fb556fea2646970667358221220c3a25d1829d5fbfeef1de95e207d685b06745f4a732f62faa356f1cb0a25014c64736f6c634300081c0033000000000000000000000000f6d48735eccf12bdc1df2674b1ce3fcb3bd254900000000000000000000000001d95cc100d6cd9c7bbdbd7cb328d99b3d6037ff7000000000000000000000000f5f2718708f471e43968271956cc01aaa8c46119