@layerzerolabs/protocol-stellar-v2 0.2.15 → 0.2.19

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 (262) hide show
  1. package/.turbo/turbo-build.log +365 -297
  2. package/.turbo/turbo-lint.log +142 -110
  3. package/.turbo/turbo-test.log +1273 -1222
  4. package/Cargo.lock +20 -5
  5. package/Cargo.toml +4 -1
  6. package/contracts/ERROR_SPEC.md +44 -0
  7. package/contracts/common-macros/src/auth.rs +113 -0
  8. package/contracts/common-macros/src/contract_ttl.rs +84 -0
  9. package/contracts/common-macros/src/lib.rs +181 -30
  10. package/contracts/common-macros/src/lz_contract.rs +83 -0
  11. package/contracts/common-macros/src/tests/{ownable.rs → auth.rs} +48 -15
  12. package/contracts/common-macros/src/tests/contract_ttl.rs +662 -0
  13. package/contracts/common-macros/src/tests/mod.rs +2 -2
  14. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_multisig_code.snap +20 -0
  15. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_ownable_code.snap +24 -0
  16. package/contracts/common-macros/src/tests/snapshots/{common_macros__tests__ownable__snapshot_only_owner_preserves_function_signature.snap → common_macros__tests__auth__snapshot_only_auth_preserves_function_signature.snap} +4 -4
  17. package/contracts/common-macros/src/tests/snapshots/{common_macros__tests__contract_impl__snapshot_generated_contract_impl_code.snap → common_macros__tests__contract_ttl__snapshot_generated_contractimpl_code.snap} +3 -3
  18. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contracttrait_code.snap +69 -0
  19. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +7 -21
  20. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +2 -2
  21. package/contracts/common-macros/src/ttl_configurable.rs +19 -34
  22. package/contracts/common-macros/src/ttl_extendable.rs +36 -0
  23. package/contracts/common-macros/src/upgradeable.rs +5 -5
  24. package/contracts/common-macros/src/utils.rs +9 -0
  25. package/contracts/endpoint-v2/src/constants.rs +4 -4
  26. package/contracts/endpoint-v2/src/endpoint_v2.rs +38 -40
  27. package/contracts/endpoint-v2/src/errors.rs +4 -3
  28. package/contracts/endpoint-v2/src/events.rs +1 -1
  29. package/contracts/endpoint-v2/src/message_lib_manager.rs +18 -5
  30. package/contracts/endpoint-v2/src/messaging_channel.rs +11 -1
  31. package/contracts/endpoint-v2/src/messaging_composer.rs +11 -1
  32. package/contracts/endpoint-v2/src/storage.rs +1 -1
  33. package/contracts/endpoint-v2/src/tests/endpoint_v2/pay_messaging_fees.rs +3 -3
  34. package/contracts/endpoint-v2/src/tests/endpoint_v2/quote.rs +1 -1
  35. package/contracts/endpoint-v2/src/tests/endpoint_v2/require_oapp_auth.rs +2 -2
  36. package/contracts/endpoint-v2/src/tests/endpoint_v2/send.rs +3 -3
  37. package/contracts/endpoint-v2/src/tests/endpoint_v2/set_zro.rs +4 -4
  38. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_receive_lib_for_eid.rs +3 -3
  39. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_registered.rs +1 -1
  40. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_send_lib_for_eid.rs +3 -3
  41. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_supported_eid.rs +1 -1
  42. package/contracts/endpoint-v2/src/tests/messaging_channel/clear_payload.rs +4 -4
  43. package/contracts/endpoint-v2/src/tests/messaging_channel/inbound.rs +1 -1
  44. package/contracts/layerzero-views/src/layerzero_view.rs +3 -6
  45. package/contracts/macro-integration-tests/tests/runtime/ownable/mod.rs +2 -2
  46. package/contracts/macro-integration-tests/tests/runtime/ownable/{only_owner_guard.rs → only_auth_guard.rs} +1 -1
  47. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/configuration.rs +1 -1
  48. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/freeze.rs +1 -1
  49. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/mod.rs +0 -1
  50. package/contracts/macro-integration-tests/tests/ui/ownable/fail/{only_owner_missing_env.rs → only_auth_missing_env.rs} +3 -3
  51. package/contracts/macro-integration-tests/tests/ui/ownable/fail/{only_owner_missing_env.stderr → only_auth_missing_env.stderr} +4 -4
  52. package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +2 -3
  53. package/contracts/macro-integration-tests/tests/ui/ownable/pass/{only_owner_env_param_variants.rs → only_auth_env_param_variants.rs} +9 -9
  54. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/minimal_contract.rs +6 -6
  55. package/contracts/message-libs/message-lib-common/src/errors.rs +7 -2
  56. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/decode_packet_header.rs +3 -3
  57. package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_lz_receive_option.rs +1 -2
  58. package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_native_drop_option.rs +1 -2
  59. package/contracts/message-libs/message-lib-common/src/tests/worker_options/convert_legacy_options.rs +9 -9
  60. package/contracts/message-libs/message-lib-common/src/tests/worker_options/extract_type_3_options.rs +1 -1
  61. package/contracts/message-libs/message-lib-common/src/tests/worker_options/left_pad_to_bytes32.rs +1 -1
  62. package/contracts/message-libs/message-lib-common/src/tests/worker_options/split_worker_options.rs +2 -2
  63. package/contracts/message-libs/simple-message-lib/src/simple_message_lib.rs +7 -9
  64. package/contracts/message-libs/treasury/src/errors.rs +2 -2
  65. package/contracts/message-libs/treasury/src/events.rs +1 -1
  66. package/contracts/message-libs/treasury/src/interfaces/zro_fee_lib.rs +2 -2
  67. package/contracts/message-libs/treasury/src/storage.rs +1 -1
  68. package/contracts/message-libs/treasury/src/tests/treasury_tests.rs +1 -1
  69. package/contracts/message-libs/treasury/src/treasury.rs +14 -16
  70. package/contracts/message-libs/uln-302/src/receive_uln.rs +13 -2
  71. package/contracts/message-libs/uln-302/src/send_uln.rs +24 -4
  72. package/contracts/message-libs/uln-302/src/uln302.rs +6 -24
  73. package/contracts/oapps/counter/Cargo.toml +14 -1
  74. package/contracts/oapps/counter/integration_tests/mod.rs +4 -1
  75. package/contracts/oapps/counter/integration_tests/{setup.rs → setup_sml.rs} +48 -80
  76. package/contracts/oapps/counter/integration_tests/setup_uln.rs +997 -0
  77. package/contracts/oapps/counter/integration_tests/signing.rs +62 -0
  78. package/contracts/oapps/counter/integration_tests/test_with_sml.rs +24 -55
  79. package/contracts/oapps/counter/integration_tests/test_with_uln.rs +314 -0
  80. package/contracts/oapps/counter/integration_tests/utils.rs +196 -53
  81. package/contracts/oapps/counter/src/counter.rs +67 -43
  82. package/contracts/oapps/counter/src/tests/mod.rs +0 -13
  83. package/contracts/oapps/counter/src/tests/test_counter.rs +5 -7
  84. package/contracts/oapps/oapp/src/errors.rs +5 -1
  85. package/contracts/oapps/oapp/src/macro_tests/test_macros.rs +93 -78
  86. package/contracts/oapps/oapp/src/oapp_core.rs +36 -21
  87. package/contracts/oapps/oapp/src/oapp_options_type3.rs +48 -12
  88. package/contracts/oapps/oapp/src/oapp_receiver.rs +106 -41
  89. package/contracts/oapps/oapp/src/oapp_sender.rs +26 -34
  90. package/contracts/oapps/oapp/src/tests/test_oapp_core.rs +9 -8
  91. package/contracts/oapps/oapp/src/tests/test_oapp_options_type3.rs +25 -17
  92. package/contracts/oapps/oapp/src/tests/test_oapp_receiver.rs +7 -7
  93. package/contracts/oapps/oapp/src/tests/test_oapp_sender.rs +14 -15
  94. package/contracts/oapps/oapp-macros/src/generators.rs +128 -0
  95. package/contracts/oapps/oapp-macros/src/lib.rs +113 -56
  96. package/contracts/oapps/oft/Cargo.toml +10 -7
  97. package/contracts/oapps/{oft-std → oft}/integration-tests/extensions/test_oft_fee.rs +3 -4
  98. package/contracts/oapps/{oft-std → oft}/integration-tests/extensions/test_pausable.rs +2 -3
  99. package/contracts/oapps/{oft-std → oft}/integration-tests/extensions/test_rate_limiter.rs +1 -1
  100. package/contracts/oapps/oft/integration-tests/mod.rs +1 -1
  101. package/contracts/oapps/oft/integration-tests/setup.rs +29 -110
  102. package/contracts/oapps/oft/integration-tests/utils.rs +254 -21
  103. package/contracts/oapps/oft/src/extensions/oft_fee.rs +13 -14
  104. package/contracts/oapps/oft/src/extensions/pausable.rs +4 -4
  105. package/contracts/oapps/oft/src/extensions/rate_limiter.rs +5 -5
  106. package/contracts/oapps/oft/src/lib.rs +11 -13
  107. package/contracts/oapps/oft/src/oft.rs +147 -225
  108. package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +9 -13
  109. package/contracts/oapps/oft/src/oft_types/mint_burn.rs +31 -14
  110. package/contracts/oapps/oft/src/oft_types/mod.rs +13 -0
  111. package/contracts/oapps/{oft-std → oft-core}/Cargo.toml +6 -4
  112. package/contracts/oapps/{oft-std → oft-core}/integration-tests/mod.rs +1 -1
  113. package/contracts/oapps/{oft-std → oft-core}/integration-tests/setup.rs +129 -30
  114. package/contracts/oapps/{oft → oft-core}/integration-tests/test_with_sml.rs +3 -3
  115. package/contracts/oapps/oft-core/integration-tests/utils.rs +201 -0
  116. package/contracts/oapps/oft-core/src/errors.rs +13 -0
  117. package/contracts/oapps/oft-core/src/lib.rs +18 -0
  118. package/contracts/oapps/oft-core/src/oft_core.rs +439 -0
  119. package/contracts/oapps/{oft → oft-core}/src/storage.rs +2 -0
  120. package/contracts/oapps/{oft → oft-core}/src/tests/mod.rs +0 -2
  121. package/contracts/oapps/{oft → oft-core}/src/tests/test_decimals.rs +2 -2
  122. package/contracts/oapps/{oft → oft-core}/src/tests/test_lz_receive.rs +7 -7
  123. package/contracts/oapps/{oft → oft-core}/src/tests/test_oft_msg_codec.rs +4 -5
  124. package/contracts/oapps/{oft → oft-core}/src/tests/test_resolve_address.rs +3 -3
  125. package/contracts/oapps/{oft → oft-core}/src/tests/test_utils.rs +78 -37
  126. package/contracts/oapps/oft-core/src/types.rs +58 -0
  127. package/contracts/oapps/{oft → oft-core}/src/utils.rs +1 -1
  128. package/contracts/upgrader/src/lib.rs +4 -4
  129. package/contracts/utils/src/auth.rs +44 -0
  130. package/contracts/utils/src/errors.rs +31 -5
  131. package/contracts/utils/src/lib.rs +3 -0
  132. package/contracts/utils/src/multisig.rs +211 -0
  133. package/contracts/utils/src/ownable.rs +137 -13
  134. package/contracts/utils/src/tests/buffer_reader.rs +6 -6
  135. package/contracts/utils/src/tests/buffer_writer.rs +6 -6
  136. package/contracts/utils/src/tests/bytes_ext.rs +2 -4
  137. package/contracts/utils/src/tests/mod.rs +1 -0
  138. package/contracts/utils/src/tests/multisig.rs +731 -0
  139. package/contracts/utils/src/tests/option_ext.rs +2 -5
  140. package/contracts/utils/src/tests/ownable.rs +456 -7
  141. package/contracts/utils/src/tests/ttl_configurable.rs +27 -16
  142. package/contracts/utils/src/tests/upgradeable.rs +4 -2
  143. package/contracts/utils/src/ttl_configurable.rs +23 -8
  144. package/contracts/utils/src/ttl_extendable.rs +27 -0
  145. package/contracts/utils/src/upgradeable.rs +2 -0
  146. package/contracts/workers/dvn/Cargo.toml +1 -1
  147. package/contracts/workers/dvn/src/auth.rs +7 -7
  148. package/contracts/workers/dvn/src/dvn.rs +10 -38
  149. package/contracts/workers/dvn/src/errors.rs +0 -7
  150. package/contracts/workers/dvn/src/events.rs +1 -14
  151. package/contracts/workers/dvn/src/interfaces/dvn.rs +2 -2
  152. package/contracts/workers/dvn/src/interfaces/mod.rs +0 -2
  153. package/contracts/workers/dvn/src/storage.rs +3 -13
  154. package/contracts/workers/dvn/src/tests/auth.rs +4 -4
  155. package/contracts/workers/dvn/src/tests/dvn.rs +1 -2
  156. package/contracts/workers/dvn/src/tests/multisig/set_signer.rs +7 -8
  157. package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +11 -8
  158. package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +11 -12
  159. package/contracts/workers/dvn/src/tests/setup.rs +5 -5
  160. package/contracts/workers/dvn-fee-lib/Cargo.toml +1 -1
  161. package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +3 -6
  162. package/contracts/workers/executor/src/auth.rs +80 -16
  163. package/contracts/workers/executor/src/executor.rs +5 -31
  164. package/contracts/workers/executor/src/storage.rs +2 -9
  165. package/contracts/workers/executor-fee-lib/Cargo.toml +1 -1
  166. package/contracts/workers/executor-fee-lib/src/executor_fee_lib.rs +3 -6
  167. package/contracts/workers/executor-helper/Cargo.toml +1 -1
  168. package/contracts/workers/executor-helper/src/executor_helper.rs +53 -73
  169. package/contracts/workers/price-feed/Cargo.toml +1 -1
  170. package/contracts/workers/price-feed/src/price_feed.rs +7 -10
  171. package/contracts/workers/worker/src/errors.rs +4 -0
  172. package/contracts/workers/worker/src/tests/worker.rs +7 -6
  173. package/contracts/workers/worker/src/worker.rs +20 -16
  174. package/package.json +7 -5
  175. package/sdk/.turbo/turbo-build.log +1 -0
  176. package/sdk/.turbo/turbo-test.log +1019 -0
  177. package/sdk/dist/generated/bml.d.ts +95 -8
  178. package/sdk/dist/generated/bml.js +95 -36
  179. package/sdk/dist/generated/counter.d.ts +289 -44
  180. package/sdk/dist/generated/counter.js +119 -49
  181. package/sdk/dist/generated/dvn.d.ts +312 -229
  182. package/sdk/dist/generated/dvn.js +144 -83
  183. package/sdk/dist/generated/dvn_fee_lib.d.ts +258 -63
  184. package/sdk/dist/generated/dvn_fee_lib.js +95 -26
  185. package/sdk/dist/generated/endpoint.d.ts +219 -24
  186. package/sdk/dist/generated/endpoint.js +108 -41
  187. package/sdk/dist/generated/executor.d.ts +239 -87
  188. package/sdk/dist/generated/executor.js +135 -63
  189. package/sdk/dist/generated/executor_fee_lib.d.ts +278 -74
  190. package/sdk/dist/generated/executor_fee_lib.js +135 -59
  191. package/sdk/dist/generated/executor_helper.d.ts +163 -21
  192. package/sdk/dist/generated/executor_helper.js +124 -52
  193. package/sdk/dist/generated/oft.d.ts +1842 -0
  194. package/sdk/dist/generated/oft.js +345 -0
  195. package/sdk/dist/generated/price_feed.d.ts +258 -63
  196. package/sdk/dist/generated/price_feed.js +95 -26
  197. package/sdk/dist/generated/sml.d.ts +235 -34
  198. package/sdk/dist/generated/sml.js +126 -53
  199. package/sdk/dist/generated/treasury.d.ts +1016 -0
  200. package/sdk/dist/generated/treasury.js +248 -0
  201. package/sdk/dist/generated/uln302.d.ts +235 -34
  202. package/sdk/dist/generated/uln302.js +126 -53
  203. package/sdk/dist/generated/upgrader.d.ts +17 -2
  204. package/sdk/dist/generated/upgrader.js +19 -1
  205. package/sdk/dist/index.d.ts +2 -1
  206. package/sdk/dist/index.js +2 -1
  207. package/sdk/package.json +6 -3
  208. package/sdk/src/index.ts +2 -1
  209. package/sdk/test/counter-sml.test.ts +376 -0
  210. package/sdk/test/counter-uln.test.ts +493 -0
  211. package/sdk/test/{oft.test.ts → oft-sml.test.ts} +196 -321
  212. package/sdk/test/suites/constants.ts +22 -2
  213. package/sdk/test/suites/globalSetup.ts +450 -0
  214. package/sdk/test/suites/localnet.ts +23 -6
  215. package/sdk/test/upgrader.test.ts +7 -16
  216. package/sdk/test/utils.ts +558 -85
  217. package/sdk/turbo.json +8 -0
  218. package/sdk/vitest.config.ts +21 -0
  219. package/tools/ts-bindings-gen/Cargo.toml +2 -0
  220. package/tools/ts-bindings-gen/src/main.rs +52 -4
  221. package/contracts/common-macros/src/contract_impl.rs +0 -52
  222. package/contracts/common-macros/src/ownable.rs +0 -41
  223. package/contracts/common-macros/src/tests/contract_impl.rs +0 -386
  224. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ownable__snapshot_generated_ownable_code.snap +0 -12
  225. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/extend_instance_ttl.rs +0 -50
  226. package/contracts/oapps/oapp-macros/src/oapp_core.rs +0 -41
  227. package/contracts/oapps/oapp-macros/src/oapp_full.rs +0 -21
  228. package/contracts/oapps/oapp-macros/src/oapp_options_type3.rs +0 -31
  229. package/contracts/oapps/oapp-macros/src/oapp_receiver.rs +0 -48
  230. package/contracts/oapps/oapp-macros/src/oapp_sender.rs +0 -21
  231. package/contracts/oapps/oapp-macros/src/util.rs +0 -107
  232. package/contracts/oapps/oft/src/constants.rs +0 -5
  233. package/contracts/oapps/oft/src/default_oft_impl.rs +0 -152
  234. package/contracts/oapps/oft/src/errors.rs +0 -8
  235. package/contracts/oapps/oft/src/interfaces/mint_burn_token.rs +0 -23
  236. package/contracts/oapps/oft/src/interfaces/mod.rs +0 -3
  237. package/contracts/oapps/oft/src/tests/extensions/mod.rs +0 -11
  238. package/contracts/oapps/oft/src/tests/extensions/setup.rs +0 -903
  239. package/contracts/oapps/oft/src/tests/extensions/test_oft_fee.rs +0 -749
  240. package/contracts/oapps/oft/src/tests/extensions/test_pausable.rs +0 -432
  241. package/contracts/oapps/oft/src/tests/extensions/test_rate_limiter.rs +0 -1078
  242. package/contracts/oapps/oft/src/types.rs +0 -38
  243. package/contracts/oapps/oft-std/integration-tests/utils.rs +0 -427
  244. package/contracts/oapps/oft-std/src/lib.rs +0 -16
  245. package/contracts/oapps/oft-std/src/oft.rs +0 -156
  246. package/contracts/workers/dvn/src/interfaces/multisig.rs +0 -56
  247. package/contracts/workers/dvn/src/multisig.rs +0 -157
  248. package/sdk/dist/generated/oft_std.d.ts +0 -1544
  249. package/sdk/dist/generated/oft_std.js +0 -271
  250. package/sdk/test/index.test.ts +0 -375
  251. /package/contracts/oapps/{oft-std → oft}/integration-tests/extensions/mod.rs +0 -0
  252. /package/contracts/oapps/{oft → oft-core}/src/codec/mod.rs +0 -0
  253. /package/contracts/oapps/{oft → oft-core}/src/codec/oft_compose_msg_codec.rs +0 -0
  254. /package/contracts/oapps/{oft → oft-core}/src/codec/oft_msg_codec.rs +0 -0
  255. /package/contracts/oapps/{oft → oft-core}/src/events.rs +0 -0
  256. /package/contracts/oapps/{oft → oft-core}/src/tests/test_oft_compose_msg_codec.rs +0 -0
  257. /package/contracts/oapps/{oft → oft-core}/src/tests/test_oft_version.rs +0 -0
  258. /package/contracts/oapps/{oft → oft-core}/src/tests/test_quote_oft.rs +0 -0
  259. /package/contracts/oapps/{oft → oft-core}/src/tests/test_quote_send.rs +0 -0
  260. /package/contracts/oapps/{oft → oft-core}/src/tests/test_send.rs +0 -0
  261. /package/contracts/oapps/{oft → oft-core}/src/tests/test_token.rs +0 -0
  262. /package/sdk/test/suites/{testUpgradeable.ts → dummyContractClient.ts} +0 -0
