@proto-kit/protocol 0.1.1-develop.164 → 0.1.1-develop.1661
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 +52 -0
- package/dist/hooks/AccountStateHook.d.ts.map +1 -0
- package/dist/hooks/AccountStateHook.js +52 -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 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +52 -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 -29
- 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 -42
- package/dist/model/Option.d.ts.map +1 -1
- package/dist/model/Option.js +62 -47
- 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 +67 -16
- package/dist/model/StateTransition.d.ts.map +1 -1
- package/dist/model/StateTransition.js +18 -2
- 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 +88 -11
- 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 +20 -2
- package/dist/model/network/NetworkState.js.map +1 -0
- package/dist/model/transaction/RuntimeTransaction.d.ts +96 -28
- package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -1
- package/dist/model/transaction/RuntimeTransaction.js +75 -11
- package/dist/model/transaction/RuntimeTransaction.js.map +1 -0
- package/dist/model/transaction/SignedTransaction.d.ts +107 -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 +173 -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 +27 -25
- package/dist/protocol/Protocol.d.ts.map +1 -1
- package/dist/protocol/Protocol.js +98 -28
- 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 +19 -0
- package/dist/protocol/ProvableBlockHook.d.ts.map +1 -0
- package/dist/protocol/ProvableBlockHook.js +21 -0
- package/dist/protocol/ProvableBlockHook.js.map +1 -0
- package/dist/protocol/ProvableTransactionHook.d.ts +34 -0
- package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -0
- package/dist/protocol/ProvableTransactionHook.js +13 -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/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 +137 -0
- package/dist/prover/accumulators/WitnessedRootHashList.d.ts.map +1 -0
- package/dist/prover/accumulators/WitnessedRootHashList.js +50 -0
- package/dist/prover/accumulators/WitnessedRootHashList.js.map +1 -0
- package/dist/prover/block/BlockProvable.d.ts +869 -65
- package/dist/prover/block/BlockProvable.d.ts.map +1 -1
- package/dist/prover/block/BlockProvable.js +86 -6
- package/dist/prover/block/BlockProvable.js.map +1 -0
- package/dist/prover/block/BlockProver.d.ts +82 -34
- package/dist/prover/block/BlockProver.d.ts.map +1 -1
- package/dist/prover/block/BlockProver.js +505 -86
- 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 +30 -17
- package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
- package/dist/prover/statetransition/StateTransitionProver.js +169 -74
- package/dist/prover/statetransition/StateTransitionProver.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 +51 -0
- package/dist/settlement/SettlementContractModule.d.ts.map +1 -0
- package/dist/settlement/SettlementContractModule.js +80 -0
- package/dist/settlement/SettlementContractModule.js.map +1 -0
- package/dist/settlement/contracts/BridgeContract.d.ts +116 -0
- package/dist/settlement/contracts/BridgeContract.d.ts.map +1 -0
- package/dist/settlement/contracts/BridgeContract.js +259 -0
- package/dist/settlement/contracts/BridgeContract.js.map +1 -0
- package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts +16 -0
- package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts.map +1 -0
- package/dist/settlement/contracts/BridgeContractProtocolModule.js +41 -0
- package/dist/settlement/contracts/BridgeContractProtocolModule.js.map +1 -0
- package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +21 -0
- package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts.map +1 -0
- package/dist/settlement/contracts/DispatchContractProtocolModule.js +57 -0
- package/dist/settlement/contracts/DispatchContractProtocolModule.js.map +1 -0
- package/dist/settlement/contracts/DispatchSmartContract.d.ts +44 -0
- package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -0
- package/dist/settlement/contracts/DispatchSmartContract.js +229 -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/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/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 +462 -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 +8 -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 +131 -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/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 +19 -0
- package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -0
- package/dist/utils/MinaPrefixedProvableHashList.js +46 -0
- package/dist/utils/MinaPrefixedProvableHashList.js.map +1 -0
- package/dist/utils/PrefixedProvableHashList.d.ts +2 -2
- package/dist/utils/PrefixedProvableHashList.d.ts.map +1 -1
- package/dist/utils/PrefixedProvableHashList.js +2 -1
- package/dist/utils/PrefixedProvableHashList.js.map +1 -0
- package/dist/utils/ProvableHashList.d.ts +23 -4
- package/dist/utils/ProvableHashList.d.ts.map +1 -1
- package/dist/utils/ProvableHashList.js +38 -2
- 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 +20 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +51 -0
- package/dist/utils/utils.js.map +1 -0
- package/jest.config.cjs +12 -1
- package/package.json +10 -9
- package/src/hashing/mina-prefixes.ts +10 -0
- package/src/hashing/protokit-prefixes.ts +37 -0
- package/src/hooks/AccountStateHook.ts +57 -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 +51 -9
- package/src/model/AppliedStateTransitionBatch.ts +16 -0
- package/src/model/MethodPublicOutput.ts +3 -1
- package/src/model/Option.ts +99 -60
- package/src/model/Path.ts +9 -5
- package/src/model/RuntimeLike.ts +12 -0
- package/src/model/StateTransition.ts +25 -3
- package/src/model/StateTransitionProvableBatch.ts +117 -14
- package/src/model/Transaction.ts +3 -1
- package/src/model/network/NetworkState.ts +21 -3
- package/src/model/transaction/RuntimeTransaction.ts +90 -15
- package/src/model/transaction/SignedTransaction.ts +47 -0
- package/src/model/transaction/ValueOption.ts +28 -0
- package/src/protocol/Protocol.ts +166 -74
- package/src/protocol/ProtocolEnvironment.ts +10 -0
- package/src/protocol/ProtocolModule.ts +16 -16
- package/src/protocol/ProvableBlockHook.ts +68 -0
- package/src/protocol/ProvableTransactionHook.ts +77 -0
- package/src/protocol/TransitioningProtocolModule.ts +12 -0
- package/src/prover/accumulators/AppliedBatchHashList.ts +32 -0
- package/src/prover/accumulators/StateTransitionReductionList.ts +92 -0
- package/src/prover/accumulators/TransactionHashList.ts +9 -0
- package/src/prover/accumulators/WitnessedRootHashList.ts +61 -0
- package/src/prover/block/BlockProvable.ts +188 -15
- package/src/prover/block/BlockProver.ts +979 -143
- 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 +338 -130
- package/src/settlement/ContractModule.ts +31 -0
- package/src/settlement/SettlementContractModule.ts +145 -0
- package/src/settlement/contracts/BridgeContract.ts +366 -0
- package/src/settlement/contracts/BridgeContractProtocolModule.ts +48 -0
- package/src/settlement/contracts/DispatchContractProtocolModule.ts +75 -0
- package/src/settlement/contracts/DispatchSmartContract.ts +325 -0
- package/src/settlement/contracts/SettlementContractProtocolModule.ts +113 -0
- package/src/settlement/contracts/SettlementSmartContract.ts +502 -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/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 +22 -0
- package/src/settlement/modules/NetworkStateSettlementModule.ts +42 -0
- package/src/state/State.ts +177 -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/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 +66 -0
- package/src/utils/PrefixedProvableHashList.ts +2 -2
- package/src/utils/ProvableHashList.ts +78 -3
- package/src/utils/ProvableReductionHashList.ts +77 -0
- package/src/utils/utils.ts +44 -55
- 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 +56 -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 +27 -0
- package/dist/config/ConfigurableModule.d.ts +0 -18
- package/dist/config/ConfigurableModule.d.ts.map +0 -1
- package/dist/config/ConfigurableModule.js +0 -20
- package/dist/config/ConfigurationAggregator.d.ts +0 -10
- package/dist/config/ConfigurationAggregator.d.ts.map +0 -1
- package/dist/config/ConfigurationAggregator.js +0 -35
- package/dist/config/ConfigurationReceiver.d.ts +0 -25
- package/dist/config/ConfigurationReceiver.d.ts.map +0 -1
- package/dist/config/ConfigurationReceiver.js +0 -36
- package/dist/config/ModuleContainer.d.ts +0 -44
- package/dist/config/ModuleContainer.d.ts.map +0 -1
- package/dist/config/ModuleContainer.js +0 -89
- package/dist/config/types.d.ts +0 -2
- package/dist/config/types.d.ts.map +0 -1
- package/dist/config/types.js +0 -1
- package/dist/model/MethodPublicInput.d.ts +0 -51
- package/dist/model/MethodPublicInput.d.ts.map +0 -1
- package/dist/model/MethodPublicInput.js +0 -11
- 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/block/BlockScopedModule.d.ts +0 -3
- package/dist/prover/block/BlockScopedModule.d.ts.map +0 -1
- package/dist/prover/block/BlockScopedModule.js +0 -6
- 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/src/model/Option.d.ts +0 -158
- package/dist/src/model/Option.d.ts.map +0 -1
- package/dist/src/model/Option.js +0 -53
- package/dist/src/model/Path.d.ts +0 -35
- package/dist/src/model/Path.d.ts.map +0 -1
- package/dist/src/model/Path.js +0 -51
- package/dist/src/model/StateTransition.d.ts +0 -201
- package/dist/src/model/StateTransition.d.ts.map +0 -1
- package/dist/src/model/StateTransition.js +0 -43
- package/dist/src/utils/PrefixedHashList.d.ts +0 -15
- package/dist/src/utils/PrefixedHashList.d.ts.map +0 -1
- package/dist/src/utils/PrefixedHashList.js +0 -28
- package/dist/src/utils/ProvableHashList.d.ts +0 -30
- package/dist/src/utils/ProvableHashList.d.ts.map +0 -1
- package/dist/src/utils/ProvableHashList.js +0 -43
- package/dist/utils/PrefixedHashList.d.ts +0 -14
- package/dist/utils/PrefixedHashList.d.ts.map +0 -1
- package/dist/utils/PrefixedHashList.js +0 -12
- package/dist/utils/Utils.d.ts +0 -17
- package/dist/utils/Utils.d.ts.map +0 -1
- package/dist/utils/Utils.js +0 -64
- 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/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 -250
- package/src/utils/merkletree/VirtualMerkleTreeStore.ts +0 -21
- package/tsconfig.test.json +0 -9
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { Provable } from "o1js";
|
|
2
|
+
|
|
3
|
+
import { ProvableOption } from "../../model/Option";
|
|
4
|
+
import {
|
|
5
|
+
ProvableStateTransition,
|
|
6
|
+
StateTransition,
|
|
7
|
+
} from "../../model/StateTransition";
|
|
8
|
+
import { ProvableReductionHashList } from "../../utils/ProvableReductionHashList";
|
|
9
|
+
|
|
10
|
+
export class StateTransitionReductionList extends ProvableReductionHashList<ProvableStateTransition> {
|
|
11
|
+
public push(value: ProvableStateTransition) {
|
|
12
|
+
this.pushWithMetadata(value);
|
|
13
|
+
|
|
14
|
+
return this;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public pushWithMetadata(value: ProvableStateTransition) {
|
|
18
|
+
return this.pushAndReduce(value, (previous: ProvableStateTransition) => {
|
|
19
|
+
const pathsMatch = previous.path.equals(value.path);
|
|
20
|
+
|
|
21
|
+
// Take the previous.from if the paths match, otherwise leave ST as is
|
|
22
|
+
const from = Provable.if(
|
|
23
|
+
pathsMatch,
|
|
24
|
+
ProvableOption,
|
|
25
|
+
previous.from,
|
|
26
|
+
value.from
|
|
27
|
+
);
|
|
28
|
+
// In case we have a layout like
|
|
29
|
+
// { from: 5, to: 10 }, { from: 10, to: none }
|
|
30
|
+
// we just take the first and discard the second
|
|
31
|
+
const to = Provable.if(
|
|
32
|
+
value.to.isSome.or(pathsMatch.not()),
|
|
33
|
+
ProvableOption,
|
|
34
|
+
value.to,
|
|
35
|
+
previous.to
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
const transition = new ProvableStateTransition({
|
|
39
|
+
path: value.path,
|
|
40
|
+
from: new ProvableOption(from),
|
|
41
|
+
to: new ProvableOption(to),
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
// Assert that connection is correct
|
|
45
|
+
previous.to.value
|
|
46
|
+
.equals(value.from.value)
|
|
47
|
+
.or(
|
|
48
|
+
previous.to.isSome
|
|
49
|
+
.not()
|
|
50
|
+
.and(previous.from.value.equals(value.from.value))
|
|
51
|
+
)
|
|
52
|
+
.or(pathsMatch.not())
|
|
53
|
+
.assertTrue();
|
|
54
|
+
|
|
55
|
+
return [transition, pathsMatch];
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public toField() {
|
|
60
|
+
return this.commitment;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export function reduceStateTransitions(
|
|
65
|
+
transitions: StateTransition<unknown>[]
|
|
66
|
+
): StateTransition<unknown>[] {
|
|
67
|
+
const reduced: StateTransition<unknown>[] = [];
|
|
68
|
+
|
|
69
|
+
transitions.forEach((st) => {
|
|
70
|
+
if (reduced.length === 0) {
|
|
71
|
+
reduced.push(st);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const last = reduced.at(-1)!;
|
|
76
|
+
if (last.path.equals(st.path).toBoolean()) {
|
|
77
|
+
if (st.toValue.isSome.toBoolean()) {
|
|
78
|
+
reduced.pop();
|
|
79
|
+
reduced.push(
|
|
80
|
+
new StateTransition<unknown>(st.path, last.fromValue, st.toValue)
|
|
81
|
+
);
|
|
82
|
+
} else {
|
|
83
|
+
// Do nothing, because we discard that ST
|
|
84
|
+
// { from: 5, to: 10 }, { from: 10, to: none }
|
|
85
|
+
// cancel the 2nd
|
|
86
|
+
}
|
|
87
|
+
} else {
|
|
88
|
+
reduced.push(st);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
return reduced;
|
|
92
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Field } from "o1js";
|
|
2
|
+
|
|
3
|
+
import { DefaultProvableHashList } from "../../utils/ProvableHashList";
|
|
4
|
+
|
|
5
|
+
export class TransactionHashList extends DefaultProvableHashList<Field> {
|
|
6
|
+
public constructor(commitment: Field = Field(0)) {
|
|
7
|
+
super(Field, commitment);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Bool, Field, Struct } from "o1js";
|
|
2
|
+
|
|
3
|
+
import { DefaultProvableHashList } from "../../utils/ProvableHashList";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Link between a certain applied batch stack and a given root hash that the
|
|
7
|
+
* stack has to evaluate to at that given point in time
|
|
8
|
+
*/
|
|
9
|
+
export class WitnessedRoot extends Struct({
|
|
10
|
+
appliedBatchListState: Field,
|
|
11
|
+
root: Field,
|
|
12
|
+
}) {}
|
|
13
|
+
|
|
14
|
+
export class WitnessedRootWitness extends Struct({
|
|
15
|
+
witnessedRoot: Field,
|
|
16
|
+
preimage: Field,
|
|
17
|
+
}) {}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Accumulator as of section "Intermediary state roots" of the STProver v2 spec
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
export class WitnessedRootHashList extends DefaultProvableHashList<WitnessedRoot> {
|
|
24
|
+
public constructor(commitment: Field = Field(0)) {
|
|
25
|
+
super(WitnessedRoot, commitment);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* To be used by the BlockProver or for tracing
|
|
30
|
+
*
|
|
31
|
+
* The main purpose of this method compared to the simple push methods
|
|
32
|
+
* is for deduplicating witnessed roots. We need to do this because the
|
|
33
|
+
* STProver can only witness once per batch, therefore if multiple witness
|
|
34
|
+
* points fall back to the same ST (because any batches in between were empty),
|
|
35
|
+
* this has to be detected and compensated for.
|
|
36
|
+
* This function does this using the preimage of the current list state.
|
|
37
|
+
*
|
|
38
|
+
* @param preimage The preimage to the **current** state of the list.
|
|
39
|
+
*/
|
|
40
|
+
public witnessRoot(
|
|
41
|
+
witnessedRoot: WitnessedRoot,
|
|
42
|
+
preimage: Field,
|
|
43
|
+
condition: Bool
|
|
44
|
+
) {
|
|
45
|
+
// Note, we don't have to validate the preimage here because of the following
|
|
46
|
+
// 1. If the sequencer doesn't provide the correct witness, the BlockProver's
|
|
47
|
+
// equality check will fail
|
|
48
|
+
// 2. If the list is empty, no preimage exists, therefore condition (2) doesn't
|
|
49
|
+
// apply, which is the same outcome when the sequencer provides an arbitrary witness
|
|
50
|
+
const preimageCheckList = new WitnessedRootHashList(preimage).push(
|
|
51
|
+
witnessedRoot
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
// Conditions:
|
|
55
|
+
// (1) don't append if witnessedRoot == finalizedRoot -> Already covered in BlockProver
|
|
56
|
+
// (2) don't append if preimage.push({ finalizedRoot, pendingSTBatchesHash }) == this.commitment
|
|
57
|
+
const skipPush = preimageCheckList.commitment.equals(this.commitment);
|
|
58
|
+
|
|
59
|
+
return this.pushIf(witnessedRoot, condition.and(skipPush.not()));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -1,45 +1,218 @@
|
|
|
1
|
-
|
|
1
|
+
// eslint-disable-next-line max-classes-per-file
|
|
2
|
+
import {
|
|
3
|
+
Bool,
|
|
4
|
+
DynamicProof,
|
|
5
|
+
Field,
|
|
6
|
+
Proof,
|
|
7
|
+
Signature,
|
|
8
|
+
Struct,
|
|
9
|
+
Void,
|
|
10
|
+
} from "o1js";
|
|
11
|
+
import { WithZkProgrammable, CompilableModule } from "@proto-kit/common";
|
|
2
12
|
|
|
3
13
|
import { StateTransitionProof } from "../statetransition/StateTransitionProvable";
|
|
4
14
|
import { MethodPublicOutput } from "../../model/MethodPublicOutput";
|
|
5
|
-
import {
|
|
6
|
-
import { ProtocolTransaction } from "../../model/transaction/ProtocolTransaction";
|
|
15
|
+
import { RuntimeTransaction } from "../../model/transaction/RuntimeTransaction";
|
|
7
16
|
import { NetworkState } from "../../model/network/NetworkState";
|
|
17
|
+
import { TransactionHashList } from "../accumulators/TransactionHashList";
|
|
18
|
+
import { MinaActionsHashList } from "../../utils/MinaPrefixedProvableHashList";
|
|
19
|
+
import { AppliedBatchHashList } from "../accumulators/AppliedBatchHashList";
|
|
20
|
+
import {
|
|
21
|
+
WitnessedRootHashList,
|
|
22
|
+
WitnessedRootWitness,
|
|
23
|
+
} from "../accumulators/WitnessedRootHashList";
|
|
8
24
|
|
|
9
|
-
|
|
25
|
+
import { BlockHashMerkleTreeWitness } from "./accummulators/BlockHashMerkleTree";
|
|
26
|
+
import { RuntimeVerificationKeyAttestation } from "./accummulators/RuntimeVerificationKeyTree";
|
|
27
|
+
|
|
28
|
+
// Should be equal to BlockProver.PublicInput
|
|
29
|
+
export interface BlockProverState {
|
|
30
|
+
/**
|
|
31
|
+
* The current state root of the block prover
|
|
32
|
+
*/
|
|
33
|
+
stateRoot: Field;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The current commitment of the transaction-list which
|
|
37
|
+
* will at the end equal the bundle hash
|
|
38
|
+
*/
|
|
39
|
+
transactionList: TransactionHashList;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The network state which gives access to values such as blockHeight
|
|
43
|
+
* This value is the same for the whole batch (L2 block)
|
|
44
|
+
*/
|
|
45
|
+
networkState: NetworkState;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The root of the merkle tree encoding all block hashes,
|
|
49
|
+
* see `BlockHashMerkleTree`
|
|
50
|
+
*/
|
|
51
|
+
blockHashRoot: Field;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* A variant of the transactionsHash that is never reset.
|
|
55
|
+
* Thought for usage in the sequence state mempool.
|
|
56
|
+
* In comparison, transactionsHash restarts at 0 for every new block
|
|
57
|
+
*/
|
|
58
|
+
eternalTransactionsList: TransactionHashList;
|
|
59
|
+
|
|
60
|
+
pendingSTBatches: AppliedBatchHashList;
|
|
61
|
+
|
|
62
|
+
incomingMessages: MinaActionsHashList;
|
|
63
|
+
|
|
64
|
+
witnessedRoots: WitnessedRootHashList;
|
|
65
|
+
|
|
66
|
+
blockNumber: Field;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// TODO Sort and organize public inputs and outputs
|
|
70
|
+
export class BlockProverStateCommitments extends Struct({
|
|
10
71
|
transactionsHash: Field,
|
|
11
72
|
stateRoot: Field,
|
|
73
|
+
// Commitment to the list of unprocessed (pending) batches of STs that need to be proven
|
|
74
|
+
pendingSTBatchesHash: Field,
|
|
75
|
+
witnessedRootsHash: Field,
|
|
12
76
|
networkStateHash: Field,
|
|
13
|
-
|
|
77
|
+
blockHashRoot: Field,
|
|
78
|
+
eternalTransactionsHash: Field,
|
|
79
|
+
incomingMessagesHash: Field,
|
|
80
|
+
blockNumber: Field,
|
|
81
|
+
}) {
|
|
82
|
+
public static fromBlockProverState(
|
|
83
|
+
state: BlockProverState
|
|
84
|
+
): BlockProverStateCommitments {
|
|
85
|
+
return {
|
|
86
|
+
networkStateHash: state.networkState.hash(),
|
|
87
|
+
stateRoot: state.stateRoot,
|
|
88
|
+
blockNumber: state.blockNumber,
|
|
89
|
+
blockHashRoot: state.blockHashRoot,
|
|
90
|
+
pendingSTBatchesHash: state.pendingSTBatches.commitment,
|
|
91
|
+
transactionsHash: state.transactionList.commitment,
|
|
92
|
+
eternalTransactionsHash: state.eternalTransactionsList.commitment,
|
|
93
|
+
incomingMessagesHash: state.incomingMessages.commitment,
|
|
94
|
+
witnessedRootsHash: state.witnessedRoots.commitment,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
public static toBlockProverState(
|
|
99
|
+
publicInput: BlockProverStateCommitments,
|
|
100
|
+
networkState: NetworkState
|
|
101
|
+
): BlockProverState {
|
|
102
|
+
publicInput.networkStateHash.assertEquals(
|
|
103
|
+
networkState.hash(),
|
|
104
|
+
"ExecutionData Networkstate doesn't equal public input hash"
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
return {
|
|
108
|
+
networkState,
|
|
109
|
+
stateRoot: publicInput.stateRoot,
|
|
110
|
+
blockHashRoot: publicInput.blockHashRoot,
|
|
111
|
+
transactionList: new TransactionHashList(publicInput.transactionsHash),
|
|
112
|
+
eternalTransactionsList: new TransactionHashList(
|
|
113
|
+
publicInput.eternalTransactionsHash
|
|
114
|
+
),
|
|
115
|
+
incomingMessages: new MinaActionsHashList(
|
|
116
|
+
publicInput.incomingMessagesHash
|
|
117
|
+
),
|
|
118
|
+
pendingSTBatches: new AppliedBatchHashList(
|
|
119
|
+
publicInput.pendingSTBatchesHash
|
|
120
|
+
),
|
|
121
|
+
witnessedRoots: new WitnessedRootHashList(publicInput.witnessedRootsHash),
|
|
122
|
+
blockNumber: publicInput.blockNumber,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export class BlockProverPublicInput extends BlockProverStateCommitments {}
|
|
14
128
|
|
|
15
129
|
export class BlockProverPublicOutput extends Struct({
|
|
16
130
|
transactionsHash: Field,
|
|
17
131
|
stateRoot: Field,
|
|
18
|
-
|
|
132
|
+
pendingSTBatchesHash: Field,
|
|
133
|
+
witnessedRootsHash: Field,
|
|
134
|
+
networkStateHash: Field,
|
|
135
|
+
blockHashRoot: Field,
|
|
136
|
+
eternalTransactionsHash: Field,
|
|
137
|
+
incomingMessagesHash: Field,
|
|
138
|
+
closed: Bool,
|
|
139
|
+
blockNumber: Field,
|
|
140
|
+
}) {
|
|
141
|
+
public equals(input: BlockProverPublicInput, closed: Bool): Bool {
|
|
142
|
+
const output2 = BlockProverPublicOutput.toFields({
|
|
143
|
+
...input,
|
|
144
|
+
closed,
|
|
145
|
+
});
|
|
146
|
+
const output1 = BlockProverPublicOutput.toFields(this);
|
|
147
|
+
return output1
|
|
148
|
+
.map((value1, index) => value1.equals(output2[index]))
|
|
149
|
+
.reduce((a, b) => a.and(b));
|
|
150
|
+
}
|
|
151
|
+
}
|
|
19
152
|
|
|
20
153
|
export type BlockProverProof = Proof<
|
|
21
154
|
BlockProverPublicInput,
|
|
22
155
|
BlockProverPublicOutput
|
|
23
156
|
>;
|
|
24
157
|
|
|
25
|
-
export class
|
|
26
|
-
transaction:
|
|
158
|
+
export class BlockProverTransactionArguments extends Struct({
|
|
159
|
+
transaction: RuntimeTransaction,
|
|
160
|
+
signature: Signature,
|
|
161
|
+
verificationKeyAttestation: RuntimeVerificationKeyAttestation,
|
|
162
|
+
}) {}
|
|
163
|
+
|
|
164
|
+
export class DynamicRuntimeProof extends DynamicProof<
|
|
165
|
+
Void,
|
|
166
|
+
MethodPublicOutput
|
|
167
|
+
> {
|
|
168
|
+
static publicInputType = Void;
|
|
169
|
+
|
|
170
|
+
static publicOutputType = MethodPublicOutput;
|
|
171
|
+
|
|
172
|
+
// TODO this won't be 0 for proofs-as-args
|
|
173
|
+
static maxProofsVerified = 0 as const;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export class BlockProverSingleTransactionExecutionData extends Struct({
|
|
177
|
+
transaction: BlockProverTransactionArguments,
|
|
178
|
+
networkState: NetworkState,
|
|
179
|
+
}) {}
|
|
180
|
+
|
|
181
|
+
export class BlockProverMultiTransactionExecutionData extends Struct({
|
|
182
|
+
transaction1: BlockProverTransactionArguments,
|
|
183
|
+
transaction2: BlockProverTransactionArguments,
|
|
27
184
|
networkState: NetworkState,
|
|
28
|
-
// accountstate
|
|
29
185
|
}) {}
|
|
30
186
|
|
|
31
187
|
export interface BlockProvable
|
|
32
|
-
extends
|
|
188
|
+
extends WithZkProgrammable<BlockProverPublicInput, BlockProverPublicOutput>,
|
|
189
|
+
CompilableModule {
|
|
33
190
|
proveTransaction: (
|
|
34
191
|
publicInput: BlockProverPublicInput,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
192
|
+
runtimeProof: DynamicRuntimeProof,
|
|
193
|
+
executionData: BlockProverSingleTransactionExecutionData
|
|
194
|
+
) => Promise<BlockProverPublicOutput>;
|
|
195
|
+
|
|
196
|
+
proveTransactions: (
|
|
197
|
+
publicInput: BlockProverPublicInput,
|
|
198
|
+
runtimeProof1: DynamicRuntimeProof,
|
|
199
|
+
runtimeProof2: DynamicRuntimeProof,
|
|
200
|
+
executionData: BlockProverMultiTransactionExecutionData
|
|
201
|
+
) => Promise<BlockProverPublicOutput>;
|
|
202
|
+
|
|
203
|
+
proveBlock: (
|
|
204
|
+
publicInput: BlockProverPublicInput,
|
|
205
|
+
networkState: NetworkState,
|
|
206
|
+
blockWitness: BlockHashMerkleTreeWitness,
|
|
207
|
+
stateTransitionProof: StateTransitionProof,
|
|
208
|
+
deferSTs: Bool,
|
|
209
|
+
afterBlockRootWitness: WitnessedRootWitness,
|
|
210
|
+
transactionProof: BlockProverProof
|
|
211
|
+
) => Promise<BlockProverPublicOutput>;
|
|
39
212
|
|
|
40
213
|
merge: (
|
|
41
214
|
publicInput: BlockProverPublicInput,
|
|
42
215
|
proof1: BlockProverProof,
|
|
43
216
|
proof2: BlockProverProof
|
|
44
|
-
) => BlockProverPublicOutput
|
|
217
|
+
) => Promise<BlockProverPublicOutput>;
|
|
45
218
|
}
|