@proto-kit/protocol 0.1.1-develop.211 → 0.1.1-develop.2137
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Constants.js +1 -0
- package/dist/Constants.js.map +1 -0
- package/dist/hashing/mina-prefixes.d.ts +10 -0
- package/dist/hashing/mina-prefixes.d.ts.map +1 -0
- package/dist/hashing/mina-prefixes.js +10 -0
- package/dist/hashing/mina-prefixes.js.map +1 -0
- package/dist/hashing/protokit-prefixes.d.ts +10 -0
- package/dist/hashing/protokit-prefixes.d.ts.map +1 -0
- package/dist/hashing/protokit-prefixes.js +24 -0
- package/dist/hashing/protokit-prefixes.js.map +1 -0
- package/dist/hooks/AccountStateHook.d.ts +56 -0
- package/dist/hooks/AccountStateHook.d.ts.map +1 -0
- package/dist/hooks/AccountStateHook.js +62 -0
- package/dist/hooks/AccountStateHook.js.map +1 -0
- package/dist/hooks/BlockHeightHook.d.ts +7 -0
- package/dist/hooks/BlockHeightHook.d.ts.map +1 -0
- package/dist/hooks/BlockHeightHook.js +16 -0
- package/dist/hooks/BlockHeightHook.js.map +1 -0
- package/dist/hooks/LastStateRootBlockHook.d.ts +7 -0
- package/dist/hooks/LastStateRootBlockHook.d.ts.map +1 -0
- package/dist/hooks/LastStateRootBlockHook.js +16 -0
- package/dist/hooks/LastStateRootBlockHook.js.map +1 -0
- package/dist/hooks/NoopBlockHook.d.ts +8 -0
- package/dist/hooks/NoopBlockHook.d.ts.map +1 -0
- package/dist/hooks/NoopBlockHook.js +10 -0
- package/dist/hooks/NoopBlockHook.js.map +1 -0
- package/dist/hooks/NoopSettlementHook.d.ts +6 -0
- package/dist/hooks/NoopSettlementHook.d.ts.map +1 -0
- package/dist/{prover/statetransition/StateTransitionWitnessProvider.js → hooks/NoopSettlementHook.js} +8 -7
- package/dist/hooks/NoopSettlementHook.js.map +1 -0
- package/dist/hooks/NoopTransactionHook.d.ts +6 -0
- package/dist/hooks/NoopTransactionHook.d.ts.map +1 -0
- package/dist/hooks/NoopTransactionHook.js +11 -0
- package/dist/hooks/NoopTransactionHook.js.map +1 -0
- package/dist/index.d.ts +51 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +52 -13
- package/dist/index.js.map +1 -0
- package/dist/model/AppliedStateTransitionBatch.d.ts +114 -0
- package/dist/model/AppliedStateTransitionBatch.d.ts.map +1 -0
- package/dist/model/AppliedStateTransitionBatch.js +16 -0
- package/dist/model/AppliedStateTransitionBatch.js.map +1 -0
- package/dist/model/MethodPublicOutput.d.ts +83 -28
- package/dist/model/MethodPublicOutput.d.ts.map +1 -1
- package/dist/model/MethodPublicOutput.js +4 -1
- package/dist/model/MethodPublicOutput.js.map +1 -0
- package/dist/model/Option.d.ts +66 -42
- package/dist/model/Option.d.ts.map +1 -1
- package/dist/model/Option.js +58 -45
- package/dist/model/Option.js.map +1 -0
- package/dist/model/Path.d.ts +4 -3
- package/dist/model/Path.d.ts.map +1 -1
- package/dist/model/Path.js +6 -5
- package/dist/model/Path.js.map +1 -0
- package/dist/model/RuntimeLike.d.ts +11 -0
- package/dist/model/RuntimeLike.d.ts.map +1 -0
- package/dist/model/RuntimeLike.js +2 -0
- package/dist/model/RuntimeLike.js.map +1 -0
- package/dist/model/StateTransition.d.ts +58 -18
- package/dist/model/StateTransition.d.ts.map +1 -1
- package/dist/model/StateTransition.js +13 -4
- package/dist/model/StateTransition.js.map +1 -0
- package/dist/model/StateTransitionProvableBatch.d.ts +369 -54
- package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -1
- package/dist/model/StateTransitionProvableBatch.js +74 -51
- package/dist/model/StateTransitionProvableBatch.js.map +1 -0
- package/dist/model/network/NetworkState.d.ts +105 -9
- package/dist/model/network/NetworkState.d.ts.map +1 -1
- package/dist/model/network/NetworkState.js +22 -2
- package/dist/model/network/NetworkState.js.map +1 -0
- package/dist/model/transaction/AuthorizedTransaction.d.ts +122 -0
- package/dist/model/transaction/AuthorizedTransaction.d.ts.map +1 -0
- package/dist/model/transaction/AuthorizedTransaction.js +39 -0
- package/dist/model/transaction/AuthorizedTransaction.js.map +1 -0
- package/dist/model/transaction/RuntimeTransaction.d.ts +94 -34
- package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -1
- package/dist/model/transaction/RuntimeTransaction.js +72 -11
- package/dist/model/transaction/RuntimeTransaction.js.map +1 -0
- package/dist/model/transaction/SignedTransaction.d.ts +110 -0
- package/dist/model/transaction/SignedTransaction.d.ts.map +1 -0
- package/dist/model/transaction/SignedTransaction.js +34 -0
- package/dist/model/transaction/SignedTransaction.js.map +1 -0
- package/dist/model/transaction/ValueOption.d.ts +187 -0
- package/dist/model/transaction/ValueOption.d.ts.map +1 -0
- package/dist/model/transaction/ValueOption.js +25 -0
- package/dist/model/transaction/ValueOption.js.map +1 -0
- package/dist/protocol/Protocol.d.ts +45 -34
- package/dist/protocol/Protocol.d.ts.map +1 -1
- package/dist/protocol/Protocol.js +115 -57
- package/dist/protocol/Protocol.js.map +1 -0
- package/dist/protocol/ProtocolEnvironment.d.ts +9 -0
- package/dist/protocol/ProtocolEnvironment.d.ts.map +1 -0
- package/dist/protocol/ProtocolEnvironment.js +2 -0
- package/dist/protocol/ProtocolEnvironment.js.map +1 -0
- package/dist/protocol/ProtocolModule.d.ts +7 -6
- package/dist/protocol/ProtocolModule.d.ts.map +1 -1
- package/dist/protocol/ProtocolModule.js +10 -5
- package/dist/protocol/ProtocolModule.js.map +1 -0
- package/dist/protocol/ProvableBlockHook.d.ts +29 -0
- package/dist/protocol/ProvableBlockHook.d.ts.map +1 -0
- package/dist/protocol/ProvableBlockHook.js +20 -0
- package/dist/protocol/ProvableBlockHook.js.map +1 -0
- package/dist/protocol/ProvableTransactionHook.d.ts +32 -3
- package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -1
- package/dist/protocol/ProvableTransactionHook.js +25 -0
- package/dist/protocol/ProvableTransactionHook.js.map +1 -0
- package/dist/protocol/TransitioningProtocolModule.d.ts +6 -1
- package/dist/protocol/TransitioningProtocolModule.d.ts.map +1 -1
- package/dist/protocol/TransitioningProtocolModule.js +6 -0
- package/dist/protocol/TransitioningProtocolModule.js.map +1 -0
- package/dist/prover/accumulators/AppliedBatchHashList.d.ts +18 -0
- package/dist/prover/accumulators/AppliedBatchHashList.d.ts.map +1 -0
- package/dist/prover/accumulators/AppliedBatchHashList.js +25 -0
- package/dist/prover/accumulators/AppliedBatchHashList.js.map +1 -0
- package/dist/prover/accumulators/BlockHashList.d.ts +263 -0
- package/dist/prover/accumulators/BlockHashList.d.ts.map +1 -0
- package/dist/prover/accumulators/BlockHashList.js +97 -0
- package/dist/prover/accumulators/BlockHashList.js.map +1 -0
- package/dist/prover/accumulators/StateTransitionReductionList.d.ts +12 -0
- package/dist/prover/accumulators/StateTransitionReductionList.d.ts.map +1 -0
- package/dist/prover/accumulators/StateTransitionReductionList.js +64 -0
- package/dist/prover/accumulators/StateTransitionReductionList.js.map +1 -0
- package/dist/prover/accumulators/TransactionHashList.d.ts +6 -0
- package/dist/prover/accumulators/TransactionHashList.d.ts.map +1 -0
- package/dist/prover/accumulators/TransactionHashList.js +8 -0
- package/dist/prover/accumulators/TransactionHashList.js.map +1 -0
- package/dist/prover/accumulators/WitnessedRootHashList.d.ts +123 -0
- package/dist/prover/accumulators/WitnessedRootHashList.d.ts.map +1 -0
- package/dist/prover/accumulators/WitnessedRootHashList.js +51 -0
- package/dist/prover/accumulators/WitnessedRootHashList.js.map +1 -0
- package/dist/prover/block/BlockProvable.d.ts +565 -96
- package/dist/prover/block/BlockProvable.d.ts.map +1 -1
- package/dist/prover/block/BlockProvable.js +196 -12
- package/dist/prover/block/BlockProvable.js.map +1 -0
- package/dist/prover/block/BlockProver.d.ts +45 -44
- package/dist/prover/block/BlockProver.d.ts.map +1 -1
- package/dist/prover/block/BlockProver.js +306 -143
- package/dist/prover/block/BlockProver.js.map +1 -0
- package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts +106 -0
- package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts.map +1 -0
- package/dist/prover/block/accummulators/BlockHashMerkleTree.js +25 -0
- package/dist/prover/block/accummulators/BlockHashMerkleTree.js.map +1 -0
- package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts +139 -0
- package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts.map +1 -0
- package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js +21 -0
- package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js.map +1 -0
- package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts +7 -0
- package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts.map +1 -0
- package/dist/prover/{statetransition/StateTransitionWitnessProviderReference.js → block/services/RuntimeVerificationKeyRootService.js} +11 -8
- package/dist/prover/block/services/RuntimeVerificationKeyRootService.js.map +1 -0
- package/dist/prover/statetransition/StateTransitionProvable.d.ts +137 -64
- package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -1
- package/dist/prover/statetransition/StateTransitionProvable.js +10 -7
- package/dist/prover/statetransition/StateTransitionProvable.js.map +1 -0
- package/dist/prover/statetransition/StateTransitionProver.d.ts +26 -24
- package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
- package/dist/prover/statetransition/StateTransitionProver.js +159 -93
- package/dist/prover/statetransition/StateTransitionProver.js.map +1 -0
- package/dist/prover/transaction/TransactionProvable.d.ts +626 -0
- package/dist/prover/transaction/TransactionProvable.d.ts.map +1 -0
- package/dist/prover/transaction/TransactionProvable.js +87 -0
- package/dist/prover/transaction/TransactionProvable.js.map +1 -0
- package/dist/prover/transaction/TransactionProver.d.ts +68 -0
- package/dist/prover/transaction/TransactionProver.d.ts.map +1 -0
- package/dist/prover/transaction/TransactionProver.js +301 -0
- package/dist/prover/transaction/TransactionProver.js.map +1 -0
- package/dist/prover/utils.d.ts +19 -0
- package/dist/prover/utils.d.ts.map +1 -0
- package/dist/prover/utils.js +67 -0
- package/dist/prover/utils.js.map +1 -0
- package/dist/settlement/ContractArgsRegistry.d.ts +13 -0
- package/dist/settlement/ContractArgsRegistry.d.ts.map +1 -0
- package/dist/settlement/ContractArgsRegistry.js +58 -0
- package/dist/settlement/ContractArgsRegistry.js.map +1 -0
- package/dist/settlement/ContractModule.d.ts +16 -0
- package/dist/settlement/ContractModule.d.ts.map +1 -0
- package/dist/settlement/ContractModule.js +12 -0
- package/dist/settlement/ContractModule.js.map +1 -0
- package/dist/settlement/SettlementContractModule.d.ts +47 -0
- package/dist/settlement/SettlementContractModule.d.ts.map +1 -0
- package/dist/settlement/SettlementContractModule.js +81 -0
- package/dist/settlement/SettlementContractModule.js.map +1 -0
- package/dist/settlement/contracts/BridgeContract.d.ts +114 -0
- package/dist/settlement/contracts/BridgeContract.d.ts.map +1 -0
- package/dist/settlement/contracts/BridgeContract.js +270 -0
- package/dist/settlement/contracts/BridgeContract.js.map +1 -0
- package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts +18 -0
- package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts.map +1 -0
- package/dist/settlement/contracts/BridgeContractProtocolModule.js +42 -0
- package/dist/settlement/contracts/BridgeContractProtocolModule.js.map +1 -0
- package/dist/settlement/contracts/BridgingSettlementContractModule.d.ts +21 -0
- package/dist/settlement/contracts/BridgingSettlementContractModule.d.ts.map +1 -0
- package/dist/settlement/contracts/BridgingSettlementContractModule.js +81 -0
- package/dist/settlement/contracts/BridgingSettlementContractModule.js.map +1 -0
- package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +23 -0
- package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts.map +1 -0
- package/dist/settlement/contracts/DispatchContractProtocolModule.js +55 -0
- package/dist/settlement/contracts/DispatchContractProtocolModule.js.map +1 -0
- package/dist/settlement/contracts/DispatchSmartContract.d.ts +50 -0
- package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -0
- package/dist/settlement/contracts/DispatchSmartContract.js +234 -0
- package/dist/settlement/contracts/DispatchSmartContract.js.map +1 -0
- package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts +21 -0
- package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts.map +1 -0
- package/dist/settlement/contracts/SettlementContractProtocolModule.js +84 -0
- package/dist/settlement/contracts/SettlementContractProtocolModule.js.map +1 -0
- package/dist/settlement/contracts/SettlementSmartContract.d.ts +123 -0
- package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -0
- package/dist/settlement/contracts/SettlementSmartContract.js +310 -0
- package/dist/settlement/contracts/SettlementSmartContract.js.map +1 -0
- package/dist/settlement/contracts/SettlementSmartContractModule.d.ts +20 -0
- package/dist/settlement/contracts/SettlementSmartContractModule.d.ts.map +1 -0
- package/dist/settlement/contracts/SettlementSmartContractModule.js +56 -0
- package/dist/settlement/contracts/SettlementSmartContractModule.js.map +1 -0
- package/dist/settlement/contracts/TokenBridgeTree.d.ts +228 -0
- package/dist/settlement/contracts/TokenBridgeTree.d.ts.map +1 -0
- package/dist/settlement/contracts/TokenBridgeTree.js +60 -0
- package/dist/settlement/contracts/TokenBridgeTree.js.map +1 -0
- package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts +10 -0
- package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts.map +1 -0
- package/dist/settlement/contracts/authorizations/ContractAuthorization.js +2 -0
- package/dist/settlement/contracts/authorizations/ContractAuthorization.js.map +1 -0
- package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts +85 -0
- package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts.map +1 -0
- package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js +11 -0
- package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js.map +1 -0
- package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts +79 -0
- package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts.map +1 -0
- package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js +11 -0
- package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js.map +1 -0
- package/dist/settlement/contracts/settlement/BridgingSettlementContract.d.ts +107 -0
- package/dist/settlement/contracts/settlement/BridgingSettlementContract.d.ts.map +1 -0
- package/dist/settlement/contracts/settlement/BridgingSettlementContract.js +188 -0
- package/dist/settlement/contracts/settlement/BridgingSettlementContract.js.map +1 -0
- package/dist/settlement/contracts/settlement/SettlementBase.d.ts +41 -0
- package/dist/settlement/contracts/settlement/SettlementBase.d.ts.map +1 -0
- package/dist/settlement/contracts/settlement/SettlementBase.js +105 -0
- package/dist/settlement/contracts/settlement/SettlementBase.js.map +1 -0
- package/dist/settlement/contracts/settlement/SettlementContract.d.ts +15 -0
- package/dist/settlement/contracts/settlement/SettlementContract.d.ts.map +1 -0
- package/dist/settlement/contracts/settlement/SettlementContract.js +72 -0
- package/dist/settlement/contracts/settlement/SettlementContract.js.map +1 -0
- package/dist/settlement/messages/Deposit.d.ts +77 -0
- package/dist/settlement/messages/Deposit.d.ts.map +1 -0
- package/dist/settlement/messages/Deposit.js +8 -0
- package/dist/settlement/messages/Deposit.js.map +1 -0
- package/dist/settlement/messages/OutgoingMessage.d.ts +67 -0
- package/dist/settlement/messages/OutgoingMessage.d.ts.map +1 -0
- package/dist/settlement/messages/OutgoingMessage.js +7 -0
- package/dist/settlement/messages/OutgoingMessage.js.map +1 -0
- package/dist/settlement/messages/OutgoingMessageArgument.d.ts +588 -0
- package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -0
- package/dist/settlement/messages/OutgoingMessageArgument.js +42 -0
- package/dist/settlement/messages/OutgoingMessageArgument.js.map +1 -0
- package/dist/settlement/messages/Withdrawal.d.ts +2 -0
- package/dist/settlement/messages/Withdrawal.d.ts.map +1 -0
- package/dist/settlement/messages/Withdrawal.js +3 -0
- package/dist/settlement/messages/Withdrawal.js.map +1 -0
- package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts +28 -0
- package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts.map +1 -0
- package/dist/settlement/modularity/OutgoingMessageProcessor.js +39 -0
- package/dist/settlement/modularity/OutgoingMessageProcessor.js.map +1 -0
- package/dist/settlement/modularity/ProvableSettlementHook.d.ts +26 -0
- package/dist/settlement/modularity/ProvableSettlementHook.d.ts.map +1 -0
- package/dist/settlement/modularity/ProvableSettlementHook.js +4 -0
- package/dist/settlement/modularity/ProvableSettlementHook.js.map +1 -0
- package/dist/settlement/modularity/types.d.ts +9 -0
- package/dist/settlement/modularity/types.d.ts.map +1 -0
- package/dist/settlement/modularity/types.js +2 -0
- package/dist/settlement/modularity/types.js.map +1 -0
- package/dist/settlement/modules/NetworkStateSettlementModule.d.ts +11 -0
- package/dist/settlement/modules/NetworkStateSettlementModule.d.ts.map +1 -0
- package/dist/settlement/modules/NetworkStateSettlementModule.js +15 -0
- package/dist/settlement/modules/NetworkStateSettlementModule.js.map +1 -0
- package/dist/state/SimpleAsyncStateService.d.ts +6 -0
- package/dist/state/SimpleAsyncStateService.d.ts.map +1 -0
- package/dist/state/SimpleAsyncStateService.js +2 -0
- package/dist/state/SimpleAsyncStateService.js.map +1 -0
- package/dist/state/State.d.ts +13 -5
- package/dist/state/State.d.ts.map +1 -1
- package/dist/state/State.js +42 -17
- package/dist/state/State.js.map +1 -0
- package/dist/state/StateMap.d.ts +4 -4
- package/dist/state/StateMap.d.ts.map +1 -1
- package/dist/state/StateMap.js +5 -5
- package/dist/state/StateMap.js.map +1 -0
- package/dist/state/StateService.d.ts +4 -4
- package/dist/state/StateService.d.ts.map +1 -1
- package/dist/state/StateService.js +1 -0
- package/dist/state/StateService.js.map +1 -0
- package/dist/state/StateServiceProvider.d.ts +5 -7
- package/dist/state/StateServiceProvider.d.ts.map +1 -1
- package/dist/state/StateServiceProvider.js +18 -23
- package/dist/state/StateServiceProvider.js.map +1 -0
- package/dist/state/WitnessBlockContext.d.ts +5 -0
- package/dist/state/WitnessBlockContext.d.ts.map +1 -0
- package/dist/state/WitnessBlockContext.js +48 -0
- package/dist/state/WitnessBlockContext.js.map +1 -0
- package/dist/state/assert/assert.d.ts +2 -2
- package/dist/state/assert/assert.d.ts.map +1 -1
- package/dist/state/assert/assert.js +16 -6
- package/dist/state/assert/assert.js.map +1 -0
- package/dist/state/context/RuntimeMethodExecutionContext.d.ts +137 -4
- package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -1
- package/dist/state/context/RuntimeMethodExecutionContext.js +44 -11
- package/dist/state/context/RuntimeMethodExecutionContext.js.map +1 -0
- package/dist/state/context/TransitionMethodExecutionContext.d.ts.map +1 -1
- package/dist/state/context/TransitionMethodExecutionContext.js +1 -1
- package/dist/state/context/TransitionMethodExecutionContext.js.map +1 -0
- package/dist/state/protocol/ProtocolState.d.ts +8 -2
- package/dist/state/protocol/ProtocolState.d.ts.map +1 -1
- package/dist/state/protocol/ProtocolState.js +36 -20
- package/dist/state/protocol/ProtocolState.js.map +1 -0
- package/dist/utils/FieldOptions.d.ts +62 -0
- package/dist/utils/FieldOptions.d.ts.map +1 -0
- package/dist/utils/FieldOptions.js +13 -0
- package/dist/utils/FieldOptions.js.map +1 -0
- package/dist/utils/MinaPrefixedProvableHashList.d.ts +20 -0
- package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -0
- package/dist/utils/MinaPrefixedProvableHashList.js +49 -0
- package/dist/utils/MinaPrefixedProvableHashList.js.map +1 -0
- package/dist/utils/PrefixedProvableHashList.d.ts +3 -2
- package/dist/utils/PrefixedProvableHashList.d.ts.map +1 -1
- package/dist/utils/PrefixedProvableHashList.js +5 -1
- package/dist/utils/PrefixedProvableHashList.js.map +1 -0
- package/dist/utils/ProvableHashList.d.ts +27 -4
- package/dist/utils/ProvableHashList.d.ts.map +1 -1
- package/dist/utils/ProvableHashList.js +51 -3
- package/dist/utils/ProvableHashList.js.map +1 -0
- package/dist/utils/ProvableReductionHashList.d.ts +18 -0
- package/dist/utils/ProvableReductionHashList.d.ts.map +1 -0
- package/dist/utils/ProvableReductionHashList.js +54 -0
- package/dist/utils/ProvableReductionHashList.js.map +1 -0
- package/dist/utils/StateTransitionReductionList.d.ts +11 -0
- package/dist/utils/StateTransitionReductionList.d.ts.map +1 -0
- package/dist/utils/StateTransitionReductionList.js +61 -0
- package/dist/utils/StateTransitionReductionList.js.map +1 -0
- package/dist/utils/utils.d.ts +11 -5
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +13 -13
- package/dist/utils/utils.js.map +1 -0
- package/jest.config.cjs +12 -1
- package/package.json +10 -10
- package/src/hashing/mina-prefixes.ts +10 -0
- package/src/hashing/protokit-prefixes.ts +37 -0
- package/src/hooks/AccountStateHook.ts +80 -0
- package/src/hooks/BlockHeightHook.ts +17 -0
- package/src/hooks/LastStateRootBlockHook.ts +25 -0
- package/src/hooks/NoopBlockHook.ts +24 -0
- package/src/hooks/NoopSettlementHook.ts +20 -0
- package/src/{blockmodules → hooks}/NoopTransactionHook.ts +9 -3
- package/src/index.ts +51 -13
- package/src/model/AppliedStateTransitionBatch.ts +16 -0
- package/src/model/MethodPublicOutput.ts +3 -1
- package/src/model/Option.ts +87 -57
- package/src/model/Path.ts +9 -5
- package/src/model/RuntimeLike.ts +12 -0
- package/src/model/StateTransition.ts +19 -5
- package/src/model/StateTransitionProvableBatch.ts +94 -73
- package/src/model/Transaction.ts +3 -1
- package/src/model/network/NetworkState.ts +22 -2
- package/src/model/transaction/AuthorizedTransaction.ts +50 -0
- package/src/model/transaction/RuntimeTransaction.ts +86 -15
- package/src/model/transaction/ValueOption.ts +28 -0
- package/src/protocol/Protocol.ts +186 -116
- package/src/protocol/ProtocolEnvironment.ts +10 -0
- package/src/protocol/ProtocolModule.ts +18 -11
- package/src/protocol/ProvableBlockHook.ts +67 -0
- package/src/protocol/ProvableTransactionHook.ts +92 -3
- package/src/protocol/TransitioningProtocolModule.ts +8 -1
- package/src/prover/accumulators/AppliedBatchHashList.ts +32 -0
- package/src/prover/accumulators/BlockHashList.ts +117 -0
- package/src/prover/accumulators/StateTransitionReductionList.ts +92 -0
- package/src/prover/accumulators/TransactionHashList.ts +9 -0
- package/src/prover/accumulators/WitnessedRootHashList.ts +62 -0
- package/src/prover/block/BlockProvable.ts +360 -28
- package/src/prover/block/BlockProver.ts +668 -251
- package/src/prover/block/accummulators/BlockHashMerkleTree.ts +24 -0
- package/src/prover/block/accummulators/RuntimeVerificationKeyTree.ts +24 -0
- package/src/prover/block/services/RuntimeVerificationKeyRootService.ts +20 -0
- package/src/prover/statetransition/StateTransitionProvable.ts +25 -20
- package/src/prover/statetransition/StateTransitionProver.ts +299 -168
- package/src/prover/transaction/TransactionProvable.ts +183 -0
- package/src/prover/transaction/TransactionProver.ts +561 -0
- package/src/prover/utils.ts +108 -0
- package/src/settlement/ContractArgsRegistry.ts +64 -0
- package/src/settlement/ContractModule.ts +31 -0
- package/src/settlement/SettlementContractModule.ts +150 -0
- package/src/settlement/contracts/BridgeContract.ts +383 -0
- package/src/settlement/contracts/BridgeContractProtocolModule.ts +49 -0
- package/src/settlement/contracts/BridgingSettlementContractModule.ts +116 -0
- package/src/settlement/contracts/DispatchContractProtocolModule.ts +77 -0
- package/src/settlement/contracts/DispatchSmartContract.ts +359 -0
- package/src/settlement/contracts/SettlementSmartContractModule.ts +79 -0
- package/src/settlement/contracts/TokenBridgeTree.ts +86 -0
- package/src/settlement/contracts/authorizations/ContractAuthorization.ts +11 -0
- package/src/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.ts +16 -0
- package/src/settlement/contracts/authorizations/UpdateMessagesHashAuth.ts +16 -0
- package/src/settlement/contracts/settlement/BridgingSettlementContract.ts +283 -0
- package/src/settlement/contracts/settlement/SettlementBase.ts +249 -0
- package/src/settlement/contracts/settlement/SettlementContract.ts +75 -0
- package/src/settlement/messages/Deposit.ts +7 -0
- package/src/settlement/messages/OutgoingMessage.ts +17 -0
- package/src/settlement/messages/OutgoingMessageArgument.ts +62 -0
- package/src/settlement/modularity/OutgoingMessageProcessor.ts +78 -0
- package/src/settlement/modularity/ProvableSettlementHook.ts +36 -0
- package/src/settlement/modularity/types.ts +23 -0
- package/src/settlement/modules/NetworkStateSettlementModule.ts +42 -0
- package/src/state/State.ts +49 -19
- package/src/state/StateMap.ts +5 -6
- package/src/state/StateService.ts +5 -5
- package/src/state/StateServiceProvider.ts +18 -18
- package/src/state/WitnessBlockContext.ts +54 -0
- package/src/state/assert/assert.ts +18 -8
- package/src/state/context/RuntimeMethodExecutionContext.ts +68 -11
- package/src/state/context/TransitionMethodExecutionContext.ts +0 -1
- package/src/state/protocol/ProtocolState.ts +61 -26
- package/src/utils/FieldOptions.ts +13 -0
- package/src/utils/MinaPrefixedProvableHashList.ts +70 -0
- package/src/utils/PrefixedProvableHashList.ts +6 -2
- package/src/utils/ProvableHashList.ts +109 -4
- package/src/utils/ProvableReductionHashList.ts +77 -0
- package/src/utils/utils.ts +21 -16
- package/test/BlockProver.test.ts +124 -140
- package/test/Protocol.test.ts +14 -21
- package/test/State.test.ts +45 -0
- package/test/StateTransition.test.ts +57 -65
- package/test/TestingProtocol.ts +36 -0
- package/test/compiling/types.ts +28 -0
- package/test/model/Option.test.ts +72 -0
- package/test/model/StateTransitionProvableBatch.test.ts +137 -0
- package/test/modularity/types.ts +35 -0
- package/test/prover/block/BlockProver.test.ts +18 -0
- package/test/prover/statetransition/StateTransitionProver.test.ts +261 -0
- package/{src → test}/state/assert/assert.test.ts +10 -3
- package/test/tsconfig.json +7 -0
- package/test/utils/ProvableHashList.test.ts +44 -0
- package/test/utils/ProvableReductionHashList.test.ts +117 -0
- package/test/utils.test.ts +0 -3
- package/LICENSE.md +0 -201
- package/dist/blockmodules/AccountStateModule.d.ts +0 -38
- package/dist/blockmodules/AccountStateModule.d.ts.map +0 -1
- package/dist/blockmodules/AccountStateModule.js +0 -38
- package/dist/blockmodules/NoopTransactionHook.d.ts +0 -6
- package/dist/blockmodules/NoopTransactionHook.d.ts.map +0 -1
- package/dist/blockmodules/NoopTransactionHook.js +0 -5
- package/dist/model/transaction/ProtocolTransaction.d.ts +0 -70
- package/dist/model/transaction/ProtocolTransaction.d.ts.map +0 -1
- package/dist/model/transaction/ProtocolTransaction.js +0 -18
- package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts +0 -16
- package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts.map +0 -1
- package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts +0 -7
- package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts.map +0 -1
- package/dist/state/context/ProtocolMethodExecutionContext.d.ts +0 -22
- package/dist/state/context/ProtocolMethodExecutionContext.d.ts.map +0 -1
- package/dist/state/context/ProtocolMethodExecutionContext.js +0 -28
- package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts +0 -25
- package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts.map +0 -1
- package/dist/utils/merkletree/InMemoryMerkleTreeStorage.js +0 -77
- package/dist/utils/merkletree/MemoryMerkleTreeStorage.d.ts +0 -26
- package/dist/utils/merkletree/MemoryMerkleTreeStorage.d.ts.map +0 -1
- package/dist/utils/merkletree/MemoryMerkleTreeStorage.js +0 -79
- package/dist/utils/merkletree/MerkleTreeStore.d.ts +0 -11
- package/dist/utils/merkletree/MerkleTreeStore.d.ts.map +0 -1
- package/dist/utils/merkletree/MerkleTreeStore.js +0 -1
- package/dist/utils/merkletree/RollupMerkleTree.d.ts +0 -130
- package/dist/utils/merkletree/RollupMerkleTree.d.ts.map +0 -1
- package/dist/utils/merkletree/RollupMerkleTree.js +0 -244
- package/src/blockmodules/AccountStateModule.ts +0 -31
- package/src/model/Option.test.ts +0 -21
- package/src/model/transaction/ProtocolTransaction.ts +0 -25
- package/src/prover/statetransition/StateTransitionWitnessProvider.ts +0 -24
- package/src/prover/statetransition/StateTransitionWitnessProviderReference.ts +0 -17
- package/src/state/context/ProtocolMethodExecutionContext.ts +0 -36
- package/src/utils/merkletree/InMemoryMerkleTreeStorage.ts +0 -106
- package/src/utils/merkletree/MerkleTreeStore.ts +0 -15
- package/src/utils/merkletree/RollupMerkleTree.ts +0 -255
- package/src/utils/merkletree/VirtualMerkleTreeStore.ts +0 -21
- package/tsconfig.test.json +0 -9
package/src/protocol/Protocol.ts
CHANGED
|
@@ -1,124 +1,104 @@
|
|
|
1
1
|
import {
|
|
2
|
+
AreProofsEnabled,
|
|
3
|
+
ChildContainerProvider,
|
|
2
4
|
log,
|
|
3
5
|
ModuleContainer,
|
|
4
6
|
ModulesConfig,
|
|
5
7
|
ModulesRecord,
|
|
8
|
+
Startable,
|
|
6
9
|
StringKeyOf,
|
|
7
10
|
TypedClass,
|
|
8
11
|
} from "@proto-kit/common";
|
|
9
12
|
import { DependencyContainer, Lifecycle } from "tsyringe";
|
|
10
13
|
|
|
11
14
|
import { BlockProvable } from "../prover/block/BlockProvable";
|
|
12
|
-
import { StateTransitionProver } from "../prover/statetransition/StateTransitionProver";
|
|
13
15
|
import { StateTransitionProvable } from "../prover/statetransition/StateTransitionProvable";
|
|
14
|
-
import { BlockProver } from "../prover/block/BlockProver";
|
|
15
16
|
import { StateServiceProvider } from "../state/StateServiceProvider";
|
|
16
|
-
import {
|
|
17
|
+
import { SimpleAsyncStateService } from "../state/StateService";
|
|
18
|
+
import { NoopBlockHook } from "../hooks/NoopBlockHook";
|
|
19
|
+
import { BlockHeightHook } from "../hooks/BlockHeightHook";
|
|
20
|
+
import { LastStateRootBlockHook } from "../hooks/LastStateRootBlockHook";
|
|
21
|
+
import { ProvableSettlementHook } from "../settlement/modularity/ProvableSettlementHook";
|
|
22
|
+
import { NoopSettlementHook } from "../hooks/NoopSettlementHook";
|
|
23
|
+
import { AccountStateHook } from "../hooks/AccountStateHook";
|
|
24
|
+
import { NoopTransactionHook } from "../hooks/NoopTransactionHook";
|
|
25
|
+
import { TransactionProvable } from "../prover/transaction/TransactionProvable";
|
|
26
|
+
import { StateTransitionProver } from "../prover/statetransition/StateTransitionProver";
|
|
27
|
+
import { TransactionProver } from "../prover/transaction/TransactionProver";
|
|
28
|
+
import { BlockProver } from "../prover/block/BlockProver";
|
|
17
29
|
|
|
18
30
|
import { ProtocolModule } from "./ProtocolModule";
|
|
19
31
|
import { ProvableTransactionHook } from "./ProvableTransactionHook";
|
|
20
|
-
import {
|
|
32
|
+
import { ProtocolEnvironment } from "./ProtocolEnvironment";
|
|
33
|
+
import { ProvableBlockHook } from "./ProvableBlockHook";
|
|
34
|
+
import { TransitioningProtocolModule } from "./TransitioningProtocolModule";
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* This is a mapping of abstract classes to their respective injection tokens.
|
|
38
|
+
* Keys are the abstract classes names, which need to be set dynamically
|
|
39
|
+
* and can't be hardcoded since producing optimized builds may mangle the
|
|
40
|
+
* class names, making them different from the ones in the source code.
|
|
41
|
+
*/
|
|
42
|
+
const PROTOCOL_INJECTION_TOKENS: Record<string, string> = {
|
|
43
|
+
[ProvableTransactionHook.name]: "ProvableTransactionHook",
|
|
44
|
+
[ProvableBlockHook.name]: "ProvableBlockHook",
|
|
45
|
+
[ProvableSettlementHook.name]: "ProvableSettlementHook",
|
|
46
|
+
};
|
|
21
47
|
|
|
22
|
-
export type
|
|
23
|
-
TypedClass<ProtocolModule
|
|
48
|
+
export type ProtocolModulesRecord = ModulesRecord<
|
|
49
|
+
TypedClass<ProtocolModule<unknown>>
|
|
24
50
|
>;
|
|
25
51
|
|
|
26
|
-
interface
|
|
52
|
+
export interface TransactionProverType
|
|
53
|
+
extends ProtocolModule,
|
|
54
|
+
TransactionProvable {}
|
|
55
|
+
|
|
56
|
+
export interface BlockProverType extends ProtocolModule, BlockProvable {}
|
|
27
57
|
|
|
28
|
-
interface StateTransitionProverType
|
|
58
|
+
export interface StateTransitionProverType
|
|
29
59
|
extends ProtocolModule,
|
|
30
60
|
StateTransitionProvable {}
|
|
31
61
|
|
|
32
|
-
export
|
|
62
|
+
export type MandatoryProtocolModulesRecord = {
|
|
63
|
+
TransactionProver: TypedClass<TransactionProverType>;
|
|
33
64
|
BlockProver: TypedClass<BlockProverType>;
|
|
34
65
|
StateTransitionProver: TypedClass<StateTransitionProverType>;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
ProtocolCustomModulesRecord {}
|
|
40
|
-
|
|
41
|
-
export interface ProtocolDefinition<Modules extends ProtocolModulesRecord> {
|
|
42
|
-
modules: Modules;
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* @deprecated
|
|
46
|
-
*/
|
|
47
|
-
state?: StateService;
|
|
48
|
-
// config: ModulesConfig<Modules>
|
|
49
|
-
}
|
|
66
|
+
AccountState: TypedClass<AccountStateHook>;
|
|
67
|
+
BlockHeight: TypedClass<BlockHeightHook>;
|
|
68
|
+
LastStateRoot: TypedClass<LastStateRootBlockHook>;
|
|
69
|
+
};
|
|
50
70
|
|
|
51
71
|
export class Protocol<
|
|
52
|
-
|
|
53
|
-
>
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
66
|
-
agg[item] = {};
|
|
67
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
68
|
-
return agg;
|
|
69
|
-
},
|
|
70
|
-
{}
|
|
71
|
-
);
|
|
72
|
-
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
73
|
-
protocol.configure(emptyConfig as ModulesConfig<Modules>);
|
|
74
|
-
|
|
75
|
-
return protocol;
|
|
72
|
+
Modules extends ProtocolModulesRecord & MandatoryProtocolModulesRecord,
|
|
73
|
+
>
|
|
74
|
+
extends ModuleContainer<Modules>
|
|
75
|
+
implements ProtocolEnvironment, Startable
|
|
76
|
+
{
|
|
77
|
+
public static from<
|
|
78
|
+
Modules extends ProtocolModulesRecord & MandatoryProtocolModulesRecord,
|
|
79
|
+
>(modules: Modules): TypedClass<Protocol<Modules>> {
|
|
80
|
+
return class ScopedProtocol extends Protocol<Modules> {
|
|
81
|
+
public constructor() {
|
|
82
|
+
super(modules);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
76
85
|
}
|
|
77
86
|
|
|
78
|
-
|
|
87
|
+
// No idea why we have to do this, but if we don't re-define it here,
|
|
88
|
+
// js can't access it from the superclass somehow
|
|
89
|
+
public definition: Modules;
|
|
79
90
|
|
|
80
|
-
|
|
81
|
-
// eslint-disable-next-line etc/no-deprecated
|
|
82
|
-
this.definition.state
|
|
83
|
-
);
|
|
84
|
-
|
|
85
|
-
public constructor(definition: ProtocolDefinition<Modules>) {
|
|
91
|
+
public constructor(definition: Modules) {
|
|
86
92
|
super(definition);
|
|
87
93
|
this.definition = definition;
|
|
88
|
-
|
|
89
|
-
// Register the BlockModules seperately since we need to
|
|
90
|
-
// inject them differently later
|
|
91
|
-
let atLeastOneTransactionHookRegistered = false;
|
|
92
|
-
Object.entries(definition.modules).forEach(([key, value]) => {
|
|
93
|
-
if (Object.prototype.isPrototypeOf.call(ProvableTransactionHook, value)) {
|
|
94
|
-
this.container.register(
|
|
95
|
-
"ProvableTransactionHook",
|
|
96
|
-
{ useToken: key },
|
|
97
|
-
{ lifecycle: Lifecycle.ContainerScoped }
|
|
98
|
-
);
|
|
99
|
-
atLeastOneTransactionHookRegistered = true;
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
// We need this so that tsyringe doesn't throw when no hooks are registered
|
|
104
|
-
if (!atLeastOneTransactionHookRegistered) {
|
|
105
|
-
this.container.register(
|
|
106
|
-
"ProvableTransactionHook",
|
|
107
|
-
{ useClass: NoopTransactionHook },
|
|
108
|
-
{ lifecycle: Lifecycle.ContainerScoped }
|
|
109
|
-
);
|
|
110
|
-
}
|
|
111
|
-
// this.container.afterResolution<ProvableTransactionHook>("ProvableTransactionHook", (token, result) => {
|
|
112
|
-
// if ()
|
|
113
|
-
// })
|
|
114
94
|
}
|
|
115
95
|
|
|
116
|
-
public get stateService():
|
|
117
|
-
return this.
|
|
96
|
+
public get stateService(): SimpleAsyncStateService {
|
|
97
|
+
return this.stateServiceProvider.stateService;
|
|
118
98
|
}
|
|
119
99
|
|
|
120
100
|
public get stateServiceProvider(): StateServiceProvider {
|
|
121
|
-
return this.
|
|
101
|
+
return this.container.resolve<StateServiceProvider>("StateServiceProvider");
|
|
122
102
|
}
|
|
123
103
|
|
|
124
104
|
public decorateModule(
|
|
@@ -126,14 +106,9 @@ export class Protocol<
|
|
|
126
106
|
containedModule: InstanceType<Modules[StringKeyOf<Modules>]>
|
|
127
107
|
) {
|
|
128
108
|
log.debug(`Decorated ${moduleName}`);
|
|
129
|
-
containedModule.
|
|
109
|
+
containedModule.parent = this;
|
|
130
110
|
|
|
131
|
-
|
|
132
|
-
"Is instanceof:",
|
|
133
|
-
containedModule instanceof ProvableTransactionHook
|
|
134
|
-
);
|
|
135
|
-
if (containedModule instanceof ProvableTransactionHook) {
|
|
136
|
-
console.log(`Setting name to ${moduleName}`);
|
|
111
|
+
if (containedModule instanceof TransitioningProtocolModule) {
|
|
137
112
|
containedModule.name = moduleName;
|
|
138
113
|
}
|
|
139
114
|
|
|
@@ -147,7 +122,15 @@ export class Protocol<
|
|
|
147
122
|
private isModule(
|
|
148
123
|
moduleName: keyof Modules
|
|
149
124
|
): moduleName is StringKeyOf<Modules> {
|
|
150
|
-
return this.definition
|
|
125
|
+
return this.definition[moduleName] !== undefined;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
public get transactionProver(): TransactionProvable {
|
|
129
|
+
// Why do I resolve directly here?
|
|
130
|
+
// I don't know exactly but generics don't let me use .resolve()
|
|
131
|
+
return this.container.resolve<InstanceType<Modules["TransactionProver"]>>(
|
|
132
|
+
"TransactionProver"
|
|
133
|
+
);
|
|
151
134
|
}
|
|
152
135
|
|
|
153
136
|
public get blockProver(): BlockProvable {
|
|
@@ -163,29 +146,116 @@ export class Protocol<
|
|
|
163
146
|
InstanceType<Modules["StateTransitionProver"]>
|
|
164
147
|
>("StateTransitionProver");
|
|
165
148
|
}
|
|
166
|
-
}
|
|
167
149
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
150
|
+
public static defaultModules() {
|
|
151
|
+
return {
|
|
152
|
+
StateTransitionProver,
|
|
153
|
+
TransactionProver,
|
|
154
|
+
BlockProver,
|
|
155
|
+
AccountState: AccountStateHook,
|
|
156
|
+
BlockHeight: BlockHeightHook,
|
|
157
|
+
LastStateRoot: LastStateRootBlockHook,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
public static defaultConfig() {
|
|
162
|
+
return {
|
|
163
|
+
StateTransitionProver: {},
|
|
164
|
+
TransactionProver: {},
|
|
165
|
+
BlockProver: {},
|
|
166
|
+
AccountState: {},
|
|
167
|
+
BlockHeight: {},
|
|
168
|
+
LastStateRoot: {},
|
|
169
|
+
} satisfies ModulesConfig<ReturnType<typeof Protocol.defaultModules>>;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
public getAreProofsEnabled(): AreProofsEnabled {
|
|
173
|
+
return this.container.resolve<AreProofsEnabled>("AreProofsEnabled");
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
public create(childContainerProvider: ChildContainerProvider) {
|
|
177
|
+
super.create(childContainerProvider);
|
|
178
|
+
|
|
179
|
+
// Register the BlockModules seperately since we need to
|
|
180
|
+
// inject them differently later
|
|
181
|
+
const ABSTRACT_MODULE_TYPES = [
|
|
182
|
+
{ type: ProvableTransactionHook, defaultType: NoopTransactionHook },
|
|
183
|
+
{ type: ProvableBlockHook, defaultType: NoopBlockHook },
|
|
184
|
+
{ type: ProvableSettlementHook, defaultType: NoopSettlementHook },
|
|
185
|
+
] as const;
|
|
186
|
+
|
|
187
|
+
ABSTRACT_MODULE_TYPES.forEach((moduleTypeRegistration) => {
|
|
188
|
+
const abstractType = moduleTypeRegistration.type;
|
|
189
|
+
|
|
190
|
+
const implementingModules = Object.entries(this.definition).filter(
|
|
191
|
+
([, value]) => Object.prototype.isPrototypeOf.call(abstractType, value)
|
|
192
|
+
);
|
|
193
|
+
|
|
194
|
+
const newInjectionToken: string | undefined =
|
|
195
|
+
PROTOCOL_INJECTION_TOKENS[abstractType.name];
|
|
196
|
+
|
|
197
|
+
if (newInjectionToken === undefined) {
|
|
198
|
+
log.error(
|
|
199
|
+
"Can't inject hook under the underlying hook token: Alias not found in mapping"
|
|
200
|
+
);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
implementingModules.forEach(([key]) => {
|
|
205
|
+
this.container.register(
|
|
206
|
+
newInjectionToken,
|
|
207
|
+
{ useToken: key },
|
|
208
|
+
{ lifecycle: Lifecycle.ContainerScoped }
|
|
209
|
+
);
|
|
210
|
+
});
|
|
211
|
+
if (implementingModules.length === 0) {
|
|
212
|
+
// This type annotation shouldn't change anything but is necessary
|
|
213
|
+
// bcs tsyringe complains
|
|
214
|
+
const { defaultType }: { defaultType: TypedClass<unknown> } =
|
|
215
|
+
moduleTypeRegistration;
|
|
216
|
+
|
|
217
|
+
// Register default (noop) version
|
|
218
|
+
this.container.register(
|
|
219
|
+
newInjectionToken,
|
|
220
|
+
{ useClass: defaultType },
|
|
221
|
+
{ lifecycle: Lifecycle.ContainerScoped }
|
|
222
|
+
);
|
|
223
|
+
}
|
|
189
224
|
});
|
|
190
|
-
|
|
191
|
-
|
|
225
|
+
|
|
226
|
+
// Cross-register all runtime modules to the protocol container for easier
|
|
227
|
+
// access of runtime modules inside protocol hooks
|
|
228
|
+
if (this.container.isRegistered("Runtime", true)) {
|
|
229
|
+
const runtimeContainer: ModuleContainer<any> =
|
|
230
|
+
this.container.resolve("Runtime");
|
|
231
|
+
|
|
232
|
+
runtimeContainer.moduleNames.forEach((runtimeModuleName) => {
|
|
233
|
+
this.container.register(runtimeModuleName, {
|
|
234
|
+
useFactory: (dependencyContainer) => {
|
|
235
|
+
// Prevents creation of closure
|
|
236
|
+
const runtime: ModuleContainer<any> =
|
|
237
|
+
dependencyContainer.resolve("Runtime");
|
|
238
|
+
return runtime.resolve(runtimeModuleName);
|
|
239
|
+
},
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
} else {
|
|
243
|
+
log.warn(
|
|
244
|
+
"Couldn't resolve Runtime reference in Protocol, resolving RuntimeModules in hooks won't be available"
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
public async start() {
|
|
250
|
+
// eslint-disable-next-line guard-for-in
|
|
251
|
+
for (const moduleName in this.definition) {
|
|
252
|
+
const protocolModule = this.resolve(moduleName);
|
|
253
|
+
|
|
254
|
+
log.info(
|
|
255
|
+
`Starting protocol module ${moduleName} (${protocolModule.constructor.name})`
|
|
256
|
+
);
|
|
257
|
+
// eslint-disable-next-line no-await-in-loop
|
|
258
|
+
await protocolModule.start();
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AreProofsEnabled } from "@proto-kit/common";
|
|
2
|
+
|
|
3
|
+
import { SimpleAsyncStateService } from "../state/StateService";
|
|
4
|
+
import { StateServiceProvider } from "../state/StateServiceProvider";
|
|
5
|
+
|
|
6
|
+
export interface ProtocolEnvironment {
|
|
7
|
+
get stateService(): SimpleAsyncStateService;
|
|
8
|
+
get stateServiceProvider(): StateServiceProvider;
|
|
9
|
+
getAreProofsEnabled(): AreProofsEnabled;
|
|
10
|
+
}
|
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AreProofsEnabled,
|
|
3
|
-
|
|
3
|
+
ChildContainerProvider,
|
|
4
|
+
ConfigurableModule,
|
|
5
|
+
NoConfig,
|
|
6
|
+
noop,
|
|
4
7
|
} from "@proto-kit/common";
|
|
5
8
|
|
|
6
|
-
import
|
|
9
|
+
import { ProtocolEnvironment } from "./ProtocolEnvironment";
|
|
7
10
|
|
|
8
|
-
export abstract class ProtocolModule
|
|
9
|
-
|
|
10
|
-
{
|
|
11
|
-
public
|
|
11
|
+
export abstract class ProtocolModule<
|
|
12
|
+
Config = NoConfig,
|
|
13
|
+
> extends ConfigurableModule<Config> {
|
|
14
|
+
public parent?: ProtocolEnvironment;
|
|
12
15
|
|
|
13
|
-
public
|
|
16
|
+
public get areProofsEnabled(): AreProofsEnabled | undefined {
|
|
17
|
+
return this.parent?.getAreProofsEnabled();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public create(childContainerProvider: ChildContainerProvider): void {
|
|
21
|
+
noop();
|
|
22
|
+
}
|
|
14
23
|
|
|
15
|
-
public
|
|
16
|
-
|
|
17
|
-
"AppChain"
|
|
18
|
-
);
|
|
24
|
+
public async start() {
|
|
25
|
+
noop();
|
|
19
26
|
}
|
|
20
27
|
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Field } from "o1js";
|
|
2
|
+
import { NoConfig } from "@proto-kit/common";
|
|
3
|
+
|
|
4
|
+
import { NetworkState } from "../model/network/NetworkState";
|
|
5
|
+
import {
|
|
6
|
+
BlockProverPublicInput,
|
|
7
|
+
BlockArguments,
|
|
8
|
+
BlockProverState,
|
|
9
|
+
} from "../prover/block/BlockProvable";
|
|
10
|
+
|
|
11
|
+
import { TransitioningProtocolModule } from "./TransitioningProtocolModule";
|
|
12
|
+
|
|
13
|
+
export type ProvableHookBlockState = Pick<
|
|
14
|
+
BlockProverPublicInput & BlockArguments,
|
|
15
|
+
"eternalTransactionsHash" | "incomingMessagesHash" | "blockHashRoot"
|
|
16
|
+
>;
|
|
17
|
+
|
|
18
|
+
export function toBeforeBlockHookArgument(
|
|
19
|
+
state: Pick<
|
|
20
|
+
BlockProverState,
|
|
21
|
+
"eternalTransactionsList" | "incomingMessages" | "blockHashRoot"
|
|
22
|
+
>
|
|
23
|
+
) {
|
|
24
|
+
const { eternalTransactionsList, incomingMessages, blockHashRoot } = state;
|
|
25
|
+
return {
|
|
26
|
+
eternalTransactionsHash: eternalTransactionsList.commitment,
|
|
27
|
+
incomingMessagesHash: incomingMessages.commitment,
|
|
28
|
+
blockHashRoot,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function toAfterBlockHookArgument(
|
|
33
|
+
state: Pick<
|
|
34
|
+
BlockProverState,
|
|
35
|
+
"eternalTransactionsList" | "incomingMessages" | "blockHashRoot"
|
|
36
|
+
>,
|
|
37
|
+
stateRoot: Field,
|
|
38
|
+
transactionsHash: Field
|
|
39
|
+
) {
|
|
40
|
+
return {
|
|
41
|
+
...toBeforeBlockHookArgument(state),
|
|
42
|
+
stateRoot,
|
|
43
|
+
transactionsHash,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface BeforeBlockHookArguments extends ProvableHookBlockState {}
|
|
48
|
+
|
|
49
|
+
export interface AfterBlockHookArguments extends BeforeBlockHookArguments {
|
|
50
|
+
stateRoot: Field;
|
|
51
|
+
transactionsHash: Field;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Purpose is to build transition from -> to network state
|
|
55
|
+
export abstract class ProvableBlockHook<
|
|
56
|
+
Config = NoConfig,
|
|
57
|
+
> extends TransitioningProtocolModule<Config> {
|
|
58
|
+
public abstract beforeBlock(
|
|
59
|
+
networkState: NetworkState,
|
|
60
|
+
state: BeforeBlockHookArguments
|
|
61
|
+
): Promise<NetworkState>;
|
|
62
|
+
|
|
63
|
+
public abstract afterBlock(
|
|
64
|
+
networkState: NetworkState,
|
|
65
|
+
state: AfterBlockHookArguments
|
|
66
|
+
): Promise<NetworkState>;
|
|
67
|
+
}
|
|
@@ -1,7 +1,96 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NoConfig } from "@proto-kit/common";
|
|
2
|
+
import { Field } from "o1js";
|
|
3
|
+
|
|
4
|
+
import { NetworkState } from "../model/network/NetworkState";
|
|
5
|
+
import { MethodPublicOutput } from "../model/MethodPublicOutput";
|
|
6
|
+
import { TransactionProverState } from "../prover/transaction/TransactionProvable";
|
|
7
|
+
import { AuthorizedTransaction } from "../model/transaction/AuthorizedTransaction";
|
|
2
8
|
|
|
3
9
|
import { TransitioningProtocolModule } from "./TransitioningProtocolModule";
|
|
4
10
|
|
|
5
|
-
export
|
|
6
|
-
|
|
11
|
+
export type ProvableHookTransactionState = {
|
|
12
|
+
transactionsHash: Field;
|
|
13
|
+
eternalTransactionsHash: Field;
|
|
14
|
+
incomingMessagesHash: Field;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export function toProvableHookTransactionState(
|
|
18
|
+
state: Pick<
|
|
19
|
+
TransactionProverState,
|
|
20
|
+
"transactionList" | "eternalTransactionsList" | "incomingMessages"
|
|
21
|
+
>
|
|
22
|
+
): ProvableHookTransactionState {
|
|
23
|
+
const { transactionList, eternalTransactionsList, incomingMessages } = state;
|
|
24
|
+
return {
|
|
25
|
+
transactionsHash: transactionList.commitment,
|
|
26
|
+
eternalTransactionsHash: eternalTransactionsList.commitment,
|
|
27
|
+
incomingMessagesHash: incomingMessages.commitment,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function toBeforeTransactionHookArgument(
|
|
32
|
+
authorizedTransaction: AuthorizedTransaction,
|
|
33
|
+
networkState: NetworkState,
|
|
34
|
+
state: Parameters<typeof toProvableHookTransactionState>[0]
|
|
35
|
+
): BeforeTransactionHookArguments {
|
|
36
|
+
return {
|
|
37
|
+
networkState,
|
|
38
|
+
transaction: authorizedTransaction,
|
|
39
|
+
prover: toProvableHookTransactionState(state),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function toAfterTransactionHookArgument(
|
|
44
|
+
authorizedTransaction: AuthorizedTransaction,
|
|
45
|
+
networkState: NetworkState,
|
|
46
|
+
state: Parameters<typeof toProvableHookTransactionState>[0],
|
|
47
|
+
runtimeResult: MethodPublicOutput
|
|
48
|
+
): AfterTransactionHookArguments {
|
|
49
|
+
return {
|
|
50
|
+
...toBeforeTransactionHookArgument(
|
|
51
|
+
authorizedTransaction,
|
|
52
|
+
networkState,
|
|
53
|
+
state
|
|
54
|
+
),
|
|
55
|
+
runtimeResult,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* This type is a reduced set of the runtime method's public output.
|
|
61
|
+
* It omits internal commitments to data that is already present as data in
|
|
62
|
+
* the hook arguments
|
|
63
|
+
*/
|
|
64
|
+
export type TransactionResult = Omit<
|
|
65
|
+
MethodPublicOutput,
|
|
66
|
+
"networkStateHash" | "transactionHash"
|
|
67
|
+
>;
|
|
68
|
+
|
|
69
|
+
export interface BeforeTransactionHookArguments {
|
|
70
|
+
transaction: AuthorizedTransaction;
|
|
71
|
+
networkState: NetworkState;
|
|
72
|
+
prover: ProvableHookTransactionState;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export interface AfterTransactionHookArguments
|
|
76
|
+
extends BeforeTransactionHookArguments {
|
|
77
|
+
runtimeResult: TransactionResult;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export abstract class ProvableTransactionHook<
|
|
81
|
+
Config = NoConfig,
|
|
82
|
+
> extends TransitioningProtocolModule<Config> {
|
|
83
|
+
public abstract beforeTransaction(
|
|
84
|
+
executionData: BeforeTransactionHookArguments
|
|
85
|
+
): Promise<void>;
|
|
86
|
+
|
|
87
|
+
public abstract afterTransaction(
|
|
88
|
+
execution: AfterTransactionHookArguments
|
|
89
|
+
): Promise<void>;
|
|
90
|
+
|
|
91
|
+
public async removeTransactionWhen(
|
|
92
|
+
execution: BeforeTransactionHookArguments
|
|
93
|
+
): Promise<boolean> {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
7
96
|
}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { ProtocolModule } from "./ProtocolModule";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* TransitioningProtocolModule is a base interface that allows inheriting
|
|
5
|
+
* classes to use State and StateMap since it requires the implementation
|
|
6
|
+
* of a `name: string` property, which those classes need to function.
|
|
7
|
+
*/
|
|
8
|
+
export abstract class TransitioningProtocolModule<
|
|
9
|
+
Config,
|
|
10
|
+
> extends ProtocolModule<Config> {
|
|
4
11
|
public name?: string;
|
|
5
12
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Bool, Field } from "o1js";
|
|
2
|
+
|
|
3
|
+
import { DefaultProvableHashList } from "../../utils/ProvableHashList";
|
|
4
|
+
import { NonMethods } from "../../utils/utils";
|
|
5
|
+
import { AppliedStateTransitionBatch } from "../../model/AppliedStateTransitionBatch";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A HashList for AppliedSTBatches, that in addition to the default
|
|
9
|
+
* functionality, checks that the pushed batches are not empty.
|
|
10
|
+
* If they are, the pushing is skipped.
|
|
11
|
+
* Note that if the batch has applied: false, the batch still has to be appended
|
|
12
|
+
* if it has STs inside
|
|
13
|
+
*/
|
|
14
|
+
export class AppliedBatchHashList extends DefaultProvableHashList<
|
|
15
|
+
NonMethods<AppliedStateTransitionBatch>
|
|
16
|
+
> {
|
|
17
|
+
public constructor(commitment: Field = Field(0)) {
|
|
18
|
+
super(AppliedStateTransitionBatch, commitment);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
private isNotEmpty(value: AppliedStateTransitionBatch): Bool {
|
|
22
|
+
return value.batchHash.equals(Field(0)).not();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public push(value: AppliedStateTransitionBatch) {
|
|
26
|
+
return super.pushIf(value, this.isNotEmpty(value));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
public pushIf(value: AppliedStateTransitionBatch, condition: Bool) {
|
|
30
|
+
return super.pushIf(value, condition.and(this.isNotEmpty(value)));
|
|
31
|
+
}
|
|
32
|
+
}
|