@proto-kit/protocol 0.1.1-develop.1088 → 0.1.1-develop.1309

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.
Files changed (211) hide show
  1. package/dist/Constants.js +1 -0
  2. package/dist/Constants.js.map +1 -0
  3. package/dist/hooks/AccountStateHook.js +1 -0
  4. package/dist/hooks/AccountStateHook.js.map +1 -0
  5. package/dist/hooks/BlockHeightHook.js +1 -0
  6. package/dist/hooks/BlockHeightHook.js.map +1 -0
  7. package/dist/hooks/LastStateRootBlockHook.js +1 -0
  8. package/dist/hooks/LastStateRootBlockHook.js.map +1 -0
  9. package/dist/hooks/NoopBlockHook.js +1 -0
  10. package/dist/hooks/NoopBlockHook.js.map +1 -0
  11. package/dist/hooks/NoopSettlementHook.d.ts +2 -2
  12. package/dist/hooks/NoopSettlementHook.d.ts.map +1 -1
  13. package/dist/hooks/NoopSettlementHook.js +1 -0
  14. package/dist/hooks/NoopSettlementHook.js.map +1 -0
  15. package/dist/hooks/NoopTransactionHook.js +1 -0
  16. package/dist/hooks/NoopTransactionHook.js.map +1 -0
  17. package/dist/index.d.ts +6 -2
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +7 -2
  20. package/dist/index.js.map +1 -0
  21. package/dist/model/MethodPublicOutput.js +1 -0
  22. package/dist/model/MethodPublicOutput.js.map +1 -0
  23. package/dist/model/Option.js +1 -0
  24. package/dist/model/Option.js.map +1 -0
  25. package/dist/model/Path.js +1 -0
  26. package/dist/model/Path.js.map +1 -0
  27. package/dist/model/RuntimeLike.js +1 -0
  28. package/dist/model/RuntimeLike.js.map +1 -0
  29. package/dist/model/StateTransition.js +1 -0
  30. package/dist/model/StateTransition.js.map +1 -0
  31. package/dist/model/StateTransitionProvableBatch.d.ts +28 -2
  32. package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -1
  33. package/dist/model/StateTransitionProvableBatch.js +9 -3
  34. package/dist/model/StateTransitionProvableBatch.js.map +1 -0
  35. package/dist/model/network/NetworkState.js +1 -0
  36. package/dist/model/network/NetworkState.js.map +1 -0
  37. package/dist/model/transaction/RuntimeTransaction.js +1 -0
  38. package/dist/model/transaction/RuntimeTransaction.js.map +1 -0
  39. package/dist/model/transaction/SignedTransaction.js +1 -0
  40. package/dist/model/transaction/SignedTransaction.js.map +1 -0
  41. package/dist/model/transaction/ValueOption.js +1 -0
  42. package/dist/model/transaction/ValueOption.js.map +1 -0
  43. package/dist/protocol/Protocol.d.ts.map +1 -1
  44. package/dist/protocol/Protocol.js +31 -6
  45. package/dist/protocol/Protocol.js.map +1 -0
  46. package/dist/protocol/ProtocolEnvironment.js +1 -0
  47. package/dist/protocol/ProtocolEnvironment.js.map +1 -0
  48. package/dist/protocol/ProtocolModule.d.ts +1 -1
  49. package/dist/protocol/ProtocolModule.d.ts.map +1 -1
  50. package/dist/protocol/ProtocolModule.js +2 -1
  51. package/dist/protocol/ProtocolModule.js.map +1 -0
  52. package/dist/protocol/ProvableBlockHook.js +1 -0
  53. package/dist/protocol/ProvableBlockHook.js.map +1 -0
  54. package/dist/protocol/ProvableTransactionHook.js +1 -0
  55. package/dist/protocol/ProvableTransactionHook.js.map +1 -0
  56. package/dist/protocol/TransitioningProtocolModule.js +1 -0
  57. package/dist/protocol/TransitioningProtocolModule.js.map +1 -0
  58. package/dist/prover/block/BlockProvable.d.ts +19 -5
  59. package/dist/prover/block/BlockProvable.d.ts.map +1 -1
  60. package/dist/prover/block/BlockProvable.js +5 -2
  61. package/dist/prover/block/BlockProvable.js.map +1 -0
  62. package/dist/prover/block/BlockProver.d.ts +11 -9
  63. package/dist/prover/block/BlockProver.d.ts.map +1 -1
  64. package/dist/prover/block/BlockProver.js +79 -41
  65. package/dist/prover/block/BlockProver.js.map +1 -0
  66. package/dist/prover/block/accummulators/BlockHashMerkleTree.js +1 -0
  67. package/dist/prover/block/accummulators/BlockHashMerkleTree.js.map +1 -0
  68. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts +2 -2
  69. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js +1 -0
  70. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js.map +1 -0
  71. package/dist/prover/block/services/RuntimeVerificationKeyRootService.js +1 -0
  72. package/dist/prover/block/services/RuntimeVerificationKeyRootService.js.map +1 -0
  73. package/dist/prover/statetransition/StateTransitionProvable.d.ts +2 -4
  74. package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -1
  75. package/dist/prover/statetransition/StateTransitionProvable.js +1 -0
  76. package/dist/prover/statetransition/StateTransitionProvable.js.map +1 -0
  77. package/dist/prover/statetransition/StateTransitionProver.d.ts +7 -10
  78. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
  79. package/dist/prover/statetransition/StateTransitionProver.js +27 -28
  80. package/dist/prover/statetransition/StateTransitionProver.js.map +1 -0
  81. package/dist/settlement/ContractModule.d.ts +4 -3
  82. package/dist/settlement/ContractModule.d.ts.map +1 -1
  83. package/dist/settlement/ContractModule.js +2 -1
  84. package/dist/settlement/ContractModule.js.map +1 -0
  85. package/dist/settlement/SettlementContractModule.d.ts +25 -12
  86. package/dist/settlement/SettlementContractModule.d.ts.map +1 -1
  87. package/dist/settlement/SettlementContractModule.js +29 -20
  88. package/dist/settlement/SettlementContractModule.js.map +1 -0
  89. package/dist/settlement/contracts/BridgeContract.d.ts +97 -0
  90. package/dist/settlement/contracts/BridgeContract.d.ts.map +1 -0
  91. package/dist/settlement/contracts/BridgeContract.js +164 -0
  92. package/dist/settlement/contracts/BridgeContract.js.map +1 -0
  93. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts +14 -0
  94. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts.map +1 -0
  95. package/dist/settlement/contracts/BridgeContractProtocolModule.js +30 -0
  96. package/dist/settlement/contracts/BridgeContractProtocolModule.js.map +1 -0
  97. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +10 -1
  98. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts.map +1 -1
  99. package/dist/settlement/contracts/DispatchContractProtocolModule.js +24 -2
  100. package/dist/settlement/contracts/DispatchContractProtocolModule.js.map +1 -0
  101. package/dist/settlement/contracts/DispatchSmartContract.d.ts +26 -4
  102. package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -1
  103. package/dist/settlement/contracts/DispatchSmartContract.js +139 -19
  104. package/dist/settlement/contracts/DispatchSmartContract.js.map +1 -0
  105. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts +10 -8
  106. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts.map +1 -1
  107. package/dist/settlement/contracts/SettlementContractProtocolModule.js +47 -9
  108. package/dist/settlement/contracts/SettlementContractProtocolModule.js.map +1 -0
  109. package/dist/settlement/contracts/SettlementSmartContract.d.ts +98 -17
  110. package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -1
  111. package/dist/settlement/contracts/SettlementSmartContract.js +147 -79
  112. package/dist/settlement/contracts/SettlementSmartContract.js.map +1 -0
  113. package/dist/settlement/contracts/TokenBridgeTree.d.ts +228 -0
  114. package/dist/settlement/contracts/TokenBridgeTree.d.ts.map +1 -0
  115. package/dist/settlement/contracts/TokenBridgeTree.js +60 -0
  116. package/dist/settlement/contracts/TokenBridgeTree.js.map +1 -0
  117. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts +10 -0
  118. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts.map +1 -0
  119. package/dist/settlement/contracts/authorizations/ContractAuthorization.js +2 -0
  120. package/dist/settlement/contracts/authorizations/ContractAuthorization.js.map +1 -0
  121. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts +85 -0
  122. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts.map +1 -0
  123. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js +11 -0
  124. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js.map +1 -0
  125. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts +79 -0
  126. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts.map +1 -0
  127. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js +11 -0
  128. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js.map +1 -0
  129. package/dist/settlement/messages/Deposit.d.ts +13 -0
  130. package/dist/settlement/messages/Deposit.d.ts.map +1 -1
  131. package/dist/settlement/messages/Deposit.js +3 -1
  132. package/dist/settlement/messages/Deposit.js.map +1 -0
  133. package/dist/settlement/messages/OutgoingMessageArgument.d.ts +8 -0
  134. package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -1
  135. package/dist/settlement/messages/OutgoingMessageArgument.js +1 -0
  136. package/dist/settlement/messages/OutgoingMessageArgument.js.map +1 -0
  137. package/dist/settlement/messages/Withdrawal.d.ts +13 -0
  138. package/dist/settlement/messages/Withdrawal.d.ts.map +1 -1
  139. package/dist/settlement/messages/Withdrawal.js +4 -1
  140. package/dist/settlement/messages/Withdrawal.js.map +1 -0
  141. package/dist/settlement/modularity/ProvableSettlementHook.d.ts +5 -3
  142. package/dist/settlement/modularity/ProvableSettlementHook.d.ts.map +1 -1
  143. package/dist/settlement/modularity/ProvableSettlementHook.js +1 -0
  144. package/dist/settlement/modularity/ProvableSettlementHook.js.map +1 -0
  145. package/dist/settlement/modularity/types.d.ts +8 -0
  146. package/dist/settlement/modularity/types.d.ts.map +1 -0
  147. package/dist/settlement/modularity/types.js +2 -0
  148. package/dist/settlement/modularity/types.js.map +1 -0
  149. package/dist/settlement/modules/NetworkStateSettlementModule.js +1 -0
  150. package/dist/settlement/modules/NetworkStateSettlementModule.js.map +1 -0
  151. package/dist/state/State.js +1 -0
  152. package/dist/state/State.js.map +1 -0
  153. package/dist/state/StateMap.js +1 -0
  154. package/dist/state/StateMap.js.map +1 -0
  155. package/dist/state/StateService.js +1 -0
  156. package/dist/state/StateService.js.map +1 -0
  157. package/dist/state/StateServiceProvider.js +1 -0
  158. package/dist/state/StateServiceProvider.js.map +1 -0
  159. package/dist/state/assert/assert.js +1 -0
  160. package/dist/state/assert/assert.js.map +1 -0
  161. package/dist/state/context/RuntimeMethodExecutionContext.js +1 -0
  162. package/dist/state/context/RuntimeMethodExecutionContext.js.map +1 -0
  163. package/dist/state/context/TransitionMethodExecutionContext.js +1 -0
  164. package/dist/state/context/TransitionMethodExecutionContext.js.map +1 -0
  165. package/dist/state/protocol/ProtocolState.js +1 -0
  166. package/dist/state/protocol/ProtocolState.js.map +1 -0
  167. package/dist/utils/MinaPrefixedProvableHashList.js +1 -0
  168. package/dist/utils/MinaPrefixedProvableHashList.js.map +1 -0
  169. package/dist/utils/PrefixedProvableHashList.js +1 -0
  170. package/dist/utils/PrefixedProvableHashList.js.map +1 -0
  171. package/dist/utils/ProvableHashList.js +1 -0
  172. package/dist/utils/ProvableHashList.js.map +1 -0
  173. package/dist/utils/ProvableReductionHashList.js +1 -0
  174. package/dist/utils/ProvableReductionHashList.js.map +1 -0
  175. package/dist/utils/StateTransitionReductionList.js +1 -0
  176. package/dist/utils/StateTransitionReductionList.js.map +1 -0
  177. package/dist/utils/utils.js +1 -0
  178. package/dist/utils/utils.js.map +1 -0
  179. package/jest.config.cjs +12 -1
  180. package/package.json +4 -4
  181. package/src/hooks/NoopSettlementHook.ts +2 -2
  182. package/src/index.ts +6 -2
  183. package/src/model/StateTransitionProvableBatch.ts +24 -4
  184. package/src/protocol/Protocol.ts +36 -7
  185. package/src/protocol/ProtocolModule.ts +1 -1
  186. package/src/prover/block/BlockProvable.ts +9 -9
  187. package/src/prover/block/BlockProver.ts +94 -58
  188. package/src/prover/statetransition/StateTransitionProvable.ts +5 -8
  189. package/src/prover/statetransition/StateTransitionProver.ts +46 -40
  190. package/src/settlement/ContractModule.ts +17 -10
  191. package/src/settlement/SettlementContractModule.ts +54 -41
  192. package/src/settlement/contracts/BridgeContract.ts +237 -0
  193. package/src/settlement/contracts/BridgeContractProtocolModule.ts +43 -0
  194. package/src/settlement/contracts/DispatchContractProtocolModule.ts +37 -3
  195. package/src/settlement/contracts/DispatchSmartContract.ts +213 -23
  196. package/src/settlement/contracts/SettlementContractProtocolModule.ts +61 -20
  197. package/src/settlement/contracts/SettlementSmartContract.ts +261 -107
  198. package/src/settlement/contracts/TokenBridgeTree.ts +73 -0
  199. package/src/settlement/contracts/authorizations/ContractAuthorization.ts +11 -0
  200. package/src/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.ts +16 -0
  201. package/src/settlement/contracts/authorizations/UpdateMessagesHashAuth.ts +16 -0
  202. package/src/settlement/messages/Deposit.ts +2 -1
  203. package/src/settlement/messages/Withdrawal.ts +3 -1
  204. package/src/settlement/modularity/ProvableSettlementHook.ts +6 -3
  205. package/src/settlement/modularity/types.ts +22 -0
  206. package/test/BlockProver.test.ts +2 -1
  207. package/test/TestingProtocol.ts +17 -12
  208. package/test/compiling/types.ts +28 -0
  209. package/test/modularity/types.ts +35 -0
  210. package/src/prover/statetransition/StateTransitionWitnessProvider.ts +0 -23
  211. package/src/prover/statetransition/StateTransitionWitnessProviderReference.ts +0 -17
