Skip to content

Commit a0bc807

Browse files
committed
fix(scripts): support overloaded initialize in deploy and app:deploy task
- deployContract() accepts optional initializer signature param, passed to hre.upgrades.deployProxy for overload disambiguation - estimateDeploymentCost() accepts optional initializer param, passed to encodeFunctionData - app:deploy task adds --requireTcbUpToDate flag and passes 6 args with explicit initializer signature
1 parent 366efcf commit a0bc807

3 files changed

Lines changed: 13 additions & 10 deletions

File tree

kms/auth-eth/hardhat.config.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ task("kms:get-app-implementation", "Get current DstackApp implementation address
244244

245245
task("app:deploy", "Deploy DstackApp with a UUPS proxy")
246246
.addFlag("allowAnyDevice", "Allow any device to boot this app")
247+
.addFlag("requireTcbUpToDate", "Require TCB status to be UpToDate")
247248
.addOptionalParam("device", "Initial device ID", "", types.string)
248249
.addOptionalParam("hash", "Initial compose hash", "", types.string)
249250
.setAction(async (taskArgs, hre) => {
@@ -267,14 +268,14 @@ task("app:deploy", "Deploy DstackApp with a UUPS proxy")
267268
console.log("Initial compose hash:", composeHash === "0x0000000000000000000000000000000000000000000000000000000000000000" ? "none" : composeHash);
268269
}
269270

270-
// Use standard deployment - all cases use the same 6-parameter initializer
271271
const appContract = await deployContract(hre, "DstackApp", [
272-
deployerAddress,
273-
false,
274-
taskArgs.allowAnyDevice,
272+
deployerAddress,
273+
false, // _disableUpgrades
274+
taskArgs.requireTcbUpToDate, // _requireTcbUpToDate
275+
taskArgs.allowAnyDevice, // _allowAnyDevice
275276
deviceId,
276277
composeHash
277-
]);
278+
], false, "initialize(address,bool,bool,bool,bytes32,bytes32)");
278279

279280
if (!appContract) {
280281
return;

kms/auth-eth/lib/deployment-helpers.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,15 @@ export async function accountBalance(ethers: any, address: string) {
6262
export async function estimateDeploymentCost(
6363
hre: HardhatRuntimeEnvironment,
6464
contractName: string,
65-
initializerArgs: any[] = []
65+
initializerArgs: any[] = [],
66+
initializer?: string
6667
) {
6768
console.log("Estimating deployment costs...");
6869
const factory = await hre.ethers.getContractFactory(contractName);
6970

7071
// Get the data for initialize function
7172
const initData = factory.interface.encodeFunctionData(
72-
"initialize",
73+
initializer || "initialize",
7374
initializerArgs
7475
);
7576

kms/auth-eth/scripts/deploy.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { HardhatRuntimeEnvironment } from "hardhat/types";
66
import * as helpers from "../lib/deployment-helpers";
77

88
// This function should be called directly by Hardhat tasks
9-
export async function deployContract(hre: HardhatRuntimeEnvironment, contractName: string, initializerArgs: any[] = [], quiet: boolean = false) {
9+
export async function deployContract(hre: HardhatRuntimeEnvironment, contractName: string, initializerArgs: any[] = [], quiet: boolean = false, initializer?: string) {
1010
try {
1111
function log(...msgs: any[]) {
1212
if (!quiet) {
@@ -29,7 +29,8 @@ export async function deployContract(hre: HardhatRuntimeEnvironment, contractNam
2929
await helpers.estimateDeploymentCost(
3030
hre,
3131
contractName,
32-
initializerArgs
32+
initializerArgs,
33+
initializer
3334
);
3435

3536
// Prompt for confirmation
@@ -43,7 +44,7 @@ export async function deployContract(hre: HardhatRuntimeEnvironment, contractNam
4344
log("Deploying proxy...");
4445
const contract = await hre.upgrades.deployProxy(contractFactory,
4546
initializerArgs,
46-
{ kind: 'uups' }
47+
{ kind: 'uups', ...(initializer ? { initializer } : {}) }
4748
);
4849
log("Waiting for deployment...");
4950
await contract.waitForDeployment();

0 commit comments

Comments
 (0)