@layerzerolabs/layerzero-v2-ton 3.0.13-ton.0 → 3.0.18-ton.1

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 (239) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/build/AllStorages.compiled.json +1 -1
  3. package/build/AllStorages.test.compiled.json +1 -1
  4. package/build/BaseContract.test.compiled.json +1 -1
  5. package/build/Channel.compiled.json +1 -1
  6. package/build/Channel.permissions.test.compiled.json +1 -1
  7. package/build/ChannelBurn.test.compiled.json +1 -1
  8. package/build/ChannelCommitPacket.test.compiled.json +1 -1
  9. package/build/ChannelConfig.test.compiled.json +1 -1
  10. package/build/ChannelInitialize.test.compiled.json +1 -1
  11. package/build/ChannelMsglibIntegration.test.compiled.json +1 -1
  12. package/build/ChannelMsglibSendCallback.test.compiled.json +1 -1
  13. package/build/ChannelNilify.test.compiled.json +1 -1
  14. package/build/ChannelReceive.test.compiled.json +1 -1
  15. package/build/ChannelReceiveCallback.test.compiled.json +1 -1
  16. package/build/ChannelReceiveView.test.compiled.json +1 -1
  17. package/build/ChannelSend.test.compiled.json +1 -1
  18. package/build/Classlib.test.compiled.json +1 -1
  19. package/build/ComputeDataSizeGas.test.compiled.json +1 -0
  20. package/build/Connection.compiled.json +1 -1
  21. package/build/Controller.assertions.test.compiled.json +1 -1
  22. package/build/Controller.compiled.json +1 -1
  23. package/build/Controller.permissions.test.compiled.json +1 -1
  24. package/build/Controller.test.compiled.json +1 -1
  25. package/build/Counter.compiled.json +1 -1
  26. package/build/Counter.permissions.test.compiled.json +1 -1
  27. package/build/Counter.setters.test.compiled.json +1 -1
  28. package/build/Counter.test.compiled.json +1 -1
  29. package/build/Dvn.compiled.json +1 -1
  30. package/build/Dvn.test.compiled.json +1 -1
  31. package/build/DvnFeeLib.compiled.json +1 -0
  32. package/build/DvnPermissions.test.compiled.json +1 -0
  33. package/build/Endpoint.compiled.json +1 -1
  34. package/build/Endpoint.permissions.test.compiled.json +1 -1
  35. package/build/Endpoint.test.compiled.json +1 -1
  36. package/build/EndpointSetEpConfigDefaults.test.compiled.json +1 -1
  37. package/build/Executor.compiled.json +1 -1
  38. package/build/Executor.test.compiled.json +1 -1
  39. package/build/ExecutorFeeLib.compiled.json +1 -0
  40. package/build/ExecutorPermissions.test.compiled.json +1 -0
  41. package/build/LzClasses.test.compiled.json +1 -1
  42. package/build/LzUtil.test.compiled.json +1 -1
  43. package/build/MsgData.test.compiled.json +1 -1
  44. package/build/MsglibPacketCodec.test.compiled.json +1 -1
  45. package/build/MultiSig.compiled.json +1 -1
  46. package/build/MultiSigOrder.compiled.json +1 -1
  47. package/build/PipelinedOutOfOrder.test.compiled.json +1 -1
  48. package/build/PriceFeedCache.compiled.json +1 -0
  49. package/build/PriceFeedCache.permissions.test.compiled.json +1 -0
  50. package/build/PriceFeedCache.test.compiled.json +1 -0
  51. package/build/PriceFeedFeeLib.compiled.json +1 -0
  52. package/build/Proxy.compiled.json +1 -0
  53. package/build/Proxy.permissions.test.compiled.json +1 -0
  54. package/build/Proxy.test.compiled.json +1 -0
  55. package/build/SmlConnection.compiled.json +1 -1
  56. package/build/SmlConnection.permissions.test.compiled.json +1 -1
  57. package/build/SmlConnection.test.compiled.json +1 -1
  58. package/build/SmlManager.compiled.json +1 -1
  59. package/build/SmlManager.permissions.test.compiled.json +1 -1
  60. package/build/SmlManager.test.compiled.json +1 -1
  61. package/build/Uln.compiled.json +1 -1
  62. package/build/Uln.test.compiled.json +1 -1
  63. package/build/UlnConnection.compiled.json +1 -0
  64. package/build/UlnConnection.test.compiled.json +1 -0
  65. package/build/UlnConnectionPermissions.test.compiled.json +1 -0
  66. package/build/UlnManagement.test.compiled.json +1 -0
  67. package/build/UlnManager.compiled.json +1 -1
  68. package/build/UlnManager.test.compiled.json +1 -1
  69. package/build/UlnManagerPermissions.test.compiled.json +1 -0
  70. package/build/UlnManagerUtil.test.compiled.json +1 -0
  71. package/build/UlnPermissions.test.compiled.json +1 -0
  72. package/build/UlnReceiveConfig.test.compiled.json +1 -1
  73. package/build/UlnSend.test.compiled.json +1 -1
  74. package/build/UlnSendConfig.test.compiled.json +1 -1
  75. package/build/UlnSendWithDvnFeeLib.test.compiled.json +1 -0
  76. package/build/UlnSendWithExecFeeLib.test.compiled.json +1 -0
  77. package/build/UlnSendWorkerFactory.test.compiled.json +1 -1
  78. package/build/UlnUtil.test.compiled.json +1 -1
  79. package/build/WorkerCore.test.compiled.json +1 -1
  80. package/build/badFeeLib1.test.compiled.json +1 -0
  81. package/build/badFeeLib10.test.compiled.json +1 -0
  82. package/build/badFeeLib11.test.compiled.json +1 -0
  83. package/build/badFeeLib2.test.compiled.json +1 -0
  84. package/build/badFeeLib3.test.compiled.json +1 -0
  85. package/build/badFeeLib4.test.compiled.json +1 -0
  86. package/build/badFeeLib5.test.compiled.json +1 -0
  87. package/build/badFeeLib6.test.compiled.json +1 -0
  88. package/build/badFeeLib7.test.compiled.json +1 -0
  89. package/build/badFeeLib8.test.compiled.json +1 -0
  90. package/build/badFeeLib9.test.compiled.json +1 -0
  91. package/package.json +10 -4
  92. package/src/classes/lz/EpConfig.fc +3 -3
  93. package/src/classes/lz/Packet.fc +16 -3
  94. package/src/classes/lz/Path.fc +10 -1
  95. package/src/classes/lz/Worker.fc +1 -1
  96. package/src/classes/msgdata/Deploy.fc +15 -3
  97. package/src/classes/msgdata/LzSend.fc +1 -1
  98. package/src/classes/msgdata/OptionsV2.fc +7 -4
  99. package/src/funC++/abstract/contractMainAbstract.fc +12 -1
  100. package/src/funC++/abstract/handlerAbstract.fc +10 -2
  101. package/src/funC++/actions/call.fc +5 -3
  102. package/src/funC++/baseInterface.fc +9 -8
  103. package/src/funC++/classlib.fc +30 -33
  104. package/src/funC++/constants.fc +2 -2
  105. package/src/funC++/contractMain.fc +2 -0
  106. package/src/funC++/dataStructures/AddressList.fc +89 -0
  107. package/src/funC++/dataStructures/DeterministicInsertionCircularQueue.fc +1 -1
  108. package/src/funC++/dataStructures/PipelinedOutOfOrder.fc +25 -1
  109. package/src/funC++/handlerCore.fc +2 -0
  110. package/src/funC++/stdlib.fc +1 -1
  111. package/src/funC++/testutils.fc +99 -0
  112. package/src/funC++/utils.fc +66 -2
  113. package/src/multisig/bocs/MultiSig.compiled.json +5 -0
  114. package/src/multisig/bocs/MultiSigOrder.compiled.json +5 -0
  115. package/tests/baseContractTest.fc +15 -12
  116. package/build/AllStorages.boc +0 -0
  117. package/build/AllStorages.fif +0 -4176
  118. package/build/AllStorages.test.boc +0 -0
  119. package/build/AllStorages.test.fif +0 -1831
  120. package/build/BaseContract.test.boc +0 -0
  121. package/build/BaseContract.test.fif +0 -3560
  122. package/build/Channel.boc +0 -0
  123. package/build/Channel.fif +0 -5109
  124. package/build/Channel.permissions.test.boc +0 -0
  125. package/build/Channel.permissions.test.fif +0 -7601
  126. package/build/ChannelBurn.test.boc +0 -0
  127. package/build/ChannelBurn.test.fif +0 -7486
  128. package/build/ChannelCommitPacket.test.boc +0 -0
  129. package/build/ChannelCommitPacket.test.fif +0 -8001
  130. package/build/ChannelConfig.test.boc +0 -0
  131. package/build/ChannelConfig.test.fif +0 -7474
  132. package/build/ChannelInitialize.test.boc +0 -0
  133. package/build/ChannelInitialize.test.fif +0 -7321
  134. package/build/ChannelMsglibIntegration.test.boc +0 -0
  135. package/build/ChannelMsglibIntegration.test.fif +0 -7437
  136. package/build/ChannelMsglibSendCallback.test.boc +0 -0
  137. package/build/ChannelMsglibSendCallback.test.fif +0 -7743
  138. package/build/ChannelNilify.test.boc +0 -0
  139. package/build/ChannelNilify.test.fif +0 -7702
  140. package/build/ChannelReceive.test.boc +0 -0
  141. package/build/ChannelReceive.test.fif +0 -7742
  142. package/build/ChannelReceiveCallback.test.boc +0 -0
  143. package/build/ChannelReceiveCallback.test.fif +0 -7581
  144. package/build/ChannelReceiveView.test.boc +0 -0
  145. package/build/ChannelReceiveView.test.fif +0 -7384
  146. package/build/ChannelSend.test.boc +0 -0
  147. package/build/ChannelSend.test.fif +0 -7690
  148. package/build/Classlib.test.boc +0 -0
  149. package/build/Classlib.test.fif +0 -4728
  150. package/build/Connection.boc +0 -0
  151. package/build/Connection.fif +0 -3586
  152. package/build/Connection.test.boc +0 -0
  153. package/build/Connection.test.compiled.json +0 -1
  154. package/build/Connection.test.fif +0 -6582
  155. package/build/Controller.assertions.test.boc +0 -0
  156. package/build/Controller.assertions.test.fif +0 -6137
  157. package/build/Controller.boc +0 -0
  158. package/build/Controller.fif +0 -3278
  159. package/build/Controller.permissions.test.boc +0 -0
  160. package/build/Controller.permissions.test.fif +0 -6244
  161. package/build/Controller.test.boc +0 -0
  162. package/build/Controller.test.fif +0 -6407
  163. package/build/Counter.boc +0 -0
  164. package/build/Counter.fif +0 -4816
  165. package/build/Counter.permissions.test.boc +0 -0
  166. package/build/Counter.permissions.test.fif +0 -7113
  167. package/build/Counter.setters.test.boc +0 -0
  168. package/build/Counter.setters.test.fif +0 -7090
  169. package/build/Counter.test.boc +0 -0
  170. package/build/Counter.test.fif +0 -7547
  171. package/build/Dvn.boc +0 -0
  172. package/build/Dvn.fif +0 -2923
  173. package/build/Dvn.test.boc +0 -0
  174. package/build/Dvn.test.fif +0 -5760
  175. package/build/Endpoint.boc +0 -0
  176. package/build/Endpoint.fif +0 -3777
  177. package/build/Endpoint.permissions.test.boc +0 -0
  178. package/build/Endpoint.permissions.test.fif +0 -6218
  179. package/build/Endpoint.test.boc +0 -0
  180. package/build/Endpoint.test.fif +0 -6906
  181. package/build/EndpointSetEpConfigDefaults.test.boc +0 -0
  182. package/build/EndpointSetEpConfigDefaults.test.fif +0 -6536
  183. package/build/Executor.boc +0 -0
  184. package/build/Executor.fif +0 -2731
  185. package/build/Executor.test.boc +0 -0
  186. package/build/Executor.test.fif +0 -5829
  187. package/build/LzClasses.test.boc +0 -0
  188. package/build/LzClasses.test.fif +0 -4457
  189. package/build/LzUtil.test.boc +0 -0
  190. package/build/LzUtil.test.fif +0 -1831
  191. package/build/MsgData.test.boc +0 -0
  192. package/build/MsgData.test.fif +0 -4318
  193. package/build/MsglibPacketCodec.test.boc +0 -0
  194. package/build/MsglibPacketCodec.test.fif +0 -4851
  195. package/build/MultiSig.boc +0 -0
  196. package/build/MultiSig.fif +0 -727
  197. package/build/MultiSigOrder.boc +0 -0
  198. package/build/MultiSigOrder.fif +0 -650
  199. package/build/PipelinedOutOfOrder.test.boc +0 -0
  200. package/build/PipelinedOutOfOrder.test.fif +0 -2188
  201. package/build/SmlConnection.boc +0 -0
  202. package/build/SmlConnection.fif +0 -2600
  203. package/build/SmlConnection.permissions.test.boc +0 -0
  204. package/build/SmlConnection.permissions.test.fif +0 -5504
  205. package/build/SmlConnection.test.boc +0 -0
  206. package/build/SmlConnection.test.fif +0 -5501
  207. package/build/SmlManager.boc +0 -0
  208. package/build/SmlManager.fif +0 -3987
  209. package/build/SmlManager.permissions.test.boc +0 -0
  210. package/build/SmlManager.permissions.test.fif +0 -6025
  211. package/build/SmlManager.test.boc +0 -0
  212. package/build/SmlManager.test.fif +0 -6054
  213. package/build/Uln.boc +0 -0
  214. package/build/Uln.fif +0 -4924
  215. package/build/Uln.test.boc +0 -0
  216. package/build/Uln.test.fif +0 -7084
  217. package/build/UlnManager.boc +0 -0
  218. package/build/UlnManager.fif +0 -3934
  219. package/build/UlnManager.test.boc +0 -0
  220. package/build/UlnManager.test.fif +0 -6578
  221. package/build/UlnReceiveConfig.test.boc +0 -0
  222. package/build/UlnReceiveConfig.test.fif +0 -4413
  223. package/build/UlnSend.test.boc +0 -0
  224. package/build/UlnSend.test.fif +0 -6583
  225. package/build/UlnSendConfig.test.boc +0 -0
  226. package/build/UlnSendConfig.test.fif +0 -4431
  227. package/build/UlnSendWorkerFactory.test.boc +0 -0
  228. package/build/UlnSendWorkerFactory.test.fif +0 -6683
  229. package/build/UlnUtil.test.boc +0 -0
  230. package/build/UlnUtil.test.fif +0 -5873
  231. package/build/WorkerCore.test.boc +0 -0
  232. package/build/WorkerCore.test.fif +0 -5637
  233. package/build/ZroMinter.boc +0 -0
  234. package/build/ZroMinter.fif +0 -2300
  235. package/build/ZroWallet.boc +0 -0
  236. package/build/ZroWallet.fif +0 -2471
  237. package/src/classes/lz/Attestation.fc +0 -23
  238. package/src/classes/msgdata/ClaimUnaccountedPoolFunds.fc +0 -0
  239. package/src/classes/msgdata/InitUlnConnection.fc +0 -18
