Skip to content

Commit e43b8f7

Browse files
committed
vault upgrade linedup
1 parent d0d479d commit e43b8f7

2 files changed

Lines changed: 290 additions & 3 deletions

File tree

spot-contracts/.openzeppelin/mainnet.json

Lines changed: 263 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -949,7 +949,7 @@
949949
"label": "perp",
950950
"offset": 0,
951951
"slot": "305",
952-
"type": "t_contract(IPerpetualTranche)8314",
952+
"type": "t_contract(IPerpetualTranche)9661",
953953
"contract": "RolloverVault",
954954
"src": "contracts/vaults/RolloverVault.sol:102"
955955
}
@@ -987,7 +987,268 @@
987987
"label": "contract IERC20Upgradeable",
988988
"numberOfBytes": "20"
989989
},
990-
"t_contract(IPerpetualTranche)8314": {
990+
"t_contract(IPerpetualTranche)9661": {
991+
"label": "contract IPerpetualTranche",
992+
"numberOfBytes": "20"
993+
},
994+
"t_mapping(t_address,t_mapping(t_address,t_uint256))": {
995+
"label": "mapping(address => mapping(address => uint256))",
996+
"numberOfBytes": "32"
997+
},
998+
"t_mapping(t_address,t_uint256)": {
999+
"label": "mapping(address => uint256)",
1000+
"numberOfBytes": "32"
1001+
},
1002+
"t_mapping(t_bytes32,t_uint256)": {
1003+
"label": "mapping(bytes32 => uint256)",
1004+
"numberOfBytes": "32"
1005+
},
1006+
"t_string_storage": {
1007+
"label": "string",
1008+
"numberOfBytes": "32"
1009+
},
1010+
"t_struct(AddressSet)4620_storage": {
1011+
"label": "struct EnumerableSetUpgradeable.AddressSet",
1012+
"members": [
1013+
{
1014+
"label": "_inner",
1015+
"type": "t_struct(Set)4319_storage",
1016+
"offset": 0,
1017+
"slot": "0"
1018+
}
1019+
],
1020+
"numberOfBytes": "64"
1021+
},
1022+
"t_struct(Set)4319_storage": {
1023+
"label": "struct EnumerableSetUpgradeable.Set",
1024+
"members": [
1025+
{
1026+
"label": "_values",
1027+
"type": "t_array(t_bytes32)dyn_storage",
1028+
"offset": 0,
1029+
"slot": "0"
1030+
},
1031+
{
1032+
"label": "_indexes",
1033+
"type": "t_mapping(t_bytes32,t_uint256)",
1034+
"offset": 0,
1035+
"slot": "1"
1036+
}
1037+
],
1038+
"numberOfBytes": "64"
1039+
},
1040+
"t_uint256": {
1041+
"label": "uint256",
1042+
"numberOfBytes": "32"
1043+
},
1044+
"t_uint8": {
1045+
"label": "uint8",
1046+
"numberOfBytes": "1"
1047+
}
1048+
}
1049+
}
1050+
},
1051+
"de542c1b37a4034f8cb7b1fea9e004d952ca37b79cd0128aed44ea4aaf523d13": {
1052+
"address": "0xe9f883600f875021E6B4C67Aa1D47c85763E6736",
1053+
"txHash": "0x79b74d63e2bb7159e50590afc0de826c35992ff1ec41e466f50a4b7603db7ccf",
1054+
"layout": {
1055+
"storage": [
1056+
{
1057+
"label": "_initialized",
1058+
"offset": 0,
1059+
"slot": "0",
1060+
"type": "t_uint8",
1061+
"contract": "Initializable",
1062+
"src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62",
1063+
"retypedFrom": "bool"
1064+
},
1065+
{
1066+
"label": "_initializing",
1067+
"offset": 1,
1068+
"slot": "0",
1069+
"type": "t_bool",
1070+
"contract": "Initializable",
1071+
"src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67"
1072+
},
1073+
{
1074+
"label": "__gap",
1075+
"offset": 0,
1076+
"slot": "1",
1077+
"type": "t_array(t_uint256)50_storage",
1078+
"contract": "ContextUpgradeable",
1079+
"src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36"
1080+
},
1081+
{
1082+
"label": "_balances",
1083+
"offset": 0,
1084+
"slot": "51",
1085+
"type": "t_mapping(t_address,t_uint256)",
1086+
"contract": "ERC20Upgradeable",
1087+
"src": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol:37"
1088+
},
1089+
{
1090+
"label": "_allowances",
1091+
"offset": 0,
1092+
"slot": "52",
1093+
"type": "t_mapping(t_address,t_mapping(t_address,t_uint256))",
1094+
"contract": "ERC20Upgradeable",
1095+
"src": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol:39"
1096+
},
1097+
{
1098+
"label": "_totalSupply",
1099+
"offset": 0,
1100+
"slot": "53",
1101+
"type": "t_uint256",
1102+
"contract": "ERC20Upgradeable",
1103+
"src": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol:41"
1104+
},
1105+
{
1106+
"label": "_name",
1107+
"offset": 0,
1108+
"slot": "54",
1109+
"type": "t_string_storage",
1110+
"contract": "ERC20Upgradeable",
1111+
"src": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol:43"
1112+
},
1113+
{
1114+
"label": "_symbol",
1115+
"offset": 0,
1116+
"slot": "55",
1117+
"type": "t_string_storage",
1118+
"contract": "ERC20Upgradeable",
1119+
"src": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol:44"
1120+
},
1121+
{
1122+
"label": "__gap",
1123+
"offset": 0,
1124+
"slot": "56",
1125+
"type": "t_array(t_uint256)45_storage",
1126+
"contract": "ERC20Upgradeable",
1127+
"src": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol:394"
1128+
},
1129+
{
1130+
"label": "__gap",
1131+
"offset": 0,
1132+
"slot": "101",
1133+
"type": "t_array(t_uint256)50_storage",
1134+
"contract": "ERC20BurnableUpgradeable",
1135+
"src": "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol:51"
1136+
},
1137+
{
1138+
"label": "_owner",
1139+
"offset": 0,
1140+
"slot": "151",
1141+
"type": "t_address",
1142+
"contract": "OwnableUpgradeable",
1143+
"src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22"
1144+
},
1145+
{
1146+
"label": "__gap",
1147+
"offset": 0,
1148+
"slot": "152",
1149+
"type": "t_array(t_uint256)49_storage",
1150+
"contract": "OwnableUpgradeable",
1151+
"src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94"
1152+
},
1153+
{
1154+
"label": "_paused",
1155+
"offset": 0,
1156+
"slot": "201",
1157+
"type": "t_bool",
1158+
"contract": "PausableUpgradeable",
1159+
"src": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:29"
1160+
},
1161+
{
1162+
"label": "__gap",
1163+
"offset": 0,
1164+
"slot": "202",
1165+
"type": "t_array(t_uint256)49_storage",
1166+
"contract": "PausableUpgradeable",
1167+
"src": "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol:116"
1168+
},
1169+
{
1170+
"label": "_status",
1171+
"offset": 0,
1172+
"slot": "251",
1173+
"type": "t_uint256",
1174+
"contract": "ReentrancyGuardUpgradeable",
1175+
"src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38"
1176+
},
1177+
{
1178+
"label": "__gap",
1179+
"offset": 0,
1180+
"slot": "252",
1181+
"type": "t_array(t_uint256)49_storage",
1182+
"contract": "ReentrancyGuardUpgradeable",
1183+
"src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:74"
1184+
},
1185+
{
1186+
"label": "underlying",
1187+
"offset": 0,
1188+
"slot": "301",
1189+
"type": "t_contract(IERC20Upgradeable)1157",
1190+
"contract": "RolloverVault",
1191+
"src": "contracts/vaults/RolloverVault.sol:87"
1192+
},
1193+
{
1194+
"label": "_deployed",
1195+
"offset": 0,
1196+
"slot": "302",
1197+
"type": "t_struct(AddressSet)4620_storage",
1198+
"contract": "RolloverVault",
1199+
"src": "contracts/vaults/RolloverVault.sol:91"
1200+
},
1201+
{
1202+
"label": "minDeploymentAmt",
1203+
"offset": 0,
1204+
"slot": "304",
1205+
"type": "t_uint256",
1206+
"contract": "RolloverVault",
1207+
"src": "contracts/vaults/RolloverVault.sol:99"
1208+
},
1209+
{
1210+
"label": "perp",
1211+
"offset": 0,
1212+
"slot": "305",
1213+
"type": "t_contract(IPerpetualTranche)9661",
1214+
"contract": "RolloverVault",
1215+
"src": "contracts/vaults/RolloverVault.sol:102"
1216+
}
1217+
],
1218+
"types": {
1219+
"t_address": {
1220+
"label": "address",
1221+
"numberOfBytes": "20"
1222+
},
1223+
"t_array(t_bytes32)dyn_storage": {
1224+
"label": "bytes32[]",
1225+
"numberOfBytes": "32"
1226+
},
1227+
"t_array(t_uint256)45_storage": {
1228+
"label": "uint256[45]",
1229+
"numberOfBytes": "1440"
1230+
},
1231+
"t_array(t_uint256)49_storage": {
1232+
"label": "uint256[49]",
1233+
"numberOfBytes": "1568"
1234+
},
1235+
"t_array(t_uint256)50_storage": {
1236+
"label": "uint256[50]",
1237+
"numberOfBytes": "1600"
1238+
},
1239+
"t_bool": {
1240+
"label": "bool",
1241+
"numberOfBytes": "1"
1242+
},
1243+
"t_bytes32": {
1244+
"label": "bytes32",
1245+
"numberOfBytes": "32"
1246+
},
1247+
"t_contract(IERC20Upgradeable)1157": {
1248+
"label": "contract IERC20Upgradeable",
1249+
"numberOfBytes": "20"
1250+
},
1251+
"t_contract(IPerpetualTranche)9661": {
9911252
"label": "contract IPerpetualTranche",
9921253
"numberOfBytes": "20"
9931254
},

spot-contracts/tasks/upgrade/vaults.ts

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { getImplementationAddress } from "@openzeppelin/upgrades-core";
1+
import { getAdminAddress, getImplementationAddress } from "@openzeppelin/upgrades-core";
22
import { task, types } from "hardhat/config";
33
import { TaskArguments } from "hardhat/types";
44
import { sleep } from "../helpers";
@@ -27,3 +27,29 @@ task("upgrade:rolloverVault:testnet")
2727
address: newImpl,
2828
});
2929
});
30+
31+
32+
task("prepare_upgrade:rolloverVault:mainnet")
33+
.addPositionalParam("vaultAddress", "the address of the perp contract", undefined, types.string, false)
34+
.addParam("fromIdx", "the index of sender", 0, types.int)
35+
.setAction(async function (args: TaskArguments, hre) {
36+
const { vaultAddress } = args;
37+
38+
const signer = (await hre.ethers.getSigners())[args.fromIdx];
39+
const signerAddress = await signer.getAddress();
40+
console.log("Signer", signerAddress);
41+
42+
console.log("Proxy Admin", await getAdminAddress(hre.ethers.provider, vaultAddress));
43+
44+
const RolloverVault = await hre.ethers.getContractFactory("RolloverVault");
45+
const newImpl = await hre.upgrades.prepareUpgrade(vaultAddress, RolloverVault);
46+
console.log("New implementation at:", newImpl);
47+
48+
console.log("Update implementation through the multisig");
49+
console.log(`proxyAdmin.upgrade(${vaultAddress}, ${newImpl})`);
50+
51+
await sleep(15);
52+
await hre.run("verify:contract", {
53+
address: newImpl,
54+
});
55+
});

0 commit comments

Comments
 (0)