Skip to content

Commit 5c34358

Browse files
authored
feat: add ability to replace wallets in DV migration (#4456)
1 parent 781cd36 commit 5c34358

File tree

2 files changed

+39
-54
lines changed

2 files changed

+39
-54
lines changed

packages/scripts/src/migration/dvm2-designated-voting/2_Delegate.ts

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,14 @@
44

55
const hre = require("hardhat");
66

7-
import { VotingTokenEthers, DesignatedVotingV2FactoryEthers, VotingV2Ethers } from "@uma/contracts-node";
7+
import {
8+
VotingTokenEthers,
9+
DesignatedVotingV2FactoryEthers,
10+
VotingV2Ethers,
11+
DesignatedVotingV2Ethers,
12+
} from "@uma/contracts-node";
813
import { getContractInstance } from "../../utils/contracts";
14+
import { utils } from "ethers";
915

1016
import { baseSafePayload, appendTxToSafePayload } from "./common";
1117

@@ -23,6 +29,20 @@ async function main() {
2329
if (!process.env.GNOSIS_SAFE) throw new Error("No GNOSIS_SAFE set");
2430
const safe = process.env.GNOSIS_SAFE || "";
2531

32+
// Replace hot wallets based on provided env variable.
33+
// Note: the env variable should be formatted as follows:
34+
// HOT_WALLET_REPLACEMENTS="0x1234:0x5678,0x9abc:0xdef0"
35+
const replacementPairs = process.env.HOT_WALLET_REPLACEMENTS?.split(",") || [];
36+
const oldToNewHotWallet = Object.fromEntries(
37+
replacementPairs.map((replacementPair) => {
38+
// Split by ":".
39+
const [originalWallet, replacementWallet] = replacementPair.split(":");
40+
if (!originalWallet || !replacementWallet) throw new Error("Invalid HOT_WALLET_REPLACEMENTS provided");
41+
// Ensure that the addresses are formatted consistently.
42+
return [utils.getAddress(originalWallet), utils.getAddress(replacementWallet)];
43+
})
44+
);
45+
2646
// Step 1: fetch all the deployed DesignatedVotingV2 deployed from the factory.
2747
const factoryV2 = await getContractInstance<DesignatedVotingV2FactoryEthers>("DesignatedVotingV2Factory");
2848
const votingV2 = await getContractInstance<VotingV2Ethers>("VotingV2");
@@ -44,6 +64,14 @@ async function main() {
4464
const votingToken = await getContractInstance<VotingTokenEthers>("VotingToken");
4565
for (const designatedVoting of designatedVotingContracts) {
4666
const amount = await votingToken.balanceOf(designatedVoting);
67+
const dvContract = await getContractInstance<DesignatedVotingV2Ethers>("DesignatedVotingV2", designatedVoting);
68+
const currentVoter = utils.getAddress(await dvContract.getMember(1));
69+
const updatedHotWallet = oldToNewHotWallet[currentVoter];
70+
if (updatedHotWallet)
71+
payload = appendTxToSafePayload(payload, designatedVoting, updateVoter, {
72+
roleId: 1,
73+
newMember: updatedHotWallet,
74+
});
4775
payload = appendTxToSafePayload(payload, designatedVoting, stakeInput, { amount, address: votingV2.address });
4876
payload = appendTxToSafePayload(payload, designatedVoting, delegateToVoter, {});
4977
}
@@ -63,6 +91,15 @@ main().then(
6391
}
6492
);
6593

94+
const updateVoter = {
95+
inputs: [
96+
{ internalType: "uint256", name: "roleId", type: "uint256" },
97+
{ internalType: "address", name: "newMember", type: "address" },
98+
],
99+
name: "resetMember",
100+
payable: false,
101+
};
102+
66103
const stakeInput = {
67104
inputs: [
68105
{ internalType: "uint256", name: "amount", type: "uint256" },

yarn.lock

Lines changed: 1 addition & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1316,11 +1316,6 @@
13161316
exec-sh "^0.3.2"
13171317
minimist "^1.2.0"
13181318

1319-
"@colors/colors@1.5.0":
1320-
version "1.5.0"
1321-
resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9"
1322-
integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==
1323-
13241319
"@dabh/diagnostics@^2.0.2":
13251320
version "2.0.2"
13261321
resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.2.tgz#290d08f7b381b8f94607dc8f471a12c675f9db31"
@@ -7535,11 +7530,6 @@ async@^3.1.0:
75357530
resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720"
75367531
integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==
75377532

7538-
async@^3.2.3:
7539-
version "3.2.4"
7540-
resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
7541-
integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==
7542-
75437533
asynckit@^0.4.0:
75447534
version "0.4.0"
75457535
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -17848,17 +17838,6 @@ logform@^2.2.0:
1784817838
ms "^2.1.1"
1784917839
triple-beam "^1.3.0"
1785017840

17851-
logform@^2.3.2, logform@^2.4.0:
17852-
version "2.4.2"
17853-
resolved "https://registry.yarnpkg.com/logform/-/logform-2.4.2.tgz#a617983ac0334d0c3b942c34945380062795b47c"
17854-
integrity sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==
17855-
dependencies:
17856-
"@colors/colors" "1.5.0"
17857-
fecha "^4.2.0"
17858-
ms "^2.1.1"
17859-
safe-stable-stringify "^2.3.1"
17860-
triple-beam "^1.3.0"
17861-
1786217841
lolex@^5.0.0:
1786317842
version "5.1.2"
1786417843
resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367"
@@ -18512,7 +18491,7 @@ minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.3, minimist@^1.2.5, minimist@~1.
1851218491
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
1851318492
integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
1851418493

18515-
minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.7:
18494+
minimist@^1.2.0, minimist@^1.2.7:
1851618495
version "1.2.7"
1851718496
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
1851818497
integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
@@ -22569,11 +22548,6 @@ safe-regex@^1.1.0:
2256922548
dependencies:
2257022549
ret "~0.1.10"
2257122550

22572-
safe-stable-stringify@^2.3.1:
22573-
version "2.4.1"
22574-
resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.1.tgz#34694bd8a30575b7f94792aa51527551bd733d61"
22575-
integrity sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==
22576-
2257722551
"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
2257822552
version "2.1.2"
2257922553
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
@@ -26859,15 +26833,6 @@ winston-transport@^4.3.0, winston-transport@^4.4.0:
2685926833
readable-stream "^2.3.7"
2686026834
triple-beam "^1.2.0"
2686126835

26862-
winston-transport@^4.5.0:
26863-
version "4.5.0"
26864-
resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa"
26865-
integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==
26866-
dependencies:
26867-
logform "^2.3.2"
26868-
readable-stream "^3.6.0"
26869-
triple-beam "^1.3.0"
26870-
2687126836
winston@^3.2.1:
2687226837
version "3.3.3"
2687326838
resolved "https://registry.yarnpkg.com/winston/-/winston-3.3.3.tgz#ae6172042cafb29786afa3d09c8ff833ab7c9170"
@@ -26883,23 +26848,6 @@ winston@^3.2.1:
2688326848
triple-beam "^1.3.0"
2688426849
winston-transport "^4.4.0"
2688526850

26886-
winston@^3.8.1:
26887-
version "3.8.2"
26888-
resolved "https://registry.yarnpkg.com/winston/-/winston-3.8.2.tgz#56e16b34022eb4cff2638196d9646d7430fdad50"
26889-
integrity sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==
26890-
dependencies:
26891-
"@colors/colors" "1.5.0"
26892-
"@dabh/diagnostics" "^2.0.2"
26893-
async "^3.2.3"
26894-
is-stream "^2.0.0"
26895-
logform "^2.4.0"
26896-
one-time "^1.0.0"
26897-
readable-stream "^3.4.0"
26898-
safe-stable-stringify "^2.3.1"
26899-
stack-trace "0.0.x"
26900-
triple-beam "^1.3.0"
26901-
winston-transport "^4.5.0"
26902-
2690326851
word-wrap@^1.2.3, word-wrap@~1.2.3:
2690426852
version "1.2.3"
2690526853
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"

0 commit comments

Comments
 (0)