@@ -1,375 +0,0 @@
1
- import { Keypair, StrKey, TransactionBuilder } from '@stellar/stellar-sdk';
2
- import path from 'path';
3
- import { afterAll, beforeAll, describe, expect, it } from 'vitest';
4
- import { $ } from 'zx';
5
-
6
- import { getFullyQualifiedRepoRootPath } from '@layerzerolabs/common-node-utils';
7
- import { PacketSerializer, PacketV1Codec } from '@layerzerolabs/lz-v2-utilities';
8
-
9
- import { Client as CounterClient } from '../src/generated/counter';
10
- import { Client as EndpointClient } from '../src/generated/endpoint';
11
- import { Client as ExecutorClient } from '../src/generated/executor';
12
- import { Client as ExecutorHelperClient } from '../src/generated/executor_helper';
13
- import { Client as SMLClient } from '../src/generated/sml';
14
- import {
15
- DEFAULT_DEPLOYER,
16
- EID,
17
- MSG_TYPE_VANILLA,
18
- NATIVE_TOKEN_ADDRESS,
19
- NETWORK_PASSPHRASE,
20
- ZRO_TOKEN_ADDRESS,
21
- } from './suites/constants';
22
- import { deployContract } from './suites/deploy';
23
- import { fundAccount, startStellarLocalnet, stopStellarLocalnet } from './suites/localnet';
24
- import { PacketSentEvent, scanPacketSentEvents } from './suites/scan';
25
- import { assertTransactionsSucceeded, signExecutorAuthEntries } from './utils';
26
-
27
- $.verbose = true;
28
- $.stdio = ['inherit', 'pipe', process.stderr];
29
-
30
- const CONTRACT_ADDRESSES = {
31
- endpointV2: '',
32
- sml: '',
33
- counter: '',
34
- executor: '',
35
- executorHelper: '',
36
- };
37
-
38
- let endpointClient: EndpointClient;
39
- let smlClient: SMLClient;
40
- let counterClient: CounterClient;
41
- let executorClient: ExecutorClient;
42
- let executorHelperClient: ExecutorHelperClient;
43
-
44
- const EXECUTOR_ADMIN = Keypair.random();
45
-
46
- // NOTE: run `stellar contract build --features sandbox` before running the test
47
-
48
- describe('Protocol testing', async () => {
49
- const repoRoot = await getFullyQualifiedRepoRootPath();
50
- const wasmDir = path.join(
51
- repoRoot,
52
- 'contracts',
53
- 'protocol',
54
- 'stellar',
55
- 'target',
56
- 'wasm32v1-none',
57
- 'release',
58
- );
59
-
60
- const ENDPOINT_WASM_PATH = path.join(wasmDir, 'endpoint_v2.wasm');
61
- const SML_WASM_PATH = path.join(wasmDir, 'simple_message_lib.wasm');
62
- const COUNTER_WASM_PATH = path.join(wasmDir, 'counter.wasm');
63
- const EXECUTOR_WASM_PATH = path.join(wasmDir, 'executor.wasm');
64
- const EXECUTOR_HELPER_WASM_PATH = path.join(wasmDir, 'executor_helper.wasm');
65
-
66
- beforeAll(async () => {
67
- await startStellarLocalnet();
68
- await fundAccount(EXECUTOR_ADMIN.publicKey());
69
- }, 120000); // 2 minute timeout for setup
70
-
71
- afterAll(async () => {
72
- await stopStellarLocalnet();
73
- });
74
-
75
- describe('Contract Deployments', () => {
76
- it('Deploy Endpoint', async () => {
77
- endpointClient = await deployContract<EndpointClient>(
78
- EndpointClient,
79
- ENDPOINT_WASM_PATH,
80
- {
81
- eid: EID,
82
- owner: DEFAULT_DEPLOYER.publicKey(),
83
- native_token: NATIVE_TOKEN_ADDRESS,
84
- },
85
- DEFAULT_DEPLOYER,
86
- );
87
-
88
- CONTRACT_ADDRESSES.endpointV2 = endpointClient.options.contractId;
89
- console.log('✅ Endpoint deployed:', CONTRACT_ADDRESSES.endpointV2);
90
- });
91
-
92
- it('Deploy SimpleMessageLib', async () => {
93
- smlClient = await deployContract<SMLClient>(
94
- SMLClient,
95
- SML_WASM_PATH,
96
- {
97
- owner: DEFAULT_DEPLOYER.publicKey(),
98
- endpoint: CONTRACT_ADDRESSES.endpointV2,
99
- fee_recipient: DEFAULT_DEPLOYER.publicKey(),
100
- },
101
- DEFAULT_DEPLOYER,
102
- );
103
-
104
- CONTRACT_ADDRESSES.sml = smlClient.options.contractId;
105
- console.log('✅ SimpleMessageLib deployed:', CONTRACT_ADDRESSES.sml);
106
- });
107
-
108
- it('Deploy Executor Helper', async () => {
109
- // Deploy ExecutorHelper first (it's stateless) so we can pass it to Executor
110
- executorHelperClient = await deployContract<ExecutorHelperClient>(
111
- ExecutorHelperClient,
112
- EXECUTOR_HELPER_WASM_PATH,
113
- undefined,
114
- DEFAULT_DEPLOYER,
115
- );
116
- CONTRACT_ADDRESSES.executorHelper = executorHelperClient.options.contractId;
117
- console.log('✅ Executor Helper deployed:', CONTRACT_ADDRESSES.executorHelper);
118
- });
119
-
120
- it('Deploy Executor', async () => {
121
- // Whitelist ExecutorHelper entry points
122
- const whitelist = [
123
- { contract: CONTRACT_ADDRESSES.executorHelper, fn_name: 'native_drop_and_execute' },
124
- { contract: CONTRACT_ADDRESSES.executorHelper, fn_name: 'execute' },
125
- { contract: CONTRACT_ADDRESSES.executorHelper, fn_name: 'compose' },
126
- ];
127
-
128
- executorClient = await deployContract<ExecutorClient>(
129
- ExecutorClient,
130
- EXECUTOR_WASM_PATH,
131
- {
132
- owner: DEFAULT_DEPLOYER.publicKey(),
133
- endpoint: CONTRACT_ADDRESSES.endpointV2,
134
- whitelist,
135
- admins: [EXECUTOR_ADMIN.publicKey()],
136
- message_libs: [CONTRACT_ADDRESSES.sml],
137
- // FIXME: Add price feed
138
- price_feed: CONTRACT_ADDRESSES.endpointV2,
139
- default_multiplier_bps: 10000,
140
- },
141
- DEFAULT_DEPLOYER,
142
- );
143
- CONTRACT_ADDRESSES.executor = executorClient.options.contractId;
144
- console.log('✅ Executor deployed:', CONTRACT_ADDRESSES.executor);
145
- });
146
-
147
- it('Deploy Counter', async () => {
148
- counterClient = await deployContract<CounterClient>(
149
- CounterClient,
150
- COUNTER_WASM_PATH,
151
- {
152
- owner: DEFAULT_DEPLOYER.publicKey(),
153
- endpoint: CONTRACT_ADDRESSES.endpointV2,
154
- delegate: DEFAULT_DEPLOYER.publicKey(),
155
- },
156
- DEFAULT_DEPLOYER,
157
- );
158
-
159
- CONTRACT_ADDRESSES.counter = counterClient.options.contractId;
160
- console.log('✅ Counter deployed:', CONTRACT_ADDRESSES.counter);
161
- });
162
-
163
- it('Verify all contracts deployed', () => {
164
- console.log('\n📋 All deployed contracts:');
165
- console.log(' Endpoint:', CONTRACT_ADDRESSES.endpointV2);
166
- console.log(' SimpleMessageLib:', CONTRACT_ADDRESSES.sml);
167
- console.log(' Counter:', CONTRACT_ADDRESSES.counter);
168
- console.log(' Executor:', CONTRACT_ADDRESSES.executor);
169
- console.log(' Executor Helper:', CONTRACT_ADDRESSES.executorHelper);
170
- });
171
- });
172
-
173
- describe('Wire Contracts', async () => {
174
- it('Register Library', async () => {
175
- const assembledTx = await endpointClient.register_library({
176
- new_lib: CONTRACT_ADDRESSES.sml,
177
- });
178
- await assembledTx.signAndSend();
179
- const { result: libs } = await endpointClient.get_registered_libraries({
180
- start: 0,
181
- max_count: 100,
182
- });
183
- expect(libs.length).toBe(1);
184
- expect(libs[0]).toBe(CONTRACT_ADDRESSES.sml);
185
- console.log('✅ Library registered');
186
- });
187
-
188
- it('Set Default Send Library', async () => {
189
- const assembledTx = await endpointClient.set_default_send_library({
190
- dst_eid: EID,
191
- new_lib: CONTRACT_ADDRESSES.sml,
192
- });
193
- await assembledTx.signAndSend();
194
- const { result: defaultSendLib } = await endpointClient.default_send_library({
195
- dst_eid: EID,
196
- });
197
- expect(defaultSendLib).toBe(CONTRACT_ADDRESSES.sml);
198
- console.log('✅ Default send library set');
199
- });
200
-
201
- it('Set Default Receive Library', async () => {
202
- const assembledTx = await endpointClient.set_default_receive_library({
203
- src_eid: EID,
204
- new_lib: CONTRACT_ADDRESSES.sml,
205
- grace_period: 0n,
206
- });
207
- await assembledTx.signAndSend();
208
- const { result: defaultReceiveLib } = await endpointClient.default_receive_library({
209
- src_eid: EID,
210
- });
211
- expect(defaultReceiveLib).toBe(CONTRACT_ADDRESSES.sml);
212
- console.log('✅ Default receive library set');
213
- });
214
-
215
- it('Set ZRO Token (Required even for 0 fee)', async () => {
216
- const setZroTx = await endpointClient.set_zro({
217
- zro: ZRO_TOKEN_ADDRESS,
218
- });
219
- await setZroTx.signAndSend();
220
-
221
- const { result: newZroToken } = await endpointClient.zro();
222
- expect(newZroToken).toBe(ZRO_TOKEN_ADDRESS);
223
- console.log('✅ ZRO token set:', ZRO_TOKEN_ADDRESS);
224
- });
225
-
226
- it('Set Counter Peer', async () => {
227
- const peerBytes = StrKey.decodeContract(CONTRACT_ADDRESSES.counter);
228
-
229
- const assembledTx = await counterClient.set_peer({
230
- eid: EID,
231
- peer: Buffer.from(peerBytes),
232
- });
233
- await assembledTx.signAndSend();
234
-
235
- const { result: peer } = await counterClient.peer({
236
- eid: EID,
237
- });
238
- expect(peer?.toString()).toBe(Buffer.from(peerBytes).toString());
239
- console.log('✅ Counter peer set for EID', EID);
240
- });
241
- });
242
-
243
- describe('Counter', async () => {
244
- let incrementLedger = 0;
245
- let packetSentEvent: PacketSentEvent;
246
- let guid: Buffer;
247
- let message: Buffer;
248
- it('Counter Increment', async () => {
249
- const { result: fee } = await counterClient.quote({
250
- dst_eid: EID,
251
- msg_type: MSG_TYPE_VANILLA,
252
- options: Buffer.from([]),
253
- pay_in_zro: true,
254
- });
255
- console.log('✅ Fee:', fee);
256
-
257
- const assembledTx = await counterClient.increment({
258
- caller: DEFAULT_DEPLOYER.publicKey(),
259
- dst_eid: EID,
260
- msg_type: MSG_TYPE_VANILLA,
261
- options: Buffer.from([]),
262
- fee: fee,
263
- });
264
- const sentTx = await assembledTx.signAndSend();
265
-
266
- // Extract ledger number from transaction response
267
- const txResponse = sentTx.getTransactionResponse;
268
- if (txResponse && 'ledger' in txResponse) {
269
- incrementLedger = txResponse.ledger;
270
- }
271
-
272
- const { result: outboundCount } = await counterClient.outbound_count({
273
- eid: EID,
274
- });
275
- expect(outboundCount).toBe(1n);
276
- console.log('✅ Counter incremented, outbound count:', outboundCount);
277
- });
278
-
279
- it('Scan PacketSent Events', async () => {
280
- const packetSentEvents = await scanPacketSentEvents(
281
- CONTRACT_ADDRESSES.endpointV2,
282
- incrementLedger,
283
- );
284
- expect(packetSentEvents.length).toBeGreaterThan(0);
285
- packetSentEvent = packetSentEvents[0];
286
- console.log(
287
- `✅ PacketSent events scanned successfully. Found ${packetSentEvents.length} events`,
288
- );
289
- });
290
-
291
- it('Verify Counter Message', async () => {
292
- const packet = PacketSerializer.deserialize(packetSentEvent.encoded_packet);
293
- guid = Buffer.from(packet.guid.replace('0x', ''), 'hex');
294
- message = Buffer.from(packet.message.replace('0x', ''), 'hex');
295
- const codec = PacketV1Codec.from(packet);
296
- const packetHeader = codec.header();
297
- const payloadHash = codec.payloadHash();
298
- const assembledTx = await smlClient.validate_packet({
299
- // caller: DEFAULT_DEPLOYER.publicKey(),
300
- header_bytes: Buffer.from(packetHeader.replace('0x', ''), 'hex'),
301
- payload_hash: Buffer.from(payloadHash.replace('0x', ''), 'hex'),
302
- });
303
- await assembledTx.signAndSend();
304
- });
305
-
306
- it('Receive Counter Message (with native_drop)', async () => {
307
- // Use native_drop_and_execute to test both native_drop and lz_receive
308
- const origin = {
309
- nonce: 1n,
310
- sender: Buffer.from(StrKey.decodeContract(CONTRACT_ADDRESSES.counter)),
311
- src_eid: EID,
312
- };
313
-
314
- const assembledTx = await executorHelperClient.native_drop_and_execute({
315
- executor: CONTRACT_ADDRESSES.executor,
316
- admin: EXECUTOR_ADMIN.publicKey(),
317
- origin,
318
- dst_eid: EID,
319
- oapp: CONTRACT_ADDRESSES.counter,
320
- // Native drop: send 100 stroops to counter contract
321
- native_drop_params: [
322
- {
323
- receiver: CONTRACT_ADDRESSES.counter,
324
- amount: 100n,
325
- },
326
- ],
327
- execute_params: {
328
- extra_data: Buffer.from([]),
329
- gas_limit: 0n,
330
- guid,
331
- message,
332
- origin,
333
- receiver: CONTRACT_ADDRESSES.counter,
334
- value: 11n,
335
- },
336
- });
337
-
338
- // Step 1: Sign the Executor's auth entries with the admin address as signature
339
- await signExecutorAuthEntries(
340
- CONTRACT_ADDRESSES.executor,
341
- EXECUTOR_ADMIN,
342
- assembledTx,
343
- NETWORK_PASSPHRASE,
344
- );
345
-
346
- // Step 2: Sign and send the transaction by Executor Admin
347
- const sentTx = await assembledTx.signAndSend();
348
-
349
- // Assert that the transaction success
350
- assertTransactionsSucceeded(sentTx, 'LzReceive');
351
-
352
- const txResponse = sentTx.getTransactionResponse;
353
- // Extract and print the transaction fee from the result
354
- if (txResponse && 'envelopeXdr' in txResponse && txResponse.envelopeXdr) {
355
- try {
356
- const txXdr = txResponse.envelopeXdr.toXDR('base64');
357
- const parsedTx = TransactionBuilder.fromXDR(txXdr, NETWORK_PASSPHRASE);
358
- const fee = parsedTx.fee;
359
- console.log(
360
- `💰 lz_receive transaction fee: ${fee} stroops (${(Number(fee) / 10000000).toFixed(7)} XLM)`,
361
- );
362
- } catch (_e) {
363
- // Ignore if we can't extract the fee
364
- }
365
- }
366
-
367
- // Verify the message was received
368
- const { result: inboundCount } = await counterClient.inbound_count({
369
- eid: EID,
370
- });
371
- expect(inboundCount).toBe(1n);
372
- console.log('✅ Counter message received, inbox count:', inboundCount);
373
- });
374
- });
375
- });
File without changes