@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,164 @@
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 { AccountUpdate, Bool, Field, method, Poseidon, Provable, PublicKey, State, state, Struct, TokenContractV2, TokenId, } from "o1js";
11
+ import { noop, range } from "@proto-kit/common";
12
+ import { OUTGOING_MESSAGE_BATCH_SIZE, OutgoingMessageArgumentBatch, } from "../messages/OutgoingMessageArgument";
13
+ import { Path } from "../../model/Path";
14
+ import { Withdrawal } from "../messages/Withdrawal";
15
+ // Equal to WithdrawalKey
16
+ export class OutgoingMessageKey extends Struct({
17
+ index: Field,
18
+ tokenId: Field,
19
+ }) {
20
+ }
21
+ export class BridgeContractBase extends TokenContractV2 {
22
+ /**
23
+ * Function to deploy the bridging contract in a provable way, so that it can be
24
+ * a provable process initiated by the settlement contract with a baked-in vk
25
+ *
26
+ * @returns Creates and returns an account update deploying the bridge contract
27
+ */
28
+ async deployProvable(verificationKey, signedSettlement, permissions, settlementContractAddress) {
29
+ const accountUpdate = this.self;
30
+ if (!signedSettlement) {
31
+ if (verificationKey === undefined) {
32
+ throw new Error("Verification Key not provided, can't deploy");
33
+ }
34
+ accountUpdate.account.verificationKey.set(verificationKey);
35
+ }
36
+ accountUpdate.requireSignature();
37
+ this.account.permissions.set(permissions);
38
+ range(0, 8).forEach((i) => {
39
+ accountUpdate.update.appState[i] = {
40
+ isSome: Bool(true),
41
+ value: Field(0),
42
+ };
43
+ });
44
+ this.settlementContractAddress.set(settlementContractAddress);
45
+ accountUpdate.body.mayUseToken = {
46
+ // Set to true for custom tokens only
47
+ inheritFromParent: accountUpdate.tokenId.equals(TokenId.default).not(),
48
+ parentsOwnToken: Bool(false),
49
+ };
50
+ return accountUpdate;
51
+ }
52
+ async approveBase() {
53
+ noop();
54
+ }
55
+ async updateStateRootBase(root) {
56
+ this.stateRoot.set(root);
57
+ const settlementContractAddress = this.settlementContractAddress.getAndRequireEquals();
58
+ const SettlementContractClass = BridgeContractBase.args.SettlementContract;
59
+ if (SettlementContractClass === undefined) {
60
+ throw new Error("Settlement Contract class hasn't been set yet, something is wrong with your module composition");
61
+ }
62
+ const settlementContract = new SettlementContractClass(settlementContractAddress);
63
+ const accountUpdate = settlementContract.assertStateRoot(root);
64
+ this.approve(accountUpdate);
65
+ }
66
+ async rollupOutgoingMessagesBase(batch) {
67
+ let counter = this.outgoingMessageCursor.getAndRequireEquals();
68
+ const stateRoot = this.stateRoot.getAndRequireEquals();
69
+ const [withdrawalModule, withdrawalStateName] = BridgeContractBase.args.withdrawalStatePath;
70
+ const mapPath = Path.fromProperty(withdrawalModule, withdrawalStateName);
71
+ // Count account creation fee to return later, so that the sender can fund
72
+ // those accounts with a separate AU
73
+ let accountCreationFeePaid = Field(0);
74
+ for (let i = 0; i < OUTGOING_MESSAGE_BATCH_SIZE; i++) {
75
+ const args = batch.arguments[i];
76
+ // Check witness
77
+ const path = Path.fromKey(mapPath, OutgoingMessageKey, {
78
+ index: counter,
79
+ tokenId: this.tokenId,
80
+ });
81
+ // Process message
82
+ const { address, amount } = args.value;
83
+ const isDummy = address.equals(this.address);
84
+ args.witness
85
+ .checkMembership(stateRoot, path, Poseidon.hash(Withdrawal.toFields(args.value)))
86
+ .or(isDummy)
87
+ .assertTrue("Provided Withdrawal witness not valid");
88
+ const tokenAu = this.internal.mint({ address, amount });
89
+ const isNewAccount = tokenAu.account.isNew.getAndRequireEquals();
90
+ accountCreationFeePaid = accountCreationFeePaid.add(Provable.if(isNewAccount, Field(1e9), Field(0)));
91
+ counter = counter.add(Provable.if(isDummy, Field(0), Field(1)));
92
+ }
93
+ this.outgoingMessageCursor.set(counter);
94
+ return accountCreationFeePaid;
95
+ }
96
+ async redeemBase(additionUpdate) {
97
+ additionUpdate.body.tokenId.assertEquals(this.tokenId, "Tokenid not same as this bridging contract's tokenId");
98
+ additionUpdate.body.balanceChange.sgn
99
+ .isPositive()
100
+ .assertTrue("Sign not correct");
101
+ const amount = additionUpdate.body.balanceChange.magnitude;
102
+ // Burn tokens
103
+ this.internal.burn({
104
+ address: additionUpdate.publicKey,
105
+ amount,
106
+ });
107
+ // Inherit from parent for custom tokens
108
+ additionUpdate.body.mayUseToken = {
109
+ inheritFromParent: this.tokenId.equals(TokenId.default).not(),
110
+ parentsOwnToken: Bool(false),
111
+ };
112
+ // Send mina
113
+ this.approve(additionUpdate);
114
+ this.balance.subInPlace(amount);
115
+ }
116
+ }
117
+ export class BridgeContract extends BridgeContractBase {
118
+ constructor() {
119
+ super(...arguments);
120
+ this.settlementContractAddress = State();
121
+ this.stateRoot = State();
122
+ this.outgoingMessageCursor = State();
123
+ }
124
+ async updateStateRoot(root) {
125
+ return await this.updateStateRootBase(root);
126
+ }
127
+ async rollupOutgoingMessages(batch) {
128
+ return await this.rollupOutgoingMessagesBase(batch);
129
+ }
130
+ async redeem(additionUpdate) {
131
+ return await this.redeemBase(additionUpdate);
132
+ }
133
+ }
134
+ __decorate([
135
+ state(PublicKey),
136
+ __metadata("design:type", Object)
137
+ ], BridgeContract.prototype, "settlementContractAddress", void 0);
138
+ __decorate([
139
+ state(Field),
140
+ __metadata("design:type", Object)
141
+ ], BridgeContract.prototype, "stateRoot", void 0);
142
+ __decorate([
143
+ state(Field),
144
+ __metadata("design:type", Object)
145
+ ], BridgeContract.prototype, "outgoingMessageCursor", void 0);
146
+ __decorate([
147
+ method,
148
+ __metadata("design:type", Function),
149
+ __metadata("design:paramtypes", [Field]),
150
+ __metadata("design:returntype", Promise)
151
+ ], BridgeContract.prototype, "updateStateRoot", null);
152
+ __decorate([
153
+ method.returns(Field),
154
+ __metadata("design:type", Function),
155
+ __metadata("design:paramtypes", [OutgoingMessageArgumentBatch]),
156
+ __metadata("design:returntype", Promise)
157
+ ], BridgeContract.prototype, "rollupOutgoingMessages", null);
158
+ __decorate([
159
+ method,
160
+ __metadata("design:type", Function),
161
+ __metadata("design:paramtypes", [AccountUpdate]),
162
+ __metadata("design:returntype", Promise)
163
+ ], BridgeContract.prototype, "redeem", null);
164
+ //# sourceMappingURL=BridgeContract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BridgeContract.js","sourceRoot":"","sources":["../../../src/settlement/contracts/BridgeContract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { CompileRegistry } from "@proto-kit/common";
2
+ import { ContractModule } from "../ContractModule";
3
+ import { BridgeContract, BridgeContractType } from "./BridgeContract";
4
+ export type BridgeContractConfig = {
5
+ withdrawalStatePath: `${string}.${string}`;
6
+ withdrawalEventName: string;
7
+ };
8
+ export declare class BridgeContractProtocolModule extends ContractModule<BridgeContractType, BridgeContractConfig> {
9
+ contractFactory(): typeof BridgeContract;
10
+ compile(registry: CompileRegistry): Promise<{
11
+ BridgeContract: import("@proto-kit/common").CompileArtifact;
12
+ }>;
13
+ }
14
+ //# sourceMappingURL=BridgeContractProtocolModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BridgeContractProtocolModule.d.ts","sourceRoot":"","sources":["../../../src/settlement/contracts/BridgeContractProtocolModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EACL,cAAc,EAEd,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,oBAAoB,GAAG;IACjC,mBAAmB,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;IAC3C,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,qBACa,4BAA6B,SAAQ,cAAc,CAC9D,kBAAkB,EAClB,oBAAoB,CACrB;IACQ,eAAe;IAgBT,OAAO,CAAC,QAAQ,EAAE,eAAe;;;CAK/C"}
@@ -0,0 +1,30 @@
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
+ import { injectable } from "tsyringe";
8
+ import { ContractModule } from "../ContractModule";
9
+ import { BridgeContract, BridgeContractBase, } from "./BridgeContract";
10
+ export let BridgeContractProtocolModule = class BridgeContractProtocolModule extends ContractModule {
11
+ contractFactory() {
12
+ const { config } = this;
13
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
14
+ const withdrawalStatePathSplit = config.withdrawalStatePath.split(".");
15
+ BridgeContractBase.args = {
16
+ withdrawalStatePath: withdrawalStatePathSplit,
17
+ SettlementContract: BridgeContractBase.args?.SettlementContract,
18
+ };
19
+ return BridgeContract;
20
+ }
21
+ async compile(registry) {
22
+ return {
23
+ BridgeContract: await registry.compile(BridgeContract),
24
+ };
25
+ }
26
+ };
27
+ BridgeContractProtocolModule = __decorate([
28
+ injectable()
29
+ ], BridgeContractProtocolModule);
30
+ //# sourceMappingURL=BridgeContractProtocolModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BridgeContractProtocolModule.js","sourceRoot":"","sources":["../../../src/settlement/contracts/BridgeContractProtocolModule.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EACL,cAAc,EACd,kBAAkB,GAEnB,MAAM,kBAAkB,CAAC;AAQnB,WAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,cAGjD;IACQ,eAAe;QACpB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,yEAAyE;QACzE,MAAM,wBAAwB,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAGpE,CAAC;QAEF,kBAAkB,CAAC,IAAI,GAAG;YACxB,mBAAmB,EAAE,wBAAwB;YAC7C,kBAAkB,EAAE,kBAAkB,CAAC,IAAI,EAAE,kBAAkB;SAChE,CAAC;QAEF,OAAO,cAAc,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAyB;QAC5C,OAAO;YACL,cAAc,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC;SACvD,CAAC;IACJ,CAAC;CACF,CAAA;AAzBY,4BAA4B;IADxC,UAAU,EAAE;GACA,4BAA4B,CAyBxC"}
@@ -1,12 +1,21 @@
1
+ import { CompileRegistry } from "@proto-kit/common";
1
2
  import { RuntimeLike } from "../../model/RuntimeLike";
