@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.
- package/CHANGELOG.md +12 -0
- package/build/ActionsSerde.test.compiled.json +1 -0
- package/build/AllStorages.compiled.json +1 -1
- package/build/AllStorages.test.compiled.json +1 -1
- package/build/BaseContract.test.compiled.json +1 -1
- package/build/Channel.compiled.json +1 -1
- package/build/Channel.permissions.test.compiled.json +1 -1
- package/build/ChannelBurn.test.compiled.json +1 -1
- package/build/ChannelCommitPacket.test.compiled.json +1 -1
- package/build/ChannelConfig.test.compiled.json +1 -1
- package/build/ChannelInitialize.test.compiled.json +1 -1
- package/build/ChannelMsglibIntegration.test.compiled.json +1 -1
- package/build/ChannelMsglibSendCallback.test.compiled.json +1 -1
- package/build/ChannelNilify.test.compiled.json +1 -1
- package/build/ChannelReceive.test.compiled.json +1 -1
- package/build/ChannelReceiveCallback.test.compiled.json +1 -1
- package/build/ChannelReceiveView.test.compiled.json +1 -1
- package/build/ChannelSend.test.compiled.json +1 -1
- package/build/ChannelSerde.test.compiled.json +1 -0
- package/build/Classlib.test.compiled.json +1 -1
- package/build/ComputeDataSizeGas.test.compiled.json +1 -1
- package/build/Connection.compiled.json +1 -1
- package/build/Controller.assertions.test.compiled.json +1 -1
- package/build/Controller.compiled.json +1 -1
- package/build/Controller.permissions.test.compiled.json +1 -1
- package/build/Controller.test.compiled.json +1 -1
- package/build/Counter.compiled.json +1 -1
- package/build/Counter.permissions.test.compiled.json +1 -1
- package/build/Counter.setters.test.compiled.json +1 -1
- package/build/Counter.test.compiled.json +1 -1
- package/build/Dvn.compiled.json +1 -1
- package/build/Dvn.test.compiled.json +1 -1
- package/build/DvnFeeLib.compiled.json +1 -1
- package/build/DvnFeeLibSerde.test.compiled.json +1 -0
- package/build/DvnPermissions.test.compiled.json +1 -1
- package/build/DvnSerde.test.compiled.json +1 -0
- package/build/Endpoint.compiled.json +1 -1
- package/build/Endpoint.permissions.test.compiled.json +1 -1
- package/build/Endpoint.test.compiled.json +1 -1
- package/build/EndpointSerde.test.compiled.json +1 -0
- package/build/EndpointSetEpConfigDefaults.test.compiled.json +1 -1
- package/build/Executor.compiled.json +1 -1
- package/build/Executor.test.compiled.json +1 -1
- package/build/ExecutorFeeLib.compiled.json +1 -1
- package/build/ExecutorFeeLibSerde.test.compiled.json +1 -0
- package/build/ExecutorPermissions.test.compiled.json +1 -1
- package/build/ExecutorSerde.test.compiled.json +1 -0
- package/build/LzClasses.test.compiled.json +1 -1
- package/build/LzClassesSerde.test.compiled.json +1 -0
- package/build/LzUtil.test.compiled.json +1 -1
- package/build/MsgData.test.compiled.json +1 -1
- package/build/MsgDataSerde.test.compiled.json +1 -0
- package/build/MsglibPacketCodec.test.compiled.json +1 -1
- package/build/PipelinedOutOfOrder.test.compiled.json +1 -1
- package/build/PipelinedOutOfOrderSerde.test.compiled.json +1 -0
- package/build/PriceFeedCache.compiled.json +1 -1
- package/build/PriceFeedCache.test.compiled.json +1 -1
- package/build/PriceFeedCache.test.permissions.compiled.json +1 -1
- package/build/PriceFeedCacheSerde.test.compiled.json +1 -0
- package/build/PriceFeedFeeLibSerde.test.compiled.json +1 -0
- package/build/Proxy.compiled.json +1 -1
- package/build/Proxy.permissions.test.compiled.json +1 -1
- package/build/Proxy.test.compiled.json +1 -1
- package/build/SmlConnection.compiled.json +1 -1
- package/build/SmlConnection.permissions.test.compiled.json +1 -1
- package/build/SmlConnection.test.compiled.json +1 -1
- package/build/SmlManager.compiled.json +1 -1
- package/build/SmlManager.permissions.test.compiled.json +1 -1
- package/build/SmlManager.test.compiled.json +1 -1
- package/build/Uln.compiled.json +1 -1
- package/build/Uln.test.compiled.json +1 -1
- package/build/UlnConnection.compiled.json +1 -1
- package/build/UlnConnection.test.compiled.json +1 -1
- package/build/UlnConnectionPermissions.test.compiled.json +1 -1
- package/build/UlnConnectionSerde.test.compiled.json +1 -0
- package/build/UlnManagement.test.compiled.json +1 -1
- package/build/UlnManager.compiled.json +1 -1
- package/build/UlnManager.test.compiled.json +1 -1
- package/build/UlnManagerPermissions.test.compiled.json +1 -1
- package/build/UlnManagerUtil.test.compiled.json +1 -1
- package/build/UlnMsgDataSerde.test.compiled.json +1 -0
- package/build/UlnPermissions.test.compiled.json +1 -1
- package/build/UlnReceiveConfig.test.compiled.json +1 -1
- package/build/UlnSend.test.compiled.json +1 -1
- package/build/UlnSendConfig.test.compiled.json +1 -1
- package/build/UlnSendWithDvnFeeLib.test.compiled.json +1 -1
- package/build/UlnSendWithExecFeeLib.test.compiled.json +1 -1
- package/build/UlnSendWorkerFactory.test.compiled.json +1 -1
- package/build/UlnSerde.test.compiled.json +1 -0
- package/build/UlnUtil.test.compiled.json +1 -1
- package/build/WorkerCore.test.compiled.json +1 -1
- package/build/WorkerCoreMsgDataSerde.test.compiled.json +1 -0
- package/build/WorkerCoreSerde.test.compiled.json +1 -0
- package/build/badFeeLib1.test.compiled.json +1 -1
- package/build/badFeeLib10.test.compiled.json +1 -1
- package/build/badFeeLib11.test.compiled.json +1 -1
- package/build/badFeeLib12.test.compiled.json +1 -1
- package/build/badFeeLib2.test.compiled.json +1 -1
- package/build/badFeeLib3.test.compiled.json +1 -1
- package/build/badFeeLib4.test.compiled.json +1 -1
- package/build/badFeeLib5.test.compiled.json +1 -1
- package/build/badFeeLib6.test.compiled.json +1 -1
- package/build/badFeeLib7.test.compiled.json +1 -1
- package/build/badFeeLib8.test.compiled.json +1 -1
- package/build/badFeeLib9.test.compiled.json +1 -1
- package/package.json +2 -1
- package/src/classes/lz/EpConfig.fc +90 -23
- package/src/classes/lz/MsglibInfo.fc +32 -5
- package/src/classes/lz/Packet.fc +109 -48
- package/src/classes/lz/Path.fc +55 -4
- package/src/classes/lz/ReceiveEpConfig.fc +36 -5
- package/src/classes/lz/SendEpConfig.fc +55 -5
- package/src/classes/msgdata/AddMsglib.fc +11 -0
- package/src/classes/msgdata/ChannelNonceInfo.fc +20 -0
- package/src/classes/msgdata/CoinsAmount.fc +8 -0
- package/src/classes/msgdata/Deploy.fc +19 -0
- package/src/classes/msgdata/ExtendedMd.fc +52 -1
- package/src/classes/msgdata/LzReceivePrepare.fc +21 -1
- package/src/classes/msgdata/LzReceiveStatus.fc +72 -1
- package/src/classes/msgdata/LzSend.fc +143 -24
- package/src/classes/msgdata/MdAddress.fc +42 -0
- package/src/classes/msgdata/MdEid.fc +8 -0
- package/src/classes/msgdata/MdObj.fc +32 -0
- package/src/classes/msgdata/MessagingReceipt.fc +34 -1
- package/src/classes/msgdata/MsglibSendCallback.fc +82 -0
- package/src/classes/msgdata/Nonce.fc +30 -0
- package/src/classes/msgdata/OptionsV1.fc +21 -1
- package/src/classes/msgdata/OptionsV2.fc +27 -0
- package/src/classes/msgdata/PacketId.fc +24 -0
- package/src/classes/msgdata/PacketSent.fc +35 -1
- package/src/classes/msgdata/SetAddress.fc +7 -0
- package/src/classes/msgdata/SetEpConfig.fc +17 -0
- package/src/funC++/actions/event.fc +17 -2
- package/src/funC++/actions/utils.fc +2 -2
- package/src/funC++/classlib.fc +33 -43
- package/src/funC++/constants.fc +28 -28
- package/src/funC++/dataStructures/PipelinedOutOfOrder.fc +75 -59
- package/src/funC++/stdlib.fc +26 -11
- package/src/funC++/testutils.fc +2 -2
- package/src/funC++/txnContext.fc +14 -14
- package/src/funC++/utils.fc +97 -1
- package/src/protocol/channel/handler.fc +247 -189
- package/src/protocol/channel/storage.fc +206 -1
- package/src/protocol/controller/handler.fc +35 -17
- package/src/protocol/controller/main.fc +1 -1
- package/src/protocol/core/abstract/protocolHandler.fc +11 -21
- package/src/protocol/core/baseStorage.fc +24 -0
- package/src/protocol/endpoint/handler.fc +99 -57
- package/src/protocol/endpoint/storage.fc +69 -5
- package/src/protocol/msglibs/BytesEncoder.fc +11 -10
- package/src/protocol/msglibs/simpleMsglib/smlManager/handler.fc +1 -4
- package/src/protocol/msglibs/ultralightnode/feeLibInterface.fc +1 -0
- package/src/protocol/msglibs/ultralightnode/msgdata/Attestation.fc +7 -8
- package/src/protocol/msglibs/ultralightnode/msgdata/DvnFeesPaidEvent.fc +20 -0
- package/src/protocol/msglibs/ultralightnode/msgdata/ExecutorFeePaidEvent.fc +15 -0
- package/src/protocol/msglibs/ultralightnode/msgdata/InitUln.fc +1 -1
- package/src/protocol/msglibs/ultralightnode/msgdata/InitUlnConnection.fc +1 -1
- package/src/protocol/msglibs/ultralightnode/msgdata/SetAdminWorkerAddresses.fc +6 -0
- package/src/protocol/msglibs/ultralightnode/msgdata/UlnEvents.fc +20 -0
- package/src/protocol/msglibs/ultralightnode/msgdata/UlnReceiveConfig.fc +114 -28
- package/src/protocol/msglibs/ultralightnode/msgdata/UlnSend.fc +51 -1
- package/src/protocol/msglibs/ultralightnode/msgdata/UlnSendConfig.fc +1 -1
- package/src/protocol/msglibs/ultralightnode/msgdata/UlnVerification.fc +10 -0
- package/src/protocol/msglibs/ultralightnode/msgdata/UlnWorkerFeelibBytecode.fc +6 -0
- package/src/protocol/msglibs/ultralightnode/msgdata/UlnWorkerFeelibInfo.fc +51 -1
- package/src/protocol/msglibs/ultralightnode/msgdata/VerificationStatus.fc +15 -0
- package/src/protocol/msglibs/ultralightnode/uln/handler.fc +84 -107
- package/src/protocol/msglibs/ultralightnode/uln/storage.fc +77 -1
- package/src/protocol/msglibs/ultralightnode/ulnConnection/handler.fc +92 -66
- package/src/protocol/msglibs/ultralightnode/ulnConnection/storage.fc +113 -6
- package/src/protocol/msglibs/ultralightnode/ulnConnection/utils.fc +6 -91
- package/src/protocol/msglibs/ultralightnode/ulnManager/handler.fc +55 -31
- package/src/protocol/msglibs/ultralightnode/workerFeeLibs/dvnFeeLib/handler.fc +13 -9
- package/src/protocol/msglibs/ultralightnode/workerFeeLibs/dvnFeeLib/storage.fc +23 -0
- package/src/protocol/msglibs/ultralightnode/workerFeeLibs/executorFeeLib/handler.fc +63 -27
- package/src/protocol/msglibs/ultralightnode/workerFeeLibs/executorFeeLib/storage.fc +19 -0
- package/src/protocol/msglibs/ultralightnode/workerFeeLibs/priceFeedFeeLib/storage.fc +55 -6
- package/src/workers/core/abstract/workerHandler.fc +20 -19
- package/src/workers/core/interface.fc +2 -1
- package/src/workers/core/workerCoreStorage.fc +16 -1
- package/src/workers/dvn/handler.fc +67 -26
- package/src/workers/dvn/storage.fc +15 -2
- package/src/workers/executor/handler.fc +18 -6
- package/src/workers/executor/interface.fc +1 -0
- package/src/workers/executor/storage.fc +8 -1
- package/src/workers/msgdata/DropEvent.fc +18 -0
- package/src/workers/msgdata/ExecuteParams.fc +66 -3
- package/src/workers/msgdata/NativeDrop.fc +4 -0
- package/src/workers/msgdata/SetDict.fc +6 -4
- package/src/workers/msgdata/SetQuorum.fc +4 -2
- package/src/workers/msgdata/SignedRequest.fc +8 -0
- package/src/workers/priceFeedCache/handler.fc +21 -27
- package/src/workers/priceFeedCache/storage.fc +16 -1
- package/src/workers/proxy/handler.fc +2 -1
- package/src/workers/proxy/storage.fc +1 -1
- package/tests/baseContractTest.fc +2 -6
- package/tests/baseSerdeTest.fc +117 -0
- package/tests/testMain.fc +2 -2
- package/src/classes/msgdata/Amount.fc +0 -16
- 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
|
-
|
|
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.
|
|
116
|
-
return $defaultUlnReceiveConfig.
|
|
186
|
+
if ($UlnReceiveConfig.UlnReceiveConfig::getConfirmationsNull()) {
|
|
187
|
+
return $defaultUlnReceiveConfig.UlnReceiveConfig::getConfirmations();
|
|
117
188
|
}
|
|
118
|
-
return $UlnReceiveConfig.
|
|
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
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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 (
|
|
136
|
-
|
|
137
|
-
|
|
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
|
-
(
|
|
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
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
239
|
+
(
|
|
240
|
+
int minCommitPacketGasNull,
|
|
241
|
+
int commitPacketGas,
|
|
242
|
+
int optionalDVNsNull,
|
|
243
|
+
int optionalDVNThreshold
|
|
244
|
+
) = UlnReceiveConfig::getCommitInfo($customUlnReceiveConfig);
|
|
157
245
|
|
|
158
|
-
if (
|
|
159
|
-
optionalDVNThreshold = $defaultUlnReceiveConfig
|
|
160
|
-
.cl::get<uint8>(UlnReceiveConfig::optionalDVNThreshold);
|
|
246
|
+
if (optionalDVNsNull) {
|
|
247
|
+
optionalDVNThreshold = $defaultUlnReceiveConfig.UlnReceiveConfig::getOptionalDVNThreshold();
|
|
161
248
|
}
|
|
162
249
|
|
|
163
|
-
if (
|
|
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::
|
|
254
|
+
int confirmations = UlnReceiveConfig::utils::resolveConfirmations(
|
|
169
255
|
$customUlnReceiveConfig,
|
|
170
256
|
$defaultUlnReceiveConfig
|
|
171
257
|
);
|
|
172
258
|
|
|
173
|
-
return (
|
|
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
|
|
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
|
-
|
|
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
|
}
|