@@ -0,0 +1,99 @@
1
+ #include "stdlib.fc";
2
+ #include "utils.fc";
3
+
4
+ cell _garbageFilledCell() {
5
+ cell garbage2 = begin_cell()
6
+ .store_uint256("garbage2"c)
7
+ .end_cell();
8
+
9
+ cell garbage3 = begin_cell()
10
+ .store_uint256("garbage3"c)
11
+ .end_cell();
12
+
13
+ return begin_cell()
14
+ .store_uint256("garbage"c)
15
+ .store_ref(garbage2)
16
+ .store_ref(garbage3)
17
+ .end_cell();
18
+ }
19
+
20
+ cell _garbigify(cell $input, cell garbage) impure {
21
+ slice inputSlice = $input.begin_parse();
22
+ int numrefs = inputSlice.slice_refs();
23
+
24
+ if (numrefs <= 2) {
25
+ builder b = begin_cell().store_slice(inputSlice);
26
+ repeat (4 - numrefs) {
27
+ b = b.store_ref(garbage);
28
+ }
29
+ return b.end_cell();
30
+ } elseif (numrefs == 3) {
31
+ slice cutfirst = scutfirst(inputSlice, inputSlice.slice_bits(), 2);
32
+ builder b = begin_cell().store_slice(cutfirst);
33
+ slice s = inputSlice.preload_ref_at(2).begin_parse();
34
+ builder innerB = begin_cell().store_slice(s);
35
+ int innerNumRefs = s.slice_refs();
36
+
37
+ repeat (4 - innerNumRefs) {
38
+ innerB = innerB.store_ref(garbage);
39
+ }
40
+
41
+ return b.store_ref(innerB.end_cell()).store_ref(garbage).end_cell();
42
+ } elseif (numrefs == 4) {
43
+ builder b = begin_cell().store_slice(scutfirst(inputSlice, inputSlice.slice_bits(), 2));
44
+ slice s1 = inputSlice.preload_ref_at(2).begin_parse();
45
+ slice s2 = inputSlice.preload_ref_at(3).begin_parse();
46
+ builder innerb1 = begin_cell().store_slice(s1);
47
+ builder innerb2 = begin_cell().store_slice(s2);
48
+ int refs1 = s1.slice_refs();
49
+ int refs2 = s2.slice_refs();
50
+
51
+ repeat (4 - refs1) {
52
+ innerb1 = innerb1.store_ref(garbage);
53
+ }
54
+
55
+ repeat (4 - refs2) {
56
+ innerb2 = innerb2.store_ref(garbage);
57
+ }
58
+
59
+ return b.store_ref(innerb1.end_cell()).store_ref(innerb2.end_cell()).end_cell();
60
+ }
61
+
62
+ ;; Should never happen as the above checks and returns from all cases
63
+ ;; The compiler needs you to return from all possible control flows
64
+ ;; and it isn't smart enough to know that this will never be reached.
65
+ ~strdump("garbigify: this print should never happen");
66
+ return empty_cell();
67
+ }
68
+
69
+ () profile_gas(var func, tuple args) {
70
+ int gas_consumed = get_gas_consumed();
71
+ int gas_consumed_consumed = get_gas_consumed();
72
+ int gas_consumed_of_gas_consumed = gas_consumed_consumed - gas_consumed;
73
+ int gas0 = get_gas_consumed();
74
+ var x = func(args);
75
+ int gas1 = get_gas_consumed();
76
+ ~strdump("ignore this dump, this is to not optimize out");
77
+ ~dump(x);
78
+ int final_gas = gas1 - gas0 - gas_consumed_of_gas_consumed;
79
+ ~dump(final_gas);
80
+ }
81
+
82
+ cell _dupWithGarbage(cell $input) {
83
+ return _garbigify($input, _garbageFilledCell());
84
+ }
85
+
86
+ cell headerCellGarbage(cell $input) {
87
+ int ind = 0;
88
+ slice inputSlice = $input.begin_parse();
89
+ builder b = begin_cell();
90
+ while (ind < inputSlice.slice_refs()) {
91
+ b = b.store_ref(inputSlice.preload_ref_at(ind));
92
+ ind += 1;
93
+ }
94
+ b = b.store_slice(
95
+ inputSlice
96
+ .scutfirst(min(inputSlice.slice_bits(), 512), 0))
97
+ .store_uint256("garbage1"c);
98
+ return b.end_cell();
99
+ }
@@ -76,13 +76,14 @@ int _SDCNTLEAD0(slice x) asm "SDCNTLEAD0";
76
76
  int POW2(int y) asm "POW2";
