@proto-kit/protocol 0.1.1-develop.651 → 0.1.1-develop.833
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/LICENSE.md +201 -201
- package/dist/blockmodules/AccountStateModule.d.ts +37 -37
- package/dist/blockmodules/AccountStateModule.js +43 -43
- package/dist/blockmodules/BlockHeightHook.d.ts +6 -6
- package/dist/blockmodules/BlockHeightHook.js +15 -15
- package/dist/blockmodules/LastStateRootBlockHook.d.ts +7 -7
- package/dist/blockmodules/LastStateRootBlockHook.js +15 -15
- package/dist/blockmodules/NoopBlockHook.d.ts +8 -8
- package/dist/blockmodules/NoopBlockHook.js +9 -9
- package/dist/blockmodules/NoopSettlementHook.d.ts +5 -5
- package/dist/blockmodules/NoopSettlementHook.d.ts.map +1 -1
- package/dist/blockmodules/NoopSettlementHook.js +18 -18
- package/dist/blockmodules/NoopTransactionHook.d.ts +5 -5
- package/dist/blockmodules/NoopTransactionHook.js +4 -4
- package/dist/hooks/AccountStateHook.d.ts +19 -5
- package/dist/hooks/AccountStateHook.d.ts.map +1 -1
- package/dist/hooks/AccountStateHook.js +9 -10
- package/dist/hooks/BlockHeightHook.d.ts +2 -2
- package/dist/hooks/BlockHeightHook.d.ts.map +1 -1
- package/dist/hooks/BlockHeightHook.js +3 -3
- package/dist/hooks/LastStateRootBlockHook.d.ts +2 -2
- package/dist/hooks/LastStateRootBlockHook.d.ts.map +1 -1
- package/dist/hooks/LastStateRootBlockHook.js +2 -2
- package/dist/hooks/NoopBlockHook.d.ts +3 -3
- package/dist/hooks/NoopBlockHook.d.ts.map +1 -1
- package/dist/hooks/NoopBlockHook.js +2 -2
- package/dist/hooks/NoopSettlementHook.d.ts +1 -1
- package/dist/hooks/NoopSettlementHook.d.ts.map +1 -1
- package/dist/hooks/NoopSettlementHook.js +2 -3
- package/dist/hooks/NoopTransactionHook.d.ts +1 -1
- package/dist/hooks/NoopTransactionHook.d.ts.map +1 -1
- package/dist/hooks/NoopTransactionHook.js +4 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/model/MethodPublicOutput.d.ts +68 -34
- package/dist/model/MethodPublicOutput.d.ts.map +1 -1
- package/dist/model/Option.d.ts +39 -20
- package/dist/model/Option.d.ts.map +1 -1
- package/dist/model/Option.js +1 -0
- package/dist/model/Path.d.ts +1 -1
- package/dist/model/Path.d.ts.map +1 -1
- package/dist/model/Path.js +0 -2
- package/dist/model/StateTransition.d.ts +48 -12
- package/dist/model/StateTransition.d.ts.map +1 -1
- package/dist/model/StateTransitionProvableBatch.d.ts +71 -14
- package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -1
- package/dist/model/StateTransitionReduction.d.ts +2 -2
- package/dist/model/StateTransitionReduction.js +26 -26
- package/dist/model/network/NetworkState.d.ts +73 -18
- package/dist/model/network/NetworkState.d.ts.map +1 -1
- package/dist/model/network/NetworkState.js +2 -2
- package/dist/model/transaction/ProtocolTransaction.d.ts +69 -69
- package/dist/model/transaction/ProtocolTransaction.js +18 -18
- package/dist/model/transaction/RuntimeTransaction.d.ts +50 -16
- package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -1
- package/dist/model/transaction/RuntimeTransaction.js +4 -4
- package/dist/model/transaction/SignedTransaction.d.ts +39 -3
- package/dist/model/transaction/SignedTransaction.d.ts.map +1 -1
- package/dist/model/transaction/SignedTransaction.js +1 -1
- package/dist/model/transaction/ValueOption.d.ts +86 -32
- package/dist/model/transaction/ValueOption.d.ts.map +1 -1
- package/dist/model/transaction/ValueOption.js +1 -1
- package/dist/protocol/Protocol.d.ts +6 -5
- package/dist/protocol/Protocol.d.ts.map +1 -1
- package/dist/protocol/Protocol.js +12 -3
- package/dist/protocol/ProtocolEnvironment.d.ts +3 -3
- package/dist/protocol/ProtocolEnvironment.d.ts.map +1 -1
- package/dist/protocol/ProtocolModule.d.ts +1 -0
- package/dist/protocol/ProtocolModule.d.ts.map +1 -1
- package/dist/protocol/ProtocolModule.js +3 -1
- package/dist/protocol/ProvableBlockHook.d.ts +2 -2
- package/dist/protocol/ProvableBlockHook.d.ts.map +1 -1
- package/dist/protocol/ProvableTransactionHook.d.ts +1 -1
- package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -1
- package/dist/prover/block/BlockProvable.d.ts +240 -98
- package/dist/prover/block/BlockProvable.d.ts.map +1 -1
- package/dist/prover/block/BlockProver.d.ts +8 -8
- package/dist/prover/block/BlockProver.d.ts.map +1 -1
- package/dist/prover/block/BlockProver.js +48 -40
- package/dist/prover/block/BlockTransactionPosition.d.ts +35 -35
- package/dist/prover/block/BlockTransactionPosition.js +25 -25
- package/dist/prover/block/BundleTransactionPosition.d.ts +36 -0
- package/dist/prover/block/BundleTransactionPosition.d.ts.map +1 -0
- package/dist/prover/block/BundleTransactionPosition.js +25 -0
- package/dist/prover/block/SplitPrefilledStateService.d.ts +11 -0
- package/dist/prover/block/SplitPrefilledStateService.d.ts.map +1 -0
- package/dist/prover/block/SplitPrefilledStateService.js +1 -0
- package/dist/prover/block/SplitStateService.d.ts +11 -0
- package/dist/prover/block/SplitStateService.d.ts.map +1 -0
- package/dist/prover/block/SplitStateService.js +1 -0
- package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts +35 -16
- package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts.map +1 -1
- package/dist/prover/block/acummulators/BlockHashMerkleTree.d.ts +45 -0
- package/dist/prover/block/acummulators/BlockHashMerkleTree.d.ts.map +1 -0
- package/dist/prover/block/acummulators/BlockHashMerkleTree.js +16 -0
- package/dist/prover/statetransition/StateTransitionProvable.d.ts +116 -58
- package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -1
- package/dist/prover/statetransition/StateTransitionProver.d.ts +8 -8
- package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
- package/dist/prover/statetransition/StateTransitionProver.js +17 -22
- package/dist/prover/statetransition/StateTransitionWitnessProvider.js +1 -2
- package/dist/prover/statetransition/StateTransitionWitnessProviderReference.js +1 -2
- package/dist/settlement/DispatchContract.d.ts +20 -0
- package/dist/settlement/DispatchContract.d.ts.map +1 -0
- package/dist/settlement/DispatchContract.js +112 -0
- package/dist/settlement/OutgoingMessageArgument.d.ts +109 -0
- package/dist/settlement/OutgoingMessageArgument.d.ts.map +1 -0
- package/dist/settlement/OutgoingMessageArgument.js +32 -0
- package/dist/settlement/ProvableSettlementHook.d.ts +25 -25
- package/dist/settlement/ProvableSettlementHook.js +3 -3
- package/dist/settlement/SettlementContract.d.ts +229 -229
- package/dist/settlement/SettlementContract.js +346 -346
- package/dist/settlement/SettlementContractModule.d.ts +1 -0
- package/dist/settlement/SettlementContractModule.d.ts.map +1 -1
- package/dist/settlement/SettlementContractModule.js +7 -4
- package/dist/settlement/contracts/DispatchContract.d.ts +21 -0
- package/dist/settlement/contracts/DispatchContract.d.ts.map +1 -0
- package/dist/settlement/contracts/DispatchContract.js +111 -0
- package/dist/settlement/contracts/DispatchContractProtocolModule.js +1 -2
- package/dist/settlement/contracts/DispatchSmartContract.d.ts +8 -8
- package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -1
- package/dist/settlement/contracts/DispatchSmartContract.js +14 -14
- package/dist/settlement/contracts/SettlementContract.d.ts +19 -0
- package/dist/settlement/contracts/SettlementContract.d.ts.map +1 -0
- package/dist/settlement/contracts/SettlementContract.js +43 -0
- package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts.map +1 -1
- package/dist/settlement/contracts/SettlementContractProtocolModule.js +4 -4
- package/dist/settlement/contracts/SettlementSmartContract.d.ts +18 -17
- package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -1
- package/dist/settlement/contracts/SettlementSmartContract.js +46 -35
- package/dist/settlement/messages/Deposit.d.ts +29 -4
- package/dist/settlement/messages/Deposit.d.ts.map +1 -1
- package/dist/settlement/messages/OutgoingMessageArgument.d.ts +94 -14
- package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -1
- package/dist/settlement/messages/Withdrawal.d.ts +29 -4
- package/dist/settlement/messages/Withdrawal.d.ts.map +1 -1
- package/dist/settlement/modularity/ProvableSettlementHook.d.ts +2 -2
- package/dist/settlement/modularity/ProvableSettlementHook.d.ts.map +1 -1
- package/dist/settlement/modules/NetworkStateSettlementModule.d.ts +1 -1
- package/dist/settlement/modules/NetworkStateSettlementModule.d.ts.map +1 -1
- package/dist/settlement/modules/NetworkStateSettlementModule.js +3 -1
- package/dist/state/State.d.ts +4 -3
- package/dist/state/State.d.ts.map +1 -1
- package/dist/state/State.js +16 -11
- package/dist/state/StateMap.d.ts +3 -3
- package/dist/state/StateMap.d.ts.map +1 -1
- package/dist/state/StateMap.js +4 -5
- package/dist/state/StateService.d.ts +3 -3
- package/dist/state/StateService.d.ts.map +1 -1
- package/dist/state/StateServiceProvider.d.ts +3 -3
- package/dist/state/StateServiceProvider.d.ts.map +1 -1
- package/dist/state/StateServiceProvider.js +1 -3
- package/dist/state/assert/assert.d.ts +1 -1
- package/dist/state/assert/assert.d.ts.map +1 -1
- package/dist/state/assert/assert.js +4 -1
- package/dist/state/context/ProtocolMethodExecutionContext.d.ts +1 -1
- package/dist/state/context/ProtocolMethodExecutionContext.d.ts.map +1 -1
- package/dist/state/context/ProtocolMethodExecutionContext.js +1 -1
- package/dist/state/context/RuntimeMethodExecutionContext.d.ts +54 -3
- package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -1
- package/dist/state/context/RuntimeMethodExecutionContext.js +4 -5
- package/dist/state/context/TransitionMethodExecutionContext.d.ts.map +1 -1
- package/dist/state/context/TransitionMethodExecutionContext.js +0 -1
- package/dist/state/context/contextExecution.d.ts +14 -0
- package/dist/state/context/contextExecution.d.ts.map +1 -0
- package/dist/state/context/contextExecution.js +30 -0
- package/dist/state/protocol/ProtocolState.d.ts.map +1 -1
- package/dist/state/protocol/ProtocolState.js +0 -3
- package/dist/utils/AppliedBatchHashList.d.ts +17 -0
- package/dist/utils/AppliedBatchHashList.d.ts.map +1 -0
- package/dist/utils/AppliedBatchHashList.js +24 -0
- package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -1
- package/dist/utils/MinaPrefixedProvableHashList.js +1 -0
- package/dist/utils/ProvableHashList.d.ts +1 -1
- package/dist/utils/StateTransitionReductionList.d.ts +1 -1
- package/dist/utils/StateTransitionReductionList.d.ts.map +1 -1
- package/dist/utils/StateTransitionReductionList.js +3 -3
- package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts +11 -0
- package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts.map +1 -0
- package/dist/utils/merkletree/InMemoryMerkleTreeStorage.js +12 -0
- package/dist/utils/merkletree/MerkleTreeStore.d.ts +5 -0
- package/dist/utils/merkletree/MerkleTreeStore.d.ts.map +1 -0
- package/dist/utils/merkletree/MerkleTreeStore.js +1 -0
- package/dist/utils/merkletree/RollupMerkleTree.d.ts +133 -0
- package/dist/utils/merkletree/RollupMerkleTree.d.ts.map +1 -0
- package/dist/utils/merkletree/RollupMerkleTree.js +255 -0
- package/dist/utils/utils.d.ts +1 -1
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +5 -10
- package/package.json +5 -5
- package/src/hooks/AccountStateHook.ts +11 -9
- package/src/hooks/BlockHeightHook.ts +3 -4
- package/src/hooks/LastStateRootBlockHook.ts +4 -4
- package/src/hooks/NoopBlockHook.ts +6 -5
- package/src/hooks/NoopSettlementHook.ts +2 -2
- package/src/hooks/NoopTransactionHook.ts +5 -1
- package/src/index.ts +0 -2
- package/src/model/MethodPublicOutput.ts +2 -2
- package/src/model/Option.ts +5 -1
- package/src/model/Path.ts +1 -3
- package/src/model/StateTransition.ts +1 -1
- package/src/model/Transaction.ts +2 -0
- package/src/model/network/NetworkState.ts +2 -2
- package/src/model/transaction/RuntimeTransaction.ts +5 -12
- package/src/model/transaction/SignedTransaction.ts +1 -8
- package/src/model/transaction/ValueOption.ts +1 -1
- package/src/protocol/Protocol.ts +24 -13
- package/src/protocol/ProtocolEnvironment.ts +7 -6
- package/src/protocol/ProtocolModule.ts +5 -2
- package/src/protocol/ProvableBlockHook.ts +3 -3
- package/src/protocol/ProvableTransactionHook.ts +4 -2
- package/src/protocol/TransitioningProtocolModule.ts +1 -1
- package/src/prover/block/BlockProvable.ts +3 -3
- package/src/prover/block/BlockProver.ts +78 -55
- package/src/prover/block/accummulators/BlockHashMerkleTree.ts +1 -1
- package/src/prover/statetransition/StateTransitionProvable.ts +3 -3
- package/src/prover/statetransition/StateTransitionProver.ts +23 -27
- package/src/settlement/ContractModule.ts +1 -1
- package/src/settlement/SettlementContractModule.ts +14 -9
- package/src/settlement/contracts/DispatchSmartContract.ts +15 -14
- package/src/settlement/contracts/SettlementContractProtocolModule.ts +6 -4
- package/src/settlement/contracts/SettlementSmartContract.ts +55 -34
- package/src/settlement/messages/OutgoingMessageArgument.ts +1 -0
- package/src/settlement/modularity/ProvableSettlementHook.ts +3 -4
- package/src/settlement/modules/NetworkStateSettlementModule.ts +5 -2
- package/src/state/State.ts +19 -12
- package/src/state/StateMap.ts +4 -5
- package/src/state/StateService.ts +3 -3
- package/src/state/StateServiceProvider.ts +6 -7
- package/src/state/assert/assert.ts +6 -2
- package/src/state/context/RuntimeMethodExecutionContext.ts +5 -2
- package/src/state/context/TransitionMethodExecutionContext.ts +0 -1
- package/src/state/protocol/ProtocolState.ts +1 -4
- package/src/utils/MinaPrefixedProvableHashList.ts +2 -1
- package/src/utils/ProvableHashList.ts +1 -1
- package/src/utils/StateTransitionReductionList.ts +4 -3
- package/src/utils/utils.ts +4 -9
- package/test/BlockProver.test.ts +110 -128
- package/test/Protocol.test.ts +8 -20
- package/test/State.test.ts +8 -8
- package/test/StateTransition.test.ts +56 -66
- package/test/TestingProtocol.ts +48 -0
- package/test/model/Option.test.ts +72 -0
- package/{src → test}/state/assert/assert.test.ts +4 -4
- package/test/tsconfig.json +7 -0
- package/test/utils/ProvableReductionHashList.test.ts +5 -2
- package/test/utils.test.ts +0 -3
- package/dist/hooks/TransactionFeeHook.d.ts +0 -16
- package/dist/hooks/TransactionFeeHook.d.ts.map +0 -1
- package/dist/hooks/TransactionFeeHook.js +0 -39
- package/src/hooks/SequenceStateTransactionModule.ts +0 -25
- package/src/model/Option.test.ts +0 -21
- package/src/state/context/ProtocolMethodExecutionContext.ts +0 -36
- package/test/Option.test.ts +0 -64
- package/test/settlement/SettlementContract.test.ts +0 -45
- package/tsconfig.test.json +0 -9
package/src/model/Option.ts
CHANGED
|
@@ -19,7 +19,10 @@ export class ProvableOption extends Struct({
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export abstract class OptionBase {
|
|
22
|
-
protected constructor(
|
|
22
|
+
protected constructor(
|
|
23
|
+
public isSome: Bool,
|
|
24
|
+
public isForcedSome: Bool
|
|
25
|
+
) {}
|
|
23
26
|
|
|
24
27
|
protected abstract encodeValueToFields(): Field[];
|
|
25
28
|
|
|
@@ -152,6 +155,7 @@ export class Option<Value> extends OptionBase {
|
|
|
152
155
|
}
|
|
153
156
|
|
|
154
157
|
public toConstant() {
|
|
158
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
155
159
|
const valueConstant = (this.valueType as ProvablePure<Value>).fromFields(
|
|
156
160
|
this.valueType.toFields(this.value).map((field) => field.toConstant())
|
|
157
161
|
);
|
package/src/model/Path.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
/* eslint-disable @shopify/no-fully-static-classes */
|
|
3
|
-
import { Field, type FlexibleProvablePure, Poseidon, Provable } from "o1js";
|
|
1
|
+
import { Field, type FlexibleProvablePure, Poseidon } from "o1js";
|
|
4
2
|
|
|
5
3
|
import { stringToField } from "../utils/utils";
|
|
6
4
|
|
package/src/model/Transaction.ts
CHANGED
|
@@ -8,11 +8,13 @@ import {
|
|
|
8
8
|
UInt64,
|
|
9
9
|
} from "o1js";
|
|
10
10
|
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
11
12
|
function argsToHash(...args: FlexibleProvable<any>[]): Field {
|
|
12
13
|
const fields = args.flatMap((argument) => argument.toFields(argument));
|
|
13
14
|
return Poseidon.hash(fields);
|
|
14
15
|
}
|
|
15
16
|
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
16
18
|
class Transaction extends Struct({
|
|
17
19
|
// must be checked inside @runtimeMethod
|
|
18
20
|
methodId: Field,
|
|
@@ -1,15 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Bool,
|
|
3
|
-
Field,
|
|
4
|
-
Poseidon,
|
|
5
|
-
Provable,
|
|
6
|
-
PublicKey,
|
|
7
|
-
Struct,
|
|
8
|
-
UInt64,
|
|
9
|
-
} from "o1js";
|
|
10
|
-
import { PublicKeyOption, UInt64Option } from "./ValueOption";
|
|
1
|
+
import { Bool, Field, Poseidon, PublicKey, Struct, UInt64 } from "o1js";
|
|
11
2
|
import { EMPTY_PUBLICKEY, EMPTY_PUBLICKEY_X } from "@proto-kit/common";
|
|
12
3
|
|
|
4
|
+
import { PublicKeyOption, UInt64Option } from "./ValueOption";
|
|
5
|
+
|
|
13
6
|
/**
|
|
14
7
|
* This struct is used to expose transaction information to the runtime method
|
|
15
8
|
* execution. This class has not all data included in transactions on purpose.
|
|
@@ -30,8 +23,8 @@ export class RuntimeTransaction extends Struct({
|
|
|
30
23
|
return new RuntimeTransaction({
|
|
31
24
|
methodId: input.methodId,
|
|
32
25
|
argsHash: input.argsHash,
|
|
33
|
-
nonce: UInt64Option.
|
|
34
|
-
sender: PublicKeyOption.
|
|
26
|
+
nonce: UInt64Option.fromSome(input.nonce),
|
|
27
|
+
sender: PublicKeyOption.fromSome(input.sender),
|
|
35
28
|
});
|
|
36
29
|
}
|
|
37
30
|
|
package/src/protocol/Protocol.ts
CHANGED
|
@@ -11,23 +11,21 @@ import {
|
|
|
11
11
|
import { DependencyContainer, Lifecycle } from "tsyringe";
|
|
12
12
|
|
|
13
13
|
import { BlockProvable } from "../prover/block/BlockProvable";
|
|
14
|
-
import { StateTransitionProver } from "../prover/statetransition/StateTransitionProver";
|
|
15
14
|
import { StateTransitionProvable } from "../prover/statetransition/StateTransitionProvable";
|
|
16
|
-
import { BlockProver } from "../prover/block/BlockProver";
|
|
17
15
|
import { StateServiceProvider } from "../state/StateServiceProvider";
|
|
18
|
-
import {
|
|
19
|
-
|
|
20
|
-
import { ProtocolModule } from "./ProtocolModule";
|
|
21
|
-
import { ProvableTransactionHook } from "./ProvableTransactionHook";
|
|
22
|
-
import { NoopTransactionHook } from "../hooks/NoopTransactionHook";
|
|
23
|
-
import { ProtocolEnvironment } from "./ProtocolEnvironment";
|
|
24
|
-
import { AccountStateHook } from "../hooks/AccountStateHook";
|
|
25
|
-
import { ProvableBlockHook } from "./ProvableBlockHook";
|
|
16
|
+
import { SimpleAsyncStateService } from "../state/StateService";
|
|
26
17
|
import { NoopBlockHook } from "../hooks/NoopBlockHook";
|
|
27
18
|
import { BlockHeightHook } from "../hooks/BlockHeightHook";
|
|
28
19
|
import { LastStateRootBlockHook } from "../hooks/LastStateRootBlockHook";
|
|
29
20
|
import { ProvableSettlementHook } from "../settlement/modularity/ProvableSettlementHook";
|
|
30
21
|
import { NoopSettlementHook } from "../hooks/NoopSettlementHook";
|
|
22
|
+
import { AccountStateHook } from "../hooks/AccountStateHook";
|
|
23
|
+
import { NoopTransactionHook } from "../hooks/NoopTransactionHook";
|
|
24
|
+
|
|
25
|
+
import { ProtocolModule } from "./ProtocolModule";
|
|
26
|
+
import { ProvableTransactionHook } from "./ProvableTransactionHook";
|
|
27
|
+
import { ProtocolEnvironment } from "./ProtocolEnvironment";
|
|
28
|
+
import { ProvableBlockHook } from "./ProvableBlockHook";
|
|
31
29
|
|
|
32
30
|
const PROTOCOL_INJECTION_TOKENS: Record<string, string> = {
|
|
33
31
|
ProvableTransactionHook: "ProvableTransactionHook",
|
|
@@ -59,13 +57,13 @@ export interface ProtocolDefinition<Modules extends ProtocolModulesRecord> {
|
|
|
59
57
|
}
|
|
60
58
|
|
|
61
59
|
export class Protocol<
|
|
62
|
-
Modules extends ProtocolModulesRecord & MandatoryProtocolModulesRecord
|
|
60
|
+
Modules extends ProtocolModulesRecord & MandatoryProtocolModulesRecord,
|
|
63
61
|
>
|
|
64
62
|
extends ModuleContainer<Modules>
|
|
65
63
|
implements ProtocolEnvironment
|
|
66
64
|
{
|
|
67
65
|
public static from<
|
|
68
|
-
Modules extends ProtocolModulesRecord & MandatoryProtocolModulesRecord
|
|
66
|
+
Modules extends ProtocolModulesRecord & MandatoryProtocolModulesRecord,
|
|
69
67
|
>(modules: ProtocolDefinition<Modules>): TypedClass<Protocol<Modules>> {
|
|
70
68
|
return class ScopedProtocol extends Protocol<Modules> {
|
|
71
69
|
public constructor() {
|
|
@@ -81,7 +79,7 @@ export class Protocol<
|
|
|
81
79
|
this.definition = definition;
|
|
82
80
|
}
|
|
83
81
|
|
|
84
|
-
public get stateService():
|
|
82
|
+
public get stateService(): SimpleAsyncStateService {
|
|
85
83
|
return this.stateServiceProvider.stateService;
|
|
86
84
|
}
|
|
87
85
|
|
|
@@ -183,4 +181,17 @@ export class Protocol<
|
|
|
183
181
|
}
|
|
184
182
|
});
|
|
185
183
|
}
|
|
184
|
+
|
|
185
|
+
public async start() {
|
|
186
|
+
// eslint-disable-next-line guard-for-in
|
|
187
|
+
for (const moduleName in this.definition.modules) {
|
|
188
|
+
const protocolModule = this.resolve(moduleName);
|
|
189
|
+
|
|
190
|
+
log.info(
|
|
191
|
+
`Starting protocol module ${moduleName} (${protocolModule.constructor.name})`
|
|
192
|
+
);
|
|
193
|
+
// eslint-disable-next-line no-await-in-loop
|
|
194
|
+
await protocolModule.start();
|
|
195
|
+
}
|
|
196
|
+
}
|
|
186
197
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { StateService } from "../state/StateService";
|
|
2
|
-
import { StateServiceProvider } from "../state/StateServiceProvider";
|
|
3
1
|
import { AreProofsEnabled } from "@proto-kit/common";
|
|
4
2
|
|
|
3
|
+
import { SimpleAsyncStateService } from "../state/StateService";
|
|
4
|
+
import { StateServiceProvider } from "../state/StateServiceProvider";
|
|
5
|
+
|
|
5
6
|
export interface ProtocolEnvironment {
|
|
6
|
-
get stateService():
|
|
7
|
-
get stateServiceProvider(): StateServiceProvider
|
|
8
|
-
getAreProofsEnabled(): AreProofsEnabled
|
|
9
|
-
}
|
|
7
|
+
get stateService(): SimpleAsyncStateService;
|
|
8
|
+
get stateServiceProvider(): StateServiceProvider;
|
|
9
|
+
getAreProofsEnabled(): AreProofsEnabled;
|
|
10
|
+
}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
import { ProtocolEnvironment } from "./ProtocolEnvironment";
|
|
10
10
|
|
|
11
11
|
export abstract class ProtocolModule<
|
|
12
|
-
Config = NoConfig
|
|
12
|
+
Config = NoConfig,
|
|
13
13
|
> extends ConfigurableModule<Config> {
|
|
14
14
|
public protocol?: ProtocolEnvironment;
|
|
15
15
|
|
|
@@ -17,8 +17,11 @@ export abstract class ProtocolModule<
|
|
|
17
17
|
return this.protocol?.getAreProofsEnabled();
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
21
20
|
public create(childContainerProvider: ChildContainerProvider): void {
|
|
22
21
|
noop();
|
|
23
22
|
}
|
|
23
|
+
|
|
24
|
+
public async start() {
|
|
25
|
+
noop();
|
|
26
|
+
}
|
|
24
27
|
}
|
|
@@ -5,15 +5,15 @@ import { TransitioningProtocolModule } from "./TransitioningProtocolModule";
|
|
|
5
5
|
|
|
6
6
|
// Purpose is to build transition from -> to network state
|
|
7
7
|
export abstract class ProvableBlockHook<
|
|
8
|
-
Config
|
|
8
|
+
Config,
|
|
9
9
|
> extends TransitioningProtocolModule<Config> {
|
|
10
10
|
public abstract beforeBlock(
|
|
11
11
|
networkState: NetworkState,
|
|
12
12
|
state: BlockProverState
|
|
13
|
-
): NetworkState
|
|
13
|
+
): Promise<NetworkState>;
|
|
14
14
|
|
|
15
15
|
public abstract afterBlock(
|
|
16
16
|
networkState: NetworkState,
|
|
17
17
|
state: BlockProverState
|
|
18
|
-
): NetworkState
|
|
18
|
+
): Promise<NetworkState>;
|
|
19
19
|
}
|
|
@@ -5,7 +5,9 @@ import { BlockProverExecutionData } from "../prover/block/BlockProvable";
|
|
|
5
5
|
import { TransitioningProtocolModule } from "./TransitioningProtocolModule";
|
|
6
6
|
|
|
7
7
|
export abstract class ProvableTransactionHook<
|
|
8
|
-
Config = NoConfig
|
|
8
|
+
Config = NoConfig,
|
|
9
9
|
> extends TransitioningProtocolModule<Config> {
|
|
10
|
-
public abstract onTransaction(
|
|
10
|
+
public abstract onTransaction(
|
|
11
|
+
executionData: BlockProverExecutionData
|
|
12
|
+
): Promise<void>;
|
|
11
13
|
}
|
|
@@ -6,7 +6,7 @@ import { ProtocolModule } from "./ProtocolModule";
|
|
|
6
6
|
* of a `name: string` property, which those classes need to function.
|
|
7
7
|
*/
|
|
8
8
|
export abstract class TransitioningProtocolModule<
|
|
9
|
-
Config
|
|
9
|
+
Config,
|
|
10
10
|
> extends ProtocolModule<Config> {
|
|
11
11
|
public name?: string;
|
|
12
12
|
}
|
|
@@ -62,7 +62,7 @@ export interface BlockProvable
|
|
|
62
62
|
stateProof: StateTransitionProof,
|
|
63
63
|
appProof: Proof<void, MethodPublicOutput>,
|
|
64
64
|
executionData: BlockProverExecutionData
|
|
65
|
-
) => BlockProverPublicOutput
|
|
65
|
+
) => Promise<BlockProverPublicOutput>;
|
|
66
66
|
|
|
67
67
|
proveBlock: (
|
|
68
68
|
publicInput: BlockProverPublicInput,
|
|
@@ -70,11 +70,11 @@ export interface BlockProvable
|
|
|
70
70
|
blockWitness: BlockHashMerkleTreeWitness,
|
|
71
71
|
stateTransitionProof: StateTransitionProof,
|
|
72
72
|
transactionProof: BlockProverProof
|
|
73
|
-
) => BlockProverPublicOutput
|
|
73
|
+
) => Promise<BlockProverPublicOutput>;
|
|
74
74
|
|
|
75
75
|
merge: (
|
|
76
76
|
publicInput: BlockProverPublicInput,
|
|
77
77
|
proof1: BlockProverProof,
|
|
78
78
|
proof2: BlockProverProof
|
|
79
|
-
) => BlockProverPublicOutput
|
|
79
|
+
) => Promise<BlockProverPublicOutput>;
|
|
80
80
|
}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
/* eslint-disable max-lines */
|
|
2
1
|
import {
|
|
3
2
|
Bool,
|
|
4
|
-
Experimental,
|
|
5
3
|
Field,
|
|
6
4
|
Poseidon,
|
|
7
5
|
type Proof,
|
|
8
6
|
Provable,
|
|
9
7
|
SelfProof,
|
|
8
|
+
ZkProgram,
|
|
10
9
|
} from "o1js";
|
|
11
10
|
import { container, inject, injectable, injectAll } from "tsyringe";
|
|
12
11
|
import {
|
|
13
12
|
AreProofsEnabled,
|
|
14
|
-
hashWithPrefix,
|
|
15
13
|
PlainZkProgram,
|
|
16
14
|
provableMethod,
|
|
17
15
|
WithZkProgrammable,
|
|
@@ -123,7 +121,6 @@ export class BlockProverProgrammable extends ZkProgrammable<
|
|
|
123
121
|
BlockProverPublicOutput
|
|
124
122
|
> {
|
|
125
123
|
public constructor(
|
|
126
|
-
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
127
124
|
private readonly prover: BlockProver,
|
|
128
125
|
public readonly stateTransitionProver: ZkProgrammable<
|
|
129
126
|
StateTransitionProverPublicInput,
|
|
@@ -150,7 +147,7 @@ export class BlockProverProgrammable extends ZkProgrammable<
|
|
|
150
147
|
* @param executionData
|
|
151
148
|
* @returns The new BlockProver-state to be used as public output
|
|
152
149
|
*/
|
|
153
|
-
public applyTransaction(
|
|
150
|
+
public async applyTransaction(
|
|
154
151
|
state: BlockProverState,
|
|
155
152
|
stateTransitionProof: Proof<
|
|
156
153
|
StateTransitionProverPublicInput,
|
|
@@ -158,10 +155,10 @@ export class BlockProverProgrammable extends ZkProgrammable<
|
|
|
158
155
|
>,
|
|
159
156
|
runtimeProof: RuntimeProof,
|
|
160
157
|
executionData: BlockProverExecutionData
|
|
161
|
-
): BlockProverState {
|
|
158
|
+
): Promise<BlockProverState> {
|
|
162
159
|
const { transaction, networkState, signature } = executionData;
|
|
163
160
|
|
|
164
|
-
const isMessage = runtimeProof.publicOutput
|
|
161
|
+
const { isMessage } = runtimeProof.publicOutput;
|
|
165
162
|
|
|
166
163
|
runtimeProof.verify();
|
|
167
164
|
stateTransitionProof.verify();
|
|
@@ -194,7 +191,7 @@ export class BlockProverProgrammable extends ZkProgrammable<
|
|
|
194
191
|
);
|
|
195
192
|
|
|
196
193
|
// Apply protocol state transitions
|
|
197
|
-
this.assertProtocolTransitions(
|
|
194
|
+
await this.assertProtocolTransitions(
|
|
198
195
|
stateTransitionProof,
|
|
199
196
|
executionData,
|
|
200
197
|
runtimeProof
|
|
@@ -240,10 +237,10 @@ export class BlockProverProgrammable extends ZkProgrammable<
|
|
|
240
237
|
return stateTo;
|
|
241
238
|
}
|
|
242
239
|
|
|
243
|
-
// eslint-disable-next-line
|
|
240
|
+
// eslint-disable-next-line max-len
|
|
244
241
|
// TODO How does this interact with the RuntimeMethodExecutionContext when executing runtimemethods?
|
|
245
242
|
|
|
246
|
-
public assertProtocolTransitions(
|
|
243
|
+
public async assertProtocolTransitions(
|
|
247
244
|
stateTransitionProof: Proof<
|
|
248
245
|
StateTransitionProverPublicInput,
|
|
249
246
|
StateTransitionProverPublicOutput
|
|
@@ -264,9 +261,10 @@ export class BlockProverProgrammable extends ZkProgrammable<
|
|
|
264
261
|
});
|
|
265
262
|
executionContext.beforeMethod("", "", []);
|
|
266
263
|
|
|
267
|
-
this.transactionHooks
|
|
268
|
-
|
|
269
|
-
|
|
264
|
+
for (const module of this.transactionHooks) {
|
|
265
|
+
// eslint-disable-next-line no-await-in-loop
|
|
266
|
+
await module.onTransaction(executionData);
|
|
267
|
+
}
|
|
270
268
|
|
|
271
269
|
executionContext.afterMethod();
|
|
272
270
|
|
|
@@ -294,38 +292,38 @@ export class BlockProverProgrammable extends ZkProgrammable<
|
|
|
294
292
|
);
|
|
295
293
|
}
|
|
296
294
|
|
|
297
|
-
private executeBlockHooks(
|
|
295
|
+
private async executeBlockHooks(
|
|
298
296
|
state: BlockProverState,
|
|
299
297
|
inputNetworkState: NetworkState,
|
|
300
298
|
type: "afterBlock" | "beforeBlock"
|
|
301
|
-
): {
|
|
299
|
+
): Promise<{
|
|
302
300
|
networkState: NetworkState;
|
|
303
301
|
stateTransitions: StateTransition<unknown>[];
|
|
304
|
-
} {
|
|
302
|
+
}> {
|
|
305
303
|
const executionContext = container.resolve(RuntimeMethodExecutionContext);
|
|
306
304
|
executionContext.clear();
|
|
307
305
|
executionContext.beforeMethod("", "", []);
|
|
308
306
|
|
|
309
|
-
const resultingNetworkState = this.blockHooks.reduce<
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
);
|
|
307
|
+
const resultingNetworkState = await this.blockHooks.reduce<
|
|
308
|
+
Promise<NetworkState>
|
|
309
|
+
>(async (networkStatePromise, blockHook) => {
|
|
310
|
+
const networkState = await networkStatePromise;
|
|
311
|
+
// Setup context for potential calls to runtime methods.
|
|
312
|
+
// With the special case that we set the new networkstate for every hook
|
|
313
|
+
// We also have to put in a dummy transaction for network.transaction
|
|
314
|
+
executionContext.setup({
|
|
315
|
+
transaction: RuntimeTransaction.dummyTransaction(),
|
|
316
|
+
networkState,
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
if (type === "beforeBlock") {
|
|
320
|
+
return await blockHook.beforeBlock(networkState, state);
|
|
321
|
+
}
|
|
322
|
+
if (type === "afterBlock") {
|
|
323
|
+
return await blockHook.afterBlock(networkState, state);
|
|
324
|
+
}
|
|
325
|
+
throw new Error("Unreachable");
|
|
326
|
+
}, Promise.resolve(inputNetworkState));
|
|
329
327
|
|
|
330
328
|
executionContext.afterMethod();
|
|
331
329
|
|
|
@@ -361,7 +359,6 @@ export class BlockProverProgrammable extends ZkProgrammable<
|
|
|
361
359
|
stateTo.transactionsHash = transactionList.commitment;
|
|
362
360
|
|
|
363
361
|
// Append tx to eternal transaction list
|
|
364
|
-
// eslint-disable-next-line no-warning-comments
|
|
365
362
|
// TODO Change that to the a sequence-state compatible transaction struct
|
|
366
363
|
const eternalTransactionList = new DefaultProvableHashList(
|
|
367
364
|
Field,
|
|
@@ -385,12 +382,12 @@ export class BlockProverProgrammable extends ZkProgrammable<
|
|
|
385
382
|
}
|
|
386
383
|
|
|
387
384
|
@provableMethod()
|
|
388
|
-
public proveTransaction(
|
|
385
|
+
public async proveTransaction(
|
|
389
386
|
publicInput: BlockProverPublicInput,
|
|
390
387
|
stateProof: StateTransitionProof,
|
|
391
388
|
runtimeProof: RuntimeProof,
|
|
392
389
|
executionData: BlockProverExecutionData
|
|
393
|
-
): BlockProverPublicOutput {
|
|
390
|
+
): Promise<BlockProverPublicOutput> {
|
|
394
391
|
const state: BlockProverState = {
|
|
395
392
|
...publicInput,
|
|
396
393
|
};
|
|
@@ -406,7 +403,7 @@ export class BlockProverProgrammable extends ZkProgrammable<
|
|
|
406
403
|
executionData.transaction
|
|
407
404
|
);
|
|
408
405
|
|
|
409
|
-
const stateTo = this.applyTransaction(
|
|
406
|
+
const stateTo = await this.applyTransaction(
|
|
410
407
|
bundleInclusionState,
|
|
411
408
|
stateProof,
|
|
412
409
|
runtimeProof,
|
|
@@ -441,13 +438,13 @@ export class BlockProverProgrammable extends ZkProgrammable<
|
|
|
441
438
|
}
|
|
442
439
|
|
|
443
440
|
@provableMethod()
|
|
444
|
-
public proveBlock(
|
|
441
|
+
public async proveBlock(
|
|
445
442
|
publicInput: BlockProverPublicInput,
|
|
446
443
|
networkState: NetworkState,
|
|
447
444
|
blockWitness: BlockHashMerkleTreeWitness,
|
|
448
445
|
stateTransitionProof: StateTransitionProof,
|
|
449
446
|
transactionProof: BlockProverProof
|
|
450
|
-
): BlockProverPublicOutput {
|
|
447
|
+
): Promise<BlockProverPublicOutput> {
|
|
451
448
|
const state: BlockProverState = {
|
|
452
449
|
...publicInput,
|
|
453
450
|
};
|
|
@@ -507,7 +504,7 @@ export class BlockProverProgrammable extends ZkProgrammable<
|
|
|
507
504
|
transactionProof.verifyIf(verifyTransactionProof);
|
|
508
505
|
|
|
509
506
|
// 2. Execute beforeBlock hooks
|
|
510
|
-
const beforeBlockResult = this.executeBlockHooks(
|
|
507
|
+
const beforeBlockResult = await this.executeBlockHooks(
|
|
511
508
|
state,
|
|
512
509
|
networkState,
|
|
513
510
|
"beforeBlock"
|
|
@@ -555,7 +552,7 @@ export class BlockProverProgrammable extends ZkProgrammable<
|
|
|
555
552
|
// 5. Execute afterBlock hooks
|
|
556
553
|
this.assertSTProofInput(stateTransitionProof, state.stateRoot);
|
|
557
554
|
|
|
558
|
-
const afterBlockResult = this.executeBlockHooks(
|
|
555
|
+
const afterBlockResult = await this.executeBlockHooks(
|
|
559
556
|
state,
|
|
560
557
|
beforeBlockResult.networkState,
|
|
561
558
|
"afterBlock"
|
|
@@ -609,11 +606,11 @@ export class BlockProverProgrammable extends ZkProgrammable<
|
|
|
609
606
|
}
|
|
610
607
|
|
|
611
608
|
@provableMethod()
|
|
612
|
-
public merge(
|
|
609
|
+
public async merge(
|
|
613
610
|
publicInput: BlockProverPublicInput,
|
|
614
611
|
proof1: BlockProverProof,
|
|
615
612
|
proof2: BlockProverProof
|
|
616
|
-
): BlockProverPublicOutput {
|
|
613
|
+
): Promise<BlockProverPublicOutput> {
|
|
617
614
|
proof1.verify();
|
|
618
615
|
proof2.verify();
|
|
619
616
|
|
|
@@ -755,9 +752,11 @@ export class BlockProverProgrammable extends ZkProgrammable<
|
|
|
755
752
|
const RuntimeProofClass = runtime.zkProgram.Proof;
|
|
756
753
|
|
|
757
754
|
const proveTransaction = prover.proveTransaction.bind(prover);
|
|
755
|
+
const proveBlock = prover.proveBlock.bind(prover);
|
|
758
756
|
const merge = prover.merge.bind(prover);
|
|
759
757
|
|
|
760
|
-
const program =
|
|
758
|
+
const program = ZkProgram({
|
|
759
|
+
name: "BlockProver",
|
|
761
760
|
publicInput: BlockProverPublicInput,
|
|
762
761
|
publicOutput: BlockProverPublicOutput,
|
|
763
762
|
|
|
@@ -769,13 +768,13 @@ export class BlockProverProgrammable extends ZkProgrammable<
|
|
|
769
768
|
BlockProverExecutionData,
|
|
770
769
|
],
|
|
771
770
|
|
|
772
|
-
method(
|
|
771
|
+
async method(
|
|
773
772
|
publicInput: BlockProverPublicInput,
|
|
774
773
|
stateProof: StateTransitionProof,
|
|
775
774
|
appProof: Proof<void, MethodPublicOutput>,
|
|
776
775
|
executionData: BlockProverExecutionData
|
|
777
776
|
) {
|
|
778
|
-
return proveTransaction(
|
|
777
|
+
return await proveTransaction(
|
|
779
778
|
publicInput,
|
|
780
779
|
stateProof,
|
|
781
780
|
appProof,
|
|
@@ -784,18 +783,42 @@ export class BlockProverProgrammable extends ZkProgrammable<
|
|
|
784
783
|
},
|
|
785
784
|
},
|
|
786
785
|
|
|
786
|
+
proveBlock: {
|
|
787
|
+
privateInputs: [
|
|
788
|
+
NetworkState,
|
|
789
|
+
BlockHashMerkleTreeWitness,
|
|
790
|
+
StateTransitionProofClass,
|
|
791
|
+
SelfProof<BlockProverPublicInput, BlockProverPublicOutput>,
|
|
792
|
+
],
|
|
793
|
+
async method(
|
|
794
|
+
publicInput: BlockProverPublicInput,
|
|
795
|
+
networkState: NetworkState,
|
|
796
|
+
blockWitness: BlockHashMerkleTreeWitness,
|
|
797
|
+
stateTransitionProof: StateTransitionProof,
|
|
798
|
+
transactionProof: BlockProverProof
|
|
799
|
+
) {
|
|
800
|
+
return await proveBlock(
|
|
801
|
+
publicInput,
|
|
802
|
+
networkState,
|
|
803
|
+
blockWitness,
|
|
804
|
+
stateTransitionProof,
|
|
805
|
+
transactionProof
|
|
806
|
+
);
|
|
807
|
+
},
|
|
808
|
+
},
|
|
809
|
+
|
|
787
810
|
merge: {
|
|
788
811
|
privateInputs: [
|
|
789
812
|
SelfProof<BlockProverPublicInput, BlockProverPublicOutput>,
|
|
790
813
|
SelfProof<BlockProverPublicInput, BlockProverPublicOutput>,
|
|
791
814
|
],
|
|
792
815
|
|
|
793
|
-
method(
|
|
816
|
+
async method(
|
|
794
817
|
publicInput: BlockProverPublicInput,
|
|
795
818
|
proof1: BlockProverProof,
|
|
796
819
|
proof2: BlockProverProof
|
|
797
820
|
) {
|
|
798
|
-
return merge(publicInput, proof1, proof2);
|
|
821
|
+
return await merge(publicInput, proof1, proof2);
|
|
799
822
|
},
|
|
800
823
|
},
|
|
801
824
|
},
|
|
@@ -806,7 +829,7 @@ export class BlockProverProgrammable extends ZkProgrammable<
|
|
|
806
829
|
merge: program.merge,
|
|
807
830
|
};
|
|
808
831
|
|
|
809
|
-
const SelfProofClass =
|
|
832
|
+
const SelfProofClass = ZkProgram.Proof(program);
|
|
810
833
|
|
|
811
834
|
return {
|
|
812
835
|
compile: program.compile.bind(program),
|
|
@@ -855,7 +878,7 @@ export class BlockProver extends ProtocolModule implements BlockProvable {
|
|
|
855
878
|
stateProof: StateTransitionProof,
|
|
856
879
|
appProof: Proof<void, MethodPublicOutput>,
|
|
857
880
|
executionData: BlockProverExecutionData
|
|
858
|
-
): BlockProverPublicOutput {
|
|
881
|
+
): Promise<BlockProverPublicOutput> {
|
|
859
882
|
return this.zkProgrammable.proveTransaction(
|
|
860
883
|
publicInput,
|
|
861
884
|
stateProof,
|
|
@@ -870,7 +893,7 @@ export class BlockProver extends ProtocolModule implements BlockProvable {
|
|
|
870
893
|
blockWitness: BlockHashMerkleTreeWitness,
|
|
871
894
|
stateTransitionProof: StateTransitionProof,
|
|
872
895
|
transactionProof: BlockProverProof
|
|
873
|
-
): BlockProverPublicOutput {
|
|
896
|
+
): Promise<BlockProverPublicOutput> {
|
|
874
897
|
return this.zkProgrammable.proveBlock(
|
|
875
898
|
publicInput,
|
|
876
899
|
networkState,
|
|
@@ -884,7 +907,7 @@ export class BlockProver extends ProtocolModule implements BlockProvable {
|
|
|
884
907
|
publicInput: BlockProverPublicInput,
|
|
885
908
|
proof1: BlockProverProof,
|
|
886
909
|
proof2: BlockProverProof
|
|
887
|
-
): BlockProverPublicOutput {
|
|
910
|
+
): Promise<BlockProverPublicOutput> {
|
|
888
911
|
return this.zkProgrammable.merge(publicInput, proof1, proof2);
|
|
889
912
|
}
|
|
890
913
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createMerkleTree } from "@proto-kit/common";
|
|
2
|
-
import { Bool, Field, Poseidon,
|
|
2
|
+
import { Bool, Field, Poseidon, Struct } from "o1js";
|
|
3
3
|
|
|
4
4
|
export class BlockHashMerkleTree extends createMerkleTree(40) {}
|
|
5
5
|
export class BlockHashMerkleTreeWitness extends BlockHashMerkleTree.WITNESS {}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Field, Proof, Struct } from "o1js";
|
|
2
|
-
import { WithZkProgrammable
|
|
2
|
+
import { WithZkProgrammable } from "@proto-kit/common";
|
|
3
3
|
|
|
4
4
|
import { StateTransitionProvableBatch } from "../../model/StateTransitionProvableBatch";
|
|
5
5
|
|
|
@@ -34,11 +34,11 @@ export interface StateTransitionProvable
|
|
|
34
34
|
runBatch: (
|
|
35
35
|
publicInput: StateTransitionProverPublicInput,
|
|
36
36
|
batch: StateTransitionProvableBatch
|
|
37
|
-
) => StateTransitionProverPublicOutput
|
|
37
|
+
) => Promise<StateTransitionProverPublicOutput>;
|
|
38
38
|
|
|
39
39
|
merge: (
|
|
40
40
|
publicInput: StateTransitionProverPublicInput,
|
|
41
41
|
proof1: StateTransitionProof,
|
|
42
42
|
proof2: StateTransitionProof
|
|
43
|
-
) => StateTransitionProverPublicOutput
|
|
43
|
+
) => Promise<StateTransitionProverPublicOutput>;
|
|
44
44
|
}
|