@@ -30,6 +30,22 @@ import VBEP20_DELEGATOR_ABI from "./abi/VBep20Delegator.json";
30
30
const { bscmainnet } = NETWORK_ADDRESSES ;
31
31
const CHAINLINK_WBNB_FEED = "0x0567F2323251f0Aab15c8dFb1967E4e8A7D42aeE" ;
32
32
33
+ const OLD_REWARD_FACET = "0xc2F6bDCEa4907E8CB7480d3d315bc01c125fb63C" ;
34
+ const OLD_SETTER_FACET = "0x9D1fdD581Bd6E638A7b98ac5567248A0c4E88f64" ;
35
+ const OLD_MARKET_FACET = "0x94573965fbCCAC5cD4558208A8cCB3F18E71B7Db" ;
36
+ const OLD_POLICY_FACET = "0x5bb2Dfe996629E558Cd5BDBfC4c0eC7367BB96E9" ;
37
+
38
+ const NEW_REWARD_FACET = "0x05e4C8f3dbb6c2eaD4eB1f28611FA7180e79f428" ;
39
+ const NEW_SETTER_FACET = "0x92B26cb819335DA336f59480F0ca30F9a3f18E0a" ;
40
+ const NEW_MARKET_FACET = "0xd47c074c219E6947BB350D9aD220eE20fCCC6549" ;
41
+ const NEW_POLICY_FACET = "0xF2095BeCa3030D43976ED46D5ca488D58354E8c9" ;
42
+
43
+ let marketFacetFunctionSelectors : string [ ] ;
44
+ let policyFacetFunctionSelectors : string [ ] ;
45
+ let rewardFacetFuntionSelectors : string [ ] ;
46
+ let setterFacetFuntionSelectors : string [ ] ;
47
+ let unitroller : Contract ;
48
+
33
49
forking ( 60902107 , async ( ) => {
34
50
before ( async ( ) => {
35
51
await setMaxStalePeriodInChainlinkOracle (
@@ -40,13 +56,55 @@ forking(60902107, async () => {
40
56
315360000 ,
41
57
) ;
42
58
await setMaxStalePeriodInBinanceOracle ( bscmainnet . BINANCE_ORACLE , "BNB" ) ;
59
+ unitroller = new ethers . Contract ( bscmainnet . UNITROLLER , DIAMOND_ABI , ethers . provider ) ;
43
60
} ) ;
44
61
45
62
testVip ( "vip-543" , await vip543 ( ) ) ;
46
63
testVip ( "vip-544" , await vip544 ( ) ) ;
47
64
const defaultProxyAdmin = await ethers . provider . getSigner ( DEFAULT_PROXY_ADMIN ) ;
48
65
49
66
describe ( "Pre-VIP behavior" , async ( ) => {
67
+ before ( async ( ) => {
68
+ rewardFacetFuntionSelectors = await unitroller . facetFunctionSelectors ( OLD_REWARD_FACET ) ;
69
+ setterFacetFuntionSelectors = await unitroller . facetFunctionSelectors ( OLD_SETTER_FACET ) ;
70
+ marketFacetFunctionSelectors = await unitroller . facetFunctionSelectors ( OLD_MARKET_FACET ) ;
71
+ policyFacetFunctionSelectors = await unitroller . facetFunctionSelectors ( OLD_POLICY_FACET ) ;
72
+ } ) ;
73
+
74
+ describe ( "facets" , async ( ) => {
75
+ it ( "market facet function selectors should be correct" , async ( ) => {
76
+ expect ( await unitroller . facetFunctionSelectors ( OLD_MARKET_FACET ) ) . to . deep . equal ( marketFacetFunctionSelectors ) ;
77
+ expect ( await unitroller . facetFunctionSelectors ( NEW_MARKET_FACET ) ) . to . deep . equal ( [ ] ) ;
78
+ } ) ;
79
+
80
+ it ( "policy facet function selectors should be correct" , async ( ) => {
81
+ expect ( await unitroller . facetFunctionSelectors ( OLD_POLICY_FACET ) ) . to . deep . equal ( policyFacetFunctionSelectors ) ;
82
+ expect ( await unitroller . facetFunctionSelectors ( NEW_POLICY_FACET ) ) . to . deep . equal ( [ ] ) ;
83
+ } ) ;
84
+
85
+ it ( "setter facet function selectors should be correct" , async ( ) => {
86
+ expect ( await unitroller . facetFunctionSelectors ( OLD_SETTER_FACET ) ) . to . deep . equal ( setterFacetFuntionSelectors ) ;
87
+ expect ( await unitroller . facetFunctionSelectors ( NEW_SETTER_FACET ) ) . to . deep . equal ( [ ] ) ;
88
+ } ) ;
89
+
90
+ it ( "reward facet function selectors should be correct" , async ( ) => {
91
+ expect ( await unitroller . facetFunctionSelectors ( OLD_REWARD_FACET ) ) . to . deep . equal ( rewardFacetFuntionSelectors ) ;
92
+ expect ( await unitroller . facetFunctionSelectors ( NEW_REWARD_FACET ) ) . to . deep . equal ( [ ] ) ;
93
+ } ) ;
94
+
95
+ it ( "unitroller should contain only old facet addresses" , async ( ) => {
96
+ expect ( await unitroller . facetAddresses ( ) ) . to . include ( OLD_SETTER_FACET ) ;
97
+ expect ( await unitroller . facetAddresses ( ) ) . to . include ( OLD_POLICY_FACET ) ;
98
+ expect ( await unitroller . facetAddresses ( ) ) . to . include ( OLD_MARKET_FACET ) ;
99
+ expect ( await unitroller . facetAddresses ( ) ) . to . include ( OLD_REWARD_FACET ) ;
100
+
101
+ expect ( await unitroller . facetAddresses ( ) ) . to . not . include ( NEW_SETTER_FACET ) ;
102
+ expect ( await unitroller . facetAddresses ( ) ) . to . not . include ( NEW_POLICY_FACET ) ;
103
+ expect ( await unitroller . facetAddresses ( ) ) . to . not . include ( NEW_MARKET_FACET ) ;
104
+ expect ( await unitroller . facetAddresses ( ) ) . to . not . include ( NEW_REWARD_FACET ) ;
105
+ } ) ;
106
+ } ) ;
107
+
50
108
describe ( "check implementation" , async ( ) => {
51
109
it ( "check vBNBAdmin implementation" , async ( ) => {
52
110
const vBNBAdmin = ( await ethers . getContractAt ( TRANSPARENT_PROXY_ABI , vBNB_ADMIN ) ) as Contract ;
@@ -86,11 +144,45 @@ forking(60902107, async () => {
86
144
testVip ( "VIP-545" , await vip545 ( ) , {
87
145
callbackAfterExecution : async txResponse => {
88
146
await expectEvents ( txResponse , [ DIAMOND_ABI ] , [ "DiamondCut" ] , [ 1 ] ) ;
89
- await expectEvents ( txResponse , [ UNITROLLER_ABI ] , [ "NewImplementation" ] , [ 40 ] ) ;
147
+ await expectEvents ( txResponse , [ UNITROLLER_ABI ] , [ "NewImplementation" ] , [ 41 ] ) ;
90
148
} ,
91
149
} ) ;
92
150
93
151
describe ( "Post-VIP behavior" , async ( ) => {
152
+ describe ( "facets" , async ( ) => {
153
+ it ( "market facet function selectors should be updated for new facet address" , async ( ) => {
154
+ const expectSelectors = [ ...marketFacetFunctionSelectors ] . sort ( ) ;
155
+ const updatedSelectors = [ ...( await unitroller . facetFunctionSelectors ( NEW_MARKET_FACET ) ) ] . sort ( ) ;
156
+
157
+ expect ( updatedSelectors ) . to . deep . equal ( expectSelectors ) ;
158
+ expect ( await unitroller . facetFunctionSelectors ( OLD_MARKET_FACET ) ) . to . deep . equal ( [ ] ) ;
159
+ } ) ;
160
+
161
+ it ( "policy facet function selectors should be updated for new facet address" , async ( ) => {
162
+ const expectSelectors = [ ...policyFacetFunctionSelectors ] . sort ( ) ;
163
+ const updatedSelectors = [ ...( await unitroller . facetFunctionSelectors ( NEW_POLICY_FACET ) ) ] . sort ( ) ;
164
+
165
+ expect ( updatedSelectors ) . to . deep . equal ( expectSelectors ) ;
166
+ expect ( await unitroller . facetFunctionSelectors ( OLD_POLICY_FACET ) ) . to . deep . equal ( [ ] ) ;
167
+ } ) ;
168
+
169
+ it ( "setter facet function selectors should be updated for new facet address" , async ( ) => {
170
+ const expectSelectors = [ ...setterFacetFuntionSelectors ] . sort ( ) ;
171
+ const updatedSelectors = [ ...( await unitroller . facetFunctionSelectors ( NEW_SETTER_FACET ) ) ] . sort ( ) ;
172
+
173
+ expect ( updatedSelectors ) . to . deep . equal ( expectSelectors ) ;
174
+ expect ( await unitroller . facetFunctionSelectors ( OLD_SETTER_FACET ) ) . to . deep . equal ( [ ] ) ;
175
+ } ) ;
176
+
177
+ it ( "reward facet function selectors should be updated for new facet address" , async ( ) => {
178
+ const expectSelectors = [ ...rewardFacetFuntionSelectors ] . sort ( ) ;
179
+ const updatedSelectors = [ ...( await unitroller . facetFunctionSelectors ( NEW_REWARD_FACET ) ) ] . sort ( ) ;
180
+
181
+ expect ( updatedSelectors ) . to . deep . equal ( expectSelectors ) ;
182
+ expect ( await unitroller . facetFunctionSelectors ( OLD_REWARD_FACET ) ) . to . deep . equal ( [ ] ) ;
183
+ } ) ;
184
+ } ) ;
185
+
94
186
describe ( "check implementation" , async ( ) => {
95
187
it ( "check vBNBAdmin implementation" , async ( ) => {
96
188
const vBNBAdmin = ( await ethers . getContractAt ( TRANSPARENT_PROXY_ABI , vBNB_ADMIN ) ) as Contract ;
0 commit comments