77
77
 
78
78
  ;; numCells, num_bits
79
- (int, int) getContractStateSize(cell code, cell init_storage) inline {
79
+ (int, int) getContractStateSize(cell code, cell init_storage) impure inline {
80
80
  cell stateInit = begin_cell()
81
81
  .store_uint(6, 5)
82
82
  .store_ref(code)
83
83
  .store_ref(init_storage)
84
84
  .end_cell();
85
- (int cellsCount, int bitsCount, _) = stateInit.compute_data_size(MAX_U16);
85
+ (int cellsCount, int bitsCount, int success) = stateInit.compute_data_size(MAX_U16);
86
+ throw_unless(8, success);
86
87
  return (cellsCount, bitsCount);
87
88
  }
88
89
 
@@ -117,3 +118,66 @@ int treeShapeEqual(cell lhs, cell rhs) inline {
117
118
  }
118
119
 
119
120
  int _globvarIsNull(int idx) impure asm "GETGLOBVAR ISNULL";
121
+
122
+ int _gasToNanoton(int gas) inline {
123
+ return get_compute_fee(false, gas);
124
+ }
125
+
126
+ (cell, int) getConfigParam(int idx) inline asm "CONFIGPARAM";
127
+
128
+ ;; https://github.com/ton-blockchain/ton/blob/master/crypto/block/block.tlb
129
+ ;; gas_prices#dd gas_price:uint64 gas_limit:uint64 gas_credit:uint64
130
+ ;; block_gas_limit:uint64 freeze_due_limit:uint64 delete_due_limit:uint64
131
+ ;; = GasLimitsPrices;
132
+ ;;
133
+ ;; gas_prices_ext#de gas_price:uint64 gas_limit:uint64 special_gas_limit:uint64 gas_credit:uint64
134
+ ;; block_gas_limit:uint64 freeze_due_limit:uint64 delete_due_limit:uint64
135
+ ;; = GasLimitsPrices;
136
+ ;;
137
+ ;; gas_flat_pfx#d1 flat_gas_limit:uint64 flat_gas_price:uint64 other:GasLimitsPrices
138
+ ;; = GasLimitsPrices;
139
+ ;;
140
+ ;; config_mc_gas_prices#_ GasLimitsPrices = ConfigParam 20;
141
+ ;; config_gas_prices#_ GasLimitsPrices = ConfigParam 21;
142
+ ;; return -1 on any failure
143
+ (int, int, int, int, int, int, int, int, int) parseGasLimitsPrices(int workchainId) impure {
144
+ int configIdx = workchainId == BASECHAIN ? 21 : 20;
145
+ (cell cfg, int success) = getConfigParam(configIdx);
146
+ ifnot (success) {
147
+ return (-1, -1, -1, -1, -1, -1, -1, -1, -1);
148
+ }
149
+ slice cfgSlice = cfg.begin_parse();
150
+ ifnot (cfgSlice.slice_bits() >= 592) {
151
+ return (-1, -1, -1, -1, -1, -1, -1, -1, -1);
152
+ }
153
+
154
+ if (
155
+ (cfgSlice.preload_uint(8) != 0xd1)
156
+ | (cfgSlice.preload_bits_offset(136, 8).preload_uint(8) != 0xde)
157
+ ) {
158
+ return (-1, -1, -1, -1, -1, -1, -1, -1, -1);
159
+ }
160
+
161
+ cfgSlice~load_uint8();
162
+ int specialGasLimit = cfgSlice~load_uint64();
163
+ int flatGasLimit = cfgSlice~load_uint64();
164
+ int flatGasPrice = cfgSlice~load_uint64();
165
+ cfgSlice~load_uint8();
166
+ int gasPrice = cfgSlice~load_uint64();
167
+ int gasLimit = cfgSlice~load_uint64();
168
+ int gasCredit = cfgSlice~load_uint64();
169
+ int blockGasLimit = cfgSlice~load_uint64();
170
+ int freezeDueLimit = cfgSlice~load_uint64();
171
+ int deleteDueLimit = cfgSlice~load_uint64();
172
+ return (
173
+ specialGasLimit,
174
+ flatGasLimit,
175
+ flatGasPrice,
176
+ gasPrice,
177
+ gasLimit,
178
+ gasCredit,
179
+ blockGasLimit,
180
+ freezeDueLimit,
181
+ deleteDueLimit
182
+ );
183
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "hash": "1a9652b3a16a6fd12a1df3d44a9d24516bb82ae00306e758be7b53f8fa726261",
3
+ "hashBase64": "GpZSs6Fqb9EqHfPUSp0kUWu4KuADBudYvntT+PpyYmE=",
4
+ "hex": "b5ee9c7241021201000495000114ff00f4a413f4bcf2c80b01020162020b02cad033d0d3030171b0925f03e0fa403022d749c000925f03e002d31f0120c000925f04e001d33f01ed44d0d3ff0101d3070101d4d3070101f404d2000101d1288210f718510fbae30f054443c8500601cbff500401cb0712cc0101cb07f4000101ca00c9ed540307019e3806d3ff0128b38e122084ffba923024965305baf2e3f0e205a405de01d2000101d3070101d32f0101d4d1239126912ae2523078f40e6fa1f2e3ef1ec705f2e3ef20f823bef2e06f20f823a1546d700401d4f80703830cf94130038308f94130f8075006a18127f801a070f83681120670f836a0812bec70f836a0811d9870f836a022a60622a081053926a027a070f83823a481029827a070f838a003a60658a08106e05005a05005a0430370f83759a001a01cbef2e064f82850030502b8017002c858cf160101cbffc98822c8cb01f400f400cb00c97021f90074c8cb0212ca07cbffc9d0c882109c73fba2580a02cb1fcb3f2601cb075250cc500b01cb2f1bcc2a01ca000a951901cb07089130e2102470408980188050db3c110600928e45c85801cb055005cf165003fa0254712323ed44ed45ed479f5bc85003cf17c913775003cb6bcccced67ed65ed64747fed11987601cb6bcc01cf17ed41edf101f2ffc901fb00db06029a363826821075097f5dba8eba068210a32c59bfba8ea9f82818c705f2e06503d4d1103410364650f8007f8e8d2178f47c6fa5209132e30d01b3e65b10355034923436e2505413e30d4015503304090802e23604d3ff0101d32f0101d3070101d3ff0101d4d1f8285005017002c858cf160101cbffc98822c8cb01f400f400cb00c97001f90074c8cb0212ca07cbffc9d01bc705f2e06526f9001aba5193be19b0f2e06607f823bef2e06f44145056f8007f8e8d2178f47c6fa5209132e30d01b3e65b110901fa02d74cd0d31f01208210f1381e5bba8e6a82101d0cfbd3ba8e5e6c44d3070101d4217f708e17511278f47c6fa53221995302baf2e06702a402de01b312e66c2120c200f2e06e23c200f2e06d5330bbf2e06d01f404217f708e17511278f47c6fa53221995302baf2e06702a402de01b312e66c2130d155239130e2e30d0a001030d307d402fb00d10201200c0e0143bf74ff6a26869ff8080e9838080ea69838080fa0269000080e8881aaf8280fc11d0c0d00c2f80703830cf94130038308f94130f8075006a18127f801a070f83681120670f836a0812bec70f836a0811d9870f836a022a60622a081053926a027a070f83823a481029827a070f838a003a60658a08106e05005a05005a0430370f83759a001a00201660f1000f1b0cafb513434ffc04074c1c0407534c1c0407d01348000407448dfdc2385d4449e3d1f1be94c886654c0aebcb819c0a900b7806cc4b99b08548c2ebcb81b085fdc2385d4449e3d1f1be94c886654c0aebcb819c0a900b7806cc4b99b084c08b0803cb81b8930803cb81b5490eefcb81b40648cdfe440f880e00159b0c9fe0a00405c00b21633c5804072fff26208b232c07d003d0032c0325c007e401d3232c084b281f2fff27420110842024ebdec6e60259521d325e0baebe89b9a7901619805a4dfa624e5a3549349fcbf3e76e893"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "hash": "4ebdec6e60259521d325e0baebe89b9a7901619805a4dfa624e5a3549349fcbf",
3
+ "hashBase64": "Tr3sbmAllSHTJeC66+ibmnkBYZgFpN+mJOWjVJNJ/L8=",
4
+ "hex": "b5ee9c7241020d01000372000114ff00f4a413f4bcf2c80b01020162020c04f8d03331d0d3030171b0915be0fa403001d31f01ed44d0fa4001f861d3ff01f86220d749c0008e13306df8636df8646df8656df8666df8676df8688e22d30701f863d20001f864d401f865d3ff01f866d30701f867d32f01f868d401f869d1e220c000e30201d33f012282109c73fba2bae302028210a762230fbae3020304060b01c83020d74ac0008e23c8708e1a22d7495230d71912cf1622d74a9402d74cd093317f58e2541220e63031c9d0df840f018b7617070726f76658c705f2f420707f8e19f84578f47c6fa5209b5243c70595317f327001de9132e201b3e632f2e06af82512db3c0702fe32f84113c705f2e068f8436e8ef101d30701f86370f864d401f86570f86670f867d32f01f868f848f823bef2e06fd401f869d200018e99d30701aef84621b0f2d06bf847a4f867f84601b1f86601db3c9131e2d1f849f846f845c8f841cf16f84201cbfff84301cb07f84401ca00cccbfff84701cb07f84801cb2fccc9ed540905018ce001d30701f843baf2e069d401f900f845f900baf2e069d32f01f848baf2e069d401f900f849f900baf2e069d20001f2e069d3070101d1f845521078f40e6fa1f2e06a58db3c070136d3070101d1f845521078f40e6fa1f2e06a5230c705f2e06a59db3c07026e8f335ced44ed45ed478e983170c88210afaf283e580402cb1fcb3fcb1f80108050db3ced67ed65ed64727fed118aed41edf101f2ffdb030a0802b4f844f2d07002aef84621b0f2d06bf847a4f867f84601b1f86670c8821082609bf62402cb1fcb3f80108050db3cdb3cf849f846f845c8f841cf16f84201cbfff84301cb07f84401ca00cccbfff84701cb07f84801cb2fccc9ed540a090180f847f843ba8eb6f84170f849c8821075097f5d580502cb1fcb3ff84201cbfff84801cb2ff84701cb07f845f90001cbff13cc128010810090db3c7ff8649130e20a00888e40c85801cb055004cf1658fa02547120ed44ed45ed479d5bc85003cf17c9127158cb6acced67ed65ed64737fed11977001cb6a01cf17ed41edf101f2ffc901fb00db05000c5f03840ff2f000c1a1c771da89a1f48003f0c3a7fe03f0c441ae9380011c2660dbf0c6dbf0c8dbf0cadbf0ccdbf0cedbf0d11c45a60e03f0c7a40003f0c9a803f0cba7fe03f0cda60e03f0cfa65e03f0d1a803f0d3a3c5f083f085f087f089f08bf08df08ff091f09326d3be81"
5
+ }
@@ -106,20 +106,23 @@ cell baseTest::prepare(tuple args) impure {
106
106
  if (terminalIndices.tlen() > 1) {
107
107
  test::throwError("Multiple terminal actions");
108
108
  }
109
-
110
109
  ;; Check that the storage after running the handler matches the expected storage
111
- int wrongField = compareObjectFields(getContractStorage(), $expectedStorage);
112
- if (wrongField == INVALID_CLASS_MEMBER) {
113
- return (
114
- TEST_FAILED,
115
- "Storage and expected storage not of the same type"
116
- );
117
- } elseif (wrongField != -1) {
118
- return (
119
- TEST_FAILED,
120
- "malformed field ".str::concatInt(wrongField)
121
- );
110
+ if ($expectedStorage.cl::hash() != getContractStorage().cl::hash()) {
111
+ ~strdump("Checking individual fields");
112
+ int wrongField = compareObjectFields(getContractStorage(), $expectedStorage);
113
+ if (wrongField == INVALID_CLASS_MEMBER) {
114
+ return (
115
+ TEST_FAILED,
116
+ "Storage and expected storage not of the same type"
117
+ );
118
+ } elseif (wrongField != -1) {
119
+ return (
120
+ TEST_FAILED,
121
+ "malformed field ".str::concatInt(wrongField)
122
+ );
123
+ }
122
124
  }
125
+
123
126
  if (expectedTxnContext.tlen() != txnContext.tlen()) {
124
127
  return (TEST_FAILED, "malformed txn context");
125
128
  }
Binary file