2
3
  import { ContractModule, SmartContractClassFromInterface } from "../ContractModule";
3
4
  import { DispatchContractType } from "./DispatchSmartContract";
4
5
  export type DispatchContractConfig = {
5
6
  incomingMessagesMethods: Record<string, `${string}.${string}`>;
6
7
  };
7
- export declare class DispatchContractProtocolModule extends ContractModule<DispatchContractType, undefined, DispatchContractConfig> {
8
+ export declare class DispatchContractProtocolModule extends ContractModule<DispatchContractType, DispatchContractConfig> {
8
9
  private readonly runtime;
9
10
  constructor(runtime: RuntimeLike);
11
+ eventsDefinition(): {
12
+ "token-bridge-added": typeof import("./TokenBridgeTree").TokenBridgeTreeAddition;
13
+ "incoming-message-placeholder": typeof import("o1js/dist/node/lib/provable/field").Field & ((x: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field | import("o1js/dist/node/lib/provable/core/fieldvar").FieldVar | import("o1js/dist/node/lib/provable/core/fieldvar").FieldConst) => import("o1js/dist/node/lib/provable/field").Field);
14
+ };
15
+ private checkConfigIntegrity;
10
16
  contractFactory(): SmartContractClassFromInterface<DispatchContractType>;
17
+ compile(registry: CompileRegistry): Promise<{
18
+ DispatchSmartContract: import("@proto-kit/common").CompileArtifact;
19
+ }>;
11
20
  }
12
21
  //# sourceMappingURL=DispatchContractProtocolModule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DispatchContractProtocolModule.d.ts","sourceRoot":"","sources":["../../../src/settlement/contracts/DispatchContractProtocolModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EACL,cAAc,EACd,+BAA+B,EAChC,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAEL,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,sBAAsB,GAAG;IACnC,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;CAChE,CAAC;AAEF,qBACa,8BAA+B,SAAQ,cAAc,CAChE,oBAAoB,EACpB,SAAS,EACT,sBAAsB,CACvB;IACuC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,WAAW;IAIpE,eAAe,IAAI,+BAA+B,CAAC,oBAAoB,CAAC;CAWhF"}
1
+ {"version":3,"file":"DispatchContractProtocolModule.d.ts","sourceRoot":"","sources":["../../../src/settlement/contracts/DispatchContractProtocolModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAA0B,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EACL,cAAc,EACd,+BAA+B,EAChC,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAEL,oBAAoB,EAErB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,sBAAsB,GAAG;IACnC,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;CAChE,CAAC;AAEF,qBACa,8BAA+B,SAAQ,cAAc,CAChE,oBAAoB,EACpB,sBAAsB,CACvB;IACuC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,WAAW;IAIpE,gBAAgB;;;;IAKvB,OAAO,CAAC,oBAAoB;IAcrB,eAAe,IAAI,+BAA+B,CAAC,oBAAoB,CAAC;IAgBlE,OAAO,CAAC,QAAQ,EAAE,eAAe;;;CAQ/C"}
@@ -11,25 +11,47 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
11
  return function (target, key) { decorator(target, key, paramIndex); }
12
12
  };
13
13
  import { inject, injectable } from "tsyringe";
14
+ import { PublicKey } from "o1js";
14
15
  import { ContractModule, } from "../ContractModule";
15
- import { DispatchSmartContract, } from "./DispatchSmartContract";
16
+ import { DispatchSmartContract, DispatchSmartContractBase, } from "./DispatchSmartContract";
16
17
  export let DispatchContractProtocolModule = class DispatchContractProtocolModule extends ContractModule {
17
18
  constructor(runtime) {
18
19
  super();
19
20
  this.runtime = runtime;
20
21
  }
22
+ eventsDefinition() {
23
+ return new DispatchSmartContract(PublicKey.empty())
24
+ .events;
25
+ }
26
+ checkConfigIntegrity(incomingMessagesMethods, runtimeMethodIds) {
27
+ const missing = Object.values(incomingMessagesMethods).filter((method) => runtimeMethodIds[method] === undefined);
28
+ if (missing.length > 0) {
29
+ throw new Error(`Incoming messages config references a unknown methods: [${missing}]`);
30
+ }
31
+ }
21
32
  contractFactory() {
22
33
  const { incomingMessagesMethods } = this.config;
23
34
  const methodIdMappings = this.runtime.methodIdResolver.methodIdMap();
24
- DispatchSmartContract.args = {
35
+ this.checkConfigIntegrity(incomingMessagesMethods, methodIdMappings);
36
+ DispatchSmartContractBase.args = {
25
37
  incomingMessagesPaths: incomingMessagesMethods,
26
38
  methodIdMappings,
39
+ settlementContractClass: DispatchSmartContractBase.args?.settlementContractClass,
27
40
  };
28
41
  return DispatchSmartContract;
29
42
  }
43
+ async compile(registry) {
44
+ if (DispatchSmartContractBase.args.settlementContractClass === undefined) {
45
+ throw new Error("Reference to Settlement Contract not set");
46
+ }
47
+ return {
48
+ DispatchSmartContract: await registry.compile(DispatchSmartContract),
49
+ };
50
+ }
30
51
  };
31
52
  DispatchContractProtocolModule = __decorate([
32
53
  injectable(),
33
54
  __param(0, inject("Runtime")),
34
55
  __metadata("design:paramtypes", [Object])
35
56
  ], DispatchContractProtocolModule);
57
+ //# sourceMappingURL=DispatchContractProtocolModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DispatchContractProtocolModule.js","sourceRoot":"","sources":["../../../src/settlement/contracts/DispatchContractProtocolModule.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAIjC,OAAO,EACL,cAAc,GAEf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,qBAAqB,EAErB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AAO1B,WAAM,8BAA8B,GAApC,MAAM,8BAA+B,SAAQ,cAGnD;IACC,YAAuD,OAAoB;QACzE,KAAK,EAAE,CAAC;QAD6C,YAAO,GAAP,OAAO,CAAa;IAE3E,CAAC;IAEM,gBAAgB;QACrB,OAAO,IAAI,qBAAqB,CAAC,SAAS,CAAC,KAAK,EAAoB,CAAC;aAClE,MAAM,CAAC;IACZ,CAAC;IAEO,oBAAoB,CAC1B,uBAA8D,EAC9D,gBAAwC;QAExC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAC3D,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,SAAS,CACnD,CAAC;QACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,MAAM,IAAI,KAAK,CACb,2DAA2D,OAAO,GAAG,CACtE,CAAC;SACH;IACH,CAAC;IAEM,eAAe;QACpB,MAAM,EAAE,uBAAuB,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAChD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAErE,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CAAC;QAErE,yBAAyB,CAAC,IAAI,GAAG;YAC/B,qBAAqB,EAAE,uBAAuB;YAC9C,gBAAgB;YAChB,uBAAuB,EACrB,yBAAyB,CAAC,IAAI,EAAE,uBAAuB;SAC1D,CAAC;QAEF,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAyB;QAC5C,IAAI,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,KAAK,SAAS,EAAE;YACxE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;SAC7D;QACD,OAAO;YACL,qBAAqB,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC;SACrE,CAAC;IACJ,CAAC;CACF,CAAA;AAnDY,8BAA8B;IAD1C,UAAU,EAAE;IAKS,WAAA,MAAM,CAAC,SAAS,CAAC,CAAA;;GAJ1B,8BAA8B,CAmD1C"}
@@ -1,22 +1,44 @@
1
- import { Field, PublicKey, SmartContract, State, UInt64 } from "o1js";
1
+ import { Field, ProvableExtended, PublicKey, SmartContract, State, UInt64 } from "o1js";
2
+ import { TypedClass } from "@proto-kit/common";
2
3
  import { RuntimeMethodIdMapping } from "../../model/RuntimeLike";
4
+ import type { SettlementContractType } from "./SettlementSmartContract";
5
+ import { TokenBridgeAttestation, TokenBridgeTreeAddition } from "./TokenBridgeTree";
3
6
  export declare const ACTIONS_EMPTY_HASH: import("o1js/dist/node/lib/provable/field").Field;
4
7
  export interface DispatchContractType {
5
8
  updateMessagesHash: (executedMessagesHash: Field, newPromisedMessagesHash: Field) => Promise<void>;
6
9
  initialize: (settlementContract: PublicKey) => Promise<void>;
10
+ enableTokenDeposits: (tokenId: Field, bridgeContractAddress: PublicKey, settlementContractAddress: PublicKey) => Promise<void>;
7
11
  promisedMessagesHash: State<Field>;
8
12
  }
9
- export declare class DispatchSmartContract extends SmartContract implements DispatchContractType {
13
+ export declare abstract class DispatchSmartContractBase extends SmartContract {
10
14
  static args: {
11
15
  methodIdMappings: RuntimeMethodIdMapping;
12
16
  incomingMessagesPaths: Record<string, `${string}.${string}`>;
17
+ settlementContractClass?: TypedClass<SettlementContractType> & typeof SmartContract;
13
18
  };
19
+ events: {
20
+ "token-bridge-added": typeof TokenBridgeTreeAddition;
21
+ "incoming-message-placeholder": typeof import("o1js/dist/node/lib/provable/field").Field & ((x: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field | import("o1js/dist/node/lib/provable/core/fieldvar").FieldVar | import("o1js/dist/node/lib/provable/core/fieldvar").FieldConst) => import("o1js/dist/node/lib/provable/field").Field);
22
+ };
23
+ abstract promisedMessagesHash: State<Field>;
24
+ abstract honoredMessagesHash: State<Field>;
25
+ abstract settlementContract: State<PublicKey>;
26
+ abstract tokenBridgeRoot: State<Field>;
27
+ abstract tokenBridgeCount: State<Field>;
28
+ protected updateMessagesHashBase(executedMessagesHash: Field, newPromisedMessagesHash: Field): void;
29
+ protected initializeBase(settlementContract: PublicKey): void;
30
+ protected dispatchMessage<Type>(methodId: Field, value: Type, valueType: ProvableExtended<Type>): void;
31
+ protected enableTokenDepositsBase(tokenId: Field, bridgeContractAddress: PublicKey, settlementContractAddress: PublicKey): Promise<void>;
32
+ }
33
+ export declare class DispatchSmartContract extends DispatchSmartContractBase implements DispatchContractType {
14
34
  promisedMessagesHash: State<import("o1js/dist/node/lib/provable/field").Field>;
15
35
  honoredMessagesHash: State<import("o1js/dist/node/lib/provable/field").Field>;
16
36
  settlementContract: State<PublicKey>;
37
+ tokenBridgeRoot: State<import("o1js/dist/node/lib/provable/field").Field>;
38
+ tokenBridgeCount: State<import("o1js/dist/node/lib/provable/field").Field>;
39
+ enableTokenDeposits(tokenId: Field, bridgeContractAddress: PublicKey, settlementContractAddress: PublicKey): Promise<void>;
17
40
  updateMessagesHash(executedMessagesHash: Field, newPromisedMessagesHash: Field): Promise<void>;
18
41
  initialize(settlementContract: PublicKey): Promise<void>;
19
- private dispatchMessage;
20
- deposit(amount: UInt64): Promise<void>;
42
+ deposit(amount: UInt64, tokenId: Field, bridgingContract: PublicKey, bridgingContractAttestation: TokenBridgeAttestation, l2Receiver: PublicKey): Promise<void>;
21
43
  }
22
44
  //# sourceMappingURL=DispatchSmartContract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DispatchSmartContract.d.ts","sourceRoot":"","sources":["../../../src/settlement/contracts/DispatchSmartContract.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EAIL,SAAS,EAET,aAAa,EACb,KAAK,EAEL,MAAM,EACP,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAQjE,eAAO,MAAM,kBAAkB,mDAA6B,CAAC;AAE7D,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,EAAE,CAClB,oBAAoB,EAAE,KAAK,EAC3B,uBAAuB,EAAE,KAAK,KAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,UAAU,EAAE,CAAC,kBAAkB,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7D,oBAAoB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;CACpC;AAED,qBAAa,qBACX,SAAQ,aACR,YAAW,oBAAoB;IAE/B,OAAc,IAAI,EAAE;QAClB,gBAAgB,EAAE,sBAAsB,CAAC;QACzC,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;KAC9D,CAAC;IAEmB,oBAAoB,2DAAkB;IAEtC,mBAAmB,2DAAkB;IAEjC,kBAAkB,mBAAsB;IAGpD,kBAAkB,CAC7B,oBAAoB,EAAE,KAAK,EAC3B,uBAAuB,EAAE,KAAK;IAgBnB,UAAU,CAAC,kBAAkB,EAAE,SAAS;IAYrD,OAAO,CAAC,eAAe;IA8BV,OAAO,CAAC,MAAM,EAAE,MAAM;CAyBpC"}
1
+ {"version":3,"file":"DispatchSmartContract.d.ts","sourceRoot":"","sources":["../../../src/settlement/contracts/DispatchSmartContract.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,EAIL,gBAAgB,EAChB,SAAS,EAET,aAAa,EACb,KAAK,EAGL,MAAM,EACP,MAAM,MAAM,CAAC;AACd,OAAO,EAA6B,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAQjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGxE,OAAO,EACL,sBAAsB,EAGtB,uBAAuB,EAExB,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,kBAAkB,mDAA6B,CAAC;AAE7D,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,EAAE,CAClB,oBAAoB,EAAE,KAAK,EAC3B,uBAAuB,EAAE,KAAK,KAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,UAAU,EAAE,CAAC,kBAAkB,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,mBAAmB,EAAE,CACnB,OAAO,EAAE,KAAK,EACd,qBAAqB,EAAE,SAAS,EAChC,yBAAyB,EAAE,SAAS,KACjC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB,oBAAoB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;CACpC;AAMD,8BAAsB,yBAA0B,SAAQ,aAAa;IACnE,OAAc,IAAI,EAAE;QAClB,gBAAgB,EAAE,sBAAsB,CAAC;QACzC,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;QAC7D,uBAAuB,CAAC,EAAE,UAAU,CAAC,sBAAsB,CAAC,GAC1D,OAAO,aAAa,CAAC;KACxB,CAAC;IAEF,MAAM;;;MAMJ;IAEF,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAE5C,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAE3C,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAE9C,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAEvC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAExC,SAAS,CAAC,sBAAsB,CAC9B,oBAAoB,EAAE,KAAK,EAC3B,uBAAuB,EAAE,KAAK;IA+BhC,SAAS,CAAC,cAAc,CAAC,kBAAkB,EAAE,SAAS;IAYtD,SAAS,CAAC,eAAe,CAAC,IAAI,EAC5B,QAAQ,EAAE,KAAK,EACf,KAAK,EAAE,IAAI,EACX,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC;cAmCnB,uBAAuB,CACrC,OAAO,EAAE,KAAK,EACd,qBAAqB,EAAE,SAAS,EAGhC,yBAAyB,EAAE,SAAS;CAsDvC;AAED,qBAAa,qBACX,SAAQ,yBACR,YAAW,oBAAoB;IAEV,oBAAoB,2DAAkB;IAEtC,mBAAmB,2DAAkB;IAEjC,kBAAkB,mBAAsB;IAE5C,eAAe,2DAAiC;IAEhD,gBAAgB,2DAAkB;IAG1C,mBAAmB,CAC9B,OAAO,EAAE,KAAK,EACd,qBAAqB,EAAE,SAAS,EAChC,yBAAyB,EAAE,SAAS;IAUzB,kBAAkB,CAC7B,oBAAoB,EAAE,KAAK,EAC3B,uBAAuB,EAAE,KAAK;IASnB,UAAU,CAAC,kBAAkB,EAAE,SAAS;IAKxC,OAAO,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,KAAK,EACd,gBAAgB,EAAE,SAAS,EAC3B,2BAA2B,EAAE,sBAAsB,EACnD,UAAU,EAAE,SAAS;CAgDxB"}
@@ -7,19 +7,28 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import { AccountUpdate, Field, method, Poseidon, PublicKey, Reducer, SmartContract, State, state, UInt64, } from "o1js";
10
+ import { AccountUpdate, Bool, Field, method, Poseidon, Provable, PublicKey, Reducer, SmartContract, State, state, TokenId, UInt64, } from "o1js";
11
+ import { InMemoryMerkleTreeStorage } from "@proto-kit/common";
11
12
  import { RuntimeTransaction } from "../../model/transaction/RuntimeTransaction";
12
13
  import { MinaActions, MinaEvents, } from "../../utils/MinaPrefixedProvableHashList";
13
14
  import { Deposit } from "../messages/Deposit";
15
+ import { TokenBridgeDeploymentAuth } from "./authorizations/TokenBridgeDeploymentAuth";
16
+ import { UpdateMessagesHashAuth } from "./authorizations/UpdateMessagesHashAuth";
17
+ import { TokenBridgeAttestation, TokenBridgeEntry, TokenBridgeTree, TokenBridgeTreeAddition, TokenBridgeTreeWitness, } from "./TokenBridgeTree";
14
18
  export const ACTIONS_EMPTY_HASH = Reducer.initialActionState;
15
- export class DispatchSmartContract extends SmartContract {
19
+ const tokenBridgeRoot = new TokenBridgeTree(new InMemoryMerkleTreeStorage()).getRoot();
20
+ export class DispatchSmartContractBase extends SmartContract {
16
21
  constructor() {
17
22
  super(...arguments);
18
- this.promisedMessagesHash = State();
19
- this.honoredMessagesHash = State();
20
- this.settlementContract = State();
23
+ this.events = {
24
+ "token-bridge-added": TokenBridgeTreeAddition,
25
+ // We need a placeholder event here, so that o1js internally adds a identifier to the
26
+ // emitted event-fields. That will lead to the o1js API being able to distinguish the
27
+ // TokenBridgeEvents from the manually emitted events for the incoming messages
28
+ "incoming-message-placeholder": Field,
29
+ };
21
30
  }
22
- async updateMessagesHash(executedMessagesHash, newPromisedMessagesHash) {
31
+ updateMessagesHashBase(executedMessagesHash, newPromisedMessagesHash) {
23
32
  const promisedMessagesHash = this.promisedMessagesHash.getAndRequireEquals();
24
33
  this.honoredMessagesHash.getAndRequireEquals();
25
34
  executedMessagesHash.assertEquals(promisedMessagesHash);
@@ -27,8 +36,16 @@ export class DispatchSmartContract extends SmartContract {
27
36
  // Assert and apply new promisedMessagesHash
28
37
  this.self.account.actionState.requireEquals(newPromisedMessagesHash);
29
38
  this.promisedMessagesHash.set(newPromisedMessagesHash);
39
+ const settlementContractAddress = this.settlementContract.getAndRequireEquals();
40
+ const settlementContract = new DispatchSmartContractBase.args.settlementContractClass(settlementContractAddress);
41
+ settlementContract.authorizationField.requireEquals(new UpdateMessagesHashAuth({
42
+ target: this.address,
43
+ executedMessagesHash,
44
+ newPromisedMessagesHash,
45
+ }).hash());
46
+ this.approve(settlementContract.self);
30
47
  }
31
- async initialize(settlementContract) {
48
+ initializeBase(settlementContract) {
32
49
  this.promisedMessagesHash.getAndRequireEquals().assertEquals(Field(0));
33
50
  this.honoredMessagesHash.getAndRequireEquals().assertEquals(Field(0));
34
51
  this.settlementContract
@@ -53,28 +70,110 @@ export class DispatchSmartContract extends SmartContract {
53
70
  hash: actionHash,
54
71
  data: [actionData],
55
72
  };
56
- const eventHash = MinaEvents.eventHash(args);
73
+ // Find event index of placeholder event that we can use for manual event dispatching
74
+ const eventIndex = Object.keys(this.events)
75
+ .sort()
76
+ .indexOf("incoming-message-placeholder");
77
+ if (eventIndex === -1) {
78
+ throw new Error("Unknown event type for placeholder event");
79
+ }
80
+ const paddedArgs = [Field(eventIndex), ...args];
81
+ const eventHash = MinaEvents.eventHash(paddedArgs);
57
82
  this.self.body.events = {
58
83
  hash: eventHash,
59
- data: [args],
84
+ data: [paddedArgs],
60
85
  };
61
86
  }
62
- async deposit(amount) {
63
- // Save this, since otherwise it would be a second witness later,
64
- // which could be a different values than the first
65
- const sender = this.sender.getUnconstrained();
66
- const settlementContract = this.settlementContract.getAndRequireEquals();
87
+ async enableTokenDepositsBase(tokenId, bridgeContractAddress,
88
+ // Witness it here, since o1js doesn't fetch this state correctly since
89
+ // its updated in a parent AU
90
+ settlementContractAddress
91
+ // treeWitness: TokenBridgeTreeWitness
92
+ ) {
93
+ this.settlementContract.requireEquals(settlementContractAddress);
94
+ const settlementContract = new DispatchSmartContractBase.args.settlementContractClass(settlementContractAddress);
95
+ // Append bridge address to the tree
96
+ // TODO This not concurrent and will fail if multiple users deploy bridges at the same time
97
+ const counter = this.tokenBridgeCount.getAndRequireEquals();
98
+ const root = this.tokenBridgeRoot.getAndRequireEquals();
99
+ const treeWitness = await Provable.witnessAsync(TokenBridgeTreeWitness, async () => {
100
+ const tree = await TokenBridgeTree.buildTreeFromEvents(this);
101
+ return tree.getWitness(counter.toBigInt());
102
+ });
103
+ Provable.log(root);
104
+ treeWitness
105
+ .checkMembership(root, counter, Field(0))
106
+ .assertTrue("Bridge Tree Witness not valid");
107
+ const entry = new TokenBridgeEntry({
108
+ tokenId,
109
+ address: bridgeContractAddress,
110
+ });
111
+ const newRoot = treeWitness.calculateRoot(entry.hash());
112
+ this.tokenBridgeRoot.set(newRoot);
113
+ this.tokenBridgeCount.set(counter.add(1));
114
+ this.emitEvent("token-bridge-added", new TokenBridgeTreeAddition({
115
+ index: counter,
116
+ value: entry,
117
+ }));
118
+ // Authenticate call via callback
119
+ settlementContract.authorizationField.requireEquals(new TokenBridgeDeploymentAuth({
120
+ target: this.address,
121
+ tokenId,
122
+ address: bridgeContractAddress,
123
+ }).hash());
124
+ this.approve(settlementContract.self);
125
+ }
126
+ }
127
+ export class DispatchSmartContract extends DispatchSmartContractBase {
128
+ constructor() {
129
+ super(...arguments);
130
+ this.promisedMessagesHash = State();
131
+ this.honoredMessagesHash = State();
132
+ this.settlementContract = State();
133
+ this.tokenBridgeRoot = State(tokenBridgeRoot);
134
+ this.tokenBridgeCount = State();
135
+ }
136
+ async enableTokenDeposits(tokenId, bridgeContractAddress, settlementContractAddress) {
137
+ await this.enableTokenDepositsBase(tokenId, bridgeContractAddress, settlementContractAddress);
138
+ }
139
+ async updateMessagesHash(executedMessagesHash, newPromisedMessagesHash) {
140
+ return this.updateMessagesHashBase(executedMessagesHash, newPromisedMessagesHash);
141
+ }
142
+ async initialize(settlementContract) {
143
+ return this.initializeBase(settlementContract);
144
+ }
145
+ async deposit(amount, tokenId, bridgingContract, bridgingContractAttestation, l2Receiver) {
146
+ const childrenMayUseToken = {
147
+ parentsOwnToken: Bool(false),
148
+ // MayUseToken has to be set only for custom tokens
149
+ inheritFromParent: tokenId.equals(TokenId.default).not(),
150
+ };
151
+ // Check that the bridgingContract parameter is valid => is in the offchain tree
152
+ const bridgeTreeRoot = this.tokenBridgeRoot.getAndRequireEquals();
153
+ const entry = new TokenBridgeEntry({
154
+ tokenId,
155
+ address: bridgingContract,
156
+ });
157
+ bridgingContractAttestation.witness
158
+ .checkMembership(bridgeTreeRoot, bridgingContractAttestation.index, entry.hash())
159
+ .assertTrue("Bridging Contract Attestation not valid");
67
160
  // Credit the amount to the settlement contract
68
- const balanceAU = AccountUpdate.create(settlementContract);
161
+ const balanceAU = AccountUpdate.create(bridgingContract, tokenId);
69
162
  balanceAU.balance.addInPlace(amount);
70
- this.self.approve(balanceAU);
163
+ balanceAU.body.mayUseToken = childrenMayUseToken;
164
+ this.approve(balanceAU);
71
165
  const action = new Deposit({
72
- address: sender,
166
+ tokenId,
167
+ address: l2Receiver,
73
168
  amount,
74
169
  });
75
- const { methodIdMappings, incomingMessagesPaths } = DispatchSmartContract.args;
170
+ const { methodIdMappings, incomingMessagesPaths } = DispatchSmartContractBase.args;
76
171
  const methodId = Field(methodIdMappings[incomingMessagesPaths.deposit].methodId).toConstant();
77
172
  this.dispatchMessage(methodId.toConstant(), action, Deposit);
173
+ this.self.body.mayUseToken = {
174
+ parentsOwnToken: tokenId.equals(TokenId.default).not(),
175
+ inheritFromParent: Bool(false),
176
+ };
78
177
  }
79
178
  }
80
179
  __decorate([
@@ -89,6 +188,22 @@ __decorate([
89
188
  state(PublicKey),
90
189
  __metadata("design:type", Object)
91
190
  ], DispatchSmartContract.prototype, "settlementContract", void 0);
191
+ __decorate([
192
+ state(Field),
193
+ __metadata("design:type", Object)
194
+ ], DispatchSmartContract.prototype, "tokenBridgeRoot", void 0);
195
+ __decorate([
196
+ state(Field),
197
+ __metadata("design:type", Object)
198
+ ], DispatchSmartContract.prototype, "tokenBridgeCount", void 0);
199
+ __decorate([
200
+ method,
201
+ __metadata("design:type", Function),
202
+ __metadata("design:paramtypes", [Field,
203
+ PublicKey,
204
+ PublicKey]),
205
+ __metadata("design:returntype", Promise)
206
+ ], DispatchSmartContract.prototype, "enableTokenDeposits", null);
92
207
  __decorate([
93
208
  method,
94
209
  __metadata("design:type", Function),
@@ -105,6 +220,11 @@ __decorate([
105
220
  __decorate([
106
221
  method,
107
222
  __metadata("design:type", Function),
108
- __metadata("design:paramtypes", [UInt64]),
223
+ __metadata("design:paramtypes", [UInt64,
224
+ Field,
225
+ PublicKey,
226
+ TokenBridgeAttestation,
227
+ PublicKey]),
109
228
  __metadata("design:returntype", Promise)
110
229
  ], DispatchSmartContract.prototype, "deposit", null);
230
+ //# sourceMappingURL=DispatchSmartContract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DispatchSmartContract.js","sourceRoot":"","sources":["../../../src/settlement/contracts/DispatchSmartContract.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,21 @@
1
- import { TypedClass } from "@proto-kit/common";
2
- import { SmartContract } from "o1js";
1
+ import { ArtifactRecord, ChildVerificationKeyService, CompileRegistry } from "@proto-kit/common";
3
2
  import { BlockProvable } from "../../prover/block/BlockProvable";
4
3
  import { ContractModule, SmartContractClassFromInterface } from "../ContractModule";
5
4
  import { ProvableSettlementHook } from "../modularity/ProvableSettlementHook";
6
- import { DispatchContractType } from "./DispatchSmartContract";
7
5
  import { SettlementContractType } from "./SettlementSmartContract";
6
+ import { DispatchContractProtocolModule } from "./DispatchContractProtocolModule";
7
+ import { BridgeContractProtocolModule } from "./BridgeContractProtocolModule";
8
8
  export type SettlementContractConfig = {
9
9
  escapeHatchSlotsInterval?: number;
10
- withdrawalStatePath: `${string}.${string}`;
11
- withdrawalMethodPath: `${string}.${string}`;
12
10
  };
13
- export declare class SettlementContractProtocolModule extends ContractModule<SettlementContractType, TypedClass<DispatchContractType & SmartContract>, SettlementContractConfig> {
11
+ export declare class SettlementContractProtocolModule extends ContractModule<SettlementContractType, SettlementContractConfig> {
14
12
  private readonly hooks;
15
13
  private readonly blockProver;
16
- constructor(hooks: ProvableSettlementHook<unknown>[], blockProver: BlockProvable);
17
- contractFactory(dispatchContract: TypedClass<DispatchContractType & SmartContract>): SmartContractClassFromInterface<SettlementContractType>;
14
+ private readonly dispatchContractModule;
15
+ private readonly bridgeContractModule;
16
+ private readonly childVerificationKeyService;
17
+ constructor(hooks: ProvableSettlementHook<unknown>[], blockProver: BlockProvable, dispatchContractModule: DispatchContractProtocolModule, bridgeContractModule: BridgeContractProtocolModule, childVerificationKeyService: ChildVerificationKeyService);
18
+ contractFactory(): SmartContractClassFromInterface<SettlementContractType>;
19
+ compile(registry: CompileRegistry): Promise<ArtifactRecord | undefined>;
18
20
  }
19
21
  //# sourceMappingURL=SettlementContractProtocolModule.d.ts.map