-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathdeploy.ts
More file actions
85 lines (75 loc) · 2.52 KB
/
deploy.ts
File metadata and controls
85 lines (75 loc) · 2.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import "reflect-metadata";
import { container } from "tsyringe";
import type { Environment } from "@proto-kit/stack";
import {
loadEnvironmentVariables,
getRequiredEnv,
LoadEnvOptions,
} from "../../utils/loadEnv";
import { loadUserModules } from "../../utils/loadUserModules";
export default async function (options: LoadEnvOptions) {
const { Provable, PublicKey } = await import("o1js");
const { Runtime } = await import("@proto-kit/module");
const { Protocol } = await import("@proto-kit/protocol");
const { AppChain, Sequencer, SettlementModule, InMemoryDatabase } =
await import("@proto-kit/sequencer");
const { DefaultModules, DefaultConfigs } = await import("@proto-kit/stack");
loadEnvironmentVariables(options);
const { runtime, protocol } = await loadUserModules();
const appChain = AppChain.from({
Runtime: Runtime.from(runtime.modules),
Protocol: Protocol.from({
...protocol.modules,
...protocol.settlementModules,
}),
Sequencer: Sequencer.from({
Database: InMemoryDatabase,
...DefaultModules.settlementScript(),
}),
});
appChain.configure({
Runtime: runtime.config,
Protocol: {
...protocol.config,
...protocol.settlementModulesConfig,
},
Sequencer: {
...DefaultConfigs.inMemoryDatabase(),
...DefaultConfigs.settlementScript({
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
preset: options.env as Environment,
}),
SettlementModule: {
addresses: undefined,
},
BridgingModule: {
addresses: undefined,
},
},
});
const chainContainer = container.createChildContainer();
const proofsEnabled = process.env.PROTOKIT_PROOFS_ENABLED === "true";
await appChain.start(proofsEnabled, chainContainer);
const settlementModule = appChain.sequencer.resolveOrFail(
"SettlementModule",
SettlementModule
);
console.log("Deploying settlement contracts...");
await settlementModule.deploy({
settlementContract: PublicKey.fromBase58(
getRequiredEnv("PROTOKIT_SETTLEMENT_CONTRACT_PUBLIC_KEY")
),
dispatchContract: PublicKey.fromBase58(
getRequiredEnv("PROTOKIT_DISPATCHER_CONTRACT_PUBLIC_KEY")
),
});
Provable.log("Deployed and initialized settlement contracts", {
settlement: PublicKey.fromBase58(
getRequiredEnv("PROTOKIT_SETTLEMENT_CONTRACT_PUBLIC_KEY")
),
dispatcher: PublicKey.fromBase58(
getRequiredEnv("PROTOKIT_DISPATCHER_CONTRACT_PUBLIC_KEY")
),
});
await appChain.close();
}