@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
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { DynamicProof, Field, Signature, Struct, Void } from "o1js";
|
|
2
|
+
import { RuntimeTransaction } from "../../model/transaction/RuntimeTransaction";
|
|
3
|
+
import { RuntimeVerificationKeyAttestation } from "../block/accummulators/RuntimeVerificationKeyTree";
|
|
4
|
+
import { MethodPublicOutput } from "../../model/MethodPublicOutput";
|
|
5
|
+
import { NetworkState } from "../../model/network/NetworkState";
|
|
6
|
+
import { TransactionHashList } from "../accumulators/TransactionHashList";
|
|
7
|
+
import { AppliedBatchHashList } from "../accumulators/AppliedBatchHashList";
|
|
8
|
+
import { MinaActionsHashList } from "../../utils/MinaPrefixedProvableHashList";
|
|
9
|
+
import { WitnessedRootHashList } from "../accumulators/WitnessedRootHashList";
|
|
10
|
+
import { BundleHashList, BundlePreimage } from "../accumulators/BlockHashList";
|
|
11
|
+
export class TransactionProverState {
|
|
12
|
+
constructor(args) {
|
|
13
|
+
this.transactionList = args.transactionList;
|
|
14
|
+
this.bundleList = args.bundleList;
|
|
15
|
+
this.eternalTransactionsList = args.eternalTransactionsList;
|
|
16
|
+
this.pendingSTBatches = args.pendingSTBatches;
|
|
17
|
+
this.incomingMessages = args.incomingMessages;
|
|
18
|
+
this.witnessedRoots = args.witnessedRoots;
|
|
19
|
+
}
|
|
20
|
+
toCommitments() {
|
|
21
|
+
return {
|
|
22
|
+
bundlesHash: this.bundleList.commitment,
|
|
23
|
+
// pendingSTBatchesHash: this.pendingSTBatches.commitment,
|
|
24
|
+
// transactionsHash: this.transactionList.commitment,
|
|
25
|
+
eternalTransactionsHash: this.eternalTransactionsList.commitment,
|
|
26
|
+
incomingMessagesHash: this.incomingMessages.commitment,
|
|
27
|
+
// witnessedRootsHash: this.witnessedRoots.commitment,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
static fromCommitments(publicInput, args) {
|
|
31
|
+
return new TransactionProverState({
|
|
32
|
+
// Stuff that has to be authenticated via public input, since it's not inside the bundle hash
|
|
33
|
+
bundleList: new BundleHashList(publicInput.bundlesHash, args.bundleListPreimage),
|
|
34
|
+
eternalTransactionsList: new TransactionHashList(publicInput.eternalTransactionsHash),
|
|
35
|
+
incomingMessages: new MinaActionsHashList(publicInput.incomingMessagesHash),
|
|
36
|
+
// Remainders (i.e. stuff that goes into the bundle)
|
|
37
|
+
transactionList: new TransactionHashList(args.transactionHash),
|
|
38
|
+
pendingSTBatches: new AppliedBatchHashList(args.pendingSTBatchesHash),
|
|
39
|
+
witnessedRoots: new WitnessedRootHashList(args.witnessedRootsHash),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// These are all linear trackers, i.e. continuously progressing without
|
|
44
|
+
// interruptions from the block prover
|
|
45
|
+
export const TransactionProverStateCommitments = {
|
|
46
|
+
bundlesHash: Field,
|
|
47
|
+
eternalTransactionsHash: Field,
|
|
48
|
+
incomingMessagesHash: Field,
|
|
49
|
+
};
|
|
50
|
+
export class TransactionProverArguments extends Struct({
|
|
51
|
+
// Commitment to the list of unprocessed (pending) batches of STs that need to be proven
|
|
52
|
+
pendingSTBatchesHash: Field,
|
|
53
|
+
witnessedRootsHash: Field,
|
|
54
|
+
transactionHash: Field,
|
|
55
|
+
bundleListPreimage: BundlePreimage,
|
|
56
|
+
networkState: NetworkState,
|
|
57
|
+
}) {
|
|
58
|
+
}
|
|
59
|
+
export class TransactionProverPublicInput extends Struct(TransactionProverStateCommitments) {
|
|
60
|
+
static equals(input1, input2) {
|
|
61
|
+
const output2 = TransactionProverPublicInput.toFields(input2);
|
|
62
|
+
const output1 = TransactionProverPublicInput.toFields(input1);
|
|
63
|
+
return output1
|
|
64
|
+
.map((value1, index) => value1.equals(output2[index]))
|
|
65
|
+
.reduce((a, b) => a.and(b));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export class TransactionProverPublicOutput extends TransactionProverPublicInput {
|
|
69
|
+
}
|
|
70
|
+
export class TransactionProverTransactionArguments extends Struct({
|
|
71
|
+
transaction: RuntimeTransaction,
|
|
72
|
+
signature: Signature,
|
|
73
|
+
verificationKeyAttestation: RuntimeVerificationKeyAttestation,
|
|
74
|
+
}) {
|
|
75
|
+
}
|
|
76
|
+
export class DynamicRuntimeProof extends DynamicProof {
|
|
77
|
+
}
|
|
78
|
+
DynamicRuntimeProof.publicInputType = Void;
|
|
79
|
+
DynamicRuntimeProof.publicOutputType = MethodPublicOutput;
|
|
80
|
+
// TODO this won't be 0 for proofs-as-args
|
|
81
|
+
DynamicRuntimeProof.maxProofsVerified = 0;
|
|
82
|
+
export class TransactionProverExecutionData extends Struct({
|
|
83
|
+
transaction: TransactionProverTransactionArguments,
|
|
84
|
+
args: TransactionProverArguments,
|
|
85
|
+
}) {
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=TransactionProvable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionProvable.js","sourceRoot":"","sources":["../../../src/prover/transaction/TransactionProvable.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { AreProofsEnabled, CompilableModule, CompileArtifact, CompileRegistry, PlainZkProgram, WithZkProgrammable, ZkProgrammable } from "@proto-kit/common";
|
|
2
|
+
import { NetworkState } from "../../model/network/NetworkState";
|
|
3
|
+
import { ProtocolModule } from "../../protocol/ProtocolModule";
|
|
4
|
+
import { MethodPublicOutput } from "../../model/MethodPublicOutput";
|
|
5
|
+
import { ProvableTransactionHook } from "../../protocol/ProvableTransactionHook";
|
|
6
|
+
import { StateServiceProvider } from "../../state/StateServiceProvider";
|
|
7
|
+
import { RuntimeVerificationKeyRootService } from "../block/services/RuntimeVerificationKeyRootService";
|
|
8
|
+
import { MinimalVKTreeService } from "../block/accummulators/RuntimeVerificationKeyTree";
|
|
9
|
+
import { TransactionProverExecutionData, DynamicRuntimeProof, TransactionProof, TransactionProvable, TransactionProverArguments, TransactionProverPublicInput, TransactionProverPublicOutput, TransactionProverState, TransactionProverTransactionArguments } from "./TransactionProvable";
|
|
10
|
+
type ApplyTransactionArguments = Omit<TransactionProverTransactionArguments, "verificationKeyAttestation">;
|
|
11
|
+
export declare class TransactionProverZkProgrammable extends ZkProgrammable<TransactionProverPublicInput, TransactionProverPublicOutput> {
|
|
12
|
+
private readonly prover;
|
|
13
|
+
private readonly transactionHooks;
|
|
14
|
+
private readonly stateServiceProvider;
|
|
15
|
+
private readonly verificationKeyService;
|
|
16
|
+
constructor(prover: TransactionProver, transactionHooks: ProvableTransactionHook<unknown>[], stateServiceProvider: StateServiceProvider, verificationKeyService: MinimalVKTreeService);
|
|
17
|
+
name: string;
|
|
18
|
+
get areProofsEnabled(): AreProofsEnabled | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Applies and checks the two proofs and applies the corresponding state
|
|
21
|
+
* changes to the given state.
|
|
22
|
+
*
|
|
23
|
+
* The rough high level workflow of this function:
|
|
24
|
+
* 1. Execute beforeTransaction hooks, pushing the ST batch
|
|
25
|
+
* 2. Add Transaction to bundle, meaning appending it to all the respective commitments
|
|
26
|
+
* 3. Push the runtime ST batch
|
|
27
|
+
* 4. Execute afterTransaction hooks, pushing the ST batch
|
|
28
|
+
* 5. Some consistency checks and signature verification
|
|
29
|
+
*
|
|
30
|
+
* @param fromState The from-state of the BlockProver
|
|
31
|
+
* @param runtimeOutput
|
|
32
|
+
* @param executionData
|
|
33
|
+
* @param networkState
|
|
34
|
+
* @param bundleListPreimage
|
|
35
|
+
* @returns The new BlockProver-state to be used as public output
|
|
36
|
+
*/
|
|
37
|
+
applyTransaction(fromState: TransactionProverState, runtimeOutput: MethodPublicOutput, executionData: ApplyTransactionArguments, networkState: NetworkState): Promise<TransactionProverState>;
|
|
38
|
+
private verifyVerificationKeyAttestation;
|
|
39
|
+
private executeTransactionHooks;
|
|
40
|
+
proveTransactionInternal(publicInput: TransactionProverPublicInput, runtimeProof: DynamicRuntimeProof, transaction: TransactionProverTransactionArguments, args: TransactionProverArguments): Promise<TransactionProverPublicOutput>;
|
|
41
|
+
proveTransaction(publicInput: TransactionProverPublicInput, runtimeProof: DynamicRuntimeProof, executionData: TransactionProverExecutionData): Promise<TransactionProverPublicOutput>;
|
|
42
|
+
proveTransactions(publicInput: TransactionProverPublicInput, runtimeProof1: DynamicRuntimeProof, runtimeProof2: DynamicRuntimeProof, executionData1: TransactionProverExecutionData, executionData2: TransactionProverExecutionData): Promise<TransactionProverPublicOutput>;
|
|
43
|
+
dummy(publicInput: TransactionProverPublicInput): Promise<TransactionProverPublicOutput>;
|
|
44
|
+
merge(publicInput: TransactionProverPublicInput, proof1: TransactionProof, proof2: TransactionProof): Promise<TransactionProverPublicOutput>;
|
|
45
|
+
/**
|
|
46
|
+
* Creates the BlockProver ZkProgram.
|
|
47
|
+
* Recursive linking of proofs is done via the previously
|
|
48
|
+
* injected StateTransitionProver and the required AppChainProof class
|
|
49
|
+
*/
|
|
50
|
+
zkProgramFactory(): PlainZkProgram<TransactionProverPublicInput, TransactionProverPublicOutput>[];
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* BlockProver class, which aggregates a AppChainProof and
|
|
54
|
+
* a StateTransitionProof into a single BlockProof, that can
|
|
55
|
+
* then be merged to be committed to the base-layer contract
|
|
56
|
+
*/
|
|
57
|
+
export declare class TransactionProver extends ProtocolModule implements TransactionProvable, CompilableModule {
|
|
58
|
+
readonly runtime: WithZkProgrammable<undefined, MethodPublicOutput> & CompilableModule;
|
|
59
|
+
zkProgrammable: TransactionProverZkProgrammable;
|
|
60
|
+
constructor(runtime: WithZkProgrammable<undefined, MethodPublicOutput> & CompilableModule, transactionHooks: ProvableTransactionHook<unknown>[], stateServiceProvider: StateServiceProvider, verificationKeyService: RuntimeVerificationKeyRootService);
|
|
61
|
+
compile(registry: CompileRegistry): Promise<Record<string, CompileArtifact> | undefined>;
|
|
62
|
+
proveTransaction(publicInput: TransactionProverPublicInput, runtimeProof: DynamicRuntimeProof, executionData: TransactionProverExecutionData): Promise<TransactionProverPublicOutput>;
|
|
63
|
+
proveTransactions(publicInput: TransactionProverPublicInput, runtimeProof1: DynamicRuntimeProof, runtimeProof2: DynamicRuntimeProof, executionData1: TransactionProverExecutionData, executionData2: TransactionProverExecutionData): Promise<TransactionProverPublicOutput>;
|
|
64
|
+
dummy(publicInput: TransactionProverPublicInput): Promise<TransactionProverPublicOutput>;
|
|
65
|
+
merge(publicInput: TransactionProverPublicInput, proof1: TransactionProof, proof2: TransactionProof): Promise<TransactionProverPublicOutput>;
|
|
66
|
+
}
|
|
67
|
+
export {};
|
|
68
|
+
//# sourceMappingURL=TransactionProver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionProver.d.ts","sourceRoot":"","sources":["../../../src/prover/transaction/TransactionProver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
import { provableMethod, ZkProgrammable, } from "@proto-kit/common";
|
|
14
|
+
import { Field, SelfProof, ZkProgram } from "o1js";
|
|
15
|
+
import { inject, injectable, injectAll } from "tsyringe";
|
|
16
|
+
import { ProtocolModule } from "../../protocol/ProtocolModule";
|
|
17
|
+
import { toAfterTransactionHookArgument, toBeforeTransactionHookArgument, } from "../../protocol/ProvableTransactionHook";
|
|
18
|
+
import { StateServiceProvider } from "../../state/StateServiceProvider";
|
|
19
|
+
import { RuntimeVerificationKeyRootService } from "../block/services/RuntimeVerificationKeyRootService";
|
|
20
|
+
import { addTransactionToBundle, executeHooks } from "../utils";
|
|
21
|
+
import { AuthorizedTransaction } from "../../model/transaction/AuthorizedTransaction";
|
|
22
|
+
import { MethodVKConfigData, } from "../block/accummulators/RuntimeVerificationKeyTree";
|
|
23
|
+
import { TransactionProverExecutionData, DynamicRuntimeProof, TransactionProverPublicInput, TransactionProverPublicOutput, TransactionProverState, } from "./TransactionProvable";
|
|
24
|
+
const errors = {
|
|
25
|
+
invalidZkProgramTreeRoot: () => "Root hash of the provided zkProgram config witness is invalid",
|
|
26
|
+
propertyNotMatchingStep: (propertyName, step) => `${propertyName} not matching: ${step}`,
|
|
27
|
+
transactionsHashNotMatching: (step) => errors.propertyNotMatchingStep("Transactions hash", step),
|
|
28
|
+
bundlesHashNotMatching: (step) => errors.propertyNotMatchingStep("Bundles hash", step),
|
|
29
|
+
};
|
|
30
|
+
export class TransactionProverZkProgrammable extends ZkProgrammable {
|
|
31
|
+
constructor(prover, transactionHooks, stateServiceProvider, verificationKeyService) {
|
|
32
|
+
super();
|
|
33
|
+
this.prover = prover;
|
|
34
|
+
this.transactionHooks = transactionHooks;
|
|
35
|
+
this.stateServiceProvider = stateServiceProvider;
|
|
36
|
+
this.verificationKeyService = verificationKeyService;
|
|
37
|
+
this.name = "TransactionProver";
|
|
38
|
+
}
|
|
39
|
+
get areProofsEnabled() {
|
|
40
|
+
return this.prover.areProofsEnabled;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Applies and checks the two proofs and applies the corresponding state
|
|
44
|
+
* changes to the given state.
|
|
45
|
+
*
|
|
46
|
+
* The rough high level workflow of this function:
|
|
47
|
+
* 1. Execute beforeTransaction hooks, pushing the ST batch
|
|
48
|
+
* 2. Add Transaction to bundle, meaning appending it to all the respective commitments
|
|
49
|
+
* 3. Push the runtime ST batch
|
|
50
|
+
* 4. Execute afterTransaction hooks, pushing the ST batch
|
|
51
|
+
* 5. Some consistency checks and signature verification
|
|
52
|
+
*
|
|
53
|
+
* @param fromState The from-state of the BlockProver
|
|
54
|
+
* @param runtimeOutput
|
|
55
|
+
* @param executionData
|
|
56
|
+
* @param networkState
|
|
57
|
+
* @param bundleListPreimage
|
|
58
|
+
* @returns The new BlockProver-state to be used as public output
|
|
59
|
+
*/
|
|
60
|
+
async applyTransaction(fromState, runtimeOutput, executionData, networkState) {
|
|
61
|
+
const { transaction, signature } = executionData;
|
|
62
|
+
let state = { ...fromState };
|
|
63
|
+
const { isMessage } = runtimeOutput;
|
|
64
|
+
const authorizedTransaction = new AuthorizedTransaction({
|
|
65
|
+
transaction,
|
|
66
|
+
signature,
|
|
67
|
+
isMessage,
|
|
68
|
+
});
|
|
69
|
+
const beforeTxHookArguments = toBeforeTransactionHookArgument(authorizedTransaction, networkState, state);
|
|
70
|
+
// Apply beforeTransaction hook state transitions
|
|
71
|
+
const beforeBatch = await this.executeTransactionHooks("before", async (module, args) => await module.beforeTransaction(args), beforeTxHookArguments, isMessage);
|
|
72
|
+
state.pendingSTBatches.push(beforeBatch);
|
|
73
|
+
state.pendingSTBatches.push({
|
|
74
|
+
batchHash: runtimeOutput.stateTransitionsHash,
|
|
75
|
+
applied: runtimeOutput.status,
|
|
76
|
+
});
|
|
77
|
+
state = addTransactionToBundle(state, runtimeOutput.isMessage, transaction);
|
|
78
|
+
// Apply afterTransaction hook state transitions
|
|
79
|
+
const afterTxHookArguments = toAfterTransactionHookArgument(authorizedTransaction, networkState, state, runtimeOutput);
|
|
80
|
+
// Switch to different state set for afterTx hooks
|
|
81
|
+
this.stateServiceProvider.popCurrentStateService();
|
|
82
|
+
const afterBatch = await this.executeTransactionHooks("after", async (module, args) => await module.afterTransaction(args), afterTxHookArguments, isMessage);
|
|
83
|
+
state.pendingSTBatches.push(afterBatch);
|
|
84
|
+
// Check transaction integrity against appProof
|
|
85
|
+
const blockTransactionHash = transaction.hash();
|
|
86
|
+
blockTransactionHash.assertEquals(runtimeOutput.transactionHash, "Transactions provided in AppProof and BlockProof do not match");
|
|
87
|
+
// Check transaction signature or isMessage
|
|
88
|
+
authorizedTransaction
|
|
89
|
+
.validateAuthorization()
|
|
90
|
+
.assertTrue("Transaction authorization not valid");
|
|
91
|
+
// Validate layout of transaction witness
|
|
92
|
+
transaction.assertTransactionType(isMessage);
|
|
93
|
+
return new TransactionProverState(state);
|
|
94
|
+
}
|
|
95
|
+
verifyVerificationKeyAttestation(attestation, methodId) {
|
|
96
|
+
// Verify the [methodId, vk] tuple against the baked-in vk tree root
|
|
97
|
+
const { verificationKey, witness: verificationKeyTreeWitness } = attestation;
|
|
98
|
+
const root = Field(this.verificationKeyService.getRoot());
|
|
99
|
+
const calculatedRoot = verificationKeyTreeWitness.calculateRoot(new MethodVKConfigData({
|
|
100
|
+
methodId: methodId,
|
|
101
|
+
vkHash: verificationKey.hash,
|
|
102
|
+
}).hash());
|
|
103
|
+
root.assertEquals(calculatedRoot, errors.invalidZkProgramTreeRoot());
|
|
104
|
+
return verificationKey;
|
|
105
|
+
}
|
|
106
|
+
async executeTransactionHooks(type, hook, hookArguments, isMessage) {
|
|
107
|
+
const { batch, rawStatus } = await executeHooks({
|
|
108
|
+
transaction: hookArguments.transaction.transaction,
|
|
109
|
+
networkState: hookArguments.networkState,
|
|
110
|
+
}, `${type}Transaction`, async () => {
|
|
111
|
+
for (const module of this.transactionHooks) {
|
|
112
|
+
// eslint-disable-next-line no-await-in-loop
|
|
113
|
+
await hook(module, hookArguments);
|
|
114
|
+
}
|
|
115
|
+
}, isMessage);
|
|
116
|
+
// This is going to set applied to false in case the hook fails
|
|
117
|
+
// (that's only possible for messages though as others are hard-asserted)
|
|
118
|
+
batch.applied = rawStatus;
|
|
119
|
+
return batch;
|
|
120
|
+
}
|
|
121
|
+
async proveTransactionInternal(publicInput, runtimeProof, transaction, args) {
|
|
122
|
+
const state = TransactionProverState.fromCommitments(publicInput, args);
|
|
123
|
+
state.bundleList.checkLastBundleElement(state, args.networkState);
|
|
124
|
+
const verificationKey = this.verifyVerificationKeyAttestation(transaction.verificationKeyAttestation, transaction.transaction.methodId);
|
|
125
|
+
runtimeProof.verify(verificationKey);
|
|
126
|
+
const result = await this.applyTransaction(state, runtimeProof.publicOutput, transaction, args.networkState);
|
|
127
|
+
result.bundleList.addToBundle(result, args.networkState);
|
|
128
|
+
return result.toCommitments();
|
|
129
|
+
}
|
|
130
|
+
async proveTransaction(publicInput, runtimeProof, executionData) {
|
|
131
|
+
return await this.proveTransactionInternal(publicInput, runtimeProof, executionData.transaction, executionData.args);
|
|
132
|
+
}
|
|
133
|
+
async proveTransactions(publicInput, runtimeProof1, runtimeProof2, executionData1, executionData2) {
|
|
134
|
+
const state1 = await this.proveTransactionInternal(publicInput, runtimeProof1, executionData1.transaction, executionData1.args);
|
|
135
|
+
// Switch to next state record for 2nd tx beforeTx hook
|
|
136
|
+
this.stateServiceProvider.popCurrentStateService();
|
|
137
|
+
return await this.proveTransactionInternal(state1, runtimeProof2, executionData2.transaction, executionData2.args);
|
|
138
|
+
}
|
|
139
|
+
async dummy(publicInput) {
|
|
140
|
+
return publicInput;
|
|
141
|
+
}
|
|
142
|
+
async merge(publicInput, proof1, proof2) {
|
|
143
|
+
proof1.verify();
|
|
144
|
+
proof2.verify();
|
|
145
|
+
// Check bundlesHash
|
|
146
|
+
publicInput.bundlesHash.assertEquals(proof1.publicInput.bundlesHash, errors.bundlesHashNotMatching("publicInput.from -> proof1.from"));
|
|
147
|
+
proof1.publicOutput.bundlesHash.assertEquals(proof2.publicInput.bundlesHash, errors.bundlesHashNotMatching("proof1.to -> proof2.from"));
|
|
148
|
+
// Check eternalTransactionsHash
|
|
149
|
+
publicInput.eternalTransactionsHash.assertEquals(proof1.publicInput.eternalTransactionsHash, errors.transactionsHashNotMatching("publicInput.from -> proof1.from"));
|
|
150
|
+
proof1.publicOutput.eternalTransactionsHash.assertEquals(proof2.publicInput.eternalTransactionsHash, errors.transactionsHashNotMatching("proof1.to -> proof2.from"));
|
|
151
|
+
// Check incomingMessagesHash
|
|
152
|
+
publicInput.incomingMessagesHash.assertEquals(proof1.publicInput.incomingMessagesHash, errors.propertyNotMatchingStep("IncomingMessagesHash", "publicInput.from -> proof1.from"));
|
|
153
|
+
proof1.publicOutput.incomingMessagesHash.assertEquals(proof2.publicInput.incomingMessagesHash, errors.propertyNotMatchingStep("IncomingMessagesHash", "proof1.to -> proof2.from"));
|
|
154
|
+
return new TransactionProverPublicOutput({
|
|
155
|
+
bundlesHash: proof2.publicOutput.bundlesHash,
|
|
156
|
+
eternalTransactionsHash: proof2.publicOutput.eternalTransactionsHash,
|
|
157
|
+
incomingMessagesHash: proof2.publicOutput.incomingMessagesHash,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Creates the BlockProver ZkProgram.
|
|
162
|
+
* Recursive linking of proofs is done via the previously
|
|
163
|
+
* injected StateTransitionProver and the required AppChainProof class
|
|
164
|
+
*/
|
|
165
|
+
zkProgramFactory() {
|
|
166
|
+
const { prover } = this;
|
|
167
|
+
const proveTransaction = prover.proveTransaction.bind(prover);
|
|
168
|
+
const proveTransactions = prover.proveTransactions.bind(prover);
|
|
169
|
+
const merge = prover.merge.bind(prover);
|
|
170
|
+
const dummy = prover.dummy.bind(prover);
|
|
171
|
+
const program = ZkProgram({
|
|
172
|
+
name: "TransactionProver",
|
|
173
|
+
publicInput: TransactionProverPublicInput,
|
|
174
|
+
publicOutput: TransactionProverPublicOutput,
|
|
175
|
+
methods: {
|
|
176
|
+
proveTransaction: {
|
|
177
|
+
privateInputs: [DynamicRuntimeProof, TransactionProverExecutionData],
|
|
178
|
+
async method(publicInput, runtimeProof, executionData) {
|
|
179
|
+
return {
|
|
180
|
+
publicOutput: await proveTransaction(publicInput, runtimeProof, executionData),
|
|
181
|
+
};
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
proveTransactions: {
|
|
185
|
+
privateInputs: [
|
|
186
|
+
DynamicRuntimeProof,
|
|
187
|
+
DynamicRuntimeProof,
|
|
188
|
+
TransactionProverExecutionData,
|
|
189
|
+
TransactionProverExecutionData,
|
|
190
|
+
],
|
|
191
|
+
async method(publicInput, runtimeProof1, runtimeProof2, executionData1, executionData2) {
|
|
192
|
+
return {
|
|
193
|
+
publicOutput: await proveTransactions(publicInput, runtimeProof1, runtimeProof2, executionData1, executionData2),
|
|
194
|
+
};
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
dummy: {
|
|
198
|
+
privateInputs: [],
|
|
199
|
+
async method(publicInput) {
|
|
200
|
+
return { publicOutput: await dummy(publicInput) };
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
merge: {
|
|
204
|
+
privateInputs: [
|
|
205
|
+
(SelfProof),
|
|
206
|
+
(SelfProof),
|
|
207
|
+
],
|
|
208
|
+
async method(publicInput, proof1, proof2) {
|
|
209
|
+
return { publicOutput: await merge(publicInput, proof1, proof2) };
|
|
210
|
+
},
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
});
|
|
214
|
+
const methods = {
|
|
215
|
+
proveTransaction: program.proveTransaction,
|
|
216
|
+
proveTransactions: program.proveTransactions,
|
|
217
|
+
dummy: program.dummy,
|
|
218
|
+
merge: program.merge,
|
|
219
|
+
};
|
|
220
|
+
const SelfProofClass = ZkProgram.Proof(program);
|
|
221
|
+
return [
|
|
222
|
+
{
|
|
223
|
+
name: program.name,
|
|
224
|
+
compile: program.compile.bind(program),
|
|
225
|
+
verify: program.verify.bind(program),
|
|
226
|
+
analyzeMethods: program.analyzeMethods.bind(program),
|
|
227
|
+
Proof: SelfProofClass,
|
|
228
|
+
methods,
|
|
229
|
+
},
|
|
230
|
+
];
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
__decorate([
|
|
234
|
+
provableMethod(),
|
|
235
|
+
__metadata("design:type", Function),
|
|
236
|
+
__metadata("design:paramtypes", [TransactionProverPublicInput,
|
|
237
|
+
DynamicRuntimeProof,
|
|
238
|
+
TransactionProverExecutionData]),
|
|
239
|
+
__metadata("design:returntype", Promise)
|
|
240
|
+
], TransactionProverZkProgrammable.prototype, "proveTransaction", null);
|
|
241
|
+
__decorate([
|
|
242
|
+
provableMethod(),
|
|
243
|
+
__metadata("design:type", Function),
|
|
244
|
+
__metadata("design:paramtypes", [TransactionProverPublicInput,
|
|
245
|
+
DynamicRuntimeProof,
|
|
246
|
+
DynamicRuntimeProof,
|
|
247
|
+
TransactionProverExecutionData,
|
|
248
|
+
TransactionProverExecutionData]),
|
|
249
|
+
__metadata("design:returntype", Promise)
|
|
250
|
+
], TransactionProverZkProgrammable.prototype, "proveTransactions", null);
|
|
251
|
+
__decorate([
|
|
252
|
+
provableMethod(),
|
|
253
|
+
__metadata("design:type", Function),
|
|
254
|
+
__metadata("design:paramtypes", [TransactionProverPublicInput]),
|
|
255
|
+
__metadata("design:returntype", Promise)
|
|
256
|
+
], TransactionProverZkProgrammable.prototype, "dummy", null);
|
|
257
|
+
__decorate([
|
|
258
|
+
provableMethod(),
|
|
259
|
+
__metadata("design:type", Function),
|
|
260
|
+
__metadata("design:paramtypes", [TransactionProverPublicInput, Object, Object]),
|
|
261
|
+
__metadata("design:returntype", Promise)
|
|
262
|
+
], TransactionProverZkProgrammable.prototype, "merge", null);
|
|
263
|
+
/**
|
|
264
|
+
* BlockProver class, which aggregates a AppChainProof and
|
|
265
|
+
* a StateTransitionProof into a single BlockProof, that can
|
|
266
|
+
* then be merged to be committed to the base-layer contract
|
|
267
|
+
*/
|
|
268
|
+
export let TransactionProver = class TransactionProver extends ProtocolModule {
|
|
269
|
+
constructor(runtime, transactionHooks, stateServiceProvider, verificationKeyService) {
|
|
270
|
+
super();
|
|
271
|
+
this.runtime = runtime;
|
|
272
|
+
this.zkProgrammable = new TransactionProverZkProgrammable(this, transactionHooks, stateServiceProvider, verificationKeyService);
|
|
273
|
+
}
|
|
274
|
+
async compile(registry) {
|
|
275
|
+
return await registry.forceProverExists(async () => {
|
|
276
|
+
await this.runtime.compile(registry);
|
|
277
|
+
return await this.zkProgrammable.compile(registry);
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
proveTransaction(publicInput, runtimeProof, executionData) {
|
|
281
|
+
return this.zkProgrammable.proveTransaction(publicInput, runtimeProof, executionData);
|
|
282
|
+
}
|
|
283
|
+
proveTransactions(publicInput, runtimeProof1, runtimeProof2, executionData1, executionData2) {
|
|
284
|
+
return this.zkProgrammable.proveTransactions(publicInput, runtimeProof1, runtimeProof2, executionData1, executionData2);
|
|
285
|
+
}
|
|
286
|
+
dummy(publicInput) {
|
|
287
|
+
return this.zkProgrammable.dummy(publicInput);
|
|
288
|
+
}
|
|
289
|
+
merge(publicInput, proof1, proof2) {
|
|
290
|
+
return this.zkProgrammable.merge(publicInput, proof1, proof2);
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
TransactionProver = __decorate([
|
|
294
|
+
injectable(),
|
|
295
|
+
__param(0, inject("Runtime")),
|
|
296
|
+
__param(1, injectAll("ProvableTransactionHook")),
|
|
297
|
+
__param(2, inject("StateServiceProvider")),
|
|
298
|
+
__metadata("design:paramtypes", [Object, Array, StateServiceProvider,
|
|
299
|
+
RuntimeVerificationKeyRootService])
|
|
300
|
+
], TransactionProver);
|
|
301
|
+
//# sourceMappingURL=TransactionProver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionProver.js","sourceRoot":"","sources":["../../../src/prover/transaction/TransactionProver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Bool } from "o1js";
|
|
2
|
+
import { StateTransition } from "../model/StateTransition";
|
|
3
|
+
import { AppliedStateTransitionBatch } from "../model/AppliedStateTransitionBatch";
|
|
4
|
+
import { RuntimeMethodExecutionData } from "../state/context/RuntimeMethodExecutionContext";
|
|
5
|
+
import { RuntimeTransaction } from "../model/transaction/RuntimeTransaction";
|
|
6
|
+
import { TransactionProverState } from "./transaction/TransactionProvable";
|
|
7
|
+
/**
|
|
8
|
+
* Constructs a AppliedBatch based on a list of STs and the flag whether to
|
|
9
|
+
* be applied or not. The AppliedBatch is a condensed commitment to a batch
|
|
10
|
+
* of STs.
|
|
11
|
+
*/
|
|
12
|
+
export declare function constructBatch(stateTransitions: StateTransition<any>[], applied: Bool): AppliedStateTransitionBatch;
|
|
13
|
+
export declare function executeHooks<T>(contextArguments: RuntimeMethodExecutionData, hookName: string, method: () => Promise<T>, skipEnforceStatus?: Bool | undefined): Promise<{
|
|
14
|
+
batch: AppliedStateTransitionBatch;
|
|
15
|
+
result: Awaited<T>;
|
|
16
|
+
rawStatus: import("o1js/dist/node/lib/provable/bool").Bool;
|
|
17
|
+
}>;
|
|
18
|
+
export declare function addTransactionToBundle<T extends Pick<TransactionProverState, "transactionList" | "eternalTransactionsList" | "incomingMessages">>(state: T, isMessage: Bool, transaction: RuntimeTransaction): T;
|
|
19
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/prover/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,EAEL,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAEL,0BAA0B,EAC3B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAI7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,gBAAgB,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,EACxC,OAAO,EAAE,IAAI,+BAed;AAGD,wBAAsB,YAAY,CAAC,CAAC,EAClC,gBAAgB,EAAE,0BAA0B,EAC5C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAExB,iBAAiB,GAAE,IAAI,GAAG,SAAqB;;;;GAoChD;AAED,wBAAgB,sBAAsB,CACpC,CAAC,SAAS,IAAI,CACZ,sBAAsB,EACtB,iBAAiB,GAAG,yBAAyB,GAAG,kBAAkB,CACnE,EACD,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,GAAG,CAAC,CAgB/D"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Bool } from "o1js";
|
|
2
|
+
import { container } from "tsyringe";
|
|
3
|
+
import { ProvableStateTransition, } from "../model/StateTransition";
|
|
4
|
+
import { AppliedStateTransitionBatch } from "../model/AppliedStateTransitionBatch";
|
|
5
|
+
import { RuntimeMethodExecutionContext, } from "../state/context/RuntimeMethodExecutionContext";
|
|
6
|
+
import { MinaActions } from "../utils/MinaPrefixedProvableHashList";
|
|
7
|
+
import { StateTransitionReductionList } from "./accumulators/StateTransitionReductionList";
|
|
8
|
+
/**
|
|
9
|
+
* Constructs a AppliedBatch based on a list of STs and the flag whether to
|
|
10
|
+
* be applied or not. The AppliedBatch is a condensed commitment to a batch
|
|
11
|
+
* of STs.
|
|
12
|
+
*/
|
|
13
|
+
export function constructBatch(stateTransitions, applied) {
|
|
14
|
+
const transitions = stateTransitions.map((transition) => transition.toProvable());
|
|
15
|
+
const hashList = new StateTransitionReductionList(ProvableStateTransition);
|
|
16
|
+
transitions.forEach((transition) => {
|
|
17
|
+
hashList.push(transition);
|
|
18
|
+
});
|
|
19
|
+
return new AppliedStateTransitionBatch({
|
|
20
|
+
batchHash: hashList.commitment,
|
|
21
|
+
applied,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
// TODO How does this interact with the RuntimeMethodExecutionContext when executing runtimemethods?
|
|
25
|
+
export async function executeHooks(contextArguments, hookName, method,
|
|
26
|
+
// This can be either that the tx is a message, or we are inside a dummy block hook
|
|
27
|
+
skipEnforceStatus = undefined) {
|
|
28
|
+
const executionContext = container.resolve(RuntimeMethodExecutionContext);
|
|
29
|
+
executionContext.clear();
|
|
30
|
+
// Setup context for potential calls to runtime methods.
|
|
31
|
+
// This way they can use this.transaction etc. while still having provable
|
|
32
|
+
// integrity between data
|
|
33
|
+
executionContext.setup(contextArguments);
|
|
34
|
+
executionContext.beforeMethod("", "", []);
|
|
35
|
+
const result = await method();
|
|
36
|
+
executionContext.afterMethod();
|
|
37
|
+
const { stateTransitions, status, statusMessage } = executionContext.current().result;
|
|
38
|
+
// See https://github.com/proto-kit/framework/issues/321 for why we do this here
|
|
39
|
+
if (skipEnforceStatus !== undefined) {
|
|
40
|
+
// isMessage is defined for all tx hooks
|
|
41
|
+
status
|
|
42
|
+
.or(skipEnforceStatus)
|
|
43
|
+
.assertTrue(`${hookName} hook call failed for non-message tx: ${statusMessage ?? "-"}`);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// isMessage is undefined for all block hooks
|
|
47
|
+
status.assertTrue(`${hookName} hook call failed: ${statusMessage ?? "-"}`);
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
batch: constructBatch(stateTransitions, Bool(true)),
|
|
51
|
+
result,
|
|
52
|
+
rawStatus: status,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export function addTransactionToBundle(state, isMessage, transaction) {
|
|
56
|
+
const transactionHash = transaction.hash();
|
|
57
|
+
// Append tx to transaction list
|
|
58
|
+
state.transactionList.push(transactionHash);
|
|
59
|
+
// Append tx to eternal transaction list
|
|
60
|
+
// TODO Change that to the a sequence-state compatible transaction struct
|
|
61
|
+
state.eternalTransactionsList.push(transactionHash);
|
|
62
|
+
// Append tx to incomingMessagesHash
|
|
63
|
+
const actionHash = MinaActions.actionHash(transaction.hashData());
|
|
64
|
+
state.incomingMessages.pushIf(actionHash, isMessage);
|
|
65
|
+
return state;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/prover/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface StaticInitializationContract<Args> {
|
|
2
|
+
getInitializationArgs(): Args;
|
|
3
|
+
}
|
|
4
|
+
export type NaiveObjectSchema<Obj> = {
|
|
5
|
+
[Key in keyof Obj]: undefined extends Obj[Key] ? "Optional" : "Required";
|
|
6
|
+
};
|
|
7
|
+
export declare class ContractArgsRegistry {
|
|
8
|
+
args: Record<string, any>;
|
|
9
|
+
addArgs<Type>(name: string, addition: Partial<Type>): void;
|
|
10
|
+
resetArgs(name: string): void;
|
|
11
|
+
getArgs<Type>(name: string, schema: NaiveObjectSchema<Type>): Type;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=ContractArgsRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContractArgsRegistry.d.ts","sourceRoot":"","sources":["../../src/settlement/ContractArgsRegistry.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,4BAA4B,CAAC,IAAI;IAChD,qBAAqB,IAAI,IAAI,CAAC;CAC/B;AAED,MAAM,MAAM,iBAAiB,CAAC,GAAG,IAAI;KAClC,GAAG,IAAI,MAAM,GAAG,GAAG,SAAS,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU;CACzE,CAAC;AAcF,qBAEa,oBAAoB;IAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAExB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC;IAMnD,SAAS,CAAC,IAAI,EAAE,MAAM;IAItB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,GAAG,IAAI;CAqB1E"}
|