Skip to content

Commit d5f8858

Browse files
authored
Merge pull request #21 from SetProtocol/pranav/polygon-delegated-manager-system-deploy-update
Update DelegatedManagerSystem polygon deploy script
2 parents 9dfb0f4 + 80c4732 commit d5f8858

File tree

5 files changed

+81
-96
lines changed

5 files changed

+81
-96
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@
9191
"@indexcoop/index-coop-smart-contracts": "^0.2.0",
9292
"@perp/curie-contract": "^0.14.0-staging",
9393
"@setprotocol/set-protocol-v2": "^0.1.14",
94-
"@setprotocol/set-v2-strategies": "^0.0.6",
94+
"@setprotocol/set-v2-strategies": "^0.0.7",
9595
"ethers": "5.5.2",
9696
"fs-extra": "^5.0.0",
9797
"module-alias": "^2.2.2",

polygon/deploy/002_delegated_manager_system.ts

Lines changed: 50 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,45 +10,63 @@ import {
1010
getCurrentStage,
1111
saveContractDeployment,
1212
stageAlreadyFinished,
13-
trackFinishedStage
13+
trackFinishedStage,
14+
saveDeferredTransactionData,
15+
writeTransactionToOutputs,
16+
getAccounts,
1417
} from "@utils/index";
1518

16-
import { initializeManagerCore } from "@utils/deploys/deployUtils";
19+
import { Account } from "@utils/types";
20+
import { InstanceGetter } from "@utils/instanceGetter";
1721

1822
import { DEPENDENCY } from "../deployments/utils/dependencies";
1923
import { CONTRACT_NAMES } from "../deployments/constants/002_delegated_manager_system";
2024

2125
const {
26+
CONTROLLER,
2227
SET_TOKEN_CREATOR,
2328
ISSUANCE_MODULE,
2429
STREAMING_FEE_MODULE,
2530
TRADE_MODULE,
2631
} = DEPENDENCY;
2732

33+
let owner: Account;
34+
let instanceGetter: InstanceGetter;
35+
2836
const CURRENT_STAGE = getCurrentStage(__filename);
2937

