diff --git a/.gitignore b/.gitignore index 54cdf75..f1afa8d 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,10 @@ optimized-out/ broadcast/FeeDistributor.s.sol/dry-run broadcast/FeeDistributor.s.sol/8453/* !broadcast/FeeDistributor.s.sol/8453/run-latest.json +!broadcast/UpdateDynamicRewards.s.sol/ +broadcast/UpdateDynamicRewards.s.sol/dry-run +broadcast/UpdateDynamicRewards.s.sol/8453/* +!broadcast/UpdateDynamicRewards.s.sol/8453/run-latest.json # Dotenv file .env diff --git a/README.md b/README.md new file mode 100644 index 0000000..9a53d05 --- /dev/null +++ b/README.md @@ -0,0 +1,20 @@ +# Brrito Fee Distribution Contracts + +A series of contracts that handle accounting and distribution of Brrito app fees to BRR stakers. Built on [Fei Protocol's Flywheel V2](https://github.com/fei-protocol/flywheel-v2). + +## Installation + +The steps below assume that the code repo has already been cloned and the reader has navigated to the root of the project directory. + +1. Install Foundry: https://book.getfoundry.sh/. +2. Run `forge i` to install project dependencies. +3. Run `forge test --rpc-url https://mainnet.base.org` to compile contracts and run tests. + +## Contract Deployments + +| Chain ID | Chain | Contract | Contract Address | Deployment Tx | +| :--------------- | :---------------- | :----------------------------------------- | :----------------------------------------- | :------------ | +| 8453 | Base | FlywheelCore.sol | 0x771F3Ec0BFCDdf107E9fD90e1B45e9d6001C65A5 | [BaseScan](https://basescan.org/tx/0x1db05768147e8ba896997e0a63d018d31245dc2a81b8a5a1a71da6e645795083) | +| 8453 | Base | DynamicRewards.sol | 0xC5cab2b0402830A9772F21e022693F084443aBb9 | [BaseScan](https://basescan.org/tx/0x7fc6d49c1ba72d13410029949d9a3e44547127b1c977c7cdd38b2207f278003c) | +| 8453 | Base | RewardsStore.sol | 0xeC997d583F42F394413f05DFef77f61BD2006cA1 | [BaseScan](https://basescan.org/tx/0x0b3f575ac934cab9d5bb6ff6b564ce00352f8bdd530fe66671e3a7456abfb31e) | +| 8453 | Base | StakedBRR.sol | 0x9A2a2E71071Caff506050bE6747B4E1369964933 | [BaseScan](https://basescan.org/tx/0x0544d1484029a9debb28c32f74a038bf6a319eed64deb115d4955ca5b58e34e4) | diff --git a/broadcast/UpdateDynamicRewards.s.sol/8453/run-latest.json b/broadcast/UpdateDynamicRewards.s.sol/8453/run-latest.json new file mode 100644 index 0000000..729d5f4 --- /dev/null +++ b/broadcast/UpdateDynamicRewards.s.sol/8453/run-latest.json @@ -0,0 +1,226 @@ +{ + "transactions": [ + { + "hash": "0x7fc6d49c1ba72d13410029949d9a3e44547127b1c977c7cdd38b2207f278003c", + "transactionType": "CREATE", + "contractName": "DynamicRewards", + "contractAddress": "0xC5cab2b0402830A9772F21e022693F084443aBb9", + "function": null, + "arguments": [ + "0x771F3Ec0BFCDdf107E9fD90e1B45e9d6001C65A5", + "604800", + "0x6CD1D5A560Aa5f2dFa571cd2DFa0B5a165362331" + ], + "transaction": { + "type": "0x02", + "from": "0x6cd1d5a560aa5f2dfa571cd2dfa0b5a165362331", + "gas": "0xff76d", + "value": "0x0", + "data": "0x60e0604090808252346101b357606081610e82803803809161002182856101b8565b8339810103126101b3578051906001600160a01b03808316908184036101b357602091828401519363ffffffff851685036101b357860151948286168096036101b35760a052855163f7c618c160e01b8152918383600481855afa9081156101a8578493600092610165575b5050600091828260449360805289519263095ea7b360e01b84526004840152811960248401525af13d15601f3d1160016000511416171615610131575060c05280638b78c6d8195560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a351610c9090816101f28239608051816101ef015260a0518181816103ea015261090e015260c05181818161049c015261099a0152f35b60649084519062461bcd60e51b82526004820152600e60248201526d1054141493d59157d1905253115160921b6044820152fd5b90929381813d83116101a1575b61017c81836101b8565b8101031261019d5751918216820361019a575082919081600061008d565b80fd5b5080fd5b503d610172565b87513d6000823e3d90fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176101db57604052565b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c80632569296214610b015780632bfb31c014610a2257806354d1f13d146109be5780636fcf5e5f1461095f578063715018a6146109325780637acf5b92146108c35780638da5cb5b14610851578063b334db7b14610382578063b855150d1461032f578063f04e283e14610262578063f2fde38b14610213578063f7c618c1146101a4578063faa6c3c8146101245763fee81cf4146100bb57600080fd5b346101205760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610120573573ffffffffffffffffffffffffffffffffffffffff811681036101205760209263389a75e1600c525281600c20549051908152f35b8280fd5b5050346101a05760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a0578060609273ffffffffffffffffffffffffffffffffffffffff610176610b6a565b1681528060205220549063ffffffff9181519280821684528160201c166020840152811c90820152f35b5080fd5b5050346101a057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a0576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b838260207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a0573573ffffffffffffffffffffffffffffffffffffffff81160361025f5780f35b80fd5b838260207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a05780359073ffffffffffffffffffffffffffffffffffffffff82169182810361032b576102b8610c22565b63389a75e1600c5283526020600c20908154421161032057508290557fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188452601cfd5b8380fd5b5050346101a057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a05760209073ffffffffffffffffffffffffffffffffffffffff600154169051908152f35b50903461012057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610120576103ba610b6a565b9160249081359463ffffffff808716928388036101205773ffffffffffffffffffffffffffffffffffffffff94857f0000000000000000000000000000000000000000000000000000000000000000163303610829578584981691828552602099858b528886209089519161042e83610b92565b5491868316908181528d8885821c16908201948186528d1c928d83019484865264010000000042101561082557428b169c8c92919082908f86811061081f575085945b50116108175750915b610725575b505050505084905116861015610499575b89898951908152f35b837f0000000000000000000000000000000000000000000000000000000000000000168087018581116106fa5781156106cf578186809216041602968488169788036106a4578a869160015416838b51809481937fa5c2f7890000000000000000000000000000000000000000000000000000000083525af192831561069a578693610602575b505078010000000000000000000000000000000000000000000000008210156105f75750917f2bc72eed7f7ea7cb3bf6969b33e204748849532a1f8e4ca68ba1bc97c4cf2e00939177ffffffffffffffffffffffffffffffffffffffffffffffff8a9416927fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000067ffffffff000000008a51946105bb86610b92565b8986528b888701948c8652818801968988528152808a52209551169251871b1692518a1b1691171790558551908152a338808080808080610490565b6335278d128552601cfd5b909192508a903d8c11610692575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011683019083821067ffffffffffffffff83111761066857508b9183918b52810103126106645751903880610520565b8480fd5b876041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b3d9150610610565b89513d88823e3d90fd5b50601185917f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b83876012857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b83876011857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b899293949e509061073591610bdd565b169077ffffffffffffffffffffffffffffffffffffffffffffffff9283838202169281840414901517156107ec576107768891828087511691511690610bdd565b169081156107c15790829104169a51168a1161079657388080808061047f565b50600185917f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b85896012877f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b85896011877f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b90509161047a565b94610471565b8b80fd5b5085517f739e2211000000000000000000000000000000000000000000000000000000008152fd5b5050346101a057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a05760209073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754915191168152f35b5050346101a057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a0576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b83807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025f5780f35b5050346101a057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a0576020905163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b83807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025f5763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b5090346101205760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101205781359173ffffffffffffffffffffffffffffffffffffffff831680930361032b57610a7c610c22565b8215610ada5750816020917f73cd614dcfcf037e86395f33e95d1ad66e5dca982d29b2b178a86e456a8e120e937fffffffffffffffffffffffff0000000000000000000000000000000000000000600154161760015551908152a180f35b90517fe6c4247b000000000000000000000000000000000000000000000000000000008152fd5b83807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025f5763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b6004359073ffffffffffffffffffffffffffffffffffffffff82168203610b8d57565b600080fd5b6060810190811067ffffffffffffffff821117610bae57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b63ffffffff9182169082160391908211610bf357565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543303610c4c57565b6382b429006000526004601cfdfea264697066735822122055aafa8c69aac481b7387047c05050914ef6abd12b60950d05e7b5a4cba4616a64736f6c63430008170033000000000000000000000000771f3ec0bfcddf107e9fd90e1b45e9d6001c65a50000000000000000000000000000000000000000000000000000000000093a800000000000000000000000006cd1d5a560aa5f2dfa571cd2dfa0b5a165362331", + "nonce": "0xa0", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x0b3f575ac934cab9d5bb6ff6b564ce00352f8bdd530fe66671e3a7456abfb31e", + "transactionType": "CREATE", + "contractName": "RewardsStore", + "contractAddress": "0xeC997d583F42F394413f05DFef77f61BD2006cA1", + "function": null, + "arguments": [ + "0x4200000000000000000000000000000000000006", + "0xC5cab2b0402830A9772F21e022693F084443aBb9" + ], + "transaction": { + "type": "0x02", + "from": "0x6cd1d5a560aa5f2dfa571cd2dfa0b5a165362331", + "gas": "0x3dcdd", + "value": "0x0", + "data": "0x60c03461008657601f61033f38819003918201601f19168301916001600160401b0383118484101761008b57808492604094855283398101031261008657610052602061004b836100a1565b92016100a1565b9060805260a05260405161028990816100b68239608051818181608c0152610192015260a05181818160fe01526101690152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036100865756fe608080604052600436101561001357600080fd5b600090813560e01c908163a5c2f7891461012257508063f046ee5c146100b35763f7c618c11461004257600080fd5b346100b057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100b057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b80fd5b50346100b057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100b057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b90503461024f57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261024f5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361022757507f0000000000000000000000000000000000000000000000000000000000000000306014526f70a08231000000000000000000000000825260208260446010828480602484895afa601f3d11168551029533601452866034526fa9059cbb00000000000000000000000082525af13d15600184511417161561021a57602091603452604051908152f35b6390b8ec1882526004601cfd5b807f82b429000000000000000000000000000000000000000000000000000000000060049252fd5b5080fdfea26469706673582212200d21882427d86a4229bb344e9ce78ccf98f51bafa0e447773696e36161f39cc664736f6c634300081700330000000000000000000000004200000000000000000000000000000000000006000000000000000000000000c5cab2b0402830a9772f21e022693f084443abb9", + "nonce": "0xa1", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x6633e211603f2fba9cb3ce15bd1ee515c0a327c74035ab0d4abc58a8956f0650", + "transactionType": "CALL", + "contractName": "DynamicRewards", + "contractAddress": "0xC5cab2b0402830A9772F21e022693F084443aBb9", + "function": "setRewardsStore(address)", + "arguments": [ + "0xeC997d583F42F394413f05DFef77f61BD2006cA1" + ], + "transaction": { + "type": "0x02", + "from": "0x6cd1d5a560aa5f2dfa571cd2dfa0b5a165362331", + "to": "0xc5cab2b0402830a9772f21e022693f084443abb9", + "gas": "0x10c30", + "value": "0x0", + "data": "0x2bfb31c0000000000000000000000000ec997d583f42f394413f05dfef77f61bd2006ca1", + "nonce": "0xa2", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x854651211fc5bd43d973867bd324dcb8e2de5659e71e647e1e55b0926c32f058", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x771F3Ec0BFCDdf107E9fD90e1B45e9d6001C65A5", + "function": "setFlywheelRewards(address)", + "arguments": [ + "0xC5cab2b0402830A9772F21e022693F084443aBb9" + ], + "transaction": { + "type": "0x02", + "from": "0x6cd1d5a560aa5f2dfa571cd2dfa0b5a165362331", + "to": "0x771f3ec0bfcddf107e9fd90e1b45e9d6001c65a5", + "gas": "0xcc2a", + "value": "0x0", + "data": "0x8fb00913000000000000000000000000c5cab2b0402830a9772f21e022693f084443abb9", + "nonce": "0xa3", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x7fc6d49c1ba72d13410029949d9a3e44547127b1c977c7cdd38b2207f278003c", + "transactionIndex": "0x1", + "blockHash": "0xae3394fa97478724839501870d29fdf58d424a53d5cf0004c5a69f35546b983d", + "blockNumber": "0x7b07ac", + "from": "0x6CD1D5A560Aa5f2dFa571cd2DFa0B5a165362331", + "to": null, + "cumulativeGasUsed": "0xcff6e", + "gasUsed": "0xc482d", + "contractAddress": "0xC5cab2b0402830A9772F21e022693F084443aBb9", + "logs": [ + { + "address": "0x4200000000000000000000000000000000000006", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000c5cab2b0402830a9772f21e022693f084443abb9", + "0x000000000000000000000000771f3ec0bfcddf107e9fd90e1b45e9d6001c65a5" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0xae3394fa97478724839501870d29fdf58d424a53d5cf0004c5a69f35546b983d", + "blockNumber": "0x7b07ac", + "transactionHash": "0x7fc6d49c1ba72d13410029949d9a3e44547127b1c977c7cdd38b2207f278003c", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xC5cab2b0402830A9772F21e022693F084443aBb9", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000006cd1d5a560aa5f2dfa571cd2dfa0b5a165362331" + ], + "data": "0x", + "blockHash": "0xae3394fa97478724839501870d29fdf58d424a53d5cf0004c5a69f35546b983d", + "blockNumber": "0x7b07ac", + "transactionHash": "0x7fc6d49c1ba72d13410029949d9a3e44547127b1c977c7cdd38b2207f278003c", + "transactionIndex": "0x1", + "logIndex": "0x1", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000020000840000000000000000000000000000000000100000000000000004000000000000000000200000000000040000000000000208000000000001000002000000000000000000000000000000020000000000000000000800000000000000000000800000000000400000000000000000000000000000000000000000002000000000800000000000020000000000000000000004000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000020000010000000000000000000000000004000002000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d05e32" + }, + { + "transactionHash": "0x0b3f575ac934cab9d5bb6ff6b564ce00352f8bdd530fe66671e3a7456abfb31e", + "transactionIndex": "0x2", + "blockHash": "0xae3394fa97478724839501870d29fdf58d424a53d5cf0004c5a69f35546b983d", + "blockNumber": "0x7b07ac", + "from": "0x6CD1D5A560Aa5f2dFa571cd2DFa0B5a165362331", + "to": null, + "cumulativeGasUsed": "0xff818", + "gasUsed": "0x2f8aa", + "contractAddress": "0xeC997d583F42F394413f05DFef77f61BD2006cA1", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d05e32" + }, + { + "transactionHash": "0x6633e211603f2fba9cb3ce15bd1ee515c0a327c74035ab0d4abc58a8956f0650", + "transactionIndex": "0x3", + "blockHash": "0xae3394fa97478724839501870d29fdf58d424a53d5cf0004c5a69f35546b983d", + "blockNumber": "0x7b07ac", + "from": "0x6CD1D5A560Aa5f2dFa571cd2DFa0B5a165362331", + "to": "0xC5cab2b0402830A9772F21e022693F084443aBb9", + "cumulativeGasUsed": "0x10af79", + "gasUsed": "0xb761", + "contractAddress": null, + "logs": [ + { + "address": "0xC5cab2b0402830A9772F21e022693F084443aBb9", + "topics": [ + "0x73cd614dcfcf037e86395f33e95d1ad66e5dca982d29b2b178a86e456a8e120e" + ], + "data": "0x000000000000000000000000ec997d583f42f394413f05dfef77f61bd2006ca1", + "blockHash": "0xae3394fa97478724839501870d29fdf58d424a53d5cf0004c5a69f35546b983d", + "blockNumber": "0x7b07ac", + "transactionHash": "0x6633e211603f2fba9cb3ce15bd1ee515c0a327c74035ab0d4abc58a8956f0650", + "transactionIndex": "0x3", + "logIndex": "0x2", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000001000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d05e32" + }, + { + "transactionHash": "0x854651211fc5bd43d973867bd324dcb8e2de5659e71e647e1e55b0926c32f058", + "transactionIndex": "0x4", + "blockHash": "0xae3394fa97478724839501870d29fdf58d424a53d5cf0004c5a69f35546b983d", + "blockNumber": "0x7b07ac", + "from": "0x6CD1D5A560Aa5f2dFa571cd2DFa0B5a165362331", + "to": "0x771F3Ec0BFCDdf107E9fD90e1B45e9d6001C65A5", + "cumulativeGasUsed": "0x114349", + "gasUsed": "0x93d0", + "contractAddress": null, + "logs": [ + { + "address": "0x771F3Ec0BFCDdf107E9fD90e1B45e9d6001C65A5", + "topics": [ + "0xf1ba364f52e65f08563196b608289b1da2a923cdd0aa7e20dfe664c4ad294c95", + "0x000000000000000000000000c5cab2b0402830a9772f21e022693f084443abb9" + ], + "data": "0x", + "blockHash": "0xae3394fa97478724839501870d29fdf58d424a53d5cf0004c5a69f35546b983d", + "blockNumber": "0x7b07ac", + "transactionHash": "0x854651211fc5bd43d973867bd324dcb8e2de5659e71e647e1e55b0926c32f058", + "transactionIndex": "0x4", + "logIndex": "0x3", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000020000000000000000000000000000000000001000000000000000000004000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000100000000000000000000000000000040000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb2d05e32" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1702915136, + "chain": 8453, + "multi": false, + "commit": "4b662e4" +} \ No newline at end of file diff --git a/script/UpdateDynamicRewards.s.sol b/script/UpdateDynamicRewards.s.sol new file mode 100644 index 0000000..6ac6f53 --- /dev/null +++ b/script/UpdateDynamicRewards.s.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.10; + +import "forge-std/Script.sol"; +import {Authority} from "solmate/auth/Auth.sol"; +import {ERC20} from "solmate/tokens/ERC20.sol"; +import {FlywheelCore} from "flywheel-v2/FlywheelCore.sol"; +import {IFlywheelRewards} from "flywheel-v2/interfaces/IFlywheelRewards.sol"; +import {IFlywheelBooster} from "flywheel-v2/interfaces/IFlywheelBooster.sol"; +import {FlywheelDynamicRewards} from "flywheel-v2/rewards/FlywheelDynamicRewards.sol"; +import {DynamicRewards} from "src/DynamicRewards.sol"; +import {RewardsStore} from "src/RewardsStore.sol"; +import {StakedBRR} from "src/StakedBRR.sol"; + +contract UpdateDynamicRewardsScript is Script { + address public constant WETH = 0x4200000000000000000000000000000000000006; + uint32 public constant REWARDS_CYCLE_LENGTH = 1 weeks; + FlywheelCore public constant FLYWHEEL = + FlywheelCore(0x771F3Ec0BFCDdf107E9fD90e1B45e9d6001C65A5); + + function run() public { + vm.startBroadcast(vm.envUint("PRIVATE_KEY")); + + DynamicRewards dynamicRewards = new DynamicRewards( + FLYWHEEL, + REWARDS_CYCLE_LENGTH, + vm.envAddress("OWNER") + ); + RewardsStore dynamicRewardsStore = new RewardsStore( + WETH, + address(dynamicRewards) + ); + + dynamicRewards.setRewardsStore(address(dynamicRewardsStore)); + FLYWHEEL.setFlywheelRewards(dynamicRewards); + + vm.stopBroadcast(); + } +}