@proto-kit/protocol 0.1.1-develop.340 → 0.1.1-develop.455

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 (110) hide show
  1. package/dist/blockmodules/AccountStateModule.d.ts +1 -1
  2. package/dist/blockmodules/AccountStateModule.d.ts.map +1 -1
  3. package/dist/blockmodules/BlockHeightHook.d.ts +7 -0
  4. package/dist/blockmodules/BlockHeightHook.d.ts.map +1 -0
  5. package/dist/blockmodules/BlockHeightHook.js +16 -0
  6. package/dist/blockmodules/NoopBlockHook.d.ts +7 -0
  7. package/dist/blockmodules/NoopBlockHook.d.ts.map +1 -0
  8. package/dist/blockmodules/NoopBlockHook.js +9 -0
  9. package/dist/blockmodules/NoopTransactionHook.d.ts +1 -1
  10. package/dist/blockmodules/NoopTransactionHook.d.ts.map +1 -1
  11. package/dist/blockmodules/NoopTransactionHook.js +1 -2
  12. package/dist/hooks/AccountStateHook.d.ts +38 -0
  13. package/dist/hooks/AccountStateHook.d.ts.map +1 -0
  14. package/dist/hooks/AccountStateHook.js +36 -0
  15. package/dist/hooks/BlockHeightHook.d.ts +7 -0
  16. package/dist/hooks/BlockHeightHook.d.ts.map +1 -0
  17. package/dist/hooks/BlockHeightHook.js +14 -0
  18. package/dist/hooks/NoopBlockHook.d.ts +7 -0
  19. package/dist/hooks/NoopBlockHook.d.ts.map +1 -0
  20. package/dist/hooks/NoopBlockHook.js +9 -0
  21. package/dist/hooks/NoopTransactionHook.d.ts +6 -0
  22. package/dist/hooks/NoopTransactionHook.d.ts.map +1 -0
  23. package/dist/hooks/NoopTransactionHook.js +4 -0
  24. package/dist/hooks/TransactionFeeHook.d.ts +16 -0
  25. package/dist/hooks/TransactionFeeHook.d.ts.map +1 -0
  26. package/dist/hooks/TransactionFeeHook.js +39 -0
  27. package/dist/index.d.ts +4 -4
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +4 -4
  30. package/dist/model/Option.d.ts +29 -22
  31. package/dist/model/Option.d.ts.map +1 -1
  32. package/dist/model/Option.js +51 -45
  33. package/dist/model/StateTransition.d.ts +4 -2
  34. package/dist/model/StateTransition.d.ts.map +1 -1
  35. package/dist/model/StateTransition.js +2 -2
  36. package/dist/model/network/NetworkState.d.ts +1 -40
  37. package/dist/model/network/NetworkState.d.ts.map +1 -1
  38. package/dist/model/network/NetworkState.js +9 -10
  39. package/dist/protocol/Protocol.d.ts +4 -18
  40. package/dist/protocol/Protocol.d.ts.map +1 -1
  41. package/dist/protocol/Protocol.js +20 -9
  42. package/dist/protocol/ProtocolModule.d.ts +2 -2
  43. package/dist/protocol/ProtocolModule.d.ts.map +1 -1
  44. package/dist/protocol/ProtocolModule.js +1 -1
  45. package/dist/protocol/ProvableBlockHook.d.ts +16 -0
  46. package/dist/protocol/ProvableBlockHook.d.ts.map +1 -0
  47. package/dist/protocol/ProvableBlockHook.js +4 -0
  48. package/dist/protocol/ProvableTransactionHook.d.ts +2 -1
  49. package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -1
  50. package/dist/protocol/TransitioningProtocolModule.d.ts +4 -0
  51. package/dist/protocol/TransitioningProtocolModule.d.ts.map +1 -1
  52. package/dist/protocol/TransitioningProtocolModule.js +4 -0
  53. package/dist/prover/block/BlockProvable.d.ts +21 -6
  54. package/dist/prover/block/BlockProvable.d.ts.map +1 -1
  55. package/dist/prover/block/BlockProvable.js +3 -1
  56. package/dist/prover/block/BlockProver.d.ts +9 -4
  57. package/dist/prover/block/BlockProver.d.ts.map +1 -1
  58. package/dist/prover/block/BlockProver.js +66 -16
  59. package/dist/prover/block/BlockTransactionPosition.d.ts +36 -0
  60. package/dist/prover/block/BlockTransactionPosition.d.ts.map +1 -0
  61. package/dist/prover/block/BlockTransactionPosition.js +25 -0
  62. package/dist/prover/statetransition/StateTransitionProver.d.ts +1 -1
  63. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
  64. package/dist/prover/statetransition/StateTransitionProver.js +4 -5
  65. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts +3 -3
  66. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts.map +1 -1
  67. package/dist/prover/statetransition/StateTransitionWitnessProvider.js +2 -2
  68. package/dist/state/State.d.ts +8 -1
  69. package/dist/state/State.d.ts.map +1 -1
  70. package/dist/state/State.js +11 -4
  71. package/dist/state/StateServiceProvider.d.ts +0 -2
  72. package/dist/state/StateServiceProvider.d.ts.map +1 -1
  73. package/dist/state/StateServiceProvider.js +5 -17
  74. package/package.json +3 -2
  75. package/src/blockmodules/AccountStateModule.ts +2 -2
  76. package/src/blockmodules/BlockHeightHook.ts +22 -0
  77. package/src/blockmodules/NoopBlockHook.ts +16 -0
  78. package/src/blockmodules/NoopTransactionHook.ts +3 -4
  79. package/src/index.ts +4 -4
  80. package/src/model/Option.ts +71 -56
  81. package/src/model/StateTransition.ts +2 -2
  82. package/src/model/network/NetworkState.ts +9 -9
  83. package/src/protocol/Protocol.ts +33 -32
  84. package/src/protocol/ProtocolModule.ts +3 -3
  85. package/src/protocol/ProvableBlockHook.ts +22 -0
  86. package/src/protocol/ProvableTransactionHook.ts +4 -1
  87. package/src/protocol/TransitioningProtocolModule.ts +4 -0
  88. package/src/prover/block/BlockProvable.ts +4 -2
  89. package/src/prover/block/BlockProver.ts +134 -21
  90. package/src/prover/block/BlockTransactionPosition.ts +34 -0
  91. package/src/prover/statetransition/StateTransitionProver.ts +6 -13
  92. package/src/prover/statetransition/StateTransitionWitnessProvider.ts +4 -5
  93. package/src/state/State.ts +11 -4
  94. package/src/state/StateServiceProvider.ts +2 -10
  95. package/test/Option.test.ts +64 -0
  96. package/test/StateTransition.test.ts +1 -1
  97. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts +0 -11
  98. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts.map +0 -1
  99. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.js +0 -12
  100. package/dist/utils/merkletree/MerkleTreeStore.d.ts +0 -11
  101. package/dist/utils/merkletree/MerkleTreeStore.d.ts.map +0 -1
  102. package/dist/utils/merkletree/MerkleTreeStore.js +0 -1
  103. package/dist/utils/merkletree/RollupMerkleTree.d.ts +0 -132
  104. package/dist/utils/merkletree/RollupMerkleTree.d.ts.map +0 -1
  105. package/dist/utils/merkletree/RollupMerkleTree.js +0 -251
  106. package/src/utils/merkletree/InMemoryMerkleTreeStorage.ts +0 -17
  107. package/src/utils/merkletree/MerkleTreeStore.ts +0 -15
  108. package/src/utils/merkletree/RollupMerkleTree.ts +0 -275
  109. package/src/utils/merkletree/VirtualMerkleTreeStore.ts +0 -21
  110. package/test/utils/MerkleTree.test.ts +0 -82
