Skip to content

Commit a6a6a2b

Browse files
committed
Added settlement-only test
1 parent 12381f1 commit a6a6a2b

File tree

9 files changed

+354
-38
lines changed

9 files changed

+354
-38
lines changed

packages/sequencer/src/protocol/baselayer/MinaBaseLayer.ts

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import {
22
AreProofsEnabled,
33
DependencyFactory,
44
ModuleContainerLike,
5-
DependencyRecord,
65
} from "@proto-kit/common";
76
import { Mina } from "o1js";
87
import { match } from "ts-pattern";
@@ -15,7 +14,6 @@ import {
1514
} from "../../sequencer/builder/SequencerModule";
1615
import { MinaTransactionSender } from "../../settlement/transactions/MinaTransactionSender";
1716
import { DefaultOutgoingMessageAdapter } from "../../settlement/messages/outgoing/DefaultOutgoingMessageAdapter";
18-
import { IncomingMessagesService } from "../../settlement/messages/IncomingMessagesService";
1917

2018
import { BaseLayer } from "./BaseLayer";
2119
import { LocalBlockchainUtils } from "./network-utils/LocalBlockchainUtils";
@@ -64,14 +62,6 @@ export class MinaBaseLayer
6462
super();
6563
}
6664

67-
public static dependencies() {
68-
return {
69-
IncomingMessagesService: {
70-
useClass: IncomingMessagesService,
71-
},
72-
} satisfies DependencyRecord;
73-
}
74-
7565
public dependencies() {
7666
const NetworkUtilsClass = match(this.config.network.type)
7767
.with("local", () => LocalBlockchainUtils)
@@ -151,5 +141,3 @@ export class MinaBaseLayer
151141
this.network = Network;
152142
}
153143
}
154-
155-
MinaBaseLayer satisfies DependencyFactory;

packages/sequencer/src/sequencer/SettlementStartupModule.ts

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -39,39 +39,38 @@ export class SettlementStartupModule {
3939
return artifacts;
4040
}
4141