3038
const func: DeployFunction = trackFinishedStage(CURRENT_STAGE, async function (bre: HRE) {
3139
const {
3240
deploy,
3341
deployer,
42+
rawTx,
43+
networkConstant
3444
} = await prepareDeployment(bre);
3545

46+
[owner] = await getAccounts();
47+
instanceGetter = new InstanceGetter(owner.wallet);
48+
3649
await deployManagerCore();
3750
const managerCoreAddress = await getContractAddress(CONTRACT_NAMES.MANAGER_CORE);
3851

52+
const controllerAddress = await findDependency(CONTROLLER);
3953
const setTokenCreatorAddress = await findDependency(SET_TOKEN_CREATOR);
4054
await deployDelegatedManagerFactory();
41-
42-
await initializeManagerCore(CONTRACT_NAMES.DELEGATED_MANAGER_FACTORY, bre);
55+
const delegatedManagerFactoryAddress = await getContractAddress(CONTRACT_NAMES.DELEGATED_MANAGER_FACTORY);
4356

4457
const issuanceModuleAddress = await findDependency(ISSUANCE_MODULE);
4558
await deployIssuanceExtension();
59+
const issuanceExtensionAddress = await getContractAddress(CONTRACT_NAMES.ISSUANCE_EXTENSION);
4660

4761
const streamingFeeModuleAddress = await findDependency(STREAMING_FEE_MODULE);
4862
await deployStreamingFeeSplitExtension();
63+
const streamingFeeSplitExtensionAddress = await getContractAddress(CONTRACT_NAMES.STREAMING_FEE_SPLIT_EXTENSION);
4964

5065
const tradeModuleAddress = await findDependency(TRADE_MODULE);
5166
await deployTradeExtension();
67+
const tradeExtensionAddress = await getContractAddress(CONTRACT_NAMES.TRADE_EXTENSION);
68+
69+
await initializeManagerCore();
5270

5371
//
5472
// Helper Functions
@@ -73,7 +91,7 @@ const func: DeployFunction = trackFinishedStage(CURRENT_STAGE, async function (b
7391
async function deployDelegatedManagerFactory(): Promise<void> {
7492
const checkDelegatedManagerFactoryAddress = await getContractAddress(CONTRACT_NAMES.DELEGATED_MANAGER_FACTORY);
7593
if (checkDelegatedManagerFactoryAddress === "") {
76-
const constructorArgs = [managerCoreAddress, setTokenCreatorAddress];
94+
const constructorArgs = [managerCoreAddress, controllerAddress, setTokenCreatorAddress];
7795
const delegatedManagerFactoryDeploy = await deploy(
7896
CONTRACT_NAMES.DELEGATED_MANAGER_FACTORY,
7997
{ from: deployer, args: constructorArgs, log: true }
@@ -141,6 +159,33 @@ const func: DeployFunction = trackFinishedStage(CURRENT_STAGE, async function (b
141159
});
142160
}
143161
}
162+
163+
async function initializeManagerCore(): Promise<void> {
164+
const managerCoreInstance = await instanceGetter.getManagerCore(managerCoreAddress);
165+
if (!await managerCoreInstance.isInitialized()) {
166+
const data = managerCoreInstance.interface.encodeFunctionData(
167+
"initialize",
168+
[[issuanceExtensionAddress, streamingFeeSplitExtensionAddress, tradeExtensionAddress], [delegatedManagerFactoryAddress]]
169+
);
170+
const description = "Initialized ManagerCore with DelegatedManagerFactory, IssuanceExtension, StreamingFeeSplitExtension, and TradeExtension";
171+
172+
if ((networkConstant === "production" || process.env.TESTING_PRODUCTION)) {
173+
await saveDeferredTransactionData({
174+
data,
175+
description,
176+
contractName: "ManagerCore",
177+
});
178+
} else {
179+
const initializeTransaction: any = await rawTx({
180+
from: deployer,
181+
to: managerCoreAddress,
182+
data,
183+
log: true,
184+
});
185+
await writeTransactionToOutputs(initializeTransaction.transactionHash, description);
186+
}
187+
}
188+
}
144189
});
145190

146191
func.skip = stageAlreadyFinished(CURRENT_STAGE);

polygon/test/deploys/002_delegated_manager_system.spec.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import { DEPENDENCY } from "../../deployments/utils/dependencies";
2727
import { CONTRACT_NAMES } from "../../deployments/constants/002_delegated_manager_system";
2828

2929
const {
30+
CONTROLLER,
3031
SET_TOKEN_CREATOR,
3132
ISSUANCE_MODULE,
3233
STREAMING_FEE_MODULE,
@@ -87,6 +88,26 @@ describe("Delegated Manager System", () => {
8788
const validFactory = await managerCoreInstance.isFactory(delegatedManagerFactoryInstance.address);
8889
expect(validFactory).to.eq(true);
8990
});
91+
92+
it("should have three enabled extensions", async () => {
93+
const extensions = await managerCoreInstance.getExtensions();
94+
expect(extensions.length).to.eq(3);
95+
});
96+
97+
it("should have IssuanceExtension as valid extension", async () => {
98+
const validIssuanceExtension = await managerCoreInstance.isExtension(issuanceExtensionInstance.address);
99+
expect(validIssuanceExtension).to.eq(true);
100+
});
101+
102+
it("should have StreamingFeeSplitExtension as valid extension", async () => {
103+
const validStreamingFeeSplitExtension = await managerCoreInstance.isExtension(streamingFeeSplitExtensionInstance.address);
104+
expect(validStreamingFeeSplitExtension).to.eq(true);
105+
});
106+
107+
it("should have TradeExtension as valid extension", async () => {
108+
const validTradeExtension = await managerCoreInstance.isExtension(tradeExtensionInstance.address);
109+
expect(validTradeExtension).to.eq(true);
110+
});
90111
});
91112

92113
describe("DelegatedManagerFactory", async () => {
@@ -95,6 +116,11 @@ describe("Delegated Manager System", () => {
95116
expect(managerCore).to.eq(managerCoreInstance.address);
96117
});
97118

119+
it("should have the correct Controller address", async () => {
120+
const controller = await delegatedManagerFactoryInstance.controller();
121+
expect(controller).to.eq(await findDependency(CONTROLLER));
122+
});
123+
98124
it("should have the correct SetTokenFactory address", async () => {
99125
const setTokenFactory = await delegatedManagerFactoryInstance.setTokenFactory();
100126
expect(setTokenFactory).to.eq(await findDependency(SET_TOKEN_CREATOR));

utils/deploys/deployUtils.ts

Lines changed: 0 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -525,90 +525,4 @@ export async function updateSetManager(
525525
});
526526
await writeTransactionToOutputs(setManagerTransaction.transactionHash, description);
527527
}
528-
}
529-
530-
export async function initializeManagerCore(
531-
factoryName: string,
532-
hre: HardhatRuntimeEnvironment,
533-
skipProductionCheck: boolean = false,
534-
): Promise<void> {
535-
const {
536-
rawTx,
537-
deployer,
538-
networkConstant,
539-
} = await prepareDeployment(hre);
540-
541-
const [owner] = await getAccounts();
542-
const instanceGetter: InstanceGetter = new InstanceGetter(owner.wallet);
543-
544-
const factoryAddress = await getContractAddress(factoryName);
545-
const managerCoreAddress = await getContractAddress("ManagerCore");
546-
const managerCoreInstance = await instanceGetter.getManagerCore(managerCoreAddress);
547-
548-
if (!await managerCoreInstance.isInitialized()) {
549-
const data = managerCoreInstance.interface.encodeFunctionData(
550-
"initialize",
551-
[[factoryAddress]]
552-
);
553-
const description = `Initialized ManagerCore with ${factoryName}`;
554-
555-
if ((networkConstant === "production" || process.env.TESTING_PRODUCTION) && !skipProductionCheck) {
556-
await saveDeferredTransactionData({
557-
data,
558-
description,
559-
contractName: "ManagerCore",
560-
});
561-
} else {
562-
const addModuleTransaction: any = await rawTx({
563-
from: deployer,
564-
to: managerCoreAddress,
565-
data,
566-
log: true,
567-
});
568-
await writeTransactionToOutputs(addModuleTransaction.transactionHash, description);
569-
}
570-
}
571-
}
572-
573-
export async function enableFactoryOnManagerCore(
574-
factoryName: string,
575-
hre: HardhatRuntimeEnvironment,
576-
skipProductionCheck: boolean = false,
577-
): Promise<void> {
578-
const {
579-
rawTx,
580-
deployer,
581-
networkConstant,
582-
} = await prepareDeployment(hre);
583-
584-
const [owner] = await getAccounts();
585-
const instanceGetter: InstanceGetter = new InstanceGetter(owner.wallet);
586-
587-
const factoryAddress = await getContractAddress(factoryName);
588-
const managerCoreAddress = await getContractAddress("ManagerCore");
589-
const managerCoreInstance = await instanceGetter.getManagerCore(managerCoreAddress);
590-
591-
if (!await managerCoreInstance.isFactory(factoryAddress)) {
592-
const data = managerCoreInstance.interface.encodeFunctionData(
593-
"addFactory",
594-
[factoryAddress]
595-
);
596-
const description = `Add ${factoryName} to ManagerCore`;
597-
598-
if ((networkConstant === "production" || process.env.TESTING_PRODUCTION) && !skipProductionCheck) {
599-
await saveDeferredTransactionData({
600-
data,
601-
description,
602-
contractName: "ManagerCore",
603-
});
604-
} else {
605-
const addModuleTransaction: any = await rawTx({
606-
from: deployer,
607-
to: managerCoreAddress,
608-
data,
609-
log: true,
610-
});
611-
await writeTransactionToOutputs(addModuleTransaction.transactionHash, description);
612-
}
613-
}
614528
}

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1271,10 +1271,10 @@
12711271
module-alias "^2.2.2"
12721272
replace-in-file "^6.1.0"
12731273

1274-
"@setprotocol/set-v2-strategies@^0.0.6":
1275-
version "0.0.6"
1276-
resolved "https://registry.yarnpkg.com/@setprotocol/set-v2-strategies/-/set-v2-strategies-0.0.6.tgz#f9a3a39acbddf376c355275dee323a544e3fe2fb"
1277-
integrity sha512-4Qwgvf05klsrfWC16rzcppL7BCtldlsRZNLXrwZhnx8iUqqb+CGzbE2kEuSJU0vZG0Q0jTEPF6R+GPGIvk0sxA==
1274+
"@setprotocol/set-v2-strategies@^0.0.7":
1275+
version "0.0.7"
1276+
resolved "https://registry.yarnpkg.com/@setprotocol/set-v2-strategies/-/set-v2-strategies-0.0.7.tgz#dca84f40c31b7118b6ff527f372d7fe2906f53ad"
1277+
integrity sha512-YfA1obWvj2v/lsNnwrCHf2wRud+mdUZutHJggZyziqMokFi6dsej9StczSt8ftWUsWQqQnnGshVcBAjSL0T1sQ==
12781278
dependencies:
12791279
"@setprotocol/set-protocol-v2" "^0.1.11-hardhat.0"
12801280
"@uniswap/v3-sdk" "^3.5.1"

0 commit comments

Comments
 (0)