@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/state/StateMap.ts
CHANGED
|
@@ -9,7 +9,6 @@ import { State, WithStateServiceProvider, WithPath } from "./State";
|
|
|
9
9
|
/**
|
|
10
10
|
* Map-like wrapper for state
|
|
11
11
|
*/
|
|
12
|
-
// eslint-disable-next-line new-cap
|
|
13
12
|
export class StateMap<KeyType, ValueType> extends Mixin(
|
|
14
13
|
WithPath,
|
|
15
14
|
WithStateServiceProvider
|
|
@@ -46,14 +45,14 @@ export class StateMap<KeyType, ValueType> extends Mixin(
|
|
|
46
45
|
* @param key - Key to obtain the state for
|
|
47
46
|
* @returns Value for the provided key.
|
|
48
47
|
*/
|
|
49
|
-
public get(key: KeyType): Option<ValueType
|
|
48
|
+
public async get(key: KeyType): Promise<Option<ValueType>> {
|
|
50
49
|
const state = State.from(this.valueType);
|
|
51
50
|
this.hasPathOrFail();
|
|
52
51
|
this.hasStateServiceOrFail();
|
|
53
52
|
|
|
54
53
|
state.path = this.getPath(key);
|
|
55
54
|
state.stateServiceProvider = this.stateServiceProvider;
|
|
56
|
-
return state.get();
|
|
55
|
+
return await state.get();
|
|
57
56
|
}
|
|
58
57
|
|
|
59
58
|
/**
|
|
@@ -62,13 +61,13 @@ export class StateMap<KeyType, ValueType> extends Mixin(
|
|
|
62
61
|
* @param key - Key to store the value under
|
|
63
62
|
* @param value - Value to be stored under the given key
|
|
64
63
|
*/
|
|
65
|
-
public set(key: KeyType, value: ValueType): void {
|
|
64
|
+
public async set(key: KeyType, value: ValueType): Promise<void> {
|
|
66
65
|
const state = State.from(this.valueType);
|
|
67
66
|
this.hasPathOrFail();
|
|
68
67
|
this.hasStateServiceOrFail();
|
|
69
68
|
|
|
70
69
|
state.path = Path.fromKey(this.path, this.keyType, key);
|
|
71
70
|
state.stateServiceProvider = this.stateServiceProvider;
|
|
72
|
-
state.set(value);
|
|
71
|
+
return await state.set(value);
|
|
73
72
|
}
|
|
74
73
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Field } from "o1js";
|
|
2
2
|
|
|
3
|
-
export interface
|
|
4
|
-
get: (key: Field) => Field[] | undefined
|
|
5
|
-
set: (key: Field, value: Field[] | undefined) => void
|
|
3
|
+
export interface SimpleAsyncStateService {
|
|
4
|
+
get: (key: Field) => Promise<Field[] | undefined>;
|
|
5
|
+
set: (key: Field, value: Field[] | undefined) => Promise<void>;
|
|
6
6
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { StateService } from "./StateService";
|
|
1
|
+
import { injectable } from "tsyringe";
|
|
4
2
|
import { log } from "@proto-kit/common";
|
|
5
3
|
|
|
4
|
+
import { SimpleAsyncStateService } from "./StateService";
|
|
5
|
+
|
|
6
6
|
const errors = {
|
|
7
7
|
stateServiceNotSet: () =>
|
|
8
8
|
new Error(
|
|
@@ -12,19 +12,18 @@ const errors = {
|
|
|
12
12
|
|
|
13
13
|
@injectable()
|
|
14
14
|
export class StateServiceProvider {
|
|
15
|
-
private readonly stateServiceStack:
|
|
15
|
+
private readonly stateServiceStack: SimpleAsyncStateService[] = [];
|
|
16
16
|
|
|
17
|
-
public get stateService():
|
|
17
|
+
public get stateService(): SimpleAsyncStateService {
|
|
18
18
|
if (this.stateServiceStack.length === 0) {
|
|
19
19
|
throw errors.stateServiceNotSet();
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
// Assertion here is ok, because we check that the array is not empty above
|
|
23
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
24
23
|
return this.stateServiceStack.at(-1)!;
|
|
25
24
|
}
|
|
26
25
|
|
|
27
|
-
public setCurrentStateService(service:
|
|
26
|
+
public setCurrentStateService(service: SimpleAsyncStateService) {
|
|
28
27
|
this.stateServiceStack.push(service);
|
|
29
28
|
}
|
|
30
29
|
|
|
@@ -13,7 +13,7 @@ import { RuntimeMethodExecutionContext } from "../context/RuntimeMethodExecution
|
|
|
13
13
|
* @param condition - Result of the assertion made about the execution status
|
|
14
14
|
* @param message - Optional message describing the prior status
|
|
15
15
|
*/
|
|
16
|
-
export function assert(condition: Bool, message?: string) {
|
|
16
|
+
export function assert(condition: Bool, message?: string | (() => string)) {
|
|
17
17
|
const executionContext = container.resolve(RuntimeMethodExecutionContext);
|
|
18
18
|
const previousStatus = executionContext.current().result.status;
|
|
19
19
|
const status = condition.and(previousStatus);
|
|
@@ -23,7 +23,11 @@ export function assert(condition: Bool, message?: string) {
|
|
|
23
23
|
if (!executionContext.current().isSimulated) {
|
|
24
24
|
log.debug("Assertion failed: ", message);
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
const messageString =
|
|
27
|
+
message !== undefined && typeof message === "function"
|
|
28
|
+
? message()
|
|
29
|
+
: message;
|
|
30
|
+
executionContext.setStatusMessage(messageString, new Error().stack);
|
|
27
31
|
}
|
|
28
32
|
});
|
|
29
33
|
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
ProvableMethodExecutionContext,
|
|
5
5
|
ProvableMethodExecutionResult,
|
|
6
6
|
} from "@proto-kit/common";
|
|
7
|
+
|
|
7
8
|
import { StateTransition } from "../../model/StateTransition";
|
|
8
9
|
import { RuntimeTransaction } from "../../model/transaction/RuntimeTransaction";
|
|
9
10
|
import { NetworkState } from "../../model/network/NetworkState";
|
|
@@ -16,12 +17,13 @@ const errors = {
|
|
|
16
17
|
};
|
|
17
18
|
|
|
18
19
|
export class RuntimeProvableMethodExecutionResult extends ProvableMethodExecutionResult {
|
|
19
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
20
20
|
public stateTransitions: StateTransition<any>[] = [];
|
|
21
21
|
|
|
22
22
|
public status: Bool = Bool(true);
|
|
23
23
|
|
|
24
24
|
public statusMessage?: string;
|
|
25
|
+
|
|
26
|
+
public stackTrace?: string;
|
|
25
27
|
}
|
|
26
28
|
|
|
27
29
|
export interface RuntimeMethodExecutionData {
|
|
@@ -74,12 +76,13 @@ export class RuntimeMethodExecutionContext extends ProvableMethodExecutionContex
|
|
|
74
76
|
/**
|
|
75
77
|
* @param message - Status message to acompany the current status
|
|
76
78
|
*/
|
|
77
|
-
public setStatusMessage(message?: string) {
|
|
79
|
+
public setStatusMessage(message?: string, stackTrace?: string) {
|
|
78
80
|
this.assertSetupCalled();
|
|
79
81
|
if (this.isSimulated) {
|
|
80
82
|
return;
|
|
81
83
|
}
|
|
82
84
|
this.result.statusMessage ??= message;
|
|
85
|
+
this.result.stackTrace ??= stackTrace;
|
|
83
86
|
}
|
|
84
87
|
|
|
85
88
|
/**
|
|
@@ -22,19 +22,17 @@ const errors = {
|
|
|
22
22
|
*/
|
|
23
23
|
export function protocolState() {
|
|
24
24
|
return <
|
|
25
|
-
TargetTransitioningModule extends TransitioningProtocolModule<unknown
|
|
25
|
+
TargetTransitioningModule extends TransitioningProtocolModule<unknown>,
|
|
26
26
|
>(
|
|
27
27
|
target: TargetTransitioningModule,
|
|
28
28
|
propertyKey: string
|
|
29
29
|
) => {
|
|
30
|
-
// eslint-disable-next-line @typescript-eslint/init-declarations
|
|
31
30
|
let value: State<unknown> | undefined;
|
|
32
31
|
|
|
33
32
|
Object.defineProperty(target, propertyKey, {
|
|
34
33
|
enumerable: true,
|
|
35
34
|
|
|
36
35
|
get: function get() {
|
|
37
|
-
// eslint-disable-next-line max-len
|
|
38
36
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
39
37
|
const self = this as TargetTransitioningModule;
|
|
40
38
|
|
|
@@ -46,7 +44,6 @@ export function protocolState() {
|
|
|
46
44
|
throw errors.missingProtocol(self.constructor.name);
|
|
47
45
|
}
|
|
48
46
|
|
|
49
|
-
// eslint-disable-next-line no-warning-comments
|
|
50
47
|
// TODO Add Prefix?
|
|
51
48
|
const path = Path.fromProperty(self.name, propertyKey);
|
|
52
49
|
if (value) {
|
|
@@ -4,6 +4,7 @@ import { hashWithPrefix, prefixToField } from "@proto-kit/common";
|
|
|
4
4
|
import { ProvableHashList } from "./ProvableHashList";
|
|
5
5
|
|
|
6
6
|
function salt(prefix: string) {
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
7
8
|
return Poseidon.update(
|
|
8
9
|
[Field(0), Field(0), Field(0)],
|
|
9
10
|
[prefixToField(prefix)]
|
|
@@ -48,7 +49,7 @@ export class MinaEvents {
|
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
export class MinaPrefixedProvableHashList<
|
|
51
|
-
Value
|
|
52
|
+
Value,
|
|
52
53
|
> extends ProvableHashList<Value> {
|
|
53
54
|
public constructor(
|
|
54
55
|
valueType: ProvablePure<Value>,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Provable } from "o1js";
|
|
2
|
+
|
|
2
3
|
import { ProvableOption } from "../model/Option";
|
|
3
4
|
import {
|
|
4
5
|
ProvableStateTransition,
|
|
@@ -62,10 +63,10 @@ export function reduceStateTransitions(
|
|
|
62
63
|
): StateTransition<unknown>[] {
|
|
63
64
|
const reduced: StateTransition<unknown>[] = [];
|
|
64
65
|
|
|
65
|
-
|
|
66
|
+
transitions.forEach((st) => {
|
|
66
67
|
if (reduced.length === 0) {
|
|
67
68
|
reduced.push(st);
|
|
68
|
-
|
|
69
|
+
return;
|
|
69
70
|
}
|
|
70
71
|
|
|
71
72
|
const last = reduced.at(-1)!;
|
|
@@ -83,6 +84,6 @@ export function reduceStateTransitions(
|
|
|
83
84
|
} else {
|
|
84
85
|
reduced.push(st);
|
|
85
86
|
}
|
|
86
|
-
}
|
|
87
|
+
});
|
|
87
88
|
return reduced;
|
|
88
89
|
}
|
package/src/utils/utils.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
// eslint-disable-next-line max-len
|
|
2
|
-
/* eslint-disable @typescript-eslint/no-explicit-any,@typescript-eslint/ban-types, @typescript-eslint/no-unsafe-return */
|
|
3
|
-
|
|
4
1
|
import { Field, Poseidon, Provable } from "o1js";
|
|
5
2
|
import floor from "lodash/floor";
|
|
6
3
|
|
|
@@ -30,8 +27,6 @@ export function notInCircuit(): MethodDecorator {
|
|
|
30
27
|
`Method ${propertyKey.toString()} is supposed to be only called outside of the circuit`
|
|
31
28
|
);
|
|
32
29
|
}
|
|
33
|
-
// eslint-disable-next-line max-len
|
|
34
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
35
30
|
return childFunction.apply(this, args);
|
|
36
31
|
};
|
|
37
32
|
return descriptor;
|
|
@@ -39,7 +34,7 @@ export function notInCircuit(): MethodDecorator {
|
|
|
39
34
|
}
|
|
40
35
|
|
|
41
36
|
export function stringToField(value: string) {
|
|
42
|
-
const fieldSize = Field.sizeInBytes
|
|
37
|
+
const fieldSize = Field.sizeInBytes - 1;
|
|
43
38
|
|
|
44
39
|
// Encode string as byte[]
|
|
45
40
|
const encoder = new TextEncoder();
|
|
@@ -59,7 +54,6 @@ export function stringToField(value: string) {
|
|
|
59
54
|
return a;
|
|
60
55
|
},
|
|
61
56
|
|
|
62
|
-
// eslint-disable-next-line array-func/from-map
|
|
63
57
|
Array.from<number[]>({ length: floor(data.length / fieldSize) }).map(
|
|
64
58
|
() => []
|
|
65
59
|
)
|
|
@@ -73,8 +67,9 @@ export function stringToField(value: string) {
|
|
|
73
67
|
}
|
|
74
68
|
|
|
75
69
|
export function singleFieldToString(value: Field | bigint): string {
|
|
70
|
+
let fieldValue = value;
|
|
76
71
|
if (typeof value === "bigint") {
|
|
77
|
-
|
|
72
|
+
fieldValue = Field(value);
|
|
78
73
|
}
|
|
79
|
-
return
|
|
74
|
+
return fieldValue.toString();
|
|
80
75
|
}
|
package/test/BlockProver.test.ts
CHANGED
|
@@ -1,41 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
import { Bool, Experimental, Field, PrivateKey, Proof, UInt64 } from "o1js";
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
BlockProver,
|
|
6
|
-
type BlockProverState,
|
|
7
|
-
} from "../src/prover/block/BlockProver";
|
|
8
|
-
import { NoOpStateTransitionWitnessProvider } from "../src/prover/statetransition/StateTransitionWitnessProvider";
|
|
9
|
-
import {
|
|
10
|
-
StateTransitionProverPublicInput,
|
|
11
|
-
StateTransitionProverPublicOutput,
|
|
12
|
-
} from "../src/prover/statetransition/StateTransitionProvable";
|
|
13
|
-
import { BlockProverPublicInput } from "../src/prover/block/BlockProvable";
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
14
2
|
import {
|
|
15
3
|
AreProofsEnabled,
|
|
16
4
|
PlainZkProgram,
|
|
17
|
-
WithZkProgrammable,
|
|
18
5
|
ZkProgrammable,
|
|
19
6
|
} from "@proto-kit/common";
|
|
20
|
-
import ZkProgram
|
|
21
|
-
import
|
|
22
|
-
|
|
23
|
-
import { container } from "tsyringe";
|
|
7
|
+
import { Bool, Field, Proof, UInt64, ZkProgram } from "o1js";
|
|
8
|
+
import "reflect-metadata";
|
|
9
|
+
|
|
24
10
|
import {
|
|
25
|
-
DefaultProvableHashList,
|
|
26
11
|
MethodPublicOutput,
|
|
27
12
|
NetworkState,
|
|
28
|
-
Protocol,
|
|
29
|
-
ProtocolMethodExecutionContext,
|
|
30
13
|
SignedTransaction,
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
StateTransitionProver,
|
|
14
|
+
StateTransitionProverPublicInput,
|
|
15
|
+
StateTransitionProverPublicOutput,
|
|
34
16
|
} from "../src";
|
|
35
17
|
|
|
18
|
+
import { createAndInitTestingProtocol } from "./TestingProtocol";
|
|
19
|
+
|
|
36
20
|
type BlockProverProofPair = [
|
|
37
21
|
Proof<void, MethodPublicOutput>,
|
|
38
|
-
Proof<StateTransitionProverPublicInput, StateTransitionProverPublicOutput
|
|
22
|
+
Proof<StateTransitionProverPublicInput, StateTransitionProverPublicOutput>,
|
|
39
23
|
];
|
|
40
24
|
|
|
41
25
|
class MockAppChain implements AreProofsEnabled {
|
|
@@ -55,56 +39,44 @@ class RuntimeZkProgrammable extends ZkProgrammable<
|
|
|
55
39
|
}
|
|
56
40
|
|
|
57
41
|
zkProgramFactory(): PlainZkProgram<undefined, MethodPublicOutput> {
|
|
58
|
-
const program =
|
|
42
|
+
const program = ZkProgram({
|
|
43
|
+
name: "BlockProverTestProgram",
|
|
59
44
|
publicOutput: MethodPublicOutput,
|
|
60
45
|
methods: {},
|
|
61
46
|
});
|
|
62
47
|
|
|
63
48
|
return {
|
|
64
|
-
compile: program.compile,
|
|
65
|
-
verify: program.verify,
|
|
49
|
+
compile: program.compile.bind(program),
|
|
50
|
+
verify: program.verify.bind(program),
|
|
51
|
+
analyzeMethods: program.analyzeMethods.bind(program),
|
|
66
52
|
methods: {},
|
|
67
53
|
Proof: ZkProgram.Proof(program),
|
|
68
54
|
};
|
|
69
55
|
}
|
|
70
56
|
}
|
|
71
57
|
|
|
72
|
-
class RuntimeMock implements WithZkProgrammable<undefined, MethodPublicOutput> {
|
|
73
|
-
zkProgrammable: ZkProgrammable<undefined, MethodPublicOutput> =
|
|
74
|
-
new RuntimeZkProgrammable();
|
|
75
|
-
}
|
|
76
|
-
|
|
77
58
|
describe("blockProver", () => {
|
|
78
59
|
const networkState = new NetworkState({
|
|
79
60
|
block: {
|
|
80
61
|
height: UInt64.zero,
|
|
81
62
|
},
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
const protocol = Protocol.from({
|
|
85
|
-
modules: {
|
|
86
|
-
StateTransitionProver: StateTransitionProver,
|
|
87
|
-
BlockProver: BlockProver,
|
|
63
|
+
previous: {
|
|
64
|
+
rootHash: Field(0),
|
|
88
65
|
},
|
|
89
|
-
blockModules: [AccountStateHook],
|
|
90
66
|
});
|
|
91
67
|
|
|
92
|
-
|
|
93
|
-
protocol.registerValue({
|
|
94
|
-
StateTransitionWitnessProvider: new NoOpStateTransitionWitnessProvider(),
|
|
95
|
-
Runtime: new RuntimeMock(),
|
|
96
|
-
});
|
|
97
|
-
});
|
|
68
|
+
const protocol = createAndInitTestingProtocol();
|
|
98
69
|
|
|
99
70
|
function generateTestProofs(
|
|
100
71
|
fromStateRoot: Field,
|
|
101
72
|
toStateRoot: Field,
|
|
73
|
+
toProtocolRoot: Field,
|
|
102
74
|
protocolHash: Field,
|
|
103
75
|
tx: SignedTransaction,
|
|
76
|
+
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
104
77
|
networkState: NetworkState
|
|
105
78
|
): BlockProverProofPair {
|
|
106
|
-
const transactionHash =
|
|
107
|
-
RuntimeTransaction.fromProtocolTransaction(tx).hash();
|
|
79
|
+
const transactionHash = tx.transaction.hash();
|
|
108
80
|
const sthash = Field(123);
|
|
109
81
|
|
|
110
82
|
const appProof = new Proof<undefined, MethodPublicOutput>({
|
|
@@ -114,6 +86,7 @@ describe("blockProver", () => {
|
|
|
114
86
|
stateTransitionsHash: sthash,
|
|
115
87
|
status: Bool(true),
|
|
116
88
|
networkStateHash: networkState.hash(),
|
|
89
|
+
isMessage: Bool(false),
|
|
117
90
|
}),
|
|
118
91
|
|
|
119
92
|
proof: "",
|
|
@@ -128,11 +101,13 @@ describe("blockProver", () => {
|
|
|
128
101
|
stateTransitionsHash: Field(0),
|
|
129
102
|
protocolTransitionsHash: Field(0),
|
|
130
103
|
stateRoot: fromStateRoot,
|
|
104
|
+
protocolStateRoot: fromStateRoot,
|
|
131
105
|
}),
|
|
132
106
|
publicOutput: new StateTransitionProverPublicOutput({
|
|
133
107
|
stateTransitionsHash: sthash,
|
|
134
108
|
protocolTransitionsHash: protocolHash,
|
|
135
109
|
stateRoot: toStateRoot,
|
|
110
|
+
protocolStateRoot: toProtocolRoot,
|
|
136
111
|
}),
|
|
137
112
|
|
|
138
113
|
proof: "",
|
|
@@ -142,85 +117,92 @@ describe("blockProver", () => {
|
|
|
142
117
|
return [appProof, stProof];
|
|
143
118
|
}
|
|
144
119
|
|
|
145
|
-
it("
|
|
146
|
-
expect.
|
|
147
|
-
|
|
148
|
-
const priv = PrivateKey.random();
|
|
149
|
-
|
|
150
|
-
const tx = new UnsignedTransaction({
|
|
151
|
-
methodId: Field(0),
|
|
152
|
-
args: [Field(0)],
|
|
153
|
-
nonce: UInt64.zero,
|
|
154
|
-
sender: priv.toPublicKey(),
|
|
155
|
-
})
|
|
156
|
-
.sign(priv)
|
|
157
|
-
.toProtocolTransaction();
|
|
158
|
-
|
|
159
|
-
const executionData = {
|
|
160
|
-
networkState,
|
|
161
|
-
transaction: tx,
|
|
162
|
-
};
|
|
163
|
-
|
|
164
|
-
// const asmodule = protocol.resolve()
|
|
165
|
-
|
|
166
|
-
protocol.dependencyContainer
|
|
167
|
-
.resolveAll<BlockModule>("BlockModule")
|
|
168
|
-
.forEach((module) => {
|
|
169
|
-
module.createTransitions(executionData);
|
|
170
|
-
});
|
|
171
|
-
|
|
172
|
-
const hashList = new DefaultProvableHashList(ProvableStateTransition);
|
|
173
|
-
|
|
174
|
-
container
|
|
175
|
-
.resolve(ProtocolMethodExecutionContext)
|
|
176
|
-
.current()
|
|
177
|
-
.result.stateTransitions.map((x) => x.toProvable())
|
|
178
|
-
.forEach((st) => {
|
|
179
|
-
hashList.push(st);
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
const blockProver = protocol.resolve("BlockProver");
|
|
183
|
-
|
|
184
|
-
const fromState = Field(1);
|
|
185
|
-
const toState = Field(2);
|
|
186
|
-
|
|
187
|
-
const [appProof, stProof] = generateTestProofs(
|
|
188
|
-
fromState,
|
|
189
|
-
toState,
|
|
190
|
-
hashList.commitment,
|
|
191
|
-
tx,
|
|
192
|
-
networkState
|
|
193
|
-
);
|
|
194
|
-
|
|
195
|
-
const fromProverState: BlockProverState = {
|
|
196
|
-
stateRoot: fromState,
|
|
197
|
-
transactionsHash: Field(0),
|
|
198
|
-
networkStateHash: networkState.hash(),
|
|
199
|
-
};
|
|
200
|
-
|
|
201
|
-
const toProverState = blockProver.applyTransaction(
|
|
202
|
-
fromProverState,
|
|
203
|
-
stProof,
|
|
204
|
-
appProof,
|
|
205
|
-
executionData
|
|
206
|
-
);
|
|
207
|
-
|
|
208
|
-
const publicInput = new BlockProverPublicInput({
|
|
209
|
-
stateRoot: fromProverState.stateRoot,
|
|
210
|
-
transactionsHash: fromProverState.transactionsHash,
|
|
211
|
-
networkStateHash: networkState.hash(),
|
|
212
|
-
});
|
|
213
|
-
|
|
214
|
-
const publicOutput = blockProver.proveTransaction(
|
|
215
|
-
publicInput,
|
|
216
|
-
stProof,
|
|
217
|
-
appProof,
|
|
218
|
-
{ networkState, transaction: tx }
|
|
219
|
-
);
|
|
220
|
-
|
|
221
|
-
expect(publicOutput.stateRoot).toStrictEqual(toProverState.stateRoot);
|
|
222
|
-
expect(publicOutput.transactionsHash).toStrictEqual(
|
|
223
|
-
toProverState.transactionsHash
|
|
224
|
-
);
|
|
120
|
+
it("dummy", () => {
|
|
121
|
+
expect(1).toBe(1);
|
|
225
122
|
});
|
|
123
|
+
|
|
124
|
+
// TODO
|
|
125
|
+
// it("previously applied transaction should also pass with derived publicInputs", () => {
|
|
126
|
+
// expect.assertions(2);
|
|
127
|
+
//
|
|
128
|
+
// const priv = PrivateKey.random();
|
|
129
|
+
//
|
|
130
|
+
// const tx = new UnsignedTransaction({
|
|
131
|
+
// methodId: Field(0),
|
|
132
|
+
// args: [Field(0)],
|
|
133
|
+
// nonce: UInt64.zero,
|
|
134
|
+
// sender: priv.toPublicKey(),
|
|
135
|
+
// })
|
|
136
|
+
// .sign(priv)
|
|
137
|
+
// .toProtocolTransaction();
|
|
138
|
+
//
|
|
139
|
+
// const executionData = {
|
|
140
|
+
// networkState,
|
|
141
|
+
// transaction: tx,
|
|
142
|
+
// };
|
|
143
|
+
//
|
|
144
|
+
// // const asmodule = protocol.resolve()
|
|
145
|
+
//
|
|
146
|
+
// protocol.dependencyContainer
|
|
147
|
+
// .resolveAll<ProvableBlockHook<unknown>>("ProvableBlockHook")
|
|
148
|
+
// .forEach((module) => {
|
|
149
|
+
// module.beforeBlock(executionData);
|
|
150
|
+
// });
|
|
151
|
+
//
|
|
152
|
+
// const hashList = new DefaultProvableHashList(ProvableStateTransition);
|
|
153
|
+
//
|
|
154
|
+
// container
|
|
155
|
+
// .resolve(ProtocolMethodExecutionContext)
|
|
156
|
+
// .current()
|
|
157
|
+
// .result.stateTransitions.map((x) => x.toProvable())
|
|
158
|
+
// .forEach((st) => {
|
|
159
|
+
// hashList.push(st);
|
|
160
|
+
// });
|
|
161
|
+
//
|
|
162
|
+
// const blockProver = protocol.resolve("BlockProver");
|
|
163
|
+
//
|
|
164
|
+
// const fromState = Field(1);
|
|
165
|
+
// const toState = Field(2);
|
|
166
|
+
//
|
|
167
|
+
// const [appProof, stProof] = generateTestProofs(
|
|
168
|
+
// fromState,
|
|
169
|
+
// toState,
|
|
170
|
+
// hashList.commitment,
|
|
171
|
+
// tx,
|
|
172
|
+
// networkState
|
|
173
|
+
// );
|
|
174
|
+
//
|
|
175
|
+
// const fromProverState: BlockProverState = {
|
|
176
|
+
// stateRoot: fromState,
|
|
177
|
+
// transactionsHash: Field(0),
|
|
178
|
+
// networkStateHash: networkState.hash(),
|
|
179
|
+
// };
|
|
180
|
+
//
|
|
181
|
+
// const toProverState = blockProver.applyTransaction(
|
|
182
|
+
// fromProverState,
|
|
183
|
+
// stProof,
|
|
184
|
+
// appProof,
|
|
185
|
+
// executionData
|
|
186
|
+
// );
|
|
187
|
+
//
|
|
188
|
+
// const publicInput = new BlockProverPublicInput({
|
|
189
|
+
// stateRoot: fromProverState.stateRoot,
|
|
190
|
+
// transactionsHash: fromProverState.transactionsHash,
|
|
191
|
+
// networkStateHash: networkState.hash(),
|
|
192
|
+
// });
|
|
193
|
+
//
|
|
194
|
+
// const publicOutput = blockProver.proveTransaction(
|
|
195
|
+
// publicInput,
|
|
196
|
+
// stProof,
|
|
197
|
+
// appProof,
|
|
198
|
+
// { networkState, transaction: tx }
|
|
199
|
+
// );
|
|
200
|
+
//
|
|
201
|
+
// expect(publicOutput.stateRoot).toStrictEqual(toProverState.stateRoot);
|
|
202
|
+
// expect(publicOutput.transactionsHash).toStrictEqual(
|
|
203
|
+
// toProverState.transactionsHash
|
|
204
|
+
// );
|
|
205
|
+
// });
|
|
226
206
|
});
|
|
207
|
+
|
|
208
|
+
/* eslint-enable */
|
package/test/Protocol.test.ts
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
|
-
import { Protocol, VanillaProtocol } from "../src/protocol/Protocol";
|
|
3
2
|
import { beforeEach } from "@jest/globals";
|
|
3
|
+
|
|
4
4
|
import { BlockProver } from "../src/prover/block/BlockProver";
|
|
5
5
|
import { StateTransitionProver } from "../src/prover/statetransition/StateTransitionProver";
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
} from "../src";
|
|
10
|
-
import { AccountStateHook } from "../src/blockmodules/AccountStateHook";
|
|
6
|
+
import { ProvableTransactionHook } from "../src";
|
|
7
|
+
|
|
8
|
+
import { createAndInitTestingProtocol } from "./TestingProtocol";
|
|
11
9
|
|
|
12
10
|
describe("protocol", () => {
|
|
13
11
|
beforeEach(() => {});
|
|
@@ -15,11 +13,7 @@ describe("protocol", () => {
|
|
|
15
13
|
it("should resolve all provers correctly", async () => {
|
|
16
14
|
expect.assertions(2);
|
|
17
15
|
|
|
18
|
-
const protocol =
|
|
19
|
-
|
|
20
|
-
protocol.dependencyContainer.register("StateTransitionWitnessProvider", {
|
|
21
|
-
useValue: new NoOpStateTransitionWitnessProvider(),
|
|
22
|
-
});
|
|
16
|
+
const protocol = createAndInitTestingProtocol();
|
|
23
17
|
|
|
24
18
|
expect(protocol.blockProver instanceof BlockProver).toBe(true);
|
|
25
19
|
expect(
|
|
@@ -27,16 +21,10 @@ describe("protocol", () => {
|
|
|
27
21
|
).toBe(true);
|
|
28
22
|
});
|
|
29
23
|
|
|
30
|
-
it
|
|
24
|
+
it("should initialize hooks correctly", () => {
|
|
31
25
|
expect.assertions(2);
|
|
32
26
|
|
|
33
|
-
const protocol =
|
|
34
|
-
modules: {
|
|
35
|
-
BlockProver,
|
|
36
|
-
StateTransitionProver,
|
|
37
|
-
AccountStateHook,
|
|
38
|
-
},
|
|
39
|
-
});
|
|
27
|
+
const protocol = createAndInitTestingProtocol();
|
|
40
28
|
|
|
41
29
|
const hooks =
|
|
42
30
|
protocol.dependencyContainer.resolveAll<ProvableTransactionHook>(
|
|
@@ -44,6 +32,6 @@ describe("protocol", () => {
|
|
|
44
32
|
);
|
|
45
33
|
|
|
46
34
|
expect(hooks).toHaveLength(1);
|
|
47
|
-
expect(hooks[0].name).toBe("
|
|
35
|
+
expect(hooks[0].name).toBe("AccountState");
|
|
48
36
|
});
|
|
49
37
|
});
|