@layerzerolabs/layerzero-v2-ton 3.0.27 → 3.0.29

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 (200) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/ActionsSerde.test.compiled.json +1 -0
  3. package/build/AllStorages.compiled.json +1 -1
  4. package/build/AllStorages.test.compiled.json +1 -1
  5. package/build/BaseContract.test.compiled.json +1 -1
  6. package/build/Channel.compiled.json +1 -1
  7. package/build/Channel.permissions.test.compiled.json +1 -1
  8. package/build/ChannelBurn.test.compiled.json +1 -1
  9. package/build/ChannelCommitPacket.test.compiled.json +1 -1
  10. package/build/ChannelConfig.test.compiled.json +1 -1
  11. package/build/ChannelInitialize.test.compiled.json +1 -1
  12. package/build/ChannelMsglibIntegration.test.compiled.json +1 -1
  13. package/build/ChannelMsglibSendCallback.test.compiled.json +1 -1
  14. package/build/ChannelNilify.test.compiled.json +1 -1
  15. package/build/ChannelReceive.test.compiled.json +1 -1
  16. package/build/ChannelReceiveCallback.test.compiled.json +1 -1
  17. package/build/ChannelReceiveView.test.compiled.json +1 -1
  18. package/build/ChannelSend.test.compiled.json +1 -1
  19. package/build/ChannelSerde.test.compiled.json +1 -0
  20. package/build/Classlib.test.compiled.json +1 -1
  21. package/build/ComputeDataSizeGas.test.compiled.json +1 -1
  22. package/build/Connection.compiled.json +1 -1
  23. package/build/Controller.assertions.test.compiled.json +1 -1
  24. package/build/Controller.compiled.json +1 -1
  25. package/build/Controller.permissions.test.compiled.json +1 -1
  26. package/build/Controller.test.compiled.json +1 -1
  27. package/build/Counter.compiled.json +1 -1
  28. package/build/Counter.permissions.test.compiled.json +1 -1
  29. package/build/Counter.setters.test.compiled.json +1 -1
  30. package/build/Counter.test.compiled.json +1 -1
  31. package/build/Dvn.compiled.json +1 -1
  32. package/build/Dvn.test.compiled.json +1 -1
  33. package/build/DvnFeeLib.compiled.json +1 -1
  34. package/build/DvnFeeLibSerde.test.compiled.json +1 -0
  35. package/build/DvnPermissions.test.compiled.json +1 -1
  36. package/build/DvnSerde.test.compiled.json +1 -0
  37. package/build/Endpoint.compiled.json +1 -1
  38. package/build/Endpoint.permissions.test.compiled.json +1 -1
  39. package/build/Endpoint.test.compiled.json +1 -1
  40. package/build/EndpointSerde.test.compiled.json +1 -0
  41. package/build/EndpointSetEpConfigDefaults.test.compiled.json +1 -1
  42. package/build/Executor.compiled.json +1 -1
  43. package/build/Executor.test.compiled.json +1 -1
  44. package/build/ExecutorFeeLib.compiled.json +1 -1
  45. package/build/ExecutorFeeLibSerde.test.compiled.json +1 -0
  46. package/build/ExecutorPermissions.test.compiled.json +1 -1
  47. package/build/ExecutorSerde.test.compiled.json +1 -0
  48. package/build/LzClasses.test.compiled.json +1 -1
  49. package/build/LzClassesSerde.test.compiled.json +1 -0
  50. package/build/LzUtil.test.compiled.json +1 -1
  51. package/build/MsgData.test.compiled.json +1 -1
  52. package/build/MsgDataSerde.test.compiled.json +1 -0
  53. package/build/MsglibPacketCodec.test.compiled.json +1 -1
  54. package/build/PipelinedOutOfOrder.test.compiled.json +1 -1
  55. package/build/PipelinedOutOfOrderSerde.test.compiled.json +1 -0
  56. package/build/PriceFeedCache.compiled.json +1 -1
  57. package/build/PriceFeedCache.test.compiled.json +1 -1
  58. package/build/PriceFeedCache.test.permissions.compiled.json +1 -1
  59. package/build/PriceFeedCacheSerde.test.compiled.json +1 -0
  60. package/build/PriceFeedFeeLibSerde.test.compiled.json +1 -0
  61. package/build/Proxy.compiled.json +1 -1
  62. package/build/Proxy.permissions.test.compiled.json +1 -1
  63. package/build/Proxy.test.compiled.json +1 -1
  64. package/build/SmlConnection.compiled.json +1 -1
  65. package/build/SmlConnection.permissions.test.compiled.json +1 -1
  66. package/build/SmlConnection.test.compiled.json +1 -1
  67. package/build/SmlManager.compiled.json +1 -1
  68. package/build/SmlManager.permissions.test.compiled.json +1 -1
  69. package/build/SmlManager.test.compiled.json +1 -1
  70. package/build/Uln.compiled.json +1 -1
  71. package/build/Uln.test.compiled.json +1 -1
  72. package/build/UlnConnection.compiled.json +1 -1
  73. package/build/UlnConnection.test.compiled.json +1 -1
  74. package/build/UlnConnectionPermissions.test.compiled.json +1 -1
  75. package/build/UlnConnectionSerde.test.compiled.json +1 -0
  76. package/build/UlnManagement.test.compiled.json +1 -1
  77. package/build/UlnManager.compiled.json +1 -1
  78. package/build/UlnManager.test.compiled.json +1 -1
  79. package/build/UlnManagerPermissions.test.compiled.json +1 -1
  80. package/build/UlnManagerUtil.test.compiled.json +1 -1
  81. package/build/UlnMsgDataSerde.test.compiled.json +1 -0
  82. package/build/UlnPermissions.test.compiled.json +1 -1
  83. package/build/UlnReceiveConfig.test.compiled.json +1 -1
  84. package/build/UlnSend.test.compiled.json +1 -1
  85. package/build/UlnSendConfig.test.compiled.json +1 -1
  86. package/build/UlnSendWithDvnFeeLib.test.compiled.json +1 -1
  87. package/build/UlnSendWithExecFeeLib.test.compiled.json +1 -1
  88. package/build/UlnSendWorkerFactory.test.compiled.json +1 -1
  89. package/build/UlnSerde.test.compiled.json +1 -0
  90. package/build/UlnUtil.test.compiled.json +1 -1
  91. package/build/WorkerCore.test.compiled.json +1 -1
  92. package/build/WorkerCoreMsgDataSerde.test.compiled.json +1 -0
  93. package/build/WorkerCoreSerde.test.compiled.json +1 -0
  94. package/build/badFeeLib1.test.compiled.json +1 -1
  95. package/build/badFeeLib10.test.compiled.json +1 -1
  96. package/build/badFeeLib11.test.compiled.json +1 -1
  97. package/build/badFeeLib12.test.compiled.json +1 -1
  98. package/build/badFeeLib2.test.compiled.json +1 -1
  99. package/build/badFeeLib3.test.compiled.json +1 -1
  100. package/build/badFeeLib4.test.compiled.json +1 -1
  101. package/build/badFeeLib5.test.compiled.json +1 -1
  102. package/build/badFeeLib6.test.compiled.json +1 -1
  103. package/build/badFeeLib7.test.compiled.json +1 -1
  104. package/build/badFeeLib8.test.compiled.json +1 -1
  105. package/build/badFeeLib9.test.compiled.json +1 -1
  106. package/package.json +2 -1
  107. package/src/classes/lz/EpConfig.fc +90 -23
  108. package/src/classes/lz/MsglibInfo.fc +32 -5
  109. package/src/classes/lz/Packet.fc +109 -48
  110. package/src/classes/lz/Path.fc +55 -4
  111. package/src/classes/lz/ReceiveEpConfig.fc +36 -5
  112. package/src/classes/lz/SendEpConfig.fc +55 -5
  113. package/src/classes/msgdata/AddMsglib.fc +11 -0
  114. package/src/classes/msgdata/ChannelNonceInfo.fc +20 -0
  115. package/src/classes/msgdata/CoinsAmount.fc +8 -0
  116. package/src/classes/msgdata/Deploy.fc +19 -0
  117. package/src/classes/msgdata/ExtendedMd.fc +52 -1
  118. package/src/classes/msgdata/LzReceivePrepare.fc +21 -1
  119. package/src/classes/msgdata/LzReceiveStatus.fc +72 -1
  120. package/src/classes/msgdata/LzSend.fc +143 -24
  121. package/src/classes/msgdata/MdAddress.fc +42 -0
  122. package/src/classes/msgdata/MdEid.fc +8 -0
  123. package/src/classes/msgdata/MdObj.fc +32 -0
  124. package/src/classes/msgdata/MessagingReceipt.fc +34 -1
  125. package/src/classes/msgdata/MsglibSendCallback.fc +82 -0
  126. package/src/classes/msgdata/Nonce.fc +30 -0
  127. package/src/classes/msgdata/OptionsV1.fc +21 -1
  128. package/src/classes/msgdata/OptionsV2.fc +27 -0
  129. package/src/classes/msgdata/PacketId.fc +24 -0
  130. package/src/classes/msgdata/PacketSent.fc +35 -1
  131. package/src/classes/msgdata/SetAddress.fc +7 -0
  132. package/src/classes/msgdata/SetEpConfig.fc +17 -0
  133. package/src/funC++/actions/event.fc +17 -2
  134. package/src/funC++/actions/utils.fc +2 -2
  135. package/src/funC++/classlib.fc +33 -43
  136. package/src/funC++/constants.fc +28 -28
  137. package/src/funC++/dataStructures/PipelinedOutOfOrder.fc +75 -59
  138. package/src/funC++/stdlib.fc +26 -11
  139. package/src/funC++/testutils.fc +2 -2
  140. package/src/funC++/txnContext.fc +14 -14
  141. package/src/funC++/utils.fc +97 -1
  142. package/src/protocol/channel/handler.fc +247 -189
  143. package/src/protocol/channel/storage.fc +206 -1
  144. package/src/protocol/controller/handler.fc +35 -17
  145. package/src/protocol/controller/main.fc +1 -1
  146. package/src/protocol/core/abstract/protocolHandler.fc +11 -21
  147. package/src/protocol/core/baseStorage.fc +24 -0
  148. package/src/protocol/endpoint/handler.fc +99 -57
  149. package/src/protocol/endpoint/storage.fc +69 -5
  150. package/src/protocol/msglibs/BytesEncoder.fc +11 -10
  151. package/src/protocol/msglibs/simpleMsglib/smlManager/handler.fc +1 -4
  152. package/src/protocol/msglibs/ultralightnode/feeLibInterface.fc +1 -0
  153. package/src/protocol/msglibs/ultralightnode/msgdata/Attestation.fc +7 -8
  154. package/src/protocol/msglibs/ultralightnode/msgdata/DvnFeesPaidEvent.fc +20 -0
  155. package/src/protocol/msglibs/ultralightnode/msgdata/ExecutorFeePaidEvent.fc +15 -0
  156. package/src/protocol/msglibs/ultralightnode/msgdata/InitUln.fc +1 -1
  157. package/src/protocol/msglibs/ultralightnode/msgdata/InitUlnConnection.fc +1 -1
  158. package/src/protocol/msglibs/ultralightnode/msgdata/SetAdminWorkerAddresses.fc +6 -0
  159. package/src/protocol/msglibs/ultralightnode/msgdata/UlnEvents.fc +20 -0
  160. package/src/protocol/msglibs/ultralightnode/msgdata/UlnReceiveConfig.fc +114 -28
  161. package/src/protocol/msglibs/ultralightnode/msgdata/UlnSend.fc +51 -1
  162. package/src/protocol/msglibs/ultralightnode/msgdata/UlnSendConfig.fc +1 -1
  163. package/src/protocol/msglibs/ultralightnode/msgdata/UlnVerification.fc +10 -0
  164. package/src/protocol/msglibs/ultralightnode/msgdata/UlnWorkerFeelibBytecode.fc +6 -0
  165. package/src/protocol/msglibs/ultralightnode/msgdata/UlnWorkerFeelibInfo.fc +51 -1
  166. package/src/protocol/msglibs/ultralightnode/msgdata/VerificationStatus.fc +15 -0
  167. package/src/protocol/msglibs/ultralightnode/uln/handler.fc +84 -107
  168. package/src/protocol/msglibs/ultralightnode/uln/storage.fc +77 -1
  169. package/src/protocol/msglibs/ultralightnode/ulnConnection/handler.fc +92 -66
  170. package/src/protocol/msglibs/ultralightnode/ulnConnection/storage.fc +113 -6
  171. package/src/protocol/msglibs/ultralightnode/ulnConnection/utils.fc +6 -91
  172. package/src/protocol/msglibs/ultralightnode/ulnManager/handler.fc +55 -31
  173. package/src/protocol/msglibs/ultralightnode/workerFeeLibs/dvnFeeLib/handler.fc +13 -9
  174. package/src/protocol/msglibs/ultralightnode/workerFeeLibs/dvnFeeLib/storage.fc +23 -0
  175. package/src/protocol/msglibs/ultralightnode/workerFeeLibs/executorFeeLib/handler.fc +63 -27
  176. package/src/protocol/msglibs/ultralightnode/workerFeeLibs/executorFeeLib/storage.fc +19 -0
  177. package/src/protocol/msglibs/ultralightnode/workerFeeLibs/priceFeedFeeLib/storage.fc +55 -6
  178. package/src/workers/core/abstract/workerHandler.fc +20 -19
  179. package/src/workers/core/interface.fc +2 -1
  180. package/src/workers/core/workerCoreStorage.fc +16 -1
  181. package/src/workers/dvn/handler.fc +67 -26
  182. package/src/workers/dvn/storage.fc +15 -2
  183. package/src/workers/executor/handler.fc +18 -6
  184. package/src/workers/executor/interface.fc +1 -0
  185. package/src/workers/executor/storage.fc +8 -1
  186. package/src/workers/msgdata/DropEvent.fc +18 -0
  187. package/src/workers/msgdata/ExecuteParams.fc +66 -3
  188. package/src/workers/msgdata/NativeDrop.fc +4 -0
  189. package/src/workers/msgdata/SetDict.fc +6 -4
  190. package/src/workers/msgdata/SetQuorum.fc +4 -2
  191. package/src/workers/msgdata/SignedRequest.fc +8 -0
  192. package/src/workers/priceFeedCache/handler.fc +21 -27
  193. package/src/workers/priceFeedCache/storage.fc +16 -1
  194. package/src/workers/proxy/handler.fc +2 -1
  195. package/src/workers/proxy/storage.fc +1 -1
  196. package/tests/baseContractTest.fc +2 -6
  197. package/tests/baseSerdeTest.fc +117 -0
  198. package/tests/testMain.fc +2 -2
  199. package/src/classes/msgdata/Amount.fc +0 -16
  200. package/src/funC++/actions/destroy.fc +0 -27