@@ -0,0 +1,22 @@
1
+ import { TypedClass } from "@proto-kit/common";
2
+
3
+ import {
4
+ ContractModule,
5
+ SmartContractClassFromInterface,
6
+ } from "../ContractModule";
7
+ import type { SettlementModulesRecord } from "../SettlementContractModule";
8
+
9
+ export type InferContractType<
10
+ Module extends TypedClass<ContractModule<any, any>>,
11
+ > =
12
+ Module extends TypedClass<infer ConcreteModule>
13
+ ? ConcreteModule extends ContractModule<infer Contract, any>
14
+ ? Contract
15
+ : never
16
+ : never;
17
+
18
+ export type GetContracts<SettlementModules extends SettlementModulesRecord> = {
19
+ [Key in keyof SettlementModules]: SmartContractClassFromInterface<
20
+ InferContractType<SettlementModules[Key]>
21
+ >;
22
+ };
@@ -34,7 +34,7 @@ class RuntimeZkProgrammable extends ZkProgrammable<
34
34
  undefined,
35
35
  MethodPublicOutput
36
36
  > {
37
- get appChain(): AreProofsEnabled | undefined {
37
+ get areProofsEnabled(): AreProofsEnabled | undefined {
38
38
  return new MockAppChain();
39
39
  }
40
40
 
@@ -47,6 +47,7 @@ class RuntimeZkProgrammable extends ZkProgrammable<
47
47
 
48
48
  return [
49
49
  {
50
+ name: program.name,
50
51
  compile: program.compile.bind(program),
51
52
  verify: program.verify.bind(program),
52
53
  analyzeMethods: program.analyzeMethods.bind(program),
@@ -1,22 +1,17 @@
1
- import { WithZkProgrammable, ZkProgrammable } from "@proto-kit/common";
2
1
  import { container } from "tsyringe";
2
+ import { Runtime } from "@proto-kit/module";
3
+ import { Balance } from "@proto-kit/sequencer/test/integration/mocks/Balance";
4
+ import { NoopRuntime } from "@proto-kit/sequencer/test/integration/mocks/NoopRuntime";
3
5
 
4
6
  import {
5
7
  AccountStateHook,
6
8
  BlockHeightHook,
7
9
  BlockProver,
8
10
  LastStateRootBlockHook,
9
- MethodPublicOutput,
10
- NoOpStateTransitionWitnessProvider,
11
11
  Protocol,
12
12
  StateTransitionProver,
13
13
  } from "../src";
14
14
 
15
- class RuntimeMock implements WithZkProgrammable<undefined, MethodPublicOutput> {
16
- zkProgrammable: ZkProgrammable<undefined, MethodPublicOutput> =
17
- undefined as unknown as ZkProgrammable<undefined, MethodPublicOutput>;
18
- }
19
-
20
15
  export function createAndInitTestingProtocol() {
21
16
  const ProtocolClass = Protocol.from({
22
17
  modules: {
@@ -36,12 +31,22 @@ export function createAndInitTestingProtocol() {
36
31
  StateTransitionProver: {},
37
32
  LastStateRoot: {},
38
33
  });
39
- protocol.create(() => container.createChildContainer());
40
34
 
41
- protocol.registerValue({
42
- StateTransitionWitnessProvider: new NoOpStateTransitionWitnessProvider(),
43
- Runtime: new RuntimeMock(),
35
+ const appChain = container.createChildContainer();
36
+
37
+ appChain.register("Runtime", {
38
+ useClass: Runtime.from({
39
+ modules: {
40
+ Balance,
41
+ NoopRuntime,
42
+ },
43
+ config: {
44
+ Balance: {},
45
+ NoopRuntime: {},
46
+ },
47
+ }),
44
48
  });
49
+ protocol.create(() => appChain.createChildContainer());
45
50
 
46
51
  return protocol;
47
52
  }
@@ -0,0 +1,28 @@
1
+ import { Field, VerificationKey } from "o1js";
2
+
3
+ import { CompileRegistry, InferDependencyArtifacts } from "../../src";
4
+ /* eslint-disable @typescript-eslint/no-unused-vars */
5
+
6
+ type TestModule = {
7
+ compile(
8
+ registry: CompileRegistry
9
+ ): Promise<{ bar: { verificationKey: VerificationKey } }>;
10
+ };
11
+
12
+ type Inferred = InferDependencyArtifacts<{ foo: TestModule }>;
13
+ const typeAssignmentTest: Inferred = {
14
+ foo: {
15
+ bar: {
16
+ verificationKey: {
17
+ data: "",
18
+ hash: Field(1),
19
+ },
20
+ },
21
+ },
22
+ };
23
+
24
+ const typePropertyTest: Inferred["foo"]["bar"]["verificationKey"] extends VerificationKey
25
+ ? true
26
+ : false = true;
27
+
28
+ /* eslint-enable @typescript-eslint/no-unused-vars */
@@ -0,0 +1,35 @@
1
+ import { SmartContract } from "o1js";
2
+ import { TypedClass } from "@proto-kit/common";
3
+
4
+ import { GetContracts } from "../../src/settlement/modularity/types";
5
+ import {
6
+ BridgeContractType,
7
+ MandatorySettlementModulesRecord,
8
+ SettlementContractType,
9
+ } from "../../src";
10
+ /* eslint-disable @typescript-eslint/no-unused-vars */
11
+
12
+ // Goal of this "test" is that it compiles. By compiling this file checks that
13
+ // certain types are inferred correctly
14
+
15
+ type Inferred = GetContracts<MandatorySettlementModulesRecord>;
16
+
17
+ // Get inferred Bridge Type
18
+ type Bridge = Inferred["BridgeContract"];
19
+ // Get inferred Settlement Contract Type
20
+ type Settlement = Inferred["SettlementContract"];
21
+
22
+ // Check that the Bridge type is of the correct type
23
+ const bridgeSuccessful: Bridge extends TypedClass<
24
+ SmartContract & BridgeContractType
25
+ >
26
+ ? true
27
+ : false = true;
28
+
29
+ const settlementSuccessful: Settlement extends TypedClass<
30
+ SmartContract & SettlementContractType
31
+ >
32
+ ? true
33
+ : false = true;
34
+
35
+ /* eslint-enable @typescript-eslint/no-unused-vars */
@@ -1,23 +0,0 @@
1
- import type { Field } from "o1js";
2
- import { injectable } from "tsyringe";
3
- import { RollupMerkleTreeWitness } from "@proto-kit/common";
4
-
5
- /**
6
- * Interface for providing merkle witnesses to the state-transition prover
7
- */
8
- export interface StateTransitionWitnessProvider {
9
- /**
10
- * Provides the merkle witness corresponding to the given key
11
- * @param key Merkle-tree key
12
- */
13
- getWitness: (key: Field) => RollupMerkleTreeWitness;
14
- }
15
-
16
- @injectable()
17
- export class NoOpStateTransitionWitnessProvider
18
- implements StateTransitionWitnessProvider
19
- {
20
- public getWitness(): RollupMerkleTreeWitness {
21
- return new RollupMerkleTreeWitness({ path: [], isLeft: [] });
22
- }
23
- }
@@ -1,17 +0,0 @@
1
- import { injectable, Lifecycle, scoped } from "tsyringe";
2
-
3
- import { StateTransitionWitnessProvider } from "./StateTransitionWitnessProvider";
4
-
5
- @injectable()
6
- @scoped(Lifecycle.ContainerScoped)
7
- export class StateTransitionWitnessProviderReference {
8
- private witnessProvider?: StateTransitionWitnessProvider;
9
-
10
- public setWitnessProvider(provider: StateTransitionWitnessProvider) {
11
- this.witnessProvider = provider;
12
- }
13
-
14
- public getWitnessProvider(): StateTransitionWitnessProvider | undefined {
15
- return this.witnessProvider;
16
- }
17
- }