Skip to content

Commit be8ab54

Browse files
authored
Merge pull request #149 from meTokens/perf/optimise
Perf/optimise
2 parents eadac7d + a208c28 commit be8ab54

File tree

5 files changed

+54
-51
lines changed

5 files changed

+54
-51
lines changed

contracts/curves/BancorCurve.sol

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ contract BancorCurve is ICurve {
2626
// NOTE: keys are their respective hubId
2727
mapping(uint256 => CurveInfo) private _curves;
2828

29+
modifier onlyHub() {
30+
require(msg.sender == hub, "!hub");
31+
_;
32+
}
33+
2934
constructor(address _hub) {
3035
require(_hub != address(0), "!hub");
3136
hub = _hub;
@@ -35,8 +40,8 @@ contract BancorCurve is ICurve {
3540
function register(uint256 hubId, bytes calldata encodedCurveInfo)
3641
external
3742
override
43+
onlyHub
3844
{
39-
require(msg.sender == hub, "!hub");
4045
require(encodedCurveInfo.length > 0, "!encodedCurveInfo");
4146

4247
(uint256 baseY, uint32 reserveWeight) = abi.decode(
@@ -58,9 +63,8 @@ contract BancorCurve is ICurve {
5863
function initReconfigure(uint256 hubId, bytes calldata encodedCurveInfo)
5964
external
6065
override
66+
onlyHub
6167
{
62-
require(msg.sender == hub, "!hub");
63-
6468
uint32 targetReserveWeight = abi.decode(encodedCurveInfo, (uint32));
6569
CurveInfo storage curveInfo = _curves[hubId];
6670

@@ -71,15 +75,17 @@ contract BancorCurve is ICurve {
7175
);
7276

7377
// targetBaseX = (old baseY * oldR) / newR
74-
uint256 targetBaseY = (curveInfo.baseY * curveInfo.reserveWeight) /
78+
// uint256 targetBaseY = (curveInfo.baseY * curveInfo.reserveWeight) /
79+
// targetReserveWeight;
80+
81+
curveInfo.targetBaseY =
82+
(curveInfo.baseY * curveInfo.reserveWeight) /
7583
targetReserveWeight;
76-
curveInfo.targetBaseY = targetBaseY;
7784
curveInfo.targetReserveWeight = targetReserveWeight;
7885
}
7986

8087
/// @inheritdoc ICurve
81-
function finishReconfigure(uint256 hubId) external override {
82-
require(msg.sender == hub, "!hub");
88+
function finishReconfigure(uint256 hubId) external override onlyHub {
8389
CurveInfo storage curveInfo = _curves[hubId];
8490
curveInfo.reserveWeight = curveInfo.targetReserveWeight;
8591
curveInfo.baseY = curveInfo.targetBaseY;
@@ -143,6 +149,7 @@ contract BancorCurve is ICurve {
143149
uint256 balancePooled
144150
) external view override returns (uint256 meTokensMinted) {
145151
CurveInfo memory curveInfo = _curves[hubId];
152+
146153
if (supply > 0) {
147154
meTokensMinted = _viewMeTokensMinted(
148155
assetsDeposited,
@@ -166,10 +173,9 @@ contract BancorCurve is ICurve {
166173
uint256 supply,
167174
uint256 balancePooled
168175
) external view override returns (uint256 assetsReturned) {
169-
CurveInfo memory curveInfo = _curves[hubId];
170176
assetsReturned = _viewAssetsReturned(
171177
meTokensBurned,
172-
curveInfo.reserveWeight,
178+
_curves[hubId].reserveWeight,
173179
supply,
174180
balancePooled
175181
);
@@ -182,10 +188,9 @@ contract BancorCurve is ICurve {
182188
uint256 supply,
183189
uint256 balancePooled
184190
) external view override returns (uint256 assetsReturned) {
185-
CurveInfo memory curveInfo = _curves[hubId];
186191
assetsReturned = _viewAssetsReturned(
187192
meTokensBurned,
188-
curveInfo.targetReserveWeight,
193+
_curves[hubId].targetReserveWeight,
189194
supply,
190195
balancePooled
191196
);

contracts/facets/FoundryFacet.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ contract FoundryFacet is IFoundryFacet, Modifiers {
148148

149149
// Handling changes
150150
if (hubInfo.updating && block.timestamp > hubInfo.endTime) {
151-
hubInfo = LibHub.finishUpdate(meTokenInfo.hubId);
151+
LibHub.finishUpdate(meTokenInfo.hubId);
152152
} else if (meTokenInfo.targetHubId != 0) {
153153
if (block.timestamp > meTokenInfo.endTime) {
154154
hubInfo = s.hubs[meTokenInfo.targetHubId];
@@ -263,7 +263,7 @@ contract FoundryFacet is IFoundryFacet, Modifiers {
263263

264264
// Handling changes
265265
if (hubInfo.updating && block.timestamp > hubInfo.endTime) {
266-
hubInfo = LibHub.finishUpdate(meTokenInfo.hubId);
266+
LibHub.finishUpdate(meTokenInfo.hubId);
267267
} else if (meTokenInfo.targetHubId != 0) {
268268
if (block.timestamp > meTokenInfo.endTime) {
269269
hubInfo = s.hubs[meTokenInfo.targetHubId];

contracts/facets/HubFacet.sol

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ contract HubFacet is IHubFacet, Modifiers {
7777
bytes memory encodedCurveInfo
7878
) external override {
7979
HubInfo storage hubInfo = s.hubs[id];
80-
address sender = LibMeta.msgSender();
81-
require(sender == hubInfo.owner, "!owner");
80+
81+
require(LibMeta.msgSender() == hubInfo.owner, "!owner");
8282
if (hubInfo.updating && block.timestamp > hubInfo.endTime) {
8383
LibHub.finishUpdate(id);
8484
}
@@ -149,8 +149,8 @@ contract HubFacet is IHubFacet, Modifiers {
149149
/// @inheritdoc IHubFacet
150150
function cancelUpdate(uint256 id) external override {
151151
HubInfo storage hubInfo = s.hubs[id];
152-
address sender = LibMeta.msgSender();
153-
require(sender == hubInfo.owner, "!owner");
152+
153+
require(LibMeta.msgSender() == hubInfo.owner, "!owner");
154154
require(hubInfo.updating, "!updating");
155155
require(block.timestamp < hubInfo.startTime, "Update has started");
156156

@@ -171,8 +171,8 @@ contract HubFacet is IHubFacet, Modifiers {
171171
override
172172
{
173173
HubInfo storage hubInfo = s.hubs[id];
174-
address sender = LibMeta.msgSender();
175-
require(sender == hubInfo.owner, "!owner");
174+
175+
require(LibMeta.msgSender() == hubInfo.owner, "!owner");
176176
require(newOwner != hubInfo.owner, "Same owner");
177177
hubInfo.owner = newOwner;
178178

contracts/facets/MeTokenRegistryFacet.sol

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,12 +95,11 @@ contract MeTokenRegistryFacet is
9595
address migration,
9696
bytes memory encodedMigrationArgs
9797
) external override {
98-
address sender = LibMeta.msgSender();
9998
MeTokenInfo storage meTokenInfo = s.meTokens[meToken];
10099
HubInfo memory hubInfo = s.hubs[meTokenInfo.hubId];
101100
HubInfo memory targetHubInfo = s.hubs[targetHubId];
102101

103-
require(sender == meTokenInfo.owner, "!owner");
102+
require(LibMeta.msgSender() == meTokenInfo.owner, "!owner");
104103
require(
105104
block.timestamp >= meTokenInfo.endCooldown,
106105
"Cooldown not complete"
@@ -150,9 +149,8 @@ contract MeTokenRegistryFacet is
150149

151150
/// @inheritdoc IMeTokenRegistryFacet
152151
function cancelResubscribe(address meToken) external override {
153-
address sender = LibMeta.msgSender();
154152
MeTokenInfo storage meTokenInfo = s.meTokens[meToken];
155-
require(sender == meTokenInfo.owner, "!owner");
153+
require(LibMeta.msgSender() == meTokenInfo.owner, "!owner");
156154
require(meTokenInfo.targetHubId != 0, "!resubscribing");
157155
require(
158156
!IMigration(meTokenInfo.migration).migrationStarted(meToken),
@@ -182,8 +180,8 @@ contract MeTokenRegistryFacet is
182180
override
183181
{
184182
MeTokenInfo storage meTokenInfo = s.meTokens[meToken];
185-
address sender = LibMeta.msgSender();
186-
require(sender == meTokenInfo.migration, "!migration");
183+
184+
require(LibMeta.msgSender() == meTokenInfo.migration, "!migration");
187185
uint256 balancePooled = meTokenInfo.balancePooled;
188186
uint256 balanceLocked = meTokenInfo.balanceLocked;
189187
uint256 oldBalance = balancePooled + balanceLocked;

contracts/libs/LibHub.sol

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -26,52 +26,52 @@ struct HubInfo {
2626
library LibHub {
2727
event FinishUpdate(uint256 id);
2828

29-
function finishUpdate(uint256 id) internal returns (HubInfo memory) {
30-
AppStorage storage s = LibAppStorage.diamondStorage();
31-
HubInfo storage hubInfo = s.hubs[id];
29+
function finishUpdate(uint256 id) internal {
30+
HubInfo storage hubInfo = LibAppStorage.diamondStorage().hubs[id];
31+
3232
require(block.timestamp > hubInfo.endTime, "Still updating");
3333

3434
if (hubInfo.targetRefundRatio != 0) {
35-
s.hubs[id].refundRatio = hubInfo.targetRefundRatio;
36-
s.hubs[id].targetRefundRatio = 0;
35+
hubInfo.refundRatio = hubInfo.targetRefundRatio;
36+
hubInfo.targetRefundRatio = 0;
3737
}
3838

3939
if (hubInfo.reconfigure) {
4040
ICurve(hubInfo.curve).finishReconfigure(id);
41-
s.hubs[id].reconfigure = false;
41+
hubInfo.reconfigure = false;
4242
}
4343
if (hubInfo.targetCurve != address(0)) {
44-
s.hubs[id].curve = hubInfo.targetCurve;
45-
s.hubs[id].targetCurve = address(0);
44+
hubInfo.curve = hubInfo.targetCurve;
45+
hubInfo.targetCurve = address(0);
4646
}
4747

48-
s.hubs[id].updating = false;
49-
s.hubs[id].startTime = 0;
50-
s.hubs[id].endTime = 0;
48+
hubInfo.updating = false;
49+
hubInfo.startTime = 0;
50+
hubInfo.endTime = 0;
5151

5252
emit FinishUpdate(id);
53-
return hubInfo;
5453
}
5554

5655
function getHubInfo(uint256 id)
5756
internal
5857
view
5958
returns (HubInfo memory hubInfo)
6059
{
61-
AppStorage storage s = LibAppStorage.diamondStorage();
62-
hubInfo.active = s.hubs[id].active;
63-
hubInfo.owner = s.hubs[id].owner;
64-
hubInfo.vault = s.hubs[id].vault;
65-
hubInfo.asset = s.hubs[id].asset;
66-
hubInfo.curve = s.hubs[id].curve;
67-
hubInfo.refundRatio = s.hubs[id].refundRatio;
68-
hubInfo.updating = s.hubs[id].updating;
69-
hubInfo.startTime = s.hubs[id].startTime;
70-
hubInfo.endTime = s.hubs[id].endTime;
71-
hubInfo.endCooldown = s.hubs[id].endCooldown;
72-
hubInfo.reconfigure = s.hubs[id].reconfigure;
73-
hubInfo.targetCurve = s.hubs[id].targetCurve;
74-
hubInfo.targetRefundRatio = s.hubs[id].targetRefundRatio;
60+
HubInfo storage sHubInfo = LibAppStorage.diamondStorage().hubs[id];
61+
62+
hubInfo.active = sHubInfo.active;
63+
hubInfo.owner = sHubInfo.owner;
64+
hubInfo.vault = sHubInfo.vault;
65+
hubInfo.asset = sHubInfo.asset;
66+
hubInfo.curve = sHubInfo.curve;
67+
hubInfo.refundRatio = sHubInfo.refundRatio;
68+
hubInfo.updating = sHubInfo.updating;
69+
hubInfo.startTime = sHubInfo.startTime;
70+
hubInfo.endTime = sHubInfo.endTime;
71+
hubInfo.endCooldown = sHubInfo.endCooldown;
72+
hubInfo.reconfigure = sHubInfo.reconfigure;
73+
hubInfo.targetCurve = sHubInfo.targetCurve;
74+
hubInfo.targetRefundRatio = sHubInfo.targetRefundRatio;
7575
}
7676

7777
function count() internal view returns (uint256) {

0 commit comments

Comments
 (0)