@@ -108,69 +108,155 @@ cell UlnReceiveConfig::NewWithDefaults() inline method_id {
108
108
  );
109
109
  }
110
110
 
111
- int UlnReceiveConfig::utils::getConfirmations(
111
+ ;; ========================== Object getters ===========================
112
+
113
+ const int UlnReceiveConfig::_minCommitPacketGasNullOffset = _HEADER_WIDTH;
114
+ const int UlnReceiveConfig::_minCommitPacketGasOffset = UlnReceiveConfig::_minCommitPacketGasNullOffset + 1;
115
+ const int UlnReceiveConfig::_confirmationsNullOffset = UlnReceiveConfig::_minCommitPacketGasOffset + 32;
116
+ const int UlnReceiveConfig::_confirmationsOffset = UlnReceiveConfig::_confirmationsNullOffset + 1;
117
+ const int UlnReceiveConfig::_requiredDVNsNullOffset = UlnReceiveConfig::_confirmationsOffset + 64;
118
+ const int UlnReceiveConfig::_optionalDVNsNullOffset = UlnReceiveConfig::_requiredDVNsNullOffset + 1;
119
+ const int UlnReceiveConfig::_optionalDVNThresholdOffset = UlnReceiveConfig::_optionalDVNsNullOffset + 1;
120
+
121
+
122
+ int UlnReceiveConfig::getMinCommitPacketGas(cell $self) impure inline {
123
+ return $self.cellPreloadUint32At(UlnReceiveConfig::_minCommitPacketGasOffset);
124
+ }
125
+
126
+ int UlnReceiveConfig::getConfirmationsNull(cell $self) impure inline {
127
+ return $self.cellPreloadBoolAt(UlnReceiveConfig::_confirmationsNullOffset);
128
+ }
129
+
130
+ int UlnReceiveConfig::getConfirmations(cell $self) impure inline {
131
+ return $self.cellPreloadUint64At(UlnReceiveConfig::_confirmationsOffset);
132
+ }
133
+
134
+ int UlnReceiveConfig::getOptionalDVNThreshold(cell $self) impure inline {
135
+ return $self.cellPreloadUint8At(UlnReceiveConfig::_optionalDVNThresholdOffset);
136
+ }
137
+
138
+ ;; ========================== Object multi - getters ======================
139
+
140
+ (int, cell) UlnReceiveConfig::getRequiredDVNsAndNull(cell $self) impure inline {
141
+ slice selfSlice = $self.begin_parse();
142
+ return (
143
+ selfSlice.preloadBoolAt(UlnReceiveConfig::_requiredDVNsNullOffset),
144
+ selfSlice.preloadRefAt(0)
145
+ );
146
+ }
147
+
148
+ (int, cell) UlnReceiveConfig::getOptionalDVNsAndNull(cell $self) impure inline {
149
+ slice selfSlice = $self.begin_parse();
150
+ return (
151
+ selfSlice.preloadBoolAt(UlnReceiveConfig::_optionalDVNsNullOffset),
152
+ selfSlice.preloadRefAt(1)
153
+ );
154
+ }
155
+
156
+ ;; returns (requiredDVNsNull, requiredDVNs, optionalDVNsNull, optionalDVNs)
157
+ (int, cell, int, cell) UlnReceiveConfig::getRequiredAndOptionalDVNsAndNull(cell $self) impure inline {
158
+ slice selfSlice = $self.begin_parse();
159
+ return (
160
+ selfSlice.preloadBoolAt(UlnReceiveConfig::_requiredDVNsNullOffset),
161
+ selfSlice.preloadRefAt(0),
162
+ selfSlice.preloadBoolAt(UlnReceiveConfig::_optionalDVNsNullOffset),
163
+ selfSlice.preloadRefAt(1)
164
+ );
165
+ }
166
+
167
+ ;; (minCommitPacketGasNull, minCommitPacketGas, OptionalDvnNull, optionalDvnThreshold)
168
+ (int, int, int, int) UlnReceiveConfig::getCommitInfo(cell $self) impure inline {
169
+ slice $selfSlice = $self.begin_parse();
170
+ ;; Could save a bit of gas by using self-modifying parse but
171
+ ;; it makes the code a lot less readable
172
+ return (
173
+ $selfSlice.preloadBoolAt(UlnReceiveConfig::_minCommitPacketGasNullOffset),
174
+ $selfSlice.preloadUint32At(UlnReceiveConfig::_minCommitPacketGasOffset),
175
+ $selfSlice.preloadBoolAt(UlnReceiveConfig::_optionalDVNsNullOffset),
176
+ $selfSlice.preloadUint8At(UlnReceiveConfig::_optionalDVNThresholdOffset)
177
+ );
178
+ }
179
+
180
+ ;; ============== Object Utils ==============
181
+
182
+ int UlnReceiveConfig::utils::resolveConfirmations(
112
183
  cell $UlnReceiveConfig,
113
184
  cell $defaultUlnReceiveConfig
114
185
  ) impure inline {
115
- if ($UlnReceiveConfig.cl::get<bool>(UlnReceiveConfig::confirmationsNull)) {
116
- return $defaultUlnReceiveConfig.cl::get<uint64>(UlnReceiveConfig::confirmations);
186
+ if ($UlnReceiveConfig.UlnReceiveConfig::getConfirmationsNull()) {
187
+ return $defaultUlnReceiveConfig.UlnReceiveConfig::getConfirmations();
117
188
  }
118
- return $UlnReceiveConfig.cl::get<uint64>(UlnReceiveConfig::confirmations);
189
+ return $UlnReceiveConfig.UlnReceiveConfig::getConfirmations();
119
190
  }
120
191
 
192
+ ;; (requiredDVNs, optionalDVNs, isValid)
121
193
  (cell, cell, int) UlnReceiveConfig::utils::getVerifyConfig(
122
194
  cell $customUlnReceiveConfig,
123
195
  cell $defaultUlnReceiveConfig
124
196
  ) impure inline {
125
197
  int isValid = true;
126
198
 
127
- cell requiredDVNs = $customUlnReceiveConfig.cl::get<cellRef>(UlnReceiveConfig::requiredDVNs);
128
- cell optionalDVNs = $customUlnReceiveConfig.cl::get<cellRef>(UlnReceiveConfig::optionalDVNs);
129
-
130
- if ($customUlnReceiveConfig.cl::get<bool>(UlnReceiveConfig::requiredDVNsNull)) {
131
- isValid &= ($defaultUlnReceiveConfig.cl::get<bool>(UlnReceiveConfig::requiredDVNsNull) == false);
132
- requiredDVNs = $defaultUlnReceiveConfig.cl::get<cellRef>(UlnReceiveConfig::requiredDVNs);
199
+ (
200
+ int customRequiredDVNsNull,
201
+ cell requiredDVNs,
202
+ int customOptionalDVNsNull,
203
+ cell optionalDVNs
204
+ ) = UlnReceiveConfig::getRequiredAndOptionalDVNsAndNull($customUlnReceiveConfig);
205
+
206
+ if (customRequiredDVNsNull) {
207
+ (
208
+ int defaultRequiredDVNsNull,
209
+ requiredDVNs
210
+ ) = UlnReceiveConfig::getRequiredDVNsAndNull($defaultUlnReceiveConfig);
211
+ isValid &= (defaultRequiredDVNsNull == false);
133
212
  }
134
213
 
135
- if ($customUlnReceiveConfig.cl::get<bool>(UlnReceiveConfig::optionalDVNsNull)) {
136
- isValid &= ($defaultUlnReceiveConfig.cl::get<bool>(UlnReceiveConfig::optionalDVNsNull) == false);
137
- optionalDVNs = $defaultUlnReceiveConfig.cl::get<cellRef>(UlnReceiveConfig::optionalDVNs);
214
+ if (customOptionalDVNsNull) {
215
+ (
216
+ int defaultOptionalDVNsNull,
217
+ optionalDVNs
218
+ ) = UlnReceiveConfig::getOptionalDVNsAndNull($defaultUlnReceiveConfig);
219
+ isValid &= (defaultOptionalDVNsNull == false);
138
220
  }
139
221
 
140
222
  return (requiredDVNs, optionalDVNs, isValid);
141
223
  }
142
224
 
225
+ ;; (requiredDVNs, optionalDVNs, optionalDVNThreshold, confirmations, commitPacketGas, isValid)
143
226
  (cell, cell, int, int, int, int) UlnReceiveConfig::utils::getCommitConfig(
144
227
  cell $customUlnReceiveConfig,
145
228
  cell $defaultUlnReceiveConfig
146
- ) inline method_id {
147
- (cell $requiredDVNs, cell $optionalDVNs, int isValid) = UlnReceiveConfig::utils::getVerifyConfig(
229
+ ) impure inline method_id {
230
+ (
231
+ cell requiredDVNs,
232
+ cell optionalDVNs,
233
+ int isValid
234
+ ) = UlnReceiveConfig::utils::getVerifyConfig(
148
235
  $customUlnReceiveConfig,
149
236
  $defaultUlnReceiveConfig
150
237
  );
151
238
 
152
- int optionalDVNThreshold = $customUlnReceiveConfig
153
- .cl::get<uint8>(UlnReceiveConfig::optionalDVNThreshold);
154
- int commitPacketGas = $customUlnReceiveConfig
155
- .cl::get<uint32>(UlnReceiveConfig::minCommitPacketGas);
156
-
239
+ (
240
+ int minCommitPacketGasNull,
241
+ int commitPacketGas,
242
+ int optionalDVNsNull,
243
+ int optionalDVNThreshold
244
+ ) = UlnReceiveConfig::getCommitInfo($customUlnReceiveConfig);
157
245
 
158
- if ($customUlnReceiveConfig.cl::get<bool>(UlnReceiveConfig::optionalDVNsNull)) {
159
- optionalDVNThreshold = $defaultUlnReceiveConfig
160
- .cl::get<uint8>(UlnReceiveConfig::optionalDVNThreshold);
246
+ if (optionalDVNsNull) {
247
+ optionalDVNThreshold = $defaultUlnReceiveConfig.UlnReceiveConfig::getOptionalDVNThreshold();
161
248
  }
162
249
 
163
- if ($customUlnReceiveConfig.cl::get<bool>(UlnReceiveConfig::minCommitPacketGasNull)) {
164
- commitPacketGas = $defaultUlnReceiveConfig
165
- .cl::get<uint32>(UlnReceiveConfig::minCommitPacketGas);
250
+ if (minCommitPacketGasNull) {
251
+ commitPacketGas = $defaultUlnReceiveConfig.UlnReceiveConfig::getMinCommitPacketGas();
166
252
  }
167
253
 
168
- int confirmations = UlnReceiveConfig::utils::getConfirmations(
254
+ int confirmations = UlnReceiveConfig::utils::resolveConfirmations(
169
255
  $customUlnReceiveConfig,
170
256
  $defaultUlnReceiveConfig
171
257
  );
172
258
 
173
- return ($requiredDVNs, $optionalDVNs, optionalDVNThreshold, confirmations, commitPacketGas, isValid);
259
+ return (requiredDVNs, optionalDVNs, optionalDVNThreshold, confirmations, commitPacketGas, isValid);
174
260
  }
175
261
 
176
262
  ;; Ensure the Uln receive config does not contain garbage bits etc. that would cause
@@ -24,4 +24,54 @@ cell md::UlnSend::New(
24
24
  [cl::t::address, forwardingAddress] ;; md::UlnSend::forwardingAddress
25
25
  ])
26
26
  );
27
- }
27
+ }
28
+
29
+ ;; ==================================== Object Builders =============================
30
+
31
+ const int md::UlnSend::_headerInfoBits = _BASIC_HEADER_WIDTH + (_FIELD_INFO_WIDTH * 4);
32
+ const int md::UlnSend::_headerFillerBits = _HEADER_WIDTH - md::UlnSend::_headerInfoBits;
33
+ const int md::UlnSend::_headerInfo = 113547385374824943747209776028946924923;
34
+
35
+ cell md::UlnSend::build(
36
+ cell $lzSend,
37
+ cell $customUlnSendConfig,
38
+ cell $connectionInitialStorage,
39
+ int forwardingAddress
40
+ ) impure inline method_id {
41
+ return begin_cell()
42
+ .store_uint(md::UlnSend::_headerInfo, md::UlnSend::_headerInfoBits) ;; header info
43
+ .store_ones(md::UlnSend::_headerFillerBits) ;; header filler
44
+ .store_uint256(forwardingAddress) ;; numerical field
45
+ .store_ref($lzSend) ;; refs[0]
46
+ .store_ref($customUlnSendConfig) ;; refs[1]
47
+ .store_ref(
48
+ begin_cell()
49
+ .store_ref($connectionInitialStorage) ;; refs[2]
50
+ .end_cell()
51
+ )
52
+ .end_cell();
53
+ }
54
+
55
+
56
+ ;; ==================================== Object Getters =============================
57
+
58
+ const int md::UlnSend::_forwardingAddressOffset = _HEADER_WIDTH;
59
+
60
+ cell md::UlnSend::getConnectionInitialStorage(cell $self) impure inline {
61
+ return $self.cellPreloadRefAt(2).cellPreloadRefAt(0);
62
+ }
63
+
64
+ int md::UlnSend::getForwardingAddress(cell $self) impure inline {
65
+ return $self.cellPreloadAddressAt(md::UlnSend::_forwardingAddressOffset);
66
+ }
67
+
68
+ ;; ==================================== Object Multi-Getters =============================
69
+
70
+ (cell, cell) md::UlnSend::getLzSendAndCustomUlnSendConfig(cell $self) impure inline {
71
+ slice selfSlice = $self.begin_parse();
72
+ return (
73
+ selfSlice~load_ref(),
74
+ selfSlice~load_ref()
75
+ );
76
+ }
77
+
@@ -137,7 +137,7 @@ cell UlnSendConfig::NewWithDefaults() impure method_id {
137
137
 
138
138
  ;; Ensure the Uln send config does not contain garbage bits etc. that would cause
139
139
  ;; undefined behaviors in the protocol
140
- cell UlnSendConfig::sanitize(cell $ulnSendConfig) impure inline_ref {
140
+ cell UlnSendConfig::sanitize(cell $ulnSendConfig) impure {
141
141
  int workerQuoteGasLimit = $ulnSendConfig.cl::get<uint32>(UlnSendConfig::workerQuoteGasLimit);
142
142
  int maxMessageBytes = $ulnSendConfig.cl::get<uint32>(UlnSendConfig::maxMessageBytes);
143
143
  int useDefaultExecutor = $ulnSendConfig.cl::get<bool>(UlnSendConfig::executorNull);
@@ -18,4 +18,14 @@ cell md::UlnVerification::New(int nonce, int hash, int confirmations) inline met
18
18
  )] ;; md::UlnVerification::attestation
19
19
  ])
20
20
  );
21
+ }
22
+
23
+ ;; ==================================== Object Getters =============================
24
+ const int md::UlnVerification::_nonceOffset = _HEADER_WIDTH;
25
+
26
+ (int, cell) md::UlnVerification::deserialize(cell $self) impure inline {
27
+ return (
28
+ $self.cellPreloadUint64At(md::UlnVerification::_nonceOffset),
29
+ $self.cellPreloadRefAt(0)
30
+ );
21
31
  }
@@ -13,4 +13,10 @@ cell md::UlnWorkerFeelibBytecode::New(cell bytecode) inline method_id {
13
13
  [cl::t::cellRef, bytecode] ;; md::UlnWorkerFeelibBytecode::nonce
14
14
  ])
