@proto-kit/protocol 0.1.1-develop.191 → 0.1.1-develop.2024
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 +59 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +60 -9
- 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 +70 -46
- package/dist/model/Option.d.ts.map +1 -1
- package/dist/model/Option.js +62 -57
- 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 +389 -16
- package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -1
- package/dist/model/StateTransitionProvableBatch.js +87 -10
- 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 +47 -21
- package/dist/protocol/Protocol.d.ts.map +1 -1
- package/dist/protocol/Protocol.js +127 -26
- 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 -7
- package/dist/protocol/ProtocolModule.d.ts.map +1 -1
- package/dist/protocol/ProtocolModule.js +10 -7
- 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 +35 -0
- package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -0
- package/dist/protocol/ProvableTransactionHook.js +28 -0
- package/dist/protocol/ProvableTransactionHook.js.map +1 -0
- package/dist/protocol/TransitioningProtocolModule.d.ts +10 -0
- package/dist/protocol/TransitioningProtocolModule.d.ts.map +1 -0
- package/dist/protocol/TransitioningProtocolModule.js +9 -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 +52 -37
- package/dist/prover/block/BlockProver.d.ts.map +1 -1
- package/dist/prover/block/BlockProver.js +327 -107
- 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 -48
- package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -1
- package/dist/prover/statetransition/StateTransitionProvable.js +10 -5
- package/dist/prover/statetransition/StateTransitionProvable.js.map +1 -0
- package/dist/prover/statetransition/StateTransitionProver.d.ts +29 -17
- package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
- package/dist/prover/statetransition/StateTransitionProver.js +171 -73
- 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 +53 -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 +119 -0
- package/dist/settlement/contracts/BridgeContract.d.ts.map +1 -0
- package/dist/settlement/contracts/BridgeContract.js +269 -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 +494 -0
- package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -0
- package/dist/settlement/messages/OutgoingMessageArgument.js +40 -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 +25 -0
- package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts.map +1 -0
- package/dist/settlement/modularity/OutgoingMessageProcessor.js +30 -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 +68 -0
- package/dist/state/State.d.ts.map +1 -0
- package/dist/state/State.js +141 -0
- package/dist/state/State.js.map +1 -0
- package/dist/state/StateMap.d.ts +37 -0
- package/dist/state/StateMap.d.ts.map +1 -0
- package/dist/state/StateMap.js +56 -0
- package/dist/state/StateMap.js.map +1 -0
- package/dist/state/StateService.d.ts +6 -0
- package/dist/state/StateService.d.ts.map +1 -0
- package/dist/state/StateService.js +2 -0
- package/dist/state/StateService.js.map +1 -0
- package/dist/state/StateServiceProvider.d.ts +8 -0
- package/dist/state/StateServiceProvider.d.ts.map +1 -0
- package/dist/state/StateServiceProvider.js +37 -0
- 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 +42 -0
- package/dist/state/WitnessBlockContext.js.map +1 -0
- package/dist/state/assert/assert.d.ts +12 -0
- package/dist/state/assert/assert.d.ts.map +1 -0
- package/dist/state/assert/assert.js +33 -0
- package/dist/state/assert/assert.js.map +1 -0
- package/dist/state/context/RuntimeMethodExecutionContext.d.ts +193 -0
- package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -0
- package/dist/state/context/RuntimeMethodExecutionContext.js +138 -0
- package/dist/state/context/RuntimeMethodExecutionContext.js.map +1 -0
- package/dist/state/context/TransitionMethodExecutionContext.d.ts +23 -0
- package/dist/state/context/TransitionMethodExecutionContext.d.ts.map +1 -0
- package/dist/state/context/TransitionMethodExecutionContext.js +6 -0
- package/dist/state/context/TransitionMethodExecutionContext.js.map +1 -0
- package/dist/state/protocol/ProtocolState.d.ts +13 -0
- package/dist/state/protocol/ProtocolState.d.ts.map +1 -0
- package/dist/state/protocol/ProtocolState.js +58 -0
- 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 +11 -9
- 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/hooks/NoopTransactionHook.ts +13 -0
- package/src/index.ts +59 -9
- package/src/model/AppliedStateTransitionBatch.ts +16 -0
- package/src/model/MethodPublicOutput.ts +3 -1
- package/src/model/Option.ts +99 -73
- 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 +114 -12
- 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 +201 -69
- package/src/protocol/ProtocolEnvironment.ts +10 -0
- package/src/protocol/ProtocolModule.ts +16 -15
- package/src/protocol/ProvableBlockHook.ts +67 -0
- package/src/protocol/ProvableTransactionHook.ts +96 -0
- package/src/protocol/TransitioningProtocolModule.ts +12 -0
- 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 +721 -186
- 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 +26 -19
- package/src/prover/statetransition/StateTransitionProver.ts +337 -126
- 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 +60 -0
- package/src/settlement/ContractModule.ts +31 -0
- package/src/settlement/SettlementContractModule.ts +150 -0
- package/src/settlement/contracts/BridgeContract.ts +385 -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 +73 -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 +53 -0
- package/src/settlement/modularity/OutgoingMessageProcessor.ts +65 -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 +190 -0
- package/src/state/StateMap.ts +73 -0
- package/src/state/StateService.ts +6 -0
- package/src/state/StateServiceProvider.ts +37 -0
- package/src/state/WitnessBlockContext.ts +50 -0
- package/src/state/assert/assert.ts +38 -0
- package/src/state/context/RuntimeMethodExecutionContext.ts +181 -0
- package/src/state/context/TransitionMethodExecutionContext.ts +26 -0
- package/src/state/protocol/ProtocolState.ts +98 -0
- 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 +161 -74
- package/test/Protocol.test.ts +20 -10
- 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/test/state/assert/assert.test.ts +56 -0
- 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/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/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/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/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/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,82 +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
|
-
import { DependencyContainer } from "tsyringe";
|
|
12
|
+
import { DependencyContainer, Lifecycle } from "tsyringe";
|
|
10
13
|
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
} from "../
|
|
14
|
+
import { BlockProvable } from "../prover/block/BlockProvable";
|
|
15
|
+
import { StateTransitionProvable } from "../prover/statetransition/StateTransitionProvable";
|
|
16
|
+
import { StateServiceProvider } from "../state/StateServiceProvider";
|
|
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";
|
|
16
26
|
import { StateTransitionProver } from "../prover/statetransition/StateTransitionProver";
|
|
17
|
-
import {
|
|
18
|
-
StateTransitionProvable,
|
|
19
|
-
StateTransitionProverPublicInput,
|
|
20
|
-
StateTransitionProverPublicOutput,
|
|
21
|
-
} from "../prover/statetransition/StateTransitionProvable";
|
|
27
|
+
import { TransactionProver } from "../prover/transaction/TransactionProver";
|
|
22
28
|
import { BlockProver } from "../prover/block/BlockProver";
|
|
23
29
|
|
|
24
30
|
import { ProtocolModule } from "./ProtocolModule";
|
|
31
|
+
import { ProvableTransactionHook } from "./ProvableTransactionHook";
|
|
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
|
+
};
|
|
25
47
|
|
|
26
|
-
export type
|
|
27
|
-
TypedClass<ProtocolModule<
|
|
48
|
+
export type ProtocolModulesRecord = ModulesRecord<
|
|
49
|
+
TypedClass<ProtocolModule<unknown>>
|
|
28
50
|
>;
|
|
29
51
|
|
|
30
|
-
interface
|
|
31
|
-
extends ProtocolModule
|
|
32
|
-
|
|
52
|
+
export interface TransactionProverType
|
|
53
|
+
extends ProtocolModule,
|
|
54
|
+
TransactionProvable {}
|
|
55
|
+
|
|
56
|
+
export interface BlockProverType extends ProtocolModule, BlockProvable {}
|
|
33
57
|
|
|
34
|
-
interface StateTransitionProverType
|
|
35
|
-
extends ProtocolModule
|
|
36
|
-
StateTransitionProverPublicInput,
|
|
37
|
-
StateTransitionProverPublicOutput
|
|
38
|
-
>,
|
|
58
|
+
export interface StateTransitionProverType
|
|
59
|
+
extends ProtocolModule,
|
|
39
60
|
StateTransitionProvable {}
|
|
40
61
|
|
|
41
|
-
export
|
|
62
|
+
export type MandatoryProtocolModulesRecord = {
|
|
63
|
+
TransactionProver: TypedClass<TransactionProverType>;
|
|
42
64
|
BlockProver: TypedClass<BlockProverType>;
|
|
43
65
|
StateTransitionProver: TypedClass<StateTransitionProverType>;
|
|
44
|
-
|
|
66
|
+
AccountState: TypedClass<AccountStateHook>;
|
|
67
|
+
BlockHeight: TypedClass<BlockHeightHook>;
|
|
68
|
+
LastStateRoot: TypedClass<LastStateRootBlockHook>;
|
|
69
|
+
};
|
|
45
70
|
|
|
46
|
-
export
|
|
47
|
-
|
|
48
|
-
|
|
71
|
+
export class 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
|
+
};
|
|
85
|
+
}
|
|
49
86
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
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;
|
|
54
90
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
public static from<Modules extends ProtocolModulesRecord>(
|
|
60
|
-
modules: ProtocolDefinition<Modules>
|
|
61
|
-
) {
|
|
62
|
-
const protocol = new Protocol(modules);
|
|
63
|
-
|
|
64
|
-
// Set empty config for all modules, since we don't have that feature yet
|
|
65
|
-
// eslint-disable-next-line max-len
|
|
66
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-assignment
|
|
67
|
-
const emptyConfig = Object.keys(modules.modules).reduce<any>(
|
|
68
|
-
(agg, item: string) => {
|
|
69
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
70
|
-
agg[item] = {};
|
|
71
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
72
|
-
return agg;
|
|
73
|
-
},
|
|
74
|
-
{}
|
|
75
|
-
);
|
|
76
|
-
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
77
|
-
protocol.configure(emptyConfig as ModulesConfig<Modules>);
|
|
91
|
+
public constructor(definition: Modules) {
|
|
92
|
+
super(definition);
|
|
93
|
+
this.definition = definition;
|
|
94
|
+
}
|
|
78
95
|
|
|
79
|
-
|
|
96
|
+
public get stateService(): SimpleAsyncStateService {
|
|
97
|
+
return this.stateServiceProvider.stateService;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
public get stateServiceProvider(): StateServiceProvider {
|
|
101
|
+
return this.container.resolve<StateServiceProvider>("StateServiceProvider");
|
|
80
102
|
}
|
|
81
103
|
|
|
82
104
|
public decorateModule(
|
|
@@ -84,7 +106,11 @@ export class Protocol<
|
|
|
84
106
|
containedModule: InstanceType<Modules[StringKeyOf<Modules>]>
|
|
85
107
|
) {
|
|
86
108
|
log.debug(`Decorated ${moduleName}`);
|
|
87
|
-
containedModule.
|
|
109
|
+
containedModule.parent = this;
|
|
110
|
+
|
|
111
|
+
if (containedModule instanceof TransitioningProtocolModule) {
|
|
112
|
+
containedModule.name = moduleName;
|
|
113
|
+
}
|
|
88
114
|
|
|
89
115
|
super.decorateModule(moduleName, containedModule);
|
|
90
116
|
}
|
|
@@ -96,7 +122,15 @@ export class Protocol<
|
|
|
96
122
|
private isModule(
|
|
97
123
|
moduleName: keyof Modules
|
|
98
124
|
): moduleName is StringKeyOf<Modules> {
|
|
99
|
-
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
|
+
);
|
|
100
134
|
}
|
|
101
135
|
|
|
102
136
|
public get blockProver(): BlockProvable {
|
|
@@ -112,18 +146,116 @@ export class Protocol<
|
|
|
112
146
|
InstanceType<Modules["StateTransitionProver"]>
|
|
113
147
|
>("StateTransitionProver");
|
|
114
148
|
}
|
|
115
|
-
}
|
|
116
149
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
+
}
|
|
127
224
|
});
|
|
128
|
-
|
|
129
|
-
|
|
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,26 +1,27 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AreProofsEnabled,
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
ChildContainerProvider,
|
|
4
|
+
ConfigurableModule,
|
|
5
|
+
NoConfig,
|
|
6
|
+
noop,
|
|
5
7
|
} from "@proto-kit/common";
|
|
6
8
|
|
|
7
|
-
import
|
|
9
|
+
import { ProtocolEnvironment } from "./ProtocolEnvironment";
|
|
8
10
|
|
|
9
|
-
export abstract class ProtocolModule<
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
public config = {};
|
|
11
|
+
export abstract class ProtocolModule<
|
|
12
|
+
Config = NoConfig,
|
|
13
|
+
> extends ConfigurableModule<Config> {
|
|
14
|
+
public parent?: ProtocolEnvironment;
|
|
14
15
|
|
|
15
|
-
public
|
|
16
|
+
public get areProofsEnabled(): AreProofsEnabled | undefined {
|
|
17
|
+
return this.parent?.getAreProofsEnabled();
|
|
18
|
+
}
|
|
16
19
|
|
|
17
|
-
public
|
|
18
|
-
|
|
20
|
+
public create(childContainerProvider: ChildContainerProvider): void {
|
|
21
|
+
noop();
|
|
19
22
|
}
|
|
20
23
|
|
|
21
|
-
public
|
|
22
|
-
|
|
23
|
-
"AppChain"
|
|
24
|
-
);
|
|
24
|
+
public async start() {
|
|
25
|
+
noop();
|
|
25
26
|
}
|
|
26
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
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
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";
|
|
8
|
+
|
|
9
|
+
import { TransitioningProtocolModule } from "./TransitioningProtocolModule";
|
|
10
|
+
|
|
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
|
+
}
|
|
96
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ProtocolModule } from "./ProtocolModule";
|
|
2
|
+
|
|
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> {
|
|
11
|
+
public name?: string;
|
|
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
|
+
}
|