@layerzerolabs/protocol-stellar-v2 0.2.40 → 0.2.43
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/.turbo/turbo-build.log +312 -397
- package/.turbo/turbo-lint.log +185 -245
- package/.turbo/turbo-test.log +1846 -1942
- package/Cargo.lock +22 -127
- package/Cargo.toml +4 -6
- package/contracts/common-macros/src/lib.rs +38 -15
- package/contracts/common-macros/src/lz_contract.rs +12 -21
- package/contracts/common-macros/src/tests/lz_contract.rs +17 -8
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__lz_contract__snapshot_generated_lz_contract_code.snap +20 -0
- package/contracts/common-macros/src/upgradeable.rs +37 -30
- package/contracts/endpoint-v2/src/endpoint_v2.rs +4 -3
- package/contracts/endpoint-v2/src/errors.rs +2 -2
- package/contracts/endpoint-v2/src/messaging_channel.rs +11 -0
- package/contracts/endpoint-v2/src/messaging_composer.rs +1 -0
- package/contracts/endpoint-v2/src/tests/endpoint_v2/clear.rs +12 -25
- package/contracts/endpoint-v2/src/tests/endpoint_v2/initializable.rs +4 -4
- package/contracts/endpoint-v2/src/tests/endpoint_v2/verifiable.rs +50 -10
- package/contracts/endpoint-v2/src/tests/endpoint_v2/verify.rs +6 -35
- package/contracts/endpoint-v2/src/tests/messaging_channel/burn.rs +2 -2
- package/contracts/endpoint-v2/src/tests/messaging_channel/clear_payload.rs +50 -1
- package/contracts/endpoint-v2/src/tests/messaging_channel/inbound.rs +78 -0
- package/contracts/endpoint-v2/src/tests/messaging_channel/insert_and_drain_pending_nonces.rs +272 -0
- package/contracts/endpoint-v2/src/tests/messaging_channel/mod.rs +1 -0
- package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +10 -5
- package/contracts/endpoint-v2/src/tests/messaging_channel/skip.rs +30 -0
- package/contracts/macro-integration-tests/tests/runtime/oapp/mod.rs +25 -6
- package/contracts/macro-integration-tests/tests/runtime/oapp/oapp_core.rs +13 -11
- package/contracts/macro-integration-tests/tests/runtime/oapp/options_type3.rs +13 -10
- package/contracts/macro-integration-tests/tests/runtime/oapp/receiver.rs +15 -11
- package/contracts/macro-integration-tests/tests/runtime/oapp/sender.rs +5 -3
- package/contracts/macro-integration-tests/tests/runtime/ownable/mod.rs +1 -1
- package/contracts/macro-integration-tests/tests/runtime/ownable/two_step_transfer.rs +14 -12
- package/contracts/macro-integration-tests/tests/runtime/upgradeable/migrate_guard_and_state.rs +3 -9
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_invalid_inner_option.stderr +24 -1
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_missing_internal.stderr +3 -3
- package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/upgradeable_rbac.rs +44 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_auth_trait.rs +28 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_auth_trait.stderr +397 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.rs +1 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.stderr +10 -10
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_all.rs +4 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_single_trait.rs +7 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/minimal_contract.rs +5 -4
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/struct_with_fields.rs +2 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/basic.rs +1 -1
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/attr_args.stderr +1 -1
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_auth_trait.stderr +2 -2
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_upgradeable_internal.stderr +2 -2
- package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/rbac.rs +44 -0
- package/contracts/oapps/counter/integration_tests/utils.rs +5 -3
- package/contracts/oapps/counter/src/counter.rs +4 -3
- package/contracts/oapps/counter/src/tests/mod.rs +16 -1
- package/contracts/oapps/counter/src/tests/test_counter.rs +5 -2
- package/contracts/oapps/oapp/src/oapp_core.rs +22 -8
- package/contracts/oapps/oapp/src/oapp_options_type3.rs +7 -5
- package/contracts/oapps/oapp/src/tests/mod.rs +21 -0
- package/contracts/oapps/oapp/src/tests/oapp_core.rs +14 -11
- package/contracts/oapps/oapp/src/tests/oapp_options_type3.rs +17 -10
- package/contracts/oapps/oapp/src/tests/oapp_receiver.rs +6 -3
- package/contracts/oapps/oapp/src/tests/oapp_sender.rs +5 -3
- package/contracts/oapps/oapp/src/tests/test_macros.rs +25 -0
- package/contracts/oapps/oapp-macros/src/generators.rs +12 -9
- package/contracts/oapps/oapp-macros/src/lib.rs +1 -1
- package/contracts/oapps/oapp-macros/src/tests/snapshots/oapp_macros__tests__oapp__snapshot_generate_oapp.snap +15 -7
- package/contracts/oapps/oft/integration-tests/setup.rs +22 -4
- package/contracts/oapps/oft/integration-tests/utils.rs +94 -13
- package/contracts/oapps/oft/src/extensions/oft_fee.rs +23 -10
- package/contracts/oapps/oft/src/extensions/pausable.rs +31 -10
- package/contracts/oapps/oft/src/extensions/rate_limiter.rs +9 -4
- package/contracts/oapps/oft/src/oft.rs +3 -3
- package/contracts/oapps/oft/src/tests/extensions/oft_fee.rs +39 -27
- package/contracts/oapps/oft/src/tests/extensions/pausable.rs +38 -24
- package/contracts/oapps/oft/src/tests/extensions/rate_limiter.rs +87 -69
- package/contracts/oapps/oft/src/tests/oft_types/lock_unlock.rs +1 -0
- package/contracts/oapps/oft-core/integration-tests/setup.rs +28 -3
- package/contracts/oapps/oft-core/src/oft_core.rs +11 -6
- package/contracts/oapps/oft-core/src/tests/test_msg_inspector.rs +20 -20
- package/contracts/oapps/oft-core/src/tests/test_utils.rs +33 -3
- package/contracts/upgrader/src/lib.rs +67 -30
- package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract3.wasm +0 -0
- package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract4.wasm +0 -0
- package/contracts/upgrader/src/tests/test_upgrader.rs +50 -4
- package/contracts/utils/src/ownable.rs +16 -5
- package/contracts/utils/src/tests/ownable.rs +39 -39
- package/contracts/utils/src/upgradeable.rs +60 -17
- package/docs/oapp-guide.md +18 -13
- package/package.json +5 -5
- package/sdk/.turbo/turbo-test.log +359 -348
- package/sdk/dist/generated/bml.d.ts +4 -4
- package/sdk/dist/generated/bml.js +6 -6
- package/sdk/dist/generated/counter.d.ts +269 -123
- package/sdk/dist/generated/counter.js +45 -25
- package/sdk/dist/generated/dvn.d.ts +4 -6
- package/sdk/dist/generated/dvn.js +8 -8
- package/sdk/dist/generated/dvn_fee_lib.d.ts +8 -10
- package/sdk/dist/generated/dvn_fee_lib.js +8 -8
- package/sdk/dist/generated/endpoint.d.ts +9 -9
- package/sdk/dist/generated/endpoint.js +9 -9
- package/sdk/dist/generated/executor.d.ts +9 -11
- package/sdk/dist/generated/executor.js +11 -11
- package/sdk/dist/generated/executor_fee_lib.d.ts +9 -11
- package/sdk/dist/generated/executor_fee_lib.js +11 -11
- package/sdk/dist/generated/executor_helper.d.ts +4 -4
- package/sdk/dist/generated/executor_helper.js +6 -6
- package/sdk/dist/generated/layerzero_view.d.ts +9 -11
- package/sdk/dist/generated/layerzero_view.js +11 -11
- package/sdk/dist/generated/oft.d.ts +323 -156
- package/sdk/dist/generated/oft.js +65 -43
- package/sdk/dist/generated/price_feed.d.ts +8 -10
- package/sdk/dist/generated/price_feed.js +8 -8
- package/sdk/dist/generated/sac_manager.d.ts +8 -8
- package/sdk/dist/generated/sac_manager.js +6 -6
- package/sdk/dist/generated/sml.d.ts +9 -9
- package/sdk/dist/generated/sml.js +9 -9
- package/sdk/dist/generated/treasury.d.ts +9 -9
- package/sdk/dist/generated/treasury.js +9 -9
- package/sdk/dist/generated/uln302.d.ts +9 -9
- package/sdk/dist/generated/uln302.js +9 -9
- package/sdk/dist/generated/upgrader.d.ts +25 -16
- package/sdk/dist/generated/upgrader.js +5 -5
- package/sdk/package.json +1 -1
- package/sdk/test/counter-sml.test.ts +20 -0
- package/sdk/test/counter-uln.test.ts +20 -0
- package/sdk/test/oft-sml.test.ts +22 -0
- package/sdk/test/upgrader.test.ts +1 -0
- package/ts-bindings-gen.toml +67 -0
- package/turbo.json +1 -8
- package/tools/ts-bindings-gen/Cargo.toml +0 -16
- package/tools/ts-bindings-gen/src/main.rs +0 -214
package/Cargo.lock
CHANGED
|
@@ -23,12 +23,6 @@ dependencies = [
|
|
|
23
23
|
"libc",
|
|
24
24
|
]
|
|
25
25
|
|
|
26
|
-
[[package]]
|
|
27
|
-
name = "anyhow"
|
|
28
|
-
version = "1.0.100"
|
|
29
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
30
|
-
checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
|
|
31
|
-
|
|
32
26
|
[[package]]
|
|
33
27
|
name = "arbitrary"
|
|
34
28
|
version = "1.3.2"
|
|
@@ -89,7 +83,7 @@ dependencies = [
|
|
|
89
83
|
"ark-serialize",
|
|
90
84
|
"ark-std",
|
|
91
85
|
"derivative",
|
|
92
|
-
"digest
|
|
86
|
+
"digest",
|
|
93
87
|
"itertools 0.10.5",
|
|
94
88
|
"num-bigint",
|
|
95
89
|
"num-traits",
|
|
@@ -142,7 +136,7 @@ checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5"
|
|
|
142
136
|
dependencies = [
|
|
143
137
|
"ark-serialize-derive",
|
|
144
138
|
"ark-std",
|
|
145
|
-
"digest
|
|
139
|
+
"digest",
|
|
146
140
|
"num-bigint",
|
|
147
141
|
]
|
|
148
142
|
|
|
@@ -179,12 +173,6 @@ version = "0.2.0"
|
|
|
179
173
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
180
174
|
checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
|
|
181
175
|
|
|
182
|
-
[[package]]
|
|
183
|
-
name = "base64"
|
|
184
|
-
version = "0.21.7"
|
|
185
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
186
|
-
checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
|
|
187
|
-
|
|
188
176
|
[[package]]
|
|
189
177
|
name = "base64"
|
|
190
178
|
version = "0.22.1"
|
|
@@ -197,15 +185,6 @@ version = "1.8.0"
|
|
|
197
185
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
198
186
|
checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba"
|
|
199
187
|
|
|
200
|
-
[[package]]
|
|
201
|
-
name = "block-buffer"
|
|
202
|
-
version = "0.9.0"
|
|
203
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
204
|
-
checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
|
|
205
|
-
dependencies = [
|
|
206
|
-
"generic-array",
|
|
207
|
-
]
|
|
208
|
-
|
|
209
188
|
[[package]]
|
|
210
189
|
name = "block-buffer"
|
|
211
190
|
version = "0.10.4"
|
|
@@ -292,7 +271,7 @@ dependencies = [
|
|
|
292
271
|
name = "common-macros"
|
|
293
272
|
version = "0.0.1"
|
|
294
273
|
dependencies = [
|
|
295
|
-
"heck
|
|
274
|
+
"heck",
|
|
296
275
|
"insta",
|
|
297
276
|
"itertools 0.14.0",
|
|
298
277
|
"prettyplease",
|
|
@@ -420,7 +399,7 @@ dependencies = [
|
|
|
420
399
|
"cfg-if",
|
|
421
400
|
"cpufeatures",
|
|
422
401
|
"curve25519-dalek-derive",
|
|
423
|
-
"digest
|
|
402
|
+
"digest",
|
|
424
403
|
"fiat-crypto",
|
|
425
404
|
"rustc_version",
|
|
426
405
|
"subtle",
|
|
@@ -556,22 +535,13 @@ dependencies = [
|
|
|
556
535
|
"syn 2.0.108",
|
|
557
536
|
]
|
|
558
537
|
|
|
559
|
-
[[package]]
|
|
560
|
-
name = "digest"
|
|
561
|
-
version = "0.9.0"
|
|
562
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
563
|
-
checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
|
|
564
|
-
dependencies = [
|
|
565
|
-
"generic-array",
|
|
566
|
-
]
|
|
567
|
-
|
|
568
538
|
[[package]]
|
|
569
539
|
name = "digest"
|
|
570
540
|
version = "0.10.7"
|
|
571
541
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
572
542
|
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
|
|
573
543
|
dependencies = [
|
|
574
|
-
"block-buffer
|
|
544
|
+
"block-buffer",
|
|
575
545
|
"const-oid",
|
|
576
546
|
"crypto-common",
|
|
577
547
|
"subtle",
|
|
@@ -640,7 +610,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
640
610
|
checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca"
|
|
641
611
|
dependencies = [
|
|
642
612
|
"der",
|
|
643
|
-
"digest
|
|
613
|
+
"digest",
|
|
644
614
|
"elliptic-curve",
|
|
645
615
|
"rfc6979",
|
|
646
616
|
"signature",
|
|
@@ -667,7 +637,7 @@ dependencies = [
|
|
|
667
637
|
"ed25519",
|
|
668
638
|
"rand_core",
|
|
669
639
|
"serde",
|
|
670
|
-
"sha2
|
|
640
|
+
"sha2",
|
|
671
641
|
"subtle",
|
|
672
642
|
"zeroize",
|
|
673
643
|
]
|
|
@@ -686,7 +656,7 @@ checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47"
|
|
|
686
656
|
dependencies = [
|
|
687
657
|
"base16ct",
|
|
688
658
|
"crypto-bigint",
|
|
689
|
-
"digest
|
|
659
|
+
"digest",
|
|
690
660
|
"ff",
|
|
691
661
|
"generic-array",
|
|
692
662
|
"group",
|
|
@@ -887,12 +857,6 @@ dependencies = [
|
|
|
887
857
|
"stable_deref_trait",
|
|
888
858
|
]
|
|
889
859
|
|
|
890
|
-
[[package]]
|
|
891
|
-
name = "heck"
|
|
892
|
-
version = "0.4.1"
|
|
893
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
894
|
-
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
|
|
895
|
-
|
|
896
860
|
[[package]]
|
|
897
861
|
name = "heck"
|
|
898
862
|
version = "0.5.0"
|
|
@@ -926,7 +890,7 @@ version = "0.12.1"
|
|
|
926
890
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
927
891
|
checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
|
|
928
892
|
dependencies = [
|
|
929
|
-
"digest
|
|
893
|
+
"digest",
|
|
930
894
|
]
|
|
931
895
|
|
|
932
896
|
[[package]]
|
|
@@ -959,26 +923,6 @@ version = "1.0.1"
|
|
|
959
923
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
960
924
|
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
|
961
925
|
|
|
962
|
-
[[package]]
|
|
963
|
-
name = "include_dir"
|
|
964
|
-
version = "0.7.4"
|
|
965
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
966
|
-
checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd"
|
|
967
|
-
dependencies = [
|
|
968
|
-
"glob",
|
|
969
|
-
"include_dir_macros",
|
|
970
|
-
]
|
|
971
|
-
|
|
972
|
-
[[package]]
|
|
973
|
-
name = "include_dir_macros"
|
|
974
|
-
version = "0.7.4"
|
|
975
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
976
|
-
checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75"
|
|
977
|
-
dependencies = [
|
|
978
|
-
"proc-macro2",
|
|
979
|
-
"quote",
|
|
980
|
-
]
|
|
981
|
-
|
|
982
926
|
[[package]]
|
|
983
927
|
name = "indexmap"
|
|
984
928
|
version = "1.9.3"
|
|
@@ -1063,7 +1007,7 @@ dependencies = [
|
|
|
1063
1007
|
"ecdsa",
|
|
1064
1008
|
"elliptic-curve",
|
|
1065
1009
|
"once_cell",
|
|
1066
|
-
"sha2
|
|
1010
|
+
"sha2",
|
|
1067
1011
|
"signature",
|
|
1068
1012
|
]
|
|
1069
1013
|
|
|
@@ -1258,12 +1202,6 @@ version = "1.21.3"
|
|
|
1258
1202
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1259
1203
|
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
|
|
1260
1204
|
|
|
1261
|
-
[[package]]
|
|
1262
|
-
name = "opaque-debug"
|
|
1263
|
-
version = "0.3.1"
|
|
1264
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1265
|
-
checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"
|
|
1266
|
-
|
|
1267
1205
|
[[package]]
|
|
1268
1206
|
name = "p256"
|
|
1269
1207
|
version = "0.13.2"
|
|
@@ -1273,7 +1211,7 @@ dependencies = [
|
|
|
1273
1211
|
"ecdsa",
|
|
1274
1212
|
"elliptic-curve",
|
|
1275
1213
|
"primeorder",
|
|
1276
|
-
"sha2
|
|
1214
|
+
"sha2",
|
|
1277
1215
|
]
|
|
1278
1216
|
|
|
1279
1217
|
[[package]]
|
|
@@ -1560,7 +1498,7 @@ version = "3.15.1"
|
|
|
1560
1498
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1561
1499
|
checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04"
|
|
1562
1500
|
dependencies = [
|
|
1563
|
-
"base64
|
|
1501
|
+
"base64",
|
|
1564
1502
|
"chrono",
|
|
1565
1503
|
"hex",
|
|
1566
1504
|
"indexmap 1.9.3",
|
|
@@ -1586,19 +1524,6 @@ dependencies = [
|
|
|
1586
1524
|
"syn 2.0.108",
|
|
1587
1525
|
]
|
|
1588
1526
|
|
|
1589
|
-
[[package]]
|
|
1590
|
-
name = "sha2"
|
|
1591
|
-
version = "0.9.9"
|
|
1592
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1593
|
-
checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
|
|
1594
|
-
dependencies = [
|
|
1595
|
-
"block-buffer 0.9.0",
|
|
1596
|
-
"cfg-if",
|
|
1597
|
-
"cpufeatures",
|
|
1598
|
-
"digest 0.9.0",
|
|
1599
|
-
"opaque-debug",
|
|
1600
|
-
]
|
|
1601
|
-
|
|
1602
1527
|
[[package]]
|
|
1603
1528
|
name = "sha2"
|
|
1604
1529
|
version = "0.10.9"
|
|
@@ -1607,7 +1532,7 @@ checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
|
|
|
1607
1532
|
dependencies = [
|
|
1608
1533
|
"cfg-if",
|
|
1609
1534
|
"cpufeatures",
|
|
1610
|
-
"digest
|
|
1535
|
+
"digest",
|
|
1611
1536
|
]
|
|
1612
1537
|
|
|
1613
1538
|
[[package]]
|
|
@@ -1616,7 +1541,7 @@ version = "0.10.8"
|
|
|
1616
1541
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1617
1542
|
checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60"
|
|
1618
1543
|
dependencies = [
|
|
1619
|
-
"digest
|
|
1544
|
+
"digest",
|
|
1620
1545
|
"keccak",
|
|
1621
1546
|
]
|
|
1622
1547
|
|
|
@@ -1632,7 +1557,7 @@ version = "2.2.0"
|
|
|
1632
1557
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1633
1558
|
checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
|
|
1634
1559
|
dependencies = [
|
|
1635
|
-
"digest
|
|
1560
|
+
"digest",
|
|
1636
1561
|
"rand_core",
|
|
1637
1562
|
]
|
|
1638
1563
|
|
|
@@ -1728,7 +1653,7 @@ dependencies = [
|
|
|
1728
1653
|
"rand",
|
|
1729
1654
|
"rand_chacha",
|
|
1730
1655
|
"sec1",
|
|
1731
|
-
"sha2
|
|
1656
|
+
"sha2",
|
|
1732
1657
|
"sha3",
|
|
1733
1658
|
"soroban-builtin-sdk-macros",
|
|
1734
1659
|
"soroban-env-common",
|
|
@@ -1798,12 +1723,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
1798
1723
|
checksum = "2a0107e34575ec704ce29407695462e79e6b0e13ce7af6431b2f15c313e34464"
|
|
1799
1724
|
dependencies = [
|
|
1800
1725
|
"darling 0.20.11",
|
|
1801
|
-
"heck
|
|
1726
|
+
"heck",
|
|
1802
1727
|
"itertools 0.10.5",
|
|
1803
1728
|
"macro-string",
|
|
1804
1729
|
"proc-macro2",
|
|
1805
1730
|
"quote",
|
|
1806
|
-
"sha2
|
|
1731
|
+
"sha2",
|
|
1807
1732
|
"soroban-env-common",
|
|
1808
1733
|
"soroban-spec",
|
|
1809
1734
|
"soroban-spec-rust",
|
|
@@ -1817,7 +1742,7 @@ version = "25.1.1"
|
|
|
1817
1742
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1818
1743
|
checksum = "53a1c9f6ccc6aa78518545e3cf542bd26f11d9085328a2e1c06c90514733fe15"
|
|
1819
1744
|
dependencies = [
|
|
1820
|
-
"base64
|
|
1745
|
+
"base64",
|
|
1821
1746
|
"stellar-xdr",
|
|
1822
1747
|
"thiserror",
|
|
1823
1748
|
"wasmparser",
|
|
@@ -1832,33 +1757,13 @@ dependencies = [
|
|
|
1832
1757
|
"prettyplease",
|
|
1833
1758
|
"proc-macro2",
|
|
1834
1759
|
"quote",
|
|
1835
|
-
"sha2
|
|
1760
|
+
"sha2",
|
|
1836
1761
|
"soroban-spec",
|
|
1837
1762
|
"stellar-xdr",
|
|
1838
1763
|
"syn 2.0.108",
|
|
1839
1764
|
"thiserror",
|
|
1840
1765
|
]
|
|
1841
1766
|
|
|
1842
|
-
[[package]]
|
|
1843
|
-
name = "soroban-spec-typescript"
|
|
1844
|
-
version = "25.1.0"
|
|
1845
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1846
|
-
checksum = "25684cb264ba39bac049ba93fc66fd241993c9aefb82d60d60417736408ec61a"
|
|
1847
|
-
dependencies = [
|
|
1848
|
-
"base64 0.21.7",
|
|
1849
|
-
"heck 0.4.1",
|
|
1850
|
-
"include_dir",
|
|
1851
|
-
"itertools 0.10.5",
|
|
1852
|
-
"prettyplease",
|
|
1853
|
-
"serde",
|
|
1854
|
-
"serde_derive",
|
|
1855
|
-
"serde_json",
|
|
1856
|
-
"sha2 0.9.9",
|
|
1857
|
-
"soroban-spec",
|
|
1858
|
-
"stellar-xdr",
|
|
1859
|
-
"thiserror",
|
|
1860
|
-
]
|
|
1861
|
-
|
|
1862
1767
|
[[package]]
|
|
1863
1768
|
name = "soroban-wasmi"
|
|
1864
1769
|
version = "0.31.1-soroban.20.0.1"
|
|
@@ -1928,7 +1833,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
1928
1833
|
checksum = "10d20dafed80076b227d4b17c0c508a4bbc4d5e4c3d4c1de7cd42242df4b1eaf"
|
|
1929
1834
|
dependencies = [
|
|
1930
1835
|
"arbitrary",
|
|
1931
|
-
"base64
|
|
1836
|
+
"base64",
|
|
1932
1837
|
"cfg_eval",
|
|
1933
1838
|
"crate-git-revision",
|
|
1934
1839
|
"escape-bytes",
|
|
@@ -1936,7 +1841,7 @@ dependencies = [
|
|
|
1936
1841
|
"hex",
|
|
1937
1842
|
"serde",
|
|
1938
1843
|
"serde_with",
|
|
1939
|
-
"sha2
|
|
1844
|
+
"sha2",
|
|
1940
1845
|
"stellar-strkey 0.0.13",
|
|
1941
1846
|
]
|
|
1942
1847
|
|
|
@@ -2105,16 +2010,6 @@ dependencies = [
|
|
|
2105
2010
|
"toml",
|
|
2106
2011
|
]
|
|
2107
2012
|
|
|
2108
|
-
[[package]]
|
|
2109
|
-
name = "ts-bindings-gen"
|
|
2110
|
-
version = "0.0.1"
|
|
2111
|
-
dependencies = [
|
|
2112
|
-
"anyhow",
|
|
2113
|
-
"base64 0.22.1",
|
|
2114
|
-
"sha2 0.10.9",
|
|
2115
|
-
"soroban-spec-typescript",
|
|
2116
|
-
]
|
|
2117
|
-
|
|
2118
2013
|
[[package]]
|
|
2119
2014
|
name = "typenum"
|
|
2120
2015
|
version = "1.19.0"
|
package/Cargo.toml
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
[workspace]
|
|
2
2
|
resolver = "2"
|
|
3
3
|
members = [
|
|
4
|
-
"contracts/*",
|
|
5
|
-
"contracts/message-libs/*",
|
|
6
|
-
"contracts/oapps/*",
|
|
7
|
-
"contracts/workers/*",
|
|
8
|
-
"tools/*",
|
|
4
|
+
"contracts/*",
|
|
5
|
+
"contracts/message-libs/*",
|
|
6
|
+
"contracts/oapps/*",
|
|
7
|
+
"contracts/workers/*",
|
|
9
8
|
]
|
|
10
9
|
|
|
11
10
|
[workspace.package]
|
|
@@ -15,7 +14,6 @@ version = "0.0.1"
|
|
|
15
14
|
|
|
16
15
|
[workspace.dependencies]
|
|
17
16
|
soroban-sdk = { version = "25.1.1", features = ["hazmat-address", "hazmat-crypto"] }
|
|
18
|
-
soroban-spec-typescript = "25.1.0" # used in tools/ts-bindings-gen
|
|
19
17
|
|
|
20
18
|
# Third-party dependencies (production)
|
|
21
19
|
cfg-if = { version = "1.0", default-features = false }
|
|
@@ -457,23 +457,27 @@ pub fn contract_trait(attr: TokenStream, item: TokenStream) -> TokenStream {
|
|
|
457
457
|
// Upgradeable Macro
|
|
458
458
|
// ============================================================================
|
|
459
459
|
|
|
460
|
-
/// Generates upgradeable implementation using
|
|
460
|
+
/// Generates upgradeable implementation using `Upgradeable` or `UpgradeableRbac` traits.
|
|
461
461
|
///
|
|
462
|
-
///
|
|
462
|
+
/// `Upgradeable` uses Auth directly; `UpgradeableRbac` layers RoleBased
|
|
463
|
+
/// access control on top of Auth.
|
|
463
464
|
///
|
|
464
465
|
/// # Requirements
|
|
465
|
-
/// -
|
|
466
|
+
/// - `Upgradeable` (default): contract must implement `Auth` (via `#[ownable]` or `#[multisig]`)
|
|
467
|
+
/// - `UpgradeableRbac` (with `rbac`): contract must implement both `Auth` and `RoleBasedAccessControl` (e.g. from OApp)
|
|
466
468
|
/// - By default, requires manual `UpgradeableInternal` implementation
|
|
467
469
|
/// - With `no_migration` flag, auto-generates a no-op `UpgradeableInternal` impl
|
|
468
470
|
///
|
|
469
471
|
/// # Options
|
|
470
|
-
/// - `#[upgradeable]` -
|
|
471
|
-
/// - `#[upgradeable(no_migration)]` -
|
|
472
|
+
/// - `#[upgradeable]` - Implements Upgradeable, requires manual `UpgradeableInternal` (safety by default)
|
|
473
|
+
/// - `#[upgradeable(no_migration)]` - Implements Upgradeable, auto-generates no-op `UpgradeableInternal`
|
|
474
|
+
/// - `#[upgradeable(rbac)]` - Implements UpgradeableRbac, requires manual `UpgradeableInternal`
|
|
475
|
+
/// - `#[upgradeable(rbac, no_migration)]` - Implements UpgradeableRbac, auto-generates no-op `UpgradeableInternal`
|
|
472
476
|
///
|
|
473
477
|
/// # Example
|
|
474
478
|
/// ```ignore
|
|
475
|
-
/// //
|
|
476
|
-
/// #[ownable]
|
|
479
|
+
/// // Implements Upgradeable (default)
|
|
480
|
+
/// #[ownable]
|
|
477
481
|
/// #[upgradeable]
|
|
478
482
|
/// pub struct MyContract;
|
|
479
483
|
///
|
|
@@ -485,16 +489,32 @@ pub fn contract_trait(attr: TokenStream, item: TokenStream) -> TokenStream {
|
|
|
485
489
|
/// }
|
|
486
490
|
/// }
|
|
487
491
|
///
|
|
488
|
-
/// //
|
|
489
|
-
/// #[ownable]
|
|
492
|
+
/// // Implements Upgradeable (no migration)
|
|
493
|
+
/// #[ownable]
|
|
490
494
|
/// #[upgradeable(no_migration)]
|
|
491
|
-
/// pub struct
|
|
492
|
-
///
|
|
495
|
+
/// pub struct SimpleContract;
|
|
496
|
+
///
|
|
497
|
+
/// // Implements UpgradeableRbac (layered)
|
|
498
|
+
/// #[ownable]
|
|
499
|
+
/// #[upgradeable(rbac)]
|
|
500
|
+
/// pub struct RbacContract;
|
|
501
|
+
///
|
|
502
|
+
/// impl utils::upgradeable::UpgradeableInternal for RbacContract {
|
|
503
|
+
/// type MigrationData = MyMigrationParams;
|
|
504
|
+
///
|
|
505
|
+
/// fn __migrate(env: &Env, migration_data: &Self::MigrationData) {
|
|
506
|
+
/// // Custom migration logic here
|
|
507
|
+
/// }
|
|
508
|
+
/// }
|
|
509
|
+
///
|
|
510
|
+
/// // Implements UpgradeableRbac (no migration)
|
|
511
|
+
/// #[ownable]
|
|
512
|
+
/// #[upgradeable(rbac, no_migration)]
|
|
513
|
+
/// pub struct SimpleRbacContract;
|
|
493
514
|
/// ```
|
|
494
515
|
///
|
|
495
516
|
/// Generated code includes:
|
|
496
|
-
/// - `upgrade
|
|
497
|
-
/// - `migrate(env, migration_data)` - Runs migration after upgrade (auth required, XDR-decodes `Bytes` to `MigrationData`)
|
|
517
|
+
/// - `upgrade` / `migrate` - Auth-based or Auth + RoleBased depending on options
|
|
498
518
|
/// - `contractmeta!` with `binver` set to the Cargo package version (if not 0.0.0)
|
|
499
519
|
#[proc_macro_attribute]
|
|
500
520
|
pub fn upgradeable(attr: TokenStream, item: TokenStream) -> TokenStream {
|
|
@@ -518,8 +538,7 @@ pub fn upgradeable(attr: TokenStream, item: TokenStream) -> TokenStream {
|
|
|
518
538
|
/// - `#[ownable]` - Single-owner access control
|
|
519
539
|
///
|
|
520
540
|
/// # Options
|
|
521
|
-
/// - `upgradeable` - Adds `#[upgradeable]
|
|
522
|
-
/// - `upgradeable(no_migration)` - Adds `#[upgradeable(no_migration)]`, auto-generates no-op impl
|
|
541
|
+
/// - `upgradeable(...)` - Adds `#[upgradeable(...)]`; content is passed verbatim to the upgradeable macro
|
|
523
542
|
/// - `multisig` - Uses `#[multisig]` instead of `#[ownable]`
|
|
524
543
|
///
|
|
525
544
|
/// # Examples
|
|
@@ -536,6 +555,10 @@ pub fn upgradeable(attr: TokenStream, item: TokenStream) -> TokenStream {
|
|
|
536
555
|
/// #[lz_contract(upgradeable(no_migration))]
|
|
537
556
|
/// pub struct DVNFeeLib;
|
|
538
557
|
///
|
|
558
|
+
/// // Contract with RBAC-based upgrade support
|
|
559
|
+
/// #[lz_contract(upgradeable(rbac))]
|
|
560
|
+
/// pub struct RbacOft;
|
|
561
|
+
///
|
|
539
562
|
/// // Contract with multisig auth and upgrade support (no migration)
|
|
540
563
|
/// #[lz_contract(multisig, upgradeable(no_migration))]
|
|
541
564
|
/// pub struct DVN;
|
|
@@ -16,21 +16,20 @@ use syn::{
|
|
|
16
16
|
pub struct LzContractConfig {
|
|
17
17
|
/// If true, adds `#[upgradeable]` for contract upgrade support.
|
|
18
18
|
pub upgradeable: bool,
|
|
19
|
-
///
|
|
20
|
-
///
|
|
21
|
-
pub
|
|
19
|
+
/// Raw tokens inside `upgradeable(...)`, passed verbatim to the upgradeable macro.
|
|
20
|
+
/// Empty when `upgradeable` has no parentheses.
|
|
21
|
+
pub upgradeable_attr: TokenStream,
|
|
22
22
|
/// If true, uses `#[multisig]` instead of `#[ownable]` for auth.
|
|
23
23
|
pub multisig: bool,
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
impl Parse for LzContractConfig {
|
|
27
27
|
fn parse(input: ParseStream) -> syn::Result<Self> {
|
|
28
|
+
let mut config = Self::default();
|
|
28
29
|
if input.is_empty() {
|
|
29
|
-
return Ok(
|
|
30
|
+
return Ok(config);
|
|
30
31
|
}
|
|
31
32
|
|
|
32
|
-
let mut config = Self::default();
|
|
33
|
-
|
|
34
33
|
// Parse comma-separated items, handling nested parentheses for upgradeable(no_migration)
|
|
35
34
|
while !input.is_empty() {
|
|
36
35
|
let ident: Ident = input.parse()?;
|
|
@@ -38,19 +37,11 @@ impl Parse for LzContractConfig {
|
|
|
38
37
|
match ident.to_string().as_str() {
|
|
39
38
|
"upgradeable" => {
|
|
40
39
|
config.upgradeable = true;
|
|
41
|
-
//
|
|
40
|
+
// Pass through optional (...) content verbatim to the upgradeable macro
|
|
42
41
|
if input.peek(syn::token::Paren) {
|
|
43
42
|
let content;
|
|
44
43
|
parenthesized!(content in input);
|
|
45
|
-
|
|
46
|
-
if inner_ident == "no_migration" {
|
|
47
|
-
config.no_migration = true;
|
|
48
|
-
} else {
|
|
49
|
-
return Err(Error::new(inner_ident.span(), "expected `no_migration`"));
|
|
50
|
-
}
|
|
51
|
-
if !content.is_empty() {
|
|
52
|
-
return Err(Error::new(content.span(), "unexpected tokens in `upgradeable(...)`"));
|
|
53
|
-
}
|
|
44
|
+
config.upgradeable_attr = content.parse()?;
|
|
54
45
|
}
|
|
55
46
|
}
|
|
56
47
|
"multisig" => config.multisig = true,
|
|
@@ -79,8 +70,7 @@ impl Parse for LzContractConfig {
|
|
|
79
70
|
/// - `#[common_macros::ownable]` - Single-owner access control
|
|
80
71
|
///
|
|
81
72
|
/// # Options
|
|
82
|
-
/// - `upgradeable` - Adds `#[upgradeable]
|
|
83
|
-
/// - `upgradeable(no_migration)` - Adds `#[upgradeable(no_migration)]`, auto-generates no-op impl
|
|
73
|
+
/// - `upgradeable(...)` - Adds `#[upgradeable(...)]`; content is passed verbatim to the upgradeable macro
|
|
84
74
|
/// - `multisig` - Uses `#[multisig]` instead of `#[ownable]`
|
|
85
75
|
pub fn generate_lz_contract(attr: TokenStream, input: TokenStream) -> TokenStream {
|
|
86
76
|
let config: LzContractConfig =
|
|
@@ -94,10 +84,11 @@ pub fn generate_lz_contract(attr: TokenStream, input: TokenStream) -> TokenStrea
|
|
|
94
84
|
};
|
|
95
85
|
|
|
96
86
|
let upgrade = if config.upgradeable {
|
|
97
|
-
if config.
|
|
98
|
-
quote! { #[common_macros::upgradeable(no_migration)] }
|
|
99
|
-
} else {
|
|
87
|
+
if config.upgradeable_attr.is_empty() {
|
|
100
88
|
quote! { #[common_macros::upgradeable] }
|
|
89
|
+
} else {
|
|
90
|
+
let upgradeable_attr = &config.upgradeable_attr;
|
|
91
|
+
quote! { #[common_macros::upgradeable(#upgradeable_attr)] }
|
|
101
92
|
}
|
|
102
93
|
} else {
|
|
103
94
|
quote! {}
|
|
@@ -30,9 +30,24 @@ fn snapshot_generated_lz_contract_code() {
|
|
|
30
30
|
&syn::parse2::<syn::File>(upgradeable_no_migration_result).expect("failed to parse generated code"),
|
|
31
31
|
);
|
|
32
32
|
|
|
33
|
+
let upgradeable_rbac_result =
|
|
34
|
+
crate::lz_contract::generate_lz_contract(quote! { upgradeable(rbac) }, quote! { pub struct MyContract; });
|
|
35
|
+
let upgradeable_rbac_formatted = prettyplease::unparse(
|
|
36
|
+
&syn::parse2::<syn::File>(upgradeable_rbac_result).expect("failed to parse generated code"),
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
// Pass-through: order and content preserved verbatim
|
|
40
|
+
let upgradeable_rbac_no_migration_result = crate::lz_contract::generate_lz_contract(
|
|
41
|
+
quote! { upgradeable(rbac, no_migration) },
|
|
42
|
+
quote! { pub struct MyContract; },
|
|
43
|
+
);
|
|
44
|
+
let upgradeable_rbac_no_migration_formatted = prettyplease::unparse(
|
|
45
|
+
&syn::parse2::<syn::File>(upgradeable_rbac_no_migration_result).expect("failed to parse generated code"),
|
|
46
|
+
);
|
|
47
|
+
|
|
33
48
|
let combined = format!(
|
|
34
|
-
"// === Default (ownable) ===\n\n{}\n\n// === MultiSig + Upgradeable ===\n\n{}\n\n// === Upgradeable (no_migration) ===\n\n{}",
|
|
35
|
-
default_formatted, multisig_upgradeable_formatted, upgradeable_no_migration_formatted
|
|
49
|
+
"// === Default (ownable) ===\n\n{}\n\n// === MultiSig + Upgradeable ===\n\n{}\n\n// === Upgradeable (no_migration) ===\n\n{}\n\n// === Upgradeable (rbac) ===\n\n{}\n\n// === Upgradeable (rbac, no_migration) pass-through ===\n\n{}",
|
|
50
|
+
default_formatted, multisig_upgradeable_formatted, upgradeable_no_migration_formatted, upgradeable_rbac_formatted, upgradeable_rbac_no_migration_formatted
|
|
36
51
|
);
|
|
37
52
|
|
|
38
53
|
insta::assert_snapshot!(combined);
|
|
@@ -49,12 +64,6 @@ fn test_lz_contract_invalid_config_table_driven() {
|
|
|
49
64
|
let cases: Vec<(&str, TokenStream, &str)> = vec![
|
|
50
65
|
("unknown option", quote! { not_a_real_option }, "expected one of `upgradeable`, `multisig`"),
|
|
51
66
|
("invalid attr syntax", quote! { 123 }, "failed to parse lz_contract config"),
|
|
52
|
-
("upgradeable(bad_inner)", quote! { upgradeable(not_migration) }, "expected `no_migration`"),
|
|
53
|
-
(
|
|
54
|
-
"upgradeable(extra_tokens)",
|
|
55
|
-
quote! { upgradeable(no_migration, extra) },
|
|
56
|
-
"unexpected tokens in `upgradeable(...)`",
|
|
57
|
-
),
|
|
58
67
|
];
|
|
59
68
|
|
|
60
69
|
for (case, attr, expected_substring) in cases {
|
|
@@ -29,3 +29,23 @@ pub struct MyContract;
|
|
|
29
29
|
#[common_macros::ownable]
|
|
30
30
|
#[common_macros::upgradeable(no_migration)]
|
|
31
31
|
pub struct MyContract;
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
// === Upgradeable (rbac) ===
|
|
35
|
+
|
|
36
|
+
#[soroban_sdk::contract]
|
|
37
|
+
#[common_macros::ttl_configurable]
|
|
38
|
+
#[common_macros::ttl_extendable]
|
|
39
|
+
#[common_macros::ownable]
|
|
40
|
+
#[common_macros::upgradeable(rbac)]
|
|
41
|
+
pub struct MyContract;
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
// === Upgradeable (rbac, no_migration) pass-through ===
|
|
45
|
+
|
|
46
|
+
#[soroban_sdk::contract]
|
|
47
|
+
#[common_macros::ttl_configurable]
|
|
48
|
+
#[common_macros::ttl_extendable]
|
|
49
|
+
#[common_macros::ownable]
|
|
50
|
+
#[common_macros::upgradeable(rbac, no_migration)]
|
|
51
|
+
pub struct MyContract;
|