15
15
  );
16
+ }
17
+
18
+ cell md::UlnWorkerFeelibBytecode::sanitize(cell $ulnWorkerFeelibBytecode) impure inline_ref {
19
+ cell bytecode = $ulnWorkerFeelibBytecode.cl::get<cellRef>(md::UlnWorkerFeelibBytecode::bytecode);
20
+
21
+ return md::UlnWorkerFeelibBytecode::New(bytecode);
16
22
  }
@@ -40,7 +40,57 @@ cell UlnWorkerFeelibInfo::New(
40
40
  );
41
41
  }
42
42
 
43
- cell UlnWorkerFeelibInfo::sanitize(cell $ulnWorkerFeelibInfo) {
43
+ ;; ==================================== Object Getters =============================
44
+
45
+ const int UlnWorkerFeelibInfo::_workerAddressOffset = _HEADER_WIDTH;
46
+ const int UlnWorkerFeelibInfo::_friendWorkerAddressOffset = UlnWorkerFeelibInfo::_workerAddressOffset + 256;
47
+ const int UlnWorkerFeelibInfo::_dstEidOffset = UlnWorkerFeelibInfo::_friendWorkerAddressOffset + 256;
48
+ const int UlnWorkerFeelibInfo::_rentBalanceOffset = UlnWorkerFeelibInfo::_dstEidOffset + 32;
49
+
50
+ const int UlnWorkerFeelibInfo::_rootSliceBits = UlnWorkerFeelibInfo::_rentBalanceOffset + 128;
51
+
52
+ int UlnWorkerFeelibInfo::getWorkerAddress(cell $self) impure inline {
53
+ return $self.cellPreloadAddressAt(UlnWorkerFeelibInfo::_workerAddressOffset);
54
+ }
55
+
56
+ cell UlnWorkerFeelibInfo::getWorkerFeeLibStorage(cell $self) impure inline {
57
+ return $self.cellPreloadRefAt(1);
58
+ }
59
+
60
+ ;; ==================================== Object Multi-Getters =============================
61
+
62
+ ;; (friendAddress, feelibStorage, feelibByteCode)
63
+ (int, cell, cell) UlnWorkerFeelibInfo::getQuoteWorkerInformation(cell $self) impure inline {
64
+ slice selfSlice = $self.begin_parse();
65
+ return (
66
+ selfSlice.preloadAddressAt(UlnWorkerFeelibInfo::_friendWorkerAddressOffset),
67
+ selfSlice.preloadRefAt(1),
68
+ selfSlice.preloadRefAt(0)
69
+ );
70
+ }
71
+
72
+ ;; ==================================== Object Setters =============================
73
+
74
+ cell UlnWorkerFeelibInfo::setWorkerFeeLibBytecode(cell $self, cell $workerFeeLibBytecode) impure inline {
75
+ slice selfSlice = $self.begin_parse();
76
+
77
+ return begin_cell()
78
+ .store_ref($workerFeeLibBytecode) ;; replace ref[0] with the new workerFeeLibBytecode
79
+ .store_slice(selfSlice.sskipfirst(0, 1)) ;; store the rest of the fields
80
+ .end_cell();
81
+ }
82
+
83
+ cell UlnWorkerFeelibInfo::setWorkerFeeLibStorage(cell $self, cell $workerFeeLibStorage) impure inline {
84
+ slice selfSlice = $self.begin_parse();
85
+
86
+ return begin_cell()
87
+ .store_slice(selfSlice.scutfirst(UlnWorkerFeelibInfo::_rootSliceBits, 1)) ;; store every bit in root and ref[0]
88
+ .store_ref($workerFeeLibStorage) ;; replace ref[1] with the new workerFeeLibStorage
89
+ .store_slice(selfSlice.scutlast(0, 1)) ;; store ref[2]
90
+ .end_cell();
91
+ }
92
+
93
+ cell UlnWorkerFeelibInfo::sanitize(cell $ulnWorkerFeelibInfo) impure {
44
94
  return UlnWorkerFeelibInfo::New(
45
95
  $ulnWorkerFeelibInfo.cl::get<address>(UlnWorkerFeelibInfo::workerAddress),
46
96
  $ulnWorkerFeelibInfo.cl::get<cellRef>(UlnWorkerFeelibInfo::workerFeelibBytecode),
@@ -15,4 +15,19 @@ cell md::VerificationStatus::New(int nonce, int status) inline method_id {
15
15
  [cl::t::uint32, status] ;; md::VerificationStatus::status
16
16
  ])
17
17
  );
18
+ }
19
+
20
+ ;; ==================================== Object Builders =============================
21
+
22
+ const int md::VerificationStatus::_headerInfoBits = _BASIC_HEADER_WIDTH + (_FIELD_INFO_WIDTH * 2);
23
+ const int md::VerificationStatus::_headerFillerBits = _HEADER_WIDTH - md::VerificationStatus::_headerInfoBits;
24
+ const int md::VerificationStatus::_headerInfo = 38421788582694199859296615363593851;
25
+
26
+ cell md::VerificationStatus::build(int nonce, int status) impure inline method_id {
27
+ return begin_cell()
28
+ .store_uint(md::VerificationStatus::_headerInfo, md::VerificationStatus::_headerInfoBits) ;; header info
29
+ .store_ones(md::VerificationStatus::_headerFillerBits) ;; header filler
30
+ .store_uint64(nonce) ;; nonce
31
+ .store_uint32(status) ;; status
32
+ .end_cell();
18
33
  }