42-
private async getArtifacts(retry: boolean): Promise<{
43-
SettlementSmartContract: CompileArtifact;
44-
DispatchSmartContract: CompileArtifact;
45-
}> {
46-
const settlementVerificationKey =
47-
this.compileRegistry.getArtifact("SettlementContract");
48-
const dispatchVerificationKey = this.compileRegistry.getArtifact(
49-
"DispatchSmartContract"
42+
private async getArtifacts<Contracts extends Record<string, true>>(
43+
contracts: Contracts,
44+
retry: boolean
45+
): Promise<Record<keyof Contracts, CompileArtifact>> {
46+
const artifacts = Object.entries(contracts).map(
47+
([contract]) =>
48+
[contract, this.compileRegistry.getArtifact(contract)] as const
5049
);
5150

52-
if (
53-
settlementVerificationKey === undefined ||
54-
dispatchVerificationKey === undefined
55-
) {
51+
if (artifacts.some((x) => x[1] === undefined)) {
5652
if (retry) {
5753
log.info(
5854
"Settlement Contracts not yet compiled, initializing compilation"
5955
);
6056
await this.compile();
61-
return await this.getArtifacts(false);
57+
return await this.getArtifacts(contracts, false);
6258
}
6359
throw new Error(
6460
"Settlement contract verification keys not available for deployment"
6561
);
6662
}
6763

68-
return {
69-
SettlementSmartContract: settlementVerificationKey,
70-
DispatchSmartContract: dispatchVerificationKey,
71-
};
64+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
65+
return Object.fromEntries(artifacts) as Record<
66+
keyof Contracts,
67+
CompileArtifact
68+
>;
7269
}
7370

74-
public async retrieveVerificationKeys() {
75-
return await this.getArtifacts(true);
71+
public async retrieveVerificationKeys<Contracts extends Record<string, true>>(
72+
contracts: Contracts
73+
) {
74+
return await this.getArtifacts(contracts, true);
7675
}
7776
}

packages/sequencer/src/settlement/BridgingModule.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import {
3636
UInt32,
3737
} from "o1js";
3838
import {
39+
DependencyRecord,
3940
filterNonUndefined,
4041
LinkedMerkleTree,
4142
log,
@@ -65,6 +66,7 @@ import { MinaSigner } from "./MinaSigner";
6566
import { SignedSettlementPermissions } from "./permissions/SignedSettlementPermissions";
6667
import { ProvenSettlementPermissions } from "./permissions/ProvenSettlementPermissions";
6768
import { AddressRegistry } from "./interactions/AddressRegistry";
69+
import { IncomingMessagesService } from "./messages/IncomingMessagesService";
6870

6971
export type SettlementTokenConfig = Record<
7072
string,
@@ -126,6 +128,14 @@ export class BridgingModule extends SequencerModule<BridgingModuleConfig> {
126128
this.utils = new SettlementUtils(baseLayer, signer);
127129
}
128130

131+
public dependencies() {
132+
return {
133+
IncomingMessagesService: {
134+
useClass: IncomingMessagesService,
135+
},
136+
} satisfies DependencyRecord;
137+
}
138+
129139
public getDispatchContract() {
130140
if (this.dispatchContract === undefined) {
131141
const address = this.getDispatchContractAddress();
@@ -685,3 +695,5 @@ export class BridgingModule extends SequencerModule<BridgingModuleConfig> {
685695
}
686696
/* eslint-enable no-await-in-loop */
687697
}
698+
699+
// BridgingModule satisfies DependencyFactory;

packages/sequencer/src/settlement/interactions/bridging/BridgingDeployInteraction.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,10 @@ export class BridgingDeployInteraction implements DeployInteraction {
7171
});
7272

7373
const verificationsKeys =
74-
await this.settlementStartupModule.retrieveVerificationKeys();
74+
await this.settlementStartupModule.retrieveVerificationKeys({
75+
SettlementContract: true,
76+
DispatchSmartContract: true,
77+
});
7578

7679
const utils = new SettlementUtils(this.baseLayer, this.signer);
7780
await utils.fetchContractAccounts(settlementContract, dispatchContract);
@@ -102,7 +105,7 @@ export class BridgingDeployInteraction implements DeployInteraction {
102105
await settlementContract.deployAndInitialize(
103106
{
104107
verificationKey:
105-
verificationsKeys.SettlementSmartContract.verificationKey,
108+
verificationsKeys.SettlementContract.verificationKey,
106109
},
107110
permissions.settlementContract(),
108111
feepayer,

packages/sequencer/src/settlement/interactions/vanilla/VanillaDeployInteraction.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,9 @@ export class VanillaDeployInteraction implements DeployInteraction {
7373
await utils.fetchContractAccounts(settlementContract);
7474

7575
const verificationsKeys =
76-
await this.settlementStartupModule.retrieveVerificationKeys();
76+
await this.settlementStartupModule.retrieveVerificationKeys({
77+
SettlementContract: true,
78+
});
7779

7880
const permissions = this.baseLayer.isSignedSettlement()
7981
? new SignedSettlementPermissions()
@@ -87,12 +89,12 @@ export class VanillaDeployInteraction implements DeployInteraction {
8789
memo: "Protokit settlement deploy",
8890
},
8991
async () => {
90-
AccountUpdate.fundNewAccount(feepayer, 2);
92+
AccountUpdate.fundNewAccount(feepayer, 1);
9193

9294
await settlementContract.deployAndInitialize(
9395
{
9496
verificationKey:
95-
verificationsKeys.SettlementSmartContract.verificationKey,
97+
verificationsKeys.SettlementContract.verificationKey,
9698
},
9799
permissions.settlementContract(),
98100
feepayer,

packages/sequencer/src/settlement/interactions/vanilla/VanillaSettlementInteraction.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { inject } from "tsyringe";
1+
import { inject, injectable } from "tsyringe";
22
import { Field, Mina } from "o1js";
33
import {
44
BATCH_SIGNATURE_PREFIX,
@@ -21,6 +21,7 @@ import { SettleableBatch } from "../../../storage/model/Batch";
2121
import { Settlement } from "../../../storage/model/Settlement";
2222
import { SettleInteraction } from "../SettleInteraction";
2323

24+
@injectable()
2425
export class VanillaSettlementInteraction implements SettleInteraction {
2526
public constructor(
2627
@inject("AddressRegistry")

packages/sequencer/src/settlement/messages/IncomingMessagesService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { SettlementStorage } from "../../storage/repositories/SettlementStorage"
55
import { MessageStorage } from "../../storage/repositories/MessageStorage";
66
import { BlockStorage } from "../../storage/repositories/BlockStorage";
77
import { PendingTransaction } from "../../mempool/PendingTransaction";
8-
import { BridgingModule } from "../BridgingModule";
8+
import type { BridgingModule } from "../BridgingModule";
99

1010
import { IncomingMessageAdapter } from "./IncomingMessageAdapter";
1111

0 commit comments

Comments
 (0)