@@ -30,7 +30,7 @@ declare const AccountState_base: (new (value: {
30
30
  };
31
31
  export declare class AccountState extends AccountState_base {
32
32
  }
33
- export declare class AccountStateModule extends ProvableTransactionHook<Record<string, never>> {
33
+ export declare class AccountStateModule extends ProvableTransactionHook {
34
34
  accountState: StateMap<PublicKey, AccountState>;
35
35
  onTransaction({ transaction }: BlockProverExecutionData): void;
36
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AccountStateModule.d.ts","sourceRoot":"","sources":["../../src/blockmodules/AccountStateModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAU,MAAM,EAAE,MAAM,MAAM,CAAC;AAE3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AAG9E,qBAAa,YAAa,SAAQ,iBAEhC;CAAG;AAEL,qBAAa,kBAAmB,SAAQ,uBAAuB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5D,YAAY,oCAGlC;IAEK,aAAa,CAAC,EAAE,WAAW,EAAE,EAAE,wBAAwB,GAAG,IAAI;CActE"}
1
+ {"version":3,"file":"AccountStateModule.d.ts","sourceRoot":"","sources":["../../src/blockmodules/AccountStateModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAU,MAAM,EAAE,MAAM,MAAM,CAAC;AAEjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AAG9E,qBAAa,YAAa,SAAQ,iBAEhC;CAAG;AAEL,qBAAa,kBAAmB,SAAQ,uBAAuB;IACrC,YAAY,oCAGlC;IAEK,aAAa,CAAC,EAAE,WAAW,EAAE,EAAE,wBAAwB,GAAG,IAAI;CActE"}
@@ -0,0 +1,7 @@
1
+ import { NetworkState } from "../model/network/NetworkState";
2
+ import { AfterBlockParameters, BeforeBlockParameters, ProvableBlockHook } from "../protocol/ProvableBlockHook";
3
+ export declare class BlockHeightHook extends ProvableBlockHook<Record<string, never>> {
4
+ afterBlock({ networkState }: AfterBlockParameters): NetworkState;
5
+ beforeBlock(blockData: BeforeBlockParameters): NetworkState;
6
+ }
7
+ //# sourceMappingURL=BlockHeightHook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockHeightHook.d.ts","sourceRoot":"","sources":["../../src/blockmodules/BlockHeightHook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AAEvC,qBAAa,eAAgB,SAAQ,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpE,UAAU,CAAC,EAAE,YAAY,EAAE,EAAE,oBAAoB,GAAG,YAAY;IAShE,WAAW,CAAC,SAAS,EAAE,qBAAqB,GAAG,YAAY;CAGnE"}
@@ -0,0 +1,16 @@
1
+ import { Provable } from "o1js";
2
+ import { NetworkState } from "../model/network/NetworkState";
3
+ import { ProvableBlockHook, } from "../protocol/ProvableBlockHook";
4
+ export class BlockHeightHook extends ProvableBlockHook {
5
+ afterBlock({ networkState }) {
6
+ Provable.log("afterBlock", networkState);
7
+ return new NetworkState({
8
+ block: {
9
+ height: networkState.block.height.add(1),
10
+ },
11
+ });
12
+ }
13
+ beforeBlock(blockData) {
14
+ return blockData.networkState;
15
+ }
16
+ }
@@ -0,0 +1,7 @@
1
+ import { AfterBlockParameters, BeforeBlockParameters, ProvableBlockHook } from "../protocol/ProvableBlockHook";
2
+ import { NetworkState } from "../model/network/NetworkState";
3
+ export declare class NoopBlockHook extends ProvableBlockHook<Record<string, never>> {
4
+ afterBlock(blockData: AfterBlockParameters): NetworkState;
5
+ beforeBlock(blockData: BeforeBlockParameters): NetworkState;
6
+ }
7
+ //# sourceMappingURL=NoopBlockHook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoopBlockHook.d.ts","sourceRoot":"","sources":["../../src/blockmodules/NoopBlockHook.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,qBAAa,aAAc,SAAQ,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClE,UAAU,CAAC,SAAS,EAAE,oBAAoB,GAAG,YAAY;IAIzD,WAAW,CAAC,SAAS,EAAE,qBAAqB,GAAG,YAAY;CAGnE"}
@@ -0,0 +1,9 @@
1
+ import { ProvableBlockHook } from "../protocol/ProvableBlockHook";
2
+ export class NoopBlockHook extends ProvableBlockHook {
3
+ afterBlock(blockData) {
4
+ return blockData.networkState;
5
+ }
6
+ beforeBlock(blockData) {
7
+ return blockData.networkState;
8
+ }
9
+ }
@@ -1,6 +1,6 @@
1
1
  import { ProvableTransactionHook } from "../protocol/ProvableTransactionHook";
2
2
  import { BlockProverExecutionData } from "../prover/block/BlockProvable";
3
- export declare class NoopTransactionHook extends ProvableTransactionHook<object> {
3
+ export declare class NoopTransactionHook extends ProvableTransactionHook {
4
4
  onTransaction(executionData: BlockProverExecutionData): void;
5
5
  }
6
6
  //# sourceMappingURL=NoopTransactionHook.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NoopTransactionHook.d.ts","sourceRoot":"","sources":["../../src/blockmodules/NoopTransactionHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,qBAAa,mBAAoB,SAAQ,uBAAuB,CAAC,MAAM,CAAC;IAC/D,aAAa,CAAC,aAAa,EAAE,wBAAwB,GAAG,IAAI;CAEpE"}
1
+ {"version":3,"file":"NoopTransactionHook.d.ts","sourceRoot":"","sources":["../../src/blockmodules/NoopTransactionHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,qBAAa,mBAAoB,SAAQ,uBAAuB;IACvD,aAAa,CAAC,aAAa,EAAE,wBAAwB,GAAG,IAAI;CACpE"}
@@ -1,5 +1,4 @@
1
1
  import { ProvableTransactionHook } from "../protocol/ProvableTransactionHook";
2
2
  export class NoopTransactionHook extends ProvableTransactionHook {
3
- onTransaction(executionData) {
4
- }
3
+ onTransaction(executionData) { }
5
4
  }
@@ -0,0 +1,38 @@
1
+ import { PublicKey, UInt64 } from "o1js";
2
+ import { BlockProverExecutionData } from "../prover/block/BlockProvable";
3
+ import { StateMap } from "../state/StateMap";
4
+ import { ProvableTransactionHook } from "../protocol/ProvableTransactionHook";
5
+ declare const AccountState_base: (new (value: {
6
+ nonce: UInt64;
7
+ }) => {
8
+ nonce: UInt64;
9
+ }) & {
10
+ _isStruct: true;
11
+ } & import("o1js/dist/node/snarky").ProvablePure<{
12
+ nonce: UInt64;
13
+ }> & {
14
+ toInput: (x: {
15
+ nonce: UInt64;
16
+ }) => {
17
+ fields?: import("o1js/dist/node/lib/field").Field[] | undefined;
18
+ packed?: [import("o1js/dist/node/lib/field").Field, number][] | undefined;
19
+ };
20
+ toJSON: (x: {
21
+ nonce: UInt64;
22
+ }) => {
23
+ nonce: string;
24
+ };
25
+ fromJSON: (x: {
26
+ nonce: string;
27
+ }) => {
28
+ nonce: UInt64;
29
+ };
30
+ };
31
+ export declare class AccountState extends AccountState_base {
32
+ }
33
+ export declare class AccountStateHook extends ProvableTransactionHook {
34
+ accountState: StateMap<PublicKey, AccountState>;
35
+ onTransaction({ transaction }: BlockProverExecutionData): void;
36
+ }
37
+ export {};
38
+ //# sourceMappingURL=AccountStateHook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountStateHook.d.ts","sourceRoot":"","sources":["../../src/hooks/AccountStateHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAU,MAAM,EAAE,MAAM,MAAM,CAAC;AAEjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AAG9E,qBAAa,YAAa,SAAQ,iBAEhC;CAAG;AAEL,qBAAa,gBAAiB,SAAQ,uBAAuB;IACnC,YAAY,oCAGlC;IAEK,aAAa,CAAC,EAAE,WAAW,EAAE,EAAE,wBAAwB,GAAG,IAAI;CActE"}
@@ -0,0 +1,36 @@
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
+ import { PublicKey, Struct, UInt64 } from "o1js";
11
+ import { StateMap } from "../state/StateMap";
12
+ import { protocolState } from "../state/protocol/ProtocolState";
13
+ import { ProvableTransactionHook } from "../protocol/ProvableTransactionHook";
14
+ import { assert } from "../state/assert/assert";
15
+ export class AccountState extends Struct({
16
+ nonce: UInt64,
17
+ }) {
18
+ }
19
+ export class AccountStateHook extends ProvableTransactionHook {
20
+ constructor() {
21
+ super(...arguments);
22
+ this.accountState = StateMap.from(PublicKey, AccountState);
23
+ }
24
+ onTransaction({ transaction }) {
25
+ const accountState = this.accountState
26
+ .get(transaction.sender)
27
+ .orElse(new AccountState({ nonce: UInt64.zero }));
28
+ const currentNonce = accountState.nonce;
29
+ assert(currentNonce.equals(transaction.nonce), "Nonce not matching");
30
+ this.accountState.set(transaction.sender, new AccountState({ nonce: currentNonce.add(1) }));
31
+ }
32
+ }
33
+ __decorate([
34
+ protocolState(),
35
+ __metadata("design:type", Object)
36
+ ], AccountStateHook.prototype, "accountState", void 0);
@@ -0,0 +1,7 @@
1
+ import { NetworkState } from "../model/network/NetworkState";
2
+ import { AfterBlockParameters, BeforeBlockParameters, ProvableBlockHook } from "../protocol/ProvableBlockHook";
3
+ export declare class BlockHeightHook extends ProvableBlockHook<Record<string, never>> {
4
+ afterBlock({ networkState }: AfterBlockParameters): NetworkState;
5
+ beforeBlock(blockData: BeforeBlockParameters): NetworkState;
6
+ }
7
+ //# sourceMappingURL=BlockHeightHook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockHeightHook.d.ts","sourceRoot":"","sources":["../../src/hooks/BlockHeightHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AAEvC,qBAAa,eAAgB,SAAQ,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpE,UAAU,CAAC,EAAE,YAAY,EAAE,EAAE,oBAAoB,GAAG,YAAY;IAQhE,WAAW,CAAC,SAAS,EAAE,qBAAqB,GAAG,YAAY;CAGnE"}
@@ -0,0 +1,14 @@
1
+ import { NetworkState } from "../model/network/NetworkState";
2
+ import { ProvableBlockHook, } from "../protocol/ProvableBlockHook";
3
+ export class BlockHeightHook extends ProvableBlockHook {
4
+ afterBlock({ networkState }) {
5
+ return new NetworkState({
6
+ block: {
7
+ height: networkState.block.height.add(1),
8
+ },
9
+ });
10
+ }
11
+ beforeBlock(blockData) {
12
+ return blockData.networkState;
13
+ }
14
+ }
@@ -0,0 +1,7 @@
1
+ import { AfterBlockParameters, BeforeBlockParameters, ProvableBlockHook } from "../protocol/ProvableBlockHook";
2
+ import { NetworkState } from "../model/network/NetworkState";
3
+ export declare class NoopBlockHook extends ProvableBlockHook<Record<string, never>> {
4
+ afterBlock(blockData: AfterBlockParameters): NetworkState;
5
+ beforeBlock(blockData: BeforeBlockParameters): NetworkState;
6
+ }
7
+ //# sourceMappingURL=NoopBlockHook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoopBlockHook.d.ts","sourceRoot":"","sources":["../../src/hooks/NoopBlockHook.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,qBAAa,aAAc,SAAQ,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClE,UAAU,CAAC,SAAS,EAAE,oBAAoB,GAAG,YAAY;IAIzD,WAAW,CAAC,SAAS,EAAE,qBAAqB,GAAG,YAAY;CAGnE"}
@@ -0,0 +1,9 @@
1
+ import { ProvableBlockHook } from "../protocol/ProvableBlockHook";
2
+ export class NoopBlockHook extends ProvableBlockHook {
3
+ afterBlock(blockData) {
4
+ return blockData.networkState;
5
+ }
6
+ beforeBlock(blockData) {
7
+ return blockData.networkState;
8
+ }
9
+ }
@@ -0,0 +1,6 @@
1
+ import { ProvableTransactionHook } from "../protocol/ProvableTransactionHook";
2
+ import { BlockProverExecutionData } from "../prover/block/BlockProvable";
3
+ export declare class NoopTransactionHook extends ProvableTransactionHook {
4
+ onTransaction(executionData: BlockProverExecutionData): void;
5
+ }
6
+ //# sourceMappingURL=NoopTransactionHook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoopTransactionHook.d.ts","sourceRoot":"","sources":["../../src/hooks/NoopTransactionHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,qBAAa,mBAAoB,SAAQ,uBAAuB;IACvD,aAAa,CAAC,aAAa,EAAE,wBAAwB,GAAG,IAAI;CACpE"}
@@ -0,0 +1,4 @@
1
+ import { ProvableTransactionHook } from "../protocol/ProvableTransactionHook";
2
+ export class NoopTransactionHook extends ProvableTransactionHook {
3
+ onTransaction(executionData) { }
4
+ }
@@ -0,0 +1,16 @@
1
+ import { Runtime, RuntimeModulesRecord } from "@proto-kit/module";
2
+ import { ProvableTransactionHook } from "../protocol/ProvableTransactionHook";
3
+ import { BlockProverExecutionData } from "../prover/block/BlockProvable";
4
+ export declare const treeFeeHeight = 10;
5
+ declare const FeeTree_base: import("@proto-kit/common").AbstractMerkleTreeClass;
6
+ export declare class FeeTree extends FeeTree_base {
7
+ }
8
+ export declare class TransactionFeeHook extends ProvableTransactionHook {
9
+ runtime: Runtime<RuntimeModulesRecord>;
10
+ constructor(runtime: Runtime<RuntimeModulesRecord>);
11
+ feeTree: FeeTree;
12
+ createFeeTree(): FeeTree;
13
+ onTransaction(executionData: BlockProverExecutionData): void;
14
+ }
15
+ export {};
16
+ //# sourceMappingURL=TransactionFeeHook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionFeeHook.d.ts","sourceRoot":"","sources":["../../src/hooks/TransactionFeeHook.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,OAAO,EACP,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,eAAO,MAAM,aAAa,KAAK,CAAC;;AAChC,qBAAa,OAAQ,SAAQ,YAA+B;CAAG;AAE/D,qBAAa,kBAAmB,SAAQ,uBAAuB;IAEjC,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC;gBAAtC,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAK3D,OAAO,EAAE,OAAO,CAAwB;IAExC,aAAa;IASb,aAAa,CAAC,aAAa,EAAE,wBAAwB,GAAG,IAAI;CACpE"}
@@ -0,0 +1,39 @@
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
+ var _a;
14
+ /* eslint-disable import/no-unused-modules */
15
+ import { createMerkleTree } from "@proto-kit/common";
16
+ import { Runtime, } from "@proto-kit/module";
17
+ import { inject } from "tsyringe";
18
+ import { ProvableTransactionHook } from "../protocol/ProvableTransactionHook";
19
+ export const treeFeeHeight = 10;
20
+ export class FeeTree extends createMerkleTree(treeFeeHeight) {
21
+ }
22
+ let TransactionFeeHook = class TransactionFeeHook extends ProvableTransactionHook {
23
+ constructor(runtime) {
24
+ this.runtime = runtime;
25
+ this.feeTree = this.createFeeTree();
26
+ ;
27
+ }
28
+ createFeeTree() {
29
+ const analyzedMethods = this.runtime.zkProgrammable.zkProgram.analyzeMethods();
30
+ console.log("analyzedMethods", analyzedMethods);
31
+ return new FeeTree();
32
+ }
33
+ onTransaction(executionData) { }
34
+ };
35
+ TransactionFeeHook = __decorate([
36
+ __param(0, inject("Runtime")),
37
+ __metadata("design:paramtypes", [typeof (_a = typeof Runtime !== "undefined" && Runtime) === "function" ? _a : Object])
38
+ ], TransactionFeeHook);
39
+ export { TransactionFeeHook };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./blockmodules/AccountStateModule";
2
+ export * from "./blockmodules/BlockHeightHook";
2
3
  export * from "./utils/ProvableHashList";
3
4
  export * from "./model/StateTransition";
4
5
  export * from "./model/StateTransitionProvableBatch";
@@ -11,18 +12,17 @@ export * from "./utils/PrefixedProvableHashList.js";
11
12
  export * from "./utils/utils";
12
13
  export * from "./prover/block/BlockProver";
13
14
  export * from "./prover/block/BlockProvable";
15
+ export * from "./prover/block/BlockTransactionPosition";
14
16
  export * from "./prover/statetransition/StateTransitionProver";
15
17
  export * from "./prover/statetransition/StateTransitionProvable";
16
18
  export * from "./prover/statetransition/StateTransitionWitnessProvider";
17
- export * from "./utils/merkletree/MerkleTreeStore";
18
- export * from "./utils/merkletree/InMemoryMerkleTreeStorage";
19
- export * from "./utils/merkletree/RollupMerkleTree";
20
19
  export * from "./model/MethodPublicOutput";
21
20
  export * from "./prover/statetransition/StateTransitionWitnessProviderReference";
22
21
  export * from "./protocol/Protocol";
23
22
  export * from "./protocol/ProtocolModule";
24
- export * from "./protocol/TransitioningProtocolModule";
23
+ export * from "./protocol/ProtocolEnvironment";
25
24
  export * from "./protocol/ProvableTransactionHook";
25
+ export * from "./protocol/ProvableBlockHook";
26
26
  export * from "./state/context/ProtocolMethodExecutionContext";
27
27
  export * from "./state/context/TransitionMethodExecutionContext";
28
28
  export * from "./state/context/RuntimeMethodExecutionContext";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sCAAsC,CAAC;AACrD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,qCAAqC,CAAC;AACpD,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gDAAgD,CAAC;AAC/D,cAAc,kDAAkD,CAAC;AACjE,cAAc,yDAAyD,CAAC;AACxE,cAAc,oCAAoC,CAAC;AACnD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,qCAAqC,CAAC;AACpD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kEAAkE,CAAC;AACjF,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,kDAAkD,CAAC;AACjE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sCAAsC,CAAC;AACrD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,qCAAqC,CAAC;AACpD,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AACxD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,kDAAkD,CAAC;AACjE,cAAc,yDAAyD,CAAC;AACxE,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kEAAkE,CAAC;AACjF,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gDAAgD,CAAC;AAC/D,cAAc,kDAAkD,CAAC;AACjE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./blockmodules/AccountStateModule";
2
+ export * from "./blockmodules/BlockHeightHook";
2
3
  export * from "./utils/ProvableHashList";
3
4
  export * from "./model/StateTransition";
4
5
  export * from "./model/StateTransitionProvableBatch";
@@ -11,18 +12,17 @@ export * from "./utils/PrefixedProvableHashList.js";
11
12
  export * from "./utils/utils";
12
13
  export * from "./prover/block/BlockProver";
13
14
  export * from "./prover/block/BlockProvable";
15
+ export * from "./prover/block/BlockTransactionPosition";
14
16
  export * from "./prover/statetransition/StateTransitionProver";
15
17
  export * from "./prover/statetransition/StateTransitionProvable";
16
18
  export * from "./prover/statetransition/StateTransitionWitnessProvider";
17
- export * from "./utils/merkletree/MerkleTreeStore";
18
- export * from "./utils/merkletree/InMemoryMerkleTreeStorage";
19
- export * from "./utils/merkletree/RollupMerkleTree";
20
19
  export * from "./model/MethodPublicOutput";
21
20
  export * from "./prover/statetransition/StateTransitionWitnessProviderReference";
22
21
  export * from "./protocol/Protocol";
23
22
  export * from "./protocol/ProtocolModule";
24
- export * from "./protocol/TransitioningProtocolModule";
23
+ export * from "./protocol/ProtocolEnvironment";
25
24
  export * from "./protocol/ProvableTransactionHook";
25
+ export * from "./protocol/ProvableBlockHook";
26
26
  export * from "./state/context/ProtocolMethodExecutionContext";
27
27
  export * from "./state/context/TransitionMethodExecutionContext";
28
28
  export * from "./state/context/RuntimeMethodExecutionContext";
@@ -36,11 +36,36 @@ declare const ProvableOption_base: (new (value: {
36
36
  export declare class ProvableOption extends ProvableOption_base {
37
37
  toSome(): this;
38
38
  }
39
+ export declare abstract class OptionBase {
40
+ isSome: Bool;
41
+ isForcedSome: Bool;
42
+ protected constructor(isSome: Bool, isForcedSome: Bool);
43
+ protected abstract encodeValueToFields(): Field[];
44
+ protected abstract clone(): OptionBase;
45
+ /**
46
+ * @returns Tree representation of the current value
47
+ */
48
+ get treeValue(): import("o1js/dist/node/lib/field").Field;
49
+ forceSome(): void;
50
+ /**
51
+ * Returns the `to`-value as decoded as a list of fields
52
+ * Not in circuit
53
+ */
54
+ toFields(): Field[];
55
+ /**
56
+ * @returns Provable representation of the current option.
57
+ */
58
+ toProvable(): ProvableOption;
59
+ toJSON(): {
60
+ isSome: boolean;
61
+ isForcedSome: boolean;
62
+ value: string[];
63
+ };
64
+ }
39
65
  /**
40
66
  * Option facilitating in-circuit values that may or may not exist.
41
67
  */
42
- export declare class Option<Value> {
43
- isSome: Bool;
68
+ export declare class Option<Value> extends OptionBase {
44
69
  value: Value;
45
70
  valueType: FlexibleProvablePure<Value>;
46
71
  /**
@@ -64,32 +89,14 @@ export declare class Option<Value> {
64
89
  * @returns Empty / none option
65
90
  */
66
91
  static none(): Option<import("o1js/dist/node/lib/field").Field>;
67
- isForcedSome: import("o1js/dist/node/lib/bool").Bool;
68
- constructor(isSome: Bool, value: Value, valueType: FlexibleProvablePure<Value>);
92
+ constructor(isSome: Bool, value: Value, valueType: FlexibleProvablePure<Value>, isForcedSome?: import("o1js/dist/node/lib/bool").Bool);
93
+ encodeValueToFields(): Field[];
69
94
  clone(): Option<Value>;
70
- forceSome(): void;
71
- /**
72
- * @returns Tree representation of the current value
73
- */
74
- get treeValue(): import("o1js/dist/node/lib/field").Field;
75
- /**
76
- * Returns the `to`-value as decoded as a list of fields
77
- * Not in circuit
78
- */
79
- toFields(): Field[];
80
- /**
81
- * @returns Provable representation of the current option.
82
- */
83
- toProvable(): ProvableOption;
84
95
  /**
85
96
  * @returns Returns the value of this option if it isSome,
86
97
  * otherwise returns the given defaultValue
87
98
  */
88
99
  orElse(defaultValue: Value): Value;
89
- toJSON(): {
90
- isSome: boolean;
91
- value: string;
92
- };
93
100
  }
94
101
  export {};
95
102
  //# sourceMappingURL=Option.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Option.d.ts","sourceRoot":"","sources":["../../src/model/Option.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,KAAK,EACL,KAAK,oBAAoB,EAI1B,MAAM,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEd,qBAAa,cAAe,SAAQ,mBAGlC;IACO,MAAM;CAId;AAED;;GAEG;AACH,qBAAa,MAAM,CAAC,KAAK;IAyCd,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC;IA1C/C;;;;;;;OAOG;WACW,IAAI,CAAC,KAAK,EACtB,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC;IAKxC;;;;;;OAMG;WACW,SAAS,CAAC,KAAK,EAC3B,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC;IAKxC;;OAEG;WACW,IAAI;IAIX,YAAY,yCAAe;gBAGzB,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC;IAGxC,KAAK;IAIL,SAAS;IAKhB;;OAEG;IACH,IAAW,SAAS,6CAQnB;IAED;;;OAGG;IACI,QAAQ,IAAI,KAAK,EAAE;IAO1B;;OAEG;IACI,UAAU;IAOjB;;;OAGG;IACI,MAAM,CAAC,YAAY,EAAE,KAAK,GAAG,KAAK;IASlC,MAAM;;;;CAYd"}
1
+ {"version":3,"file":"Option.d.ts","sourceRoot":"","sources":["../../src/model/Option.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,KAAK,EACL,KAAK,oBAAoB,EAI1B,MAAM,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEd,qBAAa,cAAe,SAAQ,mBAGlC;IACO,MAAM;CAId;AAED,8BAAsB,UAAU;IACD,MAAM,EAAE,IAAI;IAAS,YAAY,EAAE,IAAI;IAApE,SAAS,aAAoB,MAAM,EAAE,IAAI,EAAS,YAAY,EAAE,IAAI;IAEpE,SAAS,CAAC,QAAQ,CAAC,mBAAmB,IAAI,KAAK,EAAE;IAEjD,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,UAAU;IAEtC;;OAEG;IACH,IAAW,SAAS,6CAQnB;IAEM,SAAS;IAKhB;;;OAGG;IACI,QAAQ,IAAI,KAAK,EAAE;IAO1B;;OAEG;IACI,UAAU;IAOV,MAAM;;;;;CASd;AAED;;GAEG;AACH,qBAAa,MAAM,CAAC,KAAK,CAAE,SAAQ,UAAU;IAwClC,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC;IAxC/C;;;;;;;OAOG;WACW,IAAI,CAAC,KAAK,EACtB,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC;IAKxC;;;;;;OAMG;WACW,SAAS,CAAC,KAAK,EAC3B,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC;IAKxC;;OAEG;WACW,IAAI;gBAKhB,MAAM,EAAE,IAAI,EACL,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAC7C,YAAY,yCAAc;IAKrB,mBAAmB,IAAI,KAAK,EAAE;IAI9B,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;IAS7B;;;OAGG;IACI,MAAM,CAAC,YAAY,EAAE,KAAK,GAAG,KAAK;CAQ1C"}
@@ -8,10 +8,54 @@ export class ProvableOption extends Struct({
8
8
  return this;
9
9
  }
10
10
  }
11
+ export class OptionBase {
12
+ constructor(isSome, isForcedSome) {
13
+ this.isSome = isSome;
14
+ this.isForcedSome = isForcedSome;
15
+ }
16
+ /**
17
+ * @returns Tree representation of the current value
18
+ */
19
+ get treeValue() {
20
+ const treeValue = Poseidon.hash(this.encodeValueToFields());
21
+ return Provable.if(this.isSome.and(this.isForcedSome.not()), treeValue, Field(0));
22
+ }
23
+ forceSome() {
24
+ this.isForcedSome = Provable.if(this.isSome, Bool(false), Bool(true));
25
+ this.isSome = Bool(true);
26
+ }
27
+ /**
28
+ * Returns the `to`-value as decoded as a list of fields
29
+ * Not in circuit
30
+ */
31
+ toFields() {
32
+ if (this.isSome.toBoolean()) {
33
+ return this.encodeValueToFields();
34
+ }
35
+ return [Field(0)];
36
+ }
37
+ /**
38
+ * @returns Provable representation of the current option.
39
+ */
40
+ toProvable() {
41
+ return new ProvableOption({
42
+ isSome: this.isSome,
43
+ value: this.treeValue,
44
+ });
45
+ }
46
+ toJSON() {
47
+ const value = this.encodeValueToFields().map((field) => field.toString());
48
+ return {
49
+ isSome: this.isSome.toBoolean(),
50
+ isForcedSome: this.isForcedSome.toBoolean(),
51
+ value,
52
+ };
53
+ }
54
+ }
11
55
  /**
12
56
  * Option facilitating in-circuit values that may or may not exist.
13
57
  */
14
- export class Option {
58
+ export class Option extends OptionBase {
15
59
  /**
16
60
  * Creates a new Option from the provided parameters
17
61
  *
@@ -39,44 +83,16 @@ export class Option {
39
83
  static none() {
40
84
  return new Option(Bool(false), Field(0), Field);
41
85
  }
42
- constructor(isSome, value, valueType) {
43
- this.isSome = isSome;
86
+ constructor(isSome, value, valueType, isForcedSome = Bool(false)) {
87
+ super(isSome, isForcedSome);
44
88
  this.value = value;
45
89
  this.valueType = valueType;
46
- this.isForcedSome = Bool(false);
47
- }
48
- clone() {
49
- return new Option(this.isSome, this.value, this.valueType);
50
90
  }
51
- forceSome() {
52
- this.isForcedSome = Provable.if(this.isSome, Bool(false), Bool(true));
53
- this.isSome = Bool(true);
54
- }
55
- /**
56
- * @returns Tree representation of the current value
57
- */
58
- get treeValue() {
59
- const treeValue = Poseidon.hash(this.valueType.toFields(this.value));
60
- return Provable.if(this.isSome.and(this.isForcedSome.not()), treeValue, Field(0));
91
+ encodeValueToFields() {
92
+ return this.valueType.toFields(this.value);
61
93
  }
62
- /**
63
- * Returns the `to`-value as decoded as a list of fields
64
- * Not in circuit
65
- */
66
- toFields() {
67
- if (this.isSome.toBoolean()) {
68
- return this.valueType.toFields(this.value);
69
- }
70
- return [Field(0)];
71
- }
72
- /**
73
- * @returns Provable representation of the current option.
74
- */
75
- toProvable() {
76
- return new ProvableOption({
77
- isSome: this.isSome,
78
- value: this.treeValue,
79
- });
94
+ clone() {
95
+ return new Option(this.isSome, this.value, this.valueType, this.isForcedSome);
80
96
  }
81
97
  /**
82
98
  * @returns Returns the value of this option if it isSome,
@@ -85,14 +101,4 @@ export class Option {
85
101
  orElse(defaultValue) {
86
102
  return Provable.if(this.isSome, this.valueType, this.value, defaultValue);
87
103
  }
88
- toJSON() {
89
- const valueContent = this.valueType
90
- .toFields(this.value)
91
- .map((field) => field.toString())
92
- .reduce((a, b) => `${a}, ${b}`);
93
- return {
94
- isSome: this.isSome.toBoolean(),
95
- value: `[${valueContent}]`,
96
- };
97
- }
98
104
  }
@@ -84,11 +84,13 @@ export declare class StateTransition<Value> {
84
84
  path: string;
85
85
  from: {
86
86
  isSome: boolean;
87
- value: string;
87
+ isForcedSome: boolean;
88
+ value: string[];
88
89
  };
89
90
  to: {
90
91
  isSome: boolean;
91
- value: string;
92
+ isForcedSome: boolean;
93
+ value: string[];
92
94
  };
93
95
  };
94
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"StateTransition.d.ts","sourceRoot":"","sources":["../../src/model/StateTransition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAU,MAAM,MAAM,CAAC;AAErC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAElD;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,4BAQ3C;WACc,KAAK,IAAI,uBAAuB;CAO/C;AAED;;;GAGG;AACH,qBAAa,eAAe,CAAC,KAAK;IAcvB,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;WAfjC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC;WAIjD,MAAM,CAAC,KAAK,EACxB,IAAI,EAAE,KAAK,EACX,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,EACxB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;gBAMf,IAAI,EAAE,KAAK,EACX,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,EACxC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IAG/C,IAAW,IAAI,qEAId;IAED,IAAW,EAAE,qEAEZ;IAED;;;OAGG;IACI,UAAU,IAAI,uBAAuB;IAQrC,MAAM;;;;;;;;;;;CAOd"}
1
+ {"version":3,"file":"StateTransition.d.ts","sourceRoot":"","sources":["../../src/model/StateTransition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAU,MAAM,MAAM,CAAC;AAErC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAElD;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,4BAQ3C;WACc,KAAK,IAAI,uBAAuB;CAO/C;AAED;;;GAGG;AACH,qBAAa,eAAe,CAAC,KAAK;IAcvB,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;WAfjC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC;WAIjD,MAAM,CAAC,KAAK,EACxB,IAAI,EAAE,KAAK,EACX,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,EACxB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;gBAMf,IAAI,EAAE,KAAK,EACX,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,EACxC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IAG/C,IAAW,IAAI,qEAId;IAED,IAAW,EAAE,qEAEZ;IAED;;;OAGG;IACI,UAAU,IAAI,uBAAuB;IAQrC,MAAM;;;;;;;;;;;;;CAOd"}
@@ -58,8 +58,8 @@ export class StateTransition {
58
58
  toJSON() {
59
59
  return {
60
60
  path: this.path.toString(),
61
- from: this.from.toJSON(),
62
- to: this.to.toJSON(),
61
+ from: this.fromValue.toJSON(),
62
+ to: this.toValue.toJSON(),
63
63
  };
64
64
  }
65
65
  }