@proto-kit/protocol 0.1.1-develop.211 → 0.1.1-develop.2137
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Constants.js +1 -0
- package/dist/Constants.js.map +1 -0
- package/dist/hashing/mina-prefixes.d.ts +10 -0
- package/dist/hashing/mina-prefixes.d.ts.map +1 -0
- package/dist/hashing/mina-prefixes.js +10 -0
- package/dist/hashing/mina-prefixes.js.map +1 -0
- package/dist/hashing/protokit-prefixes.d.ts +10 -0
- package/dist/hashing/protokit-prefixes.d.ts.map +1 -0
- package/dist/hashing/protokit-prefixes.js +24 -0
- package/dist/hashing/protokit-prefixes.js.map +1 -0
- package/dist/hooks/AccountStateHook.d.ts +56 -0
- package/dist/hooks/AccountStateHook.d.ts.map +1 -0
- package/dist/hooks/AccountStateHook.js +62 -0
- package/dist/hooks/AccountStateHook.js.map +1 -0
- package/dist/hooks/BlockHeightHook.d.ts +7 -0
- package/dist/hooks/BlockHeightHook.d.ts.map +1 -0
- package/dist/hooks/BlockHeightHook.js +16 -0
- package/dist/hooks/BlockHeightHook.js.map +1 -0
- package/dist/hooks/LastStateRootBlockHook.d.ts +7 -0
- package/dist/hooks/LastStateRootBlockHook.d.ts.map +1 -0
- package/dist/hooks/LastStateRootBlockHook.js +16 -0
- package/dist/hooks/LastStateRootBlockHook.js.map +1 -0
- package/dist/hooks/NoopBlockHook.d.ts +8 -0
- package/dist/hooks/NoopBlockHook.d.ts.map +1 -0
- package/dist/hooks/NoopBlockHook.js +10 -0
- package/dist/hooks/NoopBlockHook.js.map +1 -0
- package/dist/hooks/NoopSettlementHook.d.ts +6 -0
- package/dist/hooks/NoopSettlementHook.d.ts.map +1 -0
- package/dist/{prover/statetransition/StateTransitionWitnessProvider.js → hooks/NoopSettlementHook.js} +8 -7
- package/dist/hooks/NoopSettlementHook.js.map +1 -0
- package/dist/hooks/NoopTransactionHook.d.ts +6 -0
- package/dist/hooks/NoopTransactionHook.d.ts.map +1 -0
- package/dist/hooks/NoopTransactionHook.js +11 -0
- package/dist/hooks/NoopTransactionHook.js.map +1 -0
- package/dist/index.d.ts +51 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +52 -13
- package/dist/index.js.map +1 -0
- package/dist/model/AppliedStateTransitionBatch.d.ts +114 -0
- package/dist/model/AppliedStateTransitionBatch.d.ts.map +1 -0
- package/dist/model/AppliedStateTransitionBatch.js +16 -0
- package/dist/model/AppliedStateTransitionBatch.js.map +1 -0
- package/dist/model/MethodPublicOutput.d.ts +83 -28
- package/dist/model/MethodPublicOutput.d.ts.map +1 -1
- package/dist/model/MethodPublicOutput.js +4 -1
- package/dist/model/MethodPublicOutput.js.map +1 -0
- package/dist/model/Option.d.ts +66 -42
- package/dist/model/Option.d.ts.map +1 -1
- package/dist/model/Option.js +58 -45
- package/dist/model/Option.js.map +1 -0
- package/dist/model/Path.d.ts +4 -3
- package/dist/model/Path.d.ts.map +1 -1
- package/dist/model/Path.js +6 -5
- package/dist/model/Path.js.map +1 -0
- package/dist/model/RuntimeLike.d.ts +11 -0
- package/dist/model/RuntimeLike.d.ts.map +1 -0
- package/dist/model/RuntimeLike.js +2 -0
- package/dist/model/RuntimeLike.js.map +1 -0
- package/dist/model/StateTransition.d.ts +58 -18
- package/dist/model/StateTransition.d.ts.map +1 -1
- package/dist/model/StateTransition.js +13 -4
- package/dist/model/StateTransition.js.map +1 -0
- package/dist/model/StateTransitionProvableBatch.d.ts +369 -54
- package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -1
- package/dist/model/StateTransitionProvableBatch.js +74 -51
- package/dist/model/StateTransitionProvableBatch.js.map +1 -0
- package/dist/model/network/NetworkState.d.ts +105 -9
- package/dist/model/network/NetworkState.d.ts.map +1 -1
- package/dist/model/network/NetworkState.js +22 -2
- package/dist/model/network/NetworkState.js.map +1 -0
- package/dist/model/transaction/AuthorizedTransaction.d.ts +122 -0
- package/dist/model/transaction/AuthorizedTransaction.d.ts.map +1 -0
- package/dist/model/transaction/AuthorizedTransaction.js +39 -0
- package/dist/model/transaction/AuthorizedTransaction.js.map +1 -0
- package/dist/model/transaction/RuntimeTransaction.d.ts +94 -34
- package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -1
- package/dist/model/transaction/RuntimeTransaction.js +72 -11
- package/dist/model/transaction/RuntimeTransaction.js.map +1 -0
- package/dist/model/transaction/SignedTransaction.d.ts +110 -0
- package/dist/model/transaction/SignedTransaction.d.ts.map +1 -0
- package/dist/model/transaction/SignedTransaction.js +34 -0
- package/dist/model/transaction/SignedTransaction.js.map +1 -0
- package/dist/model/transaction/ValueOption.d.ts +187 -0
- package/dist/model/transaction/ValueOption.d.ts.map +1 -0
- package/dist/model/transaction/ValueOption.js +25 -0
- package/dist/model/transaction/ValueOption.js.map +1 -0
- package/dist/protocol/Protocol.d.ts +45 -34
- package/dist/protocol/Protocol.d.ts.map +1 -1
- package/dist/protocol/Protocol.js +115 -57
- package/dist/protocol/Protocol.js.map +1 -0
- package/dist/protocol/ProtocolEnvironment.d.ts +9 -0
- package/dist/protocol/ProtocolEnvironment.d.ts.map +1 -0
- package/dist/protocol/ProtocolEnvironment.js +2 -0
- package/dist/protocol/ProtocolEnvironment.js.map +1 -0
- package/dist/protocol/ProtocolModule.d.ts +7 -6
- package/dist/protocol/ProtocolModule.d.ts.map +1 -1
- package/dist/protocol/ProtocolModule.js +10 -5
- package/dist/protocol/ProtocolModule.js.map +1 -0
- package/dist/protocol/ProvableBlockHook.d.ts +29 -0
- package/dist/protocol/ProvableBlockHook.d.ts.map +1 -0
- package/dist/protocol/ProvableBlockHook.js +20 -0
- package/dist/protocol/ProvableBlockHook.js.map +1 -0
- package/dist/protocol/ProvableTransactionHook.d.ts +32 -3
- package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -1
- package/dist/protocol/ProvableTransactionHook.js +25 -0
- package/dist/protocol/ProvableTransactionHook.js.map +1 -0
- package/dist/protocol/TransitioningProtocolModule.d.ts +6 -1
- package/dist/protocol/TransitioningProtocolModule.d.ts.map +1 -1
- package/dist/protocol/TransitioningProtocolModule.js +6 -0
- package/dist/protocol/TransitioningProtocolModule.js.map +1 -0
- package/dist/prover/accumulators/AppliedBatchHashList.d.ts +18 -0
- package/dist/prover/accumulators/AppliedBatchHashList.d.ts.map +1 -0
- package/dist/prover/accumulators/AppliedBatchHashList.js +25 -0
- package/dist/prover/accumulators/AppliedBatchHashList.js.map +1 -0
- package/dist/prover/accumulators/BlockHashList.d.ts +263 -0
- package/dist/prover/accumulators/BlockHashList.d.ts.map +1 -0
- package/dist/prover/accumulators/BlockHashList.js +97 -0
- package/dist/prover/accumulators/BlockHashList.js.map +1 -0
- package/dist/prover/accumulators/StateTransitionReductionList.d.ts +12 -0
- package/dist/prover/accumulators/StateTransitionReductionList.d.ts.map +1 -0
- package/dist/prover/accumulators/StateTransitionReductionList.js +64 -0
- package/dist/prover/accumulators/StateTransitionReductionList.js.map +1 -0
- package/dist/prover/accumulators/TransactionHashList.d.ts +6 -0
- package/dist/prover/accumulators/TransactionHashList.d.ts.map +1 -0
- package/dist/prover/accumulators/TransactionHashList.js +8 -0
- package/dist/prover/accumulators/TransactionHashList.js.map +1 -0
- package/dist/prover/accumulators/WitnessedRootHashList.d.ts +123 -0
- package/dist/prover/accumulators/WitnessedRootHashList.d.ts.map +1 -0
- package/dist/prover/accumulators/WitnessedRootHashList.js +51 -0
- package/dist/prover/accumulators/WitnessedRootHashList.js.map +1 -0
- package/dist/prover/block/BlockProvable.d.ts +565 -96
- package/dist/prover/block/BlockProvable.d.ts.map +1 -1
- package/dist/prover/block/BlockProvable.js +196 -12
- package/dist/prover/block/BlockProvable.js.map +1 -0
- package/dist/prover/block/BlockProver.d.ts +45 -44
- package/dist/prover/block/BlockProver.d.ts.map +1 -1
- package/dist/prover/block/BlockProver.js +306 -143
- package/dist/prover/block/BlockProver.js.map +1 -0
- package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts +106 -0
- package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts.map +1 -0
- package/dist/prover/block/accummulators/BlockHashMerkleTree.js +25 -0
- package/dist/prover/block/accummulators/BlockHashMerkleTree.js.map +1 -0
- package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts +139 -0
- package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts.map +1 -0
- package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js +21 -0
- package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js.map +1 -0
- package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts +7 -0
- package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts.map +1 -0
- package/dist/prover/{statetransition/StateTransitionWitnessProviderReference.js → block/services/RuntimeVerificationKeyRootService.js} +11 -8
- package/dist/prover/block/services/RuntimeVerificationKeyRootService.js.map +1 -0
- package/dist/prover/statetransition/StateTransitionProvable.d.ts +137 -64
- package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -1
- package/dist/prover/statetransition/StateTransitionProvable.js +10 -7
- package/dist/prover/statetransition/StateTransitionProvable.js.map +1 -0
- package/dist/prover/statetransition/StateTransitionProver.d.ts +26 -24
- package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
- package/dist/prover/statetransition/StateTransitionProver.js +159 -93
- package/dist/prover/statetransition/StateTransitionProver.js.map +1 -0
- package/dist/prover/transaction/TransactionProvable.d.ts +626 -0
- package/dist/prover/transaction/TransactionProvable.d.ts.map +1 -0
- package/dist/prover/transaction/TransactionProvable.js +87 -0
- package/dist/prover/transaction/TransactionProvable.js.map +1 -0
- package/dist/prover/transaction/TransactionProver.d.ts +68 -0
- package/dist/prover/transaction/TransactionProver.d.ts.map +1 -0
- package/dist/prover/transaction/TransactionProver.js +301 -0
- package/dist/prover/transaction/TransactionProver.js.map +1 -0
- package/dist/prover/utils.d.ts +19 -0
- package/dist/prover/utils.d.ts.map +1 -0
- package/dist/prover/utils.js +67 -0
- package/dist/prover/utils.js.map +1 -0
- package/dist/settlement/ContractArgsRegistry.d.ts +13 -0
- package/dist/settlement/ContractArgsRegistry.d.ts.map +1 -0
- package/dist/settlement/ContractArgsRegistry.js +58 -0
- package/dist/settlement/ContractArgsRegistry.js.map +1 -0
- package/dist/settlement/ContractModule.d.ts +16 -0
- package/dist/settlement/ContractModule.d.ts.map +1 -0
- package/dist/settlement/ContractModule.js +12 -0
- package/dist/settlement/ContractModule.js.map +1 -0
- package/dist/settlement/SettlementContractModule.d.ts +47 -0
- package/dist/settlement/SettlementContractModule.d.ts.map +1 -0
- package/dist/settlement/SettlementContractModule.js +81 -0
- package/dist/settlement/SettlementContractModule.js.map +1 -0
- package/dist/settlement/contracts/BridgeContract.d.ts +114 -0
- package/dist/settlement/contracts/BridgeContract.d.ts.map +1 -0
- package/dist/settlement/contracts/BridgeContract.js +270 -0
- package/dist/settlement/contracts/BridgeContract.js.map +1 -0
- package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts +18 -0
- package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts.map +1 -0
- package/dist/settlement/contracts/BridgeContractProtocolModule.js +42 -0
- package/dist/settlement/contracts/BridgeContractProtocolModule.js.map +1 -0
- package/dist/settlement/contracts/BridgingSettlementContractModule.d.ts +21 -0
- package/dist/settlement/contracts/BridgingSettlementContractModule.d.ts.map +1 -0
- package/dist/settlement/contracts/BridgingSettlementContractModule.js +81 -0
- package/dist/settlement/contracts/BridgingSettlementContractModule.js.map +1 -0
- package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +23 -0
- package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts.map +1 -0
- package/dist/settlement/contracts/DispatchContractProtocolModule.js +55 -0
- package/dist/settlement/contracts/DispatchContractProtocolModule.js.map +1 -0
- package/dist/settlement/contracts/DispatchSmartContract.d.ts +50 -0
- package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -0
- package/dist/settlement/contracts/DispatchSmartContract.js +234 -0
- package/dist/settlement/contracts/DispatchSmartContract.js.map +1 -0
- package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts +21 -0
- package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts.map +1 -0
- package/dist/settlement/contracts/SettlementContractProtocolModule.js +84 -0
- package/dist/settlement/contracts/SettlementContractProtocolModule.js.map +1 -0
- package/dist/settlement/contracts/SettlementSmartContract.d.ts +123 -0
- package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -0
- package/dist/settlement/contracts/SettlementSmartContract.js +310 -0
- package/dist/settlement/contracts/SettlementSmartContract.js.map +1 -0
- package/dist/settlement/contracts/SettlementSmartContractModule.d.ts +20 -0
- package/dist/settlement/contracts/SettlementSmartContractModule.d.ts.map +1 -0
- package/dist/settlement/contracts/SettlementSmartContractModule.js +56 -0
- package/dist/settlement/contracts/SettlementSmartContractModule.js.map +1 -0
- package/dist/settlement/contracts/TokenBridgeTree.d.ts +228 -0
- package/dist/settlement/contracts/TokenBridgeTree.d.ts.map +1 -0
- package/dist/settlement/contracts/TokenBridgeTree.js +60 -0
- package/dist/settlement/contracts/TokenBridgeTree.js.map +1 -0
- package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts +10 -0
- package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts.map +1 -0
- package/dist/settlement/contracts/authorizations/ContractAuthorization.js +2 -0
- package/dist/settlement/contracts/authorizations/ContractAuthorization.js.map +1 -0
- package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts +85 -0
- package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts.map +1 -0
- package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js +11 -0
- package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js.map +1 -0
- package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts +79 -0
- package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts.map +1 -0
- package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js +11 -0
- package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js.map +1 -0
- package/dist/settlement/contracts/settlement/BridgingSettlementContract.d.ts +107 -0
- package/dist/settlement/contracts/settlement/BridgingSettlementContract.d.ts.map +1 -0
- package/dist/settlement/contracts/settlement/BridgingSettlementContract.js +188 -0
- package/dist/settlement/contracts/settlement/BridgingSettlementContract.js.map +1 -0
- package/dist/settlement/contracts/settlement/SettlementBase.d.ts +41 -0
- package/dist/settlement/contracts/settlement/SettlementBase.d.ts.map +1 -0
- package/dist/settlement/contracts/settlement/SettlementBase.js +105 -0
- package/dist/settlement/contracts/settlement/SettlementBase.js.map +1 -0
- package/dist/settlement/contracts/settlement/SettlementContract.d.ts +15 -0
- package/dist/settlement/contracts/settlement/SettlementContract.d.ts.map +1 -0
- package/dist/settlement/contracts/settlement/SettlementContract.js +72 -0
- package/dist/settlement/contracts/settlement/SettlementContract.js.map +1 -0
- package/dist/settlement/messages/Deposit.d.ts +77 -0
- package/dist/settlement/messages/Deposit.d.ts.map +1 -0
- package/dist/settlement/messages/Deposit.js +8 -0
- package/dist/settlement/messages/Deposit.js.map +1 -0
- package/dist/settlement/messages/OutgoingMessage.d.ts +67 -0
- package/dist/settlement/messages/OutgoingMessage.d.ts.map +1 -0
- package/dist/settlement/messages/OutgoingMessage.js +7 -0
- package/dist/settlement/messages/OutgoingMessage.js.map +1 -0
- package/dist/settlement/messages/OutgoingMessageArgument.d.ts +588 -0
- package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -0
- package/dist/settlement/messages/OutgoingMessageArgument.js +42 -0
- package/dist/settlement/messages/OutgoingMessageArgument.js.map +1 -0
- package/dist/settlement/messages/Withdrawal.d.ts +2 -0
- package/dist/settlement/messages/Withdrawal.d.ts.map +1 -0
- package/dist/settlement/messages/Withdrawal.js +3 -0
- package/dist/settlement/messages/Withdrawal.js.map +1 -0
- package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts +28 -0
- package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts.map +1 -0
- package/dist/settlement/modularity/OutgoingMessageProcessor.js +39 -0
- package/dist/settlement/modularity/OutgoingMessageProcessor.js.map +1 -0
- package/dist/settlement/modularity/ProvableSettlementHook.d.ts +26 -0
- package/dist/settlement/modularity/ProvableSettlementHook.d.ts.map +1 -0
- package/dist/settlement/modularity/ProvableSettlementHook.js +4 -0
- package/dist/settlement/modularity/ProvableSettlementHook.js.map +1 -0
- package/dist/settlement/modularity/types.d.ts +9 -0
- package/dist/settlement/modularity/types.d.ts.map +1 -0
- package/dist/settlement/modularity/types.js +2 -0
- package/dist/settlement/modularity/types.js.map +1 -0
- package/dist/settlement/modules/NetworkStateSettlementModule.d.ts +11 -0
- package/dist/settlement/modules/NetworkStateSettlementModule.d.ts.map +1 -0
- package/dist/settlement/modules/NetworkStateSettlementModule.js +15 -0
- package/dist/settlement/modules/NetworkStateSettlementModule.js.map +1 -0
- package/dist/state/SimpleAsyncStateService.d.ts +6 -0
- package/dist/state/SimpleAsyncStateService.d.ts.map +1 -0
- package/dist/state/SimpleAsyncStateService.js +2 -0
- package/dist/state/SimpleAsyncStateService.js.map +1 -0
- package/dist/state/State.d.ts +13 -5
- package/dist/state/State.d.ts.map +1 -1
- package/dist/state/State.js +42 -17
- package/dist/state/State.js.map +1 -0
- package/dist/state/StateMap.d.ts +4 -4
- package/dist/state/StateMap.d.ts.map +1 -1
- package/dist/state/StateMap.js +5 -5
- package/dist/state/StateMap.js.map +1 -0
- package/dist/state/StateService.d.ts +4 -4
- package/dist/state/StateService.d.ts.map +1 -1
- package/dist/state/StateService.js +1 -0
- package/dist/state/StateService.js.map +1 -0
- package/dist/state/StateServiceProvider.d.ts +5 -7
- package/dist/state/StateServiceProvider.d.ts.map +1 -1
- package/dist/state/StateServiceProvider.js +18 -23
- package/dist/state/StateServiceProvider.js.map +1 -0
- package/dist/state/WitnessBlockContext.d.ts +5 -0
- package/dist/state/WitnessBlockContext.d.ts.map +1 -0
- package/dist/state/WitnessBlockContext.js +48 -0
- package/dist/state/WitnessBlockContext.js.map +1 -0
- package/dist/state/assert/assert.d.ts +2 -2
- package/dist/state/assert/assert.d.ts.map +1 -1
- package/dist/state/assert/assert.js +16 -6
- package/dist/state/assert/assert.js.map +1 -0
- package/dist/state/context/RuntimeMethodExecutionContext.d.ts +137 -4
- package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -1
- package/dist/state/context/RuntimeMethodExecutionContext.js +44 -11
- package/dist/state/context/RuntimeMethodExecutionContext.js.map +1 -0
- package/dist/state/context/TransitionMethodExecutionContext.d.ts.map +1 -1
- package/dist/state/context/TransitionMethodExecutionContext.js +1 -1
- package/dist/state/context/TransitionMethodExecutionContext.js.map +1 -0
- package/dist/state/protocol/ProtocolState.d.ts +8 -2
- package/dist/state/protocol/ProtocolState.d.ts.map +1 -1
- package/dist/state/protocol/ProtocolState.js +36 -20
- package/dist/state/protocol/ProtocolState.js.map +1 -0
- package/dist/utils/FieldOptions.d.ts +62 -0
- package/dist/utils/FieldOptions.d.ts.map +1 -0
- package/dist/utils/FieldOptions.js +13 -0
- package/dist/utils/FieldOptions.js.map +1 -0
- package/dist/utils/MinaPrefixedProvableHashList.d.ts +20 -0
- package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -0
- package/dist/utils/MinaPrefixedProvableHashList.js +49 -0
- package/dist/utils/MinaPrefixedProvableHashList.js.map +1 -0
- package/dist/utils/PrefixedProvableHashList.d.ts +3 -2
- package/dist/utils/PrefixedProvableHashList.d.ts.map +1 -1
- package/dist/utils/PrefixedProvableHashList.js +5 -1
- package/dist/utils/PrefixedProvableHashList.js.map +1 -0
- package/dist/utils/ProvableHashList.d.ts +27 -4
- package/dist/utils/ProvableHashList.d.ts.map +1 -1
- package/dist/utils/ProvableHashList.js +51 -3
- package/dist/utils/ProvableHashList.js.map +1 -0
- package/dist/utils/ProvableReductionHashList.d.ts +18 -0
- package/dist/utils/ProvableReductionHashList.d.ts.map +1 -0
- package/dist/utils/ProvableReductionHashList.js +54 -0
- package/dist/utils/ProvableReductionHashList.js.map +1 -0
- package/dist/utils/StateTransitionReductionList.d.ts +11 -0
- package/dist/utils/StateTransitionReductionList.d.ts.map +1 -0
- package/dist/utils/StateTransitionReductionList.js +61 -0
- package/dist/utils/StateTransitionReductionList.js.map +1 -0
- package/dist/utils/utils.d.ts +11 -5
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +13 -13
- package/dist/utils/utils.js.map +1 -0
- package/jest.config.cjs +12 -1
- package/package.json +10 -10
- package/src/hashing/mina-prefixes.ts +10 -0
- package/src/hashing/protokit-prefixes.ts +37 -0
- package/src/hooks/AccountStateHook.ts +80 -0
- package/src/hooks/BlockHeightHook.ts +17 -0
- package/src/hooks/LastStateRootBlockHook.ts +25 -0
- package/src/hooks/NoopBlockHook.ts +24 -0
- package/src/hooks/NoopSettlementHook.ts +20 -0
- package/src/{blockmodules → hooks}/NoopTransactionHook.ts +9 -3
- package/src/index.ts +51 -13
- package/src/model/AppliedStateTransitionBatch.ts +16 -0
- package/src/model/MethodPublicOutput.ts +3 -1
- package/src/model/Option.ts +87 -57
- package/src/model/Path.ts +9 -5
- package/src/model/RuntimeLike.ts +12 -0
- package/src/model/StateTransition.ts +19 -5
- package/src/model/StateTransitionProvableBatch.ts +94 -73
- package/src/model/Transaction.ts +3 -1
- package/src/model/network/NetworkState.ts +22 -2
- package/src/model/transaction/AuthorizedTransaction.ts +50 -0
- package/src/model/transaction/RuntimeTransaction.ts +86 -15
- package/src/model/transaction/ValueOption.ts +28 -0
- package/src/protocol/Protocol.ts +186 -116
- package/src/protocol/ProtocolEnvironment.ts +10 -0
- package/src/protocol/ProtocolModule.ts +18 -11
- package/src/protocol/ProvableBlockHook.ts +67 -0
- package/src/protocol/ProvableTransactionHook.ts +92 -3
- package/src/protocol/TransitioningProtocolModule.ts +8 -1
- package/src/prover/accumulators/AppliedBatchHashList.ts +32 -0
- package/src/prover/accumulators/BlockHashList.ts +117 -0
- package/src/prover/accumulators/StateTransitionReductionList.ts +92 -0
- package/src/prover/accumulators/TransactionHashList.ts +9 -0
- package/src/prover/accumulators/WitnessedRootHashList.ts +62 -0
- package/src/prover/block/BlockProvable.ts +360 -28
- package/src/prover/block/BlockProver.ts +668 -251
- package/src/prover/block/accummulators/BlockHashMerkleTree.ts +24 -0
- package/src/prover/block/accummulators/RuntimeVerificationKeyTree.ts +24 -0
- package/src/prover/block/services/RuntimeVerificationKeyRootService.ts +20 -0
- package/src/prover/statetransition/StateTransitionProvable.ts +25 -20
- package/src/prover/statetransition/StateTransitionProver.ts +299 -168
- package/src/prover/transaction/TransactionProvable.ts +183 -0
- package/src/prover/transaction/TransactionProver.ts +561 -0
- package/src/prover/utils.ts +108 -0
- package/src/settlement/ContractArgsRegistry.ts +64 -0
- package/src/settlement/ContractModule.ts +31 -0
- package/src/settlement/SettlementContractModule.ts +150 -0
- package/src/settlement/contracts/BridgeContract.ts +383 -0
- package/src/settlement/contracts/BridgeContractProtocolModule.ts +49 -0
- package/src/settlement/contracts/BridgingSettlementContractModule.ts +116 -0
- package/src/settlement/contracts/DispatchContractProtocolModule.ts +77 -0
- package/src/settlement/contracts/DispatchSmartContract.ts +359 -0
- package/src/settlement/contracts/SettlementSmartContractModule.ts +79 -0
- package/src/settlement/contracts/TokenBridgeTree.ts +86 -0
- package/src/settlement/contracts/authorizations/ContractAuthorization.ts +11 -0
- package/src/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.ts +16 -0
- package/src/settlement/contracts/authorizations/UpdateMessagesHashAuth.ts +16 -0
- package/src/settlement/contracts/settlement/BridgingSettlementContract.ts +283 -0
- package/src/settlement/contracts/settlement/SettlementBase.ts +249 -0
- package/src/settlement/contracts/settlement/SettlementContract.ts +75 -0
- package/src/settlement/messages/Deposit.ts +7 -0
- package/src/settlement/messages/OutgoingMessage.ts +17 -0
- package/src/settlement/messages/OutgoingMessageArgument.ts +62 -0
- package/src/settlement/modularity/OutgoingMessageProcessor.ts +78 -0
- package/src/settlement/modularity/ProvableSettlementHook.ts +36 -0
- package/src/settlement/modularity/types.ts +23 -0
- package/src/settlement/modules/NetworkStateSettlementModule.ts +42 -0
- package/src/state/State.ts +49 -19
- package/src/state/StateMap.ts +5 -6
- package/src/state/StateService.ts +5 -5
- package/src/state/StateServiceProvider.ts +18 -18
- package/src/state/WitnessBlockContext.ts +54 -0
- package/src/state/assert/assert.ts +18 -8
- package/src/state/context/RuntimeMethodExecutionContext.ts +68 -11
- package/src/state/context/TransitionMethodExecutionContext.ts +0 -1
- package/src/state/protocol/ProtocolState.ts +61 -26
- package/src/utils/FieldOptions.ts +13 -0
- package/src/utils/MinaPrefixedProvableHashList.ts +70 -0
- package/src/utils/PrefixedProvableHashList.ts +6 -2
- package/src/utils/ProvableHashList.ts +109 -4
- package/src/utils/ProvableReductionHashList.ts +77 -0
- package/src/utils/utils.ts +21 -16
- package/test/BlockProver.test.ts +124 -140
- package/test/Protocol.test.ts +14 -21
- package/test/State.test.ts +45 -0
- package/test/StateTransition.test.ts +57 -65
- package/test/TestingProtocol.ts +36 -0
- package/test/compiling/types.ts +28 -0
- package/test/model/Option.test.ts +72 -0
- package/test/model/StateTransitionProvableBatch.test.ts +137 -0
- package/test/modularity/types.ts +35 -0
- package/test/prover/block/BlockProver.test.ts +18 -0
- package/test/prover/statetransition/StateTransitionProver.test.ts +261 -0
- package/{src → test}/state/assert/assert.test.ts +10 -3
- package/test/tsconfig.json +7 -0
- package/test/utils/ProvableHashList.test.ts +44 -0
- package/test/utils/ProvableReductionHashList.test.ts +117 -0
- package/test/utils.test.ts +0 -3
- package/LICENSE.md +0 -201
- package/dist/blockmodules/AccountStateModule.d.ts +0 -38
- package/dist/blockmodules/AccountStateModule.d.ts.map +0 -1
- package/dist/blockmodules/AccountStateModule.js +0 -38
- package/dist/blockmodules/NoopTransactionHook.d.ts +0 -6
- package/dist/blockmodules/NoopTransactionHook.d.ts.map +0 -1
- package/dist/blockmodules/NoopTransactionHook.js +0 -5
- package/dist/model/transaction/ProtocolTransaction.d.ts +0 -70
- package/dist/model/transaction/ProtocolTransaction.d.ts.map +0 -1
- package/dist/model/transaction/ProtocolTransaction.js +0 -18
- package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts +0 -16
- package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts.map +0 -1
- package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts +0 -7
- package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts.map +0 -1
- package/dist/state/context/ProtocolMethodExecutionContext.d.ts +0 -22
- package/dist/state/context/ProtocolMethodExecutionContext.d.ts.map +0 -1
- package/dist/state/context/ProtocolMethodExecutionContext.js +0 -28
- package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts +0 -25
- package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts.map +0 -1
- package/dist/utils/merkletree/InMemoryMerkleTreeStorage.js +0 -77
- package/dist/utils/merkletree/MemoryMerkleTreeStorage.d.ts +0 -26
- package/dist/utils/merkletree/MemoryMerkleTreeStorage.d.ts.map +0 -1
- package/dist/utils/merkletree/MemoryMerkleTreeStorage.js +0 -79
- package/dist/utils/merkletree/MerkleTreeStore.d.ts +0 -11
- package/dist/utils/merkletree/MerkleTreeStore.d.ts.map +0 -1
- package/dist/utils/merkletree/MerkleTreeStore.js +0 -1
- package/dist/utils/merkletree/RollupMerkleTree.d.ts +0 -130
- package/dist/utils/merkletree/RollupMerkleTree.d.ts.map +0 -1
- package/dist/utils/merkletree/RollupMerkleTree.js +0 -244
- package/src/blockmodules/AccountStateModule.ts +0 -31
- package/src/model/Option.test.ts +0 -21
- package/src/model/transaction/ProtocolTransaction.ts +0 -25
- package/src/prover/statetransition/StateTransitionWitnessProvider.ts +0 -24
- package/src/prover/statetransition/StateTransitionWitnessProviderReference.ts +0 -17
- package/src/state/context/ProtocolMethodExecutionContext.ts +0 -36
- package/src/utils/merkletree/InMemoryMerkleTreeStorage.ts +0 -106
- package/src/utils/merkletree/MerkleTreeStore.ts +0 -15
- package/src/utils/merkletree/RollupMerkleTree.ts +0 -255
- package/src/utils/merkletree/VirtualMerkleTreeStore.ts +0 -21
- package/tsconfig.test.json +0 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Withdrawal.d.ts","sourceRoot":"","sources":["../../../src/settlement/messages/Withdrawal.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Withdrawal.js","sourceRoot":"","sources":["../../../src/settlement/messages/Withdrawal.ts"],"names":[],"mappings":";AAGA,cAAc"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AccountUpdate, Bool, Field, FlexibleProvablePure, PublicKey } from "o1js";
|
|
2
|
+
import { NoConfig } from "@proto-kit/common";
|
|
3
|
+
import { ProtocolModule } from "../../protocol/ProtocolModule";
|
|
4
|
+
export declare function outgoingMessageProcessor(): (target: import("@proto-kit/common").TypedClass<unknown>) => void;
|
|
5
|
+
export type MessageProcessorArgs = {
|
|
6
|
+
bridgeContract: {
|
|
7
|
+
publicKey: PublicKey;
|
|
8
|
+
tokenId: Field;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export declare abstract class OutgoingMessageProcessor<T, Config = NoConfig> extends ProtocolModule<Config> {
|
|
12
|
+
private status;
|
|
13
|
+
private statusMessage?;
|
|
14
|
+
assertTrue(b: Bool, msg?: string): void;
|
|
15
|
+
processMessage(message: T, args: MessageProcessorArgs): {
|
|
16
|
+
accountUpdates: AccountUpdate[];
|
|
17
|
+
status: Bool;
|
|
18
|
+
statusMessage?: string;
|
|
19
|
+
};
|
|
20
|
+
getMessageType(): Field;
|
|
21
|
+
abstract type: FlexibleProvablePure<T> & {
|
|
22
|
+
name: string;
|
|
23
|
+
};
|
|
24
|
+
abstract messageType: string;
|
|
25
|
+
abstract dummy(): T;
|
|
26
|
+
abstract process(message: T, args: MessageProcessorArgs): AccountUpdate[];
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=OutgoingMessageProcessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OutgoingMessageProcessor.d.ts","sourceRoot":"","sources":["../../../src/settlement/modularity/OutgoingMessageProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,IAAI,EACJ,KAAK,EACL,oBAAoB,EAEpB,SAAS,EACV,MAAM,MAAM,CAAC;AACd,OAAO,EAAa,QAAQ,EAAiB,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,wBAAgB,wBAAwB,sEAEvC;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,cAAc,EAAE;QACd,SAAS,EAAE,SAAS,CAAC;QACrB,OAAO,EAAE,KAAK,CAAC;KAChB,CAAC;CACH,CAAC;AAEF,8BAAsB,wBAAwB,CAC5C,CAAC,EACD,MAAM,GAAG,QAAQ,CACjB,SAAQ,cAAc,CAAC,MAAM,CAAC;IAC9B,OAAO,CAAC,MAAM,CAAqB;IAEnC,OAAO,CAAC,aAAa,CAAC,CAAqB;IAEpC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM;IAOvC,cAAc,CACZ,OAAO,EAAE,CAAC,EACV,IAAI,EAAE,oBAAoB,GACzB;QACD,cAAc,EAAE,aAAa,EAAE,CAAC;QAChC,MAAM,EAAE,IAAI,CAAC;QACb,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB;IAaM,cAAc,IAAI,KAAK;IAY9B,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAE1D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,KAAK,IAAI,CAAC;IAEnB,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,GAAG,aAAa,EAAE;CAC1E"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Bool, Poseidon, } from "o1js";
|
|
2
|
+
import { implement, prefixToField } from "@proto-kit/common";
|
|
3
|
+
import { ProtocolModule } from "../../protocol/ProtocolModule";
|
|
4
|
+
export function outgoingMessageProcessor() {
|
|
5
|
+
return implement("OutgoingMessageProcessor");
|
|
6
|
+
}
|
|
7
|
+
export class OutgoingMessageProcessor extends ProtocolModule {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this.status = Bool(false);
|
|
11
|
+
this.statusMessage = undefined;
|
|
12
|
+
}
|
|
13
|
+
assertTrue(b, msg) {
|
|
14
|
+
this.status = this.status.and(b);
|
|
15
|
+
if (this.statusMessage === undefined) {
|
|
16
|
+
this.statusMessage = msg;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
processMessage(message, args) {
|
|
20
|
+
this.status = Bool(true);
|
|
21
|
+
this.statusMessage = undefined;
|
|
22
|
+
const accountUpdates = this.process(message, args);
|
|
23
|
+
return {
|
|
24
|
+
accountUpdates,
|
|
25
|
+
status: this.status,
|
|
26
|
+
statusMessage: this.statusMessage,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
getMessageType() {
|
|
30
|
+
// TODO static salt/prefix
|
|
31
|
+
// This executes the bigint poseidon behind the scenes, therefore creates a constant
|
|
32
|
+
const messageType = Poseidon.hash([prefixToField(this.messageType)]);
|
|
33
|
+
if (!messageType.isConstant()) {
|
|
34
|
+
throw new Error("Underlying poseidon implementation has changed and doesn't create a constant anymore");
|
|
35
|
+
}
|
|
36
|
+
return messageType;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=OutgoingMessageProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OutgoingMessageProcessor.js","sourceRoot":"","sources":["../../../src/settlement/modularity/OutgoingMessageProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,IAAI,EAGJ,QAAQ,GAET,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,SAAS,EAAY,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,UAAU,wBAAwB;IACtC,OAAO,SAAS,CAAC,0BAA0B,CAAC,CAAC;AAC/C,CAAC;AASD,MAAM,OAAgB,wBAGpB,SAAQ,cAAsB;IAHhC;;QAIU,WAAM,GAAS,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3B,kBAAa,GAAY,SAAS,CAAC;IAgD7C,CAAC;IA9CQ,UAAU,CAAC,CAAO,EAAE,GAAY;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;YACpC,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;SAC1B;IACH,CAAC;IAED,cAAc,CACZ,OAAU,EACV,IAA0B;QAM1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAE/B,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEnD,OAAO;YACL,cAAc;YACd,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC;IACJ,CAAC;IAEM,cAAc;QACnB,0BAA0B;QAC1B,oFAAoF;QACpF,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE;YAC7B,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;SACH;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;CASF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Field, PublicKey, UInt32 } from "o1js";
|
|
2
|
+
import { InferProofBase } from "@proto-kit/common";
|
|
3
|
+
import { ProtocolModule } from "../../protocol/ProtocolModule";
|
|
4
|
+
import { NetworkState } from "../../model/network/NetworkState";
|
|
5
|
+
import type { BlockProof } from "../../prover/block/BlockProvable";
|
|
6
|
+
import type { SettlementContractType } from "../contracts/settlement/SettlementBase";
|
|
7
|
+
export type InputBlockProof = InferProofBase<BlockProof>;
|
|
8
|
+
export type SettlementStateRecord = {
|
|
9
|
+
sequencerKey: PublicKey;
|
|
10
|
+
lastSettlementL1BlockHeight: UInt32;
|
|
11
|
+
stateRoot: Field;
|
|
12
|
+
networkStateHash: Field;
|
|
13
|
+
blockHashRoot: Field;
|
|
14
|
+
};
|
|
15
|
+
export type SettlementHookInputs = {
|
|
16
|
+
blockProof: InputBlockProof;
|
|
17
|
+
fromNetworkState: NetworkState;
|
|
18
|
+
toNetworkState: NetworkState;
|
|
19
|
+
newPromisedMessagesHash: Field;
|
|
20
|
+
contractState: SettlementStateRecord;
|
|
21
|
+
currentL1BlockHeight: UInt32;
|
|
22
|
+
};
|
|
23
|
+
export declare abstract class ProvableSettlementHook<Config> extends ProtocolModule<Config> {
|
|
24
|
+
abstract beforeSettlement(smartContract: SettlementContractType, inputs: SettlementHookInputs): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=ProvableSettlementHook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProvableSettlementHook.d.ts","sourceRoot":"","sources":["../../../src/settlement/modularity/ProvableSettlementHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAErF,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;AAEzD,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE,SAAS,CAAC;IACxB,2BAA2B,EAAE,MAAM,CAAC;IAEpC,SAAS,EAAE,KAAK,CAAC;IACjB,gBAAgB,EAAE,KAAK,CAAC;IACxB,aAAa,EAAE,KAAK,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,EAAE,eAAe,CAAC;IAC5B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,cAAc,EAAE,YAAY,CAAC;IAC7B,uBAAuB,EAAE,KAAK,CAAC;IAC/B,aAAa,EAAE,qBAAqB,CAAC;IACrC,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,8BAAsB,sBAAsB,CAC1C,MAAM,CACN,SAAQ,cAAc,CAAC,MAAM,CAAC;aACd,gBAAgB,CAC9B,aAAa,EAAE,sBAAsB,EACrC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,IAAI,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProvableSettlementHook.js","sourceRoot":"","sources":["../../../src/settlement/modularity/ProvableSettlementHook.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAyB/D,MAAM,OAAgB,sBAEpB,SAAQ,cAAsB;CAK/B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TypedClass } from "@proto-kit/common";
|
|
2
|
+
import { SmartContract } from "o1js";
|
|
3
|
+
import { ContractModule, SmartContractClassFromInterface } from "../ContractModule";
|
|
4
|
+
import type { SettlementModulesRecord } from "../SettlementContractModule";
|
|
5
|
+
export type InferContractType<Module extends TypedClass<ContractModule<any, any>>> = Module extends TypedClass<infer ConcreteModule> ? ConcreteModule extends ContractModule<infer Contract, any> ? Contract & SmartContract : never : never;
|
|
6
|
+
export type GetContracts<SettlementModules extends SettlementModulesRecord> = {
|
|
7
|
+
[Key in keyof SettlementModules]: SmartContractClassFromInterface<InferContractType<SettlementModules[Key]>>;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/settlement/modularity/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,EACL,cAAc,EACd,+BAA+B,EAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAE3E,MAAM,MAAM,iBAAiB,CAC3B,MAAM,SAAS,UAAU,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAEnD,MAAM,SAAS,UAAU,CAAC,MAAM,cAAc,CAAC,GAC3C,cAAc,SAAS,cAAc,CAAC,MAAM,QAAQ,EAAE,GAAG,CAAC,GACxD,QAAQ,GAAG,aAAa,GACxB,KAAK,GACP,KAAK,CAAC;AAEZ,MAAM,MAAM,YAAY,CAAC,iBAAiB,SAAS,uBAAuB,IAAI;KAC3E,GAAG,IAAI,MAAM,iBAAiB,GAAG,+BAA+B,CAC/D,iBAAiB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAC1C;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/settlement/modularity/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { UInt64 } from "o1js";
|
|
2
|
+
import { ProvableSettlementHook, SettlementHookInputs } from "../modularity/ProvableSettlementHook";
|
|
3
|
+
import { SettlementContractType } from "../contracts/settlement/SettlementBase";
|
|
4
|
+
type NetworkStateSettlementModuleConfig = {
|
|
5
|
+
blocksPerL1Block: UInt64;
|
|
6
|
+
};
|
|
7
|
+
export declare class NetworkStateSettlementModule extends ProvableSettlementHook<NetworkStateSettlementModuleConfig> {
|
|
8
|
+
beforeSettlement(smartContract: SettlementContractType, { blockProof, fromNetworkState, toNetworkState, contractState, currentL1BlockHeight, }: SettlementHookInputs): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=NetworkStateSettlementModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NetworkStateSettlementModule.d.ts","sourceRoot":"","sources":["../../../src/settlement/modules/NetworkStateSettlementModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAEhF,KAAK,kCAAkC,GAAG;IACxC,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAGF,qBAAa,4BAA6B,SAAQ,sBAAsB,CAAC,kCAAkC,CAAC;IAC7F,gBAAgB,CAC3B,aAAa,EAAE,sBAAsB,EACrC,EACE,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,oBAAoB,GACrB,EAAE,oBAAoB;CAiB1B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ProvableSettlementHook, } from "../modularity/ProvableSettlementHook";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
3
|
+
export class NetworkStateSettlementModule extends ProvableSettlementHook {
|
|
4
|
+
async beforeSettlement(smartContract, { blockProof, fromNetworkState, toNetworkState, contractState, currentL1BlockHeight, }) {
|
|
5
|
+
const { lastSettlementL1BlockHeight } = contractState;
|
|
6
|
+
const blocksPerL1Block = this.config.blocksPerL1Block.toConstant();
|
|
7
|
+
const numL1Blocks = currentL1BlockHeight.sub(lastSettlementL1BlockHeight);
|
|
8
|
+
const expectedHeightDiff = numL1Blocks.toUInt64().mul(blocksPerL1Block);
|
|
9
|
+
const actualHeightDiff = toNetworkState.block.height.sub(fromNetworkState.block.height);
|
|
10
|
+
const acceptableDerivation = numL1Blocks.mul(1).div(10);
|
|
11
|
+
// TODO Check within bounds efficiently
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
15
|
+
//# sourceMappingURL=NetworkStateSettlementModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NetworkStateSettlementModule.js","sourceRoot":"","sources":["../../../src/settlement/modules/NetworkStateSettlementModule.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,sBAAsB,GAEvB,MAAM,sCAAsC,CAAC;AAO9C,sDAAsD;AACtD,MAAM,OAAO,4BAA6B,SAAQ,sBAA0D;IACnG,KAAK,CAAC,gBAAgB,CAC3B,aAAqC,EACrC,EACE,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,oBAAoB,GACC;QAEvB,MAAM,EAAE,2BAA2B,EAAE,GAAG,aAAa,CAAC;QAEtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;QAEnE,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAC1E,MAAM,kBAAkB,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAExE,MAAM,gBAAgB,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CACtD,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAC9B,CAAC;QAEF,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAExD,uCAAuC;IACzC,CAAC;CACF;AAED,qDAAqD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SimpleAsyncStateService.d.ts","sourceRoot":"","sources":["../../src/state/SimpleAsyncStateService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAE7B,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE,GAAG,SAAS,CAAC,CAAC;IAClD,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SimpleAsyncStateService.js","sourceRoot":"","sources":["../../src/state/SimpleAsyncStateService.ts"],"names":[],"mappings":""}
|
package/dist/state/State.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Field, type FlexibleProvablePure } from "
|
|
1
|
+
import { Field, type FlexibleProvablePure } from "o1js";
|
|
2
2
|
import { Path } from "../model/Path";
|
|
3
3
|
import { Option } from "../model/Option";
|
|
4
4
|
import { StateServiceProvider } from "./StateServiceProvider";
|
|
@@ -14,7 +14,7 @@ export declare class WithStateServiceProvider {
|
|
|
14
14
|
stateServiceProvider: StateServiceProvider;
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
declare const State_base: import("ts-mixer/dist/types/types").Class<any[], WithPath & WithStateServiceProvider, typeof WithPath & typeof WithStateServiceProvider
|
|
17
|
+
declare const State_base: import("ts-mixer/dist/types/types").Class<any[], WithPath & WithStateServiceProvider, typeof WithPath & typeof WithStateServiceProvider>;
|
|
18
18
|
/**
|
|
19
19
|
* Utilities for runtime module state, such as get/set
|
|
20
20
|
*/
|
|
@@ -28,6 +28,14 @@ export declare class State<Value> extends State_base {
|
|
|
28
28
|
*/
|
|
29
29
|
static from<Value>(valueType: FlexibleProvablePure<Value>): State<Value>;
|
|
30
30
|
constructor(valueType: FlexibleProvablePure<Value>);
|
|
31
|
+
private stateType;
|
|
32
|
+
/**
|
|
33
|
+
* Returns the state that is currently the current state tree
|
|
34
|
+
* value: The value-fields, or if not state was found, dummy values
|
|
35
|
+
* isSome: Whether the values where found in the state or not
|
|
36
|
+
* (Basically, whether the value-fields are dummy values or actual values
|
|
37
|
+
* @private
|
|
38
|
+
*/
|
|
31
39
|
private getState;
|
|
32
40
|
/**
|
|
33
41
|
* Provides an in-circuit witness for the current state representation,
|
|
@@ -35,14 +43,14 @@ export declare class State<Value> extends State_base {
|
|
|
35
43
|
*
|
|
36
44
|
* @returns Optional value of the current state
|
|
37
45
|
*/
|
|
38
|
-
private
|
|
46
|
+
private witnessFromState;
|
|
39
47
|
/**
|
|
40
48
|
* Retrieves the current state and creates a state transition
|
|
41
49
|
* anchoring the use of the current state value in the circuit.
|
|
42
50
|
*
|
|
43
51
|
* @returns Option representation of the current state.
|
|
44
52
|
*/
|
|
45
|
-
get(): Option<Value
|
|
53
|
+
get(): Promise<Option<Value>>;
|
|
46
54
|
/**
|
|
47
55
|
* Sets a new state value by creating a state transition from
|
|
48
56
|
* the current value to the newly set value.
|
|
@@ -54,7 +62,7 @@ export declare class State<Value> extends State_base {
|
|
|
54
62
|
*
|
|
55
63
|
* @param value - Value to be set as the current state
|
|
56
64
|
*/
|
|
57
|
-
set(value: Value): void
|
|
65
|
+
set(value: Value): Promise<void>;
|
|
58
66
|
}
|
|
59
67
|
export {};
|
|
60
68
|
//# sourceMappingURL=State.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../../src/state/State.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,EAAY,KAAK,oBAAoB,
|
|
1
|
+
{"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../../src/state/State.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,EAAY,KAAK,oBAAoB,EAAU,MAAM,MAAM,CAAC;AAIhF,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI9D,qBAAa,QAAQ;IACZ,IAAI,CAAC,EAAE,KAAK,CAAC;IAEb,aAAa,IAAI,OAAO,CAAC,IAAI,IAAI;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE;CAOvD;AAED,qBAAa,wBAAwB;IAC5B,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAE5C,qBAAqB,IAAI,OAAO,CAAC,IAAI,IAAI;QAC9C,oBAAoB,EAAE,oBAAoB,CAAC;KAC5C;CAOF;;AAED;;GAEG;AACH,qBAAa,KAAK,CAAC,KAAK,CAAE,SAAQ,UAAyC;IAW/C,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC;IAVhE;;;;;OAKG;WACW,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC;gBAItC,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC;IAIhE,OAAO,CAAC,SAAS,CAGX;IAEN;;;;;;OAMG;YACW,QAAQ;IA2CtB;;;;;OAKG;YACW,gBAAgB;IAW9B;;;;;OAKG;IACU,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAoB1C;;;;;;;;;;OAUG;IACU,GAAG,CAAC,KAAK,EAAE,KAAK;CAuB9B"}
|
package/dist/state/State.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Mixin } from "ts-mixer";
|
|
2
|
-
import { Bool, Provable } from "
|
|
2
|
+
import { Bool, Provable, Struct } from "o1js";
|
|
3
3
|
import { container } from "tsyringe";
|
|
4
4
|
import { dummyValue } from "@proto-kit/common";
|
|
5
5
|
import { Option } from "../model/Option";
|
|
6
6
|
import { StateTransition } from "../model/StateTransition";
|
|
7
7
|
import { RuntimeMethodExecutionContext } from "./context/RuntimeMethodExecutionContext";
|
|
8
|
+
import { WitnessBlockContext } from "./WitnessBlockContext";
|
|
8
9
|
export class WithPath {
|
|
9
10
|
hasPathOrFail() {
|
|
10
11
|
if (!this.path) {
|
|
@@ -35,16 +36,31 @@ export class State extends Mixin(WithPath, WithStateServiceProvider) {
|
|
|
35
36
|
constructor(valueType) {
|
|
36
37
|
super();
|
|
37
38
|
this.valueType = valueType;
|
|
39
|
+
this.stateType = class StateType extends Struct({
|
|
40
|
+
value: this.valueType,
|
|
41
|
+
isSome: Bool,
|
|
42
|
+
}) {
|
|
43
|
+
};
|
|
38
44
|
}
|
|
39
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Returns the state that is currently the current state tree
|
|
47
|
+
* value: The value-fields, or if not state was found, dummy values
|
|
48
|
+
* isSome: Whether the values where found in the state or not
|
|
49
|
+
* (Basically, whether the value-fields are dummy values or actual values
|
|
50
|
+
* @private
|
|
51
|
+
*/
|
|
52
|
+
async getState() {
|
|
40
53
|
this.hasStateServiceOrFail();
|
|
41
54
|
this.hasPathOrFail();
|
|
42
55
|
const { path, stateServiceProvider, valueType } = this;
|
|
43
56
|
const { stateTransitions } = container
|
|
44
57
|
.resolve(RuntimeMethodExecutionContext)
|
|
45
58
|
.current().result;
|
|
59
|
+
// TODO Use Stateservice for this
|
|
46
60
|
// First try to find a match inside already created stateTransitions
|
|
47
|
-
|
|
61
|
+
let previousMutatingTransitions = [];
|
|
62
|
+
previousMutatingTransitions = stateTransitions.filter((transition) => transition.path.toConstant().toBigInt() ===
|
|
63
|
+
path.toConstant().toBigInt() && transition.to.isSome.toBoolean());
|
|
48
64
|
const pmtLength = previousMutatingTransitions.length;
|
|
49
65
|
let value = pmtLength > 0
|
|
50
66
|
? // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
@@ -54,7 +70,7 @@ export class State extends Mixin(WithPath, WithStateServiceProvider) {
|
|
|
54
70
|
return { value, isSome: Bool(true) };
|
|
55
71
|
}
|
|
56
72
|
// If the value is still undefined, look it up in the stateService
|
|
57
|
-
const fields = stateServiceProvider.stateService.get(path);
|
|
73
|
+
const fields = await stateServiceProvider.stateService.get(path);
|
|
58
74
|
if (fields) {
|
|
59
75
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
60
76
|
value = valueType.fromFields(fields);
|
|
@@ -70,11 +86,10 @@ export class State extends Mixin(WithPath, WithStateServiceProvider) {
|
|
|
70
86
|
*
|
|
71
87
|
* @returns Optional value of the current state
|
|
72
88
|
*/
|
|
73
|
-
|
|
89
|
+
async witnessFromState() {
|
|
74
90
|
// get the value from storage, or return a dummy value instead
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
const isSome = Provable.witness(Bool, () => this.getState().isSome);
|
|
91
|
+
// also check if the value exists in the storage or not
|
|
92
|
+
const { value, isSome } = await Provable.witnessAsync(this.stateType, async () => await this.getState());
|
|
78
93
|
return Option.from(isSome, value, this.valueType);
|
|
79
94
|
}
|
|
80
95
|
/**
|
|
@@ -83,13 +98,18 @@ export class State extends Mixin(WithPath, WithStateServiceProvider) {
|
|
|
83
98
|
*
|
|
84
99
|
* @returns Option representation of the current state.
|
|
85
100
|
*/
|
|
86
|
-
get() {
|
|
87
|
-
const option = this.
|
|
101
|
+
async get() {
|
|
102
|
+
const option = await this.witnessFromState();
|
|
88
103
|
this.hasPathOrFail();
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
104
|
+
const { isInWitnessBlock } = container.resolve(WitnessBlockContext);
|
|
105
|
+
// If we're inside a witness block, we only want to retrieve the state
|
|
106
|
+
// to use as a witness but not emit an ST
|
|
107
|
+
if (!isInWitnessBlock) {
|
|
108
|
+
const stateTransition = StateTransition.from(this.path, option);
|
|
109
|
+
container
|
|
110
|
+
.resolve(RuntimeMethodExecutionContext)
|
|
111
|
+
.addStateTransition(stateTransition);
|
|
112
|
+
}
|
|
93
113
|
return option;
|
|
94
114
|
}
|
|
95
115
|
/**
|
|
@@ -103,14 +123,19 @@ export class State extends Mixin(WithPath, WithStateServiceProvider) {
|
|
|
103
123
|
*
|
|
104
124
|
* @param value - Value to be set as the current state
|
|
105
125
|
*/
|
|
106
|
-
set(value) {
|
|
126
|
+
async set(value) {
|
|
107
127
|
// link the transition to the current state
|
|
108
|
-
const fromOption = this.
|
|
109
|
-
const toOption = Option.
|
|
128
|
+
const fromOption = await this.witnessFromState();
|
|
129
|
+
const toOption = Option.fromValue(value, this.valueType);
|
|
110
130
|
this.hasPathOrFail();
|
|
111
131
|
const stateTransition = StateTransition.fromTo(this.path, fromOption, toOption);
|
|
132
|
+
const { isInWitnessBlock } = container.resolve(WitnessBlockContext);
|
|
133
|
+
if (isInWitnessBlock) {
|
|
134
|
+
throw new Error("Cannot set state inside of provable block.");
|
|
135
|
+
}
|
|
112
136
|
container
|
|
113
137
|
.resolve(RuntimeMethodExecutionContext)
|
|
114
138
|
.addStateTransition(stateTransition);
|
|
115
139
|
}
|
|
116
140
|
}
|
|
141
|
+
//# sourceMappingURL=State.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"State.js","sourceRoot":"","sources":["../../src/state/State.ts"],"names":[],"mappings":"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"}
|
package/dist/state/StateMap.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { Field, FlexibleProvablePure } from "
|
|
1
|
+
import type { Field, FlexibleProvablePure } from "o1js";
|
|
2
2
|
import { Option } from "../model/Option";
|
|
3
3
|
import { WithStateServiceProvider, WithPath } from "./State";
|
|
4
|
-
declare const StateMap_base: import("ts-mixer/dist/types/types").Class<any[], WithPath & WithStateServiceProvider, typeof WithPath & typeof WithStateServiceProvider
|
|
4
|
+
declare const StateMap_base: import("ts-mixer/dist/types/types").Class<any[], WithPath & WithStateServiceProvider, typeof WithPath & typeof WithStateServiceProvider>;
|
|
5
5
|
/**
|
|
6
6
|
* Map-like wrapper for state
|
|
7
7
|
*/
|
|
@@ -24,14 +24,14 @@ export declare class StateMap<KeyType, ValueType> extends StateMap_base {
|
|
|
24
24
|
* @param key - Key to obtain the state for
|
|
25
25
|
* @returns Value for the provided key.
|
|
26
26
|
*/
|
|
27
|
-
get(key: KeyType): Option<ValueType
|
|
27
|
+
get(key: KeyType): Promise<Option<ValueType>>;
|
|
28
28
|
/**
|
|
29
29
|
* Sets a value for the given key in the current state map.
|
|
30
30
|
*
|
|
31
31
|
* @param key - Key to store the value under
|
|
32
32
|
* @param value - Value to be stored under the given key
|
|
33
33
|
*/
|
|
34
|
-
set(key: KeyType, value: ValueType): void
|
|
34
|
+
set(key: KeyType, value: ValueType): Promise<void>;
|
|
35
35
|
}
|
|
36
36
|
export {};
|
|
37
37
|
//# sourceMappingURL=StateMap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StateMap.d.ts","sourceRoot":"","sources":["../../src/state/StateMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"StateMap.d.ts","sourceRoot":"","sources":["../../src/state/StateMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,MAAM,CAAC;AAIxD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAS,wBAAwB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;;AAEpE;;GAEG;AACH,qBAAa,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAE,SAAQ,aAGjD;IAgBU,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC;IACtC,SAAS,EAAE,oBAAoB,CAAC,SAAS,CAAC;IAhBnD;;;;;;OAMG;WACW,IAAI,CAAC,OAAO,EAAE,SAAS,EACnC,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,EACtC,SAAS,EAAE,oBAAoB,CAAC,SAAS,CAAC,GACzC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;gBAKtB,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,EACtC,SAAS,EAAE,oBAAoB,CAAC,SAAS,CAAC;IAK5C,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK;IAKnC;;;;;OAKG;IACU,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAU1D;;;;;OAKG;IACU,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAShE"}
|
package/dist/state/StateMap.js
CHANGED
|
@@ -4,7 +4,6 @@ import { State, WithStateServiceProvider, WithPath } from "./State";
|
|
|
4
4
|
/**
|
|
5
5
|
* Map-like wrapper for state
|
|
6
6
|
*/
|
|
7
|
-
// eslint-disable-next-line new-cap
|
|
8
7
|
export class StateMap extends Mixin(WithPath, WithStateServiceProvider) {
|
|
9
8
|
/**
|
|
10
9
|
* Create a new state map with the given key and value types
|
|
@@ -31,13 +30,13 @@ export class StateMap extends Mixin(WithPath, WithStateServiceProvider) {
|
|
|
31
30
|
* @param key - Key to obtain the state for
|
|
32
31
|
* @returns Value for the provided key.
|
|
33
32
|
*/
|
|
34
|
-
get(key) {
|
|
33
|
+
async get(key) {
|
|
35
34
|
const state = State.from(this.valueType);
|
|
36
35
|
this.hasPathOrFail();
|
|
37
36
|
this.hasStateServiceOrFail();
|
|
38
37
|
state.path = this.getPath(key);
|
|
39
38
|
state.stateServiceProvider = this.stateServiceProvider;
|
|
40
|
-
return state.get();
|
|
39
|
+
return await state.get();
|
|
41
40
|
}
|
|
42
41
|
/**
|
|
43
42
|
* Sets a value for the given key in the current state map.
|
|
@@ -45,12 +44,13 @@ export class StateMap extends Mixin(WithPath, WithStateServiceProvider) {
|
|
|
45
44
|
* @param key - Key to store the value under
|
|
46
45
|
* @param value - Value to be stored under the given key
|
|
47
46
|
*/
|
|
48
|
-
set(key, value) {
|
|
47
|
+
async set(key, value) {
|
|
49
48
|
const state = State.from(this.valueType);
|
|
50
49
|
this.hasPathOrFail();
|
|
51
50
|
this.hasStateServiceOrFail();
|
|
52
51
|
state.path = Path.fromKey(this.path, this.keyType, key);
|
|
53
52
|
state.stateServiceProvider = this.stateServiceProvider;
|
|
54
|
-
state.set(value);
|
|
53
|
+
return await state.set(value);
|
|
55
54
|
}
|
|
56
55
|
}
|
|
56
|
+
//# sourceMappingURL=StateMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StateMap.js","sourceRoot":"","sources":["../../src/state/StateMap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAGrC,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEpE;;GAEG;AACH,MAAM,OAAO,QAA6B,SAAQ,KAAK,CACrD,QAAQ,EACR,wBAAwB,CACzB;IACC;;;;;;OAMG;IACI,MAAM,CAAC,IAAI,CAChB,OAAsC,EACtC,SAA0C;QAE1C,OAAO,IAAI,QAAQ,CAAqB,OAAO,EAAE,SAAS,CAAC,CAAC;IAC9D,CAAC;IAED,YACS,OAAsC,EACtC,SAA0C;QAEjD,KAAK,EAAE,CAAC;QAHD,YAAO,GAAP,OAAO,CAA+B;QACtC,cAAS,GAAT,SAAS,CAAiC;IAGnD,CAAC;IAEM,OAAO,CAAC,GAAY;QACzB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,GAAG,CAAC,GAAY;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACvD,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,GAAG,CAAC,GAAY,EAAE,KAAgB;QAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxD,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACvD,OAAO,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Field } from "
|
|
2
|
-
export interface
|
|
3
|
-
get: (key: Field) => Field[] | undefined
|
|
4
|
-
set: (key: Field, value: Field[] | undefined) => void
|
|
1
|
+
import { Field } from "o1js";
|
|
2
|
+
export interface SimpleAsyncStateService {
|
|
3
|
+
get: (key: Field) => Promise<Field[] | undefined>;
|
|
4
|
+
set: (key: Field, value: Field[] | undefined) => Promise<void>;
|
|
5
5
|
}
|
|
6
6
|
//# sourceMappingURL=StateService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StateService.d.ts","sourceRoot":"","sources":["../../src/state/StateService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"StateService.d.ts","sourceRoot":"","sources":["../../src/state/StateService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAE7B,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE,GAAG,SAAS,CAAC,CAAC;IAClD,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StateService.js","sourceRoot":"","sources":["../../src/state/StateService.ts"],"names":[],"mappings":""}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SimpleAsyncStateService } from "./StateService";
|
|
2
2
|
export declare class StateServiceProvider {
|
|
3
|
-
private
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
setCurrentStateService(service: StateService): void;
|
|
8
|
-
resetToDefault(): void;
|
|
3
|
+
private readonly stateServiceStack;
|
|
4
|
+
get stateService(): SimpleAsyncStateService;
|
|
5
|
+
setCurrentStateService(service: SimpleAsyncStateService): void;
|
|
6
|
+
popCurrentStateService(): void;
|
|
9
7
|
}
|
|
10
8
|
//# sourceMappingURL=StateServiceProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StateServiceProvider.d.ts","sourceRoot":"","sources":["../../src/state/StateServiceProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StateServiceProvider.d.ts","sourceRoot":"","sources":["../../src/state/StateServiceProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AASzD,qBACa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiC;IAEnE,IAAW,YAAY,IAAI,uBAAuB,CAOjD;IAEM,sBAAsB,CAAC,OAAO,EAAE,uBAAuB;IAIvD,sBAAsB;CAO9B"}
|
|
@@ -4,39 +4,34 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
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
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
};
|
|
10
|
-
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
-
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
-
};
|
|
13
|
-
import { inject, injectable } from "tsyringe";
|
|
7
|
+
import { injectable } from "tsyringe";
|
|
8
|
+
import { log } from "@proto-kit/common";
|
|
14
9
|
const errors = {
|
|
15
|
-
stateServiceNotSet: () => new Error(
|
|
16
|
-
protocol function by creating them with an AppChain or by setting the
|
|
17
|
-
stateService manually.`),
|
|
10
|
+
stateServiceNotSet: () => new Error("StateService has not been set yet. Be sure to either call your runtime or protocol function by creating them with an AppChain or by setting the stateService manually."),
|
|
18
11
|
};
|
|
19
|
-
let StateServiceProvider = class StateServiceProvider {
|
|
20
|
-
constructor(
|
|
21
|
-
this.
|
|
22
|
-
this.defaultStateService = this.currentStateService;
|
|
12
|
+
export let StateServiceProvider = class StateServiceProvider {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.stateServiceStack = [];
|
|
23
15
|
}
|
|
24
16
|
get stateService() {
|
|
25
|
-
if (this.
|
|
17
|
+
if (this.stateServiceStack.length === 0) {
|
|
26
18
|
throw errors.stateServiceNotSet();
|
|
27
19
|
}
|
|
28
|
-
|
|
20
|
+
// Assertion here is ok, because we check that the array is not empty above
|
|
21
|
+
return this.stateServiceStack.at(-1);
|
|
29
22
|
}
|
|
30
23
|
setCurrentStateService(service) {
|
|
31
|
-
this.
|
|
24
|
+
this.stateServiceStack.push(service);
|
|
32
25
|
}
|
|
33
|
-
|
|
34
|
-
this.
|
|
26
|
+
popCurrentStateService() {
|
|
27
|
+
if (this.stateServiceStack.length === 0) {
|
|
28
|
+
log.trace("Trying to pop from empty state-service stack");
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
this.stateServiceStack.pop();
|
|
35
32
|
}
|
|
36
33
|
};
|
|
37
34
|
StateServiceProvider = __decorate([
|
|
38
|
-
injectable()
|
|
39
|
-
__param(0, inject("StateService")),
|
|
40
|
-
__metadata("design:paramtypes", [Object])
|
|
35
|
+
injectable()
|
|
41
36
|
], StateServiceProvider);
|
|
42
|
-
|
|
37
|
+
//# sourceMappingURL=StateServiceProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StateServiceProvider.js","sourceRoot":"","sources":["../../src/state/StateServiceProvider.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAIxC,MAAM,MAAM,GAAG;IACb,kBAAkB,EAAE,GAAG,EAAE,CACvB,IAAI,KAAK,CACP,wKAAwK,CACzK;CACJ,CAAC;AAGK,WAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAA1B;QACY,sBAAiB,GAA8B,EAAE,CAAC;IAsBrE,CAAC;IApBC,IAAW,YAAY;QACrB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;YACvC,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC;SACnC;QAED,2EAA2E;QAC3E,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;IACxC,CAAC;IAEM,sBAAsB,CAAC,OAAgC;QAC5D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAEM,sBAAsB;QAC3B,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;YACvC,GAAG,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC1D,OAAO;SACR;QACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;CACF,CAAA;AAvBY,oBAAoB;IADhC,UAAU,EAAE;GACA,oBAAoB,CAuBhC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WitnessBlockContext.d.ts","sourceRoot":"","sources":["../../src/state/WitnessBlockContext.ts"],"names":[],"mappings":"AAGA,qBACa,mBAAmB;IACvB,iBAAiB,EAAE,MAAM,CAAK;IAErC,IAAW,gBAAgB,YAE1B;CACF"}
|