@proto-kit/protocol 0.1.1-develop.600 → 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 +15 -9
- package/dist/hooks/BlockHeightHook.d.ts +3 -3
- package/dist/hooks/BlockHeightHook.d.ts.map +1 -1
- package/dist/hooks/BlockHeightHook.js +5 -4
- package/dist/hooks/LastStateRootBlockHook.d.ts +8 -0
- package/dist/hooks/LastStateRootBlockHook.d.ts.map +1 -0
- package/dist/hooks/LastStateRootBlockHook.js +15 -0
- package/dist/hooks/NoopBlockHook.d.ts +6 -4
- package/dist/hooks/NoopBlockHook.d.ts.map +1 -1
- package/dist/hooks/NoopBlockHook.js +4 -4
- package/dist/hooks/NoopSettlementHook.d.ts +6 -0
- package/dist/hooks/NoopSettlementHook.d.ts.map +1 -0
- package/dist/hooks/NoopSettlementHook.js +17 -0
- 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 +18 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -8
- package/dist/model/MethodPublicOutput.d.ts +68 -34
- package/dist/model/MethodPublicOutput.d.ts.map +1 -1
- package/dist/model/Option.d.ts +39 -19
- package/dist/model/Option.d.ts.map +1 -1
- package/dist/model/Option.js +6 -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/RuntimeLike.d.ts +11 -0
- package/dist/model/RuntimeLike.d.ts.map +1 -0
- package/dist/model/RuntimeLike.js +1 -0
- package/dist/model/StateTransition.d.ts +51 -14
- package/dist/model/StateTransition.d.ts.map +1 -1
- package/dist/model/StateTransition.js +3 -0
- package/dist/model/StateTransitionProvableBatch.d.ts +71 -14
- package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -1
- package/dist/model/StateTransitionReduction.d.ts +3 -0
- package/dist/model/StateTransitionReduction.d.ts.map +1 -0
- package/dist/model/StateTransitionReduction.js +26 -0
- 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 +14 -20
- package/dist/protocol/Protocol.d.ts.map +1 -1
- package/dist/protocol/Protocol.js +13 -27
- 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 +4 -2
- 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 +55 -45
- 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/accummulators/BlockHashMerkleTree.js +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 +10 -9
- package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
- package/dist/prover/statetransition/StateTransitionProver.js +18 -22
- package/dist/prover/statetransition/StateTransitionWitnessProvider.js +1 -2
- package/dist/prover/statetransition/StateTransitionWitnessProviderReference.js +1 -2
- package/dist/settlement/ContractModule.d.ts +15 -0
- package/dist/settlement/ContractModule.d.ts.map +1 -0
- package/dist/settlement/ContractModule.js +11 -0
- 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 +40 -0
- package/dist/settlement/SettlementContractModule.d.ts.map +1 -0
- package/dist/settlement/SettlementContractModule.js +71 -0
- 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.d.ts +12 -0
- package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts.map +1 -0
- package/dist/{hooks/TransactionFeeHook.js → settlement/contracts/DispatchContractProtocolModule.js} +17 -21
- package/dist/settlement/contracts/DispatchSmartContract.d.ts +22 -0
- package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -0
- package/dist/settlement/contracts/DispatchSmartContract.js +110 -0
- 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 +19 -0
- package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts.map +1 -0
- package/dist/settlement/contracts/SettlementContractProtocolModule.js +44 -0
- package/dist/settlement/contracts/SettlementSmartContract.d.ts +42 -0
- package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -0
- package/dist/settlement/contracts/SettlementSmartContract.js +246 -0
- package/dist/settlement/messages/Deposit.d.ts +64 -0
- package/dist/settlement/messages/Deposit.d.ts.map +1 -0
- package/dist/settlement/messages/Deposit.js +6 -0
- package/dist/settlement/messages/OutgoingMessageArgument.d.ts +189 -0
- package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -0
- package/dist/settlement/messages/OutgoingMessageArgument.js +32 -0
- package/dist/settlement/messages/Withdrawal.d.ts +65 -0
- package/dist/settlement/messages/Withdrawal.d.ts.map +1 -0
- package/dist/settlement/messages/Withdrawal.js +13 -0
- package/dist/settlement/modularity/ProvableSettlementHook.d.ts +24 -0
- package/dist/settlement/modularity/ProvableSettlementHook.d.ts.map +1 -0
- package/dist/settlement/modularity/ProvableSettlementHook.js +3 -0
- package/dist/settlement/modules/NetworkStateSettlementModule.d.ts +3 -3
- package/dist/settlement/modules/NetworkStateSettlementModule.d.ts.map +1 -1
- package/dist/settlement/modules/NetworkStateSettlementModule.js +4 -2
- package/dist/state/State.d.ts +4 -3
- package/dist/state/State.d.ts.map +1 -1
- package/dist/state/State.js +18 -12
- 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 +11 -5
- 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 +55 -4
- package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -1
- package/dist/state/context/RuntimeMethodExecutionContext.js +6 -6
- 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 +2 -2
- package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -1
- package/dist/utils/MinaPrefixedProvableHashList.js +1 -0
- package/dist/utils/PrefixedProvableHashList.d.ts +2 -2
- package/dist/utils/PrefixedProvableHashList.d.ts.map +1 -1
- package/dist/utils/ProvableHashList.d.ts +4 -4
- package/dist/utils/ProvableHashList.d.ts.map +1 -1
- package/dist/utils/ProvableReductionHashList.d.ts +14 -0
- package/dist/utils/ProvableReductionHashList.d.ts.map +1 -0
- package/dist/utils/ProvableReductionHashList.js +50 -0
- package/dist/utils/StateTransitionReductionList.d.ts +11 -0
- package/dist/utils/StateTransitionReductionList.d.ts.map +1 -0
- package/dist/utils/StateTransitionReductionList.js +60 -0
- 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/{blockmodules/AccountStateModule.ts → hooks/AccountStateHook.ts} +13 -9
- package/src/{blockmodules → hooks}/BlockHeightHook.ts +3 -4
- package/src/{blockmodules → hooks}/LastStateRootBlockHook.ts +4 -4
- package/src/{blockmodules → hooks}/NoopBlockHook.ts +6 -5
- package/src/{blockmodules → hooks}/NoopSettlementHook.ts +3 -4
- package/src/{blockmodules → hooks}/NoopTransactionHook.ts +5 -1
- package/src/index.ts +18 -8
- package/src/model/MethodPublicOutput.ts +2 -2
- package/src/model/Option.ts +21 -1
- package/src/model/Path.ts +1 -3
- package/src/model/RuntimeLike.ts +12 -0
- package/src/model/StateTransition.ts +9 -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 +34 -48
- package/src/protocol/ProtocolEnvironment.ts +7 -6
- package/src/protocol/ProtocolModule.ts +8 -4
- 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 +98 -63
- package/src/prover/block/accummulators/BlockHashMerkleTree.ts +2 -2
- package/src/prover/statetransition/StateTransitionProvable.ts +3 -3
- package/src/prover/statetransition/StateTransitionProver.ts +26 -28
- package/src/settlement/ContractModule.ts +24 -0
- package/src/settlement/SettlementContractModule.ts +132 -0
- package/src/settlement/contracts/DispatchContractProtocolModule.ts +39 -0
- package/src/settlement/contracts/DispatchSmartContract.ts +136 -0
- package/src/settlement/contracts/SettlementContractProtocolModule.ts +67 -0
- package/src/settlement/contracts/SettlementSmartContract.ts +350 -0
- package/src/settlement/messages/Deposit.ts +6 -0
- package/src/settlement/messages/OutgoingMessageArgument.ts +42 -0
- package/src/settlement/messages/Withdrawal.ts +14 -0
- package/src/settlement/{ProvableSettlementHook.ts → modularity/ProvableSettlementHook.ts} +9 -13
- package/src/settlement/modules/NetworkStateSettlementModule.ts +8 -5
- package/src/state/State.ts +21 -13
- 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 +13 -7
- package/src/state/context/RuntimeMethodExecutionContext.ts +13 -7
- package/src/state/context/TransitionMethodExecutionContext.ts +0 -1
- package/src/state/protocol/ProtocolState.ts +1 -4
- package/src/utils/MinaPrefixedProvableHashList.ts +4 -3
- package/src/utils/PrefixedProvableHashList.ts +2 -2
- package/src/utils/ProvableHashList.ts +2 -2
- package/src/utils/ProvableReductionHashList.ts +68 -0
- package/src/utils/StateTransitionReductionList.ts +89 -0
- package/src/utils/utils.ts +4 -9
- package/test/BlockProver.test.ts +110 -128
- package/test/Protocol.test.ts +14 -21
- 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 +117 -0
- 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/src/blockmodules/SequenceStateTransactionModule.ts +0 -25
- package/src/model/Option.test.ts +0 -21
- package/src/settlement/SettlementContract.ts +0 -444
- package/src/state/context/ProtocolMethodExecutionContext.ts +0 -36
- package/test/Option.test.ts +0 -64
- package/tsconfig.test.json +0 -9
|
@@ -44,7 +44,7 @@ export class StateTransition<Value> {
|
|
|
44
44
|
|
|
45
45
|
public constructor(
|
|
46
46
|
public path: Field,
|
|
47
|
-
public fromValue: Option<
|
|
47
|
+
public fromValue: Option<Value>,
|
|
48
48
|
public toValue: Option<Field> | Option<Value>
|
|
49
49
|
) {}
|
|
50
50
|
|
|
@@ -77,4 +77,12 @@ export class StateTransition<Value> {
|
|
|
77
77
|
to: this.toValue.toJSON(),
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
|
+
|
|
81
|
+
public toConstant(): StateTransition<Value> {
|
|
82
|
+
return new StateTransition<Value>(
|
|
83
|
+
this.path.toConstant(),
|
|
84
|
+
this.fromValue.toConstant(),
|
|
85
|
+
this.toValue.toConstant()
|
|
86
|
+
);
|
|
87
|
+
}
|
|
80
88
|
}
|
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 {
|
|
16
|
+
import { SimpleAsyncStateService } from "../state/StateService";
|
|
17
|
+
import { NoopBlockHook } from "../hooks/NoopBlockHook";
|
|
18
|
+
import { BlockHeightHook } from "../hooks/BlockHeightHook";
|
|
19
|
+
import { LastStateRootBlockHook } from "../hooks/LastStateRootBlockHook";
|
|
20
|
+
import { ProvableSettlementHook } from "../settlement/modularity/ProvableSettlementHook";
|
|
21
|
+
import { NoopSettlementHook } from "../hooks/NoopSettlementHook";
|
|
22
|
+
import { AccountStateHook } from "../hooks/AccountStateHook";
|
|
23
|
+
import { NoopTransactionHook } from "../hooks/NoopTransactionHook";
|
|
19
24
|
|
|
20
25
|
import { ProtocolModule } from "./ProtocolModule";
|
|
21
26
|
import { ProvableTransactionHook } from "./ProvableTransactionHook";
|
|
22
|
-
import { NoopTransactionHook } from "../blockmodules/NoopTransactionHook";
|
|
23
27
|
import { ProtocolEnvironment } from "./ProtocolEnvironment";
|
|
24
|
-
import { AccountStateModule } from "../blockmodules/AccountStateModule";
|
|
25
28
|
import { ProvableBlockHook } from "./ProvableBlockHook";
|
|
26
|
-
import { NoopBlockHook } from "../blockmodules/NoopBlockHook";
|
|
27
|
-
import { BlockHeightHook } from "../blockmodules/BlockHeightHook";
|
|
28
|
-
import { LastStateRootBlockHook } from "../blockmodules/LastStateRootBlockHook";
|
|
29
|
-
import { ProvableSettlementHook } from "../settlement/ProvableSettlementHook";
|
|
30
|
-
import { NoopSettlementHook } from "../blockmodules/NoopSettlementHook";
|
|
31
29
|
|
|
32
30
|
const PROTOCOL_INJECTION_TOKENS: Record<string, string> = {
|
|
33
31
|
ProvableTransactionHook: "ProvableTransactionHook",
|
|
@@ -35,42 +33,38 @@ const PROTOCOL_INJECTION_TOKENS: Record<string, string> = {
|
|
|
35
33
|
ProvableSettlementHook: "ProvableSettlementHook",
|
|
36
34
|
};
|
|
37
35
|
|
|
38
|
-
export type
|
|
36
|
+
export type ProtocolModulesRecord = ModulesRecord<
|
|
39
37
|
TypedClass<ProtocolModule<unknown>>
|
|
40
38
|
>;
|
|
41
39
|
|
|
42
|
-
interface BlockProverType extends ProtocolModule, BlockProvable {}
|
|
40
|
+
export interface BlockProverType extends ProtocolModule, BlockProvable {}
|
|
43
41
|
|
|
44
|
-
interface StateTransitionProverType
|
|
42
|
+
export interface StateTransitionProverType
|
|
45
43
|
extends ProtocolModule,
|
|
46
44
|
StateTransitionProvable {}
|
|
47
45
|
|
|
48
|
-
export
|
|
49
|
-
extends GenericProtocolModuleRecord {
|
|
46
|
+
export type MandatoryProtocolModulesRecord = {
|
|
50
47
|
BlockProver: TypedClass<BlockProverType>;
|
|
51
48
|
StateTransitionProver: TypedClass<StateTransitionProverType>;
|
|
52
|
-
AccountState: TypedClass<
|
|
49
|
+
AccountState: TypedClass<AccountStateHook>;
|
|
53
50
|
BlockHeight: TypedClass<BlockHeightHook>;
|
|
54
51
|
LastStateRoot: TypedClass<LastStateRootBlockHook>;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export interface ProtocolModulesRecord
|
|
58
|
-
extends GenericProtocolModuleRecord,
|
|
59
|
-
ProtocolCustomModulesRecord {}
|
|
52
|
+
};
|
|
60
53
|
|
|
61
54
|
export interface ProtocolDefinition<Modules extends ProtocolModulesRecord> {
|
|
62
55
|
modules: Modules;
|
|
63
56
|
config?: ModulesConfig<Modules>;
|
|
64
57
|
}
|
|
65
58
|
|
|
66
|
-
export class Protocol<
|
|
59
|
+
export class Protocol<
|
|
60
|
+
Modules extends ProtocolModulesRecord & MandatoryProtocolModulesRecord,
|
|
61
|
+
>
|
|
67
62
|
extends ModuleContainer<Modules>
|
|
68
63
|
implements ProtocolEnvironment
|
|
69
64
|
{
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
): TypedClass<Protocol<Modules>> {
|
|
65
|
+
public static from<
|
|
66
|
+
Modules extends ProtocolModulesRecord & MandatoryProtocolModulesRecord,
|
|
67
|
+
>(modules: ProtocolDefinition<Modules>): TypedClass<Protocol<Modules>> {
|
|
74
68
|
return class ScopedProtocol extends Protocol<Modules> {
|
|
75
69
|
public constructor() {
|
|
76
70
|
super(modules);
|
|
@@ -85,7 +79,7 @@ export class Protocol<Modules extends ProtocolModulesRecord>
|
|
|
85
79
|
this.definition = definition;
|
|
86
80
|
}
|
|
87
81
|
|
|
88
|
-
public get stateService():
|
|
82
|
+
public get stateService(): SimpleAsyncStateService {
|
|
89
83
|
return this.stateServiceProvider.stateService;
|
|
90
84
|
}
|
|
91
85
|
|
|
@@ -187,25 +181,17 @@ export class Protocol<Modules extends ProtocolModulesRecord>
|
|
|
187
181
|
}
|
|
188
182
|
});
|
|
189
183
|
}
|
|
190
|
-
}
|
|
191
184
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
BlockHeight: BlockHeightHook,
|
|
206
|
-
LastStateRoot: LastStateRootBlockHook,
|
|
207
|
-
...additionalModules,
|
|
208
|
-
},
|
|
209
|
-
});
|
|
210
|
-
},
|
|
211
|
-
};
|
|
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
|
+
}
|
|
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
|
+
}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AreProofsEnabled,
|
|
3
3
|
ChildContainerProvider,
|
|
4
|
-
ConfigurableModule,
|
|
5
|
-
|
|
4
|
+
ConfigurableModule,
|
|
5
|
+
NoConfig,
|
|
6
|
+
noop,
|
|
6
7
|
} from "@proto-kit/common";
|
|
7
8
|
|
|
8
9
|
import { ProtocolEnvironment } from "./ProtocolEnvironment";
|
|
9
10
|
|
|
10
11
|
export abstract class ProtocolModule<
|
|
11
|
-
Config = NoConfig
|
|
12
|
+
Config = NoConfig,
|
|
12
13
|
> extends ConfigurableModule<Config> {
|
|
13
14
|
public protocol?: ProtocolEnvironment;
|
|
14
15
|
|
|
@@ -16,8 +17,11 @@ export abstract class ProtocolModule<
|
|
|
16
17
|
return this.protocol?.getAreProofsEnabled();
|
|
17
18
|
}
|
|
18
19
|
|
|
19
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
20
20
|
public create(childContainerProvider: ChildContainerProvider): void {
|
|
21
21
|
noop();
|
|
22
22
|
}
|
|
23
|
+
|
|
24
|
+
public async start() {
|
|
25
|
+
noop();
|
|
26
|
+
}
|
|
23
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
|
}
|