@proto-kit/protocol 0.1.1-develop.457 → 0.1.1-develop.600
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blockmodules/AccountStateModule.d.ts.map +1 -1
- package/dist/blockmodules/AccountStateModule.js +10 -3
- package/dist/blockmodules/BlockHeightHook.d.ts +3 -3
- package/dist/blockmodules/BlockHeightHook.d.ts.map +1 -1
- package/dist/blockmodules/BlockHeightHook.js +5 -4
- package/dist/blockmodules/LastStateRootBlockHook.d.ts +8 -0
- package/dist/blockmodules/LastStateRootBlockHook.d.ts.map +1 -0
- package/dist/blockmodules/LastStateRootBlockHook.js +15 -0
- package/dist/blockmodules/NoopBlockHook.d.ts +6 -4
- package/dist/blockmodules/NoopBlockHook.d.ts.map +1 -1
- package/dist/blockmodules/NoopBlockHook.js +4 -4
- package/dist/blockmodules/NoopSettlementHook.d.ts +6 -0
- package/dist/blockmodules/NoopSettlementHook.d.ts.map +1 -0
- package/dist/blockmodules/NoopSettlementHook.js +18 -0
- package/dist/hooks/AccountStateHook.d.ts.map +1 -1
- package/dist/hooks/AccountStateHook.js +7 -2
- package/dist/hooks/BlockHeightHook.d.ts.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -3
- package/dist/model/MethodPublicOutput.d.ts +8 -0
- package/dist/model/MethodPublicOutput.d.ts.map +1 -1
- package/dist/model/MethodPublicOutput.js +1 -0
- package/dist/model/network/NetworkState.d.ts +40 -0
- package/dist/model/network/NetworkState.d.ts.map +1 -1
- package/dist/model/network/NetworkState.js +14 -2
- package/dist/model/transaction/RuntimeTransaction.d.ts +45 -20
- package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -1
- package/dist/model/transaction/RuntimeTransaction.js +68 -11
- package/dist/model/transaction/SignedTransaction.d.ts +71 -0
- package/dist/model/transaction/SignedTransaction.d.ts.map +1 -0
- package/dist/model/transaction/SignedTransaction.js +33 -0
- package/dist/model/transaction/ValueOption.d.ts +119 -0
- package/dist/model/transaction/ValueOption.d.ts.map +1 -0
- package/dist/model/transaction/ValueOption.js +24 -0
- package/dist/protocol/Protocol.d.ts +7 -3
- package/dist/protocol/Protocol.d.ts.map +1 -1
- package/dist/protocol/Protocol.js +26 -16
- package/dist/protocol/ProvableBlockHook.d.ts +2 -10
- package/dist/protocol/ProvableBlockHook.d.ts.map +1 -1
- package/dist/protocol/ProvableBlockHook.js +1 -1
- package/dist/protocol/ProvableTransactionHook.d.ts +1 -1
- package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -1
- package/dist/protocol/TransitioningProtocolModule.d.ts +3 -2
- package/dist/protocol/TransitioningProtocolModule.d.ts.map +1 -1
- package/dist/protocol/TransitioningProtocolModule.js +3 -2
- package/dist/prover/block/BlockProvable.d.ts +106 -28
- package/dist/prover/block/BlockProvable.d.ts.map +1 -1
- package/dist/prover/block/BlockProvable.js +23 -5
- package/dist/prover/block/BlockProver.d.ts +29 -8
- package/dist/prover/block/BlockProver.d.ts.map +1 -1
- package/dist/prover/block/BlockProver.js +241 -77
- package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts +45 -0
- package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts.map +1 -0
- package/dist/prover/block/accummulators/BlockHashMerkleTree.js +16 -0
- package/dist/settlement/ProvableSettlementHook.d.ts +26 -0
- package/dist/settlement/ProvableSettlementHook.d.ts.map +1 -0
- package/dist/settlement/ProvableSettlementHook.js +3 -0
- package/dist/settlement/SettlementContract.d.ts +230 -0
- package/dist/settlement/SettlementContract.d.ts.map +1 -0
- package/dist/settlement/SettlementContract.js +346 -0
- package/dist/settlement/modules/NetworkStateSettlementModule.d.ts +11 -0
- package/dist/settlement/modules/NetworkStateSettlementModule.d.ts.map +1 -0
- package/dist/settlement/modules/NetworkStateSettlementModule.js +12 -0
- package/dist/state/context/RuntimeMethodExecutionContext.d.ts +75 -1
- package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -1
- package/dist/state/context/RuntimeMethodExecutionContext.js +19 -1
- package/dist/utils/MinaPrefixedProvableHashList.d.ts +24 -0
- package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -0
- package/dist/utils/MinaPrefixedProvableHashList.js +51 -0
- package/package.json +2 -2
- package/src/blockmodules/AccountStateModule.ts +17 -6
- package/src/blockmodules/BlockHeightHook.ts +5 -8
- package/src/blockmodules/LastStateRootBlockHook.ts +26 -0
- package/src/blockmodules/NoopBlockHook.ts +15 -11
- package/src/blockmodules/NoopSettlementHook.ts +21 -0
- package/src/blockmodules/SequenceStateTransactionModule.ts +25 -0
- package/src/index.ts +9 -3
- package/src/model/MethodPublicOutput.ts +3 -2
- package/src/model/network/NetworkState.ts +15 -3
- package/src/model/transaction/RuntimeTransaction.ts +90 -16
- package/src/model/transaction/SignedTransaction.ts +54 -0
- package/src/model/transaction/ValueOption.ts +28 -0
- package/src/protocol/Protocol.ts +49 -31
- package/src/protocol/ProvableBlockHook.ts +10 -13
- package/src/protocol/ProvableTransactionHook.ts +2 -1
- package/src/protocol/TransitioningProtocolModule.ts +3 -2
- package/src/prover/block/BlockProvable.ts +39 -6
- package/src/prover/block/BlockProver.ts +473 -143
- package/src/prover/block/accummulators/BlockHashMerkleTree.ts +16 -0
- package/src/settlement/ProvableSettlementHook.ts +37 -0
- package/src/settlement/SettlementContract.ts +444 -0
- package/src/settlement/modules/NetworkStateSettlementModule.ts +39 -0
- package/src/state/context/RuntimeMethodExecutionContext.ts +18 -1
- package/src/utils/MinaPrefixedProvableHashList.ts +72 -0
- package/test/BlockProver.test.ts +2 -3
- package/src/model/transaction/ProtocolTransaction.ts +0 -25
- package/src/prover/block/BlockTransactionPosition.ts +0 -34
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Bool,
|
|
3
|
+
Field,
|
|
4
|
+
Scalar,
|
|
5
|
+
Signature,
|
|
6
|
+
Struct,
|
|
7
|
+
UInt64,
|
|
8
|
+
} from "o1js";
|
|
9
|
+
|
|
10
|
+
import { RuntimeTransaction } from "./RuntimeTransaction";
|
|
11
|
+
|
|
12
|
+
export class SignedTransaction extends Struct({
|
|
13
|
+
transaction: RuntimeTransaction,
|
|
14
|
+
signature: Signature,
|
|
15
|
+
}) {
|
|
16
|
+
public static getSignatureData(args: {
|
|
17
|
+
methodId: Field;
|
|
18
|
+
nonce: UInt64;
|
|
19
|
+
argsHash: Field;
|
|
20
|
+
}): Field[] {
|
|
21
|
+
return [args.methodId, ...args.nonce.value.toFields(), args.argsHash];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public static dummy(): SignedTransaction {
|
|
25
|
+
return new SignedTransaction({
|
|
26
|
+
transaction: RuntimeTransaction.dummyTransaction(),
|
|
27
|
+
|
|
28
|
+
signature: Signature.fromObject({
|
|
29
|
+
s: Scalar.from(0),
|
|
30
|
+
r: Field(0),
|
|
31
|
+
}),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
public hash(): Field {
|
|
36
|
+
return this.transaction.hash();
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public getSignatureData(): Field[] {
|
|
40
|
+
const { methodId, argsHash, nonce } = this.transaction;
|
|
41
|
+
return SignedTransaction.getSignatureData({
|
|
42
|
+
nonce: nonce.value,
|
|
43
|
+
methodId,
|
|
44
|
+
argsHash,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public validateSignature(): Bool {
|
|
49
|
+
return this.signature.verify(
|
|
50
|
+
this.transaction.sender.value,
|
|
51
|
+
this.getSignatureData()
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Bool, ProvableExtended, PublicKey, Struct, UInt64 } from "o1js";
|
|
2
|
+
|
|
3
|
+
function genericOptionFactory<Type>(valueType: ProvableExtended<Type>) {
|
|
4
|
+
return class Generic extends Struct({
|
|
5
|
+
isSome: Bool,
|
|
6
|
+
value: valueType,
|
|
7
|
+
}) {
|
|
8
|
+
public static fromValue(value: Type) {
|
|
9
|
+
return new Generic({
|
|
10
|
+
isSome: Bool(true),
|
|
11
|
+
value,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
public static none(value: Type) {
|
|
16
|
+
return new Generic({
|
|
17
|
+
isSome: Bool(false),
|
|
18
|
+
value,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export class UInt64Option extends genericOptionFactory<UInt64>(UInt64) {}
|
|
25
|
+
|
|
26
|
+
export class PublicKeyOption extends genericOptionFactory<PublicKey>(
|
|
27
|
+
PublicKey
|
|
28
|
+
) {}
|
package/src/protocol/Protocol.ts
CHANGED
|
@@ -25,10 +25,14 @@ import { AccountStateModule } from "../blockmodules/AccountStateModule";
|
|
|
25
25
|
import { ProvableBlockHook } from "./ProvableBlockHook";
|
|
26
26
|
import { NoopBlockHook } from "../blockmodules/NoopBlockHook";
|
|
27
27
|
import { BlockHeightHook } from "../blockmodules/BlockHeightHook";
|
|
28
|
+
import { LastStateRootBlockHook } from "../blockmodules/LastStateRootBlockHook";
|
|
29
|
+
import { ProvableSettlementHook } from "../settlement/ProvableSettlementHook";
|
|
30
|
+
import { NoopSettlementHook } from "../blockmodules/NoopSettlementHook";
|
|
28
31
|
|
|
29
|
-
const PROTOCOL_INJECTION_TOKENS = {
|
|
32
|
+
const PROTOCOL_INJECTION_TOKENS: Record<string, string> = {
|
|
30
33
|
ProvableTransactionHook: "ProvableTransactionHook",
|
|
31
34
|
ProvableBlockHook: "ProvableBlockHook",
|
|
35
|
+
ProvableSettlementHook: "ProvableSettlementHook",
|
|
32
36
|
};
|
|
33
37
|
|
|
34
38
|
export type GenericProtocolModuleRecord = ModulesRecord<
|
|
@@ -41,10 +45,13 @@ interface StateTransitionProverType
|
|
|
41
45
|
extends ProtocolModule,
|
|
42
46
|
StateTransitionProvable {}
|
|
43
47
|
|
|
44
|
-
export interface ProtocolCustomModulesRecord
|
|
48
|
+
export interface ProtocolCustomModulesRecord
|
|
49
|
+
extends GenericProtocolModuleRecord {
|
|
45
50
|
BlockProver: TypedClass<BlockProverType>;
|
|
46
51
|
StateTransitionProver: TypedClass<StateTransitionProverType>;
|
|
47
52
|
AccountState: TypedClass<AccountStateModule>;
|
|
53
|
+
BlockHeight: TypedClass<BlockHeightHook>;
|
|
54
|
+
LastStateRoot: TypedClass<LastStateRootBlockHook>;
|
|
48
55
|
}
|
|
49
56
|
|
|
50
57
|
export interface ProtocolModulesRecord
|
|
@@ -133,42 +140,52 @@ export class Protocol<Modules extends ProtocolModulesRecord>
|
|
|
133
140
|
|
|
134
141
|
// Register the BlockModules seperately since we need to
|
|
135
142
|
// inject them differently later
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
143
|
+
const ABSTRACT_MODULE_TYPES = [
|
|
144
|
+
{ type: ProvableTransactionHook, defaultType: NoopTransactionHook },
|
|
145
|
+
{ type: ProvableBlockHook, defaultType: NoopBlockHook },
|
|
146
|
+
{ type: ProvableSettlementHook, defaultType: NoopSettlementHook },
|
|
147
|
+
] as const;
|
|
148
|
+
|
|
149
|
+
ABSTRACT_MODULE_TYPES.forEach((moduleTypeRegistration) => {
|
|
150
|
+
const abstractType = moduleTypeRegistration.type;
|
|
151
|
+
|
|
152
|
+
const implementingModules = Object.entries(
|
|
153
|
+
this.definition.modules
|
|
154
|
+
).filter(([, value]) =>
|
|
155
|
+
Object.prototype.isPrototypeOf.call(abstractType, value)
|
|
156
|
+
);
|
|
157
|
+
|
|
158
|
+
const newInjectionToken: string | undefined =
|
|
159
|
+
PROTOCOL_INJECTION_TOKENS[abstractType.name];
|
|
160
|
+
|
|
161
|
+
if (newInjectionToken === undefined) {
|
|
162
|
+
log.error(
|
|
163
|
+
"Can't inject hook under the underlying hook token: Alias not found in mapping"
|
|
164
|
+
);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
implementingModules.forEach(([key]) => {
|
|
140
169
|
this.container.register(
|
|
141
|
-
|
|
170
|
+
abstractType.name,
|
|
142
171
|
{ useToken: key },
|
|
143
172
|
{ lifecycle: Lifecycle.ContainerScoped }
|
|
144
173
|
);
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
174
|
+
});
|
|
175
|
+
if (implementingModules.length === 0) {
|
|
176
|
+
// This type annotation shouldn't change anything but is necessary
|
|
177
|
+
// bcs tsyringe complains
|
|
178
|
+
const { defaultType }: { defaultType: TypedClass<unknown> } =
|
|
179
|
+
moduleTypeRegistration;
|
|
180
|
+
|
|
181
|
+
// Register default (noop) version
|
|
148
182
|
this.container.register(
|
|
149
|
-
|
|
150
|
-
{
|
|
183
|
+
abstractType.name,
|
|
184
|
+
{ useClass: defaultType },
|
|
151
185
|
{ lifecycle: Lifecycle.ContainerScoped }
|
|
152
186
|
);
|
|
153
|
-
atLeastOneBlockHookRegistered = true;
|
|
154
187
|
}
|
|
155
188
|
});
|
|
156
|
-
|
|
157
|
-
// We need this so that tsyringe doesn't throw when no hooks are registered
|
|
158
|
-
if (!atLeastOneTransactionHookRegistered) {
|
|
159
|
-
this.container.register(
|
|
160
|
-
PROTOCOL_INJECTION_TOKENS.ProvableTransactionHook,
|
|
161
|
-
{ useClass: NoopTransactionHook },
|
|
162
|
-
{ lifecycle: Lifecycle.ContainerScoped }
|
|
163
|
-
);
|
|
164
|
-
}
|
|
165
|
-
if (!atLeastOneBlockHookRegistered) {
|
|
166
|
-
this.container.register(
|
|
167
|
-
PROTOCOL_INJECTION_TOKENS.ProvableBlockHook,
|
|
168
|
-
{ useClass: NoopBlockHook },
|
|
169
|
-
{ lifecycle: Lifecycle.ContainerScoped }
|
|
170
|
-
);
|
|
171
|
-
}
|
|
172
189
|
}
|
|
173
190
|
}
|
|
174
191
|
|
|
@@ -179,13 +196,14 @@ export const VanillaProtocol = {
|
|
|
179
196
|
|
|
180
197
|
from<AdditonalModules extends GenericProtocolModuleRecord>(
|
|
181
198
|
additionalModules: AdditonalModules
|
|
182
|
-
): TypedClass<Protocol<
|
|
183
|
-
return Protocol.from<
|
|
199
|
+
): TypedClass<Protocol<ProtocolCustomModulesRecord & AdditonalModules>> {
|
|
200
|
+
return Protocol.from<ProtocolCustomModulesRecord & AdditonalModules>({
|
|
184
201
|
modules: {
|
|
185
202
|
StateTransitionProver,
|
|
186
203
|
BlockProver,
|
|
187
204
|
AccountState: AccountStateModule,
|
|
188
205
|
BlockHeight: BlockHeightHook,
|
|
206
|
+
LastStateRoot: LastStateRootBlockHook,
|
|
189
207
|
...additionalModules,
|
|
190
208
|
},
|
|
191
209
|
});
|
|
@@ -3,20 +3,17 @@ import { NetworkState } from "../model/network/NetworkState";
|
|
|
3
3
|
|
|
4
4
|
import { TransitioningProtocolModule } from "./TransitioningProtocolModule";
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
state: BlockProverState;
|
|
8
|
-
networkState: NetworkState;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export interface AfterBlockParameters {
|
|
12
|
-
state: BlockProverState;
|
|
13
|
-
networkState: NetworkState;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
// Purpose is to validate transition from -> to network state
|
|
6
|
+
// Purpose is to build transition from -> to network state
|
|
17
7
|
export abstract class ProvableBlockHook<
|
|
18
8
|
Config
|
|
19
9
|
> extends TransitioningProtocolModule<Config> {
|
|
20
|
-
public abstract beforeBlock(
|
|
21
|
-
|
|
10
|
+
public abstract beforeBlock(
|
|
11
|
+
networkState: NetworkState,
|
|
12
|
+
state: BlockProverState
|
|
13
|
+
): NetworkState;
|
|
14
|
+
|
|
15
|
+
public abstract afterBlock(
|
|
16
|
+
networkState: NetworkState,
|
|
17
|
+
state: BlockProverState
|
|
18
|
+
): NetworkState;
|
|
22
19
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { NoConfig } from "@proto-kit/common";
|
|
2
|
+
|
|
1
3
|
import { BlockProverExecutionData } from "../prover/block/BlockProvable";
|
|
2
4
|
|
|
3
5
|
import { TransitioningProtocolModule } from "./TransitioningProtocolModule";
|
|
4
|
-
import { NoConfig } from "@proto-kit/common";
|
|
5
6
|
|
|
6
7
|
export abstract class ProvableTransactionHook<
|
|
7
8
|
Config = NoConfig
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ProtocolModule } from "./ProtocolModule";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* TransitioningProtocolModule is a base interface that allows inheriting
|
|
5
|
+
* classes to use State and StateMap since it requires the implementation
|
|
6
|
+
* of a `name: string` property, which those classes need to function.
|
|
6
7
|
*/
|
|
7
8
|
export abstract class TransitioningProtocolModule<
|
|
8
9
|
Config
|
|
@@ -1,23 +1,48 @@
|
|
|
1
|
-
import { Bool, Field, Proof, Struct } from "o1js";
|
|
1
|
+
import { Bool, Field, Proof, Signature, Struct } from "o1js";
|
|
2
2
|
import { WithZkProgrammable } from "@proto-kit/common";
|
|
3
3
|
|
|
4
4
|
import { StateTransitionProof } from "../statetransition/StateTransitionProvable";
|
|
5
5
|
import { MethodPublicOutput } from "../../model/MethodPublicOutput";
|
|
6
|
-
import {
|
|
6
|
+
import { RuntimeTransaction } from "../../model/transaction/RuntimeTransaction";
|
|
7
7
|
import { NetworkState } from "../../model/network/NetworkState";
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
import { BlockHashMerkleTreeWitness } from "./accummulators/BlockHashMerkleTree";
|
|
9
10
|
|
|
10
11
|
export class BlockProverPublicInput extends Struct({
|
|
11
12
|
transactionsHash: Field,
|
|
12
13
|
stateRoot: Field,
|
|
13
14
|
networkStateHash: Field,
|
|
15
|
+
blockHashRoot: Field,
|
|
16
|
+
eternalTransactionsHash: Field,
|
|
17
|
+
incomingMessagesHash: Field,
|
|
14
18
|
}) {}
|
|
15
19
|
|
|
16
20
|
export class BlockProverPublicOutput extends Struct({
|
|
17
21
|
transactionsHash: Field,
|
|
18
22
|
stateRoot: Field,
|
|
19
23
|
networkStateHash: Field,
|
|
20
|
-
|
|
24
|
+
blockHashRoot: Field,
|
|
25
|
+
eternalTransactionsHash: Field,
|
|
26
|
+
incomingMessagesHash: Field,
|
|
27
|
+
closed: Bool,
|
|
28
|
+
blockNumber: Field,
|
|
29
|
+
}) {
|
|
30
|
+
public equals(
|
|
31
|
+
input: BlockProverPublicInput,
|
|
32
|
+
closed: Bool,
|
|
33
|
+
blockNumber: Field
|
|
34
|
+
): Bool {
|
|
35
|
+
const output2 = BlockProverPublicOutput.toFields({
|
|
36
|
+
...input,
|
|
37
|
+
closed,
|
|
38
|
+
blockNumber,
|
|
39
|
+
});
|
|
40
|
+
const output1 = BlockProverPublicOutput.toFields(this);
|
|
41
|
+
return output1
|
|
42
|
+
.map((value1, index) => value1.equals(output2[index]))
|
|
43
|
+
.reduce((a, b) => a.and(b));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
21
46
|
|
|
22
47
|
export type BlockProverProof = Proof<
|
|
23
48
|
BlockProverPublicInput,
|
|
@@ -25,9 +50,9 @@ export type BlockProverProof = Proof<
|
|
|
25
50
|
>;
|
|
26
51
|
|
|
27
52
|
export class BlockProverExecutionData extends Struct({
|
|
28
|
-
transaction:
|
|
53
|
+
transaction: RuntimeTransaction,
|
|
54
|
+
signature: Signature,
|
|
29
55
|
networkState: NetworkState,
|
|
30
|
-
transactionPosition: BlockTransactionPosition,
|
|
31
56
|
}) {}
|
|
32
57
|
|
|
33
58
|
export interface BlockProvable
|
|
@@ -39,6 +64,14 @@ export interface BlockProvable
|
|
|
39
64
|
executionData: BlockProverExecutionData
|
|
40
65
|
) => BlockProverPublicOutput;
|
|
41
66
|
|
|
67
|
+
proveBlock: (
|
|
68
|
+
publicInput: BlockProverPublicInput,
|
|
69
|
+
networkState: NetworkState,
|
|
70
|
+
blockWitness: BlockHashMerkleTreeWitness,
|
|
71
|
+
stateTransitionProof: StateTransitionProof,
|
|
72
|
+
transactionProof: BlockProverProof
|
|
73
|
+
) => BlockProverPublicOutput;
|
|
74
|
+
|
|
42
75
|
merge: (
|
|
43
76
|
publicInput: BlockProverPublicInput,
|
|
44
77
|
proof1: BlockProverProof,
|