From 89f8ddf6ceebcf9eb7beaee86eb757b6cca84616 Mon Sep 17 00:00:00 2001 From: Daniil Polyakov Date: Fri, 10 Apr 2026 20:23:25 +0300 Subject: [PATCH] feat: move initial accounts data into genesis --- .deny.toml | 4 +- .github/workflows/ci.yml | 30 +- Cargo.lock | 31 + Cargo.toml | 3 + artifacts/program_methods/amm.bin | Bin 533012 -> 532968 bytes .../associated_token_account.bin | Bin 451028 -> 451056 bytes .../authenticated_transfer.bin | Bin 386564 -> 425816 bytes artifacts/program_methods/clock.bin | Bin 403576 -> 403560 bytes .../genesis_supply_account.bin | Bin 0 -> 419688 bytes .../genesis_supply_private_account.bin | Bin 0 -> 426760 bytes artifacts/program_methods/pinata.bin | Bin 394044 -> 394044 bytes artifacts/program_methods/pinata_token.bin | Bin 399908 -> 399908 bytes .../privacy_preserving_circuit.bin | Bin 564492 -> 564540 bytes artifacts/program_methods/token.bin | Bin 483072 -> 483040 bytes .../auth_asserting_noop.bin | Bin 384748 -> 384748 bytes .../auth_transfer_proxy.bin | Bin 403044 -> 403044 bytes artifacts/test_program_methods/burner.bin | Bin 386792 -> 389356 bytes .../test_program_methods/chain_caller.bin | Bin 403652 -> 405608 bytes .../test_program_methods/changer_claimer.bin | Bin 389304 -> 389304 bytes artifacts/test_program_methods/claimer.bin | Bin 386124 -> 386156 bytes .../clock_chain_caller.bin | Bin 392676 -> 392644 bytes .../test_program_methods/data_changer.bin | Bin 385284 -> 385264 bytes .../test_program_methods/extra_output.bin | Bin 385708 -> 385676 bytes .../flash_swap_callback.bin | Bin 394688 -> 395016 bytes .../flash_swap_initiator.bin | Bin 412572 -> 411296 bytes .../malicious_authorization_changer.bin | Bin 391896 -> 392196 bytes .../malicious_caller_program_id.bin | Bin 384260 -> 384260 bytes .../malicious_self_program_id.bin | Bin 384248 -> 384240 bytes artifacts/test_program_methods/minter.bin | Bin 386504 -> 386504 bytes .../test_program_methods/missing_output.bin | Bin 386284 -> 386284 bytes .../modified_transfer.bin | Bin 385724 -> 385740 bytes .../test_program_methods/nonce_changer.bin | Bin 386824 -> 386824 bytes artifacts/test_program_methods/noop.bin | Bin 384288 -> 384288 bytes .../test_program_methods/pda_claimer.bin | Bin 391284 -> 391256 bytes .../test_program_methods/pinata_cooldown.bin | Bin 405144 -> 405164 bytes .../private_pda_delegator.bin | Bin 395456 -> 395432 bytes .../program_owner_changer.bin | Bin 386224 -> 386224 bytes .../simple_balance_transfer.bin | Bin 386124 -> 386112 bytes .../time_locked_transfer.bin | Bin 407768 -> 407744 bytes .../test_program_methods/two_pda_claimer.bin | Bin 391928 -> 391976 bytes .../test_program_methods/validity_window.bin | Bin 387604 -> 387604 bytes .../validity_window_chain_caller.bin | Bin 410172 -> 410156 bytes common/Cargo.toml | 1 + common/src/test_utils.rs | 7 +- configs/docker-all-in-one/indexer_config.json | 150 +-- .../docker-all-in-one/sequencer_config.json | 126 +-- .../bin/run_hello_world_with_authorization.rs | 4 +- explorer_service/src/api.rs | 2 +- indexer/core/Cargo.toml | 1 + indexer/core/src/block_store.rs | 158 +-- indexer/core/src/config.rs | 9 +- indexer/core/src/lib.rs | 70 +- indexer/ffi/indexer_ffi.h | 121 ++- indexer/ffi/src/api/lifecycle.rs | 50 +- indexer/ffi/src/api/query.rs | 76 +- indexer/ffi/src/indexer.rs | 81 +- indexer/ffi/src/lib.rs | 2 + indexer/ffi/src/runtime.rs | 129 +++ indexer/service/configs/indexer_config.json | 150 +-- indexer/service/rpc/src/lib.rs | 2 +- indexer/service/src/lib.rs | 1 + indexer/service/src/mock_service.rs | 10 +- indexer/service/src/service.rs | 68 +- integration_tests/Cargo.toml | 2 +- integration_tests/src/config.rs | 190 +--- integration_tests/src/lib.rs | 310 ++++-- integration_tests/src/setup.rs | 174 ++-- integration_tests/src/test_context_ffi.rs | 299 ------ integration_tests/tests/account.rs | 202 +++- integration_tests/tests/amm.rs | 125 +-- integration_tests/tests/ata.rs | 114 +-- .../tests/auth_transfer/private.rs | 137 ++- .../tests/auth_transfer/public.rs | 73 +- integration_tests/tests/indexer.rs | 87 +- integration_tests/tests/indexer_ffi.rs | 300 +++--- .../tests/{keys_restoration.rs => keys.rs} | 84 +- integration_tests/tests/pinata.rs | 30 +- integration_tests/tests/shared_accounts.rs | 52 +- integration_tests/tests/token.rs | 158 ++- integration_tests/tests/tps.rs | 47 +- integration_tests/tests/wallet_ffi.rs | 114 ++- key_protocol/Cargo.toml | 4 + .../key_management/ephemeral_key_holder.rs | 4 +- .../src/key_management/group_key_holder.rs | 16 +- .../key_management/key_tree/keys_private.rs | 11 +- .../key_management/key_tree/keys_public.rs | 1 + .../src/key_management/key_tree/mod.rs | 33 +- key_protocol/src/key_management/mod.rs | 6 +- .../src/key_management/secret_holders.rs | 4 +- key_protocol/src/key_protocol_core/mod.rs | 417 -------- key_protocol/src/lib.rs | 1 - nssa/Cargo.toml | 1 + .../src/encryption/shared_key_derivation.rs | 8 +- nssa/core/src/lib.rs | 2 + nssa/core/src/nullifier.rs | 2 +- nssa/core/src/program.rs | 1 - nssa/src/lib.rs | 2 +- nssa/src/merkle_tree/mod.rs | 40 +- .../privacy_preserving_transaction/circuit.rs | 24 +- .../privacy_preserving_transaction/message.rs | 2 +- nssa/src/public_transaction/execution.rs | 118 +++ nssa/src/public_transaction/mod.rs | 2 + nssa/src/state.rs | 162 +-- nssa/src/validated_state_diff.rs | 575 ++++++----- program_methods/guest/Cargo.toml | 1 + .../guest/src/bin/authenticated_transfer.rs | 66 +- .../authenticated_transfer/core/Cargo.toml | 11 + .../authenticated_transfer/core/src/lib.rs | 29 + sequencer/core/Cargo.toml | 2 + sequencer/core/src/block_store.rs | 158 ++- sequencer/core/src/config.rs | 21 +- sequencer/core/src/lib.rs | 384 ++++---- storage/src/cells/shared_cells.rs | 8 + storage/src/indexer/mod.rs | 303 +++--- storage/src/indexer/read_multiple.rs | 5 +- storage/src/indexer/read_once.rs | 15 +- storage/src/indexer/write_atomic.rs | 38 +- storage/src/indexer/write_non_atomic.rs | 3 +- storage/src/sequencer/mod.rs | 64 +- test_program_methods/guest/Cargo.toml | 1 + .../guest/src/bin/chain_caller.rs | 3 +- .../guest/src/bin/flash_swap_callback.rs | 5 +- .../guest/src/bin/flash_swap_initiator.rs | 5 +- .../bin/malicious_authorization_changer.rs | 3 +- testnet_initial_state/src/lib.rs | 4 + wallet-ffi/Cargo.toml | 2 + wallet-ffi/src/account.rs | 231 ++++- wallet-ffi/src/error.rs | 1 + wallet-ffi/src/keys.rs | 5 +- wallet-ffi/src/lib.rs | 23 +- wallet-ffi/src/sync.rs | 2 +- wallet-ffi/src/types.rs | 6 +- wallet-ffi/src/wallet.rs | 21 +- wallet-ffi/wallet_ffi.h | 44 + wallet/Cargo.toml | 7 + wallet/configs/debug/wallet_config.json | 408 +------- wallet/src/account.rs | 149 +++ wallet/src/chain_storage.rs | 308 ------ wallet/src/cli/account.rs | 419 ++++---- wallet/src/cli/config.rs | 55 +- wallet/src/cli/group.rs | 54 +- wallet/src/cli/mod.rs | 92 +- wallet/src/cli/programs/amm.rs | 352 ++----- wallet/src/cli/programs/ata.rs | 91 +- .../src/cli/programs/native_token_transfer.rs | 244 ++--- wallet/src/cli/programs/pinata.rs | 54 +- wallet/src/cli/programs/token.rs | 737 ++++++-------- wallet/src/config.rs | 172 +--- wallet/src/helperfunctions.rs | 214 +--- wallet/src/lib.rs | 283 +++--- wallet/src/main.rs | 2 +- wallet/src/privacy_preserving_tx.rs | 31 +- wallet/src/program_facades/amm.rs | 32 +- wallet/src/program_facades/ata.rs | 21 +- .../native_token_transfer/mod.rs | 6 +- .../native_token_transfer/private.rs | 2 +- .../native_token_transfer/public.rs | 27 +- wallet/src/program_facades/token.rs | 28 +- wallet/src/storage.rs | 278 ++++++ wallet/src/storage/key_chain.rs | 921 ++++++++++++++++++ wallet/src/storage/persistent.rs | 56 ++ 161 files changed, 5643 insertions(+), 6084 deletions(-) create mode 100644 artifacts/program_methods/genesis_supply_account.bin create mode 100644 artifacts/program_methods/genesis_supply_private_account.bin create mode 100644 indexer/ffi/src/runtime.rs delete mode 100644 integration_tests/src/test_context_ffi.rs rename integration_tests/tests/{keys_restoration.rs => keys.rs} (82%) delete mode 100644 key_protocol/src/key_protocol_core/mod.rs create mode 100644 nssa/src/public_transaction/execution.rs create mode 100644 programs/authenticated_transfer/core/Cargo.toml create mode 100644 programs/authenticated_transfer/core/src/lib.rs create mode 100644 wallet/src/account.rs delete mode 100644 wallet/src/chain_storage.rs create mode 100644 wallet/src/storage.rs create mode 100644 wallet/src/storage/key_chain.rs create mode 100644 wallet/src/storage/persistent.rs diff --git a/.deny.toml b/.deny.toml index 57b5f759..fb1ce3cf 100644 --- a/.deny.toml +++ b/.deny.toml @@ -14,8 +14,8 @@ ignore = [ { id = "RUSTSEC-2025-0141", reason = "`bincode` is unmaintained but continuing to use it." }, { id = "RUSTSEC-2023-0089", reason = "atomic-polyfill is pulled transitively via risc0-zkvm; waiting on upstream fix (see https://github.com/risc0/risc0/issues/3453)" }, { id = "RUSTSEC-2026-0097", reason = "`rand` v0.8.5 is present transitively from logos crates, modification may break integration" }, - { id = "RUSTSEC-2026-0118", reason = "`hickory-proto` v0.25.0-alpha.5 is present transitively from logos crates, modification may break integration"}, - { id = "RUSTSEC-2026-0119", reason = "`hickory-proto` v0.25.0-alpha.5 is present transitively from logos crates, modification may break integration"}, + { id = "RUSTSEC-2026-0118", reason = "`hickory-proto` v0.25.0-alpha.5 is present transitively from logos crates, modification may break integration" }, + { id = "RUSTSEC-2026-0119", reason = "`hickory-proto` v0.25.0-alpha.5 is present transitively from logos crates, modification may break integration" }, ] yanked = "deny" unused-ignored-advisory = "deny" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f10532a8..d879f72b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -158,35 +158,7 @@ jobs: env: RISC0_DEV_MODE: "1" RUST_LOG: "info" - run: cargo nextest run -p integration_tests -- --skip tps_test --skip indexer - - integration-tests-indexer: - runs-on: ubuntu-latest - timeout-minutes: 60 - steps: - - uses: actions/checkout@v5 - with: - ref: ${{ github.event.pull_request.head.sha || github.head_ref }} - - - uses: ./.github/actions/install-system-deps - - - uses: ./.github/actions/install-risc0 - - - uses: ./.github/actions/install-logos-blockchain-circuits - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - - - name: Install active toolchain - run: rustup install - - - name: Install nextest - run: cargo install --locked cargo-nextest - - - name: Run tests - env: - RISC0_DEV_MODE: "1" - RUST_LOG: "info" - run: cargo nextest run -p integration_tests indexer -- --skip tps_test + run: cargo nextest run -p integration_tests -- --skip tps_test valid-proof-test: runs-on: ubuntu-latest diff --git a/Cargo.lock b/Cargo.lock index 1c49d7e7..64248df7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -912,6 +912,13 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "authenticated_transfer_core" +version = "0.1.0" +dependencies = [ + "serde", +] + [[package]] name = "autocfg" version = "1.5.0" @@ -1622,6 +1629,7 @@ name = "common" version = "0.1.0" dependencies = [ "anyhow", + "authenticated_transfer_core", "base64 0.22.1", "borsh", "clock_core", @@ -1765,6 +1773,15 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "convert_case" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "convert_case" version = "0.11.0" @@ -2181,6 +2198,7 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" dependencies = [ + "convert_case 0.10.0", "proc-macro2", "quote", "rustc_version", @@ -3775,6 +3793,7 @@ version = "0.1.0" dependencies = [ "anyhow", "async-stream", + "authenticated_transfer_core", "borsh", "common", "futures", @@ -3915,6 +3934,7 @@ version = "0.1.0" dependencies = [ "anyhow", "ata_core", + "authenticated_transfer_core", "bytesize", "common", "env_logger", @@ -6298,6 +6318,7 @@ name = "nssa" version = "0.1.0" dependencies = [ "anyhow", + "authenticated_transfer_core", "borsh", "clock_core", "env_logger", @@ -7034,6 +7055,7 @@ dependencies = [ "amm_program", "ata_core", "ata_program", + "authenticated_transfer_core", "clock_core", "nssa_core", "risc0-zkvm", @@ -8394,6 +8416,7 @@ name = "sequencer_core" version = "0.1.0" dependencies = [ "anyhow", + "authenticated_transfer_core", "borsh", "bytesize", "chrono", @@ -8408,6 +8431,7 @@ dependencies = [ "nssa", "nssa_core", "rand 0.8.5", + "rocksdb", "serde", "serde_json", "storage", @@ -9143,6 +9167,7 @@ dependencies = [ name = "test_programs" version = "0.1.0" dependencies = [ + "authenticated_transfer_core", "clock_core", "nssa_core", "risc0-zkvm", @@ -10082,10 +10107,13 @@ dependencies = [ "anyhow", "async-stream", "ata_core", + "authenticated_transfer_core", "base58", + "bincode", "bip39", "clap", "common", + "derive_more", "env_logger", "futures", "hex", @@ -10103,6 +10131,7 @@ dependencies = [ "serde", "serde_json", "sha2", + "tempfile", "testnet_initial_state", "thiserror 2.0.18", "token_core", @@ -10115,9 +10144,11 @@ name = "wallet-ffi" version = "0.1.0" dependencies = [ "cbindgen", + "key_protocol", "nssa", "nssa_core", "sequencer_service_rpc", + "serde_json", "tempfile", "tokio", "wallet", diff --git a/Cargo.toml b/Cargo.toml index 1bce967f..be6c2583 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,6 +20,7 @@ members = [ "programs/token", "programs/associated_token_account/core", "programs/associated_token_account", + "programs/authenticated_transfer/core", "sequencer/core", "sequencer/service", "sequencer/service/protocol", @@ -65,6 +66,7 @@ amm_core = { path = "programs/amm/core" } amm_program = { path = "programs/amm" } ata_core = { path = "programs/associated_token_account/core" } ata_program = { path = "programs/associated_token_account" } +authenticated_transfer_core = { path = "programs/authenticated_transfer/core" } test_program_methods = { path = "test_program_methods" } testnet_initial_state = { path = "testnet_initial_state" } @@ -78,6 +80,7 @@ tokio-util = "0.7.18" risc0-zkvm = { version = "3.0.5", features = ['std'] } risc0-build = "3.0.5" anyhow = "1.0.98" +derive_more = "2.1.1" num_cpus = "1.13.1" openssl = { version = "0.10", features = ["vendored"] } openssl-probe = { version = "0.1.2" } diff --git a/artifacts/program_methods/amm.bin b/artifacts/program_methods/amm.bin index a7ddba5264578e72081d4e7a3617dbe48761ec5f..9b9bbf9a09fb9ec0342702ae7fd654d3b73c1f0f 100644 GIT binary patch delta 20193 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 z z4SWp!+e!}063=FA=NF11kAa6P>?hmtVTVf7YvAD5%8vBj0!LN`kY~UTqkj)N!G17{ zc9|2g^08og`yl;=uPRWjJRa%yiDn@)u=HIdi0_PK5w&PL7-qv6te@(CKX}Kt%KC3X z5Ul_Q={b5FoOWDU&)7(Z!y1mYzPSxC`wwIFrK;t7$R%LevBrUWf2E9DANlI2W%+8Ndv(+<^3zV;ed!JIqW$i;dSgtXi0?$%$DY*C+6FEZ1YxYAA)%d%? zDPVKde2vLGd>D=o@`mjb-v3JThY#;(i~w2Z}b28h|_oE=Gq9)L#YRaL2xBd=B-(KvxEw5= zQK^y#>sy(sD|h3kD6BCaJ|Shr0JywFxe=`eTU7GTfzK%I9BF$P*-OvHQ6}K21QlJZZkL$cIbQ2j%XC8SFCT?RQY1Eni3toYlN@;tGFA-=}D;Wi@RPoE;Jg^+MPktF` z^&2K)K8h^3syW2^CZ2$1=M+;EgM;l%tPiOiyr<&m!tSyX$r6`Y9iP3X#g z2Un_0l^uEi56!8>?Dr6ncUTqYAbBmZ@OLKpzu|K_Egf9k5HQS zK)|H-=pQ*yPrECgo7o$ll4~L!I-J9F?R%T56Tll7ml9M0XAo!WT3@u&1oRaStpV-P z_@pIe*oWM^5iqH|{I9WLy-d}&@O9t9mA|j{FdO*}AEw}g>{9E`*1Q~E05?Z_OKPVM zkuHt3Ttd>1KcL?T6G_xW5ApiQf!nkTwakdfXoL1ti=+wXupf_`NEx;NtC4=0+J!8` zM84{(J*3GVaS4gJOmUDc;Q1db4r2Qe<3Cb@#B6Yn-xNJRid^ijZLJwt58-OXJ`<_H zVHJpY{{v z*GGP&2LJ3AWI~gW z*K#`{XcIchiZQ<-yn-QDih@1Bn^im)yhYW2A9y}k&SZ&K8S;**eE>M38vi`_U4=Pv z6d&GD4QK{Uw<#S+`#%`+o{G0#!-E+ZhLIHfANVa5Xa0%btAXVO%>Zvzjo%F(+tEye zRitg6))sF}`yY(1if+pW@QMDY`zZf$ zgCUFK)2b)$il0V-O;p(;@V8*ux_iK9!SZ5s3`@?a+WUaNQ`)=ZA(e1mw@GS z)EIeY4Y&iH@Luo{Rr@b&q+z~xf|mR4IwEI+GVs$lmZaW~5KLEWz%}o9Vwx1=#XF)O z+_nK$f_9PDfO8tAkvl1$1((-LBg5&$=~|Yg-I7KsC_f0k0>-%($FpQZ(O@JzKkxWgZqr&(lt1&ps#| zoTpvM^obNajc(jqW*n(K(UPb!cC0m$%9UPG#}WBM@RqI7mqd{dwqb~shVmpNaZ5UG z)d(deP+V+(7o0iSC_Utf{5?!pT40t68E5I+nYNv{x)nmVw5;O%>@OL z&14pKqA@{{I36F0!bYho6+7$)=N-m`RKPSh(zZUDrp5L@!K02ErHiA;^}MhU8$DGb z|I~>gSx_KI$KTl*{X3YYUx$nB0q~U!xPsV@U)PeA_|UtFnG{PJq1*zeZ!?k{%0s&% zSPeIjD%=}H0n5R8=M1D68j5@jocXqaT*FmXL9`ONFY@w~Vbbs0IqAcj_+U{v)sNt*vkfGTPH=l4?wj|2pte zw^6DrME)9_kM?<(UlN$!9|F4?NfA|GJa{UOiEM$_z*{CNPIv^o;!dT#{Qw9=CKgK* zaf12av}4h`t;iR_`Y#mjpBp{qoP`e9gb%|%GfBVF5eFm$SnbpchQeYcT(tNU1#B1w zfh7umJRIj3ESBeD`{fZZc>`s__4gs0)-y}b8)AF>Xau4M5c#N=PX?FnRV?x=*swGD z8YlMO_8@$Q!=B1}b_pL!e=rgQ^?^2%5D8mFt08f~ci=4uM0r%9;AAM6j-rH4_`pNh z!nWq>$ha1K<`NX3abnrSH3QurV6F#_T`mMlvHTGPjxuFWH%&#L>5IrlCmi)yO&{3_ zR{MzIapa+S}b*I0dSFFb+3GSn=kS8>I6Ov4Hh zh-k7Phrvr!dz>;IcS98q1FtxP7bZGE`I9)tPbn51ITKsf7*0uj=#E(&oPfd2ikkd> zWQFD`3!DNk+HNFUs6g)`92*T*K>JSymw$|3QPB2p!BfFqt$1x@Or1Gc(RTg>`T!r=>G|>D8&H~HF@Iyhot}9Mf ze<>7vUs34EWw^3THdn_LZt_crY)R(oNcZG&>=C^58eLKAl}rtLEED9I@$KEsFISgXP6)fwS4_;H7g>`M<}U$(Kjg3 z#GSyU8Mt0jg?g65BI+#$C&C9Ho|BwnJwE88A0%#Z5POE$T|`&F91wJ7Cp81n zZm>EKHToO{jm0D>EGqOJ_=-w_X~$rJG!uSXO!L3@3ml^f(ehjz@C-O}jG2_u6)Zjp z6Z=i1kn$yP7LJkl50%9J>rd5m+D4T%6`TZCD|i@u%!`);_@5*o{%Z`#GD-iQKor;o zycACjv#15$0#D6UEOHKxT3qFK+A98qytUFK>JSz6KtUv7sOoB_AGn^ zZzJ<*`yb~}BThGwVr;soz~b|Wv}2L~3i0OUKA$IKw`X`rtUcYL$Lbo0jD$Mu-k({hw#91?QFfp;q-Vt9$VP%wpyTxunB!RODO2K zI2|_p=e4+l?w-*}V$G{uftjd+Xg^ zuixVLd#nye7#6b&!&hp@b@SV;&S1de@Y`GttKH|4EG6woOvZX~l{Q!JcDO@cw?AaH zJKW)*H7Mk*(%x}bDB#5+-8Pra>bE*PURiSN!iBO`+JW7iA-Gq_=L&}5l6G%YPOO%4 zScLbI;`4;9tF^arb$YEM_MLZ#J8v=Ebo+0%`wlPR{@DQcKb$~3a(}B3SM!KEZFLQ( z+27&%XZ@X)zw{qiN6c_qNm`JM8QI_ND=2Uj_{L4Jy2pmS2uY&92Hkd>%`Kl~gbRmr zjIj7|U9zx9pKyy%G+n2ydxPCp=oFJEb;YiMD|VORJl>c!@Wh@Wy|H>CXV37) zu7TAOt6YeUX&X2x^?Sv@72B41|A7(gVsQBT+|j5;31W8$NpEPA1-(HRZ>lr&y9D1% zU4hiuTxVy8O%&~pvA4@2eDbZfSq#z1Can?64909ij}$ax8IT~CX2RE{+7!X^hPG`A z0&T`$OFrS^I;}(R3Wb9fo7>`Y+pHnC%`aHr)Y>?=+wQjbgH}{~DEq=5Ij7SN_n_4B zqr9>B?IEw<5wZvTV2j0Lx3~krkUawnlq$(s`^%Ll?a$RYfm7uob$0grlg?J?!u_QT zu5$*fwBT4*Yjvo0{${ed8pf1&UfKMcjj1t2nm{~9)ectY5Y*?@{W+BWbq?^V2E@|e zDzBq%GsQ=}$Xe~ex?2Md&qE%+{ZZeXqkK>2T4hHr z?9{bjk^&ZA7}dPX7sSoXA8_>)eC4_)1inPqgmXFVp`hIsaD=UH@y^sU#s%5Dwayx& z1iJ+in%>;1Lbu(zH}v+P-4nDr!X8h^6Lf`a!mqn^>7DEJG-_*`+vaq8Y%Z_O=5Sk3 zBzh5Wv*VM6hE3xQ!u$_(%`)pWt-W^J3Y8z|rqmt0?e2eVCs*wfvSakV+BYlGtW@_q zqqkWD4xbB`#jqt5cDXHrVXtml-S)BCYSm5f?bAIs*cZf;K*-~FSc4v`)oYE_y{xq_ zIx5)fbUXaPkUQ)Ogv1|W6>O`0Kca$N9(Tweu-kp`xPZ?Uv&J^joon%C$rMPEcHFex zZigjgvpVfDYwY-Y!Fr#^@3UDQR*%E$!eQ|WH}>hu2L(exXCPz`x&01%*y)dTHaybQ zx(wy?{Bls&I9A`Q-9=v9uiM8t{SG|SIBb4zIE3RGv!c%0JtW2eof(L909D`kNGiyQ{-4Oj@or3ajhKCkb5-=|=+Op+hz%i;@$98Ns@cyT8eq#j>> zsxu1{Khe3GmduscxdsD<{51TcpBJ z$QtkkyeKpsE=TS56?z=j1=@!FuAmRO84pcfygqvVrhltj;zuOkB$o?M{;3Ps){rHv z{z2R7)>_RG!D1V;N#P()p+Ddd^G(nZa?)ID`CONxcl(fmtqwfSgdsnw(2P}yznYT!$0eq<_F5%YB~H2p*!66ab{`HR9{@+Q`EdR>JR{M?$6He)d*Bz+r|9U&@wd+8%$RRF=u;2^r zt%9D7j~DVQkwD~?v9PvM=isDTxz5`Iwb)H=4^aoMQ-EB${#62p z3rMUY=z9Mu;vYz$uA`FBSH1L02p(rtxN>cAsic0){d!MyuZ@tVM|Npn*d!0V- znRiS}OH7M0nEb`ft<26>y6WmA`w983km!WU#_7V?I&UWDN?bTw^xw=j5PWs}F{9&u zeYS2Bwm3r`R$8~UFsI%lZ1ELAXB@~D_7(DsLs`;5*lcXd`nw6GMt8&FE=jj^C0`f4 z^h=t)D-n&7RR7~bdg_a8;aQP}r8ziuLanj-}kg`acpY-(^hV{0z31kYBIij*j&^Fqw_sVaPbr-5h(tN`xnS ztxYrdnY7t@BFr|BMoCFh-^V-Vr+t#ll7>RK*#VZ+7MvNMvHldn*nA0F$n99yT&Ulq zR@&^FFsC*V*RWWbJnw)`6+tEy2VVAulOYQ&{2_^1U zY;jLvhSSZGl|rVc8|&{WTy$C(ztGIpk|9DT*C3WG6?6BnjfHitrfAvgx=ZSHcVY^K zVQvRoJWZJIZps#Ci`!N+8NzUg_w2eL|MsBfOD)i{SU! zS^pkks?W_9?-Dlqy0L{jg-Q^4Mab$1`@bxNJ9cBqCShYo3tN~gl;IEmK%uhZN!Gta zDDSkLC3A#X*&gAx9@tlRp|Hmw<`$v6M@yGAO%J8?j4sVUbmC-5cVY?6y4n52`r5>5 zVp7mwE6u>92nHjG_ZLnVGJD?7lncvywqT2I5q9-#*&sblZ-$8CxI1Jqg=ss^^}N6| zI1lNNKn!Vm9hFf0i*T{`M3^(&=XQPeq{=ZL32X9P!eW1Va^;mP-xU@=v}3bBg<%VA z!k(_!SF0u6V4K!LX19TW9aFoFV3G@ERmTfQx?`)XaIw3kJ|P}GDYTl_>Ar4J`{Ja^ zmOqQeEDkEc|%-O zkJooB8u9=m{M0{(CCh}oVSYuRgLzTl1`lM5*9(P%-E3i4DC*m!S={yQ()4TDxGk_@ zxy|2pM|s~<41%!i&MxeeBZbQTO{G8T#f8q zHD`(KpGj(@&j)vuxTUyRnzjwxDVDk{Y0_49mNE8tPhAV9S#FvM3rhbmZ>tE{9k9pC0whV%h@;>?o* zGWxIVZNsSPw>Sm z=2>!rV@O$D6WK)>Wyg*inMeitr5$#5V83ng7A7_v^&zXe>Ju8wckks&9*W1%3{XUH>X$ZlvNi>QF*euiYh#Pz_Ek3R!@ zz&BIQ=n5q?{da?Rfm3Mz8t{7>{u+El!>zg@O2JT=mlv3T1|xjZgbLUUzE#8j0gnPV zqWyMU8TW%F3rGr1125F@E^rB0QRpx5#~SX^gCP~*hNO2~z+-4I7O6p40_NZ|#RbVd z88TcGR7K#q;L%ipQ{vxwy4LMWfh=K23M@C*ZURaFFeDY6>oAcrkkp?mu{d~$?lxw= z_?YxZk@(6GT}yKja)NxaFsuTDcJ(kx67Ua0z6K8$f5tFA6FEQ`)(HnEoMVy)NyEB; zD>PyzfQJuK`}4sYHS?u{#(AgOzXF^$MCIqeYo51K`7Bw33vc02-K&gG>^TgYcM_-J zj{)(1maIsHIuNh$b6`1zp+U+$rIeNa55bZ;3LgM(6Mr72>%`xA3l5IgMAjw640HRK$O$_CE@T2}=SqKPBm&7& zw4W!PaniH>CNe`8S732ALo%EuGMNhGIx}Rx+eGpy9|TJtE2j%^y%{oAqu>zk%iSFK_5(mU#LwB%beGBXo^!GVA&=q;j*m~& ziecbAd(`!pgR{WO2JRn)gRNO-C%7^C>(F(715XC`jdSetM|8F%w$>;yh1dNwcySnc zE7x3gb@Y$ol)k0r#rfdLIc8Ey6RUYVZjOOw0wc-V{Q>?C6 z?=+JvI?gbLA&c_NWIp90@Hxy=Zj6)Q^u1MA6fuouhz_j8SrEKP!|T8qL!lRSd+z|O zIKoVd;#RwZoJB+7NHaMTZy@u6Q0Okz?3LhI8Xg^D$Qm&ABX8_eaIMj1vYgHzB)<8$ zZeiE)`AAX$GigkRod>VMuwyhFA1=T}HCFYWaT20OqxT)Lr=QT>rsL<0!~X9v%lCog zWy?LV`#vkVmD({39#yRF{{?WJw^hDxA}-LdnV6`0-+=QlUx|wS&?6tL*thn*h$_gV z%#(g-Sc(B=y5M~9EU;qm1K?d6UW$!O4XXD06TC>nQB>MxV8wo?z)mQr*l*PoY#8j9 z6~2=pgYUzF&`3%5<=}N-GgQg6C=?|j`)W-Asho(zjo!LPwIB^tqAapu#ytzC~zKnA?uET2~?5(==d zI$)*JD4d4#4(8~3xzn+~`&8~8D_EeL#F*cK-jx`qR3x`RP8gg|=PeiiUI_a%dL(vo zkuF8g|2h-vK4d0SX@93j8M5&avm5}D9#4XIY4{Mh6fETxslNq}0z<yt1%}ZR?MU_TRy{(^WX}~ zFM*FN#+p>eli+;JR}z$Y84}8es=P3`vC2HzfQC_;1}DyB8?KPP*3?vd2D}p+l1{4B-)1G`f%7OAfJMk3D{~r4MiwF9gPC$1F|3YkkInqI z?lzV$oq-d(8YzZe!h4tF#BG2jD0h4o@$@_tqqUszIas#{cLeS42d*enFTJP0XZ-PM=?Rs;+JoAAk?@M7?#e=C;|z8TgqWF;1m za++j`T<}KCf=j?rEI5Mp9|m_q|5%xIc(hzAZdtE;ix0!(=eI&I%|*l3A}%+pC-YVC zPOzWuyve_>cF{=ic#X?eg8kTt5+f(ToMvOqpNFMX#`8k##}{<L*!*nt;ym-XyT>thGD=~mUUc{kvzcrR9`N8@F1CRjP1e}cp1s{dw+&+XQ2P0ikj zQ>$s-8yo$)ZY#r2d;y!^XC^(U7k&cgfK70hlpTsTp;*H_#i}R4i!^dfFT%=))a8QU ze9Tu8^C@uIJ7#i`%J;u?l^0p^MC|E3y49)n{jb7GpQ<-U?bjgqm@4?K7(DLFDDSlCoYGqSwz#-j2X7H~tjPrXlSwt;55{B7)8vCdEKMmgVjk0ePI&TuV1gz8;uYhN1_*d|@n=IrAo$vS%dT8cP1E+(nar4zD zF*FQEgW|A1#5cdt{b%sH5=3q&Q!WA-R!`1?i|Saa@=c?6@gAm;I|5t=Rz5ygg3B=< zW<{dYlb>UMpVV#D@lD^r0Zg%wbZY-`;7X&V>Z@rd_*kl?>T{3TgOi?8$ zN2Ox}G+-L+#rJ9hm3xC{HB|W_@bX3$vQC!I6cd3EBt7g32@5 z1n@kta&$L?wF-B8`)WS^51#yvreBYwbW=&J!#BE=q;8$ca5*)#kV?Ap=#SvDCKeK= zrg-@v&I@eg}SPL&JPDC>8k*@Dh!{-@#=j zi(K(Y7RZlv{#iFBiJw~v%YCax+lSzikJU;(1(wZ4zY=|GKgDq{TWGzCmk{t|Fh?yr z<`@*!9J{Z;bueFfBfaG~)@x-Uh4JwY(&aPUV7slvga)Y~c?_J13GFDCfHf0H^5?OE zzv=E}f-fUjW@TB(__!o8?*L5P+CnmEFr5Y$VWkq<-|urITFp+L0#|6b3_KRBnhn;M*3K0yZ2@b56;aBvn~cOdl0a;PkbU)0i{O0~k1 z(|aIcQhUsdeNMQ)yZxC%~t0K%!8h?vg1`SF`9S3Va4x4?4uL1N+ zKXOSCF)G%%zMij@+Tt9>jj)h9y7(bJ9{Z@NexaV38yjuXpK6x+9Oi`|wvbY4|3k3> z+4_Yn!^OVnqCcqXI`=1B%%y68d<~xez8WBb|6u-pHA(CQ_qd?y`Frfg?)sLx!Cs`R zq7N*j9EVjpN^`)EV_YfK_kHlratoPC^_=`O{D*!exupJrBcqWk#76hgPfBJ6#XcIO zzfvoBC;E$S#{EbQuKyi3p~YI2ua|&}Qmh2#kk_C02Pz;qrEiwxPK>32o}q~VF+O<-k1FN1e! z=2wEp-)5!BD%NJK-kxl}6XvPY-&$2zYzOD}v6A!DybEJ9$LS9y@vESW=?*KYq;B~f zd}1K#KFV#d?Be9is>KWNw^3jVRdy@*8?a*CU%=mjmCd*q{4A>JpAPeVC5Wj#aUSgZci7S1wNwb&rFJ?O%^Np_{bJkKPGWe{^xEm>$?syRRvpSh_ zj+YMLVsM+f*a`Y2J`B!D$t1T@ZlGsLS?x?RoGv^JoOx3wDX07__&gZrT$<04&trd2 z(eGuuHU1SQoM0tW>B8H=I-{ys7x*9@+>{F15AF|EYP<|X?DAB77ltW{b$&p9&`|%V z0XvyyC6n>1r*t%1C&yaM)Ne^*R>VFk)Nf^&p|P2d>u*b9_}I&{^;=nHoj7`~eiGYY zqIh7geibu4Rxl64_?N9XQt!k|qWbWd8JEiW-toYZxD>o|SNtVW;=`>OVxy@%6_>ax z3t!bpCB;x&>fZy-zRxT_(3SvH|G;C*mT zzFDrSCFa_qe}`Glg%bY_E`8Qa*3bo4IgzyYsPn%9mp8GJQMA9U3-g=8<;YRe{EluY zkY**b;EDPKMdD*VFh`z5_x*>c`KuWH%c6G_aCwvPKNK0?yiPCOMR+ zbV0HjZX%WVZjc1L1|IvJiEM+068{R$e%VAW;Zs&(+wHK>VYR;iT(QtZM&X)~`qzVx z^f${tr|?q4FKDRM&rDFG#s&D1JTk3hEZspEoY%%8f4E8G`}Ksvu#l7uCARc}i6dr` zN9PxUH~)$22H8pK-w7VS!Yr2$5tZH_RDl)X={P2e1wIDvoTLU_(jZvmR<-{wa6WEg zsWg!mcmteyEdFgPaYil{J+AUhuyo9Mj!vjR!|+cm@=rR_1pi=^bQ)d*E}v|z3d$4U zya!=II)CIHNNCg57&rxoG-dHF8@F@xW0~|)sDM9(@5XggtmeK{cfKN;@R|WN+p|DsnA1^*7 z0iO?pz+#mz4u=)MQh6@*n?}Oqb=3ur--X+>wpD)Kkow)Dk%-12^Um=*yTc?l*`AUp|n)>X~lFTntsS^bit<{ zx;jRF1Z!ht(8KuNZ-@<1g`NQyVgqG#{t0jvVkn>Tr;i~2ubX48I=9VcAh8U!%Gay3 z;~`)_5)r*D2s;zM5NLed9XvzBPlAh1o8>w|n*Y~hIL42w7M=G5Tvi`JNn>cpEFM9? z;LD1d{At_@jWrfXnTH3|@nn$)xOk0YN%4UaCvuO`EXeeP+25mUt-m zQbY-A`2XFPAOKOWL}k|It6ee|tWBlggSDx&-^&O>-2X}pJP$r?R`bYlaGpuEaNRAM zdO*7Wd!gY-IxPsmkAg4a9M7jadL2Bgowe$eTmYxziDx*q$gr&l;=_n?I(`qh9I1CQ z?QgyfsrZOm;Oqx`kDBEeknjKdU%C1|@BbPU(%~JA2HDwN44Ie)pJ9Pi)bbs7UtIw? z_M@Z<#NVJK6Hfq_bin5&RcLA%ETVNWxDH|f;(0kJj-$aCZ;-j)0r(8LyO8dHJ1AvB zFg-Sl4qcsyD#6-B)a6qYG@M0NSW>9*F&tZs0xyBRnHKz7Oz;2k$8n7AjhE-rgx%om zF;-GScTjv1CJtK2WXjD?VLXnJ^dBloTWhl4ZC~#J1JWf%0--3sC!3zPMKk;jZ zm~OYo|3#uC{|tB=n4d}q+74Rx} z7g&k|X zSAgfz3G2_{7!AXYsEM2W2!-)TlTG_4fX9x;6ED3RR)DzxZa=!?BVYpN==jv15TraZ zm2~||3l2s@$uQhb)a0o@!>5{xXggS2Aszh%nG7{u30+|NuL#;G?tiMld2sPbyeZ>F zQj%YI9{oSUV)(CeB(D7%?*GYu$KS7{hB0V3q2V3iK9|-026&Vx#dWOI^)tcqTU)Dc z$4-~AARZx%crKFi#AD#)c!Zci7d!w??~LmlZ^P1hBd#!A$WjypiV1(Zf^$9qB^5RC zetbb2k=wo0LeV5V|H5LM=??D}-+WeIz&mWVh$HHW_*}uTm*Z^hL*u4(;7I0l`o9i2 zfqN(2+rbfXhU~$R*Bc6Ru8=q6^+bYEyU*$LdR-2OFVewF5*_K0BzMT^m)F-jh7&if z(1+3kE~k%kdR%s=+h=n`xtXfsmVX*}_qW&Fcx-!jhbX^>VoqAL_j3(1zDCjLRX~8W=pO z?x4*b_POn0j&lXvUSCf!kZMS`)M!{v?Dw30fH7$I1Oq`X9Ey0IzDU$5Zg@`L*XRgE zA}+Usi$v_6Kp^T`wo2c}7L7OY!2)dn)ux#TS zFwe5p`dniu;I(@~p`at|<~)v|O&q&g->O@PbNif}FJia50``c@BU?QlKncc#Sh`w2 z_;!br3)*cVS0rk8+iZcr4SCPWiBF{_j}>>V(KqF5G^#UkUppmVbEa!L{968Y`Urnx z6FfJ#fOOQVRfxa(Xu9k*O}Kiz(|u#(UEDv$53V6sxNIadOva2H=m-=PI12(3?zMTw zdjc-ID-v*roLnFf47#ZIktUq3G2-Hf4QZl(xuKS5nqo+<*})zgbV@99c_j4{9O{S< z$`S3xmI-f8+iH3_eqH>F_-ynzz7a0IaGgd*So6p za5%-(4f-_EXfh<%e4o0-z!Qc7d9bzSd%`Y>_9Qsk&54J;(KkvUJK5zuVw>TFP3V=A zW+D@6DJ7ZsWr;prTp{y65xWIFX(f7>@Kg}i>k{N2!@?rUzBr1q8+e7xq?h|yi#$} z@qCR7cr_tX<6zf~47NdczN&1jQMOH1J<)yI+|)3tBd@grf0Z#6&sRU^swvL@3b1P} zbJY~osLs%yE4Q;=wl!A*0sCe=(Lp#x5 zY>4myPdMo195%Pl;c!IlIJJpw&hD#5fy6{OxDNS^uV-Vi<37U%W6%|HabCC69)?eY zHlO(OK0{Wg8pDiQ-i`Ey4^+3qZF9JtFabWSx|X0SJk=oCB+hx;(5Q2bc6L-_Xz{bR z4O44Q-44(H-Bj-Dis+GWI9B7aSW1cE55^coUUzd`G!k_?>;YR)Z1kRCM$I;|*{`de zS6p0bSdi!RI>R`2QEvcufZdaDl-aJoZz?$&z(=Zwb2=lDpxfgOCLF)jI3=z#;wHq| zf>F-v2{#Tb)#CgMmWH^T|s*=Xy?3~C*Vt1va<%s#-KCgj0OTe&gJm> zf3wUbArU+caX2Y-cvzM^ie+G1t4!PK;xZ7L%hiU-Yx z)apjc25EoP@E2qBq6X&N(Qr5_J;3?GRo8Q_*x*w`dOdqI8us99M4}Og!yD0b%jd?; z*&|-g<_O`9&EfKRVhBSNTQ!LyQ8lXU$^WnGR$DbCPoipgI`G%M1QV4}O*%V7pFm+(2yD z|LNES{mN^8>9ALKP!c;Q_8W~2{=a{4vH#y4Yfrc)a9#IzAA2>96}z4?46iwLIsTVU z(fGu1eJzr`QU&04iWP4gnuuG<4as8X3PZN|TZO?UHhIr5MEtPA&^n&rYWxv&zVF;(5&!J5jP;=zdxz^Dc@9yDnUz(YbYVw_82l^|N6?%eQ&IM RZSo9;*%}-0eDcai{|A4(LYn{p diff --git a/artifacts/program_methods/associated_token_account.bin b/artifacts/program_methods/associated_token_account.bin index b0e5def54e625a91f08a703b8212f5bc8942c697..55e7c94d5308bca5e8c6ff08970da46a0fd9e238 100644 GIT binary patch delta 15896 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 Ve1>vr9q-@9Oi^z2$2~sh{{he^o$~+y diff --git a/artifacts/program_methods/authenticated_transfer.bin b/artifacts/program_methods/authenticated_transfer.bin index f6d9672cc47bbb3606da61296e285b3e91f38017..48c065ba9043c50b98eb2ed7d7b67be50a2cce1f 100644 GIT binary patch delta 149523 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 y>gDl(q6a*SfooZ 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 SgNsqc)K@aMY)~HioBs#2H8XWQ_0)4e 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 literal 0 HcmV?d00001 diff --git a/artifacts/program_methods/genesis_supply_private_account.bin b/artifacts/program_methods/genesis_supply_private_account.bin new file mode 100644 index 0000000000000000000000000000000000000000..9d6aa3133b73c7a54455a8379f2a11c7e9816856 GIT binary patch literal 426760 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�rDe%9-&rxay>Mx4~9eLgDXSs1AQUr67t~y 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%0DA4aq3?MRThfeP>X3^_T-dS0;0#;i$xhDw+pp!C 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

2LBt*EH)hce*#R^NIwQMuiy(c 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 literal 0 HcmV?d00001 diff --git a/artifacts/program_methods/pinata.bin b/artifacts/program_methods/pinata.bin index 415c8ce3215d1e3a94465d2eca4979707967f5e4..ef1edefe4ce6ce55e70dac57f9d4b5eada519f42 100644 GIT binary patch delta 5148 zcmbtXU2GIp6rRrBQlb$?>rX=}DOfQncDVmPP!xmpK@lSm<3HT_lb=$Iiik)C1R*gb zs3W;A#28=nMPu|~H6g|actWGaXb_^H#MCJIpaujI^v-rmOUv$TA=zy9&VJ|IbI+xr~&Oce?uXdfu+1LIZA0I+rG`r4|+1p}Oi&NQs+cr<`^kh@n zlWyDlZaXY@{o+oaH1px^4rjmXIIi2|>^bf@Z+4BW@Bhhh+M!wfyZag2AI@}It*a*2 zbrzj;oPX`Qt-9WA*LUlgj#phDvTK^J%TJti2hX`T{87H=*V4MHyg&$sqEGBf*74m-<~{OqN&nJ98(kqjKm7+phEQ#wkxV51+gX=i#SqA%oz=66ooiM zF^rgxN3}*F7>)y{bzEN{MxkFm&Tk#JGEZJLb1E%59~zhK!f5COOwwu^#fXiKZb*&% zu?pE8KDB-*;kG~{H4-u80^&qQFhE#`h%y3+vdXFiREh9MNIMQWuoI#=437NLARqBG+Xc5%M^iq61}VLlbRW=`ranutLz<`co^(pwjwUQ7<0 zv!kxT7<{gl6T$N___Tnnc&Haf25wOe$cTOyLTzQ2Rj&_)*b76fu&PuTbh2i)2=5b;d%v-QUR;Q#Rt$&dgZ+U?ygI?LOekNu;n}BxHF!hcvoAi6 z*H@}CG&Q65Xfk-e6B}AAcy?$Tc^J{&?AVKznBqm4@i4cM2k%M5F zr#XotmS7xF%|sj2(^qxA~~fo&%@AP3D91c36J; z1$fEBI-nw=F^`mrR2Y?ezXT7LiaVUZ>K=kXiG;GpQkY4k5R}y@i|B!HO&6wp0L<$t z9OT0>Tq?ISTAGCyXaZ?K6oiT~j6!o{0K9H)`34;DaH4~dgdvh46Bug~9|G@rF_keU zT1u*t09jVv{0%rbHJ~tz6%TQYX@a!ba~Nzk4}1$+JrXA&jwIF!;V40IzQI~^>|5|v zPa)3`t$qIAz61TmML@i!hlY#5YPwk1un$?&M|s*|Fr~>85tIQ;u#80%M6B1GJp!hg zCEtVVJjHbsKrJYwx$y|drbfhOT5BdXPZY-a!#9>lLJ<*xR2m9OxSd^x4qEyj13ecNKXuWwyQlC{tAWZg4H z`~Y4n=3DJbOEa*hxz#Mcrn$rLAHgfd%%j5+bEyD_M5?I$Y3+E@hM9NeVW43V8FiA$ z!%8+PFSCz<>&&F%Kp+-sje;m4OxSBbkLy+2)`~*2`xNLfU$p?Q{MK=>qp6Ew9b;u* z7Gh>8#&B&9X7SJ9nc0?@_PWM7*WVgTYno1A{D;6;&UKz*)G!I q*Asl@VbI#cxMni?$6V!UJ=JPZ6zbH(+%*W=cXkefa_3-kTl@cc)>WVY delta 5134 zcmbtXTZmOv7+zR>t&U@{=K2H6VLX* zVCAWvXFRZ=@^{aD?Hd3X8Q#@jSs&c(^{%OW5X|w0qskY-(s{ccE?>7DlzU30BlA8y z-qE%lR9?Ic*u&?}jSLSzU+G%%t~Y#nW%rUr9=Nn}Y{}|RzQTLkyx}J+@5oK<$7?8X z&kMeK$ycSSue{C=z2iZ(`xkHCB@5o@?gG0#06eb*wjKuHcyNAv$4>y<+hhBWdY|!| z!v(+x0F*orym|}(Her0gjdw>2K*#9+vwsKRlpA+eA3WxbobhfyR$cXLdGlp{WI}?J zF<5b~Fr)VKKg-YFYJ_AcjR`?A2@NKpBql^L4HHI1N<~0HaCYVpJSD zfubyjO-zcLWrd++9GcHR=EcoUWVSV3WR$KfKTiTO0}fPSXK_8Yi;84wAZ)1C|q1cf4^l#rMsoCM=ZI~94wg;4v} zKjoFPDAQVEgC!DDB5nWpr@Sl^F-_fk$R$cNr)W~5Of`L>q9bi5~Lwgo0PGhFxB*sD-Em>bMF!01+fEm`D3ynEe5^JrbAojjJ zaJ`SDV1^k?6BMa9WEQV&yV~yG10P){W0gb%E6s>XkPQ1kp?h0^TkN_21iZ$6bk;S? zPxr#-d|dBH${;B@j)%AC<@++z(%~s}8_-eSv6VQb#a%1cxcJrw+h9eu_=X zxQsb9Bo(2l&F-CLVr-b81kqUNMA$dKh0obLzlI$?OQe%h8S9kb)I{|S2JMeu!!MWT zpPw~9|8L*Gq5L3V(bPiWAn>LpRu;CQn%bz&`4(PL@_CdBVI&TXHVj97_VhtG$FBVj zUgfhWrh+mhXc$LIb36MWeBH;=&{$F#DxFZyaD8^I3rVVo&^k&YEJ-q254raV+VIcC z&qbY6!MPMl6U}(dk;Q(RYN<^kWGv#8xDwoc2rl=TR@(Jxts*T#MUvX=idl?FF5Ko( zXcEM<-FFBc%?P1VAy%s)#VAk4ivHq@W7K6lodx&Y;^Dx+=7^?)kBfBkRx7`UuP)0? zxaOg@yMBbsiXY&M1=4m*U8cHLGqWnIYgDc?c&vD*nkkxhY+6rlnUM&w=Aznz(I%YAG+ra*|GUAO_ui&t3{85E duvQvXOaxeqnAn>};M|uMj=<`|k+#mc{{ckCkLLgY diff --git a/artifacts/program_methods/pinata_token.bin b/artifacts/program_methods/pinata_token.bin index 9a292cbed8dc2dbde85dc9fb86a57a5dc13d7f8d..5c65366fe725952e7001802c624bde6be6e114b5 100644 GIT binary patch delta 14615 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 Jjn<8e{||s+l*a%7 delta 14577 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 RrM-sZp3@#*WncC1e*hfOU=9EP diff --git a/artifacts/program_methods/privacy_preserving_circuit.bin b/artifacts/program_methods/privacy_preserving_circuit.bin index 3580ef74425a4e2fc999ef8980a492f33f60adc5..e6772240090261189bf5b563c6460c12676e0939 100644 GIT binary patch delta 76624 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 z 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

    0S|ZqE4^ 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 D6-nzq diff --git a/artifacts/program_methods/token.bin b/artifacts/program_methods/token.bin index bf0f0571eb1173fb7e01c4cc1c9e7ef65b96c7a5..89015992964375bfd0cb1a14936bf25cb1d28a9c 100644 GIT binary patch delta 19893 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�>4-?(gn9;YCQ0SV#f$1DMpo=gt~B%eFtcR3*~Tow@L9k<+~ zbmy$GbRj6Yd_q|C*K2ENKkN#f`}k-x}5=UAX(AOjm?NwZnIiv4;3R)Fd{mA-jIMR zRai<^uE4gqIl;v#R=+aFYMnLIE4tk7pi2k}epg74yva&;okO~+cGwvX`LXe$PYU=U zJ88jUJgk~in+lf0{!m%i>%_=4tCdn?7-J0lp0 zggpVD+g;{#N@YQ*RH4l`q8@n5{DHEvFs|`9F_P8z9G-Y8)jC3M>2q9Qb*348leAdy zp2KHya&H0`tb~hIyWg8(@(aqwzSe8Uxm*F!El7STgu;#lEsZPfL3W~)_?=z}jUq~c z6gRuY?^_nz%?MD0TdkQ&?X6au@?|UQwB9X>V%9e+3SUa;ETqe0ZVP)T+ zthc8JeG*Q?h~FFX!RoN2j7qZ>w7eK|RC9~%ZVi?9r&&k$h@kKVoxwnvr_3q2T;kci zMU8dz5IiotEO@=1kk^e096a~X*MjAw9R#n zVmBkpI)5DE*MoWx7W{rBUD(S?$yuYK#o#{sJy@C57FpinO*|eE7ofno?$OD8a=Xud zkBXnL;enzm$7*f!$6jU6P)k6u4X~zU{Nee4_7%^|w{%u2 zbFJ3QKTh^2O@pju&30_;Y|V_d?QHFCYB9qvIIf%DJ#F*kBtDccID*{l&}ha-a*`#& zeZhWkHyeZU`Md!-(|8rEccASqHqM_2s|Kpn&`>twcN0Z!8DelXx<{svh vL3!3li?2}Lv+JPL9<$`cQuD1}{!?ijW#(f||FKTuOh5e;D{Hhq^YH%z=JFW$ delta 19958 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 diff --git a/artifacts/test_program_methods/auth_asserting_noop.bin b/artifacts/test_program_methods/auth_asserting_noop.bin index 7292d3292335165ce6edd38a0617b53b2bfafc95..eee2f2227b7074ed56a6e8b75a5033f0786177ce 100644 GIT binary patch delta 73797 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 Lyt1}v(XIanWRCjX delta 73788 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 diff --git a/artifacts/test_program_methods/auth_transfer_proxy.bin b/artifacts/test_program_methods/auth_transfer_proxy.bin index 662f2d064a0c6d4b5c3bc92ffbf0e684c30b0b88..76c4b953017387ddd655c7f5a870454e8a9baefd 100644 GIT binary patch delta 15779 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%0Di@Wgzp*9?(`~qd^*nU@8hL` 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 Ks7~E<;r{?z?u(xQ delta 101234 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 I{P?2(0iC|~b^rhX diff --git a/artifacts/test_program_methods/chain_caller.bin b/artifacts/test_program_methods/chain_caller.bin index 68edc95ca98d3a650439a42fccaf3df675160172..bf9449061069cc27bbea457f686a2c5b062d6d50 100644 GIT binary patch delta 109517 zcma%k3tUvy_W#*?=FAK)MMfSf;xGpg5eY>Yz}EnRnC7F*%*;@H^f1NJ(tI#93_h|# zx3IOW@R^!+G1RfL?ofhSYFJuU*41kde_iX+&D+n4^#9%GoZ(^h|Nr@Xw)^b0*4}%q zwbx#I?FV?|bkyYwQI*luw{LAs_rNJWn>0|8Bunku-04FT@28STG9Xf@BoSnZC4jl? zYO<}9B$15m@P*VM71|Y~wg1d8tTh-IFLQprehWY!t;F0?08*E%~KXZxNbU7;z z?n@@K+TcDKMB2hG1ZUsw`>z5KFTH4Np4a@3|2RB$$tvgH>#eX$tfF9wV+G1)^Gqg} z7_6rGG9O2USP9lZNpgV3YBB{`N zvEiLEs56r-?UYSj1KA+}ovEy)lR_$)t+PU&VZ%GWmQq2jrhSxQSmsGmh*cggY0Ojr z1{DaLF;vnOcACY7+9^uR*3zGB-Z&1>%UL&tWD0DI~8 zj<6EI?rRakq_FN0z0H-X8oRT?i2mBQGm^O?hG^fCl^yZJU7cA=M7mBN#4;mw8kd5@&IhuNMkuTkkVD+QyZ;T6Opa5 z5mqb)%SE(-YP4ztrQvw0(3`6mO8DysbBV^-O1ONKMf&?hI@kW?1zPO8T|B1R^YPF9m-yRZEOzDV2of~a*LL)*$e}qGF(Y&UmpP-eKTns{8TucF>u2eRs zS1y&}S#7VLW|hYIB|Fn=i~z;it|yo}-^>a0YtnjY!?D8H>|3STX#D3tpyUn=ybhXE zf22um$E4HCPQ*S)eIYEL~TmqYd z%x7nn$XvbH5oFG2c1_^AvE)SH!dVeA*uwh6iBxsg^-*xv-C(9s+$Ky~>bb7(+&{(m zy0Y@WK)HgMCHc>5IgM=1U!bHG7TWL6Yx#a+>-$Zm6$W;--vE&%rl{EzEvwYBBU*M% z%aU(VNs6>=y_Ox*vKB2%O;t%|XxRoWJCQn|w8DU8s~bEkfjI~3#;3!I0CNU)gp~j$ z1$KnF0P|To!YW03=8mu$(VnRT>^`|xG$?lf%0AJcp(CtGG)OzbE{FzoFXb1c8SAfq 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 delta 109029 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 diff --git a/artifacts/test_program_methods/changer_claimer.bin b/artifacts/test_program_methods/changer_claimer.bin index 5a71455c53c74841f0c67b7e691347831046cf54..970d9cf4a6cd7c2ab9e5e7e0437a6e1d5c87a52e 100644 GIT binary patch delta 13536 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 delta 13527 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 diff --git a/artifacts/test_program_methods/claimer.bin b/artifacts/test_program_methods/claimer.bin index 42ca125b958865a9d0103bba284d9f6845aa00b6..be5cc6b19cc491fd45f6c9d4bb462aadaae5e450 100644 GIT binary patch delta 13433 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 delta 13385 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 F{|DdSe6;`o delta 14155 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 delta 13109 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 delta 12574 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 diff --git a/artifacts/test_program_methods/flash_swap_callback.bin b/artifacts/test_program_methods/flash_swap_callback.bin index ec26c2ca2c7a4a07e354688ec68e15c31437376e..91be3cfb68cc5d7f960c7881ce4d287c9fdbb844 100644 GIT binary patch delta 97549 zcma%k349bq_J3E+k%JHtCLsv~GMUMp5Q2nEID`o#0fkjAl}ibRQxGC&5OfkJfp7;p zq!3U80wSV<0ftr7iE^!?i^{6IvKj@IRdjeZ`P zNB0E(%GjDUv9{6~INxPP=8*qQ;6N9-#w*?d_LXsGg6T?6&aY!fD zHN}MHf5D}E?!>+Bi#%R=wy`7Y928wATbm?Tj9sz?EwlKhIwX17@mP6iu#0^pR|RKA z@BRaRNAUBwbV|M!JT*F9wnRvBXoO^|4w1xON&33N{jFRcl4x6m!j>=h+QKTB>j8&k z3k^+>_k{EeY9N`4mGb$J9_$x6KJ-oYiQF7|JGW-YS#7$pD0zIFyx!GWzA4DRbZMpw zO4))2<;s>alg--1L=H!O|7|YtZB}a+8`V#BH!!L@M4r^Pv~#*GI#-gT=Se+Q>~PDL z3dv>()wGjdlh3tH$#`p&4@$`^LPxvWN)@vux24C*mdDRN-mJjZh7tpo25V!usI}_%9p}-bN?>6p8I$FP32Aaf)KoS=E|2OHnQpU~QJEPg zA+uHF$w#6J<@3?w*mrVSbhe|oMARzXIn$KPm^ZnAsqNM2{s-jds5SC{4ml2MswR5h zjiNf;KYsnQ(ekq$HaLoVtCAJNZp3+D(&b1o7Jy%qUoPd>Zmg%vbQs-vbWQ*uD8>k*vFaOy_Ykq zpqDdacrRz##9q#nhkAkE3;bSA`_^90?0qh08q2d;7}BkwNNpGdZ9J$<_vzbVF5B5y z%l$S>Qyzr!;P+A9hN>h|Kg+-&F2&ZFTgfpor!kO}31o$@aZQ$F$k8-9k$`|g; z*ca~1Y6^E|zZZ^5;k#5>Q=ZKVf44?xBhD>MDa>PYS)>ZtGG98|;ovlH21_li3bj(K zIa~koOifEyKuLdpQWB10bEfQ*sB&i#rA;;{CY_D2JODl^nuZk07eM(+DBlzX#ZsVH z3KUC$VkzLK$rcZ_bYC7agn^KX45`SFiVUe*YeJDJ6q!PiDfGX$reX#1+kDiRYBVPP zz)-Xw^P|yN%TRApfz9Meg89;+Jxr&Y{l8b@uDYR;jt7eWvl73% zwUQ`Hu_+VfXQ6wtV6n7`E@wuiOC4fMr<3D*Fdr;}mZ>rvLxzXS2!X<`4Av*Sx3LUc zs9ic+aoZping;8n!8&QMPMRqd)=Gu7(qOH$rc`exOE+~bNcVQFO!qpP(w%9;%})E) z4(OH+@RttomkubS9m;5jGTNbxcFwfVJyFh#i&4%j^jUUfGzyJCp%ExF0)=-0KpUt1^C+hS`IC@8MaduL%-$O8w4=)$=&~eqS<2_+?bJXU zLcUobm|^~iL0RZ-kDQP0plBlQU(a35GY>uEt>|WNmJ2 zbA{EE#bUf!1!#L^4Ae23lAB_jc1l^S)3McRN-l^6M(U}IbtWkS#DG9SoHJ{y)tgiq zhfHzKjIENXh;>ApxooNIh|1apj4Mf~pbKPBP*WEujg%!IKb4b!JZ4kZ$^>tEQv&FA zC_)w6Q6JJuJNS~xli6g4Zzp;)3KC64m5C^f(-i1*Fb4!37%vW+*(y1+(BiD&tkfFX z_v~P6R%x)6yDU!007(P$hwt?0B6{|FQGd`4H;0@XBgTJ5lrVHd7`h=0-4KRuKt$OWH4y!P`Ru(Y3?V0Z zwyhfLI>kXM-iNmaIU9Dvn^}-^8>N*N=XOe)EY6*~&CXrBEzaG&<)0HeduZ9}tl4d~ zRj&xTX*iyA?pe{s`NF0)$Y(}*Gy|DY9?}9U$|Gz=c}Od%Oro2eyLX2<_iPGtzVJX> zXTzp&n zo5FgUQVV)|Q!9Hq?FTUG?qbd)q$vmB^zfN9JZB^`XVzrq%q{}0siz663vXIMp4U-{ z>2$Km={U-rNuIxPXUdn{nf4QRW*p$oEQ`sR9c^;j?=m}6COS=-l_rDcsy`{qU}+{4 zzZ(INl^!uqQ5w)TOtOWvLB-uIrAu%0D{7SDS4v*@H1a=Xh{KOdY1e|`YoRW@!O1Er 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 b%nXqbB?9fN0&K3|m>H5LY*%Y%omB?_1O>`} delta 97364 zcma%k34ByVwtiLhl7$cwIw5Q!o!lfe*$8XGqJ$k06$B9#B@kAL5D+j5(g~e}7{Ypi zLO=-!h`=Bipi!Bzqik>7;>ajZ8AU-wMF$j-P56K3F6j&7d+&dLzst>c&Z$$UPMtcn z+}m2YqZ30BM%+{?f2D(b$jZOP+9Vk=c=9m|PxGgrt$hksHMQx_hMP=|!(@ORa+(Dc|B z|AZe2epkT`sn-4@vvmbFM@sw2;08QZI# ziBxziHMGf{f<2%PYLXaIL*_847BzWXupP4A#y!mq-7Q@x9n>8-t-jZ&fXA!Z5iLc@ z8g)oSYWUzmezZ-ks=8a97tu!KeXXvK7^b*2H{|;=c}zjcUmCd_JXCe?NSBj2rPh4* zxf<2DYqOG1Z7IFk>GeB)aXET3i7rD6#;BtkZx?w!H8e6+1WMHG$iC6Aqy%jVH(Pl? zZ5{Op|5}aM)S_1{W0P3lw{(A12$wUDyUHD~+sWcS=HS_e#A!0`oOD$=r}$>EsnmA=d0PnTdQY)A62hMw{88%q!Pw-?MFN==TP{wLA$(} z#9OGl-+G|-FHO61zEIsg#-m2XOyXVD;+P)M@h*oQmDypo*6C^Lp_qQ^$=HeEfpfN$ zI#$rqAy&k>J%+zq$z{}sC1Y$UocmIG^IPfcG4)i8Pwm^RebSNPx@g}0w~Ctdz)&^t zO04=yvsFn)G7YW$Zxc1>te=`6*Pb(VSzMC$aC;-%vRux5raDWRtk=RS!RM}HF3!2; z49$gGI=P%~uDjTGLU(Kb4nbPqPj%Xaj?^VaSA3$=962s$wn2O6xK2ySc6oyeKh}wd zJG-1EhG5@+=(PS_UCw~nw;#c%LrPY3cO|2=yOOrNyW&agp`>=`p(OY2p(G9Kp}5EP zP_kxp1HT*i-4xHpZc6H&Zi<`dA~17-Bk+txfHwA`GA7+x82aF@*wf7&`7TFYJH@>* z7opnBmr~lymRi@$m&)TnYpNveX{sdGHC0kSY6^ZV__5%}g5ONZ;vOiEQquNBDH(N9 zO4dhFN-|H=E30ega+ap4&M2mjh`dF%RPK$@n!?1mtj6|fwD#?2oRStvjtcz9Ld)VnH$7Jy1l#GpOc*6MJFuoMV*ELg; zH>SZ0X^N*VO-cI*{L*yQ;iZ=D$wkW|K}dt5G+34HOYNO*v?cW3Vr|cdX5u4EMEz^>Cf(_W!w( zyy9CbX}Pc8e^!zg+fYf2qn|CKG}f0<7i-Ie$J~gAq~+a=G4?10z8AB=6D|k(1%aU= zLe-FLGakvXlUYg;{tjn;a z^Gsh-?@T3am|byiY>w_}j(BN~cxev9qR}PMFghAt60LZ?@-|b_E;Lgz&}UiEakjR+ zsjqGCrZ!J$Q=bPx=Ghnn_s78fF>rqj6f}l{#!%203K}c!ubL@ID4&e-sap9+C2M0S zx-?u#stZ?=KMGe;zX~@R7>jglms)q_HPXA=YwhoiP81A9!B7+oy}iXsDinLbPXj+g z<7dJnnea#!Jd%ahMxeEb5yVRBM-eEW0e%Mfnc!!lG2v)TI2sd<#)KENxy$CF2!~Zo zRHRMavH(|mwodT+r?V2Sc$TC6rD%VmHcp_Tr7wlIqA_#2YD$R8Xa_S;8&D)LopQAxgq1UW$;8_ zM(;#hW@(}?vn~-8CP4>Pm;^)cEKPzu4dx`9H?X2 zeL@W^J#BZiQ5_5wB5fsY%vF*pqtA#{(h_5pjIkK~y&dT17;{j&oXGS}#$}$CKVevD zT0@#@xvwP*$%P@gFob3X4~+CE8QwaN#Q=mSW{Db75Lj3c>3HV!F?$;o?sJ8~ZH=N> zL7DwlmxJaiZ&(GCxf(gxY34wTG=l3(LtGVRxR-q73gJy`DIuT_WVY0W%$ItUDPGS; zWQIM+49MJBA2ovj)&~PQ1ULl9-M6QfTQkFdW{ya-G7_zfgu5eA9+?CBlc7KLqh=T_ zDHOb}ayPdjuWEA+NO7d@TIW_ohFvQ@)&=q2n_wr`J6cCL+3c0Jx$ zsacDeiQAO2?U9xq!HCo5Q7^hA?+J9tG>T>-q7{O=#K>FW`6pA-zCoUuz?H22@cabi znSDY@J}i_}?{5MHB2Xa0ms%QOYm40HaoChJ2xLGY>z_h#e`8lt$EH}U*W*dw7K|;3 zaEvH;+dh#RfMn(GF?J-08zMuR!%;+#+c>sNZf4tibj^4Xosi8CV5m zD4x0utO7FrBd#*Q&jR0Fm!%|qlm*w{8du4;t|Gh;xHYh_^nijiD9C_<3>C?yppX4w zb#WN8wJWtFr8|_=Qb$3xQ~28TwyTTm%=8R(pK7PpB3Wsz4ctfNY4l*>j6}sonq@Sv zI2w7;YGkqsCv%mdkUqDqQ>z;@+m^;iVD}(_Ek*)+pAy)uBWg=yB(Qssz!oEcz5iz; z>h=V7`&^6!=Dj6@-8Q7K{-Gh&kX8fBeaRRV?zMJbCPqcl8xAEo&0)*Hh)At+Xd}Xd z(Uyr3k%keL(H%65hAfOc_cI|%(!(K2@-rcz*_6=jPL~6tuKTUC+#+qrX3%iMkj~!Bj33`z-^@5}J8k3xp$$!c7h3P1MfGNsp}+%BDAL%H}ki zvbDF!WAKjVOBn7TLl{%#y=eI{fPCEL6?T6=bG57pYUi=Jptjn+N~ z(g@mzY`>YFrE0H~IB##RC!IP6B^{-viV_N^grk(Ljc}E(jXhhhka zVhD%Y+Lj8%^HobcF|z2{8^e;G9P12v)`j}o@-UmHcbLyp8isX88zrfCf|87tL$2ZA0b zNFya2a|Lf6Tm>Q{y0zJGFVXbBOIG{bbvr(9=>*U-EC>5-F<1jyW7%v zcVBv4Hyid;zKq`8Y?-{9FS9P!#d*(37ey6_WuDCI?O<%kBQN*0gNcb|^YS~<;#z>6+QQVv9@ z*3i5@=n6&+Q<63^o0m3Z?v2P)d3IML#`LX5MNgXdwNnADP)SeKZsB2_Kt~sb=eoNb zDGc6$QUo9jf^tgnwD?CLZj1@G*4kLzTiDK`g;C_LyxD3vgQd=(5!&3Yoi}tg_CVMf zd$ko`zJOR#5GrmgcIfQZUP6MW&@_hJ|ijJIJD3 z?_tI1^(`p3>sB3u09^ z8HkgZ{B}Kfxw^jHQC@|Aed>2eT%7zTj_8SNNUkvGfG~ zmU=e*KK_OpRoz@2nlV6>$E#~HrVhKLFgrW_qW%2z^I!g=x8r|0pqt^)9bS^^g2Rm- zpF>$c*yDk3)bnSv)T9oX`~h`nha5gkt?ba3-=n^VzXz-Kjy?DQHLqjels@PHo)f`J zToLmy%a_Oc5MJ0Aqm#_zvcMj7TgQ0#0v%TJs`_3>f97h4YopROL){=M8O9e*cxZhr@4hoW0&2w6{ZdGjgI758Qa5Bzki z&V0}|{BaBITz0lPFSDZvgsHnTyNW!gdN#9MBZZsN=J`i@;U2CaX_s$tB8I zIbmpH*wd^aCIxNe97Bw&=wy9(A|^uH$A@UA1|^f#jP|v#@>Kh{SffRI^cHEBmfWXC zWK)Z>wSPxsQ;SNn+eaHM+GDn;pBl)HiwE^j>~|EQO=GUBqk9bJGu7Qa?iGQVD|)u+ z8YqHca6Y%wR4(&1r%x{^Yt+?;4HEK3B>15S=1A>eN1L_S5p_h*nS!-ZkM(RLN`|Os zd$wtoH_qiqgpvTF0!O!+A~v?R^&OXZvy$GZ07@9ey0uef70EECe)#O?h4xczB+n&YjtnuR1sLKp6vXz z?)1Fe+R`E>Az7a3StjI)}EUtEYNR2+?}J zjl?V}sj9`zVKCF6H{sFnf2!-L3e0YU{fnLFwYV+w*s1 zekFHj&|IE_f-cA5a^0>YWx8Dp7whjMpyIqX#dlZp?uxAq8*;BBaWWOt#VeNFa$v5~ zk^4J&YW>j_wc+=-;Cv+x%zLX7hCj^vsDa@LI502A^ye^#L?E~J{O}x}sLG+*gftnm z9yY!>7}tWW!l0K-R5LcU2zg1<{)sH=ggySV4@B~IYV`vT^2zF%2YT?~$^hUe8|5B5m8irGV81>yW~uS+ng028O>O&dPe2&-_-n3y~5tfX{2Bi za(5eb+o-m@n_53giO=z+EW&JfH(VSG9dBw|GTn3i_o`73#qq_e=b?1IR~_+?@(|t` zVV(`oLrrE&*_Sx43D;KF@PNw+dLCt$ybOKn2xqPeQ#MehhT*WmiSn4kgWk&fO09pW z6)#oKJ(R#x)QE?3qTg(g&>R?uUC}hYQ2_<&JD*TXvfF?Vk&P9jzde6SBN15ZTAkDW`r=#iQx{KZqMn zk>$H-JhAO?Fyr;n`@U2xgSKK>6%vi^z|OSww@f#1%lpCB^(|G49*s+U&rtsNoMH^B z&_VCQzc^#YJg58jU+R#klvcVwBDI%QnvWeH#`!c0)~k8Lnu)$IzV_Iw94{z$kNIcF zP;CyHtybqN{7H3p{%}4`W_Wmpnmx9W`uojPHG13!{1f%mxVi1FyKJRgwdEW3_5VW; z?oa+OthwfgRcdAK4YjObI?}lYYGA^v zc-dGqF@b-tE}Q7Z-%*ni_z$(&liuL~7bj2R7u3;H*74tKFHbqm`9<~Q)UQQYVQrxB zZ7v-7YT2}p6E9;%=Bl%X$s#R;ryJE?&6x!w?e;5b@$>|KRb4Z^6ThjxH+>RkwVjJ> zsGv4?MuKP&BJ;FHExRrCgs4SN-p%Xbq=E(q^_w-72h`oO?lUR1$+H`AzD>=Z(?C); z&zZ{Cs!>k`DP>RfLURs1^{6q~J_n^q>fqvd9;Qw%ZVzQ^ipl>6i*u;i#l!hin#AKz z$KznzeYUw;^K=5F0#B3FnWx_kYpKUsNDKAAGd<#O&?wgCdCdi^7N;jp-3`CpP^0E1 zL~r+}(CpxN(a5W-)V#S5;x+M_x$RNovAO9OxEDc*SBK0ih;FOL&5>-qmZKfiz`Ug< z)tPEg+pGD{4n(#ialUtj@4o)cT(oxzkcR^?IeOT1 z)O#wBZ{SV_9;0K2S$$`tqAs;7eFdC1S1*?-{0_BsdHNlBh;*UacC(!M=;X*7ef)T; zOYZIEYLab6e{a1N&H5P8f2SV($NH#c<-?=<>D-Y6bndaf>e=#75fg!m`$Y7;I&;81 zhMR|}?&tdQA?o<&jzT1(>Q6s9w^MqPE|Xxtx!y4J^&! z{2}%7vf+HJI%N5M5Lmxl6R2OV2@Fvc4p!01b^Kv9V$}!2QK+6=mBYuWF{|H%lj~Re zINx16Vod>$9&cD$pjSEYiP~e&Cr}rhUDw0G=c&mX+unhbzkNw`=%!@sOVYOmY^z+R zy`rn2Wxq;GOl`Zs0(u|xpO&Lfz;kLVH$E>yw2mt;Ry~{J>2I~XzgHcy`DK2y_TuJs zG?bQYUCV`Ys+zGaCu~bj1vSq#Z+EMdmva_EcgVn1s*@w+VK>ue(O0zX zx2AExO0{Hn99AA{cHd2bxjP55a_c?q+wH{?+2PmC$4Q7j3#&Mq*S7BuPBH^$uR3eb zr06O?w5b&Xo-=Ax)pL8OuX?_A-=FZ-zec=sf65zD`)XK?-iiS)srJ1u^WEysy$O7u z`rh7z6qEBNB~yKx2z=sNh*LPHgXyK_98jb7wZ+;de;;L^ zji4~LtrM}a;J`em9G-HdV9wm%ioc>}?C-_@rWWp3VgstOr_qHf;b zqj3_YXT4nPyXv|9llV?`gx?!~gx08rr$10(n=8b$?c3MX^ZvH6$FR*ZB-r0`oOm0R zTA`>J2l_@Q(WH5c-jV|fM|}qd@+9@#fgYIWJg?{Q&(-|b6ZofU$?L7czBYXRg}V9m z;r8#*LN(!yxNzIsdY@eSPHp{$!oO4V-bfGYrpq4vTAlUAaQk*FLUh@Ex@_vV>bW=C zM;(Gk!gb2GXI;*El2QA-85?%gkAPAahJ2;wznRX@sMT+_4+|KyQ|h5NePQJ~8hAz> zdT=-@jrwa#^=}8m?Ei8(YxJsC>4UIhrF!n5!oPvUq_71BZIxQ`*GIw@7{h6mdgia` zXlm5oa`+GGpugRuf8XlGFV$AQHBf|I();_!74<}24!>F(^>!y7Hr4+OEUc9|7gW;iQ(1F%$#(8Ba+8PIc|NUT26J zbEFp!QAgn4D0StLw=%EmoB=jOAHF=&W>7_sfbySoe^s2*Jv{I?wd80zZ(Y0d=ok^! z*f2Fljrn`~1{A9f`TIZ~p|1S9FJ9|-I*_8{dVTQc4Kq|Gsh!`QixIy2T^#DPlBcw_ z8`f;MWQJC1)cc+I)Y^XUPZC_I-TC2EN+!)elANd2?*503H+~TZWWumELk)Z!$J1+1 zd_0EpEH(F^34Dh->YtRb-Jk5>yu13|r!VndYSD?f7I)CPTw7Ob6J}te(U?2cniFxn zTkU}pJ*cXS|9zA5LA4h@mkyxnukN;W!69W{sCLAEUR#&FrX2!ldB-_GTgl_-PX>q= zm~Ck7s78GA6tY9vH`n+GwdC74{JZAc^yu82wv@|4UNpjOWbN^9hl>^pz3WizSZP*G zXjib>k*uq!$XD~e@4@rcdEX~M+4}DnVvb1up;zKq6$wB)Wzcr{f!cz8VXX@y!-8)p z%YOL1MN)x1+@2GL!QTI_bnUDseD75y{FO9y<&Wt+O%43mi?3gCE+K4ZjwGuVZcshv z61Y?cohyhgpcOmi6r=mbsRz&f7&g(i#hLHhJRrYz_fI`+__*ra`J3^N8$DgDcT4}7 zI65#=O8;rq_|kw1U;nP$k@%rjGhG z2b=3>AHDXgR;(x)BaW4S|PpR#6)4zg~^{B_>Ak*l!r_47M}kVviQd zw!_cikSQBg+OHQxt!hK_r7xwwN6o+3YFL_YizB_$#C@!w4c@g=c1v+)_)-R7?-t9{ zuCc7P{GY6r_*G7PJg^n7!uDs7oRYdVO?!IwYfoS5fMi>$Gg*D_;;UiFirbOwayXLJ zvfp~ONLDuOPo~%G%I5!Kr-kDeqam}@lfRAO$+bN%mGcCobX!{aJlCA7O%RCKgzncS zK}>AImv(qw?Wy1YTZBLe2LZ)u;A%VlZ^u*WdGqh`*{b{6PYp6L*I(sj>bV;V{ylrW zn?awgdj1H~um54tp{M7K26}DO&E@~6Mf(EWW^<^vl>VwbX5&40mCQ}$t)<(}L+)6F z1Cs0d@;h)UXEplCIbfl7HeRm{u7eFU+D2=%yf+QnQaRqvf9KE3(GKqAYy2l2e7N9k zWp*f!rmCAyZ87{G~w@XzDur;hNo)f^=SSb-|s)ulz$$^+sQy{J`nB>jfdmfDxoQDmF;1v zGCQ8PP4sKss;|q!loC6mHHK}=U2T<061%Id#Lj0Re?tc1`Kz(*v}9Dd#ZwUD4E1BM zs^y34WLX>Tk8P(qn=xhkKRpHgoPv~K-PukKO+dfDEeE+dK2?=F-Dt`?^0=FC0C83# zy7L`*ERnw%k8d+ekmU2Q_ts9rA1ZJX|a%CEf z`Chuyc}qDiou|adV~dE-xAxvZJ8m>=4)wr3CpV|_qo&aVewMQ`czb?cZq9(qF39W{ zo+!W1;0yRKvM>{zi*kJ?f4SQ=+J$~sf)A6LI#O+i?HvA&@omBTek{3hLb)mjF2a#p zuIjAE1QW&lm}u061Fy`J4Nh0C z%2Dn4RJ7|*d)^}~!dzp?&}`l#wgJ*fy;1nO9F>j8`$N`b^V4As2FdCU$QD=SdmVU| za7>WbJMag?Ui7bpc~#*zaU zK~{I+>-Y`7rz^%O5A$P3zeqH8YU^>$yH315>W&m;m!9r?un3*%pVggju<=Izm^%@P zDYuBa%0m#rp~mWoW$0n#w9D(g_#-?*j>_Xlc~if;H$N)4%YU{nU&O=iY4F3m{yaUl z0S5iBFh(8(i-*ax_`roXlMw^>Bhk%`HpJ=9I@(GW55U-JEo%m#<%#-w*7=I=`%1Sw zKLE8Q$$10$QVgJoLC}=$&mP3*3ZCZQIhc>J@eVTLUbv&Xf7`vhkpSE~l&ieE95f8M zBv)qN&)cTt7KC4lunlO=d;>z6t62r>H1QLro3c9B*Y?mA@WW-z{k&QDk$yV8B3G`z zAJyf`03MFq0{bPqCLwR!&%@$#3&bV7a2y&^(DZ03PWu0CgJz>~x&Gwg{9VB_<@pDA zT)R7Tva_er=3e??{NC$QU*2uf=^lQqrfDCoh^$-qE9=@%8@)_ zSO%6nHk~uDlgkl-96_hM5!yb}s3;dQ!jS2V=rI4r=hgTi25U&<7;b3qAumI1bT=%* z@YX8fhEc4G^gPHD;=7`S*IWn^%1~GcpmeAi?>YYQ5Auy7L0bYHo^4EImy9LR%p5Hu zkIa(E42lt9-igof?;ekU2KD3w z%$Lh@wrYzBDVtB^Z*rgi_(cA1JFk$3rt)4b$~13bXzA;8);Q;7NQW#em#qu=r0Afz zI(ea7S%}tD$q`TRt}Pt}^rDSU9`LlQj%7S&iU!h~8SYo6k3gBqIt z4;tnbYZ|r{YZ{IfV^~+p(NFUnXju6)=He>Z`56rID%pB2{}hjlbNP?F%71De7rZGs zk>UMs(0TIWvwU?@M1g-NVy?QnGUpXIHLOLIA5ZnUr^PxB(ux;z2xeWa{d@SPnAPzk!)UpsbYs5Re`8mB&#cs!@)dJ!6k|oE##dtt0;_( zR}N<%}Ea+0;JT8JA#BkLDp2CZ6M33YH;B?eKI99^j`l-E@9_APeM3Wh>X>xf8f zKeUqHRLN77m||e(bG&c#47?TosDL@`I`@G^vg|qjyAg|R<>o5hjLbY(1;v%}G9K}H zogDkHkHOgtep00=XQuMmRdVPeG_zVRTf}o>tB|YQMjRN`uUaHeF5=S=-+H9wrQfPy z-y%7_8WFNcE~`dd?vy90`GRKJ*lBsIWdCYev{(oX>Btoy9gtPoR+uKfSjcow7t;Uk;0wNcRe@*8CON4Q!VOR$$RzDeWr1 zFKn^i&4ID<{1d#jzgR{0q0Kcb`JI0jZ|7I?S5dTP6?&n+Jh=)1HABX%=AX8BMepUj z!DPy5;k>9Dp5l{s3I8pXLnKUDB#WfxjrEcrq5d4d25_ldwnp>Z-Zh$?7lB&98>~%1 zOqjUU+p$Y!_VauWmEHC{1)e;$9;>-4&+|Ue({rs>N&Z^cw^XhtR3!szVP=)QycTVn zA>HeE7Mf<{mxkOY^Vew}TeeQOWF0J7Dle`>R4e7HVr3#?e(yy_Kt$ z%G?()QY+==7qrHndx5{9nfM}a@2H}A4d3hJ%9ss2iO9Jd$c_H98{nzvk^1Cv+lI5e_hSE$Jy*(IxYaGdr? z`%YxRJ7v$m@O1g%PCkggDx3cWS>jc>TYn7NrJ+;15R$LTd9Nb*9F*r?1v)4zcVmz9 zmMqx=cfKVz??GmMONPFtp^Vpn0&*FlfZR){PByOvs*^oyfey(ULWkrbpv*2f*%SI# z2zhVi>_>z<2WT`}T5ig}IQ!A$%aS@I$N!c!bzF(> zYEo544NeG|>_V`Bd}SPshtjd%Du*d`_bk?0?)Sh}W6* z_|A{o5x8cy1Di;pc~Ga{Fl0~o>)+-$^g8H|IKm$cHN4EIY)LD#ES1wfZr13mrAe2| zK4|a_b%M^0)6Lmu_-4Qvt&K&R%5FN(^v!^8G~Z~vK#svPee-Rw9P6s{8hrDU<{Pb? zH?OnKG<`GRoaP(7!j3unC>QSQX4;H}G1tG+4P+ZW_})cdCs35=4QQm7>3?fn==w5^ zGCwwyc~C192r(FE8yFfr&uLcN&;hq9`oV>YwaPU*_D1@W?>l+@L!^hF{X6Sv=Y^m5 z9=dL<@3`FkF*YCbKjta7&;`-QSV>16y6DK`ybE{A>f=b6*s0n7$+vR)W9KJ4A(BV= z-#f#lh<9rXb9^C%^FnP#^=&=O{D>`_4Y>U!-(hF)f5_}TizAl*T}EdAfVAV5t$##L zb<3eYB8|n%${&%c6Xc;Ek$v6r;*S{iZrS`C@~vCepVK7mKOq;#%YHv;k|jSOIVQ-R zKVdFIj`~?6=KYL8?UwmJ^S&Wy3^pL;a>=*YBYmF1o5;v!JXHStGw+i43Vo77Ux?s5 zg5iT29{20boA}b?cfGN*oB8|wo8PqYIN9%4SklZt`B(nA;II1oT|zy0mi&%taRhPV zGFF_eWc3x^K5V+av8-6-KXiq!6Ifg2Uq=qy;lF+zGfsR0ruE2zHV)xS9SrA&Guz8Y zm|x4=`x9i|4NU9ta^(%JRe>AW_a{(q&@luGh8Tt=$f%oGO(e+tn^-CQul==BEaeHS zmWcC?5@V>A zKd1AYi-&0ASg$Z!ALHfoje@0Gj?*h_uPZHIVDQR=yu3_;3a$#0B2q32oXrveMF`zv-19US(Ll1}h*T z^%fm83|nFFp2rfv;04|=410kRtHmN?3afb0YH0*!q=TlZ@^Ulr9pC6b6(>IDSOOeu zAzJYod7_2LL1;#`6gUrj)!(_5@Kea1ix=sb?PYVf=!M59x0s5@A-A}%_h#LMBlvO; zX1S?j^J0wVyln8WpgYfvZ~vMayzNGF{^B2zDDV=iR-Q`|35{#9RCDIMNqd*OYh`mq zv`0mQ6qr*h3l%XPkCTd!DMs-DyHtEnZB+Y(uDbuLy6OS1`PU>POi?5w)l}_&gSJP5 zYvrg^O?71|sm4j9z=pY2o@guXLxmoXNa$TlYb|BdHl}PofFyuZi1Qo1z0LZ)mg+a? zJjXu0`U=0S^q`Id@_Ve0-(FVUsXJZt}1DpuNuucB0Fbec)ur? zWsBci)Vs=YfKo2-t3U0m_y@f~N9tuw2NB0Vlm|M9f@q;PWowAvk2)3}Z6Px{ik#?= zbn<{tb@IS7{#hNxQb%T1!_NRTrFo^g(gE$svqnV?G?|?%;@V|v-;hU9NU^Pkc!wY@ zV1(X)j{c%tG1oRB$B@A~3u`5PMx7X>S(hJyDX#KMH?2HfK5w#>=5m5c?HBisJyeN}lK|9!Z>@^9h|VJ7+=j|zFV~)P$&mSn<;jpuGm`G3Cou9;-z_D-PiQg@-DbwbREu1pm zT{vOdq*;^Q>|_I9elkp?HN6g;L~^(ja9_`tP45@e+T@K*Vvhn>*_p;S@nYcCOm4kj z{7vMHlW#mE9uv#Q$-z@ZOL=Ozs29Eh`PvAv9VbeUJ|OxwmE)6G2=u&&XJb5fjF+!H zAW}vBc=_1_VsIFnki@!y-d|>p6zL7HuN*s4^a?8hw+pz;|H??wglCR@V*2c9vlu%K zdIZQd6O-t_t-|W@#4%^X#qn3M{MUm>f=u2u3W;;2oG?l#%_=7)u{MTSD4u8y8*)&- zI7(!Rz$E#>DABRoMaZOqK6L!p;S(l|FDM*4<%y_aZmmL+-+jNE4FcZ$s2fPXsKN}{ z?IGb6>SWz3KTVb`ABNhZiE=QWU5ch8v9=Jae%Q@o9&xi1c%H+32)75gCvJv28JOCp znI`}8uu#RdDgHi>h>={3pDNdm7A<+1+&5ahl{uj>iDf}_44!85sTke$za-*c{cpl2 z<;F)v`(_7Vw5h%47&ki(y!lc2#e-s$yz?;;iM7)`kBPqC>Wyv`!hf;`Hx0Y3w|wL=ffo>C#Sm{sQ4+fgLRo^bXgsrFpxHa* zF)KE`Scx+8AV*#tf+u;g3{Seu-m2c{CfI;8HtM~1$S6y_hq57B_mxeTUyK#gFjDRr zCt5X|HzSFKX{Ce4pP44-j}s$94uIE_G5OX^(NQ)o5K5ctpp1ZY7u-#87okf!<4G|y zs7&5lAeM-AGvyZrqGjr3@Yc;tV)@{$z^&jm@do@&`3JIX#*3ED1DdS7bG(>yN8yu6 zYyx}K2=7XpyfLFnSvNtnZ(~v)00)P1+C@6)h6f@iiut^kTs%<}h=a4`FB3&l#ixHRh#p#ptr_8J$?49{xfGzp9!{pkzmnwsH#D~T5na9OivF&Mpv#Dqq{js`GyulyadBDw% zy@6qcdpz!Wue;fZH!*&3ZzlRdG#XDko}<7!h5I0Qo$<^AJqpjxz;u}rx$LjVaDQ{N zSqJ2@=R#jw#b-O_(%craK>hU%ZXC%*gVlY{BHQGshOp(xlz^ke22- zllSDTnNy}sLR~Utx|o_;hAPbgl^lSXz=0!f6woiKy5?`P`$KR*6WOIm48-HvBGD>5 z_a7Mg??d_nxv5CZ6eqp1*$mMpWoU_RaCrFeSz`;Py2s(4Sukfp_i*+Ycr=WM%j_pb z_a;TNX10G~`gko{u%}DprWv9t+F6>!`avcFo{7iPDessm9!V_(`7S^+6C8(;rs1QG zAuRz1j>x~w6obX7QW^fFXlXSu>q#-P%}}fohC#AnVozTZyB};C!XDgK+=8(D*DS0gBg$^o+*1ylja>h~jcNe~!4n*)i}*IYlI0NOtUex%_sH7@W8hJQ@g9FqGUe{=48< z9`Y^Hz8v!Vv%vhMj zT0!nK>T=;Z;%d;HJ#QeSFJsC9%}S5C>1HLrx!J`lx6)5Re&z2-xL4%-V$r5)4Rn*q zak!}|2N%j+#bRdo_n?miu3sqAo)&3hRHYpGwCEaMR;f??z^k7YcZx%m@)Pj!N}WF= zTsHS}Nt91}hCf+2rCve}eUVI(rzSBswLeYW8_(7;LDTZ%5?OP6 zh%%}L?pBFx9-i4P6Iof?L`dovMdATlB0IqnSqWrXrzWxyJdxGlUS^Zq=ZX98cn@{l z3puOqgZK<%P^{i;D?JKspv%lKQL@{!BE9M4>Lf;yTZ$)H@2i$`o)rU{t_P+8Wzx4* z%MYFvUB$&}>6|YHgl8<)mzrZ2%aQX%AICi4ZhA!Ro-g`^{|h(=Eg&nLn?xa-ps*=5{2;UaVLI_FMg z7uzJVWIQi}ZXLkmm&*G~5LL^T%K0UtPu#zj>VuAS)9gdHyK|y!|D@<4_rD|}lP*JI z5U5`}@MaZHD<+#RFO_{tMW4u%eG}RGF0cyUh=8`DRLp65WLXj$2N}9)935FETP_d- z#J2u&+yaa{;1?H&u1Q6Zn~l2^cQx)=k0(JoXi-^bd1--o#_L(3PfB-yN9o$c-EYHP zZ^ILTX{?#@ID60*(IzeernF&VnjEQZCdN9AwZwG#Z=Y~97%?A2YoWcssg^?f@V8Y- z6)@#yQ|Ti7op2j&Z^19%Z(0v!wDa8AGc_&GDA$H9AfiRE41cHK&LWyzUM5aBZF~2I29axme-ot&?ct$MNG12~~dlqYl`S3#IxV?|a zISWOf2Kl?eryOU>Ka9UU8kV0yzOhMf!x`%!>n0(wn4}IMHPc1!tQ5~A72@lUZoowd zeHw&YfN2mM#gi5Tzps*?Rf;?NnC0I>d5Rtrw-I>tX~7CGl{fjxz!W6V^YC-xVS(rV z=dgpu^NZ)i9B-pFNvsle*Wk{=-=VnEanscb&t|w&4IG818}|Xomf-Ga&`Gv2{*EUM zmv%DfE<6?79dP&D6wLP}_&fO};7y5bn7JrjvpFa*Ybz#%mx1MlDv`irWb`5g_sPvN zYZ2B`Ti41>i$qd*Jw90@7ae-s|G^^h0~ginyYeY^* z6V3$*NsXEKZTw9$mx-_8Z#ry%nu;aJT6lhdr`O~^4W6}pBXo%sN8E-R--c%bCtK=! z3Yg3^^_KxRwcv@sut#YS7y<(IkXfJ!ux@~V|5DM1w>+~UNz-r%PZG>CmcW-b$fnCh znm4xw9Si!scv4Fbe4NNm{U3MHKNDFVZc}cuwUM} zqd%@ZFFFBbt`(i4P1%1L9pjcW){2~ACb^TiRb^LTO{HN%;cb|fq0~&X{J%{sudEfr z@kz)%>(DBXe0Cj7@W?&uge%;$U0?D}=CaKa(KX)0Qw)-S8w26r;d1xaS>^ckVziyUYEL?-2WQqqE2A z$CMl^(tN5(b~uAWfqsqU{b$6IR-XJMZGlGYO;EHl$_*j9xV&~otP<7Z^I9eGK zk=?K{RuhZEJ0Jnv2fayHzc}j;+;c*(&LZGh&4TZ1l<-90198FPQ-Qk|=*}koYT)-Q{B^)F@++w2sgi#u5)z9bP17++r=mMU zn+LU}0}I(3VjYG+thphEA7Qa=UUtl)a0YMeL90jAeP zCchAvUKg2oI`9q)o(X)wg1xgrs0V@ebYwt{flUQ30n@lO@m64lVb%=~lK;rSCjU4v zrB4%o3QWV)#Ge7vFg383{R@N=5NOj!3PUlC5;g=_BVZ(o1{?`YdBWsJ15=_haSX8e zii`C1GO)?-16+edre7Yx`jY|>knl7EiVSQPcoO);MEUkPEFI%M12xpmitrGEv)6z} zVa9PAxY_6WnAeh&5Ns)M5#);veut9?XbgFizwZmg1Neu8uFrK!AAwqyMfpR(G~(#+ zgbU$iAz$f3(o`@Qn1-B*Kl+-nosIAohU*GT@u%t%jq&XKX$AF$VSl zABqmj{{S4?G>9Mk0ow!Me4_y$0hhV(zKqIyQNio~*3)hi5a1Ga4cL5POZblSdYU!) zUSP_Kj~eoC15?uKXJE$#eFR}X()0}iHea}szD2+^f)J+6ON4od2lKMC3pZZ|cDKWe zFc4`b{no&`3}@d1p9BAx!S`SmCT#N4f%m2baTf68Nx_M36mW8;#z(e71&@Gm-dJZ* zgyZ{7b}T!npb~g;=OA7Ld=3gjwbJ+xZvpSNRPZJ6ncSfK*TC+{LHWkmB%SC%e5xM? zM1io)qOdzK8Kht60@_u9KS7fgY?6UZ{^P*ZLK8m$Tx`Kbz~;+lYT#M}>-B^10tjS) zsh|d!T4dsvfCIp3AdrIh4Q%r3fypB#{utPNb4~Jp7}(^~aR+%so;fcvyyWW|n;zaV z7{Jsyn+?3=OT8&kC`!TdDaH@=#XPJUX?P@_(>uFJ=r{mOzO6UPkNZjQi;D(7j1F3i zi-JvwWS!WyUT%ZLnFj(^oDN*i6@%|!S->B0`St~zixpz6tzS0Q{Wis;fp=Ta{;TkMqwWft@Nd+ZJ2;4c z0X}qh5dQ{TeP0k?2KEdM;%mV4ErWhxCjp#c!5k^)tZ4?KD7^^+mOgec3uHlnK7cTB z2jI>YmvjamV!=7Uqb;~Quxi0~0H3hnJYX_FzXa>sM9#k`+IVOG3d7+DkKwQ87j;Ke z8+aEm*wXjI-e)-~g=ll5?l6p6(scl`G=lfx&c*KDZ2a%Qr0Op4 zDfphHs*Hg=iY#RuZA8a779l&dh;{-}hpAg@IIV>3k ztY3oJfr)Qo{Q8!e-_KC_js`aQU4Tiye#sv$i6rl)>$*|-h7%SdjZ!1r5F#gB1*ST+ zDFuzb6FSU`8l4Z^bCla4aaI6)U}|tqTMSI!>gX3|%YcUju@^rA!8)bEC}ezK`uN8z zunG7C6q<{+_koXDD!2?x9|xK8e*iZt3~swU(I{`>X9Ax`c{*F+4C|axAkY^^rh-R- z1r)?+0)kZn(-%kj#o1!uA>g|}ATJ*PrZ1ID{$GK=XsAH2v%vJ_lF9#xFv>Rv0V77R z<}gM3tVxsLEFL%y0+^h&3I+jNJ#;s4z~Zrcf$J@J81OX<9s!(>(;xj3>_OmS17n^S z>|qf4!D3V3QQ+~w!$6=GE;O*ouL7n%Ht}L$>Jk$#1EwxBu?kEcG4X0(>H=JM;}-0B z5Xj~FCD?jk>O&K604A52coQ&r$i!QKhZM?xT*1P9<5k@o>0r_*{Ti6Og|N`Da!vP! ziMwC`PynAb20%|_1@aE2aZUcRgKGio0j2>l(aE&{wj1(a0+YAL>GEE-3&xlijgWfa zp_cyt7`Sk>+YsUG6X2C-jAjs=!4X*Ir)uQ=bOY-J1j_=RXX(xkz~(1z7`uXvHV9^c zF~BPeWz%aSt$$B=gN$iySpOj=SW;%Tb~0qmi;S-VK4~#_F>r(|y(ZFQFJSJCcvSyj zfE+UoC&(vd-8GTmZ4R=2arP!ke1_(cVrtH}_~Q_8GXqCqoNcx=zdP_=3my+#X3;l^ z3cqH$^pNBtd33oAYl6DPn&|k z-)dl!{|Yb}tY3od1SW$`{Az5n-a?b`8U)A#Cf)~pzEFxkL|V!TL>sjRHfhoII>L&) zS7=~&2xnz-*dO9P?{V0qUz~-(d!b{4I0CrviC_$MB|dNg3Xs$D4Xl?J_)pB}@+O{0 zSO@sm$)*4YuM0P4L?Ba<0iBJwDYOVsoGiIb!Ey_qfxps%Nq#>tKJqi_z+Mmd(DYyf z&Hx_=4ub?Wph+Au)xSV6r-ANq@VceI1mM#a{xV?t$niK7P!uSL55oGzSt{`6f?$-a zF|f&B2OI!D00Nay@V3wira%%fePKz%mIOu_*yKL~JP%z!d4pO|0ZgBQn(_w?Y|6g{ zTmwE$w50Ff1~&QLUqGO5NNK2QEo!M_Qy>+XKGQUDJK()AAOi$4U<5FIt!eTf1U_%! zF94=bJWYN%a0WgJHOhP0ZV>2GPg9^4cydsHeF1#N!v6}`Js~K62Ds3IzXOh$807x| z9I)V@fU_r=d@pC`K^QT`ByjdCaPHI~z64AklvXp{Lt|R$7!VhBHo#?wk#G$Owivhu z*kRxUz{@N#bsBgJa0KybrjBf__bD(g!J>ibQ(rT6_cXA{?*&Xp$;4{GeEciR%Ar|}t@H`9t2{>RmP&f}vU1aM26_~oj zIFS(S5(w01roa_o>LU|h2d2DW;+w#fSWGP9^~7Rg2QcLo6Nds*9x-tv;6eh_eoBpz zAOx=qH}An)Y06}?K%{AK6)+7$>H@;2fN9v7I6aDM!;FH8_{G39s!V(sm_|`ggWn{Y zYoo-w(;z$z0u8Gn27U*ahSfF$XExQfWf0@E-nGUVyYUK(b}LO19w zVCrHmhOmGVF`T;0cz**ze-LOGo-yWv)xgx}l)1E%5PS|oK{L|8EfcsFBc=h50#i(6 z8vJOBM`>>81bha=Sid;y3VeP#-rvALEtBO_f$46Y4@v>>_m)1J2>fpgo&vnnvSKO( zw(g^*1E06Z&jh|`!Lxx2_5PbH+aN&L6xabwpVw21h=0<+ zCjU!d`b~m~zXm>N!QTL%x8SqD+lqqnKemDYOJ)QKKSN;6%pkr1Og~i6FT4Z+Z;C12VC-@+Uy2w0FNo>Kj7G*<- zM#Vy4@`x5gz&`?$N8AQ~L`$y4NM{3=15*&{e9V7)K_Hiz3fi=~wSqEWYXxV4trZNz zu7`rotY86fumaBZ09*C9isxEPog#zijl?}5P@kK}Ym0y>$c7pg*8x*dX$2sE1(<^L zguzcoW~89XMIs=NOaZ2#G|O)QrXV!SznBbtF!%tCF4)}-AFRce>ASQ8w69}FTe*NkOutXu?!K zwLk^oy#;R4j*Bz=*S1)p&#fWC&jVMYLTxsL{5!zMEed}I9#j^TzW{8<4{c0?S}Qo> z25zKj7i=K#MU?lN0y9B~fdJlIXa>CioMLixlVBoI09W_@;3mtw%|>`6qF`^3or$x ziMIiJDJo6E4iG3RO}q=Z5O@Lz3F91^%oA@Fy#f*u62c{r1@l{|1Sp)t9n1;1}+3|4)#vhG) z{lb6SDitj@5KTr-;NW%PraKmE0Q9Lg43R0v0aKr9K?_`t%t@IJv8<(H2i_e}B06Q@ z<-nA94se}+$O{7Xc{&7Wl^cRdfcn%_I2f4v)WnN{^DPzD15-?xd{;Xhh9gn+#3GSW z`x;;x6>dZS^>i%L%8X+u@Vy^oa4m{yV?YK(WkMlZIKsfgfz96u5((6uAB zUX}`rfz4mElK$6$sSENA`D?)B(P7&B4}l&Q7g3Zx3QWIm)h~>B-~$$10DO5(kUtUF zI{Qrl?riCjLgHKSbl~a0R6j0kCP6rE5tt2Z?ZaZ=;C12VU?dhYAW!HXxuX*np)k-~ zMXv)UgY%3oy9sPfM0uS#vronR?}k=#Q7H&yp_vKa2BsF6U0~~iKDOW;z|?~AM)|oG z1IdFg+=h1m=dPpL=;CY_aG}|L%JqA0EASR@_IkG_P6gfue!@T`e;BxDO_2Z5ZTL8F zKMVg9aPd>d_8cCM@nBec(E>c79xp-h$0$pI-oTSlK=T0jg;W6Y`h`zsfg`{lZIoYY zV3YrXQQpKgz+`}lUjp{l8IW4E6@=h*;pQtAOfG#Fc(2944}cF^@JGOhEciI^Weffk zIAf#RsDiW4Jn;Vz3*lc7D74^Hz||Ifn)pU>GWc8I;C12V>&>_(?*@^EX>uI$#zr?Y z@nT>ysI$TUTO9H~wII|W`~(3qz$`EdyUrmNTn9`oG!^^;Odc`Ie{V5}Jl3ckGU@*- z?Ox!#n)b*4@6R;Tg`rVl5I$2wgORykh{7O*5W=A5rbt4R#10{Z5EDX3N+F2`p_oI5 zFq{xV2pvL02r>WHd+)Voy=Q%oqx1Xk$2oYe_j|3q_S$P-K6^eF>cnVVi41ArR^zw=ZwJS+0_!`l{oK3cHyYb`_zDHm z0bB4Y)?Stc0f~@dFWvMW}O@;PB zsN#};g|g(&_VVYdxa2>ooElQF!mIF}N{|X4D9Z}u6sbq7ot!dTm*$rC%95Y!j=Tbf%kl%+zx zsSxM14~kS=R#2)e`GdXuQ&n8@Pmdk1Un+!Ng)6)YS1C*W177|t6_*vvQI`BSy!^MK zxY>TGu)?eGi&x<{6_@-!lw}3U-fbscPwbZFmfe*l|8U7~T|c{EfJ%@R9HT51&X)?U zEw&FXRB_24t1S6EBH}a^0(WEhg1(H z%_by*9rls+&vFIbNzhxkD|SnB%MB&GdZmE|3g!CVL&aqUhj{h-tGIONNM*?%xex2t zD?CpnNQKeLQlTE}{5w@#^6yrb{N-N$n<_5(Z-=TtDztbNQu5sPONBIL$uGdVL&YjC z`DMzIU+d+E!&HJ)I9pjNO!F$-rQ(u*kFw;y=HRJh%%aED5e3e%M(|DRs| zaut{SHARE2X;$y%WlfDf+M{Aqf}hlAE+$(7q;d{ z=Rf}RsuHBaCCXA^Mr#G>M*H9a6_@;3%98(@m;Z)}Oa5EdvVN)Xvsd9)n-FbwbIT@W z$RGIEcpYx{9{Z!+J5QLabATnUWIWgF8P-#%L?xI@*h-j$)Bw( z`LDZ>z4{gdlioL zDhyJV{ENN(@hUDI3Y8`QZZCg^#O?M=g$KL}OT7w>DlYl2D9Z}I@bcHHxa5DMEcxjr ztY1%}&J?(%xuuJ;R4Bwv>T+FzvmZ*DDv6*R=PLKX>0{jkj5<7Dy)9>W3EOYKeJy%5 zOM*CFcr}adx3WomiLs5pgk=TRFJrwy|HN+La;z*H^lb^_pEEmYa`>|-39FTV#NE{j ze#XO;f5m!*o3LA&TYf1^MD2AnFJ4EK^NAbUw>L0PhZIPI8Pt-eV14%Gc|ShfxJ5N6 zJx-SL{(w12vku;Xh;;{c$8KSkD@*+&uzaOmyzu=0C<>AfyMlputlGlkv0lN6*e(1m zm<^D8y8)N60kQ(Q%*!p>$tqtuFb)rN>kETRDH!Dnf(dvM4Q@#TvdoDf@P1n2G79VA9t?8%av=fbTD30 zf?;^7^4WN%@<=S-18DQl!$ou;TIBivXbPl9Hen35@1$oCgK=24z{W4dvc=XDuxzpQ zl~_Luz8dRYcrCUI^Pfi~%u*TRij;VtJ%VK)CCQR~crP5@iLGRS#v-%=Nb5Q5BaBcwAZX zmwWkds<`C8-D=s_@DNFtlUj9)w9-sfYL$L+4 zA{9n^6~?HzbZDHi2e|KT}!q|6%gu^>g`MrV^yWYsymLOFVu-(rhGeM8i$W z>#&|=->dr4-Ve&s-q!m@`DXoeU>geD(%jNbSt{hk6--L|pisqS1trRoKgi2JNyR1q zl*nfNQsF8J9v|N$c%D_riDy3U_(amIFcCa~w;bml*ME$Qa5U@5@3bF(FHrgExI(!z z9;Dm_H-@TUTMAYwXX1sIxD_0XlM7vk4#oYI567dF2jFSS$KYkk$KkM%6>M#`_)-eq z#$AkO<29H!u|*^DFPy>%oo@UmUi@Sd$&v^X{1G|xsbnN^Djq_9blzZu_QAm-7cc0; z_5XSj_={?^g40N-PzgiuJmqRUU%3v?=EPHN>fdY(S@`rhmR%Mvd}BM7U1oh}ANGHO zEwlx9lORKGJp;=KSwDbfgsf-bA?l814wezK@p)KA%=$6OS6&cOAR}NCp2S5dJ&n_X z23)56ES5=X^Pk81uv?1V!Xq7JndF~(`QaLsAcw_Q%2FY9|F$dWfZf7_L}khE<>l|G z;?n-!%H)SFM|c&EQVCLFpt7vs94~*Aic9_l%920D%fD5{qu2kps{*O;gjeAy6_*t} ztt|QPdin3Gxa6-=mi%9JzP$e5q!Oe;i?UScen8t@uq$>8e@<7H{JviPK`JioAEF$+ z{;%>X)T#ujFicriaFv%oNyR1qdS%I_ZMcDNO3tJ}t`#rf zCcK65*LV{3W@EMF}h+Jwavfy?ns z)xgzw0C79SkK<)3{uB;W{ZFy|B5YaZmw3>#$+$oG8(eW2@Bg!Zi{0)Zu4XD>Cwu`7 zrkfrgisf6lw#Flo!j~Ze4?s90qZ$%B_0r}3RhE5qkOGYP@atE&|nH{ zkRe=z<*U8z3ZKF9HQ(0H;UUUP@LW~@8yw0kj+d0+I|^hLTQ_6-UE#9A?gz)V@m;a~ z?r(`7VQk|^VVTs{1F`*naml~rVCJ6`*o4bSkbP)j~Uze0xXl* z`bpdecQE;@jcxq%gPDI7s=}8f$Rx7~|HiTpt=D0h_152GIjpRIz%pm7f5LKDT5rU1 z6j=WrQXt2*E%+15KDJI&#QV%T73=GL2kaIu$I5c1%k}d2QE@plh6SoXDh%=}oTTDX z;S^=bALr#?s^XGAL0R(eYMUPh_oxJ^aG$bNcma=R7RzBOr{WF9@m42-U+_fY-A%mW zkk~eU7@ncxcN)iW-v4no1vQ)p(kPKh^$M1+svnk!SJ>;&*tWqvarP4P7D{SNGPd#S zC7*bI3Z%nJjBWfSJe>9AQ4oFp?^_C{Q(#ZMnTK&=S(*%zBuE428$*^va3RiK>Ml-S z8%JT{-{N_+ml1Uumh<4_vhg@O&HK%6BB6Wp0^03L)p(t?c87(Aaz zYFBU{t|Xpf;>+TG z+^D=3uTuU77cl}h|2rIgRxDaS9cZRNhTJA>!1mV;WD9mZBDRh9z_LrMcf+y^taI@C zTIap6{e=W+??mHx{S=%`f$THeKqZ!aW_^9^u@BWs9R- zijVKl$G3=|NF{m1a~oz-hOM7atW^!laepPA|8ml-BN1GU-LFR^f@|@z%iSbgh~N9-#a=u2lXK%THO@{D0#H<#kv_%*MaRZJz)C zK!IEML*YR@US-H+AIfvUC$Q{-=&l&A!A*2Hx4)$pQA5#yd;8y@sc;355;9yxLH36uTb#|@J!;-hy^^VmHf9| z{TXt0woWW6W0zl9?82N~P=Nmx2) z90sRQuuy%B_B1gGDP%|klZwGC#`<`3D(|E$f9>D~&f;D&)wkzm-3@ke2?vMsP%np?I~mR-6R?z1Lo?my^4ZwfX@L9`@- ze5r7iTR{;Xpj?Xe3ip-#)`h2JOhRdIIb|}bKgF^_d* z?}%pY{;EOg@yX(=-96w$yyS}{g|cut_B)F-Eluve=po8C*&;Qecb13M@5O;~35=_H8;;oHe!fU^F z9ax6Pe&hVQ=eIq-gBPm&4{*4@T4CDpY!TkptS}F+RTYXQzRs<1Up$0-IWx*pRErzF zck#3EK;juDejDz--o@`cp5tE%29O~8Y`Z~i6L#{v3m&E#=;?WPJXXc`!mE_?@H*w< zLCn7ms$gFd1~t1L_Vrxh`7k_8XGajI#r zr|N)=U|+09pu*T(e-puB6wFgYGypHN`#eYqF2c!Ql4he4!6jIJm@i)ViVn|Ld7gx4 zs{9-9h>c0JezxNl3gnjoZG-imr+dB^PgD6b@x)(U{W-W%`BBeLL{``TrzqHZuR>MmLBb5>URZuH zGF~_WJm-5Z!j&q&98Xm~0Lw2*+V&1UDQsKN-%B_WuT>QWV)>~`+rSB)Pw{*j?x*sr zaQypr^6x}&W=O&4=;9d{jKG7{iRN59O8I;|N%=x-e-l%#hW8pvYjRI@KVD3JI+FNu z<0y>7Hz|q7s!g69+OD(w=9nSA{$$5cS-H~s{a$M(`_@`J#BooV-vFA~|@=@`TSVqvs=VLjH z8DbiI7RxT#!EE85*#6$BZ1I7|we9eGo<|kE2J=0acrM4oRQ>^Ya%5S5z+*NFW~hYzIPY5bYWD&>&&~l3 zn|ts=I|uMT@o41@c!Tn;C%0`s+d5i59q2{DGSz`xygo&3A)eCCxy18+o)5tCgRgdk z4)%N~9!v-2`$t(lU!h;14kF&%*A{?jbY zEeA@1J2M4M+?2|kSf7YbJU^VqEf$lqh8l8|{NoJ1%LR`&{te5d9ALc15Wb3qU65m3 z5v>rg$Wb*!*4Mgz?%S(Xf;F z;sX-2Kf>~h%kjdOE_?n0Pp5;KB*>)7IF+M>{0c136HYU>^{YJBp33;oP%Ai#g!#(n z;uXrHJzwm3Jf3VvkS;ugJk9f6xWCGuftPf2^&iCPotz(TYp(xo z3xWl>yQ;7VmnkpCla-f>8S;4H*)WzlVf_jot6r+TiWj!VdHw%71=;F*>XJ2H(ZYRs4OtQF#^ChutUGEqqvA;`XQrgLc8r9CorodxJ3q%L)_JlI!~eSXN*U z%jY;O3EhzGI3JoIrkb{XeCKTO#!( zQFmk6!dw!h1FNyEAS>)y+ty#GEtKOraa!A5)ZTL^JUiZna{l9MF(}B{!cCH{c%X8o z=bb$#@i3LY8_wI(wYMi8t-MdGqw_C+sctQxKXj-RPf`{7;8n^8V)=RZcu5H=@F3;G zaEHal5-F_xpE z(ZuW6MbaTVXCA`R0qeC`HXyXm`}e3zL_L;g8nVw%R2`CidcN&()Jr~muHtg8AM17a z5*3&F^;nPK^w{zC%aGqo!Fn~sGjVph+lO;-rShX#A7+nZw=}mbl(-tfMJg^G`WK#% z5}I!=3(|r$6zCQF+w(d+N_C(a2V1!g{)|T`|L$4dHm~FD@c2+w=t#kI<*o31tC%F6*igB=o{qa+-y=vGUyCPXxDMQi z*V;)&{?mB5ia(F15$|s5uRWdXzZAqvO7IN{3zff<29%re^s`+41}q)4^?$+A0qfuJ zMr=1=w=-hfc+MHjzXV%k|HN`U31XXYBJPY+D3B4j+}Oq^;%$g0O#Crp8()BB#H^ph z6V%11A*4Xh;%Bj2_?{1mt6BUEhpCK+J&u3JGO1QkNzMahXY%5dT{w{*iW~~ZA7Q;uKlA(r-l+EZ*SLrgXeTRV z1h*Z+4a_#Jb0!RSq+p>d2zJFy%Gr1X4MbZ^1IOTuF0Bm&gFK(?xf189{Gqs^)gfQ8 zBo(^42G7RQ<9OjOqqr2y%X8U+JB)37I+hMv-zzqf+wS|ZTbf%Q#I3tjuK%+su!{_F zBi0@Ir|0E(i0bfLo>$;WD*nFbRd_19SnitH{}NT zg<8QEc$M`-k|)g=N~-(gu8E>739kLWs481 zjtgY<(xCyKkHP(^U|&c)W^D5pdR~M_kZTiR?+?`y5+fguBc_-r>vjw+!@p{j9 z;tABZBlNbh-QxE=e{d%AZ>Cz|CnRWph8tDW5o?rLego|8$7`#KlI#&>U;Q15JpW#g^|0_H`%XMg-=Vs3v@YL4)kgwCH zV1U}f?6Y{i-8{7Cu zd?oROiQi#tuD|@O1_iQDY=wLAbewJ~ylQOYujARo3r&2Zv5o(ZSE=^?#2fJ5CV!7} zVw>x4N{~x|%mLfLJ~$T_n+m5G+xTgCDDf>#e3G$^Uyo%@Sl@`p<8qV#bZoPJ25vD0 zGD~fR7qHx=#!Fi8BA$jjQXn_2dyZrUCMvhtdtUKw@a zq1KSDT>o=S!CAbNl6yGo$A&m-|XH6rKX`O2fQ9+5HFEqqi<;%Y=12J`(dvIYH^mNFzo=kl|Fbij_l zrK$nh;yds>;sa<^?h!kk8#`VJkMTTjgBPm}+77Q!-sxQC|3+1iBtdL%AO;)T6`baI z2=1QahP2l6FkGYJ=Xf4=-Q9LbJV&Vg2j?sZlZS%SQo!7R3R6Ij9*atH!vqvAC<{U(=x6K+!ZQ;nlZF0X&LJ-=@pu}DmqhR(Ud;+SM%jGF(}moo7r6MAc(8JY=WSaZ zU4QsJCkjTZ3OnN|%02KBb#dAaf25p)yD7phZrK5p~*zak3cJYX9r z#d037-WSVZXT3j`!z^CXf`0fO;@eUnyWnhNn?DjiL40cyzr)yEf4KpnKn^oo;a#@soA3r~UpM@2Y~z1oIV`Oc7ez;vSwB5ar9h4Xo6rHvQDD6VuE8l3 z$QBkG+jtq4No>6zmPu@V0G@)|Q6Tk)M^>NF96^E1a$DhCEQg8p`B)Ak>kF|Q1=eG+ z90k^w;DL3{m*J0y+oNQTI8+tpQ6RJ0Ht-l;qW19utgr7+Vz=;}(GpkJ_f9{?M?o1$ za(O?PJ0LmtPc}YVuKzMCqaN|>H|G@o@W_c~GGina?&BQ~(t+qOlV`)H^W}704f~r0 zjyszlF2m9($-j~N2RRDjd~V~h90k#Ng@?~mMz#Gx!na59`9C?VcBTP&I^Fd=9ya1q z<7d?t$_>cJSPsh~dMu~j298L@N9J$?~P{^y7NTA80KH2DkvpEyN~C-Snq;^ zuv_?Q6^W}|&|k%614iOCYJC@kUcp5;S>$?niRa63o{C?I`zuev6P0i9e2eGsHVRhX z>^{S>4sTFCWGu5+o@&Pr%tKehOa8BsbTZFqlZec$IK1p00eO=UYAB zj_0ZTyYPq-*P$7Byz+x>%=Pc#HU){`5j<^*JCm)%^Hc*Ld0vehRs0Lwz0`H!Yh0xK zy>WI5lUT0*dtcl(p}=!79-$i87q2LDE9i@d&|!P|9*zep--`PwKZggG$Mu>2yx(6H zh+pyiDqgd%Tj86Y-^R)PT>L%HAK*$A{{+vEJ0#nm5^OP!Q||$;fzCL$uX8ugJ9zGn zYgB#~Ucw6O9nS!q!=$z&GzKp`NZOCCKfG;*f-;rx5bl1k>%ctEk9%H-^Hl!Rc$o6@ zc)apU*75aE-tW;i;Wa!(RcOMil;83Ef#;9#I+gz!&Zux3^c60{@%q^b>r6p>Hskw! zJa51QRRh1`{)|{A6=WA?U&16*=Z$0VutVGm2jPjtOHF==N8ilv|JZ%*uk) zd@sG!%>OunKfOwVx_-ZNAvYPExzc$#D|a|kF5n9qJCF`JSJ^gH^l%??!!lm-`u>qS{Mm zgXb%Ur4;1$cPo%@M4X`#&ctgDcX4^gs`h!FN8{uXF8^YjajUy+pNZ$;1Vh4{3WGN( zxZV{6zv1hYcbgCd*D4Rhlaw#P*C@}zS1Z4TuTtKGC$^gR|Mj|@>-Qkn<6PXNM&Kkd z74{0^qu>g>1lwKo2;QW;60cVE+g-um50raj`MuYuzI^`gWD2rv0iKALs0xqaA{GAt zPgYL5l1DVkdAOVMsd&Ef)p)vb^!opC3I?f!Rk%jE!$b~CuOTms*Edc9FUMrvz6}Ap6KBT!o|G z4kMfJI@agvChQj8zbA2Zs_uI}?|$M;IIkU>!>RgRl`p5}O;{#vg~XX<6R#5U{6Aj! z27{=;c`}}IU+Qth#m*C(wcj_I2Gfv@Ia3UUo2XH6_@xo_*O@j4YJV3?g z+}U^Lcoa zieH2~R=WI4aGvr6&sR-i{^^8CBn(g$ZonJp5OXH#&?4OLG`E7qc%e!OfAst_E;_^I|BgE{$2yq~hPz+K zI~XZQn1W;RvMN{MMBGKiFUK2Ihvwng)h_>W<4PKo!)&7$|D&xL|LeJ@Qw^lyu4;vO zcy*0iK{4(|+)lb7IJMTrYmF<}AnCw#FMeMebN!o1K{wUF9GrefkLaz|G6}!Oqm|1h za}=oj{qYdxgN&D%4qWcVuhy2=zt>VQN;PmJE}Q1I@M)Y`=eF>9oTL1bu^sZn4Q=D? zJ$J%=Ont_mzuQqzai&{AS3FTU)40KG(J5a149`_~nyP;$-k>}J_Zb$gPtN~|;5<`c zhitA(h~o1-KY<6w4MgzzQ7Zezs6(L3b(z9n_3m$ z(b)bOuF^Q#ei?zGUWFRGQZ+CfC$HtxZk(H?!?W>ytS}LcAD@!JV@J3xT#2VBe}oq* ze})@IWSRBT%vTglqQMEfjIhRGlujkV>u>dj$G&Y2An?1b?6p6|9t0q zTy%l+bmQ@fc*MWHnd`q!_};7V10Jjz_yymuCS8wPcq*piy>NkwABX3Ub{#m$xSu%> zOudEqrxWh*Don?#R0H?nvI|{LgrpK`_77rFco@$?(Bg4O0Gv@E=p z7Xm6_e>_q7AUt3BF#Ld8!TETdijTqTmB$-L51Z-I(_TD$-YZy&yN_`_ei@Hdehtr7 zZo-o|ie{Q2?K+iH@mNoFBAgLO71us-yj#ntZWxU#~pxbS2<2!injyJ0MS$OOvro(dm-<^Vm zwgB&CJUbB|CL_K01)eX$t5p3l4yb+JT zB`at$Be;D%_mG#n4t2-5SBRtQ58rs)S|EL9mw4U-4~#0r@!oh2E40V?$@n4Fp^135 z@?&_yHLe2-B`%Jye;k(-%vD>k20x0qHqjm4kT@*}o>C3&i=R}k#hWI%6`Y0Tavd*; z;9Sq6jpOyRiZK-QR~5$NNy?Yw$;wyb8Oqn=<;qjU*SikfhSR6^FdgD)J05bKy8h3k z;6=8`4(XeC-F2>k75Hhj#VvTWT0!a^LGY}K?}HcP_GSc6!3`?^47~PwHR)<7m@wI` za5!#M4Nk@XP<{cwto$`jzrof29zUbvJKo8uS;cq7(?c!>b{}O^pogfJB&c|<=Y4Ra ziWlKm)e6tRuVFifuET4v9pNW&_$3AQuv$&Q`kP&czQEl%jBE$L#udun;}z7;AVDVS zj(5d}oz36XbGGMRcQOB`ss?jOsJzv!Fdq+?>RjS^KhFo?5i0*+Ji6Z1?~g0hBs}ge z=6}cAT*65t^jEIL1MlKvwTbvtd>@{n;@7SP$77Ui@F4-^HU;{SR^Kbl2W$oZ}n@Ur_L?>cBR4GfQ1UupQn++)lEC zuneK?;9;Hzcs>RXRQZGOrdD(PKbe9)_qYa6#|xFK@do8#IQL$ce-0kOGorodksJl} zxKce8TZ#uLe}mKSH}&QEzn%hlP8TmJ!H+lvA8s1l`JUJ|p2X6ibx$lSwB8*{hphL& z^|(I;(!t}6CC>ckv)&ZQW4CzW4-#0O>seP~c?xEI2L1&Pr9c|I&e+Cp!1B<_dJ2|@ zT-LW@dC0{g*B^f8lLC267B76n5>Hc}j#nz*i`OdOk2fkmh~+7lZErS~hg{Zku{_i= z*WZ-jQ3~XtlTCOW%R?sXg;<{LS}(%#Y}fi3EYE_ipTi??IR!F8YmIIE8$3$>A`)MJ z`RNr39;AXaAr*GGH@2bSqeIJ60uQLv>t z4Cffz_&mIoYT!L%8~*@jsCe3p*f!n~cUAGi*kK%Ji%Tfjjs$zA8fqLTqy#m1C*mm- z$OzqJY~#1!oz)7SGq&+1IH}^_L{{(r`;LO1Dq)BFV%r9~O=eLkeudEDG{*f&$sXw~TFk1(sL0*6-m$)nLl~v28pJ%X38Qj#wU2S#OC$ zc}isqwx(d1@-|o=D%p59oTuK=xILbv;yYq_CS>z>#`1FAI*H}Qt98%&ng8-~*%s_h zg4{-1?}2A4=VH0-w()(i+%;PlV7Y6yF2-_~Y+Z)sF4}s(`T;Be@KR zyr)$D#Ir1gD@_WY0mAayZv!t3Qc}47-=-RnKNLPC4Yan{K6qNi<(p0xOI)qs1r?Y2 ztGxQ3sJPVsOxKss|9_zpq=A$N)C~e>f)1Xyz^fRMOgbs&i6Y$Re)osP%Z=l0;FnW8 zUyBEjFAMXZ_w7QFxPd4>4v(H0Z;`YY;%Ukgv5Z)}@auRu-o?@Nr+si81#W3> zxj_=tKK^Pf-+06pg5P zRm$%gmzfppF{^F7x95Dkfh|rWU*^cEIPXq(7kw4(_Mm$I-*u*d{HV$exQK*!;p=(v zCN=36vkZ3iCq{0N?^ zIj~8xeu#A{> zIqt>?>_ma=l4@~Cfla8RK=zUKa4bV;Jp#)RTc3+(VS669)7ZxE#xmsAGq66fJ%Ho+ z7iBcJ%#ws>Y=w5g9Bdbv@b6taFc&zgNo)7YT z2%e$xj|eGfV#w@${b=KO*!ih7EJJEN4mYZ|QeBGIsrUq}_wkk3EzK=gOZ*wzUb`Ud z%b87vI6D!a+3v(LB8}9NGhODze6bk2C_1y@v$3o&dO6NJARocfp(Oe85squs3T4jB z!g`D6wsjahDm`lLV*B86)qq?s7fM|9c#(?B3Rd7oHKgx*UWHev_@{WlJi80I{(nh9 zWorRH4C;Bk=O6J1mA?_MQT_vOP)>QctvhJT>;Ek%NPWciC=qnVeq#D>C&sRPOFHt@WZ&H);2>hq=QP}KqIsfqO zcNDmVZ@-fSwa>q2l1T&0NRml5WgH(Q#VN)os`@e~F2K4&V?AGjS4AC;&VPwu0tL(N za_`-G0oOd{hO7}!Q2r-gPrg0VZ8?{h+c;f1M7NH@sngx3YHq@rILE}_#{KXBS-(`+ zc3u!9pKvSO5l>X!)pNGzUU-Sh&&5ScTzmO==H2f4Ux}yU`1gP4z%>*+OOLvn4n2-n zV*A+bL%bI6Y~pE;@IXN|xDU?6w*JYuNX4(jn{bJ#|ER?8QSbkMpMr%Xl$wOpM>(^p z2KK=fcyALw8IM-+EAd3-M{w|>8-WF$7e!Xr|7R%Zqbj_B`@QZOXv7uwxDojt4^rOo zG3Jc&A$W!IDBP%g7oHlbf|n^+sN9SvDtDjHK2$yok5)b(=e+4UJjU~Q&mj)`sR|P* z(7px_R`JQ6Z^ENge5&VqJWs`^<27`c86QphSLSp5-}sj6@p2N1-gbV=^Shqk$C)$S zE=hfyi;b$^$#Xi+QTe5hbNr?M%dM~v3EF*erK)fimh(is@J3}U=KjhX2Q|l+O9H!P` z0|j!N+Ja}X9A?(fV>!&Mmtr~0tQ+xEppnYV?k`&q22J$#HEY8{~;w9XbNn?@mOZH^@&(!t@X*c3~xt)%#n%4Hhv90 zn)p^GzQEYVpTsh$WnupFgF_UIh@pM^kYoq zIKK&JeBm0LiU%m);rSlV_u;WBe-;jP!5j)!s)R>9KaMx4_)~b^m##z4;wI%Kp8w%_ z*+R}gsb9GUUMFF-^4qxES{HxM^D57u;DIWC4X*sRtN(92P5HZp9DlmtM=#-Lyi8U2 z9dA?)p5#H~H*N)Kp11J46&|bdyMz?XQw7`ODc`yVyL-;^oQ*fA{5?G9;^cR(y?oDM z5e0cFp&a*DJ^+tbKG<`A&qv}0l|K+?{@^-rg5)!)GvY}d1~LL8TtP4gPgfNl_56hA zr*M<@%QhN+^&sUA&|O<#+&YeN<{}<8}BH1*Ck@_b_KtHNQY91%L9u#EFF#>$K!{v?6Mr{MGZW5C6Cc)FxNDAiRzHtQcY{^ zv2?S2aF>e9Q?h%!4&SHZQvZ3J{YzF*DeW`jsf%Jq+b_GIlPQqq#p!s0s&Im_ji2KA zG`xy@8?W+Qi)S+e_KC?9oZP6c|F^{jtqn}Wc^h4WcjHRs`|%Xzhwx-pumdf~)$(oQ zxIuo%6iWxJSK<+J{~IsugAXZi3wN=Spyt4*DlS9%C)OQk*U;AO@qAXe7mZ4X@^FLd zaIrX41!WXu{_3`Pf6x8!AQe9Z&-mTtAAwgXALDtD=aX=_NmZz%pwA}P;7~k8xz6+1 zo=4&(D*pn!T6rv<{ikdH(gwy~7hK^bT!ojb3fJLP$~WQM7T4fZ++X<)&-Zw~uYvtP zN>!LeLPKCDNg|kwS1Zr={G{gwyg}tZhdU-*doSWa%CCf8!E(=UVwpto!mP&nD;3_s zt5kd?UZ~E5AL0!v{xSYVIsBA@Usb^x{JZj3_)q1pad5xu(6>0DydJkx{t>4t|BTx^ zhrzEDbZ`a1CfrfE1$Re-FzD+4zo^^Cx>%|1>OHY}=oKWfw&G{Qgex z83nS1HsKep1+sSK(o^UHu#I)U90oTksItx6g(bzLj6xfH$8P9NsqB^uMUaT6Z!7Ek#M!cF1l*kCt-qSd9j_c4GJdJp%iFbaM zd&a249RE^bUkcXJpnbSpgEQ3@-Gp;MEY6B*Pldi zh%Jc5oZs-keN=^`@C>%d{sCdEMdpW~IvTR+bTE0<$BWUs%8;DERw+J4z7 z2YWsg4`vJEB@rBnGaq*Q_#&K|>Ef5*jcSFna7UH@7Ea%x_5FW*VE_dg95(U74-(=e zbD}o|GDq6I5ZlJvV>xQ9J7JmS*6CPgxpikOlia!so)@ZuZ7GmhZWA)G%yR3UuuM|x zU9e12>ntpj)H)l>B(?5^8gOgih6u*?bT zQ(g$;Nns04BS9vW^$@HtF4fpA{6wR~)x~AFip!bxYMj19;^6`cns#y(7U9(H&Wk-S_1uUnRQ^9bFUNya{4G4n zISk&VV7@B|KJ>iW^XGV-%3q78?czH8Enctu1J=9nC+wE6xn-jysD1c7ug#=G{Zit~ z<kJPD6bXSxM=Jl-{kPh_j`bQ9;^hp*3F${bJ?^6&(;f@076 zdfp$;SNR9w%AT%+hv7!$0nTC6r(<0~j`&nRKdw?w)tWv&pxwZjZn@jA*>@egG`H z$a)}_UBvlM7Cw_ff$XDr;UgJX_L23;c%E`4mR)A!XJDB_)>ZgZl zvnj}C3v2@;agp+QxLA2KE>RwX%azCBKFXJ3*=4r<37B1G)=vknq(JtWO}HA%F0j59 z-;TRbAd_~Xv5hanvJ0%A!TPv=4!fnfWr@U}X}$ip<6EnE1jD3TZ=Ugt!EzKtUl_!3 z|1!tD3~36j$TOWz*CwJ}(!=;jEF+XKz7fj^+1vEDu#BjUce^eTl!q$eBno86Y{H#b z_F43(lofu2WuHYip*VRxKhs3MjW5A6>3W(Dyri~RPE4zDMUHe=mPGIc4t2p=3I?f! zZ*k5ZuEGy^nDQ^4H+gQs<5hm@OB{yEonB)8EmH+slQ3RnH{hAd&xs4% z3SRX5isx7He0EX1@cRFC3Rbihqy$ZP4c^J@v)_&53Ms*#SoX1X;vZa&89{rk$Tha{ zeel$?Tz&!0u%DulzyB9g(1iw~;~oz&whdHcnMBrgxCn1aft(3%Hn#DpxG(YDP5cF8 z8-EcG86LOC{AU(YP)mjOrowt-Tj576lhpcWJQZ(e^0Qu!ZR6QkX1R4QER))LPrL%} zCf7gNf)h-EO&E-2Qd*yiW!74sj=L)l#iNyLaK)o8|4h8+eCM<9xX97S%axIq;hNmJFVCle)v?51M^`(huh0&=RH*gfl z2JB+ur>hmpF1Z9hMLb2~{PV$O%zr%s50jw%2+r8wZeb!=fQKC5ya-QFUW^Cyb@8Qm znDWb>Ukkm0H}GP+#q{u3EIp2wlwcEXP+QRJpRsLxPb~GV_r`h`p)+w90?V^V4_`TbRyf z%aEtO#-vp~4$q`Lxe1M4|6fYMG76HW!fd?cVAr8XJTLJ4BwnNPpYi-0Ua#UW;+%@8 zeYyVdg98+-r33tD)Z-s;`k}4^zu;6$w~eRbK5VhQ&E5yE(YIi@g7tNg*S|7E zm8O8+u%rZMVA)6Uk`h#5*#*|Mcq~q#KI2C{1*v6OQ@x(jC+t0`4Oo2`K z9w+ThA}ja-UrB}S%?fvZJ+{qH;ya0VGVvpgZTx5~``r3iycmbJ!gy0)6GAL=!ukpv z?V_k4CAdoB<6L}_#GiIIolh9s`cL7l*(G~XAS3o^Y}tNUQi3%Ul#{>|h!Q%#5jzSK z?}BBYT5pSGmRo0HndR0y;Somij)`5cTbf(4B(7ioXR8D`4;yB+CVg7q#be^ZXX)`e5AB&aPq??1w-33Y*9~-%8~oO#xg}lVYD7A#xHPb@SATyMmk#vv>L0A)Qa>E& zHE^CvkOoG34UAE7Y2bdZ{(~wm^=Eta=c+jM!R+PbsUZooyawi| z1ZiNN*T7>cE*<#5tN)RTOa0Ye{m)fA`uqRZZ?`>8yL#RZ>q)u;b_=&u5?4d~;I{k@ z7{`4DNpc&%tIC%SAK}`Q%UlCd{mWHc>QD6QU!&que?e>g z=={?@cv2-u0}WmS&#JgI@MUWQG7jy7f2+9EU+2~TUd5&Uj{oBRLe7lw`Hvy81=1eZ zzaDsqI(7EKBb0OTWaWI^pj;yPQCsql_CYyz3uju1v&-W32kn9fevNxHge=)-eN_eN z@mXGj=cu@B@hH<^ypndo1u8D}@A2y27st)|Nto$1@Q~NQ+g=0jsJL`srC0w$6_*aQ zU(t3%I$=Bh{0FC6Nl>%6bCeKok2J8a*TDWNF7^9)^$%8YsXx-If1bqc_Dch!y#~g3 z4czZF@SuuI{n=jqxhgIlc-O1{K6dLTVU^dwCtd?vywi3Fx594WR4Z{cf?ZWyI&gqj z|G;SEgVMmmUIUMK_2+x_pHOkB|8d*;VeqL+kPfWz8u&`ZrGYN*wH?B3v0M1_yTsK9 z?xf;U|Ijw|!}h`9DnU9hz-!E)9H!^|}5l&tFUZ)*)#he5>k9`|BlcMu_>}F4&U`jx?A}B{}#1s4B<`cUj4s zOx4Aur{~@AdKKRb*Bs^U`}1(efzHL)bWo1J_CXm1ZfS1WPZHEVe391y(t%v_I^Y16 zFC8528jRW-q2jW|=X&j(k5}g;gMM=U>B82Jp3kDjwlK+id*l2& zamOc;(Vy)k{{fsNo@3&3@hakS2PE+)aUSkw`~nUZ5tr?kgeD3aNys#QANN-ceuhUW zH{(I%k23ke`#jOW8OGb-%%_sUTH{`L8ujyx^Ks)YeE!cC43P%t(J+&6J)Vad@u-6h zcs`zK{Dqf){0IEGz9AVjwu|!zf5<)MgIU24UeC)0F30jlCcC~1Rxye1ONPN{)8L;J zEWaWd%rHLZlOT925&t;tHbGkOCYCRgSz_WRu4ax@x)HeH)A&*AcoScO<*QljF4=&~ zPDn<7L6Htse@6aEVKP`@D!fWT-t=VjTW^x^{pSQ`xeD)n$upbpvVtT-BJrKSVwNu^ z-_(Bt%g6C@jgMjMhdiH*-t{W^mH(zg?`1{rD-s|64Z9@d!({W#5Zy#U?)}MNfN|<~ zOtPU#-n$#G@LF7US2EaWRxkyRKQI|gH~t9E@0$#koBZzI^CuQYAlt+TVR^7=J9rfi zE7P-r3{&BaW+oY**KbUTSD5kxLwsd2V9!Kbd>J0V7H1ka;n}RPqwzjJvWwI%+pmSA z<}tScFW~HlT>c*|9DnjCwZCbgfMHp-A{ivjBs!6kk$ktyG!rjx$6v|#ELV~7ACR-Sl&(7&v^fioXGf;Ooj1vAqD!d z_!i5T$Ji}CsuN$o^N8~!Sl&=*CvE2~m{=(XJF#Mk8Vdoo|}CDX>Y@69(Ja@cJ$ zF3O|B<}eJULPaq{#x6)V3F~m58A-%nzli^c`4~&9(@OX=8@~%qf1{(MKVF7q$>69t z3YV$)`&j;9F+jGM_O>l$gTIZ=lwnjbngaOgtj`0JaYMWKcR!^A>+mSflu5Gz$M&N`92KKXdkgTC=aRht+Z0qD z$dEsuY~6<)4@$H-)vi92N%;+zUo%I-!xQme!C1jI0Y9~l^~Gn|NgNdiyEEaRczH%v z>rvF{G)9SC#PgqcANHYOp4w+4@qFb^PUp$PFGk$i?Uq@c(qP|&X@v({|Uhj{vK zt^@7PIHrP(@G2b2 zuhH9Co_#?gkRP9~F%68s6Y*fJZ`GO;RBKkd~K)$ia794XK*Y|%p zKRz)LeJ0f2lI?I6L->1E>(%W&KHDW9TFFR@&jUMOLkAK)g7IdBXJPr^QBH@r13zK; zTeBU(lItch3wP-eOff@TeLdg*$MxKv2~!w*dB>yttfma{Z#O3RQ*3?8&+W#B#YMH{ z`NjE#`L(5`H3j(vdsm-%Veh;kd#w3i?*T(co;$L4QGQ-gU0z*XO<`SCZBrlz)PXjyq#VSS%p z+V$yLSW{P5Tv$_5RZ~)4TUvAo)#{svrj{Z~^SLGKB%`Yges;;Tu@7H!m9#WT=Us7CF zT3ue7Ut3gNU1it3xf@>~Ypzc}H|>aS`L%h4g(bB$th1)3s5CFyz^s+2UF&D;m)3cE zHlLl6pI6Q17gy)mHPuHMukMtV49lv^ONQ3w7gd!P73WtK7DRp7+>R6%$dGMrc0obF z?kXucBYVK0?DL0TP@Q+ixcYUQQn#CF##%S;j8IbWA5+8sboMBejo-Xx3palf70N#ITMhs7`Kx&I&tJtdb^K=k zqSgP~gYd7;poKE!H?P_MJhK03V2l4xqv2nk!i$Ukmoq{>*)^Np<9tbu{#XB7$JDLr z&zPOsp~v5zFv{wW?V6esCHMT>wzjT1x~{8?GDZMx)t=`^=T_G%lB?ESZG zN4rz?`M-8q?UT)^63QS(2XC9X`L}&4Z9A9$Hs8*zcr680#phjk@wlNwFX&u!)~LeT z;bVu5I(K;9xQj>E_kJujbJ4x2sc&~!G&()CxN-aZ+QPiz>hhw3^4i)e)^kX7?@?Tz z|8eTJ_3t#LUKZAtasyaZUREMAD6jmG-Xlg_bWZR5vVy$Ag0lRglKk@gyzWG8?_RLfI-&d8NmskI0kF=c^{Z4C%ZK`OzuBxh_s-~c(ytbg|koucHNWG-~#}%pD zb*>v)UR}l*l@`=;tW?)$zLPpTqo$StDI1zsS6ozA#0_SB(>tj-`~B_SDvWzo&K+ra zX_T9v`K4IdC&u zEcna5*1z>(>T6+5RcSe|aLT#kD=R1}Dcjtx78U(v!<##fMPU^#-LyKz4%eg50w?mx+wJ5JX{kPO) z{ix}wo$H5vl)9jESwV4rO<{Q<7oq&(nxXX*eoM`)KjxFvp7o!9lviqJ$S~j7msIIm)I(^){O*IpNm$kKQVR0?pjf*o%%Gd=pRn z~$Ox)%FPS!^~YV4)}y`rDQ4`a_2cBf<&TR^pVr@hP1^1${QFh@owoEd zJ{eX2*5@f*>pMOa`C%;@|u$IE?@E46AiXuRm~7TCeuCKeY>f Oy=l?NNojXp_WuE?Le=*G diff --git a/artifacts/test_program_methods/flash_swap_initiator.bin b/artifacts/test_program_methods/flash_swap_initiator.bin index 73b3bb325dbf0204c6279046c10172a8c8efd270..4280c7e88466a97eecf03cea6ffe7490c589294d 100644 GIT binary patch delta 112631 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%0DblnuK{IY%-pY%Q}P|`VTHQ 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�}iFnHjCYBbYDxwSLlr8*Ow5qJUvb?%H zT0MV3QBj%sLI*uGqG{n6GPxWUO5zn2C6W!f2OnkT>x1;7B9Hrq@`dHqWy#7#^N^8I zPcZC{)&7?>u9KgC6 z39l>A` zHH~ynprN_TQsv2t1ezClAM!<`em8E0B_a`jrpX<)a3QZ&EIv> zLk;WDWRoW9sXlMYoeKE9sYuEf2!%qT&syAoiBmPT0js<~AJQp^&jzBNR6H38yK#pQ zqlt>AVv82VW*ZyTWSpjZak>^~GqLMwVm33UT(6&RZS~Ay1N5##T687$bwB9J9goNT zxGD(ZqlBazD}vZWG+{&=7Qfs4ZUputt|y!wpBXnu@8K}wRL5vC?oaxYkr2jMdRRB* zz}h*s7`8`DESY&Qnz|elQ%hzZnsOkfmJA$tnzkDp=H#||k7qUy)(<^oepQ>5 zZC2IjPIL8syKF`9(Vd>`#S06Gz z-mmx0rpGu|wl_P};Q#3{p`-21V2$243;)iOEV*;K{>L1i3X2YpddBm94L@9iv%Gw=6&JWo-#>YS=N zb?R)jbZTCVUCUytJJTD-mc_@JnhscmUVhfgoG`1nMfS zN*cdP5O~tHg5L-cg&SQZq-9_Ap#$30#gSm6Z0;K+|I|0dSS<+Oy6cPO@qJ&BQ~RbH zcPZsQD0}52CGA{tg}?9+29mpLzuvnhQa_bi4dP&aLbiX2xSp_P2MD@ zP*$N2HS5EKvgbF2NNHt4Si8$=zEbP;5O?yw-~ zPYaS|k08;F!UkF_Na77SVP#|xIwqpsL*(j`7&(2VDN+yuGzZWn+Y0vb5)vbCxvQVb z1R+|!dY2U0AY&$G6H=v4VD+3*$4uGMZ@@hYtK3mylE1mPvY5R(v)+$c1qL(^aZ%w(%*D>YrngVYTuJ(%a1W~SpP_4iNclca(e$X+E68r?VqYv z3HQp2`u85Au2hYL#lHNS?)vQOfB!LiB^a#FTdXoTe^E9=*=SrQ>*t7O!()0joN`7# zZ8ix)b`@U?L#bJB(nwKAt!BGyG(#SoldOrxZFx>k5B1y8ByY_bpneNCo+JN0z7*?*TdI0258DczJ5Zambxq?rtSGdh# zI>?wJ7Y>_zVqll9&2S5EgC+H2NePuKHZuGA#Gl&q5i=;s7{JdRlsY8vtsjmlKStGl zg;*}5l4YX+*8NYL_WBakz5Yj=x?O`FQsu(2M~-mx&=h5tT;v#_e!FYs>Oj4)O+M=A zt>JHybxsXOSSJ@cB~m8O#Q&voweyV@e(e4)`~a+lAK%Gy2LA~^2o>#4@M8t1y)8fX z4{qVdmBFd^wBg6@06+fT!jFXS+sysX_@SSJaV9p&DFq{`FhpKZaJR8WQI0P1v4Yr6 z>USrY46fojvq8`?rA~-jUKp#Qy64E2!bcyh=gr(lXA6#GbBF)|hUIYY$UxH|xiT0! zbo(~oMPeQaDx-RXtak>1 zVKD2Vm};Z%h}lYg(bU=kQZ z72g$L)5j~D3^DSYAw7)BWa^);+d3qeXk18@_va2!zlC_YDYuJJ;2aTLvL#PrD(dIt z{mOL!Dm(d3LT3y029<~wn7kst_e8}+2qhrk=YNCiH6oR<9OHm<{NHgh)rqL|jOC1g zzUVH;2j851J>duWYL%t#@IA5A=vJ2SNBPRV1JrNF6*=X;F2+nnA}-2B_x;1A5a0M{ zfOu8;>j@V$b>P-8D8DkOI}U`M`*R$NAnPm|o)Du7e!`hQ$ITSvJ;TC^xF;)n$q*#j zh#=XKQjpTPXY<3edEnUu!j#F>pM=dO0WVP&zn6+|BHkpAAll)4?1acA*_P>MLd2

    wVcrAV^+B`IX+d^U0+}7MsXDkGpu{7K)wQVQI2gO8H z^^y&KAv+msXFO8kTL@da(DwKT54p4HUDePD zf0r+shSJ6=IXxuRI9yr!7{YHE&xi%`!+MM_zxv}p@-yl2)|{0Er(pjm(T&tNWeT7LkxiTrt|!rK_|KfoM5 z4EP^l?!9K+VZc0pLTG)RGGS#x)O}2@zAJjfZP{pmdaQ$b?AD?}!}9Fa5VWAe4`j{< zNVyp%*bF>XM1)IfP-BqI26*vGJ=WQvt?{8y*&Y6fbp30cBeb} zDh!XyyUbQs-Wp9JUo{&_REfOEg|@!yze{A&>t=(6s1hlDtx4(Hmbyci)w-|$0?F0z zykDtxmFvxhOs#InCADtT8ndgV!;5NVUX9t{)({VUsn#{D<1SGh*!wp#A+Jdp;U!YK zr$kCyRwAV&mP+;>rIO8ADp^OAN|w@6DdVw;fKLQ`BBW#@mS`eeaRO6VC{!Zgw`D{%2;QTEW1M`t3On-oeTv+5)hIAPXativICy7+a#s=O;Y+v6XZA<_BIqV zrRpxi{fgJ-OciaOR58_`Dy9*Ox0}=AO(h9px--F>?n&@=^(R0sEFh!w?5?PMg@(WAmo@ZKz8F0cjv0P5wC+Lbk3W2=qVcukC zn3&=Tb9qzzVUq1qgk=9A0)TJ;!o5~cxG4FU4KU;$8>BV}a4tN&J_(B(?$UEx_XoSUBwiV?oDx~gIDRIJj|JmnCCj?;kiPMdzVVQ@@qotx?ur9K91!BrXgtJkJj8FjlyP!=*=Zf;#B9m_ z7?n~+P|4~PrHo5D$@YUmvJ#_|95-}$1hH$yeq5kKv!08wI}l%osOli( zbH^v^NTHbODH1p7h<8&i5jR&5?`HT7%Q`D&ZpF;4n7I{j0dN6u!Ry+rcrpuSZo$kg zn7O5_I2bb*W_VMbMP<6+(SgBvK(2%{FymT)FPcq=_#*Vh;M6p(bLL;bc zRu}0cN~9B3vXhwM>Fh-kyZbwPk;F98+1m}t;_NJ@J3E8!UZA^|Wb^j|-Mz4yov@mn zM7zHe=%#To=@UfXq2ca;1eA zOX>bm(9}`hWPear)fNO!yR)P;PnJ0p=WOXGvtTx}vi5Ej>gZ;e&eEQe^-@o)bWae` zv#jDrA#3lCkWWugoqj6Gs(OHAc{d4l`@Rsi*%uFq@WTWQ?*-%R8vzQ zD~IUOms8)O-R>|ki9ivdympsI(L^zs#DGOHVu~lmo8pfVC9Dx0!fjC>4BQ6;_rbt@ zL_5*f={J+Cy$=g@m7B1Jm-=AM`(VwpvF6!j6%AMpq^g;uuIeEITp=ra70KGyAkMA$15M%*CRuE(ZL3U2i6CeobKM>?nD5}_(*i2D?pcQ%x%z;H! zEPf`)W8r}ExSMd$W|XYCM#*L~imBut7~gv!H}`nc{P&3Wl6x_cd`u)C6UoO!^0CD6 zAUYmI$Ajp2zzYC(6#$_C2nCX5odvA6fYlbT+7j^Q*q&$_>-b5sl*5Nr=y5u$m+X`D zQi@G4rS;NF>A89-qgXEmZ8Qet;SSfc{<29wUfBm21ifQAlL?iZHNq#wDT%3Om(c+sB47=Yg@6M{X#l2^6xf6m)TP1F+hO<+StGi(@P-@*$wJ^L zi4_AU%oc_Z&DsZn;zAWz!V12-Gzgc&^iw3uV`6|a+%NJi4%ZYHcH7Iiij>9Zq5s3D z{>M(@^(EYpV%Ag+;T?oPty()x_ZOOO->JGe;8G5_l!IC4w9FiY$gVeK87JrKN?1$~LE z7ogI+CrH+H6QCgzq!gDk0qjkHK}nD@MkIihJd~bbHjo76@W;WUP~;hhbHIUXq4{R3MKjwlv!Pqn&p6uS|_Wu3kk4?oa4(D+=U$)Eb^+kLs)EfqaU|tLyMfmFfDy65jlQQPF zlPqZ+q@Zy|EKip^EvpOcYZFY}u|EGEjU|!Jn0aT+yfc=Ed&M?t3(mkR!kgMXs#mlu z(TNC0BGal796(+uCd%DmxHiY*rtI9uvQ2dpw}>n*_-5tK9dNq-HBb0CjxF8 zI~&M=Ww%4J`W?`3hnVCX=uPqr6d@Cm{gOjU`N07>b3lz9P-BNSW(V2TA|wx7Ht0KY zpO0B)w9L}I8G{B(mRcAn0_#@`m%A3$@1Wk>%?a)u#Efe7-~zZ;tMjIF?g4ID%l9!H z-vE5RJuyf@wFc~E26^+s2Z{NKgS`1Y2D!un=OAyvh(Tgu>7Wfjkb(~yHUu9tNTv&h z4W?@bDWu7;Atcmj)-UDk@7Y3_@D~uK!=PZjQzvEcoajI(w)}n(17rI?vz=tmX(y$m zx0BKqfbAY^`D;VHNq*oTgaxg2wO7}omgkY)BxfW9ClZ1cDJGLBZ?ZEAo-YcXFG{kk z8w@)zShD#C!ww9VQZ5aK>m3YBIRvhENGsKgQS@F>Js}rrmxd)&&gk0czQvz!*1MqR zs=nuQ`^*%57fyN8NJ4f9t{p?35#ZT^yj`8am)A~DmQp<2bK&q}9X#1%37EMFYaeg^ zbGvaK{p4R>H9ZOW1mI4P_}N4fYzDR*+5I7VE=MN_pSDR-DZZ;LR6mz{DiGGEh24%S z$+DQs090ukWZ-G6IR>}mJLPT2z&1?=P|kP->;DShQeqdl4eQUp`TB3;c^fC^0$X#z z)?BbP7i`T1LR&AF0(ctW>40Ydt`N-k=mF~{WPso)W*8$m6n>!{u4|sxwGGa>vr#Q! zS93cUEgslfM?ggrU3#;=9UO+{Nam=Ue#x>17I6opdl_cBhRGc+4u25v2LXQ&aO|JfSzIaVg+o-U=Y z36(O|z#OmP!af?~jTT*Y&u9!d8Wi1OhRGNpi~&Jo03QQ_+HQ)I$SA-^0X_=wQGnlR zhKm6&2D}*XV)Wl8{DN%dbJ@aqMo56d63Oy{PE6$j))i~>3^y zuZ^;v@&zyLBMeQumkpin`)kOQ@w*94Z4D` z&Y|8^KL+g24Fv2p2RLD`QJ?04WIw3c>mAMK6foDV1khn9Yp);3*^dEqQcW$D)~Abd z5H=c{f^f7@h@*u?I9fPLq>T$iY4br*+PajATY?1d7FVGlZe1jJw;mOw?Q5ymidof; zr_#<^(QCy4O3iqk*Ght=^-8XnHuBs8IaZ$<;$b|oxb z9+7Ow?V|+9(qO;_dow(P#qMxqu9P!^l=c($`Fj!b5h7)vY}re_{O;a*2Dt}~&rr!e z8Q)}xH`zHvlsrSc-TgzPl&`6jrUxOBIO%(Wg791rp6gBVA$ zWiPC%9{ykyw5-91iRIxe%b5qN^F*6JPf9ssl+wP2uAVVS89y0hLners3>EzeaogS? zZ?Z=x*?)rW>R}`Hnj{-?``0+m*M~@Hks(t06Yz!&IQ}1nFsz{+28NG6sfF7oCzw?) zi4cxVP;bNCt}05q1Z!}2xZ0`S&t*sHLlM~4rk2F3 zH!qcbrJaReGw??LlEZ5h;kOKbP0 zdbwJ)Th><-mpW+uTp$khok@h}%4+}z`l#1yjUSth7G-8qn{C+ce!%aCV@Po461amI zXI#=|+HkyOP{%Lopp|c_gBteA`r+C{-80PkFc)7ls;v>W;<(Gz*N1B5e`%EBMG$sH zJcv-&_MdI*`Hn}qY5RxrkV)Za720SInG~3CmBVE0hFjX2(9Wd@%QxzagZyVy0{8|) z>F|n}M4C@Au=WEHGz^r|{R1&WO@bY#fHTOOTHcyOXU52CdL>xQz zh?dfw(Nfw79G#a&OZLa20gncppAtml`YBT8N0qp`MOnyB;#MKaYDQhzq|M5^MO-IE zG<$?dTq{ME3t6run;blzt33{u{uZ=??Hh6|4Sv}enH9?%~iBR7`9N6H) zdkA^Shnut8;Z=~}&}Y4{n8?b*NdB@Y5L*d8$?^`)%Usb>#JLLNX%6O`*6xDZ=&1Qo*|!5dV(T{ zcl>C^lT7s;ier*D)x&STQRn8|kSCfV@A2|SGc~xpUyq~djr#;?b0aR?>k)2{_Rxv; z&vKSqQA zcx}!YxC7j+_@l)%91Ep6qu~ysyjdo zu28~@a{c=@`R1tP-fd+SEnt_2Adn1`tWLOG(2BWbo3IBo%@=&H@E0(O5Z`4St^^Q2 zLzL}QNQNv=r$YZ`VeZ&UnCB=;{J32IbZqqh^5-Wai01jB9$MZ{o;D^SuYf;5iN1XM zHXf){t7@A6Jubva^TUQi%Hx%{qGkSYWyq^$XsD`@4aVp?1@@_2KPHL}N#}1&yd3LL zs_ee6d1~u6fqEekFDo)={x$Vc#cl0T#Vxa;M153IudL%H$i^Mde3I~{)j~9GOwhOk zI~J%DA5!bS#?vl`hIi;ewXPD!19()SaMC+Yt=n{4eN>^c_W`vsPp3SpQ0m07YF&fg zY^WF1#)q)2!!~d!-;3no(mDwQID}|rL57@~3cf->zr%S&gp}@ykkXb#NGXYtlD$Wy zWOGJhQyeK-N+WT>V&+$*F3Czd$~tF9nDHPeDjrLCf2YUSpf!jHOUK{S7QavW9uc<6f z-xGDA2pKve2f

    ;b|45GWl8!V`iNKOSeC>?q-Ot|KfEX1^}z4$4{)R{szmByc*5 zM-diuCpdzlssmU7d#mYP<3CgwHaV(%j1ZH6i~EhT_IsnW0ih*u5XzF) z{~#v$`QZx@?M|G=dx)6q$2B*hVv3V`Q#>wQ^R0tH+>K`+{xBSb;O5MO-I~9nXeVau zQOr`xr7)brg@Ik+km_(T*@L=`K~mZtEZJdf_fPXZC&eHl1`#F86>J?gV(YL6TZhBo zF1Tb6Al!)V6r$W$B};CwWL<$*nJ!zfWbYL$rIcfTQH=e?q!6zKM}syT5kg(WR1yiH zihv+Sz$Zk&Cq#I=`pri5)YaWq>@z7m(M@)4>l07C|mKw$U5hibbsYxt&jNh+g^MlTWb-E3L zUnh~1x((zKc3?m7!x9l3(18Qkg@G6=h_U&#J;@z|8Vfq9V-k}?9kjkq)+Irgm!V-I z)TBqqpHkaQEHSC=9J}h4j;|x(fndJ3YD|v|svADxpM-R-%PDD3X#NVhsB|JqwWW=E zQ{|7Eq3bR$n3_zw$Q!3tQT+-zecFTJ2^w?aHKUwdw|W{>B&9B9)-#ke)UB9PKoYyL z;fjTRTx@IKwR-ns^2PUJ>muhqq>Nnt_^%!2S@_RC9@9F_k{6VZ;B{sL-oq-fbAG0L zq1;6pZ=i%lX4nqnasrF(VAuoMWa*a}~zs&uk zH(=@SZ>bv+u=K@>M^Ny@fT71v65tV(xPByAZ2wc=KrcQs-gA_d4=nl z)M~TnA+lH^_%$YrnKJ_~Z zPdNPu)|EhHUbZ6Sc{63bn{owdE~h^q+g%y8VYcF<^bJIt%HzDOe&;>e@~wYHE`R>b z#0D8&%B*)#8Sy()0wZ@ELT7{8qTyLN*Xv4b;J(a^Fr&8?MF zNtGN{wT3LMtF5|B$RfFV(PeU}u6!}zXXL&we44lvc8th|8ZDx8#Hfs^d?|Y)7^16q zQBGf)KwgrImSz!Ib}yYuR@7ZxDx&+kYcD2H{F=(4$Y*u4e1f5PM!#0JRlnKHz?;?Y z1itIeFMEi4RF86fvvF$hFIwPFK#P42w1J8+6ta_-MrnawA&QYP!u%?WVH{{xNFqHC%bzKLXhNM$j+$Ci1M3?QKJLf|# zzjXXlbBD};^q*0uvFfZQ{ijsvFFYsrU4MW0XDamU=PI=Dyu5b(Ijnp6hG8`PD;3yy zNn3!g<|A?oY@ix%#ba^0R#Ot#`oT ziaIYLxphH%%SiZ5jmlrt;f|2H1^W^>|JUyCr#CrIL|-C^ApH-@7vD`7a9T>+`yt=W z;`H!C?Z|2~t5%M#K3C36^a6BWDc7qD(Ll3RaSy4>dGB>f+Q}E{C1PIg-$LZNt^PG! zO>z$*yC`2g+{dIJp`zzU)>#@v4zx99lh{s7P;`jji>qY0q_KhigXRYk&R65=b)XPO5-@_&M<7~+4iI2OtE5sWXy=IIG<VV;9!$oYU1)8l| z?k^B45tNC#nwxM~X(7tVn9593Sx49hrQbdS<%_2Vk&&|HQz^1o)?d`CjC6nHgT#0@ zRemIo{q(L5>H9w9R$c9HX!_)9j?Zh$K{2x5LDM1u&vDDDdz`)G?eR~~!zUZb+G zeV&tR&c&GyO;?-GTOgk}+r^}Ss-A&om)|@aEw?`xW~zEgZCvoAoN{g?H86R>xh`rS zo9CmCjP}M@Fx;f}Gv!(N!nxEA=MbG3jgR|a%H@R%pO7QYC#g;HpOzixGfc)v4OA{a zb^du%K@YWfl zhS6Q__4znc!`WsBu=?{PqsC78@aH|$??{*2^!cwETk!qGAhM(`=RyGuej$4wcYXOU z$xFY?CNI|={<0@A>7&&nt)bnQUz|Z!%QG+bp`p?8#*10x75V(dPvO&QFFk8iy_ieR z{OUpSs=V|oiJX>qeHBgC$Va~#MAphdmj}|kgL2{J_q$cA!!$A|0e<1bmB4W`VDcWDQcKR25uWsZhj^5K7E5nbKQe@vxhe_hG78Qhv3`yWQgdv%lk zMTx!PN9;4HMwef*V{ee+r{X3&1m1MFpwU@hxAgi%LjEdW`yrm@t(HT7&MbMxAnsqSU*GYW1JW`Wn&9U-qc@cdPYPAJ@(NsXr%i z>(93dxlp(DCex$jxOI<6zFDOx%-Tkl_Zhko?Tf8^|DJF-E1buaW%J>7`8{mg!8o?7LuY^6th}1nx*o zdw!El+fK22evqzxQ+BXD@pZYSqSTxJ6s5WYnHq`33llbUINcgL|Azuu&N>$Q>Gn(#GbvJ-hEg4KqR zkl>cd)`yY)u47`uV*L0w6Qk;y%EDI0bNBB}$~#eZb)_I~!c*5xd2kpGJ+J46UQB8@ z<=v$JG;7LUoPFRy88_2OhST1p{L^NAq#*Z+#7ovQLLG-MF~muh&8H>nzSA5}vTr`6 z%M16dh#-GQRKm)mNp}*$HuB8G zPDhjfMdi^L@+OI4HJyk=V%geQNSujXh;3cDD-M+*?0Q_QO5fp5g#EWc%e&xkLZ1v) zC9?$<2zLUzHkfqI^{MiRSAi8x>aNzkSk;2YPW9+jDPaWjoOrh+n-q9L%ch+PB{oPqklA=cAlgN>FpWyE& zC_hJ&Li>EeGVS1FI;*ym`$;BqM9!V&csRH}rQ|8+PWgKAxFV037wS$(HoV%lpM$A~NH*wBu%&4vEBJ&@ z(an4(JDNs@Vepu)Bnw$lSJJ7=r{2wtr?T>o2z3qngu1UA1Q;Ei8oE`kVijFUGB9hq zf{lY&dOEqUEsY0L)h>PaH)Xp${^p8dwkdseGyDf zvhuq~0r`X-ybDbGL<&m!MA{yFoL#w#BqtUrYph0^!IE32>dvOSKam!3w7WlH>HX07 zK33k3ycu~?v1N-kohXYi1gTPzH=6bB536xf2FIlBXHJym8Yovlxiash*jS0b_h6u` zrWAT@$su2m(X1(ll)-+M48X+3vPA>P>!?f_h;<#y77QfsBsG|oy9)?sFkf0E@m$@C~=kZi2@ExRum6tw7yZ$B8csPJKS z&`I(%ot(psmz1t+!cQE3hskJG}ke%=nT`r(l9`ttdh1^FGB< z9>q~!^ADjlb^AA|o|aGgm8u?7r^7Aa^ZkU@&Hui29m@0PNNfX&$ z?k3NZh0HP(ki~5HP_l(ovztRnLTvYJ@CS!fS7gHpgf3x%?+7RG$V)8q9x@s~y7r-4 zgf=gjafPnJj7!;Cz~b_M=LZgQq6~QUQG5p-eTjt@k;&?OFomazNIz4<{y==k z4x${@Qs#&AS|`;k^j^s4a#nmVxg6X~8gtwSd-4)<-v{zPXS?nrqfH|*zWrksI-7JNAG4I%82)26d^VBv$I1*p8#rP#dwDhqLRt5-PHU)F8=gJJ z4)TV_eCKDAkEqkH{`|cDq6|UYpuf?S-2j2oSDsYSt4?V1Jgpur?`dM!72kD_TEFnG z?8;n{+~W|BQnAO>uJ_$x8u+lX;jRq9ucuA81WssD>yI?DoX1JRhaptmp3^ zaYlS{(YSC@@afEbyv|AeL2kZi> z$%m}zaZLRqUragKLSs$ZpDK7=opOUATam{6V0L~UNlYHa4O-qf7_{GgqZP^i&TP!R z?L*WHW&KfG;f~DmBs3+0l{|^1z2d8Q5~hy)$of8wW%-enJWW0#|LaSi50^)ERNQc>@BvBmFjLl=0B-XLI(GI4gWV^ z#R5_$5LM)T^sQt`CpOuuuQ4VU50ohnyp<%xJZXChtWCDb}c8- zG+t&se$Xe#!;b~A>&prLu+a+ES;iX2vm6;K(1l%>;U(i)@d~Kcd3Jrp9gQ+qs*T34 zR2nT<36<-@!d8LucviRyJ~f`5U?h_Lv5K5hzt15nS%a!~SCg}Np0(l?B9id)e1-Un zC{>E|UD(!F2}?ZhI|eyf8rmiM1L#xmEAc+$^5S2mY}in<>GOCWx{9Vr_??tsRAHaR ztM)Zc%KivAA-^a1kjpRpZc&Ey?fwfH%~=-oI_df+!{)wD&Vk*XYcK@_qQ&dT>_og# zw*+3Myo?*nq2gv8DH9OQD_Z_j0=u#fM)^GJwH|TLdA4Fb8Yi%0>&Zacu$qP9_hH1s z92;PS&$Fc)5DmvO+eTC-u(2CSLc1=Ccq)Bi;uRa=EaKT772)beXh1v*+k~Y|U`3lq zMx1^%kKGZo<6$l6Xdj?saspei33Py*O=L*89)Bh0B&gJ>RGvv-eK#W(j%S%$plavY zoGs|G3#&!e! z8${K@VzxmyfWD37Q~fJ!={Dkx#QM79+IHMvVYcl`$CI{0=`C#0c12tdZ^s-gEMf;q zW2OxxlnvcM9s!|yb|}aVpcElg1&yIG64ErS)k0WpQ*zCm2E=Vkob z2#k%?m=w5eInUfX!C))fwG*RS+3B51w-IlW(KL^-nQvm1y0HCkf`~+4&@Pm~(Bj>2 zOaCsT8+U_+s)zpC-(QJPm0t0E)9%YKQJyC_L$niAJo(plVXAi;!W>8WA&qbU zQEpfBS^WnvbooBphp^nZ##AG!VqfP^NPj)aV`EQ4YxCH3HCuE>DOt`!-16ALvk?AK zEd3lxqu9}NP_nVC{yeximR&iIZpX61&y>>4&ro`Ro#3Sh*bQD9$Hsn+(m1x@bCe!p z7kTL+ru%}Fbvup|JF5NlllQZ~fi*MaD|Ke>O)Sc()4PFs--<6tyLJic^d1lV3PO9@ z`_BLttG`NOjVjVycJV5ax_lCV;V4Y|b4!lkKpnIEgG9U3LHSWv7#~#lN?q^0lQcd} z!K+cNsarEQl~Xm?Bk;?Czv84B%*yF1EFU+afp$1kR}5goQyOdmPPavdv+-};;~ckD zU|zWjY?}ZAwU2()%sf+?qj~N@A$FQC|}Y4 zkTF3T#|1v9yHlVoZ>Jm)D)mBKpq`!hshKx?K~!*bTi)b9tITnZ(&b$$EWn%m=M>&3 zu=;Eb7T}GmrJc}6g@HF`6(Oinc%!s)IeMu;@J0nzD!fq#?3w*F8tC_)3eb%BlW5Nq zGd29@&4?D2$Dis1Lew^SZRJAkubbAUqPfi&rBS_619+MNO1;An7`S->+IHksA~8f` zDp5kZ){mRz`~owv(0A<@vV^v8z@N}M+?0I|lQAxQm0kah^keV+Mr>^XYdBy+o4O;f zsmQB-C%wt*?AY&6`il%3p+|kYn@B%gwE3?6K@!@NZNAV@%4nCjm7o`IdT^?zctr2! z2Elg*5k#f_ZC`zRieT)&*xelMNc)rhOlPLu zQQ6B(acRxQnyC+2ScHO^8$kyFvm!#ltdF2w(coGH9fQi;NTt#pNfXeZCXx;@f=~qa zmF##s+KtVQC&A1TMF(5+R`DZV?Emq0*(2b_heZD`fBbmp7j>dfyy>fmqPIn|i&eyd ziZ^{*+ z@R7gTmt&)N(Xt-_M0*5L_&vo?FxVuBTN(u)L|3lbx1YI_=>3?>=_Ee0Rd(7xaz9^? zZ{7F<6hggGqi;VOZl}XA^%^_%{`cizj%4~WFi#|d;Fhylx3YAe=oQl#u zUv(lKk1+y_sQOiuO&QMv%1%A{JuEETTIx8@! ztO|=zVO3Er?Vzy=OrNa5(iC-8+PQnGuu7{6GuRbv&dgT^%+!FO3;EvD*8>vMCPm4){*@N5`U4u7eYj;+4lPt#-qq@}nPnh! ztv%~IkbX=0`7DFz7lia>O%B?L+{I#?P?>z+a3{nQdHG=KqsY_qXje)K*w_N-Nda43 zKxZJ+71CkO0cyvMgA^hxoS%*ejd+I!8!YRu6V41iLwm_B0tz_!MQVy5HApIL*=_dYM*C z2gW!2Xg1{jDjO<(^(BL}g+~sVgLJ?7&f|Mg;W&1pC-M!5#hhs>|r(xH9$WCPT*%!gihl0XXd|nnFch96psk z9My0Li`k?uropeV=`=e!6^1mzXPL$Y@eC_^g#K0WxD`#=;3V90JomW0*@)>h13M@8 zbUGw>ph}Qo5IZ)V_KZ_{z8UD*Y}Ea#_FjPNni+JQwc${<0bLmyk3!sTW<%U?-S3Au z{hEE1%gmxAwqgc7)Gk>LatOZlSfb~t(>G}*&1jAk6jF}l_-ba+6T$d_4^9`5N`|pp z3+Y&P;3e8Ieru&wn2gFXfW&eP?H@;6FpLfMP-|3Xl~st>>VuH$kV4O~`5p{4t%_~; z(0u(`;0$1Icxc*?d8Kn7DVDW7KPVVOL0@}rYyl?%cZ;0@+|q+5ig zNW+mPA>|;|AnieVDxDKJrNi)rR-p{IMMzx)fxY|`?b7WqDm$R!Q{;GzBRn!|Ug^w7 zCRt`qo;4Li3D;Z0S?K~A#s2ja4WAIU$SPPlK2icwp!_7h0~6;H<0;*45#}VRDJI1t z;O93=eXp(-;dH7+s2FBJjrxx>YJVy_{tA7Lezb`7n@{6{Ytc4u?%dgPS(m5jjE=<` zdZ7DW!`Msn>0%bMfcA*IZ;4efqK{F?+aZ4#xrr@XKxfe1OW3UiG>zwJ&(b~#y8-G4 zlqZlnBK2xT+TpGiHv3tc6dXW$mHp*e+O=Jv_#E*2vNO-p{-*OUScTpwqT9IV=-lv> zrB-2*QdYa)&;Ifp9Td9})!k5i5;5-b51fb@ht*<_t)V?wSOqn)i7(Lb_(d;Ug}Z^1K?P;#*7(|L z#tN&^Fd!*8BP_xNl)0p6oxMiQ@hhsW!Volm4^jh(7WTAil3C2=KSN(?CoQuIrGVXs z)Q1bOGI>ABTMSq|*B*Po7jZv-FWiEi+n1t)FQT#-hCENei&le_TFuW~lPn zeL1sN&``i&Pqy2d@cTF>gRh&qbN1O_d78Y_$Po+lLxL5HtmQx?&|uA+k$rENfruDt`IQFm>X zRVZ;;g#9QFN4^00G~|<>Yw0r`c&*E!DD%1$T=ns`6@&`1`#ga*;j)hucWwbSy|Y~T{whpt%7<}IP|bml>} zY6-P=j9Cn-HLCb>)GuZqE`fY>ewO{VgwAu7>Hp@y)Gi;2&4Zrj9S~z*=14s<$V`lW&M^xg?+EHbYA={XH|vu{?=e0qJo zFJmQrj_{A2tLOpZn)#_kSab$P>@@Tgc@FZ3vxqK`Ch>aYhf#MJc?|Lzqy_lCfp!Am zCy?Jj&i@4jb@+K0M5JDTJ^Xa}WJ~GXxus7(JbU)c$)&R_B_-A^s>pTSVjZKzSdYvq zpFDN)TuTW$$!P&9uq&E>1F}*sn^rovw5(jgo`$**v|?fCgHI+xnEv5Yma46C=X`_^EYHg99o*U95nzQww*ton1dP;Y{cMHUh@Km7MuE(n$7v4edzlcd}JA zbYxW6n^tA`z^vfSg}!gHTQzj3bOUX9B(ek@aK_qbV)Lv+NuqGUl*ne+(5S>YvmbeU z_N?x+5m|A59Ymkp?yN!TiFEKywtgM$M}=MN%XM@h?X`==ucy{A<-4pxC%`XbP&4v~ z$i!w7-V~E4QBce3XZTuVb2})HK;G{m?%_4B(mQ(&@Sey=$sQDjl?IV z+ihjTHqbbBX+0ei*<-g=7>(K(MJ8H_)`0qPJQ`09YAi8tPhNtD$ZbhX53atvH%aOO}j8VR%BzjB^tcg%c=SkVcNW zzj)$c=a74fM>>Z<@Mf-H?`@<#+eOq_g>~Jm6e# zU{O0K3MELxt6X!#0cF#rqN!DecG7cF^`#2T%$D{tCu80(t8)C(7|Q8@GcF zZohUyqA-3q$QprVe4B0GLFaXBf50j{3>==gF1J6xde*`RPAg&aYoYTf@2jPKtot#> zyGS1(okq%8Yz1};Nx8#V`#0!(*PM4$-#Y*>?sNiWZqr(q``l5Uf-+b406q=@6{QW7 z=b+4OSfD%?-+XR?GPm+^{I3J_!$^V3=TOJ&p#2N@<^fmh za(AW7X6>X=_CWpfsN-rKC|BS+2`NLVW7~JqII*TAkv;PaO?Ne8@hR|SvusKfp4yx! zEJfO?<;S+DWnTB6QZK-GszrOAcs~xbi`kthT-^oOTUc%+o;PWEueV%k1+V;1>FAqK zZFH~|9dVqXJuSFFsONB=b6DUzke}A-Tf`>g$2v`@!Cn;z&mN@>GJ zzeVR;_te7#q1+dG!ac_Spv*OHuxq5}s9+P{zXT+{;Pc#3BVt;!P0ynO&} zLz#;h`k7lt$5G_R>#!X|{&O9+SNCI_;TU@+(mei+^f(g#SB887(k!h!7Wp)!MZhgY zny=M!+)?A$DLdwYG~nta2-Kg;lVy5u4x?oA%NsntRyy z+ddjkXy-;2x1aAS8`;qPG%dJuqgCJ{@DxitM6-JaiqD{m%T=KKSA25=9w`5gZ@$9l z=9~Sne#kT4runV_{As{iw-3Q;wJwL=QEqofc`nMfR^vU1GAA?8e+9}NTa~Av40@zy zgd$Y%#S1j(fU-(}FX{lroBr|-tV$16$T{K)Z9~Az?1IUV>cR&X&@Ykmsp@`B6w?2X zbnrJ=AEW@@o>t$1y8o|v=6^yw_9vaLMI9S)koIRK2dSPdJxDDbFMOy*o39{-=SKX( zhwQzBaFm@tV&5I415K0S5eX++g&MoB=eu-*zTK`9>cP;nK#pWT?5CX!*w1I~I>Fxi zD?|qQ_kTrua(+Y@DDySuGK6*?9-{fdf%-RC=^>iH zt{_8A$d&!TMy>VvX6kUF24ca(Yf%^4DC z|F7mU8`nTb(*2*Zoeh{U@-G``&-neHs*&cqXu~I%k(nU`>ZTF)+ zeuf#2!X8gTeGrOgihk?)850ociG#(oU%FCO} zY|3$P@$dz<>NuT63;*Ubd_tG&;?ucpLW9$nR1L&ubD(xLj_v!DW;n~W*_ywyDjS+K zD0 z#a=r@)1qpg_~UjE>iIuze0YRX+?joO25w@1XJ$AHnOxh2_2YR&JezeEMaE)m zkc-bLUa6j^7P_`8n|>Y*$EUO9=P}TnZtVN>)N05PVWgFBJ9R60Je%`5)ftuou&5gw z_!(64MmP4{XJ~XfgXbCS;%8Kc_Yk{3qg`3p=QxC1k;&pO(Tt9KdNrKv9=C4ujgC;r z;y9fPe+P*!Ndxyos}}34(+2&MzPY8+)-Yzrd`H0sa$avj9SJx);m1Kzr)1^tyFB zhm~HX=JuSF6I^9DFj? z;G2-h6vwUGDQw+Ww3E`k1-3TD!JfN{<-GoPFg(Y>e)~ICq{P88E@HBCfWLwbI7^e+ z(u-i|iMH)Sq0%QD?7fTBZa584D<(u5W&#*Cm@i--{er=_ZtrJ*T%w)X6PIA9Z=&n~ z$AZNKwigxj<`DMUSDcDVpyI|5_S+@ePd_u4Q~N9zwlQDPF0?pLSuU3OE!F9-VaHg^ zPF{j7KKKnG2LI^7%gb)@zY$3>KDss=MRn*%xxV8r>@)(KQcS-C}zYarP^<1!hhmdHfzVo)Th5P>Q;7o_Zc#rI%d_L!Qtp{=lhbJH#+qT$?=lWsg|39e|v4B*uv4Ni^XHd$h>i2YRM*c zQTdqEvQ6xw{h``&2<=)gpM=kDNatpz-rT|PeB-zHAuX4e zHKex&t)8u|&i%Tuq&zeVFyf7CJ&$T3&Od8cH2 zs&y@Klg6ixsg3u_-EdJudI5mTJddBgH#rO}s`r@`{Fd z$5g+~@k3)PQk!ez2epuWzm6MSHP@!@+RWP4Uz>VI{+)7tYWwE+`1tZ0Q|J7__HLY+ zy6X?t+V-Z@EAsF1n^NET=@qG#TgabubE@wa%4Ob?x^fGvP0UKom-Gp(+R;tQogkAKs#jcI@WNS#?M1xvlZ@a;xrQdX!U3Y0IKi*$>=%>{iEP zKr8P~om0mtuY9fWx6bFSthH?Pp#M%FN`mIB=yHOKH{u= zA~m?4d29I7srmIB$Qz$YeN`VHoVDOZnJ0PXxgd4iU-7Q-f~Bd;{^HLRv#Vut=A2b6 z6LaTO$##a$qUvDgtx0gN~zDdh>5abNL&o@0j1Sw!UGf?0vGVX`TDF7xqJS{@swCo!ZPKk^1=Gc%Q7%I~&qo>V>Tw z^F6=tTxYl;1`${cmWv z*R)Ef=cWdI%jx)@%!~u#MSG{7%gpGNF>&v7YRlSqyB0FTj_t}t>)xrBS#0EjMCzQZ zj8WN>4ojyu#O1u*KJ{%@M!R@k=hQ!0867j0cMeLXO0qL@;ww9+24`msh)*d@-IYz> zR2HUQ$)?#W3sb*kQ{B=dQ^)WUy4>Ae)9KP+zAj6x$jWG&TGT9~ZG3n4)ca(|7xqfE z%*p7OwX|0{JvucagDamQIaFWUD>W*I>Q^6~dLSp`nE0ALsjrBO@9vXo$YC?<`=kzR z&c8E`OZ9D@(JMZoZ)$4uj5D)p`lY!P=pV~CAhoqQ^{nle`lmVdl$ECX^1{9Nw9?f0 z78%E6uRAI2E@k#lt!P1m@&~29Yr%_MN={C5J?S3@yca(wKJVnziF?qW8-~a(^{+8% z?FZD7#oyf&oC$CZMi=_bcfg0yndg6qlD65_H;NSiS<_2(WL2WKrBmewhw zFgGJ7cQKZahu)BuC2|@%C^arOqkY!u;py}wzghk$+DZ*=N2DIjWfYa3p8Awu|BRQN zp4y%(gVuL&qFcZ{^F^npPTiCIg{QyD&&#|YORl2!IG;Br@~@YZkpE|i$rk~=Rd_Z3 zO8#@s{KFFSUf}<$nkNJ-F;DKru5OVKu*AGq`Tsl~46if! z_v7`6WEe1y1X@J(vc$cIu|E1HTkxT?=C8)Gh3e06!uSiUkHty(-Od`H#>3_3#Wf+$ zo*r$Sg(u+71V{y4oi(1h$L|sKQP_XR&c%;&*8KCZ^nm&ToRo*{G+_b>oo)?%3HHZ@ zACT=`hQp;Uo%}Hv1HIW29`Erw{2GjbNyLf&`7PMz3pwP)Ykv=R@dD>-YWX=_*~il} zgMb4z2m7?f1-yZ!NBluV_oT7x(|i}d{}$PYJnuuRWCgEb*#Lix5WgGCF46Lx>cXcB zW8_~EPlnr*>D8qlqU9^wCtPC8TY!5W9QrZ5*!T%t%2R_n%4;Ov_#Z4!33i}HIf{;F z!^FW7^G-~XP(_0L8A<}~a@K%*uskYQ=JLOB*8Fu6&pjAzK(kCfM0QLB+0@qp%cF`N zT=@%}wR~~{3Bw6k>jIA9W3gBRj>DY}A;+S5sc&n>s`+L3JM!fdk!;}|c$&$djXT{QJQykY zuVZ1bMJl1GeH!Dv&`b`3E#-3r&6kwlio-7jmDC3jOkY z`QPj5?z_nbynuHTFMo^{ufqjA;+n_${e))RyI5yd*d5mzpN%_F;80h=EIiz=ASnM5 zUdkBJ2K^5&B>!L+pF>xbnfM-fm00Eie)fIyChG6892M#xu^biZpRpWf z>Wx?qEA{VKA7z&f*q7USV$E;UlJO@Kk0!JwKqembL0F%CmkI_uYyMCyGnslgmXnkE zG^`KFOZgj|HUGvW3HtQB1T1#efakGHOzIc0Oib#Ru|8%m<<~oF{!dtDM)faPW=3^# z6AASup%%+i^%}4R%hUDhKe0Szul@_m)As5eSf1Kf@4^+v4Y)Ei^Z#C4wT1~^CSGpb z3{P~`@l7(X1rC?Gbeo@o75H;M*K}jCtiYd&@xyp!`-C@%LUN7xEtX5Tm2olWzc!nK ziN>EwDew`NiAA0;l8eMWe+woat#CM&iADY3?{p~@PID{xh>J|Q1WPy{`DZYbYJBcC zGN|8ok`=74XV7&@_|MBo3s3qhxJ2sUE~~%W9$ewb?OVw|`S0M0rp)E{*+B!2;CXJB z{{ohIL7tnC4XDR*m=`!N+a2_H0w*P)+rPodKzdd@8S8gv#4lr+`!&B)Lon5ry7*mK zzoR1Yebd3j!_nv0cO&+{v*NrG%b24F*#8u0#u-fpowj%|)~|F({+(FA+99sN`V|i` z-^^|Ns)(5PmiS{x$Hbmy%*bVaADkGJpgA1>w9zXjp?a_+$P)AV;fhle-g+cgFgM{z zLla1rn0E`7FM$M0%)1TuG_J(@l^%(|8<&~<|KJU5aK5Zxj@#uVOg8~?Ds!qV%~cstTe~{XIQ?z6D%=r z4X(dCyv%OE8!+vpblmI2^|XAwN8`KT?(`V{`1zyx5BVC9=AVsoXLJ77fLZ*9d`CzF z?!*UDfnH`;W4eXW$)_Kf;xN25-dLV_)H9#XVs{ET2JRT!>|q z1`9VJuzW2_-5rl+3)M&A3C6wgG~;8jd`(K@`{r}}tuYDx36OoN0i{^>x%wn5U8)|8 zbJ-&GP%OJlJsiszP@jfNjYrAxCta)oV+fFasve8wuv3r2@&zsRd3dey1z5UR^Cw{0 z1?o$%etAmTy`6>LORZHSgn=iL2T-=l^p^kU^*g9>)6RKRKDK$NJ?yar^9;KL(Dc z0`Zroi{<398CQ>y=E)NC{*3r9JiPFbAUnx@iX9}3&;+~-+kM!8!=)}A+lOnupLCyR zc$ruiX+TH3!ZhG;TzOW)g~Yr<+-YoJ#(&J~O2XE&!+`F%_qfnU;jv|*d*hX6&>f3E zHtvh<2K2|_QkU+lkGcM%TGe=+YJ5_(@82E2#mYn#Cm^H$+v9M`2Z z@C+>9cn%gml;E+(XX9ei;0v*QgIeP!CP_$8q24@B;XJc~cd&fLS_^!D&mmtgD*wdt zRcy`w8}~N(2Xi>d*R(bNFg%!iIi*MsCr>3ozPGIbXW%LVxHj|yW@7oix8~o9JDL@| zh~@j=n*S=EL_Yuc<$vTqC|NRTemfQeYTNPRh$U824c+j-$C94>X~E}TuJ$NcMl2K8lFdQ|6u z=dtvd*#G?hHm6$|H)9#){$EUR1D0KKo{OJm z8YD;21GvnLfrs$)sR^R}`G-HVk+6;}^jk=ee2n$`|1wJda+VS_!P|jL%|70R^}PWS z-;sx&#K98x4#!fzx)29F=+A%IURM&rr7pdSD->yQTh}9Jae*N#)E?<>;$;g*;@V(~ zs3zu}f!ki4a8)udV7trC*7CvpTbI7Rb<8gyhlOETSi9JU)Lwabqrp~_U)4TtZDVE^OZRH(=GI4rMS@Xwa4 zVzD#p^H=#ime(-&XHW9?B2XMGF|Re|RSn7DbV|UaAfYi}GL{wxOWd1^rN!!Nuxz1v zI+h+#C$ThGJrmnqa5FaNzq)ier%&19e3E4swC21jT`Yyf{r2a&A19n=`4s>b*(Hl2 zD|p7_%QfS3#u8tHHzcn~_!Y=r`jUi#>q38pR~dhUm$F5=%QD*WK?0vo4KnJxI0qHR zy&^2}>K@qkKrh^Q{+AZ+YR7XKG^nQ=^?eA?MOu7Tq=IuyzLY=LSmJNOZLd$bDmdNZ z-21}~c%dEZZ%aaRLSzfp5pXEhvthFX+2?b^0^RWuCjV?Kug6$JdAZBA)j3#W%-e?L zy&ZI%pMSwYfi-`^L2UmF0#>+yS^~tu67#lTc{hi2xvbz&vc$o{_~1WR(#0|}$_DVk z*MEtK#^2^lHcQN_OfVBtUamK!zU5MvBm_&$dyD^+w~xp~<8P6(=5NFDf)Dj}{&P1C zC?r7|(7ruWtI6+xd#A$uQ?R@oBv?5Aol3$K6L3A2mxO4*47|kTKZ6&V{O9m`W4>eP z70w9D^Ib!4jq$5^#*K~nNpBemTf+qJ4V+)m7~rkIJ8lmBE|!;(RC+-V6*9o}v3^pLCw$g6jw#OnOGwyELar-ei=6*UNRXGoXn{+dwZLUqc9HrDEH8l3_<7En|1g$a zrhXK!GkzS`J13M# zR*)e3Bv|6!yIA&_`h6_BNc|y}c|pAz%fzDo49mQt{sPOqqW&+IdBn|sac?aNc53_< zhf7`h>jbA~CYmWE%DLd6_FQ5y>SY&*FUE4%sb9u&n8}!u{P@8!|EN-*g5@YG_P3va z`$>?)WU(udaY)QRtcExb#d26Ja()%dKJ`z>T;u(NWuK~#<5q|qW|LfeC6=SCLp*5E zphIK+E)LHBR8UER>@%5}2%|4-l{&Cv{ui!WjmY7$ByP19110QYN3r{oGgnh96 zuvv_y{$PoF{c!R9=I{RlNSNrd921u7(jO8^-dNy0^~4%lzcZ3D12`G_sq`$ zEN`|_e}LunSL%=O?Af6|Ih64yufx)S8UohSMTI2D$zvCm_h@N;18&Q^qcs2Uj@(we zH_R`@@=h;}?~3J}Uh3{x-uy*7%87 zHb8wjmRDtI`~%LKpL~b}*&!X=kvEH|P!t4^67gj}f z*~cbdF3UePmiVn$US=i>3u?g9QVPJ<$phF zqLW;beMx?})TNhlQ7Ze`KMa{Ex8u23XU;av!7|hN6B{$_{a7ZV^;9BL`=Nc9|7GH- zc60UUJ_Jw!gWaEcAH=dxwZiYP>{E67V>nls6_#Te6Po`dmWir3J6K`iv0O#F7YxYM zK0A3_%%3Rcx)z-$Uu&VlV%LC$SYJdb1%Ac)zDV(!e*A@l9+R_OES~8Vme61vG$70S z%Ji7b{X4Mj(c~@@ASa6kV=0i}0^Sxl1cwWMY&Mp7`PQ0^KiT9<{lkojPo^i4P-~{j z$#~>r3Ac`zHx;jVBJ?$Q+I;sg8b`rGJOTS#j6cKPlVSW9xcHgS|HWm`soDQ)NqEtW z%5QNl6$T5R|8ZO6A8?`Z20YsMS1b+E^1oqeuzEATRV|rMVn zocVBA;ch(IIE^P5$B%5fOR}&o%)fQ%#RoBH9!q!=IeW-q(WjWhiZ1KmycA297IWb* z`L{F3WS32F`75#X2q!iFsLATjB^TDC;6yAvq`nnP598qZzY_-V3HCE-3S_e^}w&BuJNz zZ~-}{i)2)H#`0R!VBzn8c$zV0;-Y!9mwaJbZ^zhk1229(5u9{HRNk_OAnC_U8m1U`)761U6l#nQlJf&hOaAz_G_ znf5u602-t-;V3Lypk126(m-{;llW2s`Q@&@fu@1dgBM3U4exk4q38dYcO40K3vY-N zsKi@ek><+6-}CXM0r>xH?>~6=vV=>CdGjNF1ZTb;=0A&9EJ(V~=N{isB%zQk;#!gF zhf7_0C?BCDK0%@k!fGt*Q@1~y?>|Y4^t0Njhcn2qj@lcsG(Zc~;#}j? z`S2-QsO4|L(j!{_71JQ;v9;1*vq9f>W&G8!3#5STv#cUc7LT}5jf?O!Q=kW~HSUF1 zQogw>U*-&1;@JOHja;~W4fM{9=OvBZyQjF)zQ6slf+HdY zhC~XSV)7;aRAX7eq)7Z^lP~d8jV1oUAl|K?T`=DSNP$O;rNGLdfZN7w?*o%B@gEsW z{N_mfR+BIB+kCtAOM!ilYT89@aJbZ^+Zs!JzexN5lP@bc!C2xaMB*=zeBFL2a9O0l zJ&^)cCST%H#QK ze2JfLoS7uy<4A!|O@I{m+*nr75Q&fVZo0*p#uDERhg+QO^)&em>ALjMCP506M+#hM z@+JOaV~I~i;vX>i6915~#D5gV%ORERePRNnK#j2!_%|%z$NO*hZQSU(bVi>>_!D#y zwp-l8$iQn&-rdzx}4wt%gJ7b9-;NpYzvkOiz0kVRD#!}!?S0Jb~+nZ$a zC4RE8#LtbyKWOqLetzI!{ZioFNP+hw1wJ&E_&*}?btYd{P;V^pZH{f)Lv68{((BR( z`3b@HNrBQxfs;(WtYEOQ#9tnXztZGO{8h#h|A551{%5V(-a{rp3M?>|0`EzIpnZP) zDw8kq9~(>j)=2y|lP~exapU@>zyaLIv@1AJZfrI#oI;Ex{=`W9Ad@dE7-B5(7f0eR zEe_YuYPc?m6u2u=;2x7N@m0pMf)^w4FPnUcuQrzWZ{(2s}mi1K=gp*#YlesrRg?<-tcdrV|3I`D&_qtY_3Z=!H@uHOpw+Y;T2{J6WDIyAvj#>(x=g2iPsJIN;Zi4 zGEaYqv`4LAwsy_X28kUyyoCZR|Z@K9Vsg?kVpW8!K&#N=O#XMf--AmVzw_|bzs z`P3oti|~4^gYHW_&$t0sIqSV3DP1BD8=?`0ViSE0?i+cWsB8Av23w=IJS3mPs4T>j>5r` zlz(_adk{Cj=;G3Nu+Op>rLvC_4I|JunU1Ex69)%Ld$FEQ9R+Nc=pLFYymM zCt1IL!SQaS!26K`9~%3IVI+R5$(I#uGxiU=lBOH5KW0h#|1SmFmAL=pA1Tlu+bu3N z`4WGUvBX~ziNDO`OZ*ka68|4RUf0j*ca8~=0&|U}z)QIJlY|#6G4B;T+xRtX8@wEc z3wQI3rM_=*lk@*~CO{hSgRvC&R|mrX)Y3e#bx2a_-LABG#ZUsiA` z2|FJ@*n5+DWL~%)uQFRW1E2O-c+>qEJRR#q^A+A|;=jR}pC(+ZIAUHAgaZ9(wg9+Flw|2e? z7vck*7vRD89OsYm^qK^cCFXsK*BXD07ZLBz8}#UIyyEkOA1(3eBne*<(9tg*_c|X> zmwgcibiosii|{1l9(XGg&-t$WInKcv;@-JfcA2^y%PvzVFC<|QU91TgW9f4BrC54M zJqb$>sVC#5=9M&4vGkbcUxTH`)YGx_h;!0Qk{~^x0WvBbY0#>@PZ?R{thq`+!pDX=Ll;K$dRe2L#;Eb+M~H0{y7aJbZ^TQ{2ZOM$MD z0^J(}q!?chHkSBPBk`x3e2E`zEb&)G;-_i8Y`+w^P7{z6m>VhZpvjl``Nk6edL;f$ zlP~da8%z98IRDE;@F!(?=In?Qg9N`l_(&|jj+sw_r~z0Bp$Rd`G?~V z$lr?s(twe;U`<$l46Y_W!{t}t;x)-I;5HJbmx8bjd-;)Gs;DG}@uS3!V974iq(|}=Ee&AFqI1N{kuU&itmLEpd{G0GV zQ~o(zZ}MNl^24bbUyYNM6v!b(TJ#eM^2@0juo1sbey+>ko6ltOtE-w{faO~(+KEbJPH>XkHK|R7-tRA;0i21UDdba z#5bYu#M?~y>OnI8NC+0*zDactK{!DII!mLk7ZD++hP6r zScxB)bO{=8GM0U)9)@L1s7GM^OeKLsEGjRoOMuNmY>#X_7B_zlg(1e$; z3^MgASoWd%H7uiEy&TJ7rG5*`m{Grj<*-!0hvg`6PI{|IkmFhdKE|?-)t_S7XX?+f zJ>Rdv;lkK$q<@e^#k z{7Lx|6CedHGnN9CxR_Bahp9}(Z#xH#;+6_7CEx$BNq(y#fi*uLmzn$voh6^~&ljRd zSiC5FoVW_h4-rp@1uLv~)(Zc|@?*twNstDeJ~XiAkH*u#P53{sDEW6fYyNEf0_!W1 z^~){XgR!#B2UWoViZy zpMPTB?<6es6C@<&{edf=3TM7Hr|`i9>r7dScQ7b*1()H4b^_rHj=s;#{^+{W9)gT#ct2zb@tfV_qryCJEBzTEW|R zF4iuqb=LeXSayl}Pb|AY{TD7ZA53=OC&+I_fb_^ABg8yXrUg2ZAp1;xIF@~;F2oa^ z#QS3+&hyP!wm6R%iCJCcmbToU9aQ+HFL9QVWV zq#qLG$`bQV!!v$J2v}m?D4h39I0$dVRX>FDz^BfBIPst3CFJX2-R)Gyza#_;uMHrf z;HU7o{*SZf&%sN`SI@gA_0{_Q?}OA0hDTsEJ^lbJsx{Cz09XpfOG ze;4=@4=%>C0kR8aA77892MT27B!4ZI9-HR8_vwrQ;yb(ekx3F{i*%68!Lmi_ud#HQ zx?mLFV`l}`R3IxT$FhZ*{{)sUFLf*U73*)hO9MMGD5ZzEZt)wOyqE;Lh3}XikU_W} z@AxG_xGX%+jz?}x_!9qu%ZxW++oQEOT=>iBXhuEtjSYGv>1{Cqvcf%2W7L}p^YDyK z30FtV+gof#{c*U;7SsZ?PUV$+$O{1YR;5bRh-a#htKTGW{Vo zgQgBoGOowcpkRr6f8)8BqmBOITmB;hYkmhT4fGdzr2H@vDsBra=!|z05O)=v?yMDz z#?oN*Sy;A6eGZllP@jwKE-9DtZejehk7b|GMYCC>462iunPeB_xlwy9mR*ofA<6G} zCW982^I1xKAC?}`L0EAXgA~hWP8oC;nia|}zCCP^oPV;tJ57KzXtuEwcn;6nk|0(V ze$NDNWDAe+75BcyrO$@DFza;Y5#z47r|}rPmhz3Sl)s6DMSmuwb{1ZKfmcyrhA-Yp zkE=}u>m=T|8I$@HzrtXjcf(z=-0G1raF#P<;SKUG-kpEBPe(!p1>|6m0(Ut3@%Sz* zEmq%yr3chiShiT5!m`Ec2e9;z`XM|LCv}vratRvnF_tYogI1}3yHpAhN(E;I%?l1K~^}30y1h_meFk)n{aN7p9q(uiVglwoFpMwm|9(c`WIYi@_)yf@i2ZX?qK|v^I|HH72G|#X?|72 zDV!`Z70e@HwDBW&uJIGN#`qb$F*n?z-y`{3Bi@F+jBo>XjAr~V=iV+o!vC_oW5)1# zo-S_fJMLY8&%-U9XX8a#VFhz=@9fYIMEr2XkK!pN{>d?nznjepzaU@|-p8%*U%bc^ zh@Z(88#lv?h|hQN-SM;*VS|pwbIJF|7(3-Wyw2obm~;t4s6h7FPmzF)5&w=m?GdhE zYsA}dZB*A~Rk6%OFyBQbCtA3nk;hx5K;EBd}iCwf@ zPuzpUh3AB@eF^UfJ_5Cx`#Lgew+~f?7(+$zuPBJXk^t_1rKP%L;SImvh5> zEDcnz$8yxHape=2@;ShiKMzZfNFPi2g;+MYvuwX4{6d0kVQ=S@*#bHFyd*Y*v^wI~ zal+)Uz|;2%2lacnBro(wcq_X+>2Cp3@3$nZFk|35JcR}Y3tzaxvyC^n3WEGB?^kSh z!EZQRcx(sTU2xBMo|-8fLl2Gk z)QC^V1&*u1BV-h|lz`7>lFY#6rzZMVKFRbu?c%$);5&s(TZ%Gm|3&IMv;4VAp!stBLj(S9 zObEQx>@zue)L=VE{~PgIJj4v*|KS2)#+^+39(V{2)=vZSNGLM_``~FWhG)MLT(4t*!|D>eTgL#t4=*=<8y8dF zA0y<~Vq1S*;H1C3(gXD*%rXtwiI=o9TZo4r7&@b@sdFOU15Y#Yc@gi87remde}7QX z!oGe&I1lv4vPHoX_e$|9Eb(OmAV`B!4;A@x;QdPqGD=h7obk|5 z*d<$I!BH{za(T6Id;hfoa@4fDf)}#j>68|qie*p^alR4DF6-pniu!etqpHiftlze% z$OK4(dPEx3%j8Q1r{WoA3s1)@jYnf!|5>KI)PK&oY`@*&zI+al3Up?hbR{1Yuzw$q ziRN5Wfi&Ry$O>kdd|AOw*w%lG$(QnvCP}C!U+Phxk{bv!sh&Rwcf9hsX z{SOZ(zLXMjKcVw^frAQowM4|p?j)3%6&#Hx85iR!&*&(z=`(l8++gvTx$HgGba;&iwB+GG=EscBXD_R`6T!4NSN1{ z5cAH$8;#2%z98ZWIOpK7ftTVLhlIWouQtBgTK@h$-6r59US|qa;2p-d;UOKu72JiT z%Y%jY6kr(>>MAMEC!=7=@=|!W%V+%a@Hq(+&0F^$!nrSn6)eDc=9$pPaK6cZ0+$#+ zh3#Rt7>5gAImhm(kohOWyXsboDyE}0?opH%STReZiTFI4#p%N7>82K1h)1%mkN zB7V_qp&ZwrV!MmJjQA@&L3W{Rznl)fC1Io4r|WUvq2WIMIpW_U-i$k$_&@Ph`NsKpvGIPm#(00s7;)?8o=rOv!lf>q zz;^0XNHDIlaXBU+?$d zNP@KZ5Gs&CcZg|_?9+bOj_Ls>U*`G~ux;=_lP~4VvF*WWbo6G>QNd9ve>Pwj0mY_( zyuPo)((sirN8qtIK|jki+$dafM7V;pa1r_bAS3@4Txs&}!0Q=fdP(KbDh4b0P z1#4=}jRVM#MJkR)5yx4d-US<3?UMH6AmnOXL z5=xOYVDF1ufXgq4_yAmMDoo(r#)slW*Kh+mJ6E~-=Q{`MXN8YN3Os>}O$E>3k;Y4K zmGR4XsqwOi--`Ghysm5eq<@JeTbzHfpWtt=^hleC+v1#}@Pov3=b%8$yD{PlTu8j; z--btb3w;-!-Ypp>-0LU!ccuJYQ0J@_Y>#*+o@Xj-z-x>%E@2mR59`lyuBJlS;G{Td z0xBW}ZpEc0zY@HsXVDGN(t_!VV;CG(H>`^bGTlbnf7` z;KfM(s}V25#gt#_;*YvCu=eONm&*Cytl&5T%8Uo#MaC!Lt;R!~JGm|XJd*!a#NXhy zM}-^o-KC8GT9fb-0R_FnfQ`26A>R8aVNag z#CK_8KK~byu*w7+g(tE_dP}7YSKvJQOuGCIyyBQ}i)P~u#&aTmAmWE`y~fM=|4|Ya z9~)NqWWSHnU2 z7+&q~Vt@PN-lrr?q(F{qz)n22BwS%b#2HsM&CkY5DWB)ccf;!_uk*$|&Sd)$_o-$3 zr3daOL5}NS;i44FajbqA=hNb0B*-BA$XWA0!EzX?Yp@)q!II^DiDgi0{#RHAb+CRa z{DuS>0~)Xn%PvuWkC$M*Ti#-FV9nnXe@K3u1ZiMzXU#tre@uSN<&O{S)=z|GD@{TC6=qyV9E0C#sxSSq*>nI zm@}+fvb}$#eB;9V0BtFbn#VOgve#IKT1h>=W70N$Tgh0*>&79 z;d8-oSHQcfv35RA@sd59**`o=+DF_0_cr;5RJLalNQ_my+7 z5^m!~{2iWdHt;80WxO#-LbXZQ?5r0MhfZyp-#Owgc%3QVJ>sKqhvUO8KPKYjaU}FK z0R!+zDf-;Cv>nD|v(5f<>4 z;|0cVNBn-oAL0!shL`mRUrmoTmS_JT)+B*Hnc&rp0sP4XXPyvlQBV9o8ra-5a2zf* z`Q^AbgEG_4&+_hc`9oxku}L4=csc)nY7_A1xXe`e70#^=PcE@(T-TfYY+PvayWx?> zWASWyAXxZ$5oa0X-2aGqKSlz6jrccQZYtd88oH1Q3#mZL-|ws|m>=;YSayNtKM`8y z|Csj_2~${s-WFSfXB(&StdqhDGOumw<`L)O6(+tF&U`KWsmfwpOa1QiKi^OwVTswo z|40RXKrjg3!0Sx@Mx0B91%C7SIq~Z_%rLu{|M9nEJa=%|;Nx-r$?bW3JLs|doEty? zKd1?QAMrFq#E;=(DhL*S#{zd^g*k48U*fGp!u++kU})(7Mf{_)JO9SKpGoLx3jBtL z8*jlm=H&DzKGgUxJl1#zE;rtVdzz`b0XO;nUu=3X4+L8n_cF1}1L|g24m))VEQeXJ zWO;kyU&!Bw1pflWS>unzyU1_p^2hr&=l_dHki$$1OvG*Ro~}U3S@R#ja@eUK!o^s} z#42aa{}{_*ss0p~Cr!fVB*;;q0c)@v1?sQyVjL$ywlIEuV9n3MGKkeVSO&3r54;xZ zjmTa&DG3_ThXfhr>S8R1iMk(_!$>^<%Tb^{0n1UK9*7s-8Tw>=DETo0WCNyN&-j-F zEpQD1GOE?naf#W-No>#WGjX`^=4Wir@AI;GZiqqLn;<#8Kgbo3%>9+l?_R|GFQd|L z5%+#)@b`b2Xe#L=DX{Z0{_se?f0)U=;mdi85vSXMu7anhb0~6lltxMXFEjYDZ3bBo z&sV!{IdOiFO$7{IQxHWU+ zJX7I*5$}&zntb`0Vr%)1^9GZD7%pOv`(r|${~tj@@$hg9M&Yr>XGL5V@%eb7iJyQA zM}+msO|D|&D~)_+1y4u(EUqy5FXDB^ui|>+<<1@A9RD(k z|A_>oBaY8ti%t!NWY|9{O-Xy4f4HzR%< z=Zy>V-^a7*F+ED^@FJY=Zw`N^n@JCph4Jn2YV!T5on0^lFHf2-znX+hCLY~KkKzfY zf+wAOvjRD4a&Kyy-zwsKoKJnNU4!~znRtSQU-iSu5)$NWCWCMy31SVn9Lr&&z7oq} zrM?QwVW*yk?b~gy!`0+x5g_$H?yT{PZesksK|rnx_<{hj2K*O)i1ijr+FA4C75vG? zeHmWBpdC%6GDzFr95`4<%xmA& zNv{J5WwcN)vxni~SdW5fc!xO(u8(*IE;u(l%x=b)Qa*z<$}W2zuQm03Bjp>-=ikg* zm}<`pD`<{4HU`AKo_Jw-nBOPjz7hAw>rMQLc=Yn{vi%BNk7Lq6IseTg;Y&@xAK)*H z|HPjgx4V^@%y=OF%y=^X)ObGr#P~zJ+Bqp*R8K<1<>40Y#03QCF6b}|zY)I0@)Vqd zHUC;%YWz6vWXjjz-p0G|z`%03F*FlX#8s7r4^+Up&^h)9vhY zGVcfmZ7|B?UNbC%THOMVHWSgFSO%#( z|Hi#M5+;#wfeZ>7bd0lBa2%FVtS-SaNY%$<8P)0&vGkyN5SCr49)e{Tx$|$_JB0+< zM;dS{mVKl?9gj91jirk<|12!KP<;-bZhS75U8MQtm>$>jKT|6S(&ZX(F_tb@Uy4^7 zPr@>)HGeXeQLmng<)~0!gXO4EPsg7xH=qBLB*0W+~2mg<|a3_A5JEQ3gW2bSYn zeHWHNr@jZvQKPQH1xb^TB0&x#4R`?Cx%wd-E;5C!OQGY&OxFVbf?!pssCt4|k_%&Q*@;Bhc zQ^SYTPrsA#mw5YNFX0NzxYP4Wuud$`;JH)66)thsE1+GGeDAKN@fmpFo8i>k1=mpD z!dTD)lkQ^tNkXv1ysKP*dK%8XD$Ktg=dlHvKNAj0fVa#zP}co*GFw9p_#huJBA;OoQ}vT7kW3 zVg7Bn$n4{#cs=pQxefRp*O(q^G28PJVSLg%ii9O5pbW1tz5_2Xeg#)w6E@)Wh*w1X zF0ME6tMG6d(A;kz=l^Xaj3FWBT72L=T=iZbuHX=SrpX_MOTsPiuE7&-2;*;X9!rIC zn7tRt|HxX-f1i*r-Bj=eKFh4|U%bG4P>KJCsn;~13tnmRyE~6%gQNi$Me;8*_RoJ; zkgFcpt{=V1R)YZ-*g@p9v=dpQbbgj?JKCye)UUga7vERug(Xqo@{3I+*9rh>EZ zjJLzX>K44#?MTR+8E(;fTx$HYbG6%|!>XF* z7e?F_k2d9d;-$uY@NTicetMv4=}j9ZUr;;!@*R@d~rTA901r|J8X&Ea-v5?~{Bp>W}mj!WMSJb4>-k@cPI2wi|P^ z99CE1O{|dm_+Q*xfP3E>mVX=%H+~vVF@7FTOPYkGB-Bu08&~1?xXR>jkbL7!&Sh?k zjz~4lFN(Ma-e}7A#>w30`Kwg3V2h@aFnd6yx6p{4Y{qJsxN(_!)0C{tf5e9Rq#{X=SkTEx~|7J7x z>Z#7`5r3zg5%HOLwJARiPr5T~P&uwQzQ}ocEa>r9laYYs5x<2C?g}ehiGMSLZVR4g z^6T-nCjX%OY0%wa`3}w{ZXQUU8wnU6@kMx^so*la!+0|8G&@|uG`yJxP``gvJcc)z z{6%=|Q|-O=!9{4&%X)x2825w~w7{jtd*MmO`S^FUf_`|h$uGrAj0ZV$vzbQmYPTl& zeEz+oNkYuK3$HU3+>3kvCv4zcJi+)OJn#W7D%}d!<3;y|@jv4=#=kk&(nE1M|95$? zX+ZagkHR}l1;^lus&EDU@CxHn=QXkd>c2ITUun$v=k7NN>rDk!c*>k`1^44B3tzz7G3O?l7x&iT2FwQeZuYR}{cGGEFX!~E^&O4nbgeFqxW8|6{x2mVXJJ@i z5FThe3=c6r4VM{@#+Alri=PPVI}eXEAMYpPMDp=4;0h92m_aoUFE;s);FuW`t8q`W zg3ob=$={7LaW-8bJ$TpxE;vklAx4D zb=ygCAG7u92%zcb?9xWbf=J>q$-%?btP9b|hg47yPB^CNB(aa){M z9oE+#FL!4A^FCh^cAJ1B@RZlW0!4VK@lm+e_!!COHro-jNREPXybx=H@4{8a)p+%C zzkb$FkvB+?`*gt)_g3J+c#x~`H)qY?jHN>LRxB%2Z^P0c^>+L{9!P>TF!6X`_xYRe zdXpfx-LybQEcf-)hhw=5rY^+&@VO*Ng=aWx{+U>ATB*;*a+6D4hUF%gJOA=KpCrg_ zG7T7y*Bf7i<+hpTPsDQDO?^3*n^Nj4vE1cSUxno+mwFnOn_ANUEW9*|1i9%HEc`_T z%S|TrjacsOsw=SE+g0C+jPb=C^6!Ka%F7CLMG zlX$er|H4`G|BKHu`QDQ_NrDDskZ=ypB0*Ysq_gIC!{?K)4IJyN`Qz{fW>Xuk8I@PVPT+^xZv0QYj_rr40soo#U zMXkCWmTO99{{BOPTvTenAy_Ud)g7^XvQZz7vGD$cHp^H~$iXTSPv zj(ma7;k{@Aq=L_|yFehH zcL7HHHSX|k_~=#aX||XPic+GvsN@$f0tdaq3l1Y5g>&DK3lRVO#|wl=XzM3P5#D-+ zON=jY<~qV(!Ml|(w zmtA%(mKEwQs9fB%0rx~)g(tjaKL6iO!Zg$3`FNi3W6r&$0c`R1NdB&f8*njOtS75Z z&r(0ui_%l^nzxc+m!07!ggz73n+A--rDo9GhHF-Y@ps|5o3oCwO*m--{)iN)!@Erd z+i|CN!v^odLyW!WgDwvm9QQJ?^q4vukHrU&AU#y{JmXIiG@u6ovX9iguymoi50)-g z7vn#00SQv!h0dCPF_tb@Uy3I>$;>(Fc{l!pw7T?U0_>=tigl4uelNCLJU8M8aUmw*ZIOf> z5%0pYO#yES4SYYWFbnrKZV~Zb5x2%=VSLitkAwoctd;As{?0+S^Q1DCE>)j|bE`rR z#yw5`P;B?{a2zgm>CNZ{kMwfMn1vA^9Sh{E>rDUd?#LOrA+@IO-yI5A3 zN4|VzBkK+x#ic;)#8)!{zRjks0B`FNg* zZxeA_yf(;}udIK0SsK%@QRpVMb!0_~we zgK@Pfa0)K^B5cq|Tw**X;&UQC7Y{e_uT_cUgV zx%D&1o+ZH^1xs+a@Cyjo9t9_H*vY7`;RG*->3vvMxQaq@Sgyq~2&ZHQ`N>Lt#F+fJ z%P+e##s={D-#;5s;1#n%Ijp|Kc8k|W{4MTedSpEw%@%f&6|kCvUgWc+$?t$y8y}8m zBq^XLi%UqDg>zj6&*Cba@4N*sGAro*5*HwNh|9kUPh1=BqH87JI2myTPTGK5Nyz;s zte_Il_&M}FxaSAqys#X1F#Z*v{C+r(v|7r^2R|xE9wNKaR^+g10aZlsqlO$xCgfH-v`mn`cN4zfL?{TGx-w^Syc%jL!ZEAl1kA&qWpg!Wi@eY%} z8&9FZ9Ao}rc33rA{CC*kLOjE`Tg1JZn7{w`Az{&nVHcOeg5eQ}sSr4pVgjmcvwi0G7i{eIS;jOx+&K zQN|+kf1EE32NQ_~9EN+E0-doO*P7o2%Ww1u=uB zHI{ui(^)IL8Q(&_tU~gaIBWh(SO&HF6)b~R{Tg0{llzh)6>M+`8t^Orj(|N~e(Pm{ zHGdy0qgq{n?dkgf94>X~1F=1QxBdUp&IeAbDgWblo}N3RDbqhiQ=S>qA2rQB|Nm%~ zX-#%0328$#&tJt%js7Xc%}-W{LhDwF(5?`|SWyU-5Go-GQOL5ZAuGEvzt8vHbLM`Z zW11Pi-+kF_-rw){e9!ls^F8O>d!PH<=XUFRL`LIjbRjE1+wZC14VYG&adVfh_wNvF zJI&Edg_nT$uxWTN_%I7_CD{FwGff`_m;A)8|DS|l-hUi}XTVDtuLIXHehIve@h0#V z#&3XY4?F(0g6A=Q7kt=Y5$;qBK2mrOcms3rxx)Lw2bun#;2pm>0elB`H#qzw*x-W0 zia`UooE31dMT=ZT_V0pVNQQzdtQ4d{!BrG^HscGxYjR|csFnu+6C*v!@1#O)2(-fYm@U`HP%>Medn14Inj)S={$k!dd6&z)J2Y3}@Q{klw z-wWQ)>{oy*avlE<84%22g2%wYwvNG5;8l#*DEz#_>%se({YLQ8*Ne1rbTLiyZ^2`Z zar_$xAy~u&KPmi+!a3`Zgv>ry;iJLD?VJiaDBKZT>F5pZI0z0o0<8zQAkT5&QMk9l z{lFub{XlR@d#Ah~T*Ww&#n}JLvIMx*3SPj!sjbI3f$#br~Jj> z3dwZ+Uj@O!e8(WI@Z}2EfHyGvN#H|_uLAGxPHWp z0zn=LtOH314l=F)?_qo<_yFVK3ZJj=C~)2hj{l3nTflbxl!OrMX9j77FITt*e2Cdk z0vGpiD!2+9WjqV46*&6q!1)D@*Z+9_&lWWHz%2^j1}9ZG?PORR5ODpcn(_$2N5&gBLO$1-^^%g;8Uj9# z$AO)rzTpZmpU2N(siuHkFru5yKZB`7Scxqzzaz(LfaL4J)BtI}2~0iSo$4nCZSTYv zPnf|_FttcJxD8A#mb?v2Lm(Y?#$G@zl=^;m;rE$10O&I1rX3mSnv`YF#9vW1>l}SUkff{`X%6DU|D_xc-%JZ z|MH~qUl7!8cWy2p|1vfUu+&$8`+*~(f{EZNre6Y{jtT|}{RS$}0{9lZhUrgu1!r6a zGZ+FvTjsD9+@0~=;9>mYt-*G;m*aY48M?l1_3Rn37KNGhoUI$vcaJR3ZW1$YCvc8A!mHN5o-tPOD*PzTOu{496`*lIuZzzY!ULe|Qqct7|s zSg!q@He(?|1t-EUtz>2360p=~z*USFfVZ#;|Dx~`n??O_xeS8Ctib)?m6c8l9t7u~ z>F_FrpHR3CT*2(01(ywV%D({Ky2Ef<@D&7m(1PBgg`$LD+)XeUc(lWN5M2i_JPlQz%)dXp90emN&Y*ShDh?W z;4;SRzy^((Gl;~lRd|28qf`!INo z@rU3oj6VWzWxNMWLnZ^>3#K8H`~{eXK=N1MK4AH&T9?<6eORk{)PdPwSOnng!M?mvGknBj!Ezs0&W$wEq<2ZrlWdfI=X_EHHHu zmIaGn1XB;epT(}F_<>@k9|EQxllr+}>M>dV4KNLvHBI5a!!le4fUT2MuyHN~G-lGE z9!yDhlBn<`)?!+i%E1d*(hgC$61<%0&jwE!E_)bnQ~=jGY-oSV7HDG>9t+;=6wp#& z?HtG9cyJfS6TtgMIQq%pLyV_qG1lK}vIIHWY_N8&uVa>^ zPJ?DMM*in$H!uP5TyOy^a4UE-<2%4hSq0C7=P}+7E*a%i_)mqubC}lu9PI}P%2gI!!u`SJ=yLmT zX#>G2#$NCgu)O(vv0!O`DVT;>?7#S7aR?SdAUBJ7f@OjE;3{@Y<_>V`RwsbJfbU0n zYu+Pg)(e*9Ujb7NN!|qB05;k|LP=IH1k&Ij_-z>U5&9F~v{~wlz=!W}9QFqP0Q+2F zKSHpyKcDPb0HeUg@8SAiK7eqYEwJqo&>S#jxpZ(Nn6g^(&EOPRZr4u>mijedN=nIV z!IZR;UjVOq5Bt9qyaa*!eTO%IcQAex{M-kQ{&ny%A3FRdxMY{ZTfx=BJ3Vav4%j*B z8{PvSHulN_ZM4r91-Gc{y3^+&oufo58 zM=*Vxx3HUzaqQcIr|fnXCjVQ=|2a%>2@Do8o(o>V_$hE5zXo4` z@+VRQkz-xo#{4INeYmvlZ`%<{?g6F%CHDeTfRYQr6rki{Fa;>NFPP^*f3S1ZHw-i& z;3p7XWV;OF?5 zjaoPbNlmlHxD9VVL4|TwwVRJy{NNMdB*%s8|Ai1xh1Ob)Y4jCl0kxo)W#H0YU=`Ak z>;j(wdl%{P|2pOq?}1|!ZVw*AdZ-h4RZ=vV_Wy1WY>@(R0eDeL_6VMi2iGy~qwoNQ zOTohsV7>_OLNEnvA1-YSxKcF0pcdRH1k&JUFgcKXE0_<#03hYf={_XvLjU#~H9BnPQ+%~XyJ$TrsMcQ18Tw1qn=u!muEh?Y}B*6nlL6&uPbgdm-j9IuVNX5qF?bHM->dK!;6u#5<91D3 z4|}_QxHwJ->{jCEcftGiIuE0#zy}yV2@ZbdoP>S^9u4-0fZD!;lg{x@1KKOx$!1YM z0_X~XmlZfc;hx|!rY{0dVcZuy9Ra|V)g$MDM_=It@F(z6#$zmQ-2d_A0mUE%-hvi) z7cH6(E?FoYy0kmMJJ6+_gnpf1AP$%IBAABAK5+LNOhX`fBe<=Bh+UA-7#<)2wZJ;? zVp8xiOy6sV%~D?o&V&9a2&nup!BT$?cnUj5JP+I%_T7a2HDH4TvcPNz`h$-a29F4q z`p3XD=8~TP4`cSb1xx)WV9E)}pMk9*vIH*e^Bu^){1uMDelkFp%ahK|@7gRK90$G! z`T-D7iw6sq`U>!C&?5yb{Y1f1KM71jDtYR=$Un+*DVPoe%5upw!F(OK7VI4OY8IHU z19O<3)`7>B@=r27J#q20p*UE>49LM=#laU$PY%9P%74T3RKDAL*$p@W>>TwCMo$QM z3p~t#91K+)3}<=@;9RBrNT#Rq1~{);_9$*XWV4~&2tffem>OBn!Ms8D--okk_#f%EH=}!*y<0Qt8(vo&zR3)zgPhk&;z#03>0nDfAWQC`Jd6Lht z%Uks$P@Gahz$1+H#Y2gh_Z84u=kay{t5HqlX1Ay-*g5JOx`TOxdN4heKZD9Q){g+rWCj$#FvY<+OivE32CrZ% zqoMHsfLAg7jo>wm=Yfr#OmI5{?km|+3+7|C80;KaYQemPlYg=Us)7*>*}cr30)Acb z_vVN4{L}J^rB-qHj^f}K#X-(4CmiZAH<$->6w^}xelTxPXqVIf@PwsSaWF`6kWn0r zXL>4Mt(2e0^c27nrTj938IXhJih~E3o*cZTIM~MYRDOq2{(YvW@~++4Jz(e%I0u$m zFz>>4OivENih~%_QvhX3`O}!5%3q#c-q3280Xe8u986|UooJR=RzOmgs<;^1?prvUaV<-cZn zDu3K3**$nXm=3#s7!*LjyYNI|Kt|-?EN~^;8_rSqJTTAt3s`vya5R|v|9fXVb#W!` z{}-bI+AJ<+1*pP5lS5YFEehWTp3U@kf)7q|Hm^nCMN=JKM&+qB){(0%2RF8#B76V> z9^v=6aG(H6#D&A(tO9m%3UHg^a0kA$?Eq0oZpD+!wrlo1>3{ zjX5aLT^J08pe-t-4-(12Szs^Y3&CArUn}(Ez-}qfy=~crkcR z%zlRy*>B#1{Bv*jSU)sEg70Ba4MvY!4n3dZfdudh!DoZHy#b!L%%d$A`h(!<>pa>N z!LNLYPjXA_pZD#E&r|n-zkz;Oj_rTieghv2;>+b5T(;n0gkCw(V|_$I0gd?z4zKiR zJETMKfxmmKU&AB)o&T_J&CU|~O<;N(j_kpE{)Kx+_jokgLdgET1GpM~-|6uyjCxe~ zjz`;o5AeyL_B-5Eda+Qe5)nQKrf0Wg7Y_d(AHTm+sI3cd4C#8THBOJ>{`X03 zaJPDUp|(gkxE@TeVv)QTOy6GfAS-EzPIl*Lo)0|MgT%yNgXwFzzas-KFKFy>!*Xyx z1iZ`LJ@F|>n<9Mo*RCJ{rf*1A3Z6lFeBEw~s9-&q?v_^zUfTxzb_#9))1z0T z1;{j4uaQ?RQqXPm1waM3XycD zE~fxpK|Ch} z9x3c=!3PJNWX+O}STCOhS3QORMGuV*;kh5yfMsBMACQ=K+RxxayFB>)7vb>QaCVou zBXHQhNSh;CG!$I7+oP=$vtT*c4VLqI!XS+C1}BN@zzbe-0`C8N+=j#L`eIREk5hB# zd%{NJLec*;yp<9KFnz5a**rLVR_r_jU4|i$0nh#;9_6e~5L;@lj~`@Y9|o`Covut8s+s}&B8IS=!C zr^ot!KN-}44};~HRh^G9gag^)=x9uG z`IEBOl_$YlOA4(3se$t*8#!7R=J3QR81uqHZJ!8eH<&)D#6On9fm0FCs3Pla_~amX zHKx&}g&N|p^tXfQL#%2s4bPsL9nj-ozR-0vW?`ufW8Mn~L%{pW3NtYbl4~xrrxf)z{F1k<@_!L|Xo-4TSMr<}C(IU~s z{pKRz3!H$bgXyQ+=^0RJ&_iH)YG#YwVr?&&o;9=l)Bf+d2}v}f$l7kHKoyuCk*pA1 z?mvA*#F;y zfL@s-7ow5{XaVEdV0y!m)PHstk`||6@~rtR6Z=0-FzQ4PwZ(%>^evct-ChTVgXz0q zvrr*5@NO`Dk*VKN+E7c-X9gO)WN1`PCu}mNpMk*#EUUOqV_n`cEJmgCz!s%ot9QUSD zaWns9_n<$-LeW?#81)Ce>0mSwuoF=9Zi{vMsbyy2HSV+WeKCJ99Seri!FW6hSLQVX z+>^~71Kj83dn2h>43i_1iiQ$_w2xF9^ZlW?HxmuV!GW*MHOC8tLyOxTW=a@(Y2A4JpO2l1+wj_dwxso5!K#kKAQtRwLtUs{?Ko<_tAX$ z4J`-^J!>3!0S>l)1rD`74`?2+ z0E}jKfKcn(6;j+b=QXPfjAr+skUu-x=G+Eoi_2S{gAwUG2WWteWON>ZBHpgCXV*)?r$u$KF1+Bkbr z(*?MF_L)P=_Su`MWp6Y$6u#`;w8aXt_tF;4eKISl@jFR!1+Uet~CtRJZnQ>WY zQcWu3o$8$)oRF@za?5;g2`)GuEOUFFdF2%MrCZFaj@GA{oAUIV+xUC|)99@yjUf}J z)(lQ2(~~C`|8Zoo&p$0bX?%Rbl(Cc3>69-rE*iykKoVy@>2Nrb2_}bVY+q_-?T*As ztE;Egl==b@UpVOZg}nj4*YEWO{m}?_(cHyN)O%zfbj5sv897StnD2-Gm^Tve`xD_% zFz7S?)=q!u*q9I33(;uQ?+>RU-l&<=Lw_S5Yev$W_67sqOe~N}#%*alkO+lvF%-x| zLjhmZPtq;NMic2!C>F-WkT)8FS5G&6etsqv4hC?Q9rt1N2}62mo_><~a-M#L`QPL8 z{$^!wJ!sY(t5;XHuA6+mBR7#Q*dhUQ;<0+sUHN*sQIoDo*3RIa*G&KW0?jyXWo-T| z7bA{1hRuZ$%JPxr!gL*rZtLAmzsmf+x85~Bg8LNdL?jZ(gs`qB6Xt@p`oR25BASZF zB8gZ!8TN&JF&c+ic7d4J>y3ERk$A@M!)&#NXqGwlc>TEigg+4rdE@Df*N=<~iBhDx zD3J^$!U?Z08cC$%sf+@JOZQr=`b6&YfSqu9PN0g_%Q15wVg-{EC#6I2 zNt5C;!ZCB}saW>BwYqMWU7_chw+ztp3x^j^4W)`{`KE?o(ar>7;RqJmcsLjiCDUQ^ z+$Z$o&0jj|o^orXTHKaIuVLx-1-!9PEQa$CuP+dc_{^Tvj{gqU+nF7@>eqE?YJE5F z>#Ap()?7D1KdXNz5XdCsxWS2Y#%MYb6{Fl#ZN3HWOU*o=-qvV-8);?<3PhXf-`1^! zL4WD-N8HWKD|_nQO2U({n2en;d2)R0_zAUBr%c8$q@(EQKr|4KC!(=LGCD+~CA_BA zjCa)koQuCFr>D^0mzsk+>c!^Np89Llv&Wb-d+B}6Q+w$F^XtE0dnupoZfnk;jN$&E zm)_@3EsmZ~w77{5wf2=HrEu9p0rqA5 zek^X@pfBCpO+VVqZf3qvsGrjE6_i}tS~zWJZoHcr?!m1a@8&kGD<9K6BfXJO#uuk6 znnW-Y@&{VmLB3{|BlEf|+>wrPY;y@eJ_1PivF`f3LoBfo#$ElWFX_X{Ox){_;r46m zS`ujGX;?G;8N^wb(VA1a=6p1h7_DiEfm_{?|ECXf@qf)O!@2T~{Qpm^BF$t$)4gH* z>c)RWo{s$ACrYIC3*!-Qz(rf^(H2)L(Vs_Htn3ZieC{G_%$dG=w?QrX6A?Ax&zeg8 zLz#Fq84ZTR!DJ#CNHw?nJn^jF)qLwz-D}S9<+eA+cGll@1-<6ar|2HqgO7dYtbTey zju8!El@I$eF`qvah@~?}-p}mOZLtYrY@298Qx1$KZmWp7(n=3aI1o!f*e%Wclvr02U9)tL8e(t91V=mtFBHx<9reyO<$oJ&u= z9)8FC$0offmmVrQ*v{i_@% diff --git a/artifacts/test_program_methods/malicious_authorization_changer.bin b/artifacts/test_program_methods/malicious_authorization_changer.bin index dba3f3658acd0c2a0cdc4e9c6305edbc50d15a06..036692559e597b88c0e4d20e9c975e1c07078bcb 100644 GIT binary patch delta 100296 zcma&P3tUx2_ddR7&e?~Hh{#bSR6Lx`O+-ROFfVjaK~gj{Z<#5IcPUZPtV|9bz)M=_ zsAGkNrKX9dfgUq6C_ytbG&3{n)wJ?0D=h0(Gx^V!aRX04f7Yt5Q9 zm%R_3{k>h$jdrCS=(uNAhlcoOm)WF5Ns=}{y}I9|l-L1O61R*TDL|44lK4z2#gDVA zcV4L^iQDW!FF#ME^4oUYtG`Ji|E|1;bo2_U8^kO%QgS<+Wc6AqyQkSDwshbpEYmxQ zR1O>Ci0r2lf8)z3+i zXWAvJ?~2b@g-)`u7b*^R?d1s2;Pj#eLI<60#3D*nbj6@rwM zTug>QRxPRT0!fKft9z4q|R~d zXsdpKCFiYZoT-fq`J}ZhZ(BHPXb~xFc25jQ4$Wq&Y}JEUte>4O|B7Y#rO@ghS*c$n zt?tV9`^^+qE4>pPtm}<>9h%;ys@_kr4gq7SX$w1EcF+Blk~B?n6}D5;56U%DT57Ep z2eB5*C}xq`eM-RdK}&0iEV-w^5XJI^b{~km{`a!_fL`>2IOf+n(%wII8jP*gkp839 zk_Bl!Yv^xgrSH$Ee7E&|ggVAB+auA;W}QkMUTm4QS0MU9HluE{Zu{y#*=g%Jd&yT^ zmAX3K6hVk9B9-V`>G=+b(B=($dV|I$h2PC)q9!Cz$@`vMvyCMq1O_4R>u1FH0gl`H~BKHI<(KW$J z%*kNT70?yX70|<#7?P;OZVFQ3_5>+5@YqiVD>k&Dww2nWz-l3Z%n~4R^t13{QzTK6 zWy#6p`O>A3eN#=HNnnoTV-X|#Qo!4}TEQBBRmcFf%+o?hbfco!_LyDaXgs_|xfCi- zM}CA7y(thWgieLfg%G+XT!FHReNUhgUQ-aLM4l83R;FsW#~%d}fdf$>5CsBJAW+r9 zwkZ*X5>Y4-WfDELxLXP5qbRSqg%ZV3B6ROiD5Yy$W`>VOlV7q>DEJu+2pMh z#6qiRVn?HPB^GxavBSiH!Wz&@VHSz-Y++{SEMb)oU6F;suBe(|Q#859 z6`gvI5{~|gyePWIUx`6C#lmT0FZwBQoBYu4{))W@&RN*b6;aa;mIyXQrNSvs`YJKk ze4$tiC9ZV~S0w47*f#m18-3A@zNoLj7ZN6-uM^SNiKZy@ZOlnOX0b_%9TkV~@lzse z{FLa6emOzs+MuAU#LbZu+eE6^hfyUa%%sGwrl#$_l56K6$@Inwgqvds_l4~+bWNI5 zJ1(2H_?ngQO=i=UL1raZq$|uYKhlC@W@v;5Um3&80tOikBV8dwQl!Vwph~xZ&l_|L z_`F@)R|uK~l~Pl!uNQbID_-Fxx&RZ1SszX3QBMo-2wst*yssbX7xlnuNDH>C5GE81 zevk~QZ%asqbWlq)h;)TWscFZtmafgd{>b--0BCfDNXEr{xC)>Q)Fr@S7c!;Q&deW z7%^Un-V?9H)Wj>XCkx`0xQp>dV^�By#jfyXXMawwJ)1P+f_gpnIg5M4=-Hu4ZQ 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 delta 100370 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 z znS}4~9OEDGLgOuXrSVo=WBe+hiB1 zn_@XHsGDOsv8Z>(a$ZsIg5|uT-VI-zH3fMTm{Via2K%M9{yE-QEN8L`3gz7Y50=AF zc7eDbZ#0&}PJI`a!%XIs#5Z6$s?^pn|vZSL4SqjFRf=SrU zf$OkeYU@k6`I7+^QYc$wCYAxk7b~{dXIKWr28*{~`@PsD<{t5UY+qYu=TIP9Aig@$ z;3g~s(p^$z1|Xa4F)SZ;)~i{5yTr*LQ&BrCA9j}da%Mc;S>pro6xuJ40rL7cnnZzo zCR`J)!}6(V*~ikrB4>?PWBC-dUYx#h*7znIf7U!M;2sdipC5Pr36G(Evhe)BmV$y& zT9Asi;pkHDKXCqK-hW~F0D7`;7-IPVx>`1keC}M`1j~oh)y;6}<<4^b-;o0Ou(~F+ z!0ku+%jscQKIN|Q-guCS55w|_d5sUp@`-!(NGzYYS6_zZllihR|5MTB6v#eFmUL8s z`Yv)Kk4XG3S^D6!a8h^g7w%h zwe?5s$oys(=|iTQTc_eRDkMpcil4D;k$4W_0ef(y;Eane!!k#DO8-(}3k5O>HKBc* zRJ_Twfyr1lnRc)l+YU+@iS6J;ER(LM>+lC`+uw6f*M7YI4B!R|WKwN#6`sSg&kI;l z8Q`y2CRwSAAJCRpLrf~oAB<&^u66Odu*|6f4HW<&s{U`Yj9>klCAI2?MLz$$q#;frlzAr&L`~$Dd`ucz2DJI^TQ1)30 zc6JSvQZU{mOu#cSkN@Hh9>b5C{P*#2lV67y;wCPC{|>xvsdV=bv@qM5aGWux1IJ$t z6}Z!iJ9vkL@3Gz{|BjcN4mxm(sA3b3bonPcOLH=7PQ|hdk|iCT&OhVFY;ggP@g&3+ z)0cXa;`>huw8C}#Q#Pr(ihs%^Qs2ZsWs<3H;h(*XZ^M0z`M6;;-uNyo-^QW!?~(h@ zHKu@X5so$*&%)b`AH?!S9NNIc{Ik;dQ9R9f9-d?T6qZS;^|R0LZ<&=^u!w)w7|WmZ zWKwFJuNR88;$alXr2EQQVNpB%o%mGFDqo+1j`&t7GD20qd<=9WXXy6)tmUZPuw(Wf$ha; zSL~PC`YF3{$HXp*4@1tBtFY|S_%Os@H*e|v9i#gHA0E*Me7I~Bvk^$>obQ9joEdwrgyX@jZUjOTvC_a&p zFvXpj#NT5Xpq>f49K>xi&ZSq0kHj)S_3j6Ar%ZgPi&vQe%3=Ok;Ob7yza{r%+)D6k zge2HCd?~1~5-+^h=f8t5b+zS0_8wk#zmIXQK@i%=ZP+*I2$m%_T(NV)=$O_4io6HBGkJ zW^8xa&)6@u^&NKSiO1|re6^FqbSjqqG9;z>`mE?T3S>lb^^%1B^0@k8owa9R89-8j zlMt2xst@4BrmUgXKL^Ve(fYrb0m&B2+mEN`3@BdY^?w@*T8#Dg@kitFIG)w)<59Rs zE08}L&o>^6Bl7jGc9wI}Lppj8OZ)1FaULE_0qdWR-gO0JPEq#2;h7)YhNG zsoS0zoAVG#*02RhvPC~N`LYH6#_~OHEOP$mxgG_1bK-*7sr?&wn1lUNTVKu%hcrMx zaR)n?xOC7xs9$K}a{WJ~!SpW`&JHS+H6%#4we=SmOa6^P{uC3J{9BDBe^HQMt#Mg@ zsqlgpAgS=*puz?dm;A4dC4Waw7ZLn z>=w$C8-<4Z4-(qM1<6`Tg(HIs#U?Ht9BVB3BZB-hIUYkWTO@dUo z-&iWVCKZzL#rZ2tT=L&Gmi)~@{?8^Z`M=-#f@Z(!`~M zVq?i49OMt};`^r`CQ(pfN>Jfe6PNtkjirP6LH+_0m;A-XlK)8;*57W@&rE_;_^+{4 zkUJ5Z-$d?A8kXAnX2z0#K#!^EY+AY;j&5adrXaml~VSn}rv z`Ps)!f>e0YSSq|5RH!j=$^Xz;@_!HV|1@#QuQMh;Tfa{??o!RUzay@EDC0J2D(Z~w zCNIE#;a#rW^GSVuaM{(wWk9C}^-ni(=6`MdKvN(U#sw9wF>zUgYmFs;PLThIiA(-t z#*+V$&Chb&uQdr$;d5iD(40SCjcQosX3@^rFMJ-rSn`hu@{clcY5!>BtW>xxsBpPS zkO~#XlK)VUKi9-1|8ZlLbmkt&fOa7W5{}YMp`b&k+f(rFPh4evwi%5P`W9gs^wp*yXiA#Q= zvE-kD8@>N;kV%jV=Ne0eN^Cp0!Nethva#ep734o-;*!7UAhZ5b;p3pfr$L2v#*&{p zxbc8;uwVF?jj`l+3-Ws$?6*JlYU>XUDx4KmILE{#|2$*q;QAo{MiZC(DaMljST?Be zgh`MJ^Npp#sv!Se6PNrNW6A$1$geeV$hWgdG!Fu7hfU?d zK*Pdo$zG|rz2@@bRo?%1R8X+)lSH8%~)fDgdKAI-Qf zcOC`U@Gb%g?8P_L&8^)#cykEqd$Y;;UB#SoU z_7x42F50yhPt}O$%K1kUdQ-46E=W8K_j}4WI2_NK?>!Rtf7<&pECWoIbaXk+H?F`1 z#^bPjxw||6rK4*oSYi^c#WEmmuoBx35Zr)e4KzL(%Nnb1#+ocJzVi-;^Zb8N2Fa3&cEU4_TjGu6$L9^X{ufbDxi}N2ONArw zu55C7W-OcZBD})HN8oPH`utJ2(0H`O*##H6`u8~}9i*e#Saw;m@b~{Y6v#f)gh%j= zS9(8&Ws__C2`pPkJs-;!QZK+$FZ5oFWs7P2IV@W&Ub3v=5(;FKXu?t~TR{B^uIA6_ z$4KFcXfn}0v{@d6dcB`;oc%)+-U;lpyDr_+ca#U$AOR5;VbCI4(=>ENm$|7sJL{E5br|L=zU`1o%Y%`yp6;Xz}m zu&kkitY@?6RTG!|*Nr8AeUSf^iA(-BYUy7pq>pI4Nt5=d8!tygXc`kmx zv&J95efSldd`wbmXF4V;U>g)r9cKW4a@KTX#8%R-9`sZT*7h+(u>8DIvhc1aEI+TLJ{!x=E~(GQpPBkMXDQfb=D<|E+Elm$Z#2FWZ#BLf zcV`Qx=|Kj(9LsMuX@_s%WyWve4aV93P|(9Puno&BPL_1^2bNi^{tN4mK1qk2ixX?S z0PF8NNqm5_#?QnushzXY*%asxMM;G!XO|G&gk>M9Z^1Gr)VE>%@hGXk#98A@u}ot1 zD|k8HfdcM-c$0}M(1guc=79QVER#(A3zmJT{te5lS8vC1RH^^QGH2BP!*W>0i(LOx zNAsQHT7Yw~9M{Q`j&{JZkJUS2*=6dM*k12*v0u0x8_S8Vm&wn{)vU-Q$f@xNW2tbS zsUZ2~CNB9G8cY5SLH=YDm;9T(lh^-qg9?xP1XhGUN*PNBD{&pOSPoM;RsZ9htaU1i zj^V2Ml6$d9{1j)6m*PwuXZ@vtM_hp>Jcc*1iJMX&ld1;GFOChTZOJb@HnHX(g5_7q zW>O&W>CPITA^FQP@sGAh{6Eg_^$%|-p%aV#ZQLuu7WJyK)# zvZSN=E?>O>OMB|Y_%6(bi2GX?Ti$;iFX?DK1=4}~D=c$B{SB5~q~3&O7pZ^5vWe9{ z;eN)oxZHRfUXnEhe^6jQEcO?cO|A|8gZ0PhWRn)0kXYkgvFsA{fmn8d`XJoiyfEpB zvtN<08yV8z1r&(2!VoO`Og#*<&l)@&+Y`@7?3dd5702)vOY-A6!6Tez$MQ@F$Ga3S zE#dutvPsUQmOSJ6r-TG1p-eJ)$aI-$P>%blxbXFi>mwE2f%zG|2H%PMPxO=UWh_6v z*PaYH>~`vxIH{0|TJ~f9%Wv`NaeXNXVoex>*S_J8>-U^B{=Vd|@cC=-rZ>Gm!E@g7 z{tW+Pw%~uW6qHQxn{)#nX#6!UH~tpOj}9ga7cX36ycusW{u#@U5o-P~xDQ)Mo&Ajh z*<@O<9ov2SH}(tP<8c&cKemwUL)k^``tqh#9G`e_e=I8ypC{O*w_(`=`EuqYz6r|~ z8=p8E?OV*_a4K}6L74+Xv8<6!l1H(uk@`Cx*!m$(5{U|BUBmyGEg+MyJ&8-+&d{AKyb~Vh{U;Mk+!1GtJ7c>= z3vk1drNPJKu%N**w~4x%1nKZZEWclwENo(2yvqADyv)q{tMNb+pNI>tbz6kv;4v&e zDJcu{KNUSeL4OkT+`R_(F%|0ZP`m>btC~I4h4SU ziHGbGHqkVClv#TgCnnhieEvB0Em(Ge&iX@-W7gxLO_KOyShk2x!WqZ&DO=1%FrMU( zXn)eb?Bll@MkK>%7X3#Pgv3`HOa2eIUri>C$~M`8J5A~s$#VtSLTygwsTz(4fRD!I z#v}0ff6< z-u@Kv)vB%nh&>zYZ!>9uAF49|DRHzKYl75 z=A4pPE9`(}4b?kg*#hd8ShkQl7msq1UAjB=OKtrgVqJgPr#&fHwm#!>Qqf_!VuN>Y zTxB{q64w|PW82}e*f0DAgh?pvt)@^W^@%6&`bRp{Q|H|jNP{|SKgQA_hkrb4k2ej< zfQR79N`DV{8!rAbL$)lb=+3}*05BPn&-T33cp9ju< zK|#;&d;?$OmraMel(I&+wd?S3Jly0TC2`|p@donc%qU0EWw_`^-~JW2hInog&qfbW zFv}!7;@qDE*=PHl-Z(4&RKK;Tu8DKj463cO|-iYgP2MQ#AmwzSJ_-h`?(h?u#tntyff(BbqAo2U0H9i~5iAp^O%TeXdzv<`^ z3gocTgvYQPhRM=2dIHN)pz--wjuQ0(EVEj@7|T(heh$kIT&tJh{OfRX{^z9-1qD(N zFX`wNTx9$j9%{S-k1~E6&oy2pao3t$eBQ-=;eA3_zOFavKWY*U9*~O9-BZbui^C6R za$C(|v)Q@JS^T}94&vjM+vrhPI&4l{Zrh*1GC=iKEJw{6SHEx&?+-Bb$6~e!_y4Ye zY6@hHyEy-jWetm*KQwC~7oVT8ouu0W|A9A{NnD5fY|YS`EU73pfdABHGa{B$)Qp0y z?DKdHIQ6!{%gr2Ui{;nHlZB6J;g!Z2S3ik2jrPTM7wm`q!rON6<}CXlS(-!-oz91g z=&+E2RJv*OotQN!PA9u0?_az_f(~^ToQd`4&}A3Q#IgeMwS)RU;cYm_wb#uIK(=5% z% z_hb1%cWrP^;70?`!};5M{?j<;H}A!`#Q22)%zs<3EJ%12%df^KODb9s_-#Db#8(IY zKfK1o*987VHsMy2unsr>-FNsU?qvKeE;s%WR~l~({9EAdc$Ue}{zJibQ;;6Wdj~!euQU0_ z;Jm-IJ+A*JP*C1bz{~5vrw1O0hnxJf@eJeh178^UBD`Gl<@!I8g37;jL_8kB+l;To zYt4yfJl<+N0XOHcOqO&s31_f8^^&XMJZFtRh5Hb1K>_Q}vsqW532U(&=jzXKsqq(h zgz=Ynx$#E4()c@U&xAi4TEoEIcb z{6GF7hjF2cpLinQ@52D{v78xi#c~*H{9`OzFkh~Jl8}EAS2L4vA(l<94LpkFIG*o1 zIOk+e&2*qwyV+RQIM;Q!0n1^@M@8cSw(8Gk$vH~YC0LG%Jhp$Fa1{kItLM57nx4W_ zF(ye*=NVWgS-H#K_f+0KM~8d54lly8OY}+V6W9*8?`e(wv2#|}=+e^02|IA{u?=h; zNKbB&i${wy8c)*Q0_Witbs1M9743N4*BgL%4dQqWMLAaGYa#xzifml^lM zYm9pb?i=_Rys6Gy|4*Qx#Xo+;{c*CbtTSWjrONN&LdAbYy253TS&bK%N9~spULr8LcxKQNCWFh5NpC$ST>pZ8(f9k zQy}@dXC>D7?syJyIkQRpC})iyjb#_AOU`2c*)!7#B>06-He-8YDmptA@1m{lFg)iR zZm~F352ccvh`RF(msuT6bRL3bQucSAj%Ak>IG>U=9m-)f0^0$NGI2Rmjt&Mi*2Ja$ z?Rbe}yT+&TIzSrGGh5|(JQ>CDbG$Tfr!)0s051j|EHiOw z|JBCrXQS6mf;8|2o@Qq0*MYyq8%+Giz(3*kd~Z{H>Shk?If$c#m!c)I$(a=wIYSoC zzatwJ@JA<{iC?=)0$-KNNT_ zUTN~5z{NR!fY0EmiRJvycfI+7*h>O0#j{KU%kdK9H*t%mzJpa_`R=ZG;R_D1%n5Z3 z-X6cSlm22pg{IXrK|9IId>>*fee-on+|3GROsg158M1(1OKFJNWL7_JDt;b z7wwujS$~-Wttcok`>+k3XWSmw70O8MqiX z-@(U^!)3-N;VEpPWJyP-;5Ejjc%$(E+&p`uuW%*>c9NWp{ld3kVLL~jl#35*G@K;a z=abLn@jYwYDV6w3EJwu(7k`gkBm>epv+EF^|2Jm3s*MxbEF<`HqJS>v3JY{1ubx$sjwSv zzoTz(4_s*64p$gw@D$_DxZ1c2UTK`|5ftF1X75d;Z=FE<4D7nSD7|*~N=R0xK z!VmafJY44(`LE;tKAw%$po-F+RUK%j|3ulJ;_&-<%sQL0$ zNHPF*6FeR#E09e`2f6}HI0#=yg8qr6%vs|X;5&$?DUdC2i?haW!_$eUTzrYM#+PE* zV(}vH|9gc3nRLm*`}?t-#VaJ83F`xYh3iZM-{HJmzezXafyTAC!ua>Ve~Ysw;eQm&!rk0} zO3M@L8lMq(5MD`s{6d0Vvcy^QUk!E*Z@6F9l0n2TOy5<$>S8IlFftTNci0xYYPvJk$6C=i*ed0t1FL zjt?4=ZCr3J2`fzl<#=9RhonC`9ER5#U*g<}3^_`E3gW*8{vFp*zuM(rp1m+BNP0*` zR|UQrXIlFKOv1yBZ@>$Ur#Kh5HEubyalBRFY-d_rYt8J2}TsFj(XJ zgZP}lkKm{cH>GZkKX-O3%>Hj&5Pgk1QNbldn*#rcOH6z#uH#fI1Cmp5yJ4Iu^E*U6 z-4?hMcbe?uGw~SW$-?XZ*{*_i_;BFI13!ruHZ;I@#o}DOT5{&hy@4&$pO13CiF z-BUZ{udH~5TCRV`*#dl0;8XA#tw8)=xX$=2T+-HeP!@P_;Gwv}cvIjX z@kEoq71tU67Wl6QOaBbu9}4pJ@*Sox=8Z^Z4ZGuhCVns;V|-ZPK7sqGM^kxTI`>KCv=a;AJYakBoh3qEiOvO~llVL7goB^|BB zavZBa$NllC6v%PkY(!#>?}+6vRJXu#m?lfpXjeRUvU%4^D+***YlYTW=72gM%Pvv3 z!<+D)6vzOMch>lcIK>u7yLg4O#>e3%SrSq%;bAGjn(!!=U80_c+hd&*A3AINV_ZP| z5DH{KsY?=TJO|4hQ15`V6%=%L6%M9AtO>oa%mH-~o{xJ`ARS!jtnrKRm&A8=@#)SQ zpMhmgsPDam>wg^uhr0@|lOWcFH?ho8^-3%^smanbdI#s@<`l?H>mef>-)0|*{lfPJ zV0)MS?EudIa$DSoEO}{kO*xOvxQ#Aw{$L1yIOLW|-R2@5vk@<8U{#MXtex#@FIe4V!@PjKF^3`+shrz;2QZ z4;p0+ikX$NMP`lU2L>6CZh^_B0a@dRaW~@qX;qHvR`e!L7QWmza9iBR$FtEs6b$qQ zQ71g!_yFflu7klr{Gz}k@GMjRvcQ+)jSX@3|5c3&Qqk3TTSG!BnuPN@`8B!$4>z6? z__n~)@EVhUx3ygVXHu}$B+SP1nf1G|#&Vdg#4lrcDJK3Emvr_6+K$VO{|TJFv~j#C zp1XgC_;1ZT|42pWQ!w5%aADw!@Kh5YiB}kp!L4uBM=Jc13eMTj4{#1HVp8VBE6_Ch zkBj%``C~k3nqJnp!cKu(;*4pq6)vGey|^5SXPWpic&LeAil-XS#HDNjdHxWOX|^kf zXE|GB@6no&#P7X8RsYRgXhEbxD^?1H3!628&`SK%8xpAOo` z)zeY#7+#ndAA$Q7_)T0K__)CRaHYvV1^40COR~*e2jeN|M1kHQJc2iwHGB_m#~S|= z=aHZ5>UX-FU1I8=hRblu#jnAGy7~cU@tUr@{?AD#o9u(6fOJ{-BJsfM0_Um0SRST8tO<`|In31a@Ic&>0?Gf-S>qpLIqcM*;tH&DCg+O88sFgx=D!@5 zTCfuda#*QbVmS)bxmb<@_3n5hPE#NQI?7q&M`M}9>JluISbf439RImYnkJM;17k@L zYr>USX1RJimZL;H0n1^eo`mHnP+y1TC{S17i5Gg`l%?Q267(=x?5q`@!!oPYOK`E- z$4fD%d$%-;Ucr9hJEO6^ydVB^augJiB$xN>Qv>)zBIoj{uHeIgJPW3SctAY+opvUl z;pD_Il}#iScI1yvGJyCnlV`(NF1P(${g*E0XE?Z+$)F_vckUnLC`j`8mF!XE2PA;ES_WHRe^89 z3r&0~UTHiX=M?%CyvLaN&odlTAbtRsPxYVS_zhPWpL!*;+B7&I@R_*E#Lo?UKAxMz z<@%e7E~H>Mvs^DGx8XX|z@51LL4FPH4LmFGgSeZ?pNlseKY{CFyX*fm4F$62ctb+q z=W+h6{!I2I?sl*r(6@oV$0a8I6P{)KE3OvD{nO!gSI{Y)Tn!Js$|b}ziEqUUd=%bn z8ax&c?CA&84{tDAbS$nho`sj=hR^@KMZsFrz&n9!0)L2y9_l+>8~AfP$HX@T{u-}4 z)I9&+L_r~&Sm(g*<2d#9_8sKo`Nn$%?ijc;-e~f>;9}a>8=f=pyjywwuN_uW(DNwY z;f;8S8PGyJ%fz1x{8HeT@j{dTI^JabHm=K>g4I%B{C?myIJd7K;HS9E_=~__2mTh1 zGWkE^>@-ubm4YS4zXkp)@ISc5!qpsqa^guA-a1Xf zcq~^lxgVJ4tnsI?95(7_upCzEMOY3ybv0gXuJAnkvdbp={sBmRwq7A|3z zYZ7aGH=JS%?d;-5IBWbU+``01IBR?q-agb1Fguz8IkRcPSS*L3`bsQ^je0yj9uJ{F z*5DCmjX#FxnfxcP97P(RkIhYPHd;V|Od3sCjAhcOpTjaI)Jw3;8TC>ub42|LmVK;# z4a>z$y#mX{ELnK{`!)sk`n?MKg+IMwd;LCgEPqnx%+`XJvvP;C9m_tBCn+~9HKxAY zp!|-@kM@5_9W)_v+=smWKhGB6ay*j}>TUKdcna2|pc*fs!DLBAF9u$Q*P8fi_)+TX zP4164_qL?Htn9TyHxUs#>5ZDGmMAgLh>7~|94Q(-ZbzMUSleJgEt!IUdLf+d<4$>m)~N= zSSD?ZOV$1HJj`F$;w^NQv&OH+xeP!(5z8c1XK|tN z^;ou`#&5)>x0&bvQz$4m3AbX|M_S=_TxmQVPcxo@WfN=uy;ydk`aWE3JR7gbnu0kL z$R^hck6_v4>c_Bba`h8fCarotmRYS{fMwRJ7h^dp)X(9p95!08gaSFN)Jw4(cIsEK z9G2?WuuMAj3M_L-{Wg}vTD=O(q*K3p9ml^MHd;_af*e-r53w9Z>W{HKRey^8!rS+- zJykz`8SjcXx%-Rx3V4B@_edAetXW+YWCo{|M!!rhUaAQbC z58`#x{dr&&o{I~}ki+~pyxPPw*&A4+v;4c$r{h6)c8oHv!ZJJ_>xtz%iJ##+-0ZA( zK!;T|j`s=N7gyflpO|DvP%w=K=cbY^FyA>@B|d5uxEilE19%bFoaqPj3LZMm4|o&q z$qH(FTb$j1+5a~-PB<=bKYRfVHg#KMES4>%4UP+Z4W4M?Sv$D7P1 zoQ1a=zm3-#|ANP#;|K6Z;JU!|xZ342|M~mQO>80tu%jDc4?G>GoX^4i&i5T$fbTT% zTkv?Z0?*-s3w-`d&Sf+xM_Fo0LtM`PeDvBE#NHA2F%9g3?=l@8j?2q^2S?!GTt@3MfJYnR@%1MaJ=st|1_@8&8K!~7c(a@XP5?Z@%UlBgVuPH*+s>8rSV9- z*7zR0I(w0C;C?B<bfpU4!jz<0+SkXYe%R&d%j-g)R=_qXLhX+v<6yfeI2<-_aq;*&$h@YFs+P zkN8DA%J>y&(D)5J!+0fLX#6hTYWzXg73hfbZf~5hXW;g@`6Yfp9q>Zq{qSnzu2SE) z5N|Wi_M#wnq;Ie{E;a7!9DlPJd-e7pepldo@KjU(eq4B&Z+{N1_RdC+x`K(RWRw5e zI3d~|_;0+{H^6)Gqo|{qbX{@TXy0KWUd&NI^ZbvW^~Qx`G|u(E+!YkN^T6yz390De zz>ngxh6cEH;3dWj@FwGG+?fH=d^~{lc<$wH0P^~GBL(em=@4z;jzX?ZM^EE*fF|JM zan4vBaVk0)7aEu1eN6`w@F)|n#AA$abe3n$@!$Vn4-(!Eyb8}U4g4S8ZoCE;T;T`! zDQ-T2drG%O+fV0IT;by#@QlQA{oyBmP3z@wx3=-Po5>ufAE;7e?e>?)~ zZTL8Rn2A4(PcZR!aouelqMB5)1v4|ahrE{SzmBLg1@o`hU;h3$6_kD)CBF;YQs2M&H0KxP|c@IAc5m_c#8x_$FWffxDT1Q_bu9c_eHw z6`sb&utvH`*Wyu=eFOi+hnqESeh*hS6K{!+F!3VX2RCCA$QHct9_C+>8PRYOh8tgs zqba__vAD!EI2#{lyb>R8{41Vn>Tk!rO?=<%y_}nG_8k;pxfbX?>W=LeDh%Si0vF*D zQ~yYOlId_bJ{jvA%HBo6PzrPtzk)BqdRTpr$8gx_fPTWWjDN)|jJM-~)X$}YY~p=q zCWoEYFKFy+)V*;*REYC#_Z{}a>x_G2xkb|k`vxuvd;;EV^84d$cWQmE|EE*1&P>8{ z@sw$r!2JPUX*>+q+{4FeQ^|?sNt~JP^B3S5#?^S9@r!t^TCV@ENQIdlqU||JgFF2@ ziY{jp(tf-Nd*R^?BThxVar?V`hkfxf;}Se^hL4|!R~ny+N6|ia?aBB5Tus4Pv(M+^ zE3wXr|HHDzy2;mIyTv{U;_Cvh$6HPPjkxOGxIH=lr=ssEn3oj9{s~`g2GI6CCMjD; z2e1#GNL(k`$ym0a#!CaA5qJ=;iSy&@4}XH8VB)`h14HmKws6`)#7CR`IIXKQ)l}Q{>1W}E?Lr19ljo)=o;Mb{=^zT084}F zZdf{0_rNkB^})Ce&yeK%$Kw%}xdKhN0Lx=H^$;x2_0+?#JOxt^$K&u|3S^D%a@P1g zSRPub|BZRb6>opa_)rN2@{~&x9>nsPO#LvH$7t$Du{hf?Ziusq~a zFT&HOo9F-46v$I8O?UyzLnrl1SROK|U&iumSG^p|vt9KYSe^x|-@=>m;S|UgsugEV z!Zr%FnZM2cfjjfcMVgQb9cLxh20P;ui0|g&rOp~3fCmv*pNYpCpN+FqDA03#6$N6g za1*{2rzwyDEOyrTbNDt>e}l8ezsA!{e3#jYHNM+yuK#zLggzvQHK8xQ2g{jC25^b9 z#xKS96W0OGbk_L&c(!T(EoY7YXEyV1j!D=?f>;y&z>k=C#|IK?yfc1`xDK$?S>prn zQ>OkTXN_N%rQjKpFyC1d7T`t1QxwP+_{>@3|Hbm^R=oi~YuelS!NeNh1urrA+1)6R zr&OAdhu0dn!JCZR;_b$J;WG0MhYXfSHrn34Se^-~_rvmX-8mZ_K!Ln^)r4+XUM{P9 zV7ZM}AB^QTTHOoFZMV7z%U!ej2rPHa>Z7pSB_|87e~+d>Zlg7!1j`Ev^$A#Bc&Jap za?`0k1b;x-xd%)Z-YAUa9#B0F%S$cwHCS#S)YoFUVNq9N zxt~zqfaQKdJsHbuMV2i8OGh_TAlLh3Nk>z$T;J7qV0rwmz7xyiclF(Pl#_hh?M&>K z+WPyk{kz~Y-cu@n16rBR(tVmQ1EfG+`)%Wuf%pN_fc&BGRct$W-NfaaPTs_}gOw&O z^}h+~Z_;=+9wy)aLxFAJCruzO4eUIp@%=$=;N5ZA4F3kjBk?lsCrTpOzWm~aGi2fK z4Rexs(mw@vQn1?GfZU7M8PCGe1O5i(A?LXiO9%BqJm;at`8(i@sow$*dcZvY-;IK~ zCSecfid53URY810;7NF;sec3B_FxA_Aq!t@gY)Nj--gR(nCt&E3hX|<3;U(E{vK?1 z(P>xm4M=RELXu?8{M+QqE_)tJhq?<^KHPW!?~1c#L^Tu?7=MI|j6cI=#_OGnWB{z; z!H+bK9~QVbu3(Pn#cC+dE~G&3N^hrNhUwt0!1v&46Tcr%G?VU4Jnf+lZlk55Rk()u znUu)I>o>gI^p}~-@n3wmAHd1XrfsHyQfHlH&jj&j13!=R9`*xRiu)Tc$1{!JoXh-| z0-a=?A8nk_C2)7V%rtN?-t>s?@G#tBu6G|Sn><<4QC}=uOnpq2f*BOFqeM2*C}&L= zjb#_9$70!p>MOBqV)b~uA6qn^0%`9NXN^CGWs9q`Pf%cI{e0|~+WH09&ichBF0=gq zuwCOdfj_}R>99GC%79Xj@%IJ4g|bnz#s$%ic$80wcEL5qyW`wP{U**2yjS21E-?9> z@zw@sdGty_&&Pa&Jp%U(d>Ae@`F(JW@zHp@@$rFAwwBlbr&5r4+z(&?E@hMHef_o0 z$! zze}6p3geyCasOJP!y zCO-8^=HEm*Jk&Mtf+Uy$e1&`B!(6=OQ_K+)FTyKmu)B*7!P{&HILG8ak1JpHTVUx^ z%s*SOJVufMX;+Olt7>cN-F-k8ri|XMxuT{tC~$&u`+E&qPt?J>OodM&|n8nu2+z zLNT6dDjXNMA6{qjufTGiNS1VT6_)dW`f4oa0rf;I=Ye>U*Z)}xW@-Vx9?N+^E8K`% zFspk|ASaRq&Kh5gF6~q$EkV+mcvZ_ zHkQLoy$Z`=rhXUa8Q0)W#vfuitXbszpN>AJK#uEVNk^YzIWMT!;cDacSPnale}&f= ze}m<))A%O5&G<(wM^Vy01NeyoIqbATEtbPdy$#D@sQv?&82^O_8vldiNgY>6N6`Yz zoN0w+7j|`a*I&Mbl7g#9kS-+QY-jDT49l!mUw~!Os)yhucn=Ds{%y`0pN8Kf-qOXF zI=kyHbASSw)mq^-JjzLK8dqSy@FkSkUXBM$X#6RdRVH69zu)2Q991iu$PVWNjSFMD z{wXL<3S1wl=vbWhfBv}bhc}x6o{o!5{7hVKd@f#I8slMjQ;oU)UqZoFlQ0@b z@B0QS@Z1l)ug1%bCt*9l>w@^?z&GRVS<}GnQeZqC7kubDyazY`$oqa=WIQMEqk-q) z3X}gd&dy!S+v8bL*(cj582_>F;7?p_{6D<;6CZD~h%G|>WZ|210=EpDi&vQZ){B_` zEk5-Pv?Za`c%Q(X0`HHfnEY5sR3A8%#kl3D(C2?uXm2^BtUm z#~c3(FEKs~5C6jFm*EY@gR?=wMS(})_UnBEm*J`RcZ`bJ=5n0R#M3tT_-wq|_~F2h z2hKi8!FE$&LEy!B(3if07XrV8Cz|-HxZ77ge+4cz{!e3PqxTvYMDOD&Q{iJ={QQPDC{|g2A-)KQ9`Xg{%;CkH8Vs z*7Ev)4+^%M3hi*W?|cIpocq0Z=fGV8cgGbb|KPyA@EjLs{_}g;eo&p;e{st7+z=m6wck|J6woc(EgtB@Y2!e&dGrIA=7H+zYIVNz9hlU zfsNQN+{I!$2YxVd*`zx>*LVOe0`H0o>8~q|%H{j;ECoeo#76}_8qYNG;{%_F*O>UJ zIP-_!0t0ZF@u0xj^MZnMJkeAbhL;&%f^)a~4n_yA2s{oKoBWBm+&ddxM?t|~zQM_X zZw-7q?r-w%!ez!Y@qFXic%|{fjm#nUc%uT|&yTm73JY*iogZK|E;oKL@GF5|!xbj~ zEj&dn*Z+4YSfd5FCh$jr*J7DO$-=D0<|`GVFL0TOe~F9CnQ$YnaB=2;I{J=+ai+o# z_-f-Vc!Kd(JjwW1Txt9}zRvhhe1mZvu1YM|pLA4D!DN$=em;tBGH!~e7&pf^8}E#7 zG2R8+!+1CBm)iO~oE*mS^{+`(J0TU1I8BzEn|n^=uN*X(avq0e4b(4TSp&`g2g@dp z|LjKnzSr__+QhHNvO-$_O)M*%lK!Q`=3ES97ifbgVOc}1a6u)1!#Do%I=+|`bM1-i zcfURr?;`bREW1$KTZCl`YJ1zT%(-kK4ami%joCzUChLi79`d(j=i{7zI*=_3=lZ}G z;bIdXi8np$>)(U(cI=o`r~dtT!$Um(Zyz_8j^3o8&UE-QZb1Y3aCy%cxIr-u9*g^6 zt$!&VWa9VY@<;r$<=62{toN8(aQ-7){||Em$X~)uqe(ax52wNIE`BMVX*!sR=b88$ zc&&;5gtr^-`64ghP5ULdGP{%CBqvIN@u`7N$IDFoOq`kP|3Gn_lSz(XXowKG1|y1NwZIKUt*u<`UYC#)n>%ScpdKKw#Y~vnFjB{^N7nVk*nKlIM>8C z<3Yx4mU8_cZVHZBN&^fiS@>4$!2JWChS!?>fq15AFN>>o_w7~T@g}}tDaYRwQ}7uH zQ}cX<^>`YGO|qn;ukaiu>46l;8n#%LSmV25Icn6cFtfbDt+7mUjpt`6kXfz;?Xb*p z_1;)!xw-?ES+4GcWs<7*$1+LPU9e12b$2Y2RGlrPV3R301k0?|ghR2+TJ_;L-?$H! zqekO>u^e{lW3U`{>f^A?5$9~wj{=!wns73fNv1v(%Oq2uj%8A*2Vyx2)MsItSms=^@czGY3S?4f!i8Aog!&>ZlS(}T+l$L6>=%Bb5!-vju_i8O);n;+9Fyz+ z3|oNj#k0&LoP|qU>i|;GL%7`dvA|CSeg;o7`Og|N|5MTP6s#}_OL1u%-{EpxW&CE~ zRe|5dD@^_efj`1)l6ZXmi$0@ZtEsRa7v}o`Yz+K;;LUiH$*;xvZGHXU@fhR3B|qM0 z(mzkP|3`seYU@)kH{OS5ai1syDo!U?%jdCd(rsK%!*XxL{PQyLh`87HZmlzMhRmKdX?+0*H;9~%9m=4|-SM>w!{U#!CwOZhMPa;zb!ZO zDwAkmpWiuf0WKiFxf{R$JkOj*&cyFzO~Kg|$UaJzbX10AAE__EvWwJ1a5v*&SazAl zhhv#T>XCS`@ntwW)D&D!L4|Pzo@+b~R~ui0pEJG|KW|)#Uo^e}FEgI}D%XG6XF9^0 zNsxV}o{D9ksqetD3)FYwJ#Z@uWD>vZtnuYoc7gg0Y){>9y_$8g_&>Gv{~^JiyC1IP z5e$=Vt9!e_s&C{ed^8;!T>SzTC!Nj%Alfm*Qu!Y$0mJ{vFE}(%baIvy*xE zlS!C}Ws_;bt5`OfHjut470E7(4^uig4$Cf!Z&L9TEW1qO1ylGLPv+3RZUC!UL0#m; zl>MH975nNY;unkp*WxuM{yU!6$>;x#HyKCE8@p-X=D5!1XQP%B^z7^#Y=!$7x54@Q z`*?fY&A3D0{Q@6=dz$rQ9~t$V)|zQPg5|{BrL}Bj9~U zK2DZ&v=gqvyHFszu$QyOi*Wuh^5gzVID&#c7g7)}e3Lo8lLk^)8W`cM@ljYNk$N<) z#yh+G`GGg+HCO!8$CHR9%nrm@|90{4Q@K z)_8X;lU!YhnbfX-25<-k14+>9_4&?PVKA0SsUC`D(yA}Uvy3mn+l(*8E9Uw9G5EtT(*MwKi3r8 zL_+2e-@(+t(*w`I$5DSDSwrT~E6$LG2M|~Wm@MgN1(pG--(JD|lM!mcDiUOb>UXgW zP+f!V9QY9XrMCWKZ0EqICN7)&cU*2(@b7F;@IO4pBs6)G3Ww?dc#8%89|PKpUS*9B z!O>wpUKIGqz{R+e$XDcTi{=Kjqw?Hqwydt156gaZU?t}#`}D1 zwqQ0IOo3l&>xW{y3EPinIy2%5{v(IY^H>I;ht)Ax^9?$e+Jtv@ND4c@ieoAmf{VE>l&t_uObsjog1>n>paH;WFZz%RA+ zeX!jHbGV6=EmFZIl3mc(oT~FQ=eCBm9{T z#4X+J!-tvc z{}B|dV3X>L$zjgqv!tWpSawmeq@$5oc7ggbyd9@0kWKt=XN}Lof0_8(;;d<46$N#8 z2iL%F&f36s-2Xz~;orCkTd0l8-)~i7%|8IQCBCDJ4|LY}SvV{ETno;jppU6=qqD}R zV3`x@TXDRL;(~N^JMMp_k5894n|wdwvPG6TYyDSOas1y-g8n)D2NJ}Zum!(}nF4VG z`R^pwcsnfnRJ}KrS+4GYWtOWuVS66f|DELca|yNeT}ZI!f$mrrIS&j98aUU)i@^YrT(^{e)bQOAPxK#H1Lm! zO9KU~qp0{8-K43gd*DJ`YT~`{oa20cZ#?7p24|zb6pYes%(?j(>=#bG*zS@~xt_}a z2IeFeqkbk|26zP?)zCn*=qeMJ6}%ez_OeZ)i6%iBcpQ&14LoV$(!kT$H_#+nXyQ`; zb3Dq_|H8zj{+GC+ewHUa8%=^VuVF;7|JKB%{`ana(m!jk z*(68J`ybrdsyd(AtcU0I;(w43GLl?(=2}yDfS&-x>{Y!@ff(FkF8az8_ zu*}4z{!KysTTEQm__m<_v^eh8Um92%H1JB$z-vJRD@E~3;DJF)EE^6?us{V3D!0xjTe@g~b z?)F(f;=0HhUlBBTm5EDxR|oA)G;yi_cn$sA5j|-Vq=Bb{1{RvQH1IjL^}jH2ssCkA zf1`;@{axQ@{cQuS-q-b$|8lCuc8lbjxHNDqw)KxUajAb|P`|&4OZ{=#pn+>lf;4b# z&_Jb$O9M{@^`9|uslOMZ*LD0ZrlOPQ|7c{WM#AN_q z2lc--ajE}(P=B+D=g9B>wfV5|CTxrSQd_?lwwo|x;xd4fgZihMxD4R*p#DG;&q@Q? zpn>a6f;4br(7+TEm-^2J^`AF!ssCb7f0>W-`(Gq{7c}sLPhdmT)^7QGBp>MZh?E?F(%#NErHRWf86UUT@cO?=G=YMF`)8tJdTqta%}TuX{!IMtc<~h6XOZ_z z+;3qf+UD{f!Bd{e#DBJv{P}p!0`F>EhUE@O;;-O^St{hYf|V3hF7^qZ;u0#z6AP*E z6<%o?{1I<8{tK_6y)iC-$B%iSfpeYP;+d?#Cg(z&&1Ve?T|sXOO4=shXe1qukOmmg za2KC}yFHs>|0e@_4Hx3M&OZhDWuNfp`sz%yqDhiJcrEvob2>!jyq=f#KU&N6U*5^2 z1DN~6aTiGxM~BtS)Ym+s`MyJxVG~Gv zG2ZwB`L2GOjXdk!ko*p~#Ao6SFJ|I5sfugAVL%^rh~Gyf{v!Jwe+cBmV+-9T>BP>N zKRXluB!eXU@jYueDHE}xafes@z$7cnL<3#^c3jsd6U}n*<9=k99Fd7uyLc6ruUhHk z;>+;59Xdq0E}m`r6VGhuV2(?;2FvI7SEQ2;pTVnHL!E@t&%C9A4w}3C3vj8~MKk_j z6W^1Gw!8S)zd1^t@&o=I&waR|KEMA^#|ecem;GFY5x8GXCdxEP25{T|n3Sx+Ocx(h z&!6S^s8&zsC0IT|QSSUBmJc+lJFykz0}J_Xg$85!yuq9}pTGYh31 zSUzPtjV+RuHQqphd}2|42}QhLa}wCZtKEn%{r}FcHAbrHj^APKNVF^rWo1Dq%&ZGi z9@G0c_ug}nhYP!kE|I0dL<jGiI|dh zQw79Uij-D}m=gP;ARtD!wzd78yXWrAlHHlvZXlW8x&Qk=|M$6%bM67=Pp|U=*W8+j zo`%mC_yyoO`HXZ<;0wTfX4Jz1*WCsS!9{Tz_5t&6NKE1PAH2iVm+;zTpdrF5fHTL7 zmFx8h*vBi(48}y`Lw)Kw}RLttgdL5S#`6H+;TE;HH@<7XKQU`8*Nz?pQY)TZ^4$Qx% z6Q|`nz^@)H)`_oYg~iZ+r13d4@KvpQg+?>$;ltN6(ouQfcqecl7{o!iY&L@SrNK0k zdVpJhRuuS)yYQ3@PtzL&|EqHn(K6nCfxq}F1}M-MkZq9w`{zSqG{kxRvI>*I1>?l= zH5w)&VKn4_X(=JC1(pyOG2RCJ3bF?BMp<(hc*TF}#qpH%Yv5N)jyLLfdA%6p|4N~8 zHyZe=)i|im1M?-Aybm5Dvj{AJplT3!12CVagCL5I-)AMH1F%RumUIL2cggpNO0!;s# z8O(w;i}0OER8oXOB=8a71BDye!SVWz#YmGQnP@pa*SHV(C~)k{R3oFMJ(`fr6*b59ki+y+q zczy{!3#^pj`_`h8jm=8m6%3E98(MfW>xUMe-vaNe$wmTlf%iX(`A@Ya48OJkX*4D) zT@og`49s6Fb_%?BBPu24{qzak6d9^lS9a0MmKPi+RjY1!x_ zRb1om1Lvos^a_4s3tLcV&=3z6KLGB403;^ZiXfbUs1+J52cDiS3a}NJZ&sfX^e2Hc zuqaPkK6pI_&CWDrrDw(Q``Z%HUU7#-%oN^71K-Q_FwWo-HnjtTVI1Yp0`tx1eZk-i zFyBo6VS%T^_Ixk+xVDGDd=u-9;`p1ud@uOt1)jVe3aDA>;s7p4_oIRDVjbt@F<`zo zdz{DDf%#VJJ%T~s4h$Xy8VM8AoeW0NrX3%g*IpBFV)xO?bu`xjvTVX;2ZK^G<{@Hrj_gaG}({IgwM z;|B!V`*f_n6oOC)-~sb57R9(1n17Hc##5h2L~BChOSC6|`5Mo7 zbX)p8q}hJFOHK{cfhU3a(ycDuA^JNF%-0#s8H?`*^M>_%kw%N_2YvoAFrTfyPnh`R z)A&9dN-q@xZt1~b1&i@*HTn7OGg!3P$bS4$a&Owx6wh~j%XM7pI*P#-Tus)s*d`@9 zq11DTY3iD;P-;^{(F4m;Jw+!uRgrQlowoM2TqRQW+|}egX(zA@YEV-(bP{TT&)&b9 zyt|efrejc#+Ggm6flr&IhR4|IYqHgBnVxAVj;&G6FuXwLM~eTd?fRG3lB?2&?|EiO z{Xl~jhGMf@uP0lYN$Ba6s2cSGm4=2BcTgqkoThSFk2RzosCBqq9O`SXO#;>RBP|YI zk?WU1F+z!Dgl1@&svE|gK$j}}VQW85b{8tyIHwuaGR$cNq)MiGdRr=t?gVR;9nebj zg`u&hYn4tIO0Sutqt|(Cms)5>`D9=_KS}C^Fdzo?J<}w%p;Oh0d|joNb2=BXs&vZf z!@IgLT$bwGwAHaS)T&8!9zi#AEeu~LxT|g^9iGzAd45+*tr}8;UrIf_T)ARPKTXce zRLUZ@y+fYM_Wep8Tbc9^pC;$uS&3mz*V*+K<=XnngzTN=a$VH->WajM!gU|2ep&5* z_gPYzd~=~+;BER=PGt}DCv$1XwF6V7sE8^t0ykv$_9wN1XQ;Ls+L|8NhGsZXbuRG{ zDyTzT1G$D$9iYG~y6aoiaD3BKiLK|f(GWwYsKAQ=0P{k5?sn|`igK8vk)s$_g|=Kp z)))jLPZXU|@f1?+DQeM@w0I7BvOBkSJZ|jRs@OZ7E$!+i*WKKP;Fv4X#Mu!(6CTd{~` zQ-$H0U=r&%DO*hyl~T=-wc93+kdcLQWJ7L?q z@*}mw6|Em#k~d8n&V`C5KgtfDm2VmLG}ic;Jh%78S$T0{f(J_xViS+(o@HCSYIF^l z*P*y~Ah=aBR96c%!ag`Bzt_9)ukx%!<)kbVU)4rInK&v`7v<&ZOm!SoZCEJ^qZu+( zg!4$zT&*o`(xmWzj9g^o8dq(JBXOl2F6Mf}3-VJxW&hZdx_x%fay+jPe|QoR{ow{5 zx95_i;eXFsOt^1hv%6CDxA6CyBfEm;n*4<^QfoRP-Nw1HYsQr1}%5dl;OM|He#*08!Z7J5LA4ebLNbj=20JMc0)-^ zmMShzS1w$NNYt3Cv6>VsilSJ%XiI~|HWAz@xYLE_URrA6y}5H|H#6V){_p?K|2nZU zcw%L6@zdJdYqj0C%^w|{kD`~OM=SH|wT1Os+*q$w{^*ZSHGYtl!8l%OY^utL-?Mo5 z{%9bIqByEVFWeqQOSR$f)_mf|$hpebasR3CWhlH?DslAQwSZWN&sQ4p`Q#B$<%CPF zatX1@WR8e`@yA86ug`kTS-FtCv1bFDB_I!j@SS7zn~fSlg3;cP=LI;hZU>0t0iLIEQqL zp$9MSxRg9trA#2hoD)tWt*P@9my*%D1;iQE#yBCJgz7r8KVAcmRiSi>)7)lSX-B#C zU+xA62Qum$BZvshvrN*wdBi{SGZ?F4C8<(eBZ)1fn)|*zz&y|`#wjNL+*$CFfAezk zOVJ%I%0@rMJV4=aX*@wu(bEB}dNcsL;fpQlmlE3Tz*an#z2OPohA(!mhm??LZ`MNr zrKst0sai`>5MPwVlJd087?x9jVNn{3ns;B4wi)Ge(5F!|XUkzr3-G6}BqIgR5tlg2 z@@6Bnq^CBN((*2l_8t^%+G|Q!X>W<_DeXivPyZXqVuv=LqV4FNz_?WcTiJKQ(-wZD z`~mKd{+`_B*X{$iPIT>u=!Tqa{_dm*v6~i3^k?Kh{4*J8>3O279@2_@c`<(NYO??T zqx+w$$)SShGSe9k!^R;SrtgipcXRYPg0kSL!wPXIWgcc3=V1@flq+bEO<^-@dcgDO z#b?K8;3TNAHO@$Rjf>p9GRU=DWWixDpyn?NEAf^Hy&RECo6Y`A2O^EkSR%w zlm5y_;QK0O6bgi;!NGrrg@67lu;0J24Ep?EAA^ai$WWNy+`ur%q04js+!EN_heehX zE4j?57_#HYFXI{7=h(G~PW8Ok5Z#UG5a&n7bSb-1)Lf*|jO_Xto_e k(WbCaPYi7cXn6wIzP3e22LIM77+M%#1ATbA$r7Yh)2zW@LL delta 3200 zcmb7GO=ule6rOo=8(e67j|88!5km-BG-bH|KQ?MCc^j=oTCs=-&Ye5gpXR3}Qi_{L zX=9cuUEHpu=uSkU){MqtT2vH^V(p?W4Hnx(aHrr-7vA?8p^5M1&70-ScfRwT@1Aq! zo?NP)T&ga7HZoj25d<#<5y+n%3QoPzbFr^yJnWm>7Mz;v399dfjc-Rztc=XBjD-2h zNa>GCcqacrma1WRI$u+zQMcpF$Y5~$2?KF=5G?E+3i|zvFev4tmrCD+l?GzKzbTc% z;Qd=caC$zxT*|}C(c_?O2p7<5!Kt)TN#^!niO`rx6O&1$5J8LyrE9_Pu^`@?OwUZm z%4lYAX0@_ZTV@F2)M}o}M012Vbjw$wF{P;xkYgcItEq&hRydqqjp8vWP)02#Tp^4Z zlwApU=V}BWgGOdNv(PXqQ>45AUqTmE+;c5@xQtRLQ>A2*rWz>>-N9?o*nJQsk|u)q zkBLEIo!K290Z)_@WCXUzU|#{rw02)U0LJ?f_fR-k7*9}8?iXJU*{+YRCHJWgTuSaw4+tq02c7`aL zojiPui$m!&nVEgX*jHbE4IX;kp$Txmi+_s-^F3?PkKga^lrNU?l1LW z?6HVzkx(gk%9M1^p9O0>sS+7y%1DzSEp1wBo7-JD>)YY@r{IIKPB4bnT7eSC1mXE3 zi{QhsEOjb{N;FOlQ!KIh-#NGtR&?rBWi-_(mJnK1bG_errq$1ZJ795&x#fZrAM3AC zwV>EaTek>dK_RD#P)PlC!aIey8(#vu%N$vTpyVhuf=I>P_AkI}MP|x7V-w~Ll-BB+ z`?Vj4I?}>BtR-Waw+E|r6&()>w>2x6%BH4fj%K&Z=|D7qV$zn${j>;3{_Z)TL%$h? zF%m;T6XticXn$CR@}iivP1}l~-eQnYR}3u(XmJAAdX`072KV+d7?|I;4Dx-;+ZG@E E7tk$-tN;K2 diff --git a/artifacts/test_program_methods/malicious_self_program_id.bin b/artifacts/test_program_methods/malicious_self_program_id.bin index 653ece663b991e7dee9510206a1761dd0d04e9dc..d57676ab80230be27e2e3a3a9215b2609440a8a0 100644 GIT binary patch delta 11965 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 RCtBxn+zM^dUDlNk{yz=zE!F@4 delta 11964 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 diff --git a/artifacts/test_program_methods/minter.bin b/artifacts/test_program_methods/minter.bin index a0144fced4f694b05d928079581f786ef9759529..21d1a84a592bde371570139f6605250cec7b97c0 100644 GIT binary patch delta 4211 zcmbtWU2GIp6uzCkr4eH~P^5*l+LHc7%I5yx8A7xV1s?>0zzc*%X6DXCq*Sa+t%+f) zqCjF4orl{P6A5pI7qrnW2n}l>X+#Y?s8N0bMPlNEsrn@P;B3oJE#2K|NH&wbneUwW z&N<&X=Z>AP9XnrpyrrSa2H@Ah&O=d0Lw6M@{2$yoe7GT+XZ{(jcqrQQdtLNz>q-m! z9XV~?ReK5m@L}{(TdM^wM`zn!u)suw+Ml$}v`3B2`>eq$(UIo$R%cr@(Y)0HZ$xWb zmRe^XkDhN?xfs-^TJqq=(6K*jD)Ycheynp%G}3a^>Ku!RJ9q3yYr!pR|Bc+}#ni|1t3xe) z<`JPhPMI%E&*c=)dX%}^^E`!+qlu?igXV$4FTK|5eX%#qT_HkALg9uX=allm5j;=< zQ`D7ypweV6V00fiTf#NQiCMV!IWFOsPjj0s9i5m4Esb;%BN=#Z>w5ZfMv=Y@HjiCR zbu8kpqh!EI=y(DLN)(Dj=-s8VSW2#mr-q zERxEECa)!7vlcU3M1VL}ph}#4Tma7jPjBO!mHGO5>fudg`$66{NXp5KUQg9#%Q`0a zs3i5Arg6hfhCB7#y|XtH_N8ac0kk66vDa)KPc7LZh+#>dji&dq?#@dLCRKKuWK z5?Rh*2ENcobBVYx?55+J%T$<%STd&RW?U|N0B&DG9424s4?{Jum-p=2C6NyLy}nmn zmaD&+TJepIuwWs>p>kxr956Qfj>Ge|kA(CorP6a;#|e-*l!LFCFM8{#>8^7ib1(-Z8}mRatQan= z^-zU{lzw1KthsU=S85gdf>QIxZ*Y-$Y6NbxU5=2a31V6}0dqZbYy_UD76>yH5J{-V zwcrMgL)VV?y+*#~9^xoe!ZW8%z(HFRS1>`e6b=rw=4VZeLo0AJ=LK^JB aX)v5#Qv4?I{ur!3kQsxy%vj~-hW`K_!)D(A delta 4242 zcmbtWTWl0n7@nOyr9m_uDYQab(l*=DgtE@L%()n%O)S2M1c8`9tYzlRjH0mBvNlAG zyGjs9j3^UxOngvzQ)1FcbjvlZfuxEUcu?aFX@QvN3tkcv;)7>fgj%{g)0j*qdv?D6 zJOAZ7|9{5LG>)BV9BOZ_H4NkD;z)ng)!bWam46#=9)7(!nim~wf8I3yig?FbbEG@k z+p&3B@$FqJQ;TKs!v*y343cqm;i?Kx7=auL+Iu9^mwzmRTSO(kSrh^0f2 zqzv7t(VQx!zPpfq$a17j{m>CKgdFogs&h+0w?#Z3yOc}E@x0KbP<6M09(8qdO`Wn^ z!Jt}qF}<)LdhtmR zf(^0ff!#1j>XSM-o^C9}5~G{0BxTNGec&d;oqBKIn#%_R*%^JnUMU}cR&AU}FWCec zgRbrdF2~T-kBcP^5OW!FAw_@b4A2}mz;XD(e-nyWoWTry`5et9;&QW_j?ctY7*Q=5)p|vj%i0OHEb;SC z(qPw`UImGsIlEJ{OH2%9oLaETr;>ct^&#tN9rZSG=%u_p=i z)xHvVK@EKb7F$R+IgUx_`cCLLemM2%;lrTbLIM#&J;F`V@v3yHo!Pf&_(u9{BO;akOsP741QacT%cIH(0vQG(L`1DQ z3SO~v#T{Q)&=($YZ7kHpQSEdXgoxWd6+z$=k3hBi7b2wG`#R*a(4(H@oCgGR)pY`_vbbj>od^eOr8Cb*>eLA^9IxeS3K%{K4#ua=sTgun z8RE)WWA`V_JVBM+Q1|`{NI^h-$UTk%-wSMtS69X-+>*_S;qKYyTb01ePGhxT1T0i9 z?*k2`O{1VGwPNPYsY(>;-A_T!iU8}IT*!&fiOoF^Rx=pw1sl|lXF+ZKY@Kbq1#DSb zIb`+BmmrwcFn0>H6$q!4g}!uLDJ4RpiXREn533}veC4IIFSBN2W?<_MY4@qR)8LU= zy?bdNXjJ=811DbTRSsrCpR0(}C?xCqq;d%oIzeY=D3s?{LJC+dkYsVdna8IvZHy*# s16Q7bNh85GnttKdX`avx^8ei+FuSDkrQ(e-(6lE%21@y{nvKo>09*Ew;Q#;t diff --git a/artifacts/test_program_methods/missing_output.bin b/artifacts/test_program_methods/missing_output.bin index cbf3e46704e89b127acb35da743b175f00749b85..5fc04f943eb3a47fad9c98dd21e36f4e426f819d 100644 GIT binary patch delta 3829 zcmbtWOK4nG7*3p%g_~wVVnU7DR0A$*uIK%LB1JPBTU|+!f+Xj4L!eD;W+G9Fw?a|e z)S}?oikmJJYuf6xwPK1w3AIJtmR5>gh<4>xsGdoE#3c7I2(z2-eE0kR?>qm0?yQd7 zSsgigtoPV`XKUB4_ba3gXATQwl%h1;xL%`~;>1bk8T1q>?nt9&e5vzG_UXC#xkNBZ zAx;se)M!IFMCb zm3b4My;*y12qLGLLQqSpyp(GOhkgil*A;R|rbHp0N)HJRf9wFOVdcl#Xy&v+f=Fi! zLfi_ymWs-epxwBEVuIX;=IzbT8|t7p9mvO%aCk2m+F#bIMEu3u1vP?e+%J}LWAZO~ z+ro)u@N{^*4TkHSBIY}tjHW22 zQK!T24tQy-XV|BjYVQdAa zocBKiQO7dkkS4?ur=py2^Bg!@S6Hgl5s9c$jxiPH&Vx4xyu}Q2l%|9@LAYy#ZQsRp zGI{|V8PJf#g`=&FPC3GOBka5eM#5JYKvHfPF7Ui!v$4!=c4fmzL2kmQUx1T!ripik zSZQL31nDq(F*ZEzJ4uvIm9Y{TO2V0o;9Pmoi{f$eOYmWN-&k(VRWnNR+s2-$*m{cd zWvst_q{N_Fx#|nD%|}V?B7xyT8V?<^=|+x4|u_atf;vln>|^zT|o0K zs3?MO&5(6=T15&}R7kZt(8f!Xty`@XWsv;6ShW)J&#=!nZ}^Hb=>L~NQL;V%p#eVu Q54~kCgSNfg_x8ho0_jZsE&u=k delta 3812 zcmbtWO>9*~7;U}Nt$j@^4OXRScgS`Ae+)4s_Qgcdl_7@2v@>^RNCW+mwg?IFVnQ@- z&|uyxlu(F|v9CqtuE zy$LVgN?sZw5+g+|V_tj0jp}gsL$IR(i8ltxOd9Tpayb0C1uTc9pOcYXWrAbk5wi~Y zjF3($YDa>0(+w08WY?Itt2l3{jb3-47*E3MyTH(%Dz8%UfVT^31UuZXR&rzVFL~sj zo|>PZn%OroySOm7xR9bX_i}r-Z!wK!9=_jYYD`ACLkL-~xprPbPqkLcN+Gml;q>if z(^FNb6wz?w_hc~q5z%=i8pFRkQVB&WLg8p_Jf=N)cL#8nA0Sou{67Y!SX3QYgKy8J zZYpjMoYnXzDmwbw2lcWVBSZeyz@h0B2?;TU3PK4vMv@~)!!zf=LUqs(DyHb^Y@kXJ2o_R| z)4Cj_kb?&QCHSC`Nf^7vtg#{VQ`UZSl?Hensxo#v$v2FDEn$}ZXETfajoY|OV6az)$1Q3EZix1TN zrs#$NZnV+TlFB=(Tcb;0ym#B$_e+WP@ZM!Gz75MPzJa_#nmaDJFFSDWGT1w~(OjGS zE!i1PNHF?naiL-I8gLt)et%2flX=|X@#WQ-8Hi9RN_5mT9hF$ter|F;F}C}av4d0d z8Jr0Bz5{zUREL)0V0iO;z^VgYav^JKF3Dz3UT^f%;uh2t!8c~e+bgUl1u83~UL9!d yrO8)q(wZ_z@fxgK3HfK(=j#`GO&Rq6%b+OTT>P$ppMl5T$*zD_cBSv#$NvJro-7vt diff --git a/artifacts/test_program_methods/modified_transfer.bin b/artifacts/test_program_methods/modified_transfer.bin index e2b7fb47232353e1bfeb78c82b33200a75a3c2cd..94fb2835ba94c3b31a09024afff1901d8fae8bf8 100644 GIT binary patch delta 13077 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 Q`-~+VHz;BX7?)1}e}h*xqyPW_ delta 13071 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 diff --git a/artifacts/test_program_methods/nonce_changer.bin b/artifacts/test_program_methods/nonce_changer.bin index a99aa6aea339772fd841eeeebf548da9ca869e87..48582a69130527cf9ba3af95a82c101c62e06314 100644 GIT binary patch delta 4252 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 diff --git a/artifacts/test_program_methods/noop.bin b/artifacts/test_program_methods/noop.bin index d7bffd5fa5d811d462415ce5878dd6b40407ff71..82c855710874453768ef30be36e1a8c29b396f79 100644 GIT binary patch delta 3242 zcmb7G&1)QG7@wV)Xu+aWQ(c=zS+pi-b$Gu&nxN(o@Sw$d5pt1v-*=`fZ8l9x%Hm~^ z9D?3N@kQ{^qX*Gy)u~Yk2%d_d^w2~PT4N7F4;J$W_|B$5YCiVeWm(waH^1k3e$VH{ zmFC5j=B0z<2bxPka5{+M_YRJagwgyG7+(hCjS7s1n}-^k)sr%8Ho{wD)pIApr|r?r zu~xA4X#}_L3xWeLKOP)*4;n#OE&Uw+(0H&$jJhXb*a-5CAhNZSo#HJw-dT%|Olre3tqqWnGJrK2 z#0~q~S_Gaqf{6lhzzLFwGTCGBkHwx`k4_vWfN&SCFoZMCm8nVW=VGX7FRw?fBnJh< zQlN}eQUHMM#(H!rF$HpQYl=BF$QW*a8i`*>Fhx0K3}J;e69(A#e~Dg96y+FblX2lR z1&Z0$(O9+m30-x5jiwr9KUj*mxA=%TC}?@(F$~IqUO;j{1E3$iysP+9O!~cWHy(+> z@EH9MU+&)xDaOGuGeG;KunyU)(^BZ1FMYAtpSIS}&jSQXZ!D~H?@3#$><2AjU9)~z ze+PK*`pikvnVUODX0taskhhT#^)zFgWsESCZ_lFAXC|h^KOpQM52pV4$6}x&WMBND9Sg{2*M}ame^15tzSeg(!fj_fqwNJt?bKh<$P<0Z z5wtgMN5^}v^dHl>C;0$=ke=%GaOr*PVoi75><-tp&5cNw1VYZa7OEiHh@5V(L$?wC zTZ)=sBsBts;2OKls}TW+FqM%!b32ZuU=T3tb&{T2$niP*Q7eW!cVO~o^v{tDpE>{L zLeXx|FDx#iE<|0`?Y6Tsc{O@7y65U-U#~=Z_UwgOH$E|--0f3|0FwZ?|I8lxBOb2i zFU9j=!m+?w3T`wkGHi0&{35=ZV3=o!PzW=lIOW9tcsYJIkwR*s7&Zn_#u2fdFXNlX zd5-fuQ&3XHpr(3yAH#3G9XIX7T0Cq&{wn@3QA8=`E)p(qj@@xko%%ZdwDCYL^FnGj zTOi6!R#f+2iN9|oCIikq)Ch5gbA;^g-^8E2DiF~1tzd*Zx7^Qk;5Ym3$m0$vXN6#h z1#!0#;KJQ~EAd1Ep-ZyKs5@e`rij{SzKzc(MZpTLk-PA)&Y7n6mGxMZB*zj6P#}t( zh)mq^p>K-N-bw|t`Rwf6g?uZT{h1zfHHi17>Sf!4ji^;s-^Hp?Ds7~6cP=e5AyJX- vlQ19i&N|)O`c8&&*Cv94Q0&S;JQ?WToy_;9u&Wb8qs#5pxN5HsU3v6hrlf>^ delta 3262 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 delta 13214 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 Iyfpj&0YMa(7ytkO diff --git a/artifacts/test_program_methods/pinata_cooldown.bin b/artifacts/test_program_methods/pinata_cooldown.bin index eaad2613a7af359786168e2cb7983b6645f1b381..b2d1d68cca589f426f6d657e79cc3233754ad7cc 100644 GIT binary patch delta 13359 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 B1q%QG delta 13335 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 F{|B(d4Nd?6 diff --git a/artifacts/test_program_methods/private_pda_delegator.bin b/artifacts/test_program_methods/private_pda_delegator.bin index c1caf235a48f8865865f13d76277842106747575..3e0a102512590292522b27d52bef505cb69a6de3 100644 GIT binary patch delta 13568 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 Uc#BrE%rcMT3bbAiTb^C`A3_AEZvX%Q delta 13614 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 delta 4275 zcmbtWYit!o6rQ^~g+#$#XrWqKD5WhWh0DzB?Cva}xkic*OYwn3Fo?S|yF^j}%fn&_ z7sJc=Ly;vJ;vWMcnm{xKqPKvL;tPrVfTR$E@=8IYL1Kvhki^8<7ENh;@7;!*{c&gJ zJKvr;=R4C>a_0(1lPXh4E=FMBfsg+BIgXn*!II^?y@nPYzNyEYq-x?RT*Uiwt z-{FnArNdW8=iuG&$;ovZ_$h3gyg~ziggf7!5{|4NqjlDYU6VFxn=gh7Ynrw6_{Ry+p}eE{f@cyiR|2ZZFVUfQC|gQ zqFH-XR?gRo<&{}lTLNYmKdikMYE8BB_8D#bxCqnxOMvbo0GgVsL8;nE04-~r)f_l_ zPXYia?~BbZBzZIqle}$g)Bqqq7rN0DyAdd2RX=6$`3?iXcd68W7z8jOep| zU#+)3RSin+od2rU9cumHo%Pgf0HhnLfMSbivtOOp61S&RDb#bjs=yhwJ6bvRrb2Zb z=zV##Zn_S@{<9Oo)a>tPba`Kr5=S5-;G8hqVu34n|ESZ9Kq8>jG;G_mEp8Z%pr$Q) zQcdp4RV!118LmYIWz-5hWCtcUF|rKqaF>{tVW-GYz-RzClZP7P*j_jTi1YB8eP}cJ zZ)f#^=0~#FND7uMX*SlZ6{K}7mW>znX~oE7!nZt5uxV3*iCmRj(V{zwoB<nGy^ik7Z`=`nY*J%>_P_p z@KNg-%8jF*(icBIe_G`$-THF1U1%br` zV!q#d#16xfB(rSnU?GT)n6Q02`}|?JG%>577MxT|%lem7*d#vxT=)SBuq`|k1#edpxt`52HJD*> z+u%X(uFDw5u4xC3r}{PXfzMeWn9Zq0P-8SLD3XVMfTi;D4(KO+>~rc`fk6cI7Wmm;B;+6B2p-3phFxuT1QFcE=dppSeBt9#aXFS|Zy2MxA)W~P>$Z5EwWUy{`whg{0 zcYXTxRg0CM(=i-Xp65o1`-`eGMEFX+rWpug3NLW-coZ}2c<|KqW={1K%UV{` zw6Lc2r8OKalgBQ=XG;fd>U+D2%H(5TL$k2_^OS2$r}Ib!#1uWv9qO1)Sc5ZUq8S&H z0_VF(yyC_Et2fhU)W&qf$UP_H-o*HS6l4ZY{FrXgdv}B4)I+&HJQjQeD|XbMgxUI& IMQ>F83qEq1p#T5? diff --git a/artifacts/test_program_methods/simple_balance_transfer.bin b/artifacts/test_program_methods/simple_balance_transfer.bin index 1f74423007e9767e3d9ef738d9aeae14fdbc0da5..7c7fb0c9b889138f71353d28c8cbf6d876ddd2a6 100644 GIT binary patch delta 12380 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 delta 12367 zcmb7}3w#vS^~cZ5>;^0mHV~dhm|cQKgs`*kwNU~>0gcLAf>AR25=(f4#TFe~x z?!B{{w{_gUt>dB`uHvbyyK{A~^*h!ox8sXM_tGPrHrhjrAANLxyNp7v-Fzo4o}WP- z-{thaNskm|{=O)a(~2_ry^_O~DU#Z6DBn-@-paR8T}6B+b;(V9Dc4e~zlnco5!X^( zzJtH&dR;DuhKWut*3UOTjdpX!v~+fB5vl}Nd0<#~=K?ST|n zWSspOQ7>rGN9p}#;6kt|KWHye`A`qJ(9iKa{R6zZjYvD&q~%*^8+P%Pys~2-(d=#_ zO<{Uo-A^>KyGVx_AE_Z~=poW7#<$fH4F#`eyy^f^#V~80M-LKJ*?1c`Au{h_XP-kv zb1demT&>^DcT=9ggykNQHZr}Rfp-tL^maW$R1LkI(69URPjCY`%=n6?Mu`zO&55~&KyrU(A9 z(?s(|c&G)F+Ya6?iL{MN_sjn!TH+UJFyrVMqQ@ZbWb(h$f}iovbILQHBXALs@|axY z3pf-NX(8hez>6@>41nuPqK#lP0K>tnz~+K40S87}{0Vs0FJYIEw(Eg9BurnC%3%lm z7*07Si1wlZejARx1+FTzR?hPkQLT-i1UG=kGXt+cU=saBTE@oDRafrg6{+GZ;(D`4 zotT*S9EL$`BNN*TUShMet2$~wf71Q0uZcDd6seRAd-WTHb%2%sZY^2E@8FepPC?x$ z4_yy+dS37de;wEi!_DA@*v}@HK<}wR@RI3`!@LUgJJ|TT?~r#xunf$+u?_goEh0IX z{Kw#HAsp(52Xxk>Ff${XvUmSElYwcvSR)7Srk zPeFboGwYgcjw;Y^#_B$B;a!&eYVc5t6*`HAB{qe=_8fUF0h$S3HC&{EjC9JZ22Z)u zLn1Ti=FS{#F1AvlqzgxN#U3hP{m+5D&_9y#0q_oRsln}dav`E4Pk1O`G&pFy_RN?1 zs(sBhqfB z?{n~BaBZ3uy6Q@fs>X>llnD$2XO~+1dvF5G22dqBKDwh6opUJv#f0`SJg(R(Ex8UogHV=36)-vG8xP?~kI zzW2fQ2!9K1G(bIYlE0Ztsy$BeJLGOxaI_4uLk<`-$>8U}@XX*B!Mklc>G~lVOs%u#*0R_>mj-uTxH``;A*hB`|829 zHtvrtT?f{aQ6Ik$obzkzWcvo3cb`Z_>3)R@ogB?T!zwo5W$^ZUtcrXBeAvd`434%z z;S?sXfFl#Io!QAz&;rRl&PqB3ydG=@W(&AvB93AsNBkVMYst}Uo4{yr1121e3G_97 z7MwtTC&qiVXU_6{c;$_b92Go-iG{SM0lgOg7M`Q%>7KWC!;t$?e^~!jJrJ2`sO*eK zfy+yAL^8cg!3)7I#-D<>*|^g+u+w6NK0(87*+W@uK&NXl0BkB43!Y~y+U4NQ4~SF< zdELOyc^usdd3`B$NAChBY~z=M-I%bL_3sCt1(zBu@Fc2R&-0Z^w+e)%h3raonTYkqi6Y%Jq14gj8#kbgT+Ln zlO(GfS_^BkL@#1xYkpCi*+y8yDR<<<^kpIqU~BLZ*abFCpCcjbG0u$X7I2YGkHZI7 zZTu^+7vpo7>+gaW{ZXWIOn)vmj_pk1>0WJRmhgO*G`9dTnPBafcfoaFbMa=~gu@SP z?yfhrncW3k)Sf`ip0eJmJG;Siz}d`zE222H%dBL*1zfw)I%`&f*S;>&EEdmN@Dj-P z#CScq-8XRLm}uD%17}+tqY5<4!T{6IBj7wtU>c->Tv@n*d~hi zh5t5lhG_%y1cjHLE=0NeNTls7ZW;ZsnLf1K7!Gz!wcK2+)%O%?oJ!Z*FyF_x7_)IN z4TbyrMXFx498vtcSk?gr!7rI z!xS`_3${*8O2Wxu_uPs&o$wgv7RNiO0!#-`Ojz7L)OosPSGyt{7f^FmS}%kE9Dp5a6NrJck6Q<2$ANGh{bqp2f@y~3=yLF8$m23;6t5lN>d!6a zeuaYag~fhw!a1!wY!DQHOPRu2@B$dnnMJbuV2)k@n>#lJwj12= z171Aj;{Kku*w}$`Tcz!a2yKLZ^;r4RlOmmB6L%bmtIAhMb;DAQz8Hn85O_A@Zlj?H z@J9sDVXs4}9 zXWkf8;;*fhUjg>oGOBwqz7t@4YZj*zc>6aZ%}JZ*BV{a7-*&!j0nfvLUTlE#u8RiH zV6DCol|sH(kHfdPFr*dH&4`2R94;IzPS1gh&f?9?`X7Uy%=@hXYzG(G_{tJw4CXZ} z((T&T{=)NuT!Z#`HaYQbY|ZaP+ROCb4Q|;W(mb|Rj)J$@uAX`KAOINOp80bhIAROX zYueUd36+`BizqRJId|jLFpM~e;5;_ZldxkwZ*jG{VT4eVweNORtZX--uo;P7tgRd= zRJKsA`<$qg=%xr8J|5~fc62vZutgYGW;5e9P(YbxADK1ExIhqcdozMuT}`Y)HX=+ZFsQcozDvW^svV?e7+pmRaW~ zpmgWCDbta5XoI#gDLm=q5?XMAP;*t*1NY*AImAudSiE1+di-AK!*iM1s6Plh9Q_iL zkWZ?+F%K%iGnTm<^WetG$cv?J<7CpWHH*L%k6Lzqq$Qsa#_?I%Q#g7Z?c11r8?;@E zgvl*9mo{*jP}5Q#Jr(Qoft$z-*bHox!|ulC;E0*%|Ikf!Y+-J}*;{4Hi^ss-9=E>9 zYzLPd!um4#YHj`t!Z@e$D)hVoIk;;a)u+K5!4NYza6dr+7 zn+{C^Z?=tp4V-<_&E8_#!Iy-#E!^1;;QafAr}1E$4&K?qLuXjDhHCBC2s;F29E_Ql z<)Kq-Rm#DIt#J=w{N+O&J-gJJJRhY#0roIsr+`m@&FHQJe+4$3`378P>yOUi=(N?} zpJt=sj7^{tTn;w30Y4Yf0rzGT4g~MD^&inzt`jCZl|2vQ8n0U8wmgiwe67g~Vd}~qxauC$2JRFpIpyiyL^!n z+rl2Ag1v4MQ5JOG2+n;u{nFO?>i-altJ7C;D?Od9lTz8luBv(&vai{_o(t-X7x|Z%atC4Ylw99_kxc7Z`GY zXz*WfpdlA^{sLV6wA;9m=&fkH_i@Pv$ z=!RoNrEoY`AFn`Q8X9ID#RN>@spCZF`lKI(x`I1!#4NBvM)OXie*s=WOg@HBkqefK zG?Gnl6nuDzH9q$nq5*w8#*w1yD+VvvB9aIP6}{m>XqpF$mNA8;-x8J7rc12ezX}|| z8k+_l01y4bO`X^hbUjZrzRpc6*!U9gs;w|6GabQta5)?pihis)_52RsZJ!ruE#@~u z{C708JOKlk2POZH2|jZhcQ4(5#o!fRxsA_5I)4DJx&l>-O(=bj367-C8omD^uziUR zfY<-gaHR%{gG1V;jWAM ztM>S?1_k=^)5G|Tp0@5cj0Ima==Ww+^bNap|HV}2Ya!`y1p!Yaeprd7ynJj5!T=8YP>uU zv2w-}z~^2S72~^)?!gK)tY0J2CP#Y0dawhGBryzFBBG$TPZw5Qey|(&nt$SAge=y1 zE_l%je062=XTSwu)8iN_cIjLcI<_P&yFJpJkBdOUu?6L5Fuuev z?g_3#ND&ZY+e`${!BtWJ&JPf&0O= zN8H9&S-t;L@X)`dU$Z*T4I|`WJxO)$9YOuK*M8@Xcr@(6^OPlFMPH7l{~0021X;LA zodMfVyA!uzn|ZCu*!_0w>+kUaj2V%+f0^5>}Z!04Q+PICM&-4iggL6BeuB07Q z=yfzWGTn_He+^#I(b{H_7$!u&mnqx=K71wKB`iXN;;0L)-L!~t6}SKs&R~2?0`CQI z!0ZQ87LwL*NCDshRnpEfAP+px?Iw{8SO6Y_km~zZKfQt}+?!$GLe`%#9=D_-+;FhS zx`*Z9iZB=hbmr~@L!X)CL%_A*gg#zB|DQs`0FS#dtM`D*!DcD${%d%IB`IYS&Ieba ze;MPC!6n_@RLeL6FS~Nco7?h1a6xYRqOTkDD!2^10P@E9KNpMD=~{TiLR=57$g?aS zI1z=Ym)p4P>k94%FA+Vooq4<#oB*43;sm%1bz~?rsP`n?D?8$Gz;bBx6h!!0!-4eq ze-;h)<8~?T!gI=T$72&jry(a$cvi4lzX3ep1vkxZoepuo>3G_#LBy_1^ZVd4l}JKn zfH(t%YqP~Oz}pSR`Kx>M$#3x^22MZoQhC$w5W>&hjkUjFHa<2yj?1_+T?hI<2m?;S z05;*1;LQy%pha3=7d(H?;dnOJd<}SQriT`>2rrn6$1)DHhjlJNTzvJ~)#LTZQoXbp$sF-ewEu|zoN_j$eQOZx?1zi2Gs4W@#Ls8^OF zVXr)p@{8n2lPBf-r6^_awUo;$( zL%~#Xpt`n3xT!1^2!(=C$Vzf3l!&JW>XS6rBJa-;_65|F-5h;get$&v`a&T&5|TrS zKukSXD-3o;0!#03 z%Fh}gMSk7{QnV>~<>FNE`I{PWvAh)idGbE#2l7f2x#{y!ZsO-;L-SWlH(gemw?p)> zG;cHM5pSNPyr?&YK&^JLdb>g#hb7iG;A|#rvym|7i ztTGr-xj~NX(M=YFh>?*<%I4c5N$S*bj<9+v*U@5FlN0!&Y=&mWMt$O#kk{ddXGQP$ zy)*MAwO zA~+!ZaXA!^M`zpU*3iTUA3Bog#{Lw;X08VviTpg*W8uRF?m%Kli` zACLn+U)&!~#k>Q5TE2tkP+(rr7m7yxzIZB?^ve--rRMmxI$)#Y-|9`(&R?jWjSi2R z@rEPEm5L@Kfp9n|N4ye_M4#$=!!fO=6!Qf`!Gz>XhC)&x9=ObWQnjqsSFXg_3bO7?KmgNF?U-YscTj4{|O!7L0kratyHvC;eVYJ^z;D zQ7;ta4H&1 zs1`fz*y~gOQ|b6~(;8TUTvEfS zlS0AuKfL9z6}#ks59c^Ws8il?WVE|PxB5cJA*(yKJ6g2;vAKF@zoo^_E7en{gefm=B z6O|^d2>X?+*42Er5iVr|4QgIpi(bZvabs_fc-7nAb#zvrs&ZUt+9U5}lr_&B v=`tG9mzgHR>c5PN<{1&Ww1z?YMr-EENSCof+xecO`Z=yEeiC*5>7oAtYv6{s diff --git a/artifacts/test_program_methods/time_locked_transfer.bin b/artifacts/test_program_methods/time_locked_transfer.bin index 90723ae053de3b3a3822018b7ffd2bbb23e3c00c..4af11d59e9afbf3ae3fc398f50bfed462ec430b5 100644 GIT binary patch delta 14965 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 T_?_*#M;NAmc+gwAwF~|qiC+mL delta 15045 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 diff --git a/artifacts/test_program_methods/two_pda_claimer.bin b/artifacts/test_program_methods/two_pda_claimer.bin index 05c1713319423ca8f3c843f48394e18f9ec520a7..49b55dc4c4ad980a7e2ac8442a338545930f87f7 100644 GIT binary patch delta 13438 zcmb7}34ByV^2h5P12F}AU8NwQnV~#hM#5HKZsJPr3ToC3IFpwa~q1jACKvr2q z2lt_i2#PKULNMsCf3Jw3tRiGr#4JP!5D*k4NWiEF|KFSG$$Kc6$cN8o_;y!US5;S6 zcR!lWc3OL`)6y)i{E2Qoxt*H_9c~*wl`xR6x+&cEs&9GvKAe@l{ICU@+>@p)NcDdR@IDmm=W zF!5D$!;3Qh1gfmbxSQjvMuuIPCZ5KG$7PyQt42BvRNhlsBOd8~Ra0?8kJI7&{A-$lqp*P!)7p@zELCTsMd7TJ9^4n<+>{xdBV3WvxoyM6i(i&k z-4d=&>D;wkm8p6l&0xfsDhe;Sij-(u`P@n|^)wd~pu3;p57snXhv^eGx9`(x0aT;W_G0O?a*P^J%z7{rPV=p(}p&gk4>&eAP$c zBK(x^46njZ-j48I{Lr>=LKgbo4(H;h{Ecu)mNhYNtI&%}dU)`lq;OqUMtECRI!~{K zYgD<-;db31w=tZDpS<aesu`aEt2#=>SpQ>@Pml0voME)rMCr;m^?cW^Tky}0(Fu4mL9C$J zaxT*IC~s+Vop&G6@*IguAf-;y`!k~Q-V$x+V|)l)+fSmcjNhyw%I_=Da!y(DHJ=g6 zttHy!Gm%rBh3BaZ{3bY=aTU10uW=%bPJsS7Y(9G(ks8k|#t(t}>iA=@YIOqZ|L_n| zgIOXe#v$r=7*T?o@d*=;5UtVi&)`y>K@Zmx73p{fczDo6X;7#-(Do?wfioH3qOvSe zU2H-s_!9CkC_Ty{j{b#)MLLUn97jZS{22H+SY2W@!r}>dWRqwqQ&{vB(Ign01Xc}r z1w0#kHREr=%XIw%z9wo12ga-YG6qaXgMbj{vjLT0A3RWNkgD)3cnY{ZV`pT{H~au@ zw38YB)j8zf%@P$b-u6Awe#je`Ua={%?^}K)7wY~E z(deNP53DbWhZBf_KTMKlzRk_eHHhCKf?3>vK^*?Mq^jx)a_S`41V415yYI0i}1#wVUp zhMeZhEd72$^4}>@CX@RYc<~+B984~7o~T}D=s%USr}aMctONia|~=prJLK2=MK%iG0Hf~cJ+V)>Pd36 zL8NRc^7;jSHy?Vf14r4@w0x)s4+pD)YQ^Z7#L;{m4*_ol$J1^fxS&K!OG`3GdyBPD z%m7cEE>R8B_afMJUvua~^cfm5XGk=h3A9h)Xp)X^0&fM^vHl0a%V%m_37&JmL@u^A zr@%dY}A8P1%G|(JPAehEc0@%zZ+y#CV9^C>~*J5P)rTtsM z`U$c+UaD^)SRdinz|96IoFLr98`~&D1Yx)5Ks%1cm6!-w5S^-9dyc$dD2(z1a1PQU zzR6aD#YtM;9sw84)oRVPSjxGOUv_lrW3A+)d!Vv6>e%*EZ{gi(m(Xf^Y1g}DMn66dj zb>Ou+J_*h$({2g_6S2X-*?ermCUE9`TGkD`8c6|8fPQt&%D@%n64fJ;Ja6M@4;u1x z0;!066(+oc4HyH?L4PLW<&oDCg#mo%{;n|e2~5n&e*<{*-{3ixMD_f`Y#9DmR3O&> zSq|n|i0aNbr8l<23={QcdPjnXgOeGD!Hadg7o4YYh@R}j(TbTSN?`-`f)|713No(6 z{zFQ{xe%NV1M?uS8u%%=E9Bd;@tyj@QQi2l;G=MSEbD&;{00n|7-fN{TIFba;hoR{ zRH$~(KrdT??)^C0{&#H`m4bJH^O)mxV0}e1_D4z8RX8uW3UI>ison7_d;rBQD z#na+QuOuOf4;?o`(ev^B%+V+lBCO*#!8NP3g7yt~Cs<7lH6U3%aTe(09|7m-xB=V_ z950AQtZ=n9Ua3qG4y8PbMt#&*DleuA6Sx~AhBV=#ftwaFbQYdVu+~^PYFvl8qiM*| z?a0Jj@K$EaGvNAJ%}!D`S=nb4Hm1~~y;0XbA@Y<-*u;gdhQ3wnCCX=uumtP}OH5y` zog-%h826sV^&@_x3kGR1Oz9->yJ z?UxX^0vw-7zLBFsaD0Ewiag~Ip5sEd<|1uA&??U|@Lq5_vtS2!Xh=)fHrJ!_?9z@K z4_N#VS9%uF72rb1_rZ8|<9`m`369&*{g227jlDDx4Y^tatp=BVq%FxeV7XjVFyID` z&ccy=HbDt^9>&LcGx#_-ep;MSI=Y2ozQ>@*LbtGl8##Fp9Qp(|a2C>P@b=vZ0CPY< zp!V+30DuEaj@IbxX`den4iw6G%b)U5!;i67AM$z|c=%Dxkq(0qiH9{u zhDAF5Q8;J_?H`T_F>W!7xNkH9a9X01j9&mt3$$@Z!7IS({!t@*%@~|nI-U%k^qoX| z+4yzfWZn3$!6)aNa2JV=Po;i$aAbx+e94NH1^L3M5nYDijDnOoDrcaH;L(j*!TB4w zN~d=Zcn!EKvnvID9mjaY6?Pivp2&{D!X`1a6meK~4gqEh@Hu#GlXhS4GXxd>2koUX z8(j0Fc7|>P(?TuN#hVfLpS1pA;N!3(esVkkc4_?~szpP!PM~`M0tSH%FjOr_pMbYw zf_Q*4Zh@oVcnXgNr=N!dEMp!6=lrbkTj1Oa8lM6WzbMg~sD4~{%5Ft9K|{QvwZ9Dt z$k_ZyTmde?gq>L=4}v}5_}(=Qz0}~Xzu;lFU)q06&muf5kDR?tND^+`jFsQQ8>xYL z^2wdJu5d>3vq-!&7O4U*WqbfU3Gzc3C*GwD8HV!s!6-QNh!&wAB8K6@1R-=`BqFg$ zi{v24<q%qV?dJU^NBRl^HjVqXu0{9R&Bq_zvh-w}NRr zwo0Or%47028hAJAv+j^91LtEvUpC-fux(ao-6{>Up3GE4K7E2yecJ5j2s&ytQ0)|mg0Rn@US5uxbRn7=IXYH&r=4ZO2vm)9WAhF13_>*% zoWth14f7^sXuMSUG$d^YsAyVlrT z#fD;FUryWoSD|Xv_Cr4_qw|nzF7(GXnSrJvz~SWEaHy?!oMM;wl!5F zI@`OMny=FXFllyI6E(7EwVM}lY!h}1p{`{(j^JO~~Kj&Fpw!A0PHY(j1U zcD}BEb!5l;La`zA)I-S4m$h+a3vmxIn@D0F?*c!+(G)Gl>IUlY2uI(6P3Tv7I5@om zFDb@Pf|so~Q6ZamFZd+5nsLS=j^5m0qGK_6o(dzc?GoPM2R(&EUzTg4nQY<#vrtPn zYlgi6t_62tit=Z3l=iB2(Re!Y+8*Hsj_o~Ir-`Alu6^pTQA3oeZj~BVp?Wk~bX!il44R^&Z zQEImx^*H}oJit*kROUa&SIs3qc99%IW_5fE0+)z)H{!jdW0PBD0D8A>O zGLpm$JPDoy1KP3v5yxQAF=O=PQ^zj^&wMBL(op%yFX2FqF`ECWgdOzY2}Iy4BUNBk zRDpNFOK-yUmN9)rv;`h#vk6?_lJ>^vJzABYivwa2=J-vO7rqR9uvOULg7$Hs?Z z1Ns>7{QSZgeJiO7#)8M4#379ksr;PUj}Y%-6C4BAVTp2a3UFU5FdN_1FcYnS3w{H7wuMoRqu3Yp~`y ztpCw&9OazAZHg_)f50b^1MwuR>&{UgaxR42i5l=|4=lmOn8Fl%_M0c+Mq7;}Vf`O~ zU7L*2|9wzBy2gm2x=q`5BHh<c=Luxk*I=&tE)M##CIsyO5g)E`_C(h2+@8W!DTqM^*AbKnG2y1p2odNjs@0gcA! z94fB_7b2u;WL2&KC-;lpPgJgwaRFQ(doQYd4!p$`-F8v=fD`u>854|S6Kq67A@*fF zt5aN;uK9HEXq3+Q5`73hZirpA)d|Rr_vBeE$z-s;E=&dQ5{=P=Q<7jQ&TNI-wZA zrMWi>3-j;sSJg=Orc>alGLu9ZnuM%g9};zQ{V=0yc8bOxTL-{4YYoRy4#XSO>1^8@mvz15SWT`{3r!LY_JkA>N=Jua#i^ zaXS+C+`XIdP-GE33vNW=StZ0GIvw}i_%8Gbl8|{= z3*Mq*^Bj((y;}d1Wq5=ChzXg2KY|<18=GtY)^b$VRk&yyVs+pGcsU+MrS0#GO?cZw zFd*4PIc;OS4?Gm5IKJlh&O;JPCR)luoWB51;T%(QB|HMoLFwJVJUpPh*dWYJ4!Qys zr`;R$IXwZhFX&PFpBCg~k4+BPgI0&r>_V&4uH1K8u!ejNkKG#dIo!d3&mDC52UGSO z^>6>7o@vF?`UhQpi_2=2?Vh095p;R{9@%cSJDsw_9P~OY*8aBNBW(VaaOgKwJ6dgo z^H+L*L#^7%0 zV72SqERrWJLF){@04Y~&nmlvHhZ*t;`gF6XN4P+Jzk5~Zt=^0k0lteI(^ELv%+nIowCbfw_1X-TXwsh z=BQ7<$1aPSHcwR;ZcPumTo#`Lnt~p;J?L_)?ms0NdJb|2+}L?8*&47rTpnwDC$-*r zrS6`dtI;zjFe0Pye<-p-VE?W^Qr7CGuAJcgnkd zDc|ikx02G-B=ih-THX(B<~HP4)cO zvX>QYeFoW@i?GhvA(yW*vc9tF#4j&xu_>#66f%_LDPmhwi_%VIb%K}^6_#2OR-X9Y z(6?txQvGcfWyE7*dduoceiDqgwX`c`msZkaCx&~*^tt9K-s!$6)27YwIA_nE{D8%L zkHs@PQu~u|@Iz(D2jcA97EcPfe^Jq_sr@Zhr_*V*Ib1HcQ?}V;i_2kFI_wdVTTW9yTyg;gw5_Z?Onk94s!E zQPsLlV6p#(hCKD|(_#i$Tvt?~wAn3wpB%6TU1qP(=X85KZYvV5{T{JjlFJhaSaC|= zGUd0qW#wk1ZHsm^kD=(IE z!#>fblNu_KDlM9IG7k`OPku(`v`CD~l`hYeZikNP9dsx7{2xdohXU zH{_H4Cyq_CTqfiV{}c0+0mDV9^Ob#pjQ_HOCs@QzO6h*_P|NFeMeVIzt}ADasvy*g zLh&1QuXWqUV!omip;mffxpKy|QiFV1H$t)c-8w(yEAQjh8u81*pQs%o%71o#%zAq$ZNxiw~jAYLqH z|D!g`B7&mJZItM+tE*8#S&4ueH7h7V!l6b9az#P;|9a+4x>4hxAN`EqepU6V>eZ|F zy0i9lkJeK?s`_yGf9pGdTlUiMuR4aNb-IqPTpOzCv@kRvVJJ_|P+`LNe9kwa{7${) zk00lHZprW5LC4e6p@Oa^zIOSR@~%6%P>-}*cp4chPP>KM5!#y8zuUX1dX7SRPM6w& zbaEBZkxJSgYEJ9V^$sO=o5{@#Rd(yyk(B4Pi$klr_3RyysST&Qs#p2y zmilhTxu^iiFq#0P9a8l=CQ$oisIkX1?#57F`Y`=`2;~~C@7QwwJdDrZ@`Rx) z$5+;e)+CSM>A#_)$tIpGp~RG%L0cxIOyYRz5_&z=#OGWRYD_hyP#343DhG&bbO-x& zYAtQ)e|$?-`l}pY`%P$cuPnayNNAq&(-c~({2T~1C_i6@5_;ojZ^+f#!dEtgO7N5O zNoW;*=%Y|Qerk7x68d0lXDAy#IXgmSeJq`6yKpI&v~bk$q)=m@?xDB)r17G2hsq=_Tqg1R z`X}2Y5sMT3hr^FSo;Zeoh#M3>G=_igalVe^%?J2iDRl`Vjm9`n9Ib;`U4s1i0e%uc z$SV)|itm@QDou>qz<43#j(WmVzv6pw+y?o`S5ygGlAN zC?5bTHukXbh2c*Q@~ND@#%rQ(@^?*q@7}7X9G!*OSPZ3MQjYlWfJ400VaRu%5-rOV zsSHn*NiP44D0h%Z%M{1Kx(1?sgGJiPM|nTE@^X>3@$%Ad`R>6X`w*DVL{7yj&(po& z*TDwH{|1lttIWgc1nAFW^9^n!QoQWLcs|&m;qBl--~=}Q_5q?6vq)l;gEZhPWC>x# zCj14wM#IMr5|wKln%P8DqTwyz{D6s4VNeO+1b7iRow4;0*d|hAbV4#8fjk^i(#Z2c zj-J7ThczAxN0AW?-wi$rR+d=FXcKs}Rir9r@P==Qis5h)SaIMH@LX^g#yh}IXvRB! zOO%KJCMx4LC|rjJ0#cmI6dnTm5P{M`6oc=9r-CnG+%bIncl=e{t;Q2XRo5#^8FlQd zlSChD^ah+FnlMVF9nA5qr%`{`v6@C8RcDAkhrFKI{pd{i)9?9}T(G$rm6j(`CR2R; zJ1oIXA}wKj>Gwp9P>iK`3OHekT0`r=tr#~j!{34zVLZlzk3s$xIK~Qp4|vb5BCUWt zGJG4&Y{44eCK56oNqNd~I5bvMWZ*Il9|kW07c&P7e;_(}J2nB+Z}>sJ_BdZ5o&5=$ z;|`J1ncPEXp*IejgUMOX5jANXoh_d_&L1<1NL=1{wF2}oGohfZhG||{e}do52h*_t zd4Dm{l`y9)+<0&{I2QME@IDQ1!2(s@g)o^r|AyU@7}qiVIpf@8to z53ckh*UYbKa3jWJ$vOcppRUR~ut-Z(4$^!)*rPG{I=Dm?pz~l?K&0#r(V}tmgacDe zB*H<(p%0Lew7b=!INX<`OxVk2ythF~5 z#iz~iLU5Y{GA9Tl`D1$dT0z+5S(nJsgfbJM3L;Z|3-*FxFv5c`!Lp+)VwCW(_NkS4I zeANg;&&KvMM@ADetl>w&4Xf3L_8NExSSbx9A>V*kY2NfYQuDwD zaI83%f~z&W2fPUSeVG1D4*0W4q*i8sGgz~T0v&gR-^~zKCQDs%khKbRzuW|_2FGUN zM{raCj_t49@RJVV87`Qfjk0-9?L1y^Jvfbd5CZ1~)pD%|+v?Qg=BlgF0pG`!o@I0@ zxB&83KwsJT8^AljF+ZBY4Jvyn>l!S9`hZHoR9Hg!1;&NK=y%mEK~#O8}4?EuwNfsn~w>h zw}k0QW08R4A~iFf0Tv%r^|pXlfR+8DWcU<#f`*;9zdL>lSp{lWN1c3tX$Q`!skBxHt1_Klmv0 zkyrSsCwqANDB(q2aMCD_o;ZyJvjx}yUfZhP*IU6=KdNsUqpn58{G^_tRbX1IR{BTa zgtO{+-|H|h{D_?#lff=^JV@*DV2?(i8C(p3jc`v>|a#=4>>~~jcr%am%+2ZN(m|}bHxOXS~MlK2|Nh;T`{g~g%+^b*+`X9c`J3Ag#N5K z~xS9UehK4$m`ctVnq7O~w@=D|fv za|3-DJP7*TSVSklt(p`K4IdgWyqPEs9)qrtW^B75zBLi41!uB(dSaf0?kZ1`KM4r? zQ>I`A3obKK4vYI>aroUS!W$ifm1s{TRwKEX{txJ4iB}rix>zqL4&v0^{~4Bg-(ZZh zHkywFyD%QzWO^Ek1e-56(r9LnE8^%JxPHpw!0OVSAYnOh{f-it{AfNQt^=O$`fgpC>%7=f9s89#;yb{mn;Q0>b;IQzi=Y-OZ-12bI24R1Kr*Rfm=ztNQccPBwR57OPb2)R?gA>XVfn=()r(y11oKG70T<}$q)CPb2&8O9t@w}BUE(Y#PICTgck+=e*?n<_X?Xiu2=YzeZnz4w^rW%6)wFq z!bJy#=eTZl&qm+CQ?MA0Pl;xg;Cs8=_mFU1ux>BW#yg{zC}r4+ew_O>Uck{c6#fZZ zo@0ufj0z9_0v`i6M%$;t$p?rE|AT8Xd{)>8Uhyw{ZpAVy?EQ);^M&Yuw%x5jSPHaq-v~+BJd2jY9y|=jK2ieAmR)* zLHBR)S@jZQtiHPzsu0&J=ZhTp! zY9^n3UKuw<{+go5AI5)czK`Cn6zp>KQh5wgnT`l;IH7aO{%<2ccK1M;HZ8u8euCQG<|7|yelaVT&72> zX~rRq6e)Z+xCtq)V-wVX8?i(sj3;!)&VE2_TcW}wI8Yk>7OCj(OTCci^+fA}{vgaB zncxf_oLjHfz}3BQOVFhF4R8~7!B{45>w_MaYicXX<={0~^Gr5g(3hjkuW_4-6*agS zH4rPp&HXsaLCpnGD-j0@`eO;sM-3+9vtPc58|@wx2^)VB?0V4{`Rjuc(J64=+v>Kv z!iW^VBhu?^TL!@e7?0IRzYKVCd9-ON`X7PoJ~sv<->;MhT`on0Tkv(2O;`c00>>h5 z2G=}+*H^YA|2GiwM^G~?!h_(9ucP0;6nnidLt#HJQVp|L11`}7bP7CnPf(4}h5JH{ z@_x(|4x-;{x8;c}7{oX>MI>YYxC(DOt3?n&2S*4v^1X#|4R|AV4H6RBHD|y%+yF%! z@_IT4uEt;X+5{dp<0?MVM0qTtZQulSx(|ms}oz>h6yIH3Ci)H0Q)jl)%(HPH6P|e%FsGvOSBAp zR3E)+D--MjZ#|_J8Slm}()5L);5wZ#a&Rj0|8S%KFZz!dIf<1AGz1=_ip!Wo9`Kqs zqA#q7ACsgl|2c;|(UX9`%`xH<*z zg27Z{#6u;*gWyDs!8sGK4HJx!&&kTTbt2w+a-vrVg%^QON+#OIYTz+1w&f^fknvG) zEBZtU+cj%^7djN|;J?tLV(`{JMk-+jR)AdtjFCT-DHDDKo_9GK3yUzP2sP7Rjkp|q z@(OiVy$wzf@n*~HTyX-IjYk*ZnI3`FRyH-Mp` zMEsb-Fqq8@ehjwR)zhu_-S`*}E@0z6a0@uriZ_9)a@873nhu8?>~K=f|A}}|jR%d) zKoz(J3bAe3u@nZJNFf_{fos7JGwy=LE*XM|Sc-$-)}gAyyTLg*#>hop35aH3+geT7 zitPL!f(KjiAU45VaP6Szg;-GtgUheL&7Y;b5ifMw3&?_5INdg>$E}EaZT*XQQDhl? z2YeEZXO$4m=&(7+SPj0mbY-~!>(OFmFqOFhifjaOqycm^Vaz}K+o(tfB!9%9<{P{Y$?mjT{62?YvY5>-IqSG! zGgvKFn`CzSEN+k6R}}Ee_Z$~2!6Khu@&){EzuE5cNs?_8Wz19l&C2skFP)xMROEA* z-9?rnv&C$;N)D&nZ?Q^lr`adDJVj=Imi5mFn|~u5`~%bOi*~~K8@qpC)}a-?C0=|I zW%!kUFEStU@gIcL+u~-;&aD0k!*`qz`u}!iKQQTf+~9CH1CqsU_WPVJx8$|k+)lSO z;F2swMYbZ3Es)ig$#|0TkrP5rn$>FYxtv9AKMEt@GTW7!kj*3X-Q_VS1!J1a;s`k1 z78^>*WA=MJk>TV?dS}q*D3XdSaKR!u?L|&kteDh#iswL9WOe?8e59l%-+8mmS9*_} zeM%T%@E3V~X0O%b^7(9VG$1cMCEPg7;qZ8EPOsnPHJj~{+aGg{t!q5LULLDt*!jr{Cqb6xlrim(S_6+uQci#fKv|o)#*C@s`tK zjg@0Ox3er3h?>QVmv>TD@J}h&|KtRYxbndZYS(Ixt8jt5#r7xVUB8y^`-huJZfz9? z1hGFHlE-UtTFgGLBuSBSy2x6}vMV7)+H2hPvnuQNThZX}?Q*LU`EO-^SM=g5$f_*Z zudQDD`+dgd*7Vl6u}M~W^-n@~*)Ubt(G*wODX&h@Wk!U>c*62qXY_*x#FNUhO7fV; zbZPO;m7NugH^$qQHkaDeqi2SHjXD{l#In+Z}F)Q=a~w?n;Bl>2vt}ZmZvI z^LT6yhupkFx6|OWxqKEJ21Pa}&I7kO`V?oL&25wHes{oa^Z6~ZZHI2Hp{U5}GCMsk z*fu*HF1uWPKsQKUwM&;T_uHvUH3R|yo5SUIdCWeK4W%C*zEd}e8x}7u5_8?|a$4<@ z!|JwL-Db&Za}c_=6D3fu>nZNTz&8bOfT8ITbE)md#paIEg(59c8A05u|$(A?$HGd?tsna zarkgjyX?L|Ebq!tk~a|WSshM~WOEn!JgC;)x^g-BLtTG^BHjl+> zZ&&)t|LMjj|7Od|hR=05a(U+x#wW|48OI?#G*7YOiWy0mSn^P5^Q9Z)PPh}I$Q5*j`w|^=PlTu@m}Y8?sMJOb>HX2 zm7WtIHKg1pCsX-AYy zhXmtVLqRlz0{W_KD~l90=3Uz#BnJ-0?yDK92qwJtBzR9v2wKNSu4Ws$xFJG&hcO8_ zcxs2z$+-3>Aaf@y(E%ICEa4=~|IlK+szv;QB&lR-$0mH-aV@*IVlkqET4Gp03^Nu_ zU&|i2M+9ml!NwVGMACJ!wvzHh`EB-4mnI51r>L|732E8F&G&EZSa%vJl+htg{aiFQn(g;tkra+S=NST4Gxeyj6(F(>oVmZPPrG?d`^G%h3V zZ8U4*mhZE^b%hS*QU8_=#^Ix2Wic4XEw_WNxbZ0H?k{4F)w!%^eG#fkSo|dwT1@xq zT(-7z*%*#r&1E$ABG}XgBR!>D5x5xkno>+-t(c%`$}k-iM>zc_5Tz0Y6_~Fs$oj9c zh4{s}U*pdU53nVDD+H&J>lT|_2u2B<%5klnp%KkxUH2Dq%Np zo|fZKb!236w2Cn0l0w7@l9(z;FhXtRl0zCZ#5djnwjvy}TslZ(a)mc6wwsRbDBlGS z-&JT!)`a~03>b+YTmq}&rfG1p;<3~M2aMAmlfv_Od=@+rkDmv(#HY@Hn<@q~4iS-7 zBWfY1F`fahRnnxw%sUM&lLRpvhtGoBHWW6cc4?U`%rQ+QTye++mNKTrw>rM^Gw6@k z&w`%23$KW1lRK(&;9&9kL%cCX$u6SCN^dIb1SA`mF+KhsShXUDI5|>DmmVQ9B;kij zmPebotSp77j`TM2dVGEs9G*8zcSS(wHIpitLTY3}9N*f}wb0NUI?OF6L{La|YV7|H z4?>M4YfBHfl*U~Ho3{-d@Dt9*b5r2v`1$+b^fssoL`Es3kYE_QvN|H%_(NFv}23uR3F8eDea>UqRM6CnbX3P+}yE=wt9_ry%Lk>#Wmh{(Gt-`nqG?Af}i> zEqRJPvx+xUD?axLu!HI00F4STARMGJsENGsN-O!KGP32#t(1p=!`qQ1ig(Q zJLAq7u(Iy2Z(RUA)5m7OaC=4a5FEr#7@?AJ-9ICxyOVQjJyXJ}kR-A3*erOVqNH-# zXy^p?8cGq-r{L`p@on6blHP98)waCc7;iF#N)~}&-FxJ%EEAMM+9;zX%b?3{lK+RD xMjKDVvcr%r&g8l#`}HEYvv|wY#HhDrc3%RAiwSBq)FF7b?=qO~yWH`6-(OT|B@6%n delta 3939 zcmbtXTZmOv7@l#jK_YSvILr*h$c*|BN{4m7WTA*ckYtJ!bWzrIUXJ5kGOJx6^pK#H zw1{5nAxH?jV2xT?CSo`e751DKHbhX=L-iD`Go4c^XP>=K!g)ITTi^cI|Nr0j|NF?L zkt3Hzo;lEeVBYa8ew#CDlu<}A4<)1GPCL1$4*Qlq-ul(o>8Wi~b!w$o);r>akVXX$ z1to%EqAei^vAXQ5iWDv8Ef3#McI}SCmorqO#sw{eW8On!sE-d_&Q=ULm;Mb_ap$SU z%&ko)|OE7|IrbP!=^p+OXDC3rk` zCA)7WB7t+nJPk%zDNsAKis^~+yX=7>OuQFNOJyk33gfw(@7Or7c(oS+r3cbGhzXOd zO`q;x@eMD3pFNeA))SMee07Wy6pmNNi@vbN#T zi@K{Rj$X}{L3^%FJq4N*=%G<8LCcL{51tyPWQ%a zHZgdE4aaY0Gnymj47MiFWVzfL(H46vQ;@Qt5mnqMiKygWJ7k!|NI}F@;Ptt*{+HQO zeB1Y1{CVjCc1_(%!O3x5yU3+rl)xz**UK3i(QGz!Zz;EI@&3c^`QAz6)Kp`io^0%E zNWBN|P)~Sk;-Z(pXngCZYHElv5R9ZurA_(Jn^f-8Bs}>TP^rzI#fq>-N zdZV#-YaLM{nPN&RA|w_ZGp_ooDTfp@#JArEwiciu9%|2-2pSs``^~^`lplZx?=Edi z)`k4^Inan7&wvGS%`|wu7DO7lHoy=(3Ygn?_&j(r9zG3ji%*{bx71kL8<^mlC?B-L zGR70&%^HE2YGELeSlJMGTz?YWv7)pntxIDh1VUI)$c3Vca0Fu-d<)~Nzku<0^&}X% zr}T=5cDbWE1$LK@Kg5eEDpoNqMMaIUrfMf3S;(QLw|@v0%*&DFfm_IANM;~e@`!3p zM!R%bRSHpWj288JeBnIU-)xrQ8q*pJf}l#vU2-cMw{IL6nk#6Yc1OZ=NV|@3QZj$@ z;z6i5WqoOXLlSRUx^C0bU4EzY@zil}Yy9#faBP#N7)eP{TD_P_;;x!Ugp1#IP3Io{ z6#O|Topq8y&SkKY*!a#Fu%pHxQ-~Xj)1HStQxSaz{;DZNJ$4M@5U5aI#Fb~k#Bwf) zN&-=yHihqDmvqJF&jP!QI&PIF>BZazqj2$o_}W+Ck%b*hD?U38R>e yW*RMa!>VRT+n(I9$$q;4?kb-$tz>kXGLti4e>p)bh7JVJja>xOV;2Yh82cOg@igrK diff --git a/artifacts/test_program_methods/validity_window_chain_caller.bin b/artifacts/test_program_methods/validity_window_chain_caller.bin index 0c86a46002f572c8ad3a1db8927ed8f63e347735..2531a59d5eee3255c2159d91bf1b13e1dbd06b46 100644 GIT binary patch delta 16217 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 diff --git a/common/Cargo.toml b/common/Cargo.toml index dbf5ec0c..5d8e278c 100644 --- a/common/Cargo.toml +++ b/common/Cargo.toml @@ -10,6 +10,7 @@ workspace = true [dependencies] nssa.workspace = true nssa_core.workspace = true +authenticated_transfer_core.workspace = true clock_core.workspace = true anyhow.workspace = true diff --git a/common/src/test_utils.rs b/common/src/test_utils.rs index 267d10ce..806048e1 100644 --- a/common/src/test_utils.rs +++ b/common/src/test_utils.rs @@ -47,12 +47,11 @@ pub fn produce_dummy_empty_transaction() -> NSSATransaction { let program_id = nssa::program::Program::authenticated_transfer_program().id(); let account_ids = vec![]; let nonces = vec![]; - let instruction_data: u128 = 0; let message = nssa::public_transaction::Message::try_new( program_id, account_ids, nonces, - instruction_data, + authenticated_transfer_core::Instruction::Initialize, ) .unwrap(); let private_key = nssa::PrivateKey::try_new([1; 32]).unwrap(); @@ -78,7 +77,9 @@ pub fn create_transaction_native_token_transfer( program_id, account_ids, nonces, - balance_to_move, + authenticated_transfer_core::Instruction::Transfer { + amount: balance_to_move, + }, ) .unwrap(); let witness_set = nssa::public_transaction::WitnessSet::for_message(&message, &[signing_key]); diff --git a/configs/docker-all-in-one/indexer_config.json b/configs/docker-all-in-one/indexer_config.json index ca99a90c..f2005ff5 100644 --- a/configs/docker-all-in-one/indexer_config.json +++ b/configs/docker-all-in-one/indexer_config.json @@ -4,153 +4,5 @@ "bedrock_config": { "addr": "http://logos-blockchain-node-0:18080" }, - "channel_id": "0101010101010101010101010101010101010101010101010101010101010101", - "initial_accounts": [ - { - "account_id": "6iArKUXxhUJqS7kCaPNhwMWt3ro71PDyBj7jwAyE2VQV", - "balance": 10000 - }, - { - "account_id": "7wHg9sbJwc6h3NP1S9bekfAzB8CHifEcxKswCKUt3YQo", - "balance": 20000 - } - ], - "initial_commitments": [ - { - "npk":[ - 177, - 64, - 1, - 11, - 87, - 38, - 254, - 159, - 231, - 165, - 1, - 94, - 64, - 137, - 243, - 76, - 249, - 101, - 251, - 129, - 33, - 101, - 189, - 30, - 42, - 11, - 191, - 34, - 103, - 186, - 227, - 230 - ] , - "account": { - "program_owner": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "balance": 10000, - "data": [], - "nonce": 0 - } - }, - { - "npk": [ - 32, - 67, - 72, - 164, - 106, - 53, - 66, - 239, - 141, - 15, - 52, - 230, - 136, - 177, - 2, - 236, - 207, - 243, - 134, - 135, - 210, - 143, - 87, - 232, - 215, - 128, - 194, - 120, - 113, - 224, - 4, - 165 - ], - "account": { - "program_owner": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "balance": 20000, - "data": [], - "nonce": 0 - } - } - ], - "signing_key": [ - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37 - ] + "channel_id": "0101010101010101010101010101010101010101010101010101010101010101" } diff --git a/configs/docker-all-in-one/sequencer_config.json b/configs/docker-all-in-one/sequencer_config.json index d7fd3490..36eee2bd 100644 --- a/configs/docker-all-in-one/sequencer_config.json +++ b/configs/docker-all-in-one/sequencer_config.json @@ -16,117 +16,29 @@ "node_url": "http://logos-blockchain-node-0:18080" }, "indexer_rpc_url": "ws://indexer_service:8779", - "initial_accounts": [ + "genesis": [ { - "account_id": "6iArKUXxhUJqS7kCaPNhwMWt3ro71PDyBj7jwAyE2VQV", - "balance": 10000 - }, - { - "account_id": "7wHg9sbJwc6h3NP1S9bekfAzB8CHifEcxKswCKUt3YQo", - "balance": 20000 - } - ], - "initial_commitments": [ - { - "npk":[ - 177, - 64, - 1, - 11, - 87, - 38, - 254, - 159, - 231, - 165, - 1, - 94, - 64, - 137, - 243, - 76, - 249, - 101, - 251, - 129, - 33, - 101, - 189, - 30, - 42, - 11, - 191, - 34, - 103, - 186, - 227, - 230 - ] , - "account": { - "program_owner": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "balance": 10000, - "data": [], - "nonce": 0 + "supply_public_account": { + "account_id": "6iArKUXxhUJqS7kCaPNhwMWt3ro71PDyBj7jwAyE2VQV", + "balance": 10000 } }, { - "npk": [ - 32, - 67, - 72, - 164, - 106, - 53, - 66, - 239, - 141, - 15, - 52, - 230, - 136, - 177, - 2, - 236, - 207, - 243, - 134, - 135, - 210, - 143, - 87, - 232, - 215, - 128, - 194, - 120, - 113, - 224, - 4, - 165 - ], - "account": { - "program_owner": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "balance": 20000, - "data": [], - "nonce": 0 + "supply_public_account": { + "account_id": "7wHg9sbJwc6h3NP1S9bekfAzB8CHifEcxKswCKUt3YQo", + "balance": 20000 + } + }, + { + "supply_private_account": { + "npk": [177,64,1,11,87,38,254,159,231,165,1,94,64,137,243,76,249,101,251,129,33,101,189,30,42,11,191,34,103,186,227,230], + "balance": 10000 + } + }, + { + "supply_private_account": { + "npk": [32,67,72,164,106,53,66,239,141,15,52,230,136,177,2,236,207,243,134,135,210,143,87,232,215,128,194,120,113,224,4,165], + "balance": 20000 } } ], diff --git a/examples/program_deployment/src/bin/run_hello_world_with_authorization.rs b/examples/program_deployment/src/bin/run_hello_world_with_authorization.rs index a9750bce..18b4ba80 100644 --- a/examples/program_deployment/src/bin/run_hello_world_with_authorization.rs +++ b/examples/program_deployment/src/bin/run_hello_world_with_authorization.rs @@ -50,8 +50,8 @@ async fn main() { // Load signing keys to provide authorization let signing_key = wallet_core .storage() - .user_data - .get_pub_account_signing_key(account_id) + .key_chain() + .pub_account_signing_key(account_id) .expect("Input account should be a self owned public account"); // Define the desired greeting in ASCII diff --git a/explorer_service/src/api.rs b/explorer_service/src/api.rs index 8c2a0e36..5984a636 100644 --- a/explorer_service/src/api.rs +++ b/explorer_service/src/api.rs @@ -86,7 +86,7 @@ pub async fn get_block_by_id(block_id: BlockId) -> Result /// Get latest block ID #[server] -pub async fn get_latest_block_id() -> Result { +pub async fn get_latest_block_id() -> Result, ServerFnError> { use indexer_service_rpc::RpcClient as _; let client = expect_context::(); client diff --git a/indexer/core/Cargo.toml b/indexer/core/Cargo.toml index d609f5cb..6c7ad01f 100644 --- a/indexer/core/Cargo.toml +++ b/indexer/core/Cargo.toml @@ -29,3 +29,4 @@ tokio.workspace = true [dev-dependencies] tempfile.workspace = true +authenticated_transfer_core.workspace = true diff --git a/indexer/core/src/block_store.rs b/indexer/core/src/block_store.rs index bfba5ed2..3b593071 100644 --- a/indexer/core/src/block_store.rs +++ b/indexer/core/src/block_store.rs @@ -5,9 +5,10 @@ use common::{ block::{BedrockStatus, Block}, transaction::{NSSATransaction, clock_invocation}, }; +use log::info; use logos_blockchain_core::{header::HeaderId, mantle::ops::channel::MsgId}; use logos_blockchain_zone_sdk::Slot; -use nssa::{Account, AccountId, V03State}; +use nssa::{Account, AccountId, V03State, ValidatedStateDiff}; use nssa_core::BlockId; use storage::indexer::RocksDBIO; use tokio::sync::RwLock; @@ -21,14 +22,10 @@ pub struct IndexerStore { impl IndexerStore { /// Starting database at the start of new chain. /// Creates files if necessary. - /// - /// ATTENTION: Will overwrite genesis block. - pub fn open_db_with_genesis( - location: &Path, - genesis_block: &Block, - initial_state: &V03State, - ) -> Result { - let dbio = RocksDBIO::open_or_create(location, genesis_block, initial_state)?; + pub fn open_db(location: &Path) -> Result { + let initial_state = testnet_initial_state::initial_state(); + let dbio = RocksDBIO::open_or_create(location, &initial_state)?; + let current_state = dbio.final_state()?; Ok(Self { @@ -44,8 +41,8 @@ impl IndexerStore { .map(HeaderId::from)) } - pub fn get_last_block_id(&self) -> Result { - Ok(self.dbio.get_meta_last_block_in_db()?) + pub fn get_last_block_id(&self) -> Result> { + self.dbio.get_meta_last_block_id_in_db().map_err(Into::into) } pub fn get_block_at_id(&self, id: u64) -> Result> { @@ -86,18 +83,14 @@ impl IndexerStore { Ok(self.dbio.get_acc_transactions(acc_id, offset, limit)?) } - #[must_use] - pub fn genesis_id(&self) -> u64 { + pub fn genesis_id(&self) -> Result> { self.dbio - .get_meta_first_block_in_db() - .expect("Must be set at the DB startup") + .get_meta_first_block_id_in_db() + .map_err(Into::into) } - #[must_use] - pub fn last_block(&self) -> u64 { - self.dbio - .get_meta_last_block_in_db() - .expect("Must be set at the DB startup") + pub fn last_block(&self) -> Result> { + self.dbio.get_meta_last_block_id_in_db().map_err(Into::into) } pub fn get_state_at_block(&self, block_id: u64) -> Result { @@ -142,6 +135,7 @@ impl IndexerStore { } pub async fn put_block(&self, mut block: Block, l1_header: HeaderId) -> Result<()> { + info!("Applying block {}", block.header.block_id); { let mut state_guard = self.current_state.write().await; @@ -156,15 +150,32 @@ impl IndexerStore { "Last transaction in block must be the clock invocation for the block timestamp" ); + let is_genesis = block.header.block_id == 1; for transaction in user_txs { - transaction - .clone() - .transaction_stateless_check()? - .execute_check_on_state( - &mut state_guard, - block.header.block_id, - block.header.timestamp, - )?; + if is_genesis { + let genesis_tx = match transaction { + NSSATransaction::Public(public_tx) => public_tx, + NSSATransaction::PrivacyPreserving(_) + | NSSATransaction::ProgramDeployment(_) => { + anyhow::bail!("Genesis block should contain only public transactions") + } + }; + let state_diff = ValidatedStateDiff::from_public_genesis_transaction( + genesis_tx, + &state_guard, + ) + .context("Failed to create state diff from genesis transaction")?; + state_guard.apply_state_diff(state_diff); + } else { + transaction + .clone() + .transaction_stateless_check()? + .execute_check_on_state( + &mut state_guard, + block.header.block_id, + block.header.timestamp, + )?; + } } // Apply the clock invocation directly (it is expected to modify clock accounts). @@ -183,21 +194,19 @@ impl IndexerStore { // to represent correct block finality block.bedrock_status = BedrockStatus::Finalized; + info!("Putting block {} into DB", block.header.block_id); Ok(self.dbio.put_block(&block, l1_header.into())?) } } #[cfg(test)] mod tests { - use nssa::{AccountId, PublicKey}; + use common::{HashType, block::HashableBlockData}; + use nssa::{AccountId, CLOCK_01_PROGRAM_ACCOUNT_ID, PublicKey, PublicTransaction}; use tempfile::tempdir; use super::*; - fn genesis_block() -> Block { - common::test_utils::produce_dummy_block(1, None, vec![]) - } - fn acc1_sign_key() -> nssa::PrivateKey { nssa::PrivateKey::try_new([1; 32]).unwrap() } @@ -214,49 +223,59 @@ mod tests { AccountId::from(&PublicKey::new_from_private_key(&acc2_sign_key())) } + fn genesis_mint_tx(account: AccountId, balance: u128) -> NSSATransaction { + let message = nssa::public_transaction::Message::try_new( + nssa::program::Program::authenticated_transfer_program().id(), + vec![account, CLOCK_01_PROGRAM_ACCOUNT_ID], + vec![], + authenticated_transfer_core::Instruction::Mint { amount: balance }, + ) + .unwrap(); + let witness_set = nssa::public_transaction::WitnessSet::for_message(&message, &[]); + PublicTransaction::new(message, witness_set).into() + } + #[test] fn correct_startup() { let home = tempdir().unwrap(); - let storage = IndexerStore::open_db_with_genesis( - home.as_ref(), - &genesis_block(), - &nssa::V03State::new_with_genesis_accounts( - &[(acc1(), 10000), (acc2(), 20000)], - vec![], - 0, - ), - ) - .unwrap(); + let storage = IndexerStore::open_db(home.as_ref()).unwrap(); - let block = storage.get_block_at_id(1).unwrap().unwrap(); let final_id = storage.get_last_block_id().unwrap(); - assert_eq!(block.header.hash, genesis_block().header.hash); - assert_eq!(final_id, 1); + assert_eq!(final_id, None); } #[tokio::test] async fn state_transition() { let home = tempdir().unwrap(); - let storage = IndexerStore::open_db_with_genesis( - home.as_ref(), - &genesis_block(), - &nssa::V03State::new_with_genesis_accounts( - &[(acc1(), 10000), (acc2(), 20000)], - vec![], - 0, - ), - ) - .unwrap(); - - let mut prev_hash = genesis_block().header.hash; + let storage = IndexerStore::open_db(home.as_ref()).unwrap(); let from = acc1(); let to = acc2(); let sign_key = acc1_sign_key(); + // Submit genesis block + let clock_tx = NSSATransaction::Public(clock_invocation(0)); + let supply_from_tx = genesis_mint_tx(from, 10000); + let supply_to_tx = genesis_mint_tx(to, 20000); + let genesis_block_data = HashableBlockData { + block_id: 1, + prev_block_hash: HashType::default(), + timestamp: 0, + transactions: vec![supply_from_tx, supply_to_tx, clock_tx], + }; + let genesis_block = genesis_block_data.into_pending_block( + &common::test_utils::sequencer_sign_key_for_testing(), + [0; 32], + ); + let mut prev_hash = Some(genesis_block.header.hash); + storage + .put_block(genesis_block, HeaderId::from([0_u8; 32])) + .await + .unwrap(); + for i in 2..10 { let tx = common::test_utils::create_transaction_native_token_transfer( from, @@ -267,9 +286,8 @@ mod tests { ); let block_id = u64::try_from(i).unwrap(); - let next_block = - common::test_utils::produce_dummy_block(block_id, Some(prev_hash), vec![tx]); - prev_hash = next_block.header.hash; + let next_block = common::test_utils::produce_dummy_block(block_id, prev_hash, vec![tx]); + prev_hash = Some(next_block.header.hash); storage .put_block(next_block, HeaderId::from([u8::try_from(i).unwrap(); 32])) @@ -288,18 +306,9 @@ mod tests { async fn account_state_at_block() { let home = tempdir().unwrap(); - let storage = IndexerStore::open_db_with_genesis( - home.as_ref(), - &genesis_block(), - &nssa::V03State::new_with_genesis_accounts( - &[(acc1(), 10000), (acc2(), 20000)], - vec![], - 0, - ), - ) - .unwrap(); + let storage = IndexerStore::open_db(home.as_ref()).unwrap(); - let mut prev_hash = genesis_block().header.hash; + let mut prev_hash = None; let from = acc1(); let to = acc2(); @@ -315,9 +324,8 @@ mod tests { ); let block_id = u64::try_from(i).unwrap(); - let next_block = - common::test_utils::produce_dummy_block(block_id, Some(prev_hash), vec![tx]); - prev_hash = next_block.header.hash; + let next_block = common::test_utils::produce_dummy_block(block_id, prev_hash, vec![tx]); + prev_hash = Some(next_block.header.hash); storage .put_block(next_block, HeaderId::from([u8::try_from(i).unwrap(); 32])) diff --git a/indexer/core/src/config.rs b/indexer/core/src/config.rs index 40ac0870..6a019828 100644 --- a/indexer/core/src/config.rs +++ b/indexer/core/src/config.rs @@ -10,7 +10,6 @@ use common::config::BasicAuth; use humantime_serde; pub use logos_blockchain_core::mantle::ops::channel::ChannelId; use serde::{Deserialize, Serialize}; -use testnet_initial_state::{PrivateAccountPublicInitialData, PublicAccountPublicInitialData}; use url::Url; #[derive(Debug, Clone, Serialize, Deserialize)] @@ -22,18 +21,12 @@ pub struct ClientConfig { #[derive(Debug, Clone, Serialize, Deserialize)] pub struct IndexerConfig { - /// Home dir of sequencer storage. + /// Home dir of indexer storage. pub home: PathBuf, - /// Sequencers signing key. - pub signing_key: [u8; 32], #[serde(with = "humantime_serde")] pub consensus_info_polling_interval: Duration, pub bedrock_config: ClientConfig, pub channel_id: ChannelId, - #[serde(skip_serializing_if = "Option::is_none")] - pub initial_public_accounts: Option>, - #[serde(skip_serializing_if = "Option::is_none")] - pub initial_private_accounts: Option>, } impl IndexerConfig { diff --git a/indexer/core/src/lib.rs b/indexer/core/src/lib.rs index 3d57e540..400d0a9d 100644 --- a/indexer/core/src/lib.rs +++ b/indexer/core/src/lib.rs @@ -1,17 +1,14 @@ use std::sync::Arc; use anyhow::Result; -use common::block::{Block, HashableBlockData}; +use common::block::Block; // ToDo: Remove after testnet -use common::{HashType, PINATA_BASE58}; use futures::StreamExt as _; use log::{error, info, warn}; use logos_blockchain_core::header::HeaderId; use logos_blockchain_zone_sdk::{ CommonHttpClient, ZoneMessage, adapter::NodeHttpClient, indexer::ZoneIndexer, }; -use nssa::V03State; -use testnet_initial_state::initial_state_testnet; use crate::{block_store::IndexerStore, config::IndexerConfig}; @@ -27,69 +24,6 @@ pub struct IndexerCore { impl IndexerCore { pub fn new(config: IndexerConfig) -> Result { - let hashable_data = HashableBlockData { - block_id: 1, - transactions: vec![], - prev_block_hash: HashType([0; 32]), - timestamp: 0, - }; - - // Genesis creation is fine as it is, - // because it will be overwritten by sequencer. - // Therefore: - // ToDo: remove key from indexer config, use some default. - let signing_key = nssa::PrivateKey::try_new(config.signing_key).unwrap(); - let channel_genesis_msg_id = [0; 32]; - let genesis_block = hashable_data.into_pending_block(&signing_key, channel_genesis_msg_id); - - let initial_private_accounts: Option> = - config.initial_private_accounts.as_ref().map(|accounts| { - accounts - .iter() - .map(|init_comm_data| { - let npk = &init_comm_data.npk; - let account_id = nssa::AccountId::from((npk, 0)); - - let mut acc = init_comm_data.account.clone(); - - acc.program_owner = - nssa::program::Program::authenticated_transfer_program().id(); - - ( - nssa_core::Commitment::new(&account_id, &acc), - nssa_core::Nullifier::for_account_initialization(&account_id), - ) - }) - .collect() - }); - - let init_accs: Option> = config - .initial_public_accounts - .as_ref() - .map(|initial_accounts| { - initial_accounts - .iter() - .map(|acc_data| (acc_data.account_id, acc_data.balance)) - .collect() - }); - - // If initial commitments or accounts are present in config, need to construct state from - // them - let state = if initial_private_accounts.is_some() || init_accs.is_some() { - let mut state = V03State::new_with_genesis_accounts( - &init_accs.unwrap_or_default(), - initial_private_accounts.unwrap_or_default(), - genesis_block.header.timestamp, - ); - - // ToDo: Remove after testnet - state.add_pinata_program(PINATA_BASE58.parse().unwrap()); - - state - } else { - initial_state_testnet() - }; - let home = config.home.join("rocksdb"); let basic_auth = config.bedrock_config.auth.clone().map(Into::into); @@ -102,7 +36,7 @@ impl IndexerCore { Ok(Self { zone_indexer: Arc::new(zone_indexer), config, - store: IndexerStore::open_db_with_genesis(&home, &genesis_block, &state)?, + store: IndexerStore::open_db(&home)?, }) } diff --git a/indexer/ffi/indexer_ffi.h b/indexer/ffi/indexer_ffi.h index 7626b3b3..b2ba41bf 100644 --- a/indexer/ffi/indexer_ffi.h +++ b/indexer/ffi/indexer_ffi.h @@ -22,9 +22,10 @@ typedef enum FfiBedrockStatus { Finalized, } FfiBedrockStatus; +typedef struct Option_u64 Option_u64; + typedef struct IndexerServiceFFI { void *indexer_handle; - void *runtime; void *indexer_client; } IndexerServiceFFI; @@ -41,16 +42,56 @@ typedef struct PointerResult_IndexerServiceFFI__OperationStatus { typedef struct PointerResult_IndexerServiceFFI__OperationStatus InitializedIndexerServiceFFIResult; +typedef enum PointerKind_Tag { + Owned, + Borrowed, + Null, +} PointerKind_Tag; + +typedef struct PointerKind { + PointerKind_Tag tag; + union { + struct { + void *owned; + }; + struct { + const void *borrowed; + }; + }; +} PointerKind; + +typedef struct Pointer_Runtime { + struct PointerKind kind; +} Pointer_Runtime; + +/** + * Wrapper around [`tokio::runtime::Runtime`] that can be safely passed across the FFI boundary. + */ +typedef struct Runtime { + struct Pointer_Runtime inner; +} Runtime; + /** * Simple wrapper around a pointer to a value or an error. * * Pointer is not guaranteed. You should check the error field before * dereferencing the pointer. */ -typedef struct PointerResult_u64__OperationStatus { - uint64_t *value; +typedef struct PointerResult_Runtime__OperationStatus { + struct Runtime *value; enum OperationStatus error; -} PointerResult_u64__OperationStatus; +} PointerResult_Runtime__OperationStatus; + +/** + * Simple wrapper around a pointer to a value or an error. + * + * Pointer is not guaranteed. You should check the error field before + * dereferencing the pointer. + */ +typedef struct PointerResult_Option_u64_____OperationStatus { + struct Option_u64 *value; + enum OperationStatus error; +} PointerResult_Option_u64_____OperationStatus; typedef uint64_t FfiBlockId; @@ -379,8 +420,20 @@ typedef struct PointerResult_FfiVec_FfiTransaction_____OperationStatus { * * An `InitializedIndexerServiceFFIResult` containing either a pointer to the * initialized `IndexerServiceFFI` or an error code. + * + * # Safety + * The caller must ensure that: + * - `runtime` is a valid pointer to a `tokio::runtime::Runtime` instance. + * - `config_path` is a valid pointer to a null-terminated C string. */ -InitializedIndexerServiceFFIResult start_indexer(const char *config_path, uint16_t port); +InitializedIndexerServiceFFIResult start_indexer(const struct Runtime *runtime, + const char *config_path, + uint16_t port); + +/** + * Creates a new [`tokio::runtime::Runtime`]. + */ +struct PointerResult_Runtime__OperationStatus new_runtime(void); /** * Stops and frees the resources associated with the given indexer service. @@ -415,25 +468,27 @@ void free_cstring(char *block); * * # Arguments * - * - `indexer`: A pointer to the `IndexerServiceFFI` instance to be queried. + * - `indexer`: A pointer to the [`IndexerServiceFFI`] instance to be queried. * * # Returns * - * A `PointerResult` indicating success or failure. + * A `PointerResult, OperationStatus>` indicating success or failure. * * # Safety * * The caller must ensure that: - * - `indexer` is a valid pointer to a `IndexerServiceFFI` instance + * - `runtime` is a valid pointer to a [`Runtime`] instance. + * - `indexer` is a valid pointer to a [`IndexerServiceFFI`] instance. */ -struct PointerResult_u64__OperationStatus query_last_block(const struct IndexerServiceFFI *indexer); +struct PointerResult_Option_u64_____OperationStatus query_last_block(const struct Runtime *runtime, + const struct IndexerServiceFFI *indexer); /** * Query the block by id from indexer. * * # Arguments * - * - `indexer`: A pointer to the `IndexerServiceFFI` instance to be queried. + * - `indexer`: A pointer to the [`IndexerServiceFFI`] instance to be queried. * - `block_id`: `u64` number of block id * * # Returns @@ -443,9 +498,11 @@ struct PointerResult_u64__OperationStatus query_last_block(const struct IndexerS * # Safety * * The caller must ensure that: - * - `indexer` is a valid pointer to a `IndexerServiceFFI` instance + * - `runtime` is a valid pointer to a [`Runtime`] instance. + * - `indexer` is a valid pointer to a [`IndexerServiceFFI`] instance. */ -struct PointerResult_FfiBlockOpt__OperationStatus query_block(const struct IndexerServiceFFI *indexer, +struct PointerResult_FfiBlockOpt__OperationStatus query_block(const struct Runtime *runtime, + const struct IndexerServiceFFI *indexer, FfiBlockId block_id); /** @@ -453,7 +510,7 @@ struct PointerResult_FfiBlockOpt__OperationStatus query_block(const struct Index * * # Arguments * - * - `indexer`: A pointer to the `IndexerServiceFFI` instance to be queried. + * - `indexer`: A pointer to the [`IndexerServiceFFI`] instance to be queried. * - `hash`: `FfiHashType` - hash of block * * # Returns @@ -463,9 +520,11 @@ struct PointerResult_FfiBlockOpt__OperationStatus query_block(const struct Index * # Safety * * The caller must ensure that: - * - `indexer` is a valid pointer to a `IndexerServiceFFI` instance + * - `runtime` is a valid pointer to a [`Runtime`] instance. + * - `indexer` is a valid pointer to a [`IndexerServiceFFI`] instance. */ -struct PointerResult_FfiBlockOpt__OperationStatus query_block_by_hash(const struct IndexerServiceFFI *indexer, +struct PointerResult_FfiBlockOpt__OperationStatus query_block_by_hash(const struct Runtime *runtime, + const struct IndexerServiceFFI *indexer, FfiHashType hash); /** @@ -473,7 +532,7 @@ struct PointerResult_FfiBlockOpt__OperationStatus query_block_by_hash(const stru * * # Arguments * - * - `indexer`: A pointer to the `IndexerServiceFFI` instance to be queried. + * - `indexer`: A pointer to the [`IndexerServiceFFI`] instance to be queried. * - `account_id`: `FfiAccountId` - id of queried account * * # Returns @@ -483,9 +542,11 @@ struct PointerResult_FfiBlockOpt__OperationStatus query_block_by_hash(const stru * # Safety * * The caller must ensure that: - * - `indexer` is a valid pointer to a `IndexerServiceFFI` instance + * - `runtime` is a valid pointer to a [`Runtime`] instance. + * - `indexer` is a valid pointer to a [`IndexerServiceFFI`] instance. */ -struct PointerResult_FfiAccount__OperationStatus query_account(const struct IndexerServiceFFI *indexer, +struct PointerResult_FfiAccount__OperationStatus query_account(const struct Runtime *runtime, + const struct IndexerServiceFFI *indexer, FfiAccountId account_id); /** @@ -493,7 +554,7 @@ struct PointerResult_FfiAccount__OperationStatus query_account(const struct Inde * * # Arguments * - * - `indexer`: A pointer to the `IndexerServiceFFI` instance to be queried. + * - `indexer`: A pointer to the [`IndexerServiceFFI`] instance to be queried. * - `hash`: `FfiHashType` - hash of transaction * * # Returns @@ -503,9 +564,11 @@ struct PointerResult_FfiAccount__OperationStatus query_account(const struct Inde * # Safety * * The caller must ensure that: - * - `indexer` is a valid pointer to a `IndexerServiceFFI` instance + * - `indexer` is a valid pointer to a [`IndexerServiceFFI`] instance. + * - `runtime` is a valid pointer to a [`Runtime`] instance. */ -struct PointerResult_FfiOption_FfiTransaction_____OperationStatus query_transaction(const struct IndexerServiceFFI *indexer, +struct PointerResult_FfiOption_FfiTransaction_____OperationStatus query_transaction(const struct Runtime *runtime, + const struct IndexerServiceFFI *indexer, FfiHashType hash); /** @@ -513,7 +576,7 @@ struct PointerResult_FfiOption_FfiTransaction_____OperationStatus query_transact * * # Arguments * - * - `indexer`: A pointer to the `IndexerServiceFFI` instance to be queried. + * - `indexer`: A pointer to the [`IndexerServiceFFI`] instance to be queried. * - `before`: `FfiOption` - end block of query * - `limit`: `u64` - number of blocks to query before `before` * @@ -524,9 +587,11 @@ struct PointerResult_FfiOption_FfiTransaction_____OperationStatus query_transact * # Safety * * The caller must ensure that: - * - `indexer` is a valid pointer to a `IndexerServiceFFI` instance + * - `indexer` is a valid pointer to a [`IndexerServiceFFI`] instance. + * - `runtime` is a valid pointer to a [`Runtime`] instance. */ -struct PointerResult_FfiVec_FfiBlock_____OperationStatus query_block_vec(const struct IndexerServiceFFI *indexer, +struct PointerResult_FfiVec_FfiBlock_____OperationStatus query_block_vec(const struct Runtime *runtime, + const struct IndexerServiceFFI *indexer, struct FfiOption_u64 before, uint64_t limit); @@ -535,7 +600,7 @@ struct PointerResult_FfiVec_FfiBlock_____OperationStatus query_block_vec(const s * * # Arguments * - * - `indexer`: A pointer to the `IndexerServiceFFI` instance to be queried. + * - `indexer`: A pointer to the [`IndexerServiceFFI`] instance to be queried. * - `account_id`: `FfiAccountId` - id of queried account * - `offset`: `u64` - first tx id of query * - `limit`: `u64` - number of tx ids to query after `offset` @@ -547,9 +612,11 @@ struct PointerResult_FfiVec_FfiBlock_____OperationStatus query_block_vec(const s * # Safety * * The caller must ensure that: - * - `indexer` is a valid pointer to a `IndexerServiceFFI` instance + * - `indexer` is a valid pointer to a [`IndexerServiceFFI`] instance. + * - `runtime` is a valid pointer to a [`Runtime`] instance. */ -struct PointerResult_FfiVec_FfiTransaction_____OperationStatus query_transactions_by_account(const struct IndexerServiceFFI *indexer, +struct PointerResult_FfiVec_FfiTransaction_____OperationStatus query_transactions_by_account(const struct Runtime *runtime, + const struct IndexerServiceFFI *indexer, FfiAccountId account_id, uint64_t offset, uint64_t limit); diff --git a/indexer/ffi/src/api/lifecycle.rs b/indexer/ffi/src/api/lifecycle.rs index c9cd859d..d124901f 100644 --- a/indexer/ffi/src/api/lifecycle.rs +++ b/indexer/ffi/src/api/lifecycle.rs @@ -1,9 +1,7 @@ use std::{ffi::c_char, path::PathBuf}; -use tokio::runtime::Runtime; - use crate::{ - IndexerServiceFFI, + IndexerServiceFFI, Runtime, api::{ PointerResult, client::{UrlProtocol, addr_to_url}, @@ -26,17 +24,33 @@ pub type InitializedIndexerServiceFFIResult = PointerResult InitializedIndexerServiceFFIResult { - setup_indexer(config_path, port).map_or_else( + // SAFETY: The caller must ensure the validness of the `runtime` and `config_path` pointers. + unsafe { setup_indexer(runtime, config_path, port) }.map_or_else( InitializedIndexerServiceFFIResult::from_error, InitializedIndexerServiceFFIResult::from_value, ) } +/// Creates a new [`tokio::runtime::Runtime`]. +#[unsafe(no_mangle)] +pub extern "C" fn new_runtime() -> PointerResult { + Runtime::new().map_or_else( + |_e| PointerResult::from_error(OperationStatus::InitializationError), + PointerResult::from_value, + ) +} + /// Initializes and starts an indexer based on the provided /// configuration file path. /// @@ -49,7 +63,13 @@ pub extern "C" fn start_indexer( /// /// A `Result` containing either the initialized `IndexerServiceFFI` or an /// error code. -fn setup_indexer( +/// +/// # Safety +/// The caller must ensure that: +/// - `runtime` is a valid pointer to a `tokio::runtime::Runtime` instance. +/// - `config_path` is a valid pointer to a null-terminated C string. +unsafe fn setup_indexer( + runtime: *const Runtime, config_path: *const c_char, port: u16, ) -> Result { @@ -66,9 +86,11 @@ fn setup_indexer( OperationStatus::InitializationError })?; - let rt = Runtime::new().unwrap(); + // SAFETY: The caller must ensure that `runtime` is a valid pointer to a + // `tokio::runtime::Runtime` instance. + let runtime = unsafe { &*runtime }; - let indexer_handle = rt + let indexer_handle = runtime .block_on(indexer_service::run_server(config, port)) .map_err(|e| { log::error!("Could not start indexer service: {e}"); @@ -76,12 +98,14 @@ fn setup_indexer( })?; let indexer_url = addr_to_url(UrlProtocol::Ws, indexer_handle.addr())?; - let indexer_client = rt.block_on(IndexerClient::new(&indexer_url)).map_err(|e| { - log::error!("Could not start indexer client: {e}"); - OperationStatus::InitializationError - })?; + let indexer_client = runtime + .block_on(IndexerClient::new(&indexer_url)) + .map_err(|e| { + log::error!("Could not start indexer client: {e}"); + OperationStatus::InitializationError + })?; - Ok(IndexerServiceFFI::new(indexer_handle, rt, indexer_client)) + Ok(IndexerServiceFFI::new(indexer_handle, indexer_client)) } /// Stops and frees the resources associated with the given indexer service. diff --git a/indexer/ffi/src/api/query.rs b/indexer/ffi/src/api/query.rs index 1e39d961..44951014 100644 --- a/indexer/ffi/src/api/query.rs +++ b/indexer/ffi/src/api/query.rs @@ -2,7 +2,7 @@ use indexer_service_protocol::{AccountId, HashType}; use indexer_service_rpc::RpcClient as _; use crate::{ - IndexerServiceFFI, + IndexerServiceFFI, Runtime, api::{ PointerResult, types::{ @@ -19,20 +19,22 @@ use crate::{ /// /// # Arguments /// -/// - `indexer`: A pointer to the `IndexerServiceFFI` instance to be queried. +/// - `indexer`: A pointer to the [`IndexerServiceFFI`] instance to be queried. /// /// # Returns /// -/// A `PointerResult` indicating success or failure. +/// A `PointerResult, OperationStatus>` indicating success or failure. /// /// # Safety /// /// The caller must ensure that: -/// - `indexer` is a valid pointer to a `IndexerServiceFFI` instance +/// - `runtime` is a valid pointer to a [`Runtime`] instance. +/// - `indexer` is a valid pointer to a [`IndexerServiceFFI`] instance. #[unsafe(no_mangle)] pub unsafe extern "C" fn query_last_block( + runtime: *const Runtime, indexer: *const IndexerServiceFFI, -) -> PointerResult { +) -> PointerResult, OperationStatus> { if indexer.is_null() { log::error!("Attempted to query a null indexer pointer. This is a bug. Aborting."); return PointerResult::from_error(OperationStatus::NullPointer); @@ -40,8 +42,8 @@ pub unsafe extern "C" fn query_last_block( let indexer = unsafe { &*indexer }; - let client = unsafe { indexer.client() }; - let runtime = unsafe { indexer.runtime() }; + let client = indexer.client(); + let runtime = unsafe { &*runtime }; runtime .block_on(client.get_last_finalized_block_id()) @@ -55,7 +57,7 @@ pub unsafe extern "C" fn query_last_block( /// /// # Arguments /// -/// - `indexer`: A pointer to the `IndexerServiceFFI` instance to be queried. +/// - `indexer`: A pointer to the [`IndexerServiceFFI`] instance to be queried. /// - `block_id`: `u64` number of block id /// /// # Returns @@ -65,9 +67,11 @@ pub unsafe extern "C" fn query_last_block( /// # Safety /// /// The caller must ensure that: -/// - `indexer` is a valid pointer to a `IndexerServiceFFI` instance +/// - `runtime` is a valid pointer to a [`Runtime`] instance. +/// - `indexer` is a valid pointer to a [`IndexerServiceFFI`] instance. #[unsafe(no_mangle)] pub unsafe extern "C" fn query_block( + runtime: *const Runtime, indexer: *const IndexerServiceFFI, block_id: FfiBlockId, ) -> PointerResult { @@ -78,8 +82,8 @@ pub unsafe extern "C" fn query_block( let indexer = unsafe { &*indexer }; - let client = unsafe { indexer.client() }; - let runtime = unsafe { indexer.runtime() }; + let client = indexer.client(); + let runtime = unsafe { &*runtime }; runtime .block_on(client.get_block_by_id(block_id)) @@ -99,7 +103,7 @@ pub unsafe extern "C" fn query_block( /// /// # Arguments /// -/// - `indexer`: A pointer to the `IndexerServiceFFI` instance to be queried. +/// - `indexer`: A pointer to the [`IndexerServiceFFI`] instance to be queried. /// - `hash`: `FfiHashType` - hash of block /// /// # Returns @@ -109,9 +113,11 @@ pub unsafe extern "C" fn query_block( /// # Safety /// /// The caller must ensure that: -/// - `indexer` is a valid pointer to a `IndexerServiceFFI` instance +/// - `runtime` is a valid pointer to a [`Runtime`] instance. +/// - `indexer` is a valid pointer to a [`IndexerServiceFFI`] instance. #[unsafe(no_mangle)] pub unsafe extern "C" fn query_block_by_hash( + runtime: *const Runtime, indexer: *const IndexerServiceFFI, hash: FfiHashType, ) -> PointerResult { @@ -122,8 +128,8 @@ pub unsafe extern "C" fn query_block_by_hash( let indexer = unsafe { &*indexer }; - let client = unsafe { indexer.client() }; - let runtime = unsafe { indexer.runtime() }; + let client = indexer.client(); + let runtime = unsafe { &*runtime }; runtime .block_on(client.get_block_by_hash(HashType(hash.data))) @@ -143,7 +149,7 @@ pub unsafe extern "C" fn query_block_by_hash( /// /// # Arguments /// -/// - `indexer`: A pointer to the `IndexerServiceFFI` instance to be queried. +/// - `indexer`: A pointer to the [`IndexerServiceFFI`] instance to be queried. /// - `account_id`: `FfiAccountId` - id of queried account /// /// # Returns @@ -153,9 +159,11 @@ pub unsafe extern "C" fn query_block_by_hash( /// # Safety /// /// The caller must ensure that: -/// - `indexer` is a valid pointer to a `IndexerServiceFFI` instance +/// - `runtime` is a valid pointer to a [`Runtime`] instance. +/// - `indexer` is a valid pointer to a [`IndexerServiceFFI`] instance. #[unsafe(no_mangle)] pub unsafe extern "C" fn query_account( + runtime: *const Runtime, indexer: *const IndexerServiceFFI, account_id: FfiAccountId, ) -> PointerResult { @@ -166,8 +174,8 @@ pub unsafe extern "C" fn query_account( let indexer = unsafe { &*indexer }; - let client = unsafe { indexer.client() }; - let runtime = unsafe { indexer.runtime() }; + let client = indexer.client(); + let runtime = unsafe { &*runtime }; runtime .block_on(client.get_account(AccountId { @@ -187,7 +195,7 @@ pub unsafe extern "C" fn query_account( /// /// # Arguments /// -/// - `indexer`: A pointer to the `IndexerServiceFFI` instance to be queried. +/// - `indexer`: A pointer to the [`IndexerServiceFFI`] instance to be queried. /// - `hash`: `FfiHashType` - hash of transaction /// /// # Returns @@ -197,9 +205,11 @@ pub unsafe extern "C" fn query_account( /// # Safety /// /// The caller must ensure that: -/// - `indexer` is a valid pointer to a `IndexerServiceFFI` instance +/// - `indexer` is a valid pointer to a [`IndexerServiceFFI`] instance. +/// - `runtime` is a valid pointer to a [`Runtime`] instance. #[unsafe(no_mangle)] pub unsafe extern "C" fn query_transaction( + runtime: *const Runtime, indexer: *const IndexerServiceFFI, hash: FfiHashType, ) -> PointerResult, OperationStatus> { @@ -210,8 +220,8 @@ pub unsafe extern "C" fn query_transaction( let indexer = unsafe { &*indexer }; - let client = unsafe { indexer.client() }; - let runtime = unsafe { indexer.runtime() }; + let client = indexer.client(); + let runtime = unsafe { &*runtime }; runtime .block_on(client.get_transaction(HashType(hash.data))) @@ -231,7 +241,7 @@ pub unsafe extern "C" fn query_transaction( /// /// # Arguments /// -/// - `indexer`: A pointer to the `IndexerServiceFFI` instance to be queried. +/// - `indexer`: A pointer to the [`IndexerServiceFFI`] instance to be queried. /// - `before`: `FfiOption` - end block of query /// - `limit`: `u64` - number of blocks to query before `before` /// @@ -242,9 +252,11 @@ pub unsafe extern "C" fn query_transaction( /// # Safety /// /// The caller must ensure that: -/// - `indexer` is a valid pointer to a `IndexerServiceFFI` instance +/// - `indexer` is a valid pointer to a [`IndexerServiceFFI`] instance. +/// - `runtime` is a valid pointer to a [`Runtime`] instance. #[unsafe(no_mangle)] pub unsafe extern "C" fn query_block_vec( + runtime: *const Runtime, indexer: *const IndexerServiceFFI, before: FfiOption, limit: u64, @@ -256,8 +268,8 @@ pub unsafe extern "C" fn query_block_vec( let indexer = unsafe { &*indexer }; - let client = unsafe { indexer.client() }; - let runtime = unsafe { indexer.runtime() }; + let client = indexer.client(); + let runtime = unsafe { &*runtime }; let before_std = before.is_some.then(|| unsafe { *before.value }); @@ -281,7 +293,7 @@ pub unsafe extern "C" fn query_block_vec( /// /// # Arguments /// -/// - `indexer`: A pointer to the `IndexerServiceFFI` instance to be queried. +/// - `indexer`: A pointer to the [`IndexerServiceFFI`] instance to be queried. /// - `account_id`: `FfiAccountId` - id of queried account /// - `offset`: `u64` - first tx id of query /// - `limit`: `u64` - number of tx ids to query after `offset` @@ -293,9 +305,11 @@ pub unsafe extern "C" fn query_block_vec( /// # Safety /// /// The caller must ensure that: -/// - `indexer` is a valid pointer to a `IndexerServiceFFI` instance +/// - `indexer` is a valid pointer to a [`IndexerServiceFFI`] instance. +/// - `runtime` is a valid pointer to a [`Runtime`] instance. #[unsafe(no_mangle)] pub unsafe extern "C" fn query_transactions_by_account( + runtime: *const Runtime, indexer: *const IndexerServiceFFI, account_id: FfiAccountId, offset: u64, @@ -308,8 +322,8 @@ pub unsafe extern "C" fn query_transactions_by_account( let indexer = unsafe { &*indexer }; - let client = unsafe { indexer.client() }; - let runtime = unsafe { indexer.runtime() }; + let client = indexer.client(); + let runtime = unsafe { &*runtime }; runtime .block_on(client.get_transactions_by_account( diff --git a/indexer/ffi/src/indexer.rs b/indexer/ffi/src/indexer.rs index 33800356..e8707697 100644 --- a/indexer/ffi/src/indexer.rs +++ b/indexer/ffi/src/indexer.rs @@ -1,53 +1,49 @@ use std::{ffi::c_void, net::SocketAddr}; use indexer_service::IndexerHandle; -use tokio::runtime::Runtime; use crate::client::IndexerClient; #[repr(C)] pub struct IndexerServiceFFI { indexer_handle: *mut c_void, - runtime: *mut c_void, indexer_client: *mut c_void, } impl IndexerServiceFFI { + #[must_use] pub fn new( indexer_handle: indexer_service::IndexerHandle, - runtime: Runtime, indexer_client: IndexerClient, ) -> Self { Self { // Box the complex types and convert to opaque pointers indexer_handle: Box::into_raw(Box::new(indexer_handle)).cast::(), - runtime: Box::into_raw(Box::new(runtime)).cast::(), indexer_client: Box::into_raw(Box::new(indexer_client)).cast::(), } } /// Helper to take ownership back. - /// - /// # Safety - /// - /// The caller must ensure that: - /// - `self` is a valid object(contains valid pointers in all fields) #[must_use] - pub unsafe fn into_parts(self) -> (Box, Box, Box) { - let indexer_handle = unsafe { Box::from_raw(self.indexer_handle.cast::()) }; - let runtime = unsafe { Box::from_raw(self.runtime.cast::()) }; - let indexer_client = unsafe { Box::from_raw(self.indexer_client.cast::()) }; - (indexer_handle, runtime, indexer_client) + pub fn into_parts(mut self) -> (Box, Box) { + let Self { + indexer_handle, + indexer_client, + } = &mut self; + + let indexer_handle_boxed = unsafe { Box::from_raw(indexer_handle.cast::()) }; + let indexer_client_boxed = unsafe { Box::from_raw(indexer_client.cast::()) }; + + // Assigning nulls to prevent double free on drop, since ownership is transferred to caller + *indexer_handle = std::ptr::null_mut(); + *indexer_client = std::ptr::null_mut(); + + (indexer_handle_boxed, indexer_client_boxed) } /// Helper to get indexer handle addr. - /// - /// # Safety - /// - /// The caller must ensure that: - /// - `self` is a valid object(contains valid pointers in all fields) #[must_use] - pub const unsafe fn addr(&self) -> SocketAddr { + pub const fn addr(&self) -> SocketAddr { let indexer_handle = unsafe { self.indexer_handle .cast::() @@ -59,13 +55,8 @@ impl IndexerServiceFFI { } /// Helper to get indexer handle ref. - /// - /// # Safety - /// - /// The caller must ensure that: - /// - `self` is a valid object(contains valid pointers in all fields) #[must_use] - pub const unsafe fn handle(&self) -> &IndexerHandle { + pub const fn handle(&self) -> &IndexerHandle { unsafe { self.indexer_handle .cast::() @@ -75,13 +66,8 @@ impl IndexerServiceFFI { } /// Helper to get indexer client ref. - /// - /// # Safety - /// - /// The caller must ensure that: - /// - `self` is a valid object(contains valid pointers in all fields) #[must_use] - pub const unsafe fn client(&self) -> &IndexerClient { + pub const fn client(&self) -> &IndexerClient { unsafe { self.indexer_client .cast::() @@ -89,22 +75,6 @@ impl IndexerServiceFFI { .expect("Indexer Client must be non-null pointer") } } - - /// Helper to get indexer runtime ref. - /// - /// # Safety - /// - /// The caller must ensure that: - /// - `self` is a valid object(contains valid pointers in all fields) - #[must_use] - pub const unsafe fn runtime(&self) -> &Runtime { - unsafe { - self.runtime - .cast::() - .as_ref() - .expect("Indexer Runtime must be non-null pointer") - } - } } // Implement Drop to prevent memory leaks @@ -112,21 +82,14 @@ impl Drop for IndexerServiceFFI { fn drop(&mut self) { let Self { indexer_handle, - runtime, indexer_client, } = self; - if indexer_handle.is_null() { - log::error!("Attempted to drop a null indexer pointer. This is a bug"); + if !indexer_handle.is_null() { + drop(unsafe { Box::from_raw(indexer_handle.cast::()) }); } - if runtime.is_null() { - log::error!("Attempted to drop a null tokio runtime pointer. This is a bug"); + if !indexer_client.is_null() { + drop(unsafe { Box::from_raw(indexer_client.cast::()) }); } - if indexer_client.is_null() { - log::error!("Attempted to drop a null client pointer. This is a bug"); - } - drop(unsafe { Box::from_raw(indexer_handle.cast::()) }); - drop(unsafe { Box::from_raw(runtime.cast::()) }); - drop(unsafe { Box::from_raw(indexer_client.cast::()) }); } } diff --git a/indexer/ffi/src/lib.rs b/indexer/ffi/src/lib.rs index 5806a074..9e34b111 100644 --- a/indexer/ffi/src/lib.rs +++ b/indexer/ffi/src/lib.rs @@ -2,8 +2,10 @@ pub use errors::OperationStatus; pub use indexer::IndexerServiceFFI; +pub use runtime::Runtime; pub mod api; mod client; mod errors; mod indexer; +mod runtime; diff --git a/indexer/ffi/src/runtime.rs b/indexer/ffi/src/runtime.rs new file mode 100644 index 00000000..ba361fd8 --- /dev/null +++ b/indexer/ffi/src/runtime.rs @@ -0,0 +1,129 @@ +use std::ffi::c_void; + +/// Wrapper around [`tokio::runtime::Runtime`] that can be safely passed across the FFI boundary. +#[repr(C)] +pub struct Runtime { + inner: Pointer, +} + +impl Runtime { + /// Creates a new owned [`Runtime`] instance. + pub fn new() -> Result> { + let inner = tokio::runtime::Runtime::new()?; + Ok(Self { + inner: Pointer::owned(inner), + }) + } + + /// Creates a new owned [`Runtime`] instance from an existing [`tokio::runtime::Runtime`]. + pub fn from_owned(inner: tokio::runtime::Runtime) -> Self { + Self { + inner: Pointer::owned(inner), + } + } + + /// Creates a new borrowed [`Runtime`] instance from a reference to an existing + /// `tokio::runtime::Runtime`. + /// + /// # Safety + /// The caller must ensure that the provided reference remains valid for the lifetime of the + /// returned [`Runtime`]. + pub const unsafe fn from_borrowed(inner: &tokio::runtime::Runtime) -> Self { + Self { + // SAFETY: The caller must ensure the validness of the `inner` reference. + inner: unsafe { Pointer::borrowed(inner) }, + } + } +} + +impl AsRef for Runtime { + fn as_ref(&self) -> &tokio::runtime::Runtime { + self.inner + .as_ref() + .expect("Runtime pointer should not be null") + } +} + +impl std::ops::Deref for Runtime { + type Target = tokio::runtime::Runtime; + + fn deref(&self) -> &Self::Target { + self.as_ref() + } +} + +#[repr(C)] +struct Pointer { + kind: PointerKind, + _marker: std::marker::PhantomData, +} + +#[repr(C)] +enum PointerKind { + Owned(*mut c_void), + Borrowed(*const c_void), + Null, +} + +impl Pointer { + /// Creates a new owned pointer from a value. + pub fn owned(value: T) -> Self { + let boxed = Box::new(value); + let kind = PointerKind::Owned(Box::into_raw(boxed).cast::()); + Self { + kind, + _marker: std::marker::PhantomData, + } + } + + /// Creates a new borrowed pointer from a reference to an existing value. + /// + /// # Safety + /// The caller must ensure that the provided reference remains valid for the lifetime of the + /// returned pointer. + pub const unsafe fn borrowed(value: &T) -> Self { + let kind = PointerKind::Borrowed(std::ptr::from_ref(value).cast::()); + Self { + kind, + _marker: std::marker::PhantomData, + } + } + + /// Returns a reference to the value if the pointer is owned or borrowed, or [`None`] if it is + /// null. + pub const fn as_ref(&self) -> Option<&T> { + match self.kind { + PointerKind::Owned(ptr) => unsafe { (ptr.cast::()).as_ref() }, + PointerKind::Borrowed(ptr) => unsafe { (ptr.cast::()).as_ref() }, + PointerKind::Null => None, + } + } + + /// Takes ownership of the pointer if it is owned, returning the raw pointer and leaving a null + /// pointer in its place. + /// If the pointer is borrowed or null, returns [`None`]. + #[expect(dead_code, reason = "May be useful in future")] + pub fn take(&mut self) -> Option { + match std::mem::replace(&mut self.kind, PointerKind::Null) { + PointerKind::Owned(ptr) => { + // SAFETY: We ensure that the pointer is valid and was allocated by us. + let boxed = unsafe { Box::from_raw(ptr.cast::()) }; + Some(*boxed) + } + PointerKind::Borrowed(_) | PointerKind::Null => None, + } + } +} + +impl Drop for Pointer { + fn drop(&mut self) { + let Self { kind, _marker } = self; + + if let PointerKind::Owned(ptr) = *kind { + // SAFETY: We ensure that the pointer is valid and was allocated by us. + unsafe { + drop(Box::from_raw(ptr.cast::())); + } + } + } +} diff --git a/indexer/service/configs/indexer_config.json b/indexer/service/configs/indexer_config.json index 558a3bfe..f6a0e07c 100644 --- a/indexer/service/configs/indexer_config.json +++ b/indexer/service/configs/indexer_config.json @@ -4,153 +4,5 @@ "bedrock_config": { "addr": "http://localhost:8080" }, - "channel_id": "0101010101010101010101010101010101010101010101010101010101010101", - "initial_accounts": [ - { - "account_id": "CbgR6tj5kWx5oziiFptM7jMvrQeYY3Mzaao6ciuhSr2r", - "balance": 10000 - }, - { - "account_id": "2RHZhw9h534Zr3eq2RGhQete2Hh667foECzXPmSkGni2", - "balance": 20000 - } - ], - "initial_commitments": [ - { - "npk": [ - 139, - 19, - 158, - 11, - 155, - 231, - 85, - 206, - 132, - 228, - 220, - 114, - 145, - 89, - 113, - 156, - 238, - 142, - 242, - 74, - 182, - 91, - 43, - 100, - 6, - 190, - 31, - 15, - 31, - 88, - 96, - 204 - ], - "account": { - "program_owner": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "balance": 10000, - "data": [], - "nonce": 0 - } - }, - { - "npk": [ - 173, - 134, - 33, - 223, - 54, - 226, - 10, - 71, - 215, - 254, - 143, - 172, - 24, - 244, - 243, - 208, - 65, - 112, - 118, - 70, - 217, - 240, - 69, - 100, - 129, - 3, - 121, - 25, - 213, - 132, - 42, - 45 - ], - "account": { - "program_owner": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "balance": 20000, - "data": [], - "nonce": 0 - } - } - ], - "signing_key": [ - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37, - 37 - ] + "channel_id": "0101010101010101010101010101010101010101010101010101010101010101" } \ No newline at end of file diff --git a/indexer/service/rpc/src/lib.rs b/indexer/service/rpc/src/lib.rs index a6476ebd..5763fe82 100644 --- a/indexer/service/rpc/src/lib.rs +++ b/indexer/service/rpc/src/lib.rs @@ -27,7 +27,7 @@ pub trait Rpc { async fn subscribe_to_finalized_blocks(&self) -> SubscriptionResult; #[method(name = "getLastFinalizedBlockId")] - async fn get_last_finalized_block_id(&self) -> Result; + async fn get_last_finalized_block_id(&self) -> Result, ErrorObjectOwned>; #[method(name = "getBlockById")] async fn get_block_by_id(&self, block_id: BlockId) -> Result, ErrorObjectOwned>; diff --git a/indexer/service/src/lib.rs b/indexer/service/src/lib.rs index 10f1cade..b0a6e516 100644 --- a/indexer/service/src/lib.rs +++ b/indexer/service/src/lib.rs @@ -16,6 +16,7 @@ pub struct IndexerHandle { /// Option because of `Drop` which forbids to simply move out of `self` in `stopped()`. server_handle: Option, } + impl IndexerHandle { const fn new(addr: SocketAddr, server_handle: ServerHandle) -> Self { Self { diff --git a/indexer/service/src/mock_service.rs b/indexer/service/src/mock_service.rs index a413973d..a83e9ccc 100644 --- a/indexer/service/src/mock_service.rs +++ b/indexer/service/src/mock_service.rs @@ -190,18 +190,16 @@ impl indexer_service_rpc::RpcServer for MockIndexerService { Ok(()) } - async fn get_last_finalized_block_id(&self) -> Result { - self.state + async fn get_last_finalized_block_id(&self) -> Result, ErrorObjectOwned> { + Ok(self + .state .read() .await .blocks .iter() .rev() .find(|block| block.bedrock_status == BedrockStatus::Finalized) - .map(|block| block.header.block_id) - .ok_or_else(|| { - ErrorObjectOwned::owned(-32001, "Last block not found".to_owned(), None::<()>) - }) + .map(|block| block.header.block_id)) } async fn get_block_by_id(&self, block_id: BlockId) -> Result, ErrorObjectOwned> { diff --git a/indexer/service/src/service.rs b/indexer/service/src/service.rs index 8d079265..a959b80c 100644 --- a/indexer/service/src/service.rs +++ b/indexer/service/src/service.rs @@ -48,7 +48,7 @@ impl indexer_service_rpc::RpcServer for IndexerService { Ok(()) } - async fn get_last_finalized_block_id(&self) -> Result { + async fn get_last_finalized_block_id(&self) -> Result, ErrorObjectOwned> { self.indexer.store.get_last_block_id().map_err(db_error) } @@ -214,43 +214,49 @@ impl SubscriptionService { tokio::sync::mpsc::unbounded_channel::>(); let handle = tokio::spawn(async move { - let mut subscribers = Vec::new(); + let run_loop = async { + let mut subscribers = Vec::new(); - let mut block_stream = pin!(indexer.subscribe_parse_block_stream()); + let mut block_stream = pin!(indexer.subscribe_parse_block_stream()); - #[expect( - clippy::integer_division_remainder_used, - reason = "Generated by select! macro, can't be easily rewritten to avoid this lint" - )] - loop { - tokio::select! { - sub = sub_receiver.recv() => { - let Some(subscription) = sub else { - bail!("Subscription receiver closed unexpectedly"); - }; - info!("Added new subscription with ID {:?}", subscription.sink.subscription_id()); - subscribers.push(subscription); - } - block_opt = block_stream.next() => { - debug!("Got new block from block stream"); - let Some(block) = block_opt else { - bail!("Block stream ended unexpectedly"); - }; - let block = block.context("Failed to get L2 block data")?; - let block: indexer_service_protocol::Block = block.into(); + #[expect( + clippy::integer_division_remainder_used, + reason = "Generated by select! macro, can't be easily rewritten to avoid this lint" + )] + loop { + tokio::select! { + sub = sub_receiver.recv() => { + let Some(subscription) = sub else { + bail!("Subscription receiver closed unexpectedly"); + }; + info!("Added new subscription with ID {:?}", subscription.sink.subscription_id()); + subscribers.push(subscription); + } + block_opt = block_stream.next() => { + debug!("Got new block from block stream"); + let Some(block) = block_opt else { + bail!("Block stream ended unexpectedly"); + }; + let block = block.context("Failed to get L2 block data")?; + let block: indexer_service_protocol::Block = block.into(); - for sub in &mut subscribers { - if let Err(err) = sub.try_send(&block.header.block_id) { - warn!( - "Failed to send block ID {:?} to subscription ID {:?} with error: {err:#?}", - block.header.block_id, - sub.sink.subscription_id(), - ); + for sub in &mut subscribers { + if let Err(err) = sub.try_send(&block.header.block_id) { + warn!( + "Failed to send block ID {:?} to subscription ID {:?} with error: {err:#?}", + block.header.block_id, + sub.sink.subscription_id(), + ); + } } } } } - } + }; + let res: anyhow::Result = run_loop.await; + let Err(err) = res; + error!("Subscription service loop has unexpectedly finished with error: {err:#?}"); + Err(err) }); SubscriptionLoopParts { handle, diff --git a/integration_tests/Cargo.toml b/integration_tests/Cargo.toml index 5f1f1037..50596f37 100644 --- a/integration_tests/Cargo.toml +++ b/integration_tests/Cargo.toml @@ -10,6 +10,7 @@ workspace = true [dependencies] nssa_core = { workspace = true, features = ["host"] } nssa.workspace = true +authenticated_transfer_core.workspace = true sequencer_core = { workspace = true, features = ["default", "testnet"] } sequencer_service.workspace = true wallet.workspace = true @@ -28,7 +29,6 @@ testnet_initial_state.workspace = true indexer_service_protocol.workspace = true url.workspace = true - anyhow.workspace = true env_logger.workspace = true log.workspace = true diff --git a/integration_tests/src/config.rs b/integration_tests/src/config.rs index 7b3825de..9c0db5df 100644 --- a/integration_tests/src/config.rs +++ b/integration_tests/src/config.rs @@ -3,16 +3,13 @@ use std::{net::SocketAddr, path::PathBuf, time::Duration}; use anyhow::{Context as _, Result}; use bytesize::ByteSize; use indexer_service::{ChannelId, ClientConfig, IndexerConfig}; -use key_protocol::key_management::KeyChain; -use nssa::{Account, AccountId, PrivateKey, PublicKey}; -use nssa_core::{account::Data, program::DEFAULT_PROGRAM_ID}; -use sequencer_core::config::{BedrockConfig, SequencerConfig}; -use testnet_initial_state::{ - PrivateAccountPrivateInitialData, PrivateAccountPublicInitialData, - PublicAccountPrivateInitialData, PublicAccountPublicInitialData, -}; +use nssa::{AccountId, PrivateKey, PublicKey}; +use sequencer_core::config::{BedrockConfig, GenesisTransaction, SequencerConfig}; use url::Url; -use wallet::config::{InitialAccountData, WalletConfig}; +use wallet::config::WalletConfig; + +pub const INITIAL_PUBLIC_BALANCES_FOR_WALLET: [u128; 2] = [20_000, 40_000]; +pub const INITIAL_PRIVATE_BALANCES_FOR_WALLET: [u128; 2] = [10_000, 20_000]; /// Sequencer config options available for custom changes in integration tests. #[derive(Debug, Clone, Copy)] @@ -34,121 +31,6 @@ impl Default for SequencerPartialConfig { } } -pub struct InitialData { - pub public_accounts: Vec<(PrivateKey, u128)>, - pub private_accounts: Vec<(KeyChain, Account)>, -} - -impl InitialData { - #[must_use] - pub fn with_two_public_and_two_private_initialized_accounts() -> Self { - let mut public_alice_private_key = PrivateKey::new_os_random(); - let mut public_alice_public_key = - PublicKey::new_from_private_key(&public_alice_private_key); - let mut public_alice_account_id = AccountId::from(&public_alice_public_key); - - let mut public_bob_private_key = PrivateKey::new_os_random(); - let mut public_bob_public_key = PublicKey::new_from_private_key(&public_bob_private_key); - let mut public_bob_account_id = AccountId::from(&public_bob_public_key); - - // Ensure consistent ordering - if public_alice_account_id > public_bob_account_id { - std::mem::swap(&mut public_alice_private_key, &mut public_bob_private_key); - std::mem::swap(&mut public_alice_public_key, &mut public_bob_public_key); - std::mem::swap(&mut public_alice_account_id, &mut public_bob_account_id); - } - - let mut private_charlie_key_chain = KeyChain::new_os_random(); - let mut private_charlie_account_id = - AccountId::from((&private_charlie_key_chain.nullifier_public_key, 0)); - - let mut private_david_key_chain = KeyChain::new_os_random(); - let mut private_david_account_id = - AccountId::from((&private_david_key_chain.nullifier_public_key, 0)); - - // Ensure consistent ordering - if private_charlie_account_id > private_david_account_id { - std::mem::swap(&mut private_charlie_key_chain, &mut private_david_key_chain); - std::mem::swap( - &mut private_charlie_account_id, - &mut private_david_account_id, - ); - } - - Self { - public_accounts: vec![ - (public_alice_private_key, 10_000), - (public_bob_private_key, 20_000), - ], - private_accounts: vec![ - ( - private_charlie_key_chain, - Account { - balance: 10_000, - data: Data::default(), - program_owner: DEFAULT_PROGRAM_ID, - nonce: 0_u128.into(), - }, - ), - ( - private_david_key_chain, - Account { - balance: 20_000, - data: Data::default(), - program_owner: DEFAULT_PROGRAM_ID, - nonce: 0_u128.into(), - }, - ), - ], - } - } - - fn sequencer_initial_public_accounts(&self) -> Vec { - self.public_accounts - .iter() - .map(|(priv_key, balance)| { - let pub_key = PublicKey::new_from_private_key(priv_key); - let account_id = AccountId::from(&pub_key); - PublicAccountPublicInitialData { - account_id, - balance: *balance, - } - }) - .collect() - } - - fn sequencer_initial_private_accounts(&self) -> Vec { - self.private_accounts - .iter() - .map(|(key_chain, account)| PrivateAccountPublicInitialData { - npk: key_chain.nullifier_public_key, - account: account.clone(), - }) - .collect() - } - - fn wallet_initial_accounts(&self) -> Vec { - self.public_accounts - .iter() - .map(|(priv_key, _)| { - let pub_key = PublicKey::new_from_private_key(priv_key); - let account_id = AccountId::from(&pub_key); - InitialAccountData::Public(PublicAccountPrivateInitialData { - account_id, - pub_sign_key: priv_key.clone(), - }) - }) - .chain(self.private_accounts.iter().map(|(key_chain, account)| { - InitialAccountData::Private(Box::new(PrivateAccountPrivateInitialData { - account: account.clone(), - key_chain: key_chain.clone(), - identifier: 0, - })) - })) - .collect() - } -} - #[derive(Debug, Clone, Copy)] pub enum UrlProtocol { Http, @@ -168,7 +50,7 @@ pub fn sequencer_config( partial: SequencerPartialConfig, home: PathBuf, bedrock_addr: SocketAddr, - initial_data: &InitialData, + genesis_transactions: Vec, ) -> Result { let SequencerPartialConfig { max_num_tx_in_block, @@ -179,15 +61,13 @@ pub fn sequencer_config( Ok(SequencerConfig { home, - genesis_id: 1, is_genesis_random: true, max_num_tx_in_block, max_block_size, mempool_max_size, block_create_timeout, retry_pending_blocks_timeout: Duration::from_secs(5), - initial_public_accounts: Some(initial_data.sequencer_initial_public_accounts()), - initial_private_accounts: Some(initial_data.sequencer_initial_private_accounts()), + genesis: genesis_transactions, signing_key: [37; 32], bedrock_config: BedrockConfig { channel_id: bedrock_channel_id(), @@ -198,10 +78,46 @@ pub fn sequencer_config( }) } -pub fn wallet_config( - sequencer_addr: SocketAddr, - initial_data: &InitialData, -) -> Result { +#[must_use] +pub fn default_public_accounts_for_wallet() -> Vec<(PrivateKey, u128)> { + let mut first_private_key = PrivateKey::new_os_random(); + let first_public_key = PublicKey::new_from_private_key(&first_private_key); + let mut first_account_id = AccountId::from(&first_public_key); + + let mut second_private_key = PrivateKey::new_os_random(); + let second_public_key = PublicKey::new_from_private_key(&second_private_key); + let mut second_account_id = AccountId::from(&second_public_key); + + // Keep account ordering deterministic for tests that index into account lists. + if first_account_id > second_account_id { + std::mem::swap(&mut first_private_key, &mut second_private_key); + std::mem::swap(&mut first_account_id, &mut second_account_id); + } + + vec![ + (first_private_key, INITIAL_PUBLIC_BALANCES_FOR_WALLET[0]), + (second_private_key, INITIAL_PUBLIC_BALANCES_FOR_WALLET[1]), + ] +} + +#[must_use] +pub fn genesis_from_public_accounts( + public_accounts: &[(PrivateKey, u128)], +) -> Vec { + public_accounts + .iter() + .map(|(private_key, balance)| { + let public_key = PublicKey::new_from_private_key(private_key); + let account_id = AccountId::from(&public_key); + GenesisTransaction::SupplyPublicAccount { + account_id, + balance: *balance, + } + }) + .collect() +} + +pub fn wallet_config(sequencer_addr: SocketAddr) -> Result { Ok(WalletConfig { sequencer_addr: addr_to_url(UrlProtocol::Http, sequencer_addr) .context("Failed to convert sequencer addr to URL")?, @@ -209,16 +125,11 @@ pub fn wallet_config( seq_tx_poll_max_blocks: 15, seq_poll_max_retries: 10, seq_block_poll_max_amount: 100, - initial_accounts: Some(initial_data.wallet_initial_accounts()), basic_auth: None, }) } -pub fn indexer_config( - bedrock_addr: SocketAddr, - home: PathBuf, - initial_data: &InitialData, -) -> Result { +pub fn indexer_config(bedrock_addr: SocketAddr, home: PathBuf) -> Result { Ok(IndexerConfig { home, consensus_info_polling_interval: Duration::from_secs(1), @@ -227,9 +138,6 @@ pub fn indexer_config( .context("Failed to convert bedrock addr to URL")?, auth: None, }, - initial_public_accounts: Some(initial_data.sequencer_initial_public_accounts()), - initial_private_accounts: Some(initial_data.sequencer_initial_private_accounts()), - signing_key: [37; 32], channel_id: bedrock_channel_id(), }) } diff --git a/integration_tests/src/lib.rs b/integration_tests/src/lib.rs index 2a9e7c67..f69cdafd 100644 --- a/integration_tests/src/lib.rs +++ b/integration_tests/src/lib.rs @@ -1,6 +1,6 @@ //! This library contains common code for integration tests. -use std::sync::LazyLock; +use std::{net::SocketAddr, sync::LazyLock}; use anyhow::{Context as _, Result}; use common::{HashType, transaction::NSSATransaction}; @@ -9,21 +9,24 @@ use indexer_service::IndexerHandle; use log::{debug, error}; use nssa::{AccountId, PrivacyPreservingTransaction}; use nssa_core::Commitment; +use sequencer_core::config::GenesisTransaction; use sequencer_service::SequencerHandle; use sequencer_service_rpc::{RpcClient as _, SequencerClient, SequencerClientBuilder}; use tempfile::TempDir; use testcontainers::compose::DockerCompose; -use wallet::WalletCore; +use wallet::{WalletCore, account::AccountIdWithPrivacy, cli::CliAccountMention}; use crate::{ indexer_client::IndexerClient, - setup::{setup_bedrock_node, setup_indexer, setup_sequencer, setup_wallet}, + setup::{ + setup_bedrock_node, setup_indexer, setup_private_accounts_with_initial_supply, + setup_sequencer, setup_wallet, + }, }; pub mod config; pub mod indexer_client; pub mod setup; -pub mod test_context_ffi; // TODO: Remove this and control time from tests pub const TIME_TO_WAIT_FOR_BLOCK_SECONDS: u64 = 12; @@ -35,6 +38,26 @@ const BEDROCK_SERVICE_PORT: u16 = 18080; static LOGGER: LazyLock<()> = LazyLock::new(env_logger::init); +struct IndexerComponents { + indexer_handle: IndexerHandle, + indexer_client: IndexerClient, + _temp_dir: TempDir, +} + +impl Drop for IndexerComponents { + fn drop(&mut self) { + let Self { + indexer_handle, + indexer_client: _, + _temp_dir: _, + } = self; + + if !indexer_handle.is_healthy() { + error!("Indexer handle has unexpectedly stopped before IndexerComponents drop"); + } + } +} + /// Test context which sets up a sequencer and a wallet for integration tests. /// /// It's memory and logically safe to create multiple instances of this struct in parallel tests, @@ -42,14 +65,13 @@ static LOGGER: LazyLock<()> = LazyLock::new(env_logger::init); // NOTE: Order of fields is important for proper drop order. pub struct TestContext { sequencer_client: SequencerClient, - indexer_client: IndexerClient, wallet: WalletCore, wallet_password: String, /// Optional to move out value in Drop. sequencer_handle: Option, - indexer_handle: IndexerHandle, + indexer_components: Option, bedrock_compose: DockerCompose, - _temp_indexer_dir: TempDir, + bedrock_addr: SocketAddr, _temp_sequencer_dir: TempDir, _temp_wallet_dir: TempDir, } @@ -60,61 +82,12 @@ impl TestContext { Self::builder().build().await } + /// Get a builder for the test context to customize its configuration. #[must_use] pub const fn builder() -> TestContextBuilder { TestContextBuilder::new() } - async fn new_configured( - sequencer_partial_config: config::SequencerPartialConfig, - initial_data: config::InitialData, - ) -> Result { - // Ensure logger is initialized only once - *LOGGER; - - debug!("Test context setup"); - - let (bedrock_compose, bedrock_addr) = setup_bedrock_node().await?; - - let (indexer_handle, temp_indexer_dir) = setup_indexer(bedrock_addr, &initial_data) - .await - .context("Failed to setup Indexer")?; - - let (sequencer_handle, temp_sequencer_dir) = - setup_sequencer(sequencer_partial_config, bedrock_addr, &initial_data) - .await - .context("Failed to setup Sequencer")?; - - let (wallet, temp_wallet_dir, wallet_password) = - setup_wallet(sequencer_handle.addr(), &initial_data) - .await - .context("Failed to setup wallet")?; - - let sequencer_url = config::addr_to_url(config::UrlProtocol::Http, sequencer_handle.addr()) - .context("Failed to convert sequencer addr to URL")?; - let indexer_url = config::addr_to_url(config::UrlProtocol::Ws, indexer_handle.addr()) - .context("Failed to convert indexer addr to URL")?; - let sequencer_client = SequencerClientBuilder::default() - .build(sequencer_url) - .context("Failed to create sequencer client")?; - let indexer_client = IndexerClient::new(&indexer_url) - .await - .context("Failed to create indexer client")?; - - Ok(Self { - sequencer_client, - indexer_client, - wallet, - wallet_password, - bedrock_compose, - sequencer_handle: Some(sequencer_handle), - indexer_handle, - _temp_indexer_dir: temp_indexer_dir, - _temp_sequencer_dir: temp_sequencer_dir, - _temp_wallet_dir: temp_wallet_dir, - }) - } - /// Get reference to the wallet. #[must_use] pub const fn wallet(&self) -> &WalletCore { @@ -137,10 +110,38 @@ impl TestContext { &self.sequencer_client } - /// Get reference to the indexer client. + /// Get the Bedrock Node address. #[must_use] - pub const fn indexer_client(&self) -> &IndexerClient { - &self.indexer_client + pub const fn bedrock_addr(&self) -> SocketAddr { + self.bedrock_addr + } + + /// Get reference to the indexer. + /// + /// # Panics + /// + /// Panics if the indexer is not enabled in the test context. See + /// [`TestContextBuilder::disable_indexer()`]. + #[must_use] + pub fn indexer(&self) -> &IndexerHandle { + self.indexer_components + .as_ref() + .map(|components| &components.indexer_handle) + .expect("Called `TestContext::indexer()` on context with disabled indexer") + } + + /// Get reference to the indexer client. + /// + /// # Panics + /// + /// Panics if the indexer is not enabled in the test context. See + /// [`TestContextBuilder::disable_indexer()`]. + #[must_use] + pub fn indexer_client(&self) -> &IndexerClient { + self.indexer_components + .as_ref() + .map(|components| &components.indexer_client) + .expect("Called `TestContext::indexer_client()` on context with disabled indexer") } /// Get existing public account IDs in the wallet. @@ -148,8 +149,9 @@ impl TestContext { pub fn existing_public_accounts(&self) -> Vec { self.wallet .storage() - .user_data + .key_chain() .public_account_ids() + .map(|(account_id, _idx)| account_id) .collect() } @@ -158,8 +160,9 @@ impl TestContext { pub fn existing_private_accounts(&self) -> Vec { self.wallet .storage() - .user_data + .key_chain() .private_account_ids() + .map(|(account_id, _idx)| account_id) .collect() } } @@ -168,15 +171,14 @@ impl Drop for TestContext { fn drop(&mut self) { let Self { sequencer_handle, - indexer_handle, bedrock_compose, - _temp_indexer_dir: _, - _temp_sequencer_dir: _, - _temp_wallet_dir: _, + bedrock_addr: _, + indexer_components: _, sequencer_client: _, - indexer_client: _, wallet: _, wallet_password: _, + _temp_sequencer_dir: _, + _temp_wallet_dir: _, } = self; let sequencer_handle = sequencer_handle @@ -192,10 +194,6 @@ impl Drop for TestContext { ); } - if !indexer_handle.is_healthy() { - error!("Indexer handle has unexpectedly stopped before TestContext drop"); - } - let container = bedrock_compose .service(BEDROCK_SERVICE_WITH_OPEN_PORT) .unwrap_or_else(|| { @@ -216,43 +214,24 @@ impl Drop for TestContext { } } -/// A test context to be used in normal #[test] tests. -pub struct BlockingTestContext { - ctx: Option, - runtime: tokio::runtime::Runtime, -} - -impl BlockingTestContext { - pub fn new() -> Result { - let runtime = tokio::runtime::Runtime::new().unwrap(); - let ctx = runtime.block_on(TestContext::new())?; - Ok(Self { - ctx: Some(ctx), - runtime, - }) - } - - pub const fn ctx(&self) -> &TestContext { - self.ctx.as_ref().expect("TestContext is set") - } -} - pub struct TestContextBuilder { - initial_data: Option, + genesis_transactions: Option>, sequencer_partial_config: Option, + enable_indexer: bool, } impl TestContextBuilder { const fn new() -> Self { Self { - initial_data: None, + genesis_transactions: None, sequencer_partial_config: None, + enable_indexer: false, } } #[must_use] - pub fn with_initial_data(mut self, initial_data: config::InitialData) -> Self { - self.initial_data = Some(initial_data); + pub fn with_genesis(mut self, genesis_transactions: Vec) -> Self { + self.genesis_transactions = Some(genesis_transactions); self } @@ -265,14 +244,135 @@ impl TestContextBuilder { self } + /// Exclude Indexer from test context. + /// Indexer is enabled by default. + /// + /// Methods like [`TestContext::indexer()`] and [`TestContext::indexer_client()`] will panic if + /// called when indexer is disabled. + #[must_use] + pub const fn disable_indexer(mut self) -> Self { + self.enable_indexer = false; + self + } + pub async fn build(self) -> Result { - TestContext::new_configured( - self.sequencer_partial_config.unwrap_or_default(), - self.initial_data.unwrap_or_else(|| { - config::InitialData::with_two_public_and_two_private_initialized_accounts() - }), + let Self { + genesis_transactions, + sequencer_partial_config, + enable_indexer, + } = self; + + // Ensure logger is initialized only once + *LOGGER; + + debug!("Test context setup"); + + let (bedrock_compose, bedrock_addr) = setup_bedrock_node() + .await + .context("Failed to setup Bedrock node")?; + + let indexer_components = if enable_indexer { + let (indexer_handle, temp_indexer_dir) = setup_indexer(bedrock_addr) + .await + .context("Failed to setup Indexer")?; + let indexer_url = config::addr_to_url(config::UrlProtocol::Ws, indexer_handle.addr()) + .context("Failed to convert indexer addr to URL")?; + let indexer_client = IndexerClient::new(&indexer_url) + .await + .context("Failed to create indexer client")?; + Some(IndexerComponents { + indexer_handle, + indexer_client, + _temp_dir: temp_indexer_dir, + }) + } else { + None + }; + + let initial_public_accounts = config::default_public_accounts_for_wallet(); + let (sequencer_handle, temp_sequencer_dir) = setup_sequencer( + sequencer_partial_config.unwrap_or_default(), + bedrock_addr, + genesis_transactions + .unwrap_or_else(|| config::genesis_from_public_accounts(&initial_public_accounts)), ) .await + .context("Failed to setup Sequencer")?; + + let (mut wallet, temp_wallet_dir, wallet_password) = + setup_wallet(sequencer_handle.addr(), &initial_public_accounts) + .context("Failed to setup wallet")?; + setup_private_accounts_with_initial_supply(&mut wallet) + .await + .context("Failed to initialize private accounts in wallet")?; + + let sequencer_url = config::addr_to_url(config::UrlProtocol::Http, sequencer_handle.addr()) + .context("Failed to convert sequencer addr to URL")?; + let sequencer_client = SequencerClientBuilder::default() + .build(sequencer_url) + .context("Failed to create sequencer client")?; + + Ok(TestContext { + sequencer_client, + wallet, + wallet_password, + bedrock_compose, + bedrock_addr, + sequencer_handle: Some(sequencer_handle), + indexer_components, + _temp_sequencer_dir: temp_sequencer_dir, + _temp_wallet_dir: temp_wallet_dir, + }) + } + + pub fn build_blocking(self) -> Result { + let runtime = tokio::runtime::Runtime::new().context("Failed to create Tokio runtime")?; + + let ctx = runtime.block_on(self.build())?; + + Ok(BlockingTestContext { + ctx: Some(ctx), + runtime, + }) + } +} +/// A test context to be used in normal #[test] tests. +pub struct BlockingTestContext { + ctx: Option, + runtime: tokio::runtime::Runtime, +} + +impl BlockingTestContext { + pub fn new() -> Result { + TestContext::builder().build_blocking() + } + + pub const fn ctx(&self) -> &TestContext { + self.ctx.as_ref().expect("TestContext is set") + } + + pub const fn runtime(&self) -> &tokio::runtime::Runtime { + &self.runtime + } + + pub fn block_on<'ctx, F>(&'ctx self, f: impl FnOnce(&'ctx TestContext) -> F) -> F::Output + where + F: std::future::Future + 'ctx, + { + let future = f(self.ctx()); + self.runtime.block_on(future) + } + + pub fn block_on_mut<'ctx, F>( + &'ctx mut self, + f: impl FnOnce(&'ctx mut TestContext) -> F, + ) -> F::Output + where + F: std::future::Future + 'ctx, + { + let ctx_mut = self.ctx.as_mut().expect("TestContext is set"); + let future = f(ctx_mut); + self.runtime.block_on(future) } } @@ -290,13 +390,13 @@ impl Drop for BlockingTestContext { } #[must_use] -pub fn format_public_account_id(account_id: AccountId) -> String { - format!("Public/{account_id}") +pub const fn public_mention(account_id: AccountId) -> CliAccountMention { + CliAccountMention::Id(AccountIdWithPrivacy::Public(account_id)) } #[must_use] -pub fn format_private_account_id(account_id: AccountId) -> String { - format!("Private/{account_id}") +pub const fn private_mention(account_id: AccountId) -> CliAccountMention { + CliAccountMention::Id(AccountIdWithPrivacy::Private(account_id)) } #[expect( diff --git a/integration_tests/src/setup.rs b/integration_tests/src/setup.rs index 774c67e3..55c24e92 100644 --- a/integration_tests/src/setup.rs +++ b/integration_tests/src/setup.rs @@ -1,27 +1,30 @@ -use std::{ - ffi::{CString, c_char}, - fs::File, - io::Write as _, - net::SocketAddr, - path::PathBuf, -}; +use std::{net::SocketAddr, path::PathBuf}; use anyhow::{Context as _, Result, bail}; -use indexer_ffi::{IndexerServiceFFI, api::lifecycle::InitializedIndexerServiceFFIResult}; use indexer_service::IndexerHandle; use log::{debug, warn}; -use sequencer_service::SequencerHandle; +use nssa::PrivateKey; +use sequencer_service::{GenesisTransaction, SequencerHandle}; use tempfile::TempDir; use testcontainers::compose::DockerCompose; -use wallet::{WalletCore, config::WalletConfigOverrides}; +use wallet::{ + WalletCore, + cli::{ + Command, SubcommandReturnValue, + account::{AccountSubcommand, NewSubcommand}, + execute_subcommand, + programs::native_token_transfer::AuthTransferSubcommand, + }, + config::WalletConfigOverrides, +}; -use crate::{BEDROCK_SERVICE_PORT, BEDROCK_SERVICE_WITH_OPEN_PORT, config}; +use crate::{ + BEDROCK_SERVICE_PORT, BEDROCK_SERVICE_WITH_OPEN_PORT, + config::{self, INITIAL_PRIVATE_BALANCES_FOR_WALLET}, + private_mention, public_mention, +}; -unsafe extern "C" { - fn start_indexer(config_path: *const c_char, port: u16) -> InitializedIndexerServiceFFIResult; -} - -pub(crate) async fn setup_bedrock_node() -> Result<(DockerCompose, SocketAddr)> { +pub async fn setup_bedrock_node() -> Result<(DockerCompose, SocketAddr)> { let manifest_dir = env!("CARGO_MANIFEST_DIR"); let bedrock_compose_path = PathBuf::from(manifest_dir).join("../bedrock/docker-compose.yml"); @@ -91,10 +94,7 @@ pub(crate) async fn setup_bedrock_node() -> Result<(DockerCompose, SocketAddr)> Ok((compose, addr)) } -pub(crate) async fn setup_indexer( - bedrock_addr: SocketAddr, - initial_data: &config::InitialData, -) -> Result<(IndexerHandle, TempDir)> { +pub async fn setup_indexer(bedrock_addr: SocketAddr) -> Result<(IndexerHandle, TempDir)> { let temp_indexer_dir = tempfile::tempdir().context("Failed to create temp dir for indexer home")?; @@ -103,12 +103,8 @@ pub(crate) async fn setup_indexer( temp_indexer_dir.path().display() ); - let indexer_config = config::indexer_config( - bedrock_addr, - temp_indexer_dir.path().to_owned(), - initial_data, - ) - .context("Failed to create Indexer config")?; + let indexer_config = config::indexer_config(bedrock_addr, temp_indexer_dir.path().to_owned()) + .context("Failed to create Indexer config")?; indexer_service::run_server(indexer_config, 0) .await @@ -116,10 +112,10 @@ pub(crate) async fn setup_indexer( .map(|handle| (handle, temp_indexer_dir)) } -pub(crate) async fn setup_sequencer( +pub async fn setup_sequencer( partial: config::SequencerPartialConfig, bedrock_addr: SocketAddr, - initial_data: &config::InitialData, + genesis_transactions: Vec, ) -> Result<(SequencerHandle, TempDir)> { let temp_sequencer_dir = tempfile::tempdir().context("Failed to create temp dir for sequencer home")?; @@ -133,7 +129,7 @@ pub(crate) async fn setup_sequencer( partial, temp_sequencer_dir.path().to_owned(), bedrock_addr, - initial_data, + genesis_transactions, ) .context("Failed to create Sequencer config")?; @@ -142,12 +138,11 @@ pub(crate) async fn setup_sequencer( Ok((sequencer_handle, temp_sequencer_dir)) } -pub(crate) async fn setup_wallet( +pub fn setup_wallet( sequencer_addr: SocketAddr, - initial_data: &config::InitialData, + initial_public_accounts: &[(PrivateKey, u128)], ) -> Result<(WalletCore, TempDir, String)> { - let config = config::wallet_config(sequencer_addr, initial_data) - .context("Failed to create Wallet config")?; + let config = config::wallet_config(sequencer_addr).context("Failed to create Wallet config")?; let config_serialized = serde_json::to_string_pretty(&config).context("Failed to serialize Wallet config")?; @@ -162,57 +157,94 @@ pub(crate) async fn setup_wallet( let config_overrides = WalletConfigOverrides::default(); let wallet_password = "test_pass".to_owned(); - let (wallet, _mnemonic) = WalletCore::new_init_storage( + let (mut wallet, _mnemonic) = WalletCore::new_init_storage( config_path, storage_path, Some(config_overrides), &wallet_password, ) .context("Failed to init wallet")?; + + for (private_key, _balance) in initial_public_accounts { + wallet + .storage_mut() + .key_chain_mut() + .add_imported_public_account(private_key.clone()); + } + wallet .store_persistent_data() - .await .context("Failed to store wallet persistent data")?; Ok((wallet, temp_wallet_dir, wallet_password)) } -pub(crate) fn setup_indexer_ffi( - bedrock_addr: SocketAddr, - initial_data: &config::InitialData, -) -> Result<(IndexerServiceFFI, TempDir)> { - let temp_indexer_dir = - tempfile::tempdir().context("Failed to create temp dir for indexer home")?; - - debug!( - "Using temp indexer home at {}", - temp_indexer_dir.path().display() - ); - - let indexer_config = config::indexer_config( - bedrock_addr, - temp_indexer_dir.path().to_owned(), - initial_data, - ) - .context("Failed to create Indexer config")?; - - let config_json = serde_json::to_vec(&indexer_config)?; - let config_path = temp_indexer_dir.path().join("indexer_config.json"); - let mut file = File::create(config_path.as_path())?; - file.write_all(&config_json)?; - file.flush()?; - - let res = - // SAFETY: lib function ensures validity of value. - unsafe { start_indexer(CString::new(config_path.to_str().unwrap())?.as_ptr(), 0) }; - - if res.error.is_error() { - anyhow::bail!("Indexer FFI error {:?}", res.error); +pub async fn setup_private_accounts_with_initial_supply(wallet: &mut WalletCore) -> Result<()> { + for _ in INITIAL_PRIVATE_BALANCES_FOR_WALLET { + let result = execute_subcommand( + wallet, + Command::Account(AccountSubcommand::New(NewSubcommand::Private { + cci: None, + label: None, + })), + ) + .await + .context("Failed to create a private account")?; + let SubcommandReturnValue::RegisterAccount { account_id: _ } = result else { + bail!("Expected RegisterAccount return value when creating private account"); + }; } - Ok(( - // SAFETY: lib function ensures validity of value. - unsafe { std::ptr::read(res.value) }, - temp_indexer_dir, - )) + let public_account_ids: Vec<_> = wallet + .storage() + .key_chain() + .public_account_ids() + .map(|(account_id, _idx)| account_id) + .collect(); + + if public_account_ids.len() < INITIAL_PRIVATE_BALANCES_FOR_WALLET.len() { + bail!( + "Expected at least {} public accounts in wallet storage, found {}", + INITIAL_PRIVATE_BALANCES_FOR_WALLET.len(), + public_account_ids.len() + ); + } + + let private_account_ids: Vec<_> = wallet + .storage() + .key_chain() + .private_account_ids() + .map(|(account_id, _idx)| account_id) + .collect(); + + for ((from, to), amount) in public_account_ids + .into_iter() + .zip(private_account_ids.into_iter()) + .zip(INITIAL_PRIVATE_BALANCES_FOR_WALLET) + { + let result = execute_subcommand( + wallet, + Command::AuthTransfer(AuthTransferSubcommand::Send { + from: public_mention(from), + to: Some(private_mention(to)), + to_npk: None, + to_vpk: None, + to_identifier: None, + amount, + }), + ) + .await + .context("Failed to perform initial shielded transfer to private account")?; + + if !matches!( + result, + SubcommandReturnValue::PrivacyPreservingTransfer { .. } + ) { + bail!( + "Expected PrivacyPreservingTransfer return value when shielding initial private funds" + ); + } + } + + Ok(()) } diff --git a/integration_tests/src/test_context_ffi.rs b/integration_tests/src/test_context_ffi.rs deleted file mode 100644 index d03a4e00..00000000 --- a/integration_tests/src/test_context_ffi.rs +++ /dev/null @@ -1,299 +0,0 @@ -use std::sync::Arc; - -use anyhow::{Context as _, Result}; -use futures::FutureExt as _; -use indexer_ffi::IndexerServiceFFI; -use indexer_service_rpc::RpcClient as _; -use log::{debug, error}; -use nssa::AccountId; -use sequencer_service::SequencerHandle; -use sequencer_service_rpc::{RpcClient as _, SequencerClient, SequencerClientBuilder}; -use tempfile::TempDir; -use testcontainers::compose::DockerCompose; -use wallet::WalletCore; - -use crate::{ - BEDROCK_SERVICE_WITH_OPEN_PORT, LOGGER, TestContextBuilder, config, - indexer_client::IndexerClient, - setup::{setup_bedrock_node, setup_indexer_ffi, setup_sequencer, setup_wallet}, -}; - -/// Test context which sets up a sequencer, indexer through ffi and a wallet for integration tests. -/// -/// It's memory and logically safe to create multiple instances of this struct in parallel tests, -/// as each instance uses its own temporary directories for sequencer and wallet data. -// NOTE: Order of fields is important for proper drop order. -pub struct TestContextFFI { - sequencer_client: SequencerClient, - indexer_client: IndexerClient, - wallet: WalletCore, - wallet_password: String, - /// Optional to move out value in Drop. - sequencer_handle: Option, - bedrock_compose: DockerCompose, - _temp_indexer_dir: TempDir, - _temp_sequencer_dir: TempDir, - _temp_wallet_dir: TempDir, -} - -#[expect( - clippy::multiple_inherent_impl, - reason = "It is more natural to have this implementation here" -)] -impl TestContextBuilder { - pub fn build_ffi( - self, - runtime: &Arc, - ) -> Result<(TestContextFFI, IndexerServiceFFI)> { - TestContextFFI::new_configured( - self.sequencer_partial_config.unwrap_or_default(), - &self.initial_data.unwrap_or_else(|| { - config::InitialData::with_two_public_and_two_private_initialized_accounts() - }), - runtime, - ) - } -} - -impl TestContextFFI { - /// Create new test context. - pub fn new(runtime: &Arc) -> Result<(Self, IndexerServiceFFI)> { - Self::builder().build_ffi(runtime) - } - - #[must_use] - pub const fn builder() -> TestContextBuilder { - TestContextBuilder::new() - } - - fn new_configured( - sequencer_partial_config: config::SequencerPartialConfig, - initial_data: &config::InitialData, - runtime: &Arc, - ) -> Result<(Self, IndexerServiceFFI)> { - // Ensure logger is initialized only once - *LOGGER; - - debug!("Test context setup"); - - let (bedrock_compose, bedrock_addr) = runtime.block_on(setup_bedrock_node())?; - - let (indexer_ffi, temp_indexer_dir) = - setup_indexer_ffi(bedrock_addr, initial_data).context("Failed to setup Indexer")?; - - let (sequencer_handle, temp_sequencer_dir) = runtime - .block_on(setup_sequencer( - sequencer_partial_config, - bedrock_addr, - initial_data, - )) - .context("Failed to setup Sequencer")?; - - let (wallet, temp_wallet_dir, wallet_password) = runtime - .block_on(setup_wallet(sequencer_handle.addr(), initial_data)) - .context("Failed to setup wallet")?; - - let sequencer_url = config::addr_to_url(config::UrlProtocol::Http, sequencer_handle.addr()) - .context("Failed to convert sequencer addr to URL")?; - let indexer_url = config::addr_to_url( - config::UrlProtocol::Ws, - // SAFETY: addr is valid if indexer_ffi is valid. - unsafe { indexer_ffi.addr() }, - ) - .context("Failed to convert indexer addr to URL")?; - let sequencer_client = SequencerClientBuilder::default() - .build(sequencer_url) - .context("Failed to create sequencer client")?; - let indexer_client = runtime - .block_on(IndexerClient::new(&indexer_url)) - .context("Failed to create indexer client")?; - - Ok(( - Self { - sequencer_client, - indexer_client, - wallet, - wallet_password, - bedrock_compose, - sequencer_handle: Some(sequencer_handle), - _temp_indexer_dir: temp_indexer_dir, - _temp_sequencer_dir: temp_sequencer_dir, - _temp_wallet_dir: temp_wallet_dir, - }, - indexer_ffi, - )) - } - - /// Get reference to the wallet. - #[must_use] - pub const fn wallet(&self) -> &WalletCore { - &self.wallet - } - - #[must_use] - pub fn wallet_password(&self) -> &str { - &self.wallet_password - } - - /// Get mutable reference to the wallet. - pub const fn wallet_mut(&mut self) -> &mut WalletCore { - &mut self.wallet - } - - /// Get reference to the sequencer client. - #[must_use] - pub const fn sequencer_client(&self) -> &SequencerClient { - &self.sequencer_client - } - - /// Get reference to the indexer client. - #[must_use] - pub const fn indexer_client(&self) -> &IndexerClient { - &self.indexer_client - } - - /// Get existing public account IDs in the wallet. - #[must_use] - pub fn existing_public_accounts(&self) -> Vec { - self.wallet - .storage() - .user_data - .public_account_ids() - .collect() - } - - /// Get existing private account IDs in the wallet. - #[must_use] - pub fn existing_private_accounts(&self) -> Vec { - self.wallet - .storage() - .user_data - .private_account_ids() - .collect() - } - - pub fn get_last_block_sequencer(&self, runtime: &Arc) -> Result { - Ok(runtime.block_on(self.sequencer_client.get_last_block_id())?) - } - - pub fn get_last_block_indexer(&self, runtime: &Arc) -> Result { - Ok(runtime.block_on(self.indexer_client.get_last_finalized_block_id())?) - } -} - -impl Drop for TestContextFFI { - fn drop(&mut self) { - let Self { - sequencer_handle, - bedrock_compose, - _temp_indexer_dir: _, - _temp_sequencer_dir: _, - _temp_wallet_dir: _, - sequencer_client: _, - indexer_client: _, - wallet: _, - wallet_password: _, - } = self; - - let sequencer_handle = sequencer_handle - .take() - .expect("Sequencer handle should be present in TestContext drop"); - if !sequencer_handle.is_healthy() { - let Err(err) = sequencer_handle - .failed() - .now_or_never() - .expect("Sequencer handle should not be running"); - error!( - "Sequencer handle has unexpectedly stopped before TestContext drop with error: {err:#}" - ); - } - - let container = bedrock_compose - .service(BEDROCK_SERVICE_WITH_OPEN_PORT) - .unwrap_or_else(|| { - panic!("Failed to get Bedrock service container `{BEDROCK_SERVICE_WITH_OPEN_PORT}`") - }); - let output = std::process::Command::new("docker") - .args(["inspect", "-f", "{{.State.Running}}", container.id()]) - .output() - .expect("Failed to execute docker inspect command to check if Bedrock container is still running"); - let stdout = String::from_utf8(output.stdout) - .expect("Failed to parse docker inspect output as String"); - if stdout.trim() != "true" { - error!( - "Bedrock container `{}` is not running during TestContext drop, docker inspect output: {stdout}", - container.id() - ); - } - } -} - -/// A test context with ffi to be used in normal #[test] tests. -pub struct BlockingTestContextFFI { - ctx: Option, - runtime: Arc, - indexer_ffi: IndexerServiceFFI, -} - -impl BlockingTestContextFFI { - pub fn new() -> Result { - let runtime = tokio::runtime::Runtime::new().unwrap(); - let runtime_wrapped = Arc::new(runtime); - let (ctx, indexer_ffi) = TestContextFFI::new(&runtime_wrapped)?; - Ok(Self { - ctx: Some(ctx), - runtime: runtime_wrapped, - indexer_ffi, - }) - } - - #[must_use] - pub const fn ctx(&self) -> &TestContextFFI { - self.ctx.as_ref().expect("TestContext is set") - } - - #[must_use] - pub const fn ctx_mut(&mut self) -> &mut TestContextFFI { - self.ctx.as_mut().expect("TestContext is set") - } - - #[must_use] - pub const fn runtime(&self) -> &Arc { - &self.runtime - } - - #[must_use] - pub fn runtime_clone(&self) -> Arc { - Arc::::clone(&self.runtime) - } - - #[must_use] - pub const fn indexer_ffi(&self) -> *const IndexerServiceFFI { - &raw const (self.indexer_ffi) - } -} - -impl Drop for BlockingTestContextFFI { - fn drop(&mut self) { - let Self { - ctx, - runtime, - indexer_ffi, - } = self; - - // Ensure async cleanup of TestContext by blocking on its drop in the runtime. - runtime.block_on(async { - if let Some(ctx) = ctx.take() { - drop(ctx); - } - }); - - let indexer_handle = - // SAFETY: lib function ensures validity of value. - unsafe { indexer_ffi.handle() }; - - if !indexer_handle.is_healthy() { - error!("Indexer handle has unexpectedly stopped before TestContext drop"); - } - } -} diff --git a/integration_tests/tests/account.rs b/integration_tests/tests/account.rs index 47fda69f..82134840 100644 --- a/integration_tests/tests/account.rs +++ b/integration_tests/tests/account.rs @@ -3,16 +3,21 @@ reason = "We don't care about these in tests" )] -use anyhow::Result; -use integration_tests::{TestContext, format_private_account_id}; +use anyhow::{Context as _, Result}; +use integration_tests::{TestContext, private_mention}; +use key_protocol::key_management::KeyChain; use log::info; -use nssa::program::Program; +use nssa::{Data, program::Program}; +use nssa_core::account::Nonce; use sequencer_service_rpc::RpcClient as _; use tokio::test; -use wallet::cli::{ - Command, - account::{AccountSubcommand, NewSubcommand}, - execute_subcommand, +use wallet::{ + account::{AccountIdWithPrivacy, HumanReadableAccount, Label}, + cli::{ + Command, SubcommandReturnValue, + account::{AccountSubcommand, ImportSubcommand, NewSubcommand}, + execute_subcommand, + }, }; #[test] @@ -30,7 +35,7 @@ async fn get_existing_account() -> Result<()> { ); assert_eq!(account.balance, 10000); assert!(account.data.is_empty()); - assert_eq!(account.nonce.0, 0); + assert_eq!(account.nonce.0, 1); info!("Successfully retrieved account with correct details"); @@ -41,7 +46,7 @@ async fn get_existing_account() -> Result<()> { async fn new_public_account_with_label() -> Result<()> { let mut ctx = TestContext::new().await?; - let label = "my-test-public-account".to_owned(); + let label = Label::new("my-test-public-account"); let command = Command::Account(AccountSubcommand::New(NewSubcommand::Public { cci: None, label: Some(label.clone()), @@ -55,14 +60,9 @@ async fn new_public_account_with_label() -> Result<()> { }; // Verify the label was stored - let stored_label = ctx - .wallet() - .storage() - .labels - .get(&account_id.to_string()) - .expect("Label should be stored for the new account"); + let resolved = ctx.wallet().storage().resolve_label(&label); - assert_eq!(stored_label.to_string(), label); + assert_eq!(resolved, Some(AccountIdWithPrivacy::Public(account_id))); info!("Successfully created public account with label"); @@ -74,23 +74,17 @@ async fn add_label_to_existing_account() -> Result<()> { let mut ctx = TestContext::new().await?; let account_id = ctx.existing_private_accounts()[0]; - let label = "my-test-private-account".to_owned(); + let label = Label::new("my-test-private-account"); let command = Command::Account(AccountSubcommand::Label { - account_id: Some(format_private_account_id(account_id)), - account_label: None, + account_id: private_mention(account_id), label: label.clone(), }); execute_subcommand(ctx.wallet_mut(), command).await?; - let stored_label = ctx - .wallet() - .storage() - .labels - .get(&account_id.to_string()) - .expect("Label should be stored for the account"); + let resolved = ctx.wallet().storage().resolve_label(&label); - assert_eq!(stored_label.to_string(), label); + assert_eq!(resolved, Some(AccountIdWithPrivacy::Private(account_id))); info!("Successfully set label on existing private account"); @@ -114,12 +108,13 @@ async fn new_public_account_without_label() -> Result<()> { panic!("Expected RegisterAccount return value") }; - // Verify no label was stored + // Verify no label was stored for the account id assert!( - !ctx.wallet() + ctx.wallet() .storage() - .labels - .contains_key(&account_id.to_string()), + .labels_for_account(AccountIdWithPrivacy::Public(account_id)) + .next() + .is_none(), "No label should be stored when not provided" ); @@ -127,3 +122,150 @@ async fn new_public_account_without_label() -> Result<()> { Ok(()) } + +#[test] +async fn import_public_account() -> Result<()> { + let mut ctx = TestContext::new().await?; + + let private_key = nssa::PrivateKey::new_os_random(); + let account_id = nssa::AccountId::from(&nssa::PublicKey::new_from_private_key(&private_key)); + + let command = Command::Account(AccountSubcommand::Import(ImportSubcommand::Public { + private_key, + })); + let sub_ret = wallet::cli::execute_subcommand(ctx.wallet_mut(), command).await?; + let SubcommandReturnValue::Empty = sub_ret else { + anyhow::bail!("Expected Empty return value"); + }; + + let imported_key = ctx + .wallet() + .storage() + .key_chain() + .pub_account_signing_key(account_id); + assert!( + imported_key.is_some(), + "Imported public account should be present" + ); + + Ok(()) +} + +#[test] +async fn import_private_account() -> Result<()> { + let mut ctx = TestContext::new().await?; + + let key_chain = KeyChain::new_os_random(); + let account_id = nssa::AccountId::from((&key_chain.nullifier_public_key, 0)); + let account = nssa::Account { + program_owner: Program::authenticated_transfer_program().id(), + balance: 777, + data: Data::default(), + nonce: Nonce::default(), + }; + + let key_chain_json = serde_json::to_string(&key_chain) + .context("Failed to serialize key chain for private import")?; + let account_state = HumanReadableAccount::from(account.clone()); + + let command = Command::Account(AccountSubcommand::Import(ImportSubcommand::Private { + key_chain_json, + account_state, + chain_index: None, + identifier: 0, + })); + let sub_ret = wallet::cli::execute_subcommand(ctx.wallet_mut(), command).await?; + let SubcommandReturnValue::Empty = sub_ret else { + anyhow::bail!("Expected Empty return value"); + }; + + let imported_acc = ctx + .wallet() + .storage() + .key_chain() + .private_account(account_id) + .context("Imported private account should be present")?; + + assert_eq!( + imported_acc.key_chain.secret_spending_key, + key_chain.secret_spending_key + ); + assert_eq!( + imported_acc.key_chain.nullifier_public_key, + key_chain.nullifier_public_key + ); + assert_eq!( + imported_acc.key_chain.viewing_public_key, + key_chain.viewing_public_key + ); + + assert_eq!(imported_acc.chain_index, None); + + assert_eq!(imported_acc.identifier, 0); + + assert_eq!(imported_acc.account, &account); + + Ok(()) +} + +#[test] +async fn import_private_account_second_time_overrides_account_data() -> Result<()> { + let mut ctx = TestContext::new().await?; + + let key_chain = KeyChain::new_os_random(); + let account_id = nssa::AccountId::from((&key_chain.nullifier_public_key, 0)); + let key_chain_json = + serde_json::to_string(&key_chain).context("Failed to serialize key chain")?; + + let initial_account = nssa::Account { + program_owner: Program::authenticated_transfer_program().id(), + balance: 100, + data: Data::default(), + nonce: Nonce::default(), + }; + + // First import + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Account(AccountSubcommand::Import(ImportSubcommand::Private { + key_chain_json: key_chain_json.clone(), + account_state: HumanReadableAccount::from(initial_account), + chain_index: None, + identifier: 0, + })), + ) + .await?; + + let updated_account = nssa::Account { + program_owner: Program::authenticated_transfer_program().id(), + balance: 999, + data: Data::default(), + nonce: Nonce::default(), + }; + + // Second import with different account data (same key chain) + wallet::cli::execute_subcommand( + ctx.wallet_mut(), + Command::Account(AccountSubcommand::Import(ImportSubcommand::Private { + key_chain_json, + account_state: HumanReadableAccount::from(updated_account.clone()), + chain_index: None, + identifier: 0, + })), + ) + .await?; + + let imported = ctx + .wallet() + .storage() + .key_chain() + .private_account(account_id) + .context("Imported private account should be present")?; + + assert_eq!( + imported.account, &updated_account, + "Second import should override account data" + ); + + Ok(()) +} diff --git a/integration_tests/tests/amm.rs b/integration_tests/tests/amm.rs index 3eaf35e2..b7a747f1 100644 --- a/integration_tests/tests/amm.rs +++ b/integration_tests/tests/amm.rs @@ -7,14 +7,17 @@ use std::time::Duration; use anyhow::Result; -use integration_tests::{TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, format_public_account_id}; +use integration_tests::{TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, public_mention}; use log::info; use sequencer_service_rpc::RpcClient as _; use tokio::test; -use wallet::cli::{ - Command, SubcommandReturnValue, - account::{AccountSubcommand, NewSubcommand}, - programs::{amm::AmmProgramAgnosticSubcommand, token::TokenProgramAgnosticSubcommand}, +use wallet::{ + account::Label, + cli::{ + Command, SubcommandReturnValue, + account::{AccountSubcommand, NewSubcommand}, + programs::{amm::AmmProgramAgnosticSubcommand, token::TokenProgramAgnosticSubcommand}, + }, }; #[test] @@ -113,10 +116,8 @@ async fn amm_public() -> Result<()> { // Create new token let subcommand = TokenProgramAgnosticSubcommand::New { - definition_account_id: Some(format_public_account_id(definition_account_id_1)), - definition_account_label: None, - supply_account_id: Some(format_public_account_id(supply_account_id_1)), - supply_account_label: None, + definition_account_id: public_mention(definition_account_id_1), + supply_account_id: public_mention(supply_account_id_1), name: "A NAM1".to_owned(), total_supply: 37, @@ -127,10 +128,8 @@ async fn amm_public() -> Result<()> { // Transfer 7 tokens from `supply_acc` to the account at account_id `recipient_account_id_1` let subcommand = TokenProgramAgnosticSubcommand::Send { - from: Some(format_public_account_id(supply_account_id_1)), - from_label: None, - to: Some(format_public_account_id(recipient_account_id_1)), - to_label: None, + from: public_mention(supply_account_id_1), + to: Some(public_mention(recipient_account_id_1)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -143,10 +142,8 @@ async fn amm_public() -> Result<()> { // Create new token let subcommand = TokenProgramAgnosticSubcommand::New { - definition_account_id: Some(format_public_account_id(definition_account_id_2)), - definition_account_label: None, - supply_account_id: Some(format_public_account_id(supply_account_id_2)), - supply_account_label: None, + definition_account_id: public_mention(definition_account_id_2), + supply_account_id: public_mention(supply_account_id_2), name: "A NAM2".to_owned(), total_supply: 37, @@ -157,10 +154,8 @@ async fn amm_public() -> Result<()> { // Transfer 7 tokens from `supply_acc` to the account at account_id `recipient_account_id_2` let subcommand = TokenProgramAgnosticSubcommand::Send { - from: Some(format_public_account_id(supply_account_id_2)), - from_label: None, - to: Some(format_public_account_id(recipient_account_id_2)), - to_label: None, + from: public_mention(supply_account_id_2), + to: Some(public_mention(recipient_account_id_2)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -193,12 +188,9 @@ async fn amm_public() -> Result<()> { // Send creation tx let subcommand = AmmProgramAgnosticSubcommand::New { - user_holding_a: Some(format_public_account_id(recipient_account_id_1)), - user_holding_a_label: None, - user_holding_b: Some(format_public_account_id(recipient_account_id_2)), - user_holding_b_label: None, - user_holding_lp: Some(format_public_account_id(user_holding_lp)), - user_holding_lp_label: None, + user_holding_a: public_mention(recipient_account_id_1), + user_holding_b: public_mention(recipient_account_id_2), + user_holding_lp: public_mention(user_holding_lp), balance_a: 3, balance_b: 3, }; @@ -239,13 +231,11 @@ async fn amm_public() -> Result<()> { // Make swap let subcommand = AmmProgramAgnosticSubcommand::SwapExactInput { - user_holding_a: Some(format_public_account_id(recipient_account_id_1)), - user_holding_a_label: None, - user_holding_b: Some(format_public_account_id(recipient_account_id_2)), - user_holding_b_label: None, + user_holding_a: public_mention(recipient_account_id_1), + user_holding_b: public_mention(recipient_account_id_2), amount_in: 2, min_amount_out: 1, - token_definition: definition_account_id_1.to_string(), + token_definition: definition_account_id_1, }; wallet::cli::execute_subcommand(ctx.wallet_mut(), Command::AMM(subcommand)).await?; @@ -284,13 +274,11 @@ async fn amm_public() -> Result<()> { // Make swap let subcommand = AmmProgramAgnosticSubcommand::SwapExactInput { - user_holding_a: Some(format_public_account_id(recipient_account_id_1)), - user_holding_a_label: None, - user_holding_b: Some(format_public_account_id(recipient_account_id_2)), - user_holding_b_label: None, + user_holding_a: public_mention(recipient_account_id_1), + user_holding_b: public_mention(recipient_account_id_2), amount_in: 2, min_amount_out: 1, - token_definition: definition_account_id_2.to_string(), + token_definition: definition_account_id_2, }; wallet::cli::execute_subcommand(ctx.wallet_mut(), Command::AMM(subcommand)).await?; @@ -329,12 +317,9 @@ async fn amm_public() -> Result<()> { // Add liquidity let subcommand = AmmProgramAgnosticSubcommand::AddLiquidity { - user_holding_a: Some(format_public_account_id(recipient_account_id_1)), - user_holding_a_label: None, - user_holding_b: Some(format_public_account_id(recipient_account_id_2)), - user_holding_b_label: None, - user_holding_lp: Some(format_public_account_id(user_holding_lp)), - user_holding_lp_label: None, + user_holding_a: public_mention(recipient_account_id_1), + user_holding_b: public_mention(recipient_account_id_2), + user_holding_lp: public_mention(user_holding_lp), min_amount_lp: 1, max_amount_a: 2, max_amount_b: 2, @@ -376,12 +361,9 @@ async fn amm_public() -> Result<()> { // Remove liquidity let subcommand = AmmProgramAgnosticSubcommand::RemoveLiquidity { - user_holding_a: Some(format_public_account_id(recipient_account_id_1)), - user_holding_a_label: None, - user_holding_b: Some(format_public_account_id(recipient_account_id_2)), - user_holding_b_label: None, - user_holding_lp: Some(format_public_account_id(user_holding_lp)), - user_holding_lp_label: None, + user_holding_a: public_mention(recipient_account_id_1), + user_holding_b: public_mention(recipient_account_id_2), + user_holding_lp: public_mention(user_holding_lp), balance_lp: 2, min_amount_a: 1, min_amount_b: 1, @@ -457,14 +439,14 @@ async fn amm_new_pool_using_labels() -> Result<()> { }; // Create holding_a with a label - let holding_a_label = "amm-holding-a-label".to_owned(); + let holding_a_label = Label::new("amm-holding-a-label"); let SubcommandReturnValue::RegisterAccount { account_id: holding_a_id, } = wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Account(AccountSubcommand::New(NewSubcommand::Public { cci: None, - label: Some(holding_a_label.clone()), + label: Some(Label::new(holding_a_label.clone())), })), ) .await? @@ -502,14 +484,14 @@ async fn amm_new_pool_using_labels() -> Result<()> { }; // Create holding_b with a label - let holding_b_label = "amm-holding-b-label".to_owned(); + let holding_b_label = Label::new("amm-holding-b-label"); let SubcommandReturnValue::RegisterAccount { account_id: holding_b_id, } = wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Account(AccountSubcommand::New(NewSubcommand::Public { cci: None, - label: Some(holding_b_label.clone()), + label: Some(Label::new(holding_b_label.clone())), })), ) .await? @@ -518,14 +500,14 @@ async fn amm_new_pool_using_labels() -> Result<()> { }; // Create holding_lp with a label - let holding_lp_label = "amm-holding-lp-label".to_owned(); + let holding_lp_label = Label::new("amm-holding-lp-label"); let SubcommandReturnValue::RegisterAccount { account_id: holding_lp_id, } = wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Account(AccountSubcommand::New(NewSubcommand::Public { cci: None, - label: Some(holding_lp_label.clone()), + label: Some(Label::new(holding_lp_label.clone())), })), ) .await? @@ -535,10 +517,8 @@ async fn amm_new_pool_using_labels() -> Result<()> { // Create token 1 and distribute to holding_a let subcommand = TokenProgramAgnosticSubcommand::New { - definition_account_id: Some(format_public_account_id(definition_account_id_1)), - definition_account_label: None, - supply_account_id: Some(format_public_account_id(supply_account_id_1)), - supply_account_label: None, + definition_account_id: public_mention(definition_account_id_1), + supply_account_id: public_mention(supply_account_id_1), name: "TOKEN1".to_owned(), total_supply: 10, }; @@ -546,10 +526,8 @@ async fn amm_new_pool_using_labels() -> Result<()> { tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; let subcommand = TokenProgramAgnosticSubcommand::Send { - from: Some(format_public_account_id(supply_account_id_1)), - from_label: None, - to: Some(format_public_account_id(holding_a_id)), - to_label: None, + from: public_mention(supply_account_id_1), + to: Some(public_mention(holding_a_id)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -560,10 +538,8 @@ async fn amm_new_pool_using_labels() -> Result<()> { // Create token 2 and distribute to holding_b let subcommand = TokenProgramAgnosticSubcommand::New { - definition_account_id: Some(format_public_account_id(definition_account_id_2)), - definition_account_label: None, - supply_account_id: Some(format_public_account_id(supply_account_id_2)), - supply_account_label: None, + definition_account_id: public_mention(definition_account_id_2), + supply_account_id: public_mention(supply_account_id_2), name: "TOKEN2".to_owned(), total_supply: 10, }; @@ -571,10 +547,8 @@ async fn amm_new_pool_using_labels() -> Result<()> { tokio::time::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)).await; let subcommand = TokenProgramAgnosticSubcommand::Send { - from: Some(format_public_account_id(supply_account_id_2)), - from_label: None, - to: Some(format_public_account_id(holding_b_id)), - to_label: None, + from: public_mention(supply_account_id_2), + to: Some(public_mention(holding_b_id)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -585,12 +559,9 @@ async fn amm_new_pool_using_labels() -> Result<()> { // Create AMM pool using account labels instead of IDs let subcommand = AmmProgramAgnosticSubcommand::New { - user_holding_a: None, - user_holding_a_label: Some(holding_a_label), - user_holding_b: None, - user_holding_b_label: Some(holding_b_label), - user_holding_lp: None, - user_holding_lp_label: Some(holding_lp_label), + user_holding_a: holding_a_label.into(), + user_holding_b: holding_b_label.into(), + user_holding_lp: holding_lp_label.into(), balance_a: 3, balance_b: 3, }; diff --git a/integration_tests/tests/ata.rs b/integration_tests/tests/ata.rs index 6f0bf05c..d0eddeae 100644 --- a/integration_tests/tests/ata.rs +++ b/integration_tests/tests/ata.rs @@ -9,8 +9,8 @@ use std::time::Duration; use anyhow::{Context as _, Result}; use ata_core::{compute_ata_seed, get_associated_token_account_id}; use integration_tests::{ - TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, format_private_account_id, - format_public_account_id, verify_commitment_is_in_state, + TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, private_mention, public_mention, + verify_commitment_is_in_state, }; use log::info; use nssa::program::Program; @@ -68,10 +68,8 @@ async fn create_ata_initializes_holding_account() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Token(TokenProgramAgnosticSubcommand::New { - definition_account_id: Some(format_public_account_id(definition_account_id)), - definition_account_label: None, - supply_account_id: Some(format_public_account_id(supply_account_id)), - supply_account_label: None, + definition_account_id: public_mention(definition_account_id), + supply_account_id: public_mention(supply_account_id), name: "TEST".to_owned(), total_supply, }), @@ -85,8 +83,8 @@ async fn create_ata_initializes_holding_account() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Ata(AtaSubcommand::Create { - owner: format_public_account_id(owner_account_id), - token_definition: definition_account_id.to_string(), + owner: public_mention(owner_account_id), + token_definition: definition_account_id, }), ) .await?; @@ -132,10 +130,8 @@ async fn create_ata_is_idempotent() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Token(TokenProgramAgnosticSubcommand::New { - definition_account_id: Some(format_public_account_id(definition_account_id)), - definition_account_label: None, - supply_account_id: Some(format_public_account_id(supply_account_id)), - supply_account_label: None, + definition_account_id: public_mention(definition_account_id), + supply_account_id: public_mention(supply_account_id), name: "TEST".to_owned(), total_supply: 100, }), @@ -149,8 +145,8 @@ async fn create_ata_is_idempotent() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Ata(AtaSubcommand::Create { - owner: format_public_account_id(owner_account_id), - token_definition: definition_account_id.to_string(), + owner: public_mention(owner_account_id), + token_definition: definition_account_id, }), ) .await?; @@ -162,8 +158,8 @@ async fn create_ata_is_idempotent() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Ata(AtaSubcommand::Create { - owner: format_public_account_id(owner_account_id), - token_definition: definition_account_id.to_string(), + owner: public_mention(owner_account_id), + token_definition: definition_account_id, }), ) .await?; @@ -212,10 +208,8 @@ async fn transfer_and_burn_via_ata() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Token(TokenProgramAgnosticSubcommand::New { - definition_account_id: Some(format_public_account_id(definition_account_id)), - definition_account_label: None, - supply_account_id: Some(format_public_account_id(supply_account_id)), - supply_account_label: None, + definition_account_id: public_mention(definition_account_id), + supply_account_id: public_mention(supply_account_id), name: "TEST".to_owned(), total_supply, }), @@ -240,16 +234,16 @@ async fn transfer_and_burn_via_ata() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Ata(AtaSubcommand::Create { - owner: format_public_account_id(sender_account_id), - token_definition: definition_account_id.to_string(), + owner: public_mention(sender_account_id), + token_definition: definition_account_id, }), ) .await?; wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Ata(AtaSubcommand::Create { - owner: format_public_account_id(recipient_account_id), - token_definition: definition_account_id.to_string(), + owner: public_mention(recipient_account_id), + token_definition: definition_account_id, }), ) .await?; @@ -262,10 +256,8 @@ async fn transfer_and_burn_via_ata() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Token(TokenProgramAgnosticSubcommand::Send { - from: Some(format_public_account_id(supply_account_id)), - from_label: None, - to: Some(format_public_account_id(sender_ata_id)), - to_label: None, + from: public_mention(supply_account_id), + to: Some(public_mention(sender_ata_id)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -282,9 +274,9 @@ async fn transfer_and_burn_via_ata() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Ata(AtaSubcommand::Send { - from: format_public_account_id(sender_account_id), - token_definition: definition_account_id.to_string(), - to: recipient_ata_id.to_string(), + from: public_mention(sender_account_id), + token_definition: definition_account_id, + to: recipient_ata_id, amount: transfer_amount, }), ) @@ -320,8 +312,8 @@ async fn transfer_and_burn_via_ata() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Ata(AtaSubcommand::Burn { - holder: format_public_account_id(sender_account_id), - token_definition: definition_account_id.to_string(), + holder: public_mention(sender_account_id), + token_definition: definition_account_id, amount: burn_amount, }), ) @@ -371,10 +363,8 @@ async fn create_ata_with_private_owner() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Token(TokenProgramAgnosticSubcommand::New { - definition_account_id: Some(format_public_account_id(definition_account_id)), - definition_account_label: None, - supply_account_id: Some(format_public_account_id(supply_account_id)), - supply_account_label: None, + definition_account_id: public_mention(definition_account_id), + supply_account_id: public_mention(supply_account_id), name: "TEST".to_owned(), total_supply: 100, }), @@ -388,8 +378,8 @@ async fn create_ata_with_private_owner() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Ata(AtaSubcommand::Create { - owner: format_private_account_id(owner_account_id), - token_definition: definition_account_id.to_string(), + owner: private_mention(owner_account_id), + token_definition: definition_account_id, }), ) .await?; @@ -445,10 +435,8 @@ async fn transfer_via_ata_private_owner() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Token(TokenProgramAgnosticSubcommand::New { - definition_account_id: Some(format_public_account_id(definition_account_id)), - definition_account_label: None, - supply_account_id: Some(format_public_account_id(supply_account_id)), - supply_account_label: None, + definition_account_id: public_mention(definition_account_id), + supply_account_id: public_mention(supply_account_id), name: "TEST".to_owned(), total_supply, }), @@ -473,16 +461,16 @@ async fn transfer_via_ata_private_owner() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Ata(AtaSubcommand::Create { - owner: format_private_account_id(sender_account_id), - token_definition: definition_account_id.to_string(), + owner: private_mention(sender_account_id), + token_definition: definition_account_id, }), ) .await?; wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Ata(AtaSubcommand::Create { - owner: format_public_account_id(recipient_account_id), - token_definition: definition_account_id.to_string(), + owner: public_mention(recipient_account_id), + token_definition: definition_account_id, }), ) .await?; @@ -495,10 +483,8 @@ async fn transfer_via_ata_private_owner() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Token(TokenProgramAgnosticSubcommand::Send { - from: Some(format_public_account_id(supply_account_id)), - from_label: None, - to: Some(format_public_account_id(sender_ata_id)), - to_label: None, + from: public_mention(supply_account_id), + to: Some(public_mention(sender_ata_id)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -515,9 +501,9 @@ async fn transfer_via_ata_private_owner() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Ata(AtaSubcommand::Send { - from: format_private_account_id(sender_account_id), - token_definition: definition_account_id.to_string(), - to: recipient_ata_id.to_string(), + from: private_mention(sender_account_id), + token_definition: definition_account_id, + to: recipient_ata_id, amount: transfer_amount, }), ) @@ -572,10 +558,8 @@ async fn burn_via_ata_private_owner() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Token(TokenProgramAgnosticSubcommand::New { - definition_account_id: Some(format_public_account_id(definition_account_id)), - definition_account_label: None, - supply_account_id: Some(format_public_account_id(supply_account_id)), - supply_account_label: None, + definition_account_id: public_mention(definition_account_id), + supply_account_id: public_mention(supply_account_id), name: "TEST".to_owned(), total_supply, }), @@ -596,8 +580,8 @@ async fn burn_via_ata_private_owner() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Ata(AtaSubcommand::Create { - owner: format_private_account_id(holder_account_id), - token_definition: definition_account_id.to_string(), + owner: private_mention(holder_account_id), + token_definition: definition_account_id, }), ) .await?; @@ -610,10 +594,8 @@ async fn burn_via_ata_private_owner() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Token(TokenProgramAgnosticSubcommand::Send { - from: Some(format_public_account_id(supply_account_id)), - from_label: None, - to: Some(format_public_account_id(holder_ata_id)), - to_label: None, + from: public_mention(supply_account_id), + to: Some(public_mention(holder_ata_id)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -630,8 +612,8 @@ async fn burn_via_ata_private_owner() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Ata(AtaSubcommand::Burn { - holder: format_private_account_id(holder_account_id), - token_definition: definition_account_id.to_string(), + holder: private_mention(holder_account_id), + token_definition: definition_account_id, amount: burn_amount, }), ) diff --git a/integration_tests/tests/auth_transfer/private.rs b/integration_tests/tests/auth_transfer/private.rs index 8db5f8d4..31a1c361 100644 --- a/integration_tests/tests/auth_transfer/private.rs +++ b/integration_tests/tests/auth_transfer/private.rs @@ -2,18 +2,21 @@ use std::time::Duration; use anyhow::{Context as _, Result}; use integration_tests::{ - TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, fetch_privacy_preserving_tx, - format_private_account_id, format_public_account_id, verify_commitment_is_in_state, + TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, fetch_privacy_preserving_tx, private_mention, + public_mention, verify_commitment_is_in_state, }; use log::info; use nssa::{AccountId, program::Program}; use nssa_core::{NullifierPublicKey, encryption::shared_key_derivation::Secp256k1Point}; use sequencer_service_rpc::RpcClient as _; use tokio::test; -use wallet::cli::{ - Command, SubcommandReturnValue, - account::{AccountSubcommand, NewSubcommand}, - programs::native_token_transfer::AuthTransferSubcommand, +use wallet::{ + account::Label, + cli::{ + CliAccountMention, Command, SubcommandReturnValue, + account::{AccountSubcommand, NewSubcommand}, + programs::native_token_transfer::AuthTransferSubcommand, + }, }; #[test] @@ -24,10 +27,8 @@ async fn private_transfer_to_owned_account() -> Result<()> { let to: AccountId = ctx.existing_private_accounts()[1]; let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_private_account_id(from)), - from_label: None, - to: Some(format_private_account_id(to)), - to_label: None, + from: private_mention(from), + to: Some(private_mention(to)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -66,10 +67,8 @@ async fn private_transfer_to_foreign_account() -> Result<()> { let to_vpk = Secp256k1Point::from_scalar(to_npk.0); let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_private_account_id(from)), - from_label: None, + from: private_mention(from), to: None, - to_label: None, to_npk: Some(to_npk_string), to_vpk: Some(hex::encode(to_vpk.0)), to_identifier: Some(0), @@ -117,10 +116,8 @@ async fn deshielded_transfer_to_public_account() -> Result<()> { assert_eq!(from_acc.balance, 10000); let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_private_account_id(from)), - from_label: None, - to: Some(format_public_account_id(to)), - to_label: None, + from: private_mention(from), + to: Some(public_mention(to)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -173,22 +170,20 @@ async fn private_transfer_to_owned_account_using_claiming_path() -> Result<()> { }; // Get the keys for the newly created account - let (to_keys, _, to_identifier) = ctx + let to = ctx .wallet() .storage() - .user_data - .get_private_account(to_account_id) + .key_chain() + .private_account(to_account_id) .context("Failed to get private account")?; // Send to this account using claiming path (using npk and vpk instead of account ID) let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_private_account_id(from)), - from_label: None, + from: private_mention(from), to: None, - to_label: None, - to_npk: Some(hex::encode(to_keys.nullifier_public_key.0)), - to_vpk: Some(hex::encode(to_keys.viewing_public_key.0)), - to_identifier: Some(to_identifier), + to_npk: Some(hex::encode(to.key_chain.nullifier_public_key.0)), + to_vpk: Some(hex::encode(&to.key_chain.viewing_public_key.0)), + to_identifier: Some(to.identifier), amount: 100, }); @@ -233,10 +228,8 @@ async fn shielded_transfer_to_owned_private_account() -> Result<()> { let to: AccountId = ctx.existing_private_accounts()[1]; let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_public_account_id(from)), - from_label: None, - to: Some(format_private_account_id(to)), - to_label: None, + from: public_mention(from), + to: Some(private_mention(to)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -278,10 +271,8 @@ async fn shielded_transfer_to_foreign_account() -> Result<()> { let from: AccountId = ctx.existing_public_accounts()[0]; let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_public_account_id(from)), - from_label: None, + from: public_mention(from), to: None, - to_label: None, to_npk: Some(to_npk_string), to_vpk: Some(hex::encode(to_vpk.0)), to_identifier: Some(0), @@ -341,22 +332,20 @@ async fn private_transfer_to_owned_account_continuous_run_path() -> Result<()> { }; // Get the newly created account's keys - let (to_keys, _, to_identifier) = ctx + let to = ctx .wallet() .storage() - .user_data - .get_private_account(to_account_id) + .key_chain() + .private_account(to_account_id) .context("Failed to get private account")?; // Send transfer using nullifier and viewing public keys let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_private_account_id(from)), - from_label: None, + from: private_mention(from), to: None, - to_label: None, - to_npk: Some(hex::encode(to_keys.nullifier_public_key.0)), - to_vpk: Some(hex::encode(to_keys.viewing_public_key.0)), - to_identifier: Some(to_identifier), + to_npk: Some(hex::encode(to.key_chain.nullifier_public_key.0)), + to_vpk: Some(hex::encode(&to.key_chain.viewing_public_key.0)), + to_identifier: Some(to.identifier), amount: 100, }); @@ -402,8 +391,7 @@ async fn initialize_private_account() -> Result<()> { }; let command = Command::AuthTransfer(AuthTransferSubcommand::Init { - account_id: Some(format_private_account_id(account_id)), - account_label: None, + account_id: private_mention(account_id), }); wallet::cli::execute_subcommand(ctx.wallet_mut(), command).await?; @@ -444,20 +432,17 @@ async fn private_transfer_using_from_label() -> Result<()> { let to: AccountId = ctx.existing_private_accounts()[1]; // Assign a label to the sender account - let label = "private-sender-label".to_owned(); + let label = Label::new("private-sender-label"); let command = Command::Account(AccountSubcommand::Label { - account_id: Some(format_private_account_id(from)), - account_label: None, + account_id: private_mention(from), label: label.clone(), }); wallet::cli::execute_subcommand(ctx.wallet_mut(), command).await?; // Send using the label instead of account ID let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: None, - from_label: Some(label), - to: Some(format_private_account_id(to)), - to_label: None, + from: CliAccountMention::Label(label), + to: Some(private_mention(to)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -491,7 +476,7 @@ async fn initialize_private_account_using_label() -> Result<()> { let mut ctx = TestContext::new().await?; // Create a new private account with a label - let label = "init-private-label".to_owned(); + let label = Label::new("init-private-label"); let command = Command::Account(AccountSubcommand::New(NewSubcommand::Private { cci: None, label: Some(label.clone()), @@ -503,8 +488,7 @@ async fn initialize_private_account_using_label() -> Result<()> { // Initialize using the label instead of account ID let command = Command::AuthTransfer(AuthTransferSubcommand::Init { - account_id: None, - account_label: Some(label), + account_id: label.into(), }); wallet::cli::execute_subcommand(ctx.wallet_mut(), command).await?; @@ -541,15 +525,12 @@ async fn shielded_transfers_to_two_identifiers_same_npk() -> Result<()> { // Both transfers below will target this same node with distinct identifiers. let chain_index = ctx.wallet_mut().create_private_accounts_key(None); let (npk, vpk) = { - let node = ctx + let key_chain = ctx .wallet() .storage() - .user_data - .private_key_tree - .key_map - .get(&chain_index) - .expect("node was just inserted"); - let key_chain = &node.value.0; + .key_chain() + .private_account_key_chain_by_index(&chain_index) + .expect("Failed to get private account key chain for chain index"); ( key_chain.nullifier_public_key, key_chain.viewing_public_key.clone(), @@ -568,10 +549,8 @@ async fn shielded_transfers_to_two_identifiers_same_npk() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_public_account_id(sender_0)), - from_label: None, + from: public_mention(sender_0), to: None, - to_label: None, to_npk: Some(npk_hex.clone()), to_vpk: Some(vpk_hex.clone()), to_identifier: Some(identifier_1), @@ -583,10 +562,8 @@ async fn shielded_transfers_to_two_identifiers_same_npk() -> Result<()> { wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_public_account_id(sender_1)), - from_label: None, + from: public_mention(sender_1), to: None, - to_label: None, to_npk: Some(npk_hex), to_vpk: Some(vpk_hex), to_identifier: Some(identifier_2), @@ -620,21 +597,25 @@ async fn shielded_transfers_to_two_identifiers_same_npk() -> Result<()> { assert_eq!(acc_2.balance, 200); // Both account ids must resolve to the same key node. - let tree = &ctx.wallet().storage().user_data.private_key_tree; - let ci_1 = tree - .account_id_map - .get(&account_id_1) - .context("account_id_1 missing from private_key_tree.account_id_map")?; - let ci_2 = tree - .account_id_map - .get(&account_id_2) - .context("account_id_2 missing from private_key_tree.account_id_map")?; + let found_acc1 = ctx + .wallet() + .storage() + .key_chain() + .private_account(account_id_1) + .context("account_id_1 not found in key chain")?; + let found_acc2 = ctx + .wallet() + .storage() + .key_chain() + .private_account(account_id_2) + .context("account_id_2 not found in key chain")?; assert_eq!( - ci_1, ci_2, + found_acc1.chain_index, found_acc2.chain_index, "identifiers 1 and 2 under the same NPK must share a single chain_index" ); assert_eq!( - ci_1, &chain_index, + found_acc1.chain_index, + Some(chain_index), "both accounts must resolve to the key node created at the start of the test" ); diff --git a/integration_tests/tests/auth_transfer/public.rs b/integration_tests/tests/auth_transfer/public.rs index e2b5a618..2b6ec130 100644 --- a/integration_tests/tests/auth_transfer/public.rs +++ b/integration_tests/tests/auth_transfer/public.rs @@ -1,15 +1,18 @@ use std::time::Duration; use anyhow::Result; -use integration_tests::{TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, format_public_account_id}; +use integration_tests::{TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, public_mention}; use log::info; use nssa::program::Program; use sequencer_service_rpc::RpcClient as _; use tokio::test; -use wallet::cli::{ - Command, SubcommandReturnValue, - account::{AccountSubcommand, NewSubcommand}, - programs::native_token_transfer::AuthTransferSubcommand, +use wallet::{ + account::Label, + cli::{ + CliAccountMention, Command, SubcommandReturnValue, + account::{AccountSubcommand, NewSubcommand}, + programs::native_token_transfer::AuthTransferSubcommand, + }, }; #[test] @@ -17,10 +20,8 @@ async fn successful_transfer_to_existing_account() -> Result<()> { let mut ctx = TestContext::new().await?; let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_public_account_id(ctx.existing_public_accounts()[0])), - from_label: None, - to: Some(format_public_account_id(ctx.existing_public_accounts()[1])), - to_label: None, + from: public_mention(ctx.existing_public_accounts()[0]), + to: Some(public_mention(ctx.existing_public_accounts()[1])), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -67,8 +68,9 @@ pub async fn successful_transfer_to_new_account() -> Result<()> { let new_persistent_account_id = ctx .wallet() .storage() - .user_data - .account_ids() + .key_chain() + .public_account_ids() + .map(|(account_id, _)| account_id) .find(|acc_id| { *acc_id != ctx.existing_public_accounts()[0] && *acc_id != ctx.existing_public_accounts()[1] @@ -76,10 +78,8 @@ pub async fn successful_transfer_to_new_account() -> Result<()> { .expect("Failed to find newly created account in the wallet storage"); let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_public_account_id(ctx.existing_public_accounts()[0])), - from_label: None, - to: Some(format_public_account_id(new_persistent_account_id)), - to_label: None, + from: public_mention(ctx.existing_public_accounts()[0]), + to: Some(public_mention(new_persistent_account_id)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -115,10 +115,8 @@ async fn failed_transfer_with_insufficient_balance() -> Result<()> { let mut ctx = TestContext::new().await?; let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_public_account_id(ctx.existing_public_accounts()[0])), - from_label: None, - to: Some(format_public_account_id(ctx.existing_public_accounts()[1])), - to_label: None, + from: public_mention(ctx.existing_public_accounts()[0]), + to: Some(public_mention(ctx.existing_public_accounts()[1])), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -156,10 +154,8 @@ async fn two_consecutive_successful_transfers() -> Result<()> { // First transfer let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_public_account_id(ctx.existing_public_accounts()[0])), - from_label: None, - to: Some(format_public_account_id(ctx.existing_public_accounts()[1])), - to_label: None, + from: public_mention(ctx.existing_public_accounts()[0]), + to: Some(public_mention(ctx.existing_public_accounts()[1])), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -191,10 +187,8 @@ async fn two_consecutive_successful_transfers() -> Result<()> { // Second transfer let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_public_account_id(ctx.existing_public_accounts()[0])), - from_label: None, - to: Some(format_public_account_id(ctx.existing_public_accounts()[1])), - to_label: None, + from: public_mention(ctx.existing_public_accounts()[0]), + to: Some(public_mention(ctx.existing_public_accounts()[1])), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -241,8 +235,7 @@ async fn initialize_public_account() -> Result<()> { }; let command = Command::AuthTransfer(AuthTransferSubcommand::Init { - account_id: Some(format_public_account_id(account_id)), - account_label: None, + account_id: public_mention(account_id), }); wallet::cli::execute_subcommand(ctx.wallet_mut(), command).await?; @@ -267,20 +260,17 @@ async fn successful_transfer_using_from_label() -> Result<()> { let mut ctx = TestContext::new().await?; // Assign a label to the sender account - let label = "sender-label".to_owned(); + let label = Label::new("sender-label"); let command = Command::Account(AccountSubcommand::Label { - account_id: Some(format_public_account_id(ctx.existing_public_accounts()[0])), - account_label: None, + account_id: public_mention(ctx.existing_public_accounts()[0]), label: label.clone(), }); wallet::cli::execute_subcommand(ctx.wallet_mut(), command).await?; // Send using the label instead of account ID let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: None, - from_label: Some(label), - to: Some(format_public_account_id(ctx.existing_public_accounts()[1])), - to_label: None, + from: CliAccountMention::Label(label), + to: Some(public_mention(ctx.existing_public_accounts()[1])), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -315,20 +305,17 @@ async fn successful_transfer_using_to_label() -> Result<()> { let mut ctx = TestContext::new().await?; // Assign a label to the receiver account - let label = "receiver-label".to_owned(); + let label = Label::new("receiver-label"); let command = Command::Account(AccountSubcommand::Label { - account_id: Some(format_public_account_id(ctx.existing_public_accounts()[1])), - account_label: None, + account_id: public_mention(ctx.existing_public_accounts()[1]), label: label.clone(), }); wallet::cli::execute_subcommand(ctx.wallet_mut(), command).await?; // Send using the label for the recipient let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_public_account_id(ctx.existing_public_accounts()[0])), - from_label: None, - to: None, - to_label: Some(label), + from: public_mention(ctx.existing_public_accounts()[0]), + to: Some(CliAccountMention::Label(label)), to_npk: None, to_vpk: None, to_identifier: Some(0), diff --git a/integration_tests/tests/indexer.rs b/integration_tests/tests/indexer.rs index 21463117..5cf33cde 100644 --- a/integration_tests/tests/indexer.rs +++ b/integration_tests/tests/indexer.rs @@ -9,54 +9,61 @@ use std::time::Duration; use anyhow::{Context as _, Result}; use indexer_service_rpc::RpcClient as _; use integration_tests::{ - TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, format_private_account_id, - format_public_account_id, verify_commitment_is_in_state, + TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, private_mention, public_mention, + verify_commitment_is_in_state, }; use log::info; use nssa::AccountId; -use wallet::cli::{Command, programs::native_token_transfer::AuthTransferSubcommand}; +use wallet::{ + account::Label, + cli::{CliAccountMention, Command, programs::native_token_transfer::AuthTransferSubcommand}, +}; /// Maximum time to wait for the indexer to catch up to the sequencer. const L2_TO_L1_TIMEOUT_MILLIS: u64 = 180_000; /// Poll the indexer until its last finalized block id reaches the sequencer's -/// current last block id (and at least the genesis block has been advanced past), -/// or until [`L2_TO_L1_TIMEOUT_MILLIS`] elapses. Returns the last indexer block -/// id observed. -async fn wait_for_indexer_to_catch_up(ctx: &TestContext) -> u64 { +/// current last block id or until [`L2_TO_L1_TIMEOUT_MILLIS`] elapses. +/// Returns the last indexer block id observed. +async fn wait_for_indexer_to_catch_up(ctx: &TestContext) -> Result { let timeout = Duration::from_millis(L2_TO_L1_TIMEOUT_MILLIS); + let block_id_to_catch_up = + sequencer_service_rpc::RpcClient::get_last_block_id(ctx.sequencer_client()).await?; let mut last_ind: u64 = 1; let inner = async { loop { - let seq = sequencer_service_rpc::RpcClient::get_last_block_id(ctx.sequencer_client()) - .await - .unwrap_or(0); let ind = ctx .indexer_client() .get_last_finalized_block_id() - .await - .unwrap_or(1); + .await? + .unwrap_or(0); last_ind = ind; - if ind >= seq && ind > 1 { - info!("Indexer caught up: seq={seq}, ind={ind}"); - return ind; + if ind >= block_id_to_catch_up { + let last_seq = + sequencer_service_rpc::RpcClient::get_last_block_id(ctx.sequencer_client()) + .await?; + info!( + "Indexer caught up. Indexer last block id: {ind}. Current sequencer last block id: {last_seq}" + ); + return Ok(ind); } tokio::time::sleep(Duration::from_secs(2)).await; } }; tokio::time::timeout(timeout, inner) .await - .unwrap_or_else(|_| { - info!("Indexer catch-up timed out: ind={last_ind}"); - last_ind - }) + .with_context(|| { + format!( + "Indexer failed to catch up within {L2_TO_L1_TIMEOUT_MILLIS} milliseconds. Last indexer block id observed: {last_ind}, but needed to catch up to at least {block_id_to_catch_up}" + ) + })? } #[tokio::test] async fn indexer_test_run() -> Result<()> { let ctx = TestContext::new().await?; - let last_block_indexer = wait_for_indexer_to_catch_up(&ctx).await; + let last_block_indexer = wait_for_indexer_to_catch_up(&ctx).await?; let last_block_seq = sequencer_service_rpc::RpcClient::get_last_block_id(ctx.sequencer_client()).await?; @@ -64,7 +71,7 @@ async fn indexer_test_run() -> Result<()> { info!("Last block on seq now is {last_block_seq}"); info!("Last block on ind now is {last_block_indexer}"); - assert!(last_block_indexer > 1); + assert!(last_block_indexer > 0); Ok(()) } @@ -74,11 +81,11 @@ async fn indexer_block_batching() -> Result<()> { let ctx = TestContext::new().await?; info!("Waiting for indexer to parse blocks"); - let last_block_indexer = wait_for_indexer_to_catch_up(&ctx).await; + let last_block_indexer = wait_for_indexer_to_catch_up(&ctx).await?; info!("Last block on ind now is {last_block_indexer}"); - assert!(last_block_indexer > 1); + assert!(last_block_indexer > 0); // Getting wide batch to fit all blocks (from latest backwards) let mut block_batch = ctx.indexer_client().get_blocks(None, 100).await.unwrap(); @@ -105,10 +112,8 @@ async fn indexer_state_consistency() -> Result<()> { let mut ctx = TestContext::new().await?; let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_public_account_id(ctx.existing_public_accounts()[0])), - from_label: None, - to: Some(format_public_account_id(ctx.existing_public_accounts()[1])), - to_label: None, + from: public_mention(ctx.existing_public_accounts()[0]), + to: Some(public_mention(ctx.existing_public_accounts()[1])), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -142,10 +147,8 @@ async fn indexer_state_consistency() -> Result<()> { let to: AccountId = ctx.existing_private_accounts()[1]; let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_private_account_id(from)), - from_label: None, - to: Some(format_private_account_id(to)), - to_label: None, + from: private_mention(from), + to: Some(private_mention(to)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -172,7 +175,7 @@ async fn indexer_state_consistency() -> Result<()> { info!("Successfully transferred privately to owned account"); info!("Waiting for indexer to parse blocks"); - wait_for_indexer_to_catch_up(&ctx).await; + wait_for_indexer_to_catch_up(&ctx).await?; let acc1_ind_state = ctx .indexer_client() @@ -210,29 +213,25 @@ async fn indexer_state_consistency_with_labels() -> Result<()> { let mut ctx = TestContext::new().await?; // Assign labels to both accounts - let from_label = "idx-sender-label".to_owned(); - let to_label_str = "idx-receiver-label".to_owned(); + let from_label = Label::new("idx-sender-label"); + let to_label = Label::new("idx-receiver-label"); let label_cmd = Command::Account(wallet::cli::account::AccountSubcommand::Label { - account_id: Some(format_public_account_id(ctx.existing_public_accounts()[0])), - account_label: None, + account_id: public_mention(ctx.existing_public_accounts()[0]), label: from_label.clone(), }); wallet::cli::execute_subcommand(ctx.wallet_mut(), label_cmd).await?; let label_cmd = Command::Account(wallet::cli::account::AccountSubcommand::Label { - account_id: Some(format_public_account_id(ctx.existing_public_accounts()[1])), - account_label: None, - label: to_label_str.clone(), + account_id: public_mention(ctx.existing_public_accounts()[1]), + label: to_label.clone(), }); wallet::cli::execute_subcommand(ctx.wallet_mut(), label_cmd).await?; // Send using labels instead of account IDs let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: None, - from_label: Some(from_label), - to: None, - to_label: Some(to_label_str), + from: CliAccountMention::Label(from_label), + to: Some(CliAccountMention::Label(to_label)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -259,7 +258,7 @@ async fn indexer_state_consistency_with_labels() -> Result<()> { assert_eq!(acc_2_balance, 20100); info!("Waiting for indexer to parse blocks"); - wait_for_indexer_to_catch_up(&ctx).await; + wait_for_indexer_to_catch_up(&ctx).await?; let acc1_ind_state = ctx .indexer_client() diff --git a/integration_tests/tests/indexer_ffi.rs b/integration_tests/tests/indexer_ffi.rs index bbc329e3..c1523061 100644 --- a/integration_tests/tests/indexer_ffi.rs +++ b/integration_tests/tests/indexer_ffi.rs @@ -5,82 +5,145 @@ reason = "We don't care about these in tests" )] +use std::{ + ffi::{CString, c_char}, + fs::File, + io::Write as _, + net::SocketAddr, +}; + use anyhow::{Context as _, Result}; use indexer_ffi::{ - IndexerServiceFFI, OperationStatus, + IndexerServiceFFI, OperationStatus, Runtime, api::{ PointerResult, + lifecycle::InitializedIndexerServiceFFIResult, types::{FfiAccountId, FfiOption, FfiVec, account::FfiAccount, block::FfiBlock}, }, }; use integration_tests::{ - TIME_TO_WAIT_FOR_BLOCK_SECONDS, format_private_account_id, format_public_account_id, - test_context_ffi::BlockingTestContextFFI, verify_commitment_is_in_state, + BlockingTestContext, TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, private_mention, + public_mention, verify_commitment_is_in_state, }; -use log::info; +use log::{debug, info}; use nssa::AccountId; -use wallet::cli::{Command, programs::native_token_transfer::AuthTransferSubcommand}; +use tempfile::TempDir; +use wallet::{ + account::Label, + cli::{Command, programs::native_token_transfer::AuthTransferSubcommand}, +}; /// Maximum time to wait for the indexer to catch up to the sequencer. const L2_TO_L1_TIMEOUT_MILLIS: u64 = 180_000; unsafe extern "C" { unsafe fn query_last_block( + runtime: *const Runtime, indexer: *const IndexerServiceFFI, ) -> PointerResult; unsafe fn query_block_vec( + runtime: *const Runtime, indexer: *const IndexerServiceFFI, before: FfiOption, limit: u64, ) -> PointerResult, OperationStatus>; unsafe fn query_account( + runtime: *const Runtime, indexer: *const IndexerServiceFFI, account_id: FfiAccountId, ) -> PointerResult; + + unsafe fn start_indexer( + runtime: *const Runtime, + config_path: *const c_char, + port: u16, + ) -> InitializedIndexerServiceFFIResult; +} + +fn setup_indexer_ffi( + runtime: &Runtime, + bedrock_addr: SocketAddr, +) -> Result<(IndexerServiceFFI, TempDir)> { + let temp_indexer_dir = + tempfile::tempdir().context("Failed to create temp dir for indexer home")?; + + debug!( + "Using temp indexer home at {}", + temp_indexer_dir.path().display() + ); + + let indexer_config = + integration_tests::config::indexer_config(bedrock_addr, temp_indexer_dir.path().to_owned()) + .context("Failed to create Indexer config")?; + + let config_json = serde_json::to_vec(&indexer_config)?; + let config_path = temp_indexer_dir.path().join("indexer_config.json"); + let mut file = File::create(config_path.as_path())?; + file.write_all(&config_json)?; + file.flush()?; + + let res = + // SAFETY: lib function ensures validity of value. + unsafe { start_indexer(std::ptr::from_ref(runtime), CString::new(config_path.to_str().unwrap())?.as_ptr(), 0) }; + + if res.error.is_error() { + anyhow::bail!("Indexer FFI error {:?}", res.error); + } + + Ok(( + // SAFETY: lib function ensures validity of value. + unsafe { std::ptr::read(res.value) }, + temp_indexer_dir, + )) +} + +/// Prepare setup for tests. +fn setup() -> Result<(BlockingTestContext, IndexerServiceFFI, TempDir)> { + let ctx = TestContext::builder().disable_indexer().build_blocking()?; + // Safety: ctx runtime is valid for the lifetime of the returned Runtime + let runtime = unsafe { Runtime::from_borrowed(ctx.runtime()) }; + let (indexer_ffi, indexer_dir) = setup_indexer_ffi(&runtime, ctx.ctx().bedrock_addr())?; + + Ok((ctx, indexer_ffi, indexer_dir)) } #[test] fn indexer_test_run_ffi() -> Result<()> { - let blocking_ctx = BlockingTestContextFFI::new()?; - let runtime_wrapped = blocking_ctx.runtime(); + let (ctx, indexer_ffi, _indexer_dir) = setup()?; // RUN OBSERVATION - runtime_wrapped.block_on(async { - tokio::time::sleep(std::time::Duration::from_millis(L2_TO_L1_TIMEOUT_MILLIS)).await; - }); + std::thread::sleep(std::time::Duration::from_millis(L2_TO_L1_TIMEOUT_MILLIS)); - let last_block_indexer = blocking_ctx.ctx().get_last_block_indexer(runtime_wrapped)?; - let last_block_indexer_ffi_res = unsafe { query_last_block(blocking_ctx.indexer_ffi()) }; + // Safety: ctx runtime is valid for the lifetime of the returned Runtime + let runtime = unsafe { Runtime::from_borrowed(ctx.runtime()) }; + let last_block_indexer_ffi_res = + unsafe { query_last_block(&raw const runtime, &raw const indexer_ffi) }; assert!(last_block_indexer_ffi_res.error.is_ok()); let last_block_indexer_ffi = unsafe { *last_block_indexer_ffi_res.value }; - info!("Last block on ind now is {last_block_indexer}"); info!("Last block on ind ffi now is {last_block_indexer_ffi}"); - assert!(last_block_indexer > 1); assert!(last_block_indexer_ffi > 1); - assert_eq!(last_block_indexer, last_block_indexer_ffi); - Ok(()) } #[test] fn indexer_ffi_block_batching() -> Result<()> { - let blocking_ctx = BlockingTestContextFFI::new()?; - let runtime_wrapped = blocking_ctx.runtime(); + let (ctx, indexer_ffi, _indexer_dir) = setup()?; // WAIT info!("Waiting for indexer to parse blocks"); - runtime_wrapped.block_on(async { - tokio::time::sleep(std::time::Duration::from_millis(L2_TO_L1_TIMEOUT_MILLIS)).await; - }); + std::thread::sleep(std::time::Duration::from_millis(L2_TO_L1_TIMEOUT_MILLIS)); - let last_block_indexer_ffi_res = unsafe { query_last_block(blocking_ctx.indexer_ffi()) }; + // Safety: ctx runtime is valid for the lifetime of the returned Runtime + let runtime = unsafe { Runtime::from_borrowed(ctx.runtime()) }; + let last_block_indexer_ffi_res = + unsafe { query_last_block(&raw const runtime, &raw const indexer_ffi) }; assert!(last_block_indexer_ffi_res.error.is_ok()); @@ -93,8 +156,14 @@ fn indexer_ffi_block_batching() -> Result<()> { let before_ffi = FfiOption::::from_none(); let limit = 100; - let block_batch_ffi_res = - unsafe { query_block_vec(blocking_ctx.indexer_ffi(), before_ffi, limit) }; + let block_batch_ffi_res = unsafe { + query_block_vec( + &raw const runtime, + &raw const indexer_ffi, + before_ffi, + limit, + ) + }; assert!(block_batch_ffi_res.error.is_ok()); @@ -117,43 +186,37 @@ fn indexer_ffi_block_batching() -> Result<()> { #[test] fn indexer_ffi_state_consistency() -> Result<()> { - let mut blocking_ctx = BlockingTestContextFFI::new()?; - let runtime_wrapped = blocking_ctx.runtime_clone(); - let indexer_ffi = blocking_ctx.indexer_ffi(); - let ctx = blocking_ctx.ctx_mut(); + let (mut ctx, indexer_ffi, _indexer_dir) = setup()?; let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_public_account_id(ctx.existing_public_accounts()[0])), - from_label: None, - to: Some(format_public_account_id(ctx.existing_public_accounts()[1])), - to_label: None, + from: public_mention(ctx.ctx().existing_public_accounts()[0]), + to: Some(public_mention(ctx.ctx().existing_public_accounts()[1])), to_npk: None, to_vpk: None, amount: 100, to_identifier: Some(0), }); - runtime_wrapped.block_on(wallet::cli::execute_subcommand(ctx.wallet_mut(), command))?; + ctx.block_on_mut(|ctx| wallet::cli::execute_subcommand(ctx.wallet_mut(), command))?; info!("Waiting for next block creation"); - runtime_wrapped.block_on(async { - tokio::time::sleep(std::time::Duration::from_millis( - TIME_TO_WAIT_FOR_BLOCK_SECONDS, - )) - .await; - }); + std::thread::sleep(std::time::Duration::from_secs( + TIME_TO_WAIT_FOR_BLOCK_SECONDS, + )); info!("Checking correct balance move"); - let acc_1_balance = - runtime_wrapped.block_on(sequencer_service_rpc::RpcClient::get_account_balance( + let acc_1_balance = ctx.block_on(|ctx| { + sequencer_service_rpc::RpcClient::get_account_balance( ctx.sequencer_client(), ctx.existing_public_accounts()[0], - ))?; - let acc_2_balance = - runtime_wrapped.block_on(sequencer_service_rpc::RpcClient::get_account_balance( + ) + })?; + let acc_2_balance = ctx.block_on(|ctx| { + sequencer_service_rpc::RpcClient::get_account_balance( ctx.sequencer_client(), ctx.existing_public_accounts()[1], - ))?; + ) + })?; info!("Balance of sender: {acc_1_balance:#?}"); info!("Balance of receiver: {acc_2_balance:#?}"); @@ -161,68 +224,71 @@ fn indexer_ffi_state_consistency() -> Result<()> { assert_eq!(acc_1_balance, 9900); assert_eq!(acc_2_balance, 20100); - let from: AccountId = ctx.existing_private_accounts()[0]; - let to: AccountId = ctx.existing_private_accounts()[1]; + let from: AccountId = ctx.ctx().existing_private_accounts()[0]; + let to: AccountId = ctx.ctx().existing_private_accounts()[1]; let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_private_account_id(from)), - from_label: None, - to: Some(format_private_account_id(to)), - to_label: None, + from: private_mention(from), + to: Some(private_mention(to)), to_npk: None, to_vpk: None, amount: 100, to_identifier: Some(0), }); - runtime_wrapped.block_on(wallet::cli::execute_subcommand(ctx.wallet_mut(), command))?; + ctx.block_on_mut(|ctx| wallet::cli::execute_subcommand(ctx.wallet_mut(), command))?; info!("Waiting for next block creation"); - runtime_wrapped.block_on(async { - tokio::time::sleep(std::time::Duration::from_millis( - TIME_TO_WAIT_FOR_BLOCK_SECONDS, - )) - .await; - }); + std::thread::sleep(std::time::Duration::from_secs( + TIME_TO_WAIT_FOR_BLOCK_SECONDS, + )); let new_commitment1 = ctx + .ctx() .wallet() .get_private_account_commitment(from) .context("Failed to get private account commitment for sender")?; - let commitment_check1 = runtime_wrapped.block_on(verify_commitment_is_in_state( - new_commitment1, - ctx.sequencer_client(), - )); + let commitment_check1 = + ctx.block_on(|ctx| verify_commitment_is_in_state(new_commitment1, ctx.sequencer_client())); assert!(commitment_check1); let new_commitment2 = ctx + .ctx() .wallet() .get_private_account_commitment(to) .context("Failed to get private account commitment for receiver")?; - let commitment_check2 = runtime_wrapped.block_on(verify_commitment_is_in_state( - new_commitment2, - ctx.sequencer_client(), - )); + let commitment_check2 = + ctx.block_on(|ctx| verify_commitment_is_in_state(new_commitment2, ctx.sequencer_client())); assert!(commitment_check2); info!("Successfully transferred privately to owned account"); // WAIT info!("Waiting for indexer to parse blocks"); - runtime_wrapped.block_on(async { - tokio::time::sleep(std::time::Duration::from_millis(L2_TO_L1_TIMEOUT_MILLIS)).await; - }); + std::thread::sleep(std::time::Duration::from_millis(L2_TO_L1_TIMEOUT_MILLIS)); - let acc1_ind_state_ffi = - unsafe { query_account(indexer_ffi, (&ctx.existing_public_accounts()[0]).into()) }; + // Safety: ctx runtime is valid for the lifetime of the returned Runtime + let runtime = unsafe { Runtime::from_borrowed(ctx.runtime()) }; + let acc1_ind_state_ffi = unsafe { + query_account( + &raw const runtime, + &raw const indexer_ffi, + (&ctx.ctx().existing_public_accounts()[0]).into(), + ) + }; assert!(acc1_ind_state_ffi.error.is_ok()); let acc1_ind_state_pre = unsafe { &*acc1_ind_state_ffi.value }; let acc1_ind_state: indexer_service_protocol::Account = acc1_ind_state_pre.into(); - let acc2_ind_state_ffi = - unsafe { query_account(indexer_ffi, (&ctx.existing_public_accounts()[1]).into()) }; + let acc2_ind_state_ffi = unsafe { + query_account( + &raw const runtime, + &raw const indexer_ffi, + (&ctx.ctx().existing_public_accounts()[1]).into(), + ) + }; assert!(acc2_ind_state_ffi.error.is_ok()); @@ -230,16 +296,18 @@ fn indexer_ffi_state_consistency() -> Result<()> { let acc2_ind_state: indexer_service_protocol::Account = acc2_ind_state_pre.into(); info!("Checking correct state transition"); - let acc1_seq_state = - runtime_wrapped.block_on(sequencer_service_rpc::RpcClient::get_account( + let acc1_seq_state = ctx.block_on(|ctx| { + sequencer_service_rpc::RpcClient::get_account( ctx.sequencer_client(), ctx.existing_public_accounts()[0], - ))?; - let acc2_seq_state = - runtime_wrapped.block_on(sequencer_service_rpc::RpcClient::get_account( + ) + })?; + let acc2_seq_state = ctx.block_on(|ctx| { + sequencer_service_rpc::RpcClient::get_account( ctx.sequencer_client(), ctx.existing_public_accounts()[1], - ))?; + ) + })?; assert_eq!(acc1_ind_state, acc1_seq_state.into()); assert_eq!(acc2_ind_state, acc2_seq_state.into()); @@ -251,83 +319,81 @@ fn indexer_ffi_state_consistency() -> Result<()> { #[test] fn indexer_ffi_state_consistency_with_labels() -> Result<()> { - let mut blocking_ctx = BlockingTestContextFFI::new()?; - let runtime_wrapped = blocking_ctx.runtime_clone(); - let indexer_ffi = blocking_ctx.indexer_ffi(); - let ctx = blocking_ctx.ctx_mut(); + let (mut ctx, indexer_ffi, _indexer_dir) = setup()?; // Assign labels to both accounts - let from_label = "idx-sender-label".to_owned(); - let to_label_str = "idx-receiver-label".to_owned(); + let from_label = Label::new("idx-sender-label"); + let to_label = Label::new("idx-receiver-label"); let label_cmd = Command::Account(wallet::cli::account::AccountSubcommand::Label { - account_id: Some(format_public_account_id(ctx.existing_public_accounts()[0])), - account_label: None, + account_id: public_mention(ctx.ctx().existing_public_accounts()[0]), label: from_label.clone(), }); - runtime_wrapped.block_on(wallet::cli::execute_subcommand(ctx.wallet_mut(), label_cmd))?; + ctx.block_on_mut(|ctx| wallet::cli::execute_subcommand(ctx.wallet_mut(), label_cmd))?; let label_cmd = Command::Account(wallet::cli::account::AccountSubcommand::Label { - account_id: Some(format_public_account_id(ctx.existing_public_accounts()[1])), - account_label: None, - label: to_label_str.clone(), + account_id: public_mention(ctx.ctx().existing_public_accounts()[1]), + label: to_label.clone(), }); - runtime_wrapped.block_on(wallet::cli::execute_subcommand(ctx.wallet_mut(), label_cmd))?; + ctx.block_on_mut(|ctx| wallet::cli::execute_subcommand(ctx.wallet_mut(), label_cmd))?; // Send using labels instead of account IDs let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: None, - from_label: Some(from_label), - to: None, - to_label: Some(to_label_str), + from: from_label.into(), + to: Some(to_label.into()), to_npk: None, to_vpk: None, amount: 100, to_identifier: Some(0), }); - runtime_wrapped.block_on(wallet::cli::execute_subcommand(ctx.wallet_mut(), command))?; + ctx.block_on_mut(|ctx| wallet::cli::execute_subcommand(ctx.wallet_mut(), command))?; info!("Waiting for next block creation"); - runtime_wrapped.block_on(async { - tokio::time::sleep(std::time::Duration::from_millis( - TIME_TO_WAIT_FOR_BLOCK_SECONDS, - )) - .await; - }); + std::thread::sleep(std::time::Duration::from_secs( + TIME_TO_WAIT_FOR_BLOCK_SECONDS, + )); - let acc_1_balance = - runtime_wrapped.block_on(sequencer_service_rpc::RpcClient::get_account_balance( + let acc_1_balance = ctx.block_on(|ctx| { + sequencer_service_rpc::RpcClient::get_account_balance( ctx.sequencer_client(), ctx.existing_public_accounts()[0], - ))?; - let acc_2_balance = - runtime_wrapped.block_on(sequencer_service_rpc::RpcClient::get_account_balance( + ) + })?; + let acc_2_balance = ctx.block_on(|ctx| { + sequencer_service_rpc::RpcClient::get_account_balance( ctx.sequencer_client(), ctx.existing_public_accounts()[1], - ))?; + ) + })?; assert_eq!(acc_1_balance, 9900); assert_eq!(acc_2_balance, 20100); info!("Waiting for indexer to parse blocks"); - runtime_wrapped.block_on(async { - tokio::time::sleep(std::time::Duration::from_millis(L2_TO_L1_TIMEOUT_MILLIS)).await; - }); + std::thread::sleep(std::time::Duration::from_millis(L2_TO_L1_TIMEOUT_MILLIS)); - let acc1_ind_state_ffi = - unsafe { query_account(indexer_ffi, (&ctx.existing_public_accounts()[0]).into()) }; + // Safety: ctx runtime is valid for the lifetime of the returned Runtime + let runtime = unsafe { Runtime::from_borrowed(ctx.runtime()) }; + let acc1_ind_state_ffi = unsafe { + query_account( + &raw const runtime, + &raw const indexer_ffi, + (&ctx.ctx().existing_public_accounts()[0]).into(), + ) + }; assert!(acc1_ind_state_ffi.error.is_ok()); let acc1_ind_state_pre = unsafe { &*acc1_ind_state_ffi.value }; let acc1_ind_state: indexer_service_protocol::Account = acc1_ind_state_pre.into(); - let acc1_seq_state = - runtime_wrapped.block_on(sequencer_service_rpc::RpcClient::get_account( + let acc1_seq_state = ctx.block_on(|ctx| { + sequencer_service_rpc::RpcClient::get_account( ctx.sequencer_client(), ctx.existing_public_accounts()[0], - ))?; + ) + })?; assert_eq!(acc1_ind_state, acc1_seq_state.into()); diff --git a/integration_tests/tests/keys_restoration.rs b/integration_tests/tests/keys.rs similarity index 82% rename from integration_tests/tests/keys_restoration.rs rename to integration_tests/tests/keys.rs index ff339120..c49df396 100644 --- a/integration_tests/tests/keys_restoration.rs +++ b/integration_tests/tests/keys.rs @@ -8,8 +8,8 @@ use std::{str::FromStr as _, time::Duration}; use anyhow::{Context as _, Result}; use integration_tests::{ - TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, fetch_privacy_preserving_tx, - format_private_account_id, format_public_account_id, verify_commitment_is_in_state, + TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, fetch_privacy_preserving_tx, private_mention, + public_mention, verify_commitment_is_in_state, }; use key_protocol::key_management::key_tree::chain_index::ChainIndex; use log::info; @@ -59,22 +59,20 @@ async fn sync_private_account_with_non_zero_chain_index() -> Result<()> { }; // Get the keys for the newly created account - let (to_keys, _, to_identifier) = ctx + let to_account = ctx .wallet() .storage() - .user_data - .get_private_account(to_account_id) + .key_chain() + .private_account(to_account_id) .context("Failed to get private account")?; // Send to this account using claiming path (using npk and vpk instead of account ID) let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_private_account_id(from)), - from_label: None, + from: private_mention(from), to: None, - to_label: None, - to_npk: Some(hex::encode(to_keys.nullifier_public_key.0)), - to_vpk: Some(hex::encode(to_keys.viewing_public_key.0)), - to_identifier: Some(to_identifier), + to_npk: Some(hex::encode(to_account.key_chain.nullifier_public_key.0)), + to_vpk: Some(hex::encode(&to_account.key_chain.viewing_public_key.0)), + to_identifier: Some(to_account.identifier), amount: 100, }); @@ -145,10 +143,8 @@ async fn restore_keys_from_seed() -> Result<()> { // Send to first private account let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_private_account_id(from)), - from_label: None, - to: Some(format_private_account_id(to_account_id1)), - to_label: None, + from: private_mention(from), + to: Some(private_mention(to_account_id1)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -158,10 +154,8 @@ async fn restore_keys_from_seed() -> Result<()> { // Send to second private account let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_private_account_id(from)), - from_label: None, - to: Some(format_private_account_id(to_account_id2)), - to_label: None, + from: private_mention(from), + to: Some(private_mention(to_account_id2)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -199,10 +193,8 @@ async fn restore_keys_from_seed() -> Result<()> { // Send to first public account let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_public_account_id(from)), - from_label: None, - to: Some(format_public_account_id(to_account_id3)), - to_label: None, + from: public_mention(from), + to: Some(public_mention(to_account_id3)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -212,10 +204,8 @@ async fn restore_keys_from_seed() -> Result<()> { // Send to second public account let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_public_account_id(from)), - from_label: None, - to: Some(format_public_account_id(to_account_id4)), - to_label: None, + from: public_mention(from), + to: Some(public_mention(to_account_id4)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -232,56 +222,50 @@ async fn restore_keys_from_seed() -> Result<()> { let acc1 = ctx .wallet() .storage() - .user_data - .private_key_tree - .get_node(to_account_id1) + .key_chain() + .private_account(to_account_id1) .expect("Acc 1 should be restored"); let acc2 = ctx .wallet() .storage() - .user_data - .private_key_tree - .get_node(to_account_id2) + .key_chain() + .private_account(to_account_id2) .expect("Acc 2 should be restored"); // Verify restored public accounts let _acc3 = ctx .wallet() .storage() - .user_data - .public_key_tree - .get_node(to_account_id3) + .key_chain() + .pub_account_signing_key(to_account_id3) .expect("Acc 3 should be restored"); let _acc4 = ctx .wallet() .storage() - .user_data - .public_key_tree - .get_node(to_account_id4) + .key_chain() + .pub_account_signing_key(to_account_id4) .expect("Acc 4 should be restored"); assert_eq!( - acc1.value.1[0].1.program_owner, + acc1.account.program_owner, Program::authenticated_transfer_program().id() ); assert_eq!( - acc2.value.1[0].1.program_owner, + acc2.account.program_owner, Program::authenticated_transfer_program().id() ); - assert_eq!(acc1.value.1[0].1.balance, 100); - assert_eq!(acc2.value.1[0].1.balance, 101); + assert_eq!(acc1.account.balance, 100); + assert_eq!(acc2.account.balance, 101); info!("Tree checks passed, testing restored accounts can transact"); // Test that restored accounts can send transactions let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_private_account_id(to_account_id1)), - from_label: None, - to: Some(format_private_account_id(to_account_id2)), - to_label: None, + from: private_mention(to_account_id1), + to: Some(private_mention(to_account_id2)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -290,10 +274,8 @@ async fn restore_keys_from_seed() -> Result<()> { wallet::cli::execute_subcommand(ctx.wallet_mut(), command).await?; let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_public_account_id(to_account_id3)), - from_label: None, - to: Some(format_public_account_id(to_account_id4)), - to_label: None, + from: public_mention(to_account_id3), + to: Some(public_mention(to_account_id4)), to_npk: None, to_vpk: None, to_identifier: Some(0), diff --git a/integration_tests/tests/pinata.rs b/integration_tests/tests/pinata.rs index 77c4a646..9beb5b1f 100644 --- a/integration_tests/tests/pinata.rs +++ b/integration_tests/tests/pinata.rs @@ -9,8 +9,8 @@ use std::time::Duration; use anyhow::{Context as _, Result}; use common::PINATA_BASE58; use integration_tests::{ - TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, format_private_account_id, - format_public_account_id, verify_commitment_is_in_state, + TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, private_mention, public_mention, + verify_commitment_is_in_state, }; use log::info; use sequencer_service_rpc::RpcClient as _; @@ -42,8 +42,6 @@ async fn claim_pinata_to_uninitialized_public_account_fails_fast() -> Result<()> anyhow::bail!("Expected RegisterAccount return value"); }; - let winner_account_id_formatted = format_public_account_id(winner_account_id); - let pinata_balance_pre = ctx .sequencer_client() .get_account_balance(PINATA_BASE58.parse().unwrap()) @@ -52,8 +50,7 @@ async fn claim_pinata_to_uninitialized_public_account_fails_fast() -> Result<()> let claim_result = wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Pinata(PinataProgramAgnosticSubcommand::Claim { - to: Some(winner_account_id_formatted), - to_label: None, + to: public_mention(winner_account_id), }), ) .await; @@ -97,8 +94,6 @@ async fn claim_pinata_to_uninitialized_private_account_fails_fast() -> Result<() anyhow::bail!("Expected RegisterAccount return value"); }; - let winner_account_id_formatted = format_private_account_id(winner_account_id); - let pinata_balance_pre = ctx .sequencer_client() .get_account_balance(PINATA_BASE58.parse().unwrap()) @@ -107,8 +102,7 @@ async fn claim_pinata_to_uninitialized_private_account_fails_fast() -> Result<() let claim_result = wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Pinata(PinataProgramAgnosticSubcommand::Claim { - to: Some(winner_account_id_formatted), - to_label: None, + to: private_mention(winner_account_id), }), ) .await; @@ -139,8 +133,7 @@ async fn claim_pinata_to_existing_public_account() -> Result<()> { let pinata_prize = 150; let command = Command::Pinata(PinataProgramAgnosticSubcommand::Claim { - to: Some(format_public_account_id(ctx.existing_public_accounts()[0])), - to_label: None, + to: public_mention(ctx.existing_public_accounts()[0]), }); let pinata_balance_pre = ctx @@ -178,10 +171,7 @@ async fn claim_pinata_to_existing_private_account() -> Result<()> { let pinata_prize = 150; let command = Command::Pinata(PinataProgramAgnosticSubcommand::Claim { - to: Some(format_private_account_id( - ctx.existing_private_accounts()[0], - )), - to_label: None, + to: private_mention(ctx.existing_private_accounts()[0]), }); let pinata_balance_pre = ctx @@ -241,12 +231,9 @@ async fn claim_pinata_to_new_private_account() -> Result<()> { anyhow::bail!("Expected RegisterAccount return value"); }; - let winner_account_id_formatted = format_private_account_id(winner_account_id); - // Initialize account under auth transfer program let command = Command::AuthTransfer(AuthTransferSubcommand::Init { - account_id: Some(winner_account_id_formatted.clone()), - account_label: None, + account_id: private_mention(winner_account_id), }); wallet::cli::execute_subcommand(ctx.wallet_mut(), command).await?; @@ -261,8 +248,7 @@ async fn claim_pinata_to_new_private_account() -> Result<()> { // Claim pinata to the new private account let command = Command::Pinata(PinataProgramAgnosticSubcommand::Claim { - to: Some(winner_account_id_formatted), - to_label: None, + to: private_mention(winner_account_id), }); let pinata_balance_pre = ctx diff --git a/integration_tests/tests/shared_accounts.rs b/integration_tests/tests/shared_accounts.rs index ecf3a4b4..9d92b519 100644 --- a/integration_tests/tests/shared_accounts.rs +++ b/integration_tests/tests/shared_accounts.rs @@ -18,14 +18,19 @@ use std::time::Duration; use anyhow::{Context as _, Result}; -use integration_tests::{TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, format_public_account_id}; +use integration_tests::{ + TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, private_mention, public_mention, +}; use log::info; use tokio::test; -use wallet::cli::{ - Command, SubcommandReturnValue, - account::{AccountSubcommand, NewSubcommand}, - group::GroupSubcommand, - programs::native_token_transfer::AuthTransferSubcommand, +use wallet::{ + account::Label, + cli::{ + Command, SubcommandReturnValue, + account::{AccountSubcommand, NewSubcommand}, + group::GroupSubcommand, + programs::native_token_transfer::AuthTransferSubcommand, + }, }; /// Create a group, create a shared account from it, and verify registration. @@ -43,8 +48,8 @@ async fn group_create_and_shared_account_registration() -> Result<()> { assert!( ctx.wallet() .storage() - .user_data - .group_key_holder("test-group") + .key_chain() + .group_key_holder(&Label::new("test-group")) .is_some() ); @@ -69,10 +74,10 @@ async fn group_create_and_shared_account_registration() -> Result<()> { let entry = ctx .wallet() .storage() - .user_data + .key_chain() .shared_private_account(&shared_account_id) .context("Shared account not found in storage")?; - assert_eq!(entry.group_label, "test-group"); + assert_eq!(entry.group_label, Label::new("test-group")); assert!(entry.pda_seed.is_none()); info!("Shared account registered: {shared_account_id}"); @@ -98,8 +103,8 @@ async fn group_invite_join_key_agreement() -> Result<()> { let sealing_sk = ctx .wallet() .storage() - .user_data - .sealing_secret_key + .key_chain() + .sealing_secret_key() .context("Sealing key not found")?; let sealing_pk = key_protocol::key_management::group_key_holder::SealingPublicKey::from_scalar(sealing_sk); @@ -107,8 +112,8 @@ async fn group_invite_join_key_agreement() -> Result<()> { let holder = ctx .wallet() .storage() - .user_data - .group_key_holder("alice-group") + .key_chain() + .group_key_holder(&Label::new("alice-group")) .context("Group not found")?; let sealed = holder.seal_for(&sealing_pk); let sealed_hex = hex::encode(&sealed); @@ -124,14 +129,14 @@ async fn group_invite_join_key_agreement() -> Result<()> { let alice_holder = ctx .wallet() .storage() - .user_data - .group_key_holder("alice-group") + .key_chain() + .group_key_holder(&Label::new("alice-group")) .unwrap(); let bob_holder = ctx .wallet() .storage() - .user_data - .group_key_holder("bob-copy") + .key_chain() + .group_key_holder(&Label::new("bob-copy")) .unwrap(); let seed = [42_u8; 32]; @@ -181,8 +186,7 @@ async fn fund_shared_account_from_public() -> Result<()> { // Initialize the shared account under auth-transfer let command = Command::AuthTransfer(AuthTransferSubcommand::Init { - account_id: Some(format!("Private/{shared_id}")), - account_label: None, + account_id: private_mention(shared_id), }); wallet::cli::execute_subcommand(ctx.wallet_mut(), command).await?; @@ -191,10 +195,8 @@ async fn fund_shared_account_from_public() -> Result<()> { // Fund from a public account let from_public = ctx.existing_public_accounts()[0]; let command = Command::AuthTransfer(AuthTransferSubcommand::Send { - from: Some(format_public_account_id(from_public)), - from_label: None, - to: Some(format!("Private/{shared_id}")), - to_label: None, + from: public_mention(from_public), + to: Some(private_mention(shared_id)), to_npk: None, to_vpk: None, to_identifier: None, @@ -212,7 +214,7 @@ async fn fund_shared_account_from_public() -> Result<()> { let entry = ctx .wallet() .storage() - .user_data + .key_chain() .shared_private_account(&shared_id) .context("Shared account not found after sync")?; diff --git a/integration_tests/tests/token.rs b/integration_tests/tests/token.rs index 6db718f9..7a7c8143 100644 --- a/integration_tests/tests/token.rs +++ b/integration_tests/tests/token.rs @@ -8,8 +8,8 @@ use std::time::Duration; use anyhow::{Context as _, Result}; use integration_tests::{ - TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, format_private_account_id, - format_public_account_id, verify_commitment_is_in_state, + TIME_TO_WAIT_FOR_BLOCK_SECONDS, TestContext, private_mention, public_mention, + verify_commitment_is_in_state, }; use key_protocol::key_management::key_tree::chain_index::ChainIndex; use log::info; @@ -17,10 +17,13 @@ use nssa::program::Program; use sequencer_service_rpc::RpcClient as _; use token_core::{TokenDefinition, TokenHolding}; use tokio::test; -use wallet::cli::{ - Command, SubcommandReturnValue, - account::{AccountSubcommand, NewSubcommand}, - programs::token::TokenProgramAgnosticSubcommand, +use wallet::{ + account::Label, + cli::{ + Command, SubcommandReturnValue, + account::{AccountSubcommand, NewSubcommand}, + programs::token::TokenProgramAgnosticSubcommand, + }, }; #[test] @@ -79,10 +82,8 @@ async fn create_and_transfer_public_token() -> Result<()> { let name = "A NAME".to_owned(); let total_supply = 37; let subcommand = TokenProgramAgnosticSubcommand::New { - definition_account_id: Some(format_public_account_id(definition_account_id)), - definition_account_label: None, - supply_account_id: Some(format_public_account_id(supply_account_id)), - supply_account_label: None, + definition_account_id: public_mention(definition_account_id), + supply_account_id: public_mention(supply_account_id), name: name.clone(), total_supply, }; @@ -128,10 +129,8 @@ async fn create_and_transfer_public_token() -> Result<()> { // Transfer 7 tokens from supply_acc to recipient_account_id let transfer_amount = 7; let subcommand = TokenProgramAgnosticSubcommand::Send { - from: Some(format_public_account_id(supply_account_id)), - from_label: None, - to: Some(format_public_account_id(recipient_account_id)), - to_label: None, + from: public_mention(supply_account_id), + to: Some(public_mention(recipient_account_id)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -176,10 +175,8 @@ async fn create_and_transfer_public_token() -> Result<()> { // Burn 3 tokens from recipient_acc let burn_amount = 3; let subcommand = TokenProgramAgnosticSubcommand::Burn { - definition: Some(format_public_account_id(definition_account_id)), - definition_label: None, - holder: Some(format_public_account_id(recipient_account_id)), - holder_label: None, + definition: public_mention(definition_account_id), + holder: public_mention(recipient_account_id), amount: burn_amount, }; @@ -222,10 +219,8 @@ async fn create_and_transfer_public_token() -> Result<()> { // Mint 10 tokens at recipient_acc let mint_amount = 10; let subcommand = TokenProgramAgnosticSubcommand::Mint { - definition: Some(format_public_account_id(definition_account_id)), - definition_label: None, - holder: Some(format_public_account_id(recipient_account_id)), - holder_label: None, + definition: public_mention(definition_account_id), + holder: Some(public_mention(recipient_account_id)), holder_npk: None, holder_vpk: None, holder_identifier: None, @@ -329,10 +324,8 @@ async fn create_and_transfer_token_with_private_supply() -> Result<()> { let name = "A NAME".to_owned(); let total_supply = 37; let subcommand = TokenProgramAgnosticSubcommand::New { - definition_account_id: Some(format_public_account_id(definition_account_id)), - definition_account_label: None, - supply_account_id: Some(format_private_account_id(supply_account_id)), - supply_account_label: None, + definition_account_id: public_mention(definition_account_id), + supply_account_id: private_mention(supply_account_id), name: name.clone(), total_supply, }; @@ -368,10 +361,8 @@ async fn create_and_transfer_token_with_private_supply() -> Result<()> { // Transfer 7 tokens from supply_acc to recipient_account_id let transfer_amount = 7; let subcommand = TokenProgramAgnosticSubcommand::Send { - from: Some(format_private_account_id(supply_account_id)), - from_label: None, - to: Some(format_private_account_id(recipient_account_id)), - to_label: None, + from: private_mention(supply_account_id), + to: Some(private_mention(recipient_account_id)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -398,10 +389,8 @@ async fn create_and_transfer_token_with_private_supply() -> Result<()> { // Burn 3 tokens from recipient_acc let burn_amount = 3; let subcommand = TokenProgramAgnosticSubcommand::Burn { - definition: Some(format_public_account_id(definition_account_id)), - definition_label: None, - holder: Some(format_private_account_id(recipient_account_id)), - holder_label: None, + definition: public_mention(definition_account_id), + holder: private_mention(recipient_account_id), amount: burn_amount, }; @@ -492,10 +481,8 @@ async fn create_token_with_private_definition() -> Result<()> { let name = "A NAME".to_owned(); let total_supply = 37; let subcommand = TokenProgramAgnosticSubcommand::New { - definition_account_id: Some(format_private_account_id(definition_account_id)), - definition_account_label: None, - supply_account_id: Some(format_public_account_id(supply_account_id)), - supply_account_label: None, + definition_account_id: private_mention(definition_account_id), + supply_account_id: public_mention(supply_account_id), name: name.clone(), total_supply, }; @@ -563,10 +550,8 @@ async fn create_token_with_private_definition() -> Result<()> { // Mint to public account let mint_amount_public = 10; let subcommand = TokenProgramAgnosticSubcommand::Mint { - definition: Some(format_private_account_id(definition_account_id)), - definition_label: None, - holder: Some(format_public_account_id(recipient_account_id_public)), - holder_label: None, + definition: private_mention(definition_account_id), + holder: Some(public_mention(recipient_account_id_public)), holder_npk: None, holder_vpk: None, holder_identifier: None, @@ -612,10 +597,8 @@ async fn create_token_with_private_definition() -> Result<()> { // Mint to private account let mint_amount_private = 5; let subcommand = TokenProgramAgnosticSubcommand::Mint { - definition: Some(format_private_account_id(definition_account_id)), - definition_label: None, - holder: Some(format_private_account_id(recipient_account_id_private)), - holder_label: None, + definition: private_mention(definition_account_id), + holder: Some(private_mention(recipient_account_id_private)), holder_npk: None, holder_vpk: None, holder_identifier: None, @@ -694,10 +677,8 @@ async fn create_token_with_private_definition_and_supply() -> Result<()> { let name = "A NAME".to_owned(); let total_supply = 37; let subcommand = TokenProgramAgnosticSubcommand::New { - definition_account_id: Some(format_private_account_id(definition_account_id)), - definition_account_label: None, - supply_account_id: Some(format_private_account_id(supply_account_id)), - supply_account_label: None, + definition_account_id: private_mention(definition_account_id), + supply_account_id: private_mention(supply_account_id), name, total_supply, }; @@ -755,10 +736,8 @@ async fn create_token_with_private_definition_and_supply() -> Result<()> { // Transfer tokens let transfer_amount = 7; let subcommand = TokenProgramAgnosticSubcommand::Send { - from: Some(format_private_account_id(supply_account_id)), - from_label: None, - to: Some(format_private_account_id(recipient_account_id)), - to_label: None, + from: private_mention(supply_account_id), + to: Some(private_mention(recipient_account_id)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -871,10 +850,8 @@ async fn shielded_token_transfer() -> Result<()> { let name = "A NAME".to_owned(); let total_supply = 37; let subcommand = TokenProgramAgnosticSubcommand::New { - definition_account_id: Some(format_public_account_id(definition_account_id)), - definition_account_label: None, - supply_account_id: Some(format_public_account_id(supply_account_id)), - supply_account_label: None, + definition_account_id: public_mention(definition_account_id), + supply_account_id: public_mention(supply_account_id), name, total_supply, }; @@ -887,10 +864,8 @@ async fn shielded_token_transfer() -> Result<()> { // Perform shielded transfer: public supply -> private recipient let transfer_amount = 7; let subcommand = TokenProgramAgnosticSubcommand::Send { - from: Some(format_public_account_id(supply_account_id)), - from_label: None, - to: Some(format_private_account_id(recipient_account_id)), - to_label: None, + from: public_mention(supply_account_id), + to: Some(private_mention(recipient_account_id)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -998,10 +973,8 @@ async fn deshielded_token_transfer() -> Result<()> { let name = "A NAME".to_owned(); let total_supply = 37; let subcommand = TokenProgramAgnosticSubcommand::New { - definition_account_id: Some(format_public_account_id(definition_account_id)), - definition_account_label: None, - supply_account_id: Some(format_private_account_id(supply_account_id)), - supply_account_label: None, + definition_account_id: public_mention(definition_account_id), + supply_account_id: private_mention(supply_account_id), name, total_supply, }; @@ -1014,10 +987,8 @@ async fn deshielded_token_transfer() -> Result<()> { // Perform deshielded transfer: private supply -> public recipient let transfer_amount = 7; let subcommand = TokenProgramAgnosticSubcommand::Send { - from: Some(format_private_account_id(supply_account_id)), - from_label: None, - to: Some(format_public_account_id(recipient_account_id)), - to_label: None, + from: private_mention(supply_account_id), + to: Some(public_mention(recipient_account_id)), to_npk: None, to_vpk: None, to_identifier: Some(0), @@ -1109,10 +1080,8 @@ async fn token_claiming_path_with_private_accounts() -> Result<()> { let name = "A NAME".to_owned(); let total_supply = 37; let subcommand = TokenProgramAgnosticSubcommand::New { - definition_account_id: Some(format_private_account_id(definition_account_id)), - definition_account_label: None, - supply_account_id: Some(format_private_account_id(supply_account_id)), - supply_account_label: None, + definition_account_id: private_mention(definition_account_id), + supply_account_id: private_mention(supply_account_id), name, total_supply, }; @@ -1139,22 +1108,23 @@ async fn token_claiming_path_with_private_accounts() -> Result<()> { }; // Get keys for foreign mint (claiming path) - let (holder_keys, _, holder_identifier) = ctx + let holder = ctx .wallet() .storage() - .user_data - .get_private_account(recipient_account_id) + .key_chain() + .private_account(recipient_account_id) .context("Failed to get private account keys")?; + let holder_keys = holder.key_chain; + let holder_identifier = holder.identifier; + // Mint using claiming path (foreign account) let mint_amount = 9; let subcommand = TokenProgramAgnosticSubcommand::Mint { - definition: Some(format_private_account_id(definition_account_id)), - definition_label: None, + definition: private_mention(definition_account_id), holder: None, - holder_label: None, holder_npk: Some(hex::encode(holder_keys.nullifier_public_key.0)), - holder_vpk: Some(hex::encode(holder_keys.viewing_public_key.0)), + holder_vpk: Some(hex::encode(&holder_keys.viewing_public_key.0)), holder_identifier: Some(holder_identifier), amount: mint_amount, }; @@ -1199,8 +1169,8 @@ async fn create_token_using_labels() -> Result<()> { let mut ctx = TestContext::new().await?; // Create definition and supply accounts with labels - let def_label = "token-definition-label".to_owned(); - let supply_label = "token-supply-label".to_owned(); + let def_label = Label::new("token-definition-label"); + let supply_label = Label::new("token-supply-label"); let result = wallet::cli::execute_subcommand( ctx.wallet_mut(), @@ -1221,7 +1191,7 @@ async fn create_token_using_labels() -> Result<()> { ctx.wallet_mut(), Command::Account(AccountSubcommand::New(NewSubcommand::Public { cci: None, - label: Some(supply_label.clone()), + label: Some(Label::new(supply_label.clone())), })), ) .await?; @@ -1236,10 +1206,8 @@ async fn create_token_using_labels() -> Result<()> { let name = "LABELED TOKEN".to_owned(); let total_supply = 100; let subcommand = TokenProgramAgnosticSubcommand::New { - definition_account_id: None, - definition_account_label: Some(def_label), - supply_account_id: None, - supply_account_label: Some(supply_label), + definition_account_id: def_label.into(), + supply_account_id: supply_label.into(), name: name.clone(), total_supply, }; @@ -1303,7 +1271,7 @@ async fn transfer_token_using_from_label() -> Result<()> { }; // Create supply account with a label - let supply_label = "token-supply-sender".to_owned(); + let supply_label = Label::new("token-supply-sender"); let result = wallet::cli::execute_subcommand( ctx.wallet_mut(), Command::Account(AccountSubcommand::New(NewSubcommand::Public { @@ -1338,10 +1306,8 @@ async fn transfer_token_using_from_label() -> Result<()> { // Create token let total_supply = 50; let subcommand = TokenProgramAgnosticSubcommand::New { - definition_account_id: Some(format_public_account_id(definition_account_id)), - definition_account_label: None, - supply_account_id: Some(format_public_account_id(supply_account_id)), - supply_account_label: None, + definition_account_id: public_mention(definition_account_id), + supply_account_id: public_mention(supply_account_id), name: "LABEL TEST TOKEN".to_owned(), total_supply, }; @@ -1353,10 +1319,8 @@ async fn transfer_token_using_from_label() -> Result<()> { // Transfer token using from_label instead of from let transfer_amount = 20; let subcommand = TokenProgramAgnosticSubcommand::Send { - from: None, - from_label: Some(supply_label), - to: Some(format_public_account_id(recipient_account_id)), - to_label: None, + from: supply_label.into(), + to: Some(public_mention(recipient_account_id)), to_npk: None, to_vpk: None, to_identifier: Some(0), diff --git a/integration_tests/tests/tps.rs b/integration_tests/tests/tps.rs index df74daba..dc8e235d 100644 --- a/integration_tests/tests/tps.rs +++ b/integration_tests/tests/tps.rs @@ -14,11 +14,8 @@ use std::time::{Duration, Instant}; use anyhow::Result; use bytesize::ByteSize; use common::transaction::NSSATransaction; -use integration_tests::{ - TestContext, - config::{InitialData, SequencerPartialConfig}, -}; -use key_protocol::key_management::{KeyChain, ephemeral_key_holder::EphemeralKeyHolder}; +use integration_tests::{TestContext, config::SequencerPartialConfig}; +use key_protocol::key_management::ephemeral_key_holder::EphemeralKeyHolder; use log::info; use nssa::{ Account, AccountId, PrivacyPreservingTransaction, PrivateKey, PublicKey, PublicTransaction, @@ -31,6 +28,7 @@ use nssa_core::{ account::{AccountWithMetadata, Nonce, data::Data}, encryption::ViewingPublicKey, }; +use sequencer_core::config::GenesisTransaction; use sequencer_service_rpc::RpcClient as _; use tokio::test; @@ -81,7 +79,7 @@ impl TpsTestManager { program.id(), [pair[0].1, pair[1].1].to_vec(), [Nonce(0_u128)].to_vec(), - amount, + authenticated_transfer_core::Instruction::Transfer { amount }, ) .unwrap(); let witness_set = @@ -96,28 +94,14 @@ impl TpsTestManager { /// Generates a sequencer configuration with initial balance in a number of public accounts. /// The transactions generated with the function `build_public_txs` will be valid in a node /// started with the config from this method. - fn generate_initial_data(&self) -> InitialData { - // Create public public keypairs - let public_accounts = self - .public_keypairs + fn generate_genesis(&self) -> Vec { + self.public_keypairs .iter() - .map(|(key, _)| (key.clone(), 10)) - .collect(); - - // Generate an initial commitment to be used with the privacy preserving transaction - // created with the `build_privacy_transaction` function. - let key_chain = KeyChain::new_os_random(); - let account = Account { - balance: 100, - nonce: Nonce(0xdead_beef), - program_owner: Program::authenticated_transfer_program().id(), - data: Data::default(), - }; - - InitialData { - public_accounts, - private_accounts: vec![(key_chain, account)], - } + .map(|(_, account_id)| GenesisTransaction::SupplyPublicAccount { + account_id: *account_id, + balance: 10, + }) + .collect() } const fn generate_sequencer_partial_config() -> SequencerPartialConfig { @@ -139,7 +123,7 @@ pub async fn tps_test() -> Result<()> { let tps_test = TpsTestManager::new(target_tps, num_transactions); let ctx = TestContext::builder() .with_sequencer_partial_config(TpsTestManager::generate_sequencer_partial_config()) - .with_initial_data(tps_test.generate_initial_data()) + .with_genesis(tps_test.generate_genesis()) .build() .await?; @@ -166,7 +150,7 @@ pub async fn tps_test() -> Result<()> { loop { assert!( now.elapsed().as_millis() <= target_time.as_millis(), - "TPS test failed by timeout" + "TPS test failed by timeout, transactions processed {i}/{num_transactions}" ); let tx_obj = ctx @@ -250,7 +234,10 @@ fn build_privacy_transaction() -> PrivacyPreservingTransaction { ); let (output, proof) = circuit::execute_and_prove( vec![sender_pre, recipient_pre], - Program::serialize_instruction(balance_to_move).unwrap(), + Program::serialize_instruction(authenticated_transfer_core::Instruction::Transfer { + amount: balance_to_move, + }) + .unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { ssk: sender_ss, diff --git a/integration_tests/tests/wallet_ffi.rs b/integration_tests/tests/wallet_ffi.rs index db84b066..11524eb7 100644 --- a/integration_tests/tests/wallet_ffi.rs +++ b/integration_tests/tests/wallet_ffi.rs @@ -24,6 +24,7 @@ use log::info; use nssa::{Account, AccountId, PrivateKey, PublicKey, program::Program}; use nssa_core::program::DEFAULT_PROGRAM_ID; use tempfile::tempdir; +use wallet::account::HumanReadableAccount; use wallet_ffi::{ FfiAccount, FfiAccountList, FfiBytes32, FfiPrivateAccountKeys, FfiPublicAccountKey, FfiTransferResult, FfiU128, WalletHandle, error, @@ -53,11 +54,24 @@ unsafe extern "C" { out_account_id: *mut FfiBytes32, ) -> error::WalletFfiError; + fn wallet_ffi_import_public_account( + handle: *mut WalletHandle, + private_key_hex: *const c_char, + ) -> error::WalletFfiError; + fn wallet_ffi_create_private_accounts_key( handle: *mut WalletHandle, out_keys: *mut FfiPrivateAccountKeys, ) -> error::WalletFfiError; + fn wallet_ffi_import_private_account( + handle: *mut WalletHandle, + key_chain_json: *const c_char, + chain_index: *const c_char, + identifier: *const FfiU128, + account_state_json: *const c_char, + ) -> error::WalletFfiError; + fn wallet_ffi_list_accounts( handle: *mut WalletHandle, out_list: *mut FfiAccountList, @@ -191,13 +205,59 @@ fn new_wallet_ffi_with_test_context_config( let storage_path = CString::new(storage_path.to_str().unwrap())?; let password = CString::new(ctx.ctx().wallet_password())?; - Ok(unsafe { + let wallet_ffi_handle = unsafe { wallet_ffi_create_new( config_path.as_ptr(), storage_path.as_ptr(), password.as_ptr(), ) - }) + }; + + // Import accounts from source wallet + let source_wallet = ctx.ctx().wallet(); + let source_key_chain = source_wallet.storage().key_chain(); + + for (account_id, _chain_index) in source_key_chain.public_account_ids() { + let private_key_hex = source_wallet + .get_account_public_signing_key(account_id) + .unwrap() + .to_string(); + let private_key_hex = CString::new(private_key_hex)?; + unsafe { wallet_ffi_import_public_account(wallet_ffi_handle, private_key_hex.as_ptr()) } + .unwrap(); + } + + for (account_id, _chain_index) in source_key_chain.private_account_ids() { + let account = source_key_chain.private_account(account_id).unwrap(); + let key_chain_json = CString::new(serde_json::to_string(account.key_chain)?)?; + let account_state_json = CString::new(serde_json::to_string( + &HumanReadableAccount::from(account.account.clone()), + )?)?; + + let chain_index = account + .chain_index + .map(|chain_index| CString::new(chain_index.to_string())) + .transpose()?; + let chain_index_ptr = chain_index + .as_ref() + .map_or(std::ptr::null(), |value| value.as_ptr()); + let identifier = FfiU128 { + data: account.identifier.to_le_bytes(), + }; + + unsafe { + wallet_ffi_import_private_account( + wallet_ffi_handle, + key_chain_json.as_ptr(), + chain_index_ptr, + &raw const identifier, + account_state_json.as_ptr(), + ) + } + .unwrap(); + } + + Ok(wallet_ffi_handle) } fn new_wallet_ffi_with_default_config(password: &str) -> Result<*mut WalletHandle> { @@ -405,7 +465,7 @@ fn test_wallet_ffi_get_balance_public() -> Result<()> { let balance = unsafe { let mut out_balance: [u8; 16] = [0; 16]; - let ffi_account_id = FfiBytes32::from(&account_id); + let ffi_account_id = FfiBytes32::from(account_id); wallet_ffi_get_balance( wallet_ffi_handle, &raw const ffi_account_id, @@ -435,7 +495,7 @@ fn test_wallet_ffi_get_account_public() -> Result<()> { let mut out_account = FfiAccount::default(); let account: Account = unsafe { - let ffi_account_id = FfiBytes32::from(&account_id); + let ffi_account_id = FfiBytes32::from(account_id); wallet_ffi_get_account_public( wallet_ffi_handle, &raw const ffi_account_id, @@ -451,7 +511,7 @@ fn test_wallet_ffi_get_account_public() -> Result<()> { ); assert_eq!(account.balance, 10000); assert!(account.data.is_empty()); - assert_eq!(account.nonce.0, 0); + assert_eq!(account.nonce.0, 1); unsafe { wallet_ffi_free_account_data(&raw mut out_account); @@ -472,7 +532,7 @@ fn test_wallet_ffi_get_account_private() -> Result<()> { let mut out_account = FfiAccount::default(); let account: Account = unsafe { - let ffi_account_id = FfiBytes32::from(&account_id); + let ffi_account_id = FfiBytes32::from(account_id); wallet_ffi_get_account_private( wallet_ffi_handle, &raw const ffi_account_id, @@ -488,7 +548,6 @@ fn test_wallet_ffi_get_account_private() -> Result<()> { ); assert_eq!(account.balance, 10000); assert!(account.data.is_empty()); - assert_eq!(account.nonce, 0_u128.into()); unsafe { wallet_ffi_free_account_data(&raw mut out_account); @@ -509,7 +568,7 @@ fn test_wallet_ffi_get_public_account_keys() -> Result<()> { let mut out_key = FfiPublicAccountKey::default(); let key: PublicKey = unsafe { - let ffi_account_id = FfiBytes32::from(&account_id); + let ffi_account_id = FfiBytes32::from(account_id); wallet_ffi_get_public_account_key( wallet_ffi_handle, &raw const ffi_account_id, @@ -548,7 +607,7 @@ fn test_wallet_ffi_get_private_account_keys() -> Result<()> { let mut keys = FfiPrivateAccountKeys::default(); unsafe { - let ffi_account_id = FfiBytes32::from(&account_id); + let ffi_account_id = FfiBytes32::from(account_id); wallet_ffi_get_private_account_keys( wallet_ffi_handle, &raw const ffi_account_id, @@ -557,15 +616,15 @@ fn test_wallet_ffi_get_private_account_keys() -> Result<()> { .unwrap(); }; - let key_chain = &ctx + let account = &ctx .ctx() .wallet() .storage() - .user_data - .get_private_account(account_id) - .unwrap() - .0; + .key_chain() + .private_account(account_id) + .unwrap(); + let key_chain = account.key_chain; let expected_npk = &key_chain.nullifier_public_key; let expected_vpk = &key_chain.viewing_public_key; @@ -587,7 +646,7 @@ fn test_wallet_ffi_account_id_to_base58() -> Result<()> { let private_key = PrivateKey::new_os_random(); let public_key = PublicKey::new_from_private_key(&private_key); let account_id = AccountId::from(&public_key); - let ffi_bytes: FfiBytes32 = (&account_id).into(); + let ffi_bytes: FfiBytes32 = account_id.into(); let ptr = unsafe { wallet_ffi_account_id_to_base58(&raw const ffi_bytes) }; let ffi_result = unsafe { CStr::from_ptr(ptr).to_str()? }; @@ -744,8 +803,8 @@ fn test_wallet_ffi_transfer_public() -> Result<()> { let ctx = BlockingTestContext::new()?; let home = tempfile::tempdir()?; let wallet_ffi_handle = new_wallet_ffi_with_test_context_config(&ctx, home.path())?; - let from: FfiBytes32 = (&ctx.ctx().existing_public_accounts()[0]).into(); - let to: FfiBytes32 = (&ctx.ctx().existing_public_accounts()[1]).into(); + let from: FfiBytes32 = ctx.ctx().existing_public_accounts()[0].into(); + let to: FfiBytes32 = ctx.ctx().existing_public_accounts()[1].into(); let amount: [u8; 16] = 100_u128.to_le_bytes(); let mut transfer_result = FfiTransferResult::default(); @@ -797,12 +856,12 @@ fn test_wallet_ffi_transfer_shielded() -> Result<()> { let ctx = BlockingTestContext::new()?; let home = tempfile::tempdir()?; let wallet_ffi_handle = new_wallet_ffi_with_test_context_config(&ctx, home.path())?; - let from: FfiBytes32 = (&ctx.ctx().existing_public_accounts()[0]).into(); + let from: FfiBytes32 = ctx.ctx().existing_public_accounts()[0].into(); let (to, to_keys) = unsafe { let mut out_keys = FfiPrivateAccountKeys::default(); wallet_ffi_create_private_accounts_key(wallet_ffi_handle, &raw mut out_keys); let account_id = nssa::AccountId::from((&out_keys.npk(), 0_u128)); - let to: FfiBytes32 = (&account_id).into(); + let to: FfiBytes32 = account_id.into(); (to, out_keys) }; let amount: [u8; 16] = 100_u128.to_le_bytes(); @@ -871,8 +930,8 @@ fn test_wallet_ffi_transfer_deshielded() -> Result<()> { let ctx = BlockingTestContext::new()?; let home = tempfile::tempdir()?; let wallet_ffi_handle = new_wallet_ffi_with_test_context_config(&ctx, home.path())?; - let from: FfiBytes32 = (&ctx.ctx().existing_private_accounts()[0]).into(); - let to: FfiBytes32 = (&ctx.ctx().existing_public_accounts()[0]).into(); + let from: FfiBytes32 = ctx.ctx().existing_private_accounts()[0].into(); + let to: FfiBytes32 = ctx.ctx().existing_public_accounts()[0].into(); let amount: [u8; 16] = 100_u128.to_le_bytes(); let mut transfer_result = FfiTransferResult::default(); @@ -883,8 +942,9 @@ fn test_wallet_ffi_transfer_deshielded() -> Result<()> { &raw const to, &raw const amount, &raw mut transfer_result, - ); + ) } + .unwrap(); info!("Waiting for next block creation"); std::thread::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)); @@ -892,9 +952,9 @@ fn test_wallet_ffi_transfer_deshielded() -> Result<()> { // Sync private account local storage with onchain encrypted state unsafe { let mut current_height = 0; - wallet_ffi_get_current_block_height(wallet_ffi_handle, &raw mut current_height); - wallet_ffi_sync_to_block(wallet_ffi_handle, current_height); - }; + wallet_ffi_get_current_block_height(wallet_ffi_handle, &raw mut current_height).unwrap(); + wallet_ffi_sync_to_block(wallet_ffi_handle, current_height).unwrap(); + } let from_balance = unsafe { let mut out_balance: [u8; 16] = [0; 16]; @@ -931,12 +991,12 @@ fn test_wallet_ffi_transfer_private() -> Result<()> { let home = tempfile::tempdir()?; let wallet_ffi_handle = new_wallet_ffi_with_test_context_config(&ctx, home.path())?; - let from: FfiBytes32 = (&ctx.ctx().existing_private_accounts()[0]).into(); + let from: FfiBytes32 = ctx.ctx().existing_private_accounts()[0].into(); let (to, to_keys) = unsafe { let mut out_keys = FfiPrivateAccountKeys::default(); wallet_ffi_create_private_accounts_key(wallet_ffi_handle, &raw mut out_keys); let account_id = nssa::AccountId::from((&out_keys.npk(), 0_u128)); - let to: FfiBytes32 = (&account_id).into(); + let to: FfiBytes32 = account_id.into(); (to, out_keys) }; diff --git a/key_protocol/Cargo.toml b/key_protocol/Cargo.toml index 72829ca8..a0b5c397 100644 --- a/key_protocol/Cargo.toml +++ b/key_protocol/Cargo.toml @@ -7,6 +7,10 @@ license = { workspace = true } [lints] workspace = true +[features] +default = [] +test_utils = [] + [dependencies] nssa.workspace = true nssa_core.workspace = true diff --git a/key_protocol/src/key_management/ephemeral_key_holder.rs b/key_protocol/src/key_management/ephemeral_key_holder.rs index 6ef9e305..7a6dc7d0 100644 --- a/key_protocol/src/key_management/ephemeral_key_holder.rs +++ b/key_protocol/src/key_management/ephemeral_key_holder.rs @@ -36,7 +36,7 @@ impl EphemeralKeyHolder { &self, receiver_viewing_public_key: &ViewingPublicKey, ) -> SharedSecretKey { - SharedSecretKey::new(&self.ephemeral_secret_key, receiver_viewing_public_key) + SharedSecretKey::new(self.ephemeral_secret_key, receiver_viewing_public_key) } } @@ -47,7 +47,7 @@ pub fn produce_one_sided_shared_secret_receiver( let mut esk = [0; 32]; OsRng.fill_bytes(&mut esk); ( - SharedSecretKey::new(&esk, vpk), + SharedSecretKey::new(esk, vpk), EphemeralPublicKey::from_scalar(esk), ) } diff --git a/key_protocol/src/key_management/group_key_holder.rs b/key_protocol/src/key_management/group_key_holder.rs index 609c45ed..faa1b10a 100644 --- a/key_protocol/src/key_management/group_key_holder.rs +++ b/key_protocol/src/key_management/group_key_holder.rs @@ -59,7 +59,7 @@ pub type SealingSecretKey = Scalar; /// `Debug` is implemented manually to redact the GMS; formatting this value with `{:?}` /// will not leak the secret. Code that formats through `{:#?}` on containing types is /// safe for the same reason. -#[derive(Serialize, Deserialize, Clone)] +#[derive(Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct GroupKeyHolder { gms: [u8; 32], } @@ -164,7 +164,7 @@ impl GroupKeyHolder { let mut ephemeral_scalar: Scalar = [0_u8; 32]; OsRng.fill_bytes(&mut ephemeral_scalar); let ephemeral_pubkey = Secp256k1Point::from_scalar(ephemeral_scalar); - let shared = SharedSecretKey::new(&ephemeral_scalar, &recipient_key.0); + let shared = SharedSecretKey::new(ephemeral_scalar, &recipient_key.0); let aes_key = Self::seal_kdf(&shared); let cipher = Aes256Gcm::new(&aes_key.into()); @@ -191,7 +191,7 @@ impl GroupKeyHolder { /// /// Returns `Err` if the ciphertext is too short, the ECDH point is invalid, or the /// AES-GCM authentication tag doesn't verify (wrong key or tampered data). - pub fn unseal(sealed: &[u8], own_key: &SealingSecretKey) -> Result { + pub fn unseal(sealed: &[u8], own_key: SealingSecretKey) -> Result { const HEADER_LEN: usize = 33 + 12; const MIN_LEN: usize = HEADER_LEN + 16; if sealed.len() < MIN_LEN { @@ -407,7 +407,7 @@ mod tests { let recipient_vsk = recipient_keys.viewing_secret_key; let sealed = holder.seal_for(&SealingPublicKey::from_bytes(recipient_vpk.0)); - let restored = GroupKeyHolder::unseal(&sealed, &recipient_vsk).expect("unseal"); + let restored = GroupKeyHolder::unseal(&sealed, recipient_vsk).expect("unseal"); assert_eq!(restored.dangerous_raw_gms(), holder.dangerous_raw_gms()); @@ -438,7 +438,7 @@ mod tests { .viewing_secret_key; let sealed = holder.seal_for(&SealingPublicKey::from_bytes(recipient_vpk.0)); - let result = GroupKeyHolder::unseal(&sealed, &wrong_vsk); + let result = GroupKeyHolder::unseal(&sealed, wrong_vsk); assert!(matches!(result, Err(super::SealError::DecryptionFailed))); } @@ -457,7 +457,7 @@ mod tests { let last = sealed.len() - 1; sealed[last] ^= 0xFF; - let result = GroupKeyHolder::unseal(&sealed, &recipient_vsk); + let result = GroupKeyHolder::unseal(&sealed, recipient_vsk); assert!(matches!(result, Err(super::SealError::DecryptionFailed))); } @@ -481,7 +481,7 @@ mod tests { #[test] fn unseal_too_short_fails() { let vsk: SealingSecretKey = [7_u8; 32]; - let result = GroupKeyHolder::unseal(&[0_u8; 10], &vsk); + let result = GroupKeyHolder::unseal(&[0_u8; 10], vsk); assert!(matches!(result, Err(super::SealError::TooShort))); } @@ -537,7 +537,7 @@ mod tests { let sealed = alice_holder.seal_for(&SealingPublicKey::from_bytes(bob_vpk.0)); let bob_holder = - GroupKeyHolder::unseal(&sealed, &bob_vsk).expect("Bob should unseal the GMS"); + GroupKeyHolder::unseal(&sealed, bob_vsk).expect("Bob should unseal the GMS"); // Key agreement: both derive identical NPK and AccountId let bob_npk = bob_holder diff --git a/key_protocol/src/key_management/key_tree/keys_private.rs b/key_protocol/src/key_management/key_tree/keys_private.rs index 6ffc8119..94a4ba7b 100644 --- a/key_protocol/src/key_management/key_tree/keys_private.rs +++ b/key_protocol/src/key_management/key_tree/keys_private.rs @@ -1,3 +1,5 @@ +use std::collections::BTreeMap; + use k256::{Scalar, elliptic_curve::PrimeField as _}; use nssa_core::{Identifier, NullifierPublicKey, encryption::ViewingPublicKey}; use serde::{Deserialize, Serialize}; @@ -9,8 +11,9 @@ use crate::key_management::{ }; #[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(any(test, feature = "test_utils"), derive(PartialEq, Eq))] pub struct ChildKeysPrivate { - pub value: (KeyChain, Vec<(Identifier, nssa::Account)>), + pub value: (KeyChain, BTreeMap), pub ccc: [u8; 32], /// Can be [`None`] if root. pub cci: Option, @@ -47,7 +50,7 @@ impl ChildKeysPrivate { viewing_secret_key: vsk, }, }, - vec![], + BTreeMap::from_iter([(0, nssa::Account::default())]), ), ccc, cci: None, @@ -97,7 +100,7 @@ impl ChildKeysPrivate { viewing_secret_key: vsk, }, }, - vec![], + BTreeMap::from_iter([(0, nssa::Account::default())]), ), ccc, cci: Some(cci), @@ -115,7 +118,7 @@ impl KeyTreeNode for ChildKeysPrivate { } fn account_ids(&self) -> impl Iterator { - self.value.1.iter().map(|(identifier, _)| { + self.value.1.keys().map(|identifier| { nssa::AccountId::from((&self.value.0.nullifier_public_key, *identifier)) }) } diff --git a/key_protocol/src/key_management/key_tree/keys_public.rs b/key_protocol/src/key_management/key_tree/keys_public.rs index 3ab9cc35..4671795d 100644 --- a/key_protocol/src/key_management/key_tree/keys_public.rs +++ b/key_protocol/src/key_management/key_tree/keys_public.rs @@ -4,6 +4,7 @@ use serde::{Deserialize, Serialize}; use crate::key_management::key_tree::traits::KeyTreeNode; #[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(any(test, feature = "test_utils"), derive(PartialEq, Eq))] pub struct ChildKeysPublic { pub csk: nssa::PrivateKey, pub cpk: nssa::PublicKey, diff --git a/key_protocol/src/key_management/key_tree/mod.rs b/key_protocol/src/key_management/key_tree/mod.rs index 0ae0a52f..4f2605f1 100644 --- a/key_protocol/src/key_management/key_tree/mod.rs +++ b/key_protocol/src/key_management/key_tree/mod.rs @@ -21,6 +21,7 @@ pub mod traits; pub const DEPTH_SOFT_CAP: u32 = 20; #[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(any(test, feature = "test_utils"), derive(PartialEq, Eq))] pub struct KeyTree { pub key_map: BTreeMap, pub account_id_map: BTreeMap, @@ -297,7 +298,13 @@ impl KeyTree { println!("Cleanup of tree at depth {i}"); for id in ChainIndex::chain_ids_at_depth(i) { if let Some(node) = self.key_map.get(&id).cloned() { - if node.value.1.is_empty() { + if node.value.1.is_empty() + || node + .value + .1 + .iter() + .all(|(_, acc)| acc == &nssa::Account::default()) + { let account_ids = node.account_ids(); self.key_map.remove(&id); for addr in account_ids { @@ -531,49 +538,49 @@ mod tests { .key_map .get_mut(&ChainIndex::from_str("/1").unwrap()) .unwrap(); - acc.value.1.push(( + acc.value.1.insert( 0, nssa::Account { balance: 2, ..nssa::Account::default() }, - )); + ); let acc = tree .key_map .get_mut(&ChainIndex::from_str("/2").unwrap()) .unwrap(); - acc.value.1.push(( + acc.value.1.insert( 0, nssa::Account { balance: 3, ..nssa::Account::default() }, - )); + ); let acc = tree .key_map .get_mut(&ChainIndex::from_str("/0/1").unwrap()) .unwrap(); - acc.value.1.push(( + acc.value.1.insert( 0, nssa::Account { balance: 5, ..nssa::Account::default() }, - )); + ); let acc = tree .key_map .get_mut(&ChainIndex::from_str("/1/0").unwrap()) .unwrap(); - acc.value.1.push(( + acc.value.1.insert( 0, nssa::Account { balance: 6, ..nssa::Account::default() }, - )); + ); // Update account_id_map for nodes that now have entries for chain_index_str in ["/1", "/2", "/0/1", "/1/0"] { @@ -605,15 +612,15 @@ mod tests { assert_eq!(key_set, key_set_res); let acc = &tree.key_map[&ChainIndex::from_str("/1").unwrap()]; - assert_eq!(acc.value.1[0].1.balance, 2); + assert_eq!(acc.value.1[&0].balance, 2); let acc = &tree.key_map[&ChainIndex::from_str("/2").unwrap()]; - assert_eq!(acc.value.1[0].1.balance, 3); + assert_eq!(acc.value.1[&0].balance, 3); let acc = &tree.key_map[&ChainIndex::from_str("/0/1").unwrap()]; - assert_eq!(acc.value.1[0].1.balance, 5); + assert_eq!(acc.value.1[&0].balance, 5); let acc = &tree.key_map[&ChainIndex::from_str("/1/0").unwrap()]; - assert_eq!(acc.value.1[0].1.balance, 6); + assert_eq!(acc.value.1[&0].balance, 6); } } diff --git a/key_protocol/src/key_management/mod.rs b/key_protocol/src/key_management/mod.rs index aa5a1a75..ad98d7e2 100644 --- a/key_protocol/src/key_management/mod.rs +++ b/key_protocol/src/key_management/mod.rs @@ -12,8 +12,8 @@ pub mod secret_holders; pub type PublicAccountSigningKey = [u8; 32]; -#[derive(Serialize, Deserialize, Clone, Debug)] -/// Entrypoint to key management. +/// Private account keychain. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] pub struct KeyChain { pub secret_spending_key: SecretSpendingKey, pub private_key_holder: PrivateKeyHolder, @@ -72,7 +72,7 @@ impl KeyChain { index: Option, ) -> SharedSecretKey { SharedSecretKey::new( - &self.secret_spending_key.generate_viewing_secret_key(index), + self.secret_spending_key.generate_viewing_secret_key(index), ephemeral_public_key_sender, ) } diff --git a/key_protocol/src/key_management/secret_holders.rs b/key_protocol/src/key_management/secret_holders.rs index 9804ba39..f5e71ca8 100644 --- a/key_protocol/src/key_management/secret_holders.rs +++ b/key_protocol/src/key_management/secret_holders.rs @@ -17,14 +17,14 @@ pub struct SeedHolder { } /// Secret spending key object. Can produce `PrivateKeyHolder` objects. -#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] pub struct SecretSpendingKey(pub [u8; 32]); pub type ViewingSecretKey = Scalar; -#[derive(Serialize, Deserialize, Debug, Clone)] /// Private key holder. Produces public keys. Can produce `account_id`. Can produce shared secret /// for recepient. +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] pub struct PrivateKeyHolder { pub nullifier_secret_key: NullifierSecretKey, pub viewing_secret_key: ViewingSecretKey, diff --git a/key_protocol/src/key_protocol_core/mod.rs b/key_protocol/src/key_protocol_core/mod.rs deleted file mode 100644 index 20bea342..00000000 --- a/key_protocol/src/key_protocol_core/mod.rs +++ /dev/null @@ -1,417 +0,0 @@ -use std::collections::BTreeMap; - -use anyhow::Result; -use k256::AffinePoint; -use nssa::{Account, AccountId}; -use nssa_core::Identifier; -use serde::{Deserialize, Serialize}; - -use crate::key_management::{ - KeyChain, - group_key_holder::GroupKeyHolder, - key_tree::{KeyTreePrivate, KeyTreePublic, chain_index::ChainIndex}, - secret_holders::SeedHolder, -}; - -pub type PublicKey = AffinePoint; - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct UserPrivateAccountData { - pub key_chain: KeyChain, - pub accounts: Vec<(Identifier, Account)>, -} - -/// Metadata for a shared account (GMS-derived), stored alongside the cached plaintext state. -/// The group label and identifier (or PDA seed) are needed to re-derive keys during sync. -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct SharedAccountEntry { - pub group_label: String, - pub identifier: Identifier, - /// For PDA accounts, the seed and program ID used to derive keys via `derive_keys_for_pda`. - /// `None` for regular shared accounts (keys derived from identifier via derivation seed). - #[serde(default)] - pub pda_seed: Option, - #[serde(default)] - pub pda_program_id: Option, - pub account: Account, -} - -#[derive(Clone, Debug)] -pub struct NSSAUserData { - /// Default public accounts. - pub default_pub_account_signing_keys: BTreeMap, - /// Default private accounts. - pub default_user_private_accounts: BTreeMap, - /// Tree of public keys. - pub public_key_tree: KeyTreePublic, - /// Tree of private keys. - pub private_key_tree: KeyTreePrivate, - /// Group key holders for shared account management, keyed by a human-readable label. - pub group_key_holders: BTreeMap, - /// Cached plaintext state of shared private accounts (PDAs and regular shared accounts), - /// keyed by `AccountId`. Each entry stores the group label and identifier needed - /// to re-derive keys during sync. - pub shared_private_accounts: BTreeMap, - /// Dedicated sealing secret key for GMS distribution. Generated once via - /// `wallet group new-sealing-key`. The corresponding public key is shared with - /// group members so they can seal GMS for this wallet. - pub sealing_secret_key: Option, -} - -impl NSSAUserData { - fn valid_public_key_transaction_pairing_check( - accounts_keys_map: &BTreeMap, - ) -> bool { - let mut check_res = true; - for (account_id, key) in accounts_keys_map { - let expected_account_id = - nssa::AccountId::from(&nssa::PublicKey::new_from_private_key(key)); - if &expected_account_id != account_id { - println!("{expected_account_id}, {account_id}"); - check_res = false; - } - } - check_res - } - - fn valid_private_key_transaction_pairing_check( - accounts_keys_map: &BTreeMap, - ) -> bool { - let mut check_res = true; - for (account_id, entry) in accounts_keys_map { - let any_match = entry.accounts.iter().any(|(identifier, _)| { - nssa::AccountId::from((&entry.key_chain.nullifier_public_key, *identifier)) - == *account_id - }); - if !any_match { - println!("No matching entry found for account_id {account_id}"); - check_res = false; - } - } - check_res - } - - pub fn new_with_accounts( - default_accounts_keys: BTreeMap, - default_accounts_key_chains: BTreeMap, - public_key_tree: KeyTreePublic, - private_key_tree: KeyTreePrivate, - ) -> Result { - if !Self::valid_public_key_transaction_pairing_check(&default_accounts_keys) { - anyhow::bail!( - "Key transaction pairing check not satisfied, there are public account_ids, which are not derived from keys" - ); - } - - if !Self::valid_private_key_transaction_pairing_check(&default_accounts_key_chains) { - anyhow::bail!( - "Key transaction pairing check not satisfied, there are private account_ids, which are not derived from keys" - ); - } - - Ok(Self { - default_pub_account_signing_keys: default_accounts_keys, - default_user_private_accounts: default_accounts_key_chains, - public_key_tree, - private_key_tree, - group_key_holders: BTreeMap::new(), - shared_private_accounts: BTreeMap::new(), - sealing_secret_key: None, - }) - } - - /// Generated new private key for public transaction signatures. - /// - /// Returns the `account_id` of new account. - pub fn generate_new_public_transaction_private_key( - &mut self, - parent_cci: Option, - ) -> (nssa::AccountId, ChainIndex) { - match parent_cci { - Some(parent_cci) => self - .public_key_tree - .generate_new_public_node(&parent_cci) - .expect("Parent must be present in a tree"), - None => self - .public_key_tree - .generate_new_public_node_layered() - .expect("Search for new node slot failed"), - } - } - - /// Returns the signing key for public transaction signatures. - #[must_use] - pub fn get_pub_account_signing_key( - &self, - account_id: nssa::AccountId, - ) -> Option<&nssa::PrivateKey> { - self.default_pub_account_signing_keys - .get(&account_id) - .or_else(|| self.public_key_tree.get_node(account_id).map(Into::into)) - } - - /// Creates a new receiving key node and returns its `ChainIndex`. - pub fn create_private_accounts_key(&mut self, parent_cci: Option) -> ChainIndex { - match parent_cci { - Some(parent_cci) => self - .private_key_tree - .create_private_accounts_key_node(&parent_cci) - .expect("Parent must be present in a tree"), - None => self - .private_key_tree - .create_private_accounts_key_node_layered() - .expect("Search for new node slot failed"), - } - } - - /// Registers an additional identifier on an existing private key node, deriving and recording - /// the corresponding `AccountId`. Returns `None` if the node does not exist or the identifier - /// is already registered. - pub fn register_identifier_on_private_key_chain( - &mut self, - cci: &ChainIndex, - identifier: Identifier, - ) -> Option { - self.private_key_tree - .register_identifier_on_node(cci, identifier) - } - - /// Returns the key chain and account data for the given private account ID. - #[must_use] - pub fn get_private_account( - &self, - account_id: nssa::AccountId, - ) -> Option<(KeyChain, nssa_core::account::Account, Identifier)> { - // Check default accounts - if let Some(entry) = self.default_user_private_accounts.get(&account_id) { - for (identifier, account) in &entry.accounts { - let expected_id = - nssa::AccountId::from((&entry.key_chain.nullifier_public_key, *identifier)); - if expected_id == account_id { - return Some((entry.key_chain.clone(), account.clone(), *identifier)); - } - } - return None; - } - // Check tree - if let Some(node) = self.private_key_tree.get_node(account_id) { - let key_chain = &node.value.0; - for (identifier, account) in &node.value.1 { - let expected_id = - nssa::AccountId::from((&key_chain.nullifier_public_key, *identifier)); - if expected_id == account_id { - return Some((key_chain.clone(), account.clone(), *identifier)); - } - } - } - None - } - - pub fn account_ids(&self) -> impl Iterator { - self.public_account_ids().chain(self.private_account_ids()) - } - - pub fn public_account_ids(&self) -> impl Iterator { - self.default_pub_account_signing_keys - .keys() - .copied() - .chain(self.public_key_tree.account_id_map.keys().copied()) - } - - pub fn private_account_ids(&self) -> impl Iterator { - self.default_user_private_accounts - .keys() - .copied() - .chain(self.private_key_tree.account_id_map.keys().copied()) - } - - /// Returns the `GroupKeyHolder` for the given label, if it exists. - #[must_use] - pub fn group_key_holder(&self, label: &str) -> Option<&GroupKeyHolder> { - self.group_key_holders.get(label) - } - - /// Inserts or replaces a `GroupKeyHolder` under the given label. - /// - /// If a holder already exists under this label, it is silently replaced and the old - /// GMS is lost. Callers must ensure label uniqueness across groups. - pub fn insert_group_key_holder(&mut self, label: String, holder: GroupKeyHolder) { - self.group_key_holders.insert(label, holder); - } - - /// Returns the cached account for a shared private account, if it exists. - #[must_use] - pub fn shared_private_account( - &self, - account_id: &nssa::AccountId, - ) -> Option<&SharedAccountEntry> { - self.shared_private_accounts.get(account_id) - } - - /// Inserts or replaces a shared private account entry. - pub fn insert_shared_private_account( - &mut self, - account_id: nssa::AccountId, - entry: SharedAccountEntry, - ) { - self.shared_private_accounts.insert(account_id, entry); - } - - /// Updates the cached account state for a shared private account. - pub fn update_shared_private_account_state( - &mut self, - account_id: &nssa::AccountId, - account: nssa_core::account::Account, - ) { - if let Some(entry) = self.shared_private_accounts.get_mut(account_id) { - entry.account = account; - } - } - - /// Iterates over all shared private accounts. - pub fn shared_private_accounts_iter( - &self, - ) -> impl Iterator { - self.shared_private_accounts.iter() - } -} - -impl Default for NSSAUserData { - fn default() -> Self { - let (seed_holder, _mnemonic) = SeedHolder::new_mnemonic(""); - Self::new_with_accounts( - BTreeMap::new(), - BTreeMap::new(), - KeyTreePublic::new(&seed_holder), - KeyTreePrivate::new(&seed_holder), - ) - .unwrap() - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn group_key_holder_storage_round_trip() { - let mut user_data = NSSAUserData::default(); - assert!(user_data.group_key_holder("test-group").is_none()); - - let holder = GroupKeyHolder::from_gms([42_u8; 32]); - user_data.insert_group_key_holder(String::from("test-group"), holder.clone()); - - let retrieved = user_data - .group_key_holder("test-group") - .expect("should exist"); - assert_eq!(retrieved.dangerous_raw_gms(), holder.dangerous_raw_gms()); - } - - #[test] - fn group_key_holders_default_empty() { - let user_data = NSSAUserData::default(); - assert!(user_data.group_key_holders.is_empty()); - assert!(user_data.shared_private_accounts.is_empty()); - } - - #[test] - fn shared_account_entry_serde_round_trip() { - use nssa_core::program::PdaSeed; - - let entry = SharedAccountEntry { - group_label: String::from("test-group"), - identifier: 42, - pda_seed: None, - pda_program_id: None, - account: nssa_core::account::Account::default(), - }; - let encoded = bincode::serialize(&entry).expect("serialize"); - let decoded: SharedAccountEntry = bincode::deserialize(&encoded).expect("deserialize"); - assert_eq!(decoded.group_label, "test-group"); - assert_eq!(decoded.identifier, 42); - assert!(decoded.pda_seed.is_none()); - - let pda_entry = SharedAccountEntry { - group_label: String::from("pda-group"), - identifier: u128::MAX, - pda_seed: Some(PdaSeed::new([7_u8; 32])), - pda_program_id: Some([9; 8]), - account: nssa_core::account::Account::default(), - }; - let pda_encoded = bincode::serialize(&pda_entry).expect("serialize pda"); - let pda_decoded: SharedAccountEntry = - bincode::deserialize(&pda_encoded).expect("deserialize pda"); - assert_eq!(pda_decoded.group_label, "pda-group"); - assert_eq!(pda_decoded.identifier, u128::MAX); - assert_eq!(pda_decoded.pda_seed.unwrap(), PdaSeed::new([7_u8; 32])); - } - - #[test] - fn shared_account_entry_none_pda_seed_round_trips() { - // Verify that an entry with pda_seed=None serializes and deserializes correctly, - // confirming the #[serde(default)] attribute works for backward compatibility. - let entry = SharedAccountEntry { - group_label: String::from("old"), - identifier: 1, - pda_seed: None, - pda_program_id: None, - account: nssa_core::account::Account::default(), - }; - let encoded = bincode::serialize(&entry).expect("serialize"); - let decoded: SharedAccountEntry = bincode::deserialize(&encoded).expect("deserialize"); - assert_eq!(decoded.group_label, "old"); - assert_eq!(decoded.identifier, 1); - assert!(decoded.pda_seed.is_none()); - } - - #[test] - fn shared_account_derives_consistent_keys_from_group() { - use nssa_core::program::PdaSeed; - - let mut user_data = NSSAUserData::default(); - let gms_holder = GroupKeyHolder::from_gms([42_u8; 32]); - user_data.insert_group_key_holder(String::from("my-group"), gms_holder); - - let holder = user_data.group_key_holder("my-group").unwrap(); - - // Regular shared account: derive via tag - let tag = [1_u8; 32]; - let keys_a = holder.derive_keys_for_shared_account(&tag); - let keys_b = holder.derive_keys_for_shared_account(&tag); - assert_eq!( - keys_a.generate_nullifier_public_key(), - keys_b.generate_nullifier_public_key(), - ); - - // PDA shared account: derive via seed - let seed = PdaSeed::new([2_u8; 32]); - let pda_keys_a = holder.derive_keys_for_pda(&[9; 8], &seed); - let pda_keys_b = holder.derive_keys_for_pda(&[9; 8], &seed); - assert_eq!( - pda_keys_a.generate_nullifier_public_key(), - pda_keys_b.generate_nullifier_public_key(), - ); - - // PDA and shared derivations don't collide - assert_ne!( - keys_a.generate_nullifier_public_key(), - pda_keys_a.generate_nullifier_public_key(), - ); - } - - #[test] - fn new_account() { - let mut user_data = NSSAUserData::default(); - - let chain_index = user_data.create_private_accounts_key(Some(ChainIndex::root())); - - let is_key_chain_generated = user_data - .private_key_tree - .key_map - .contains_key(&chain_index); - assert!(is_key_chain_generated); - - let key_chain = &user_data.private_key_tree.key_map[&chain_index].value.0; - println!("{key_chain:#?}"); - } -} diff --git a/key_protocol/src/lib.rs b/key_protocol/src/lib.rs index e3fe31cf..a8c333e4 100644 --- a/key_protocol/src/lib.rs +++ b/key_protocol/src/lib.rs @@ -1,4 +1,3 @@ #![expect(clippy::print_stdout, reason = "TODO: fix later")] pub mod key_management; -pub mod key_protocol_core; diff --git a/nssa/Cargo.toml b/nssa/Cargo.toml index d8f0807c..d2141999 100644 --- a/nssa/Cargo.toml +++ b/nssa/Cargo.toml @@ -30,6 +30,7 @@ risc0-binfmt = "3.0.2" [dev-dependencies] token_core.workspace = true +authenticated_transfer_core.workspace = true test_program_methods.workspace = true env_logger.workspace = true diff --git a/nssa/core/src/encryption/shared_key_derivation.rs b/nssa/core/src/encryption/shared_key_derivation.rs index 8169e8f9..8ea5aac8 100644 --- a/nssa/core/src/encryption/shared_key_derivation.rs +++ b/nssa/core/src/encryption/shared_key_derivation.rs @@ -17,7 +17,9 @@ use serde::{Deserialize, Serialize}; use crate::{SharedSecretKey, encryption::Scalar}; -#[derive(Serialize, Deserialize, Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize)] +#[derive( + Serialize, Deserialize, Clone, PartialEq, Eq, PartialOrd, Ord, BorshSerialize, BorshDeserialize, +)] pub struct Secp256k1Point(pub Vec); impl std::fmt::Debug for Secp256k1Point { @@ -56,8 +58,8 @@ impl From<&EphemeralSecretKey> for EphemeralPublicKey { impl SharedSecretKey { /// Creates a new shared secret key from a scalar and a point. #[must_use] - pub fn new(scalar: &Scalar, point: &Secp256k1Point) -> Self { - let scalar = k256::Scalar::from_repr((*scalar).into()).unwrap(); + pub fn new(scalar: Scalar, point: &Secp256k1Point) -> Self { + let scalar = k256::Scalar::from_repr(scalar.into()).unwrap(); let point: [u8; 33] = point.0.clone().try_into().unwrap(); let encoded = EncodedPoint::from_bytes(point).unwrap(); diff --git a/nssa/core/src/lib.rs b/nssa/core/src/lib.rs index d660aed0..0ddf7b8a 100644 --- a/nssa/core/src/lib.rs +++ b/nssa/core/src/lib.rs @@ -24,6 +24,8 @@ pub mod program; #[cfg(feature = "host")] pub mod error; +pub const GENESIS_BLOCK_ID: BlockId = 1; + pub type BlockId = u64; /// Unix timestamp in milliseconds. pub type Timestamp = u64; diff --git a/nssa/core/src/nullifier.rs b/nssa/core/src/nullifier.rs index aafe3f7c..6de0998e 100644 --- a/nssa/core/src/nullifier.rs +++ b/nssa/core/src/nullifier.rs @@ -8,7 +8,7 @@ const PRIVATE_ACCOUNT_ID_PREFIX: &[u8; 32] = b"/LEE/v0.3/AccountId/Private/\x00\ pub type Identifier = u128; -#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)] #[cfg_attr(any(feature = "host", test), derive(Hash))] pub struct NullifierPublicKey(pub [u8; 32]); diff --git a/nssa/core/src/program.rs b/nssa/core/src/program.rs index e4e33932..cc4f82de 100644 --- a/nssa/core/src/program.rs +++ b/nssa/core/src/program.rs @@ -636,7 +636,6 @@ pub fn validate_execution( } // 8. Total balance is preserved - let Some(total_balance_pre_states) = WrappedBalanceSum::from_balances(pre_states.iter().map(|pre| pre.account.balance)) else { diff --git a/nssa/src/lib.rs b/nssa/src/lib.rs index f4c3be9d..0ad9b143 100644 --- a/nssa/src/lib.rs +++ b/nssa/src/lib.rs @@ -4,7 +4,7 @@ )] pub use nssa_core::{ - SharedSecretKey, + GENESIS_BLOCK_ID, SharedSecretKey, account::{Account, AccountId, Data}, encryption::EphemeralPublicKey, program::ProgramId, diff --git a/nssa/src/merkle_tree/mod.rs b/nssa/src/merkle_tree/mod.rs index 588f0f60..e439d092 100644 --- a/nssa/src/merkle_tree/mod.rs +++ b/nssa/src/merkle_tree/mod.rs @@ -17,6 +17,26 @@ pub struct MerkleTree { } impl MerkleTree { + pub fn with_capacity(capacity: usize) -> Self { + // Adjust capacity to ensure power of two + let capacity = capacity.next_power_of_two(); + let total_depth = usize::try_from(capacity.trailing_zeros()).expect("u32 fits in usize"); + + let nodes = default_values::DEFAULT_VALUES[..=total_depth] + .iter() + .rev() + .enumerate() + .flat_map(|(level, default_value)| std::iter::repeat_n(default_value, 1 << level)) + .copied() + .collect(); + + Self { + nodes, + capacity, + length: 0, + } + } + pub fn root(&self) -> Node { let root_index = self.root_index(); *self.get_node(root_index) @@ -49,26 +69,6 @@ impl MerkleTree { self.nodes[index] = node; } - pub fn with_capacity(capacity: usize) -> Self { - // Adjust capacity to ensure power of two - let capacity = capacity.next_power_of_two(); - let total_depth = usize::try_from(capacity.trailing_zeros()).expect("u32 fits in usize"); - - let nodes = default_values::DEFAULT_VALUES[..=total_depth] - .iter() - .rev() - .enumerate() - .flat_map(|(level, default_value)| std::iter::repeat_n(default_value, 1 << level)) - .copied() - .collect(); - - Self { - nodes, - capacity, - length: 0, - } - } - /// Reallocates storage of Merkle tree for double capacity. /// The current tree is embedded into the new tree as a subtree. fn reallocate_to_double_capacity(&mut self) { diff --git a/nssa/src/privacy_preserving_transaction/circuit.rs b/nssa/src/privacy_preserving_transaction/circuit.rs index ff23647e..8343a450 100644 --- a/nssa/src/privacy_preserving_transaction/circuit.rs +++ b/nssa/src/privacy_preserving_transaction/circuit.rs @@ -228,11 +228,14 @@ mod tests { let expected_sender_pre = sender.clone(); let esk = [3; 32]; - let shared_secret = SharedSecretKey::new(&esk, &recipient_keys.vpk()); + let shared_secret = SharedSecretKey::new(esk, &recipient_keys.vpk()); let (output, proof) = execute_and_prove( vec![sender, recipient], - Program::serialize_instruction(balance_to_move).unwrap(), + Program::serialize_instruction(authenticated_transfer_core::Instruction::Transfer { + amount: balance_to_move, + }) + .unwrap(), vec![ InputAccountIdentity::Public, InputAccountIdentity::PrivateUnauthorized { @@ -322,14 +325,17 @@ mod tests { ]; let esk_1 = [3; 32]; - let shared_secret_1 = SharedSecretKey::new(&esk_1, &sender_keys.vpk()); + let shared_secret_1 = SharedSecretKey::new(esk_1, &sender_keys.vpk()); let esk_2 = [5; 32]; - let shared_secret_2 = SharedSecretKey::new(&esk_2, &recipient_keys.vpk()); + let shared_secret_2 = SharedSecretKey::new(esk_2, &recipient_keys.vpk()); let (output, proof) = execute_and_prove( vec![sender_pre, recipient], - Program::serialize_instruction(balance_to_move).unwrap(), + Program::serialize_instruction(authenticated_transfer_core::Instruction::Transfer { + amount: balance_to_move, + }) + .unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { ssk: shared_secret_1, @@ -397,7 +403,7 @@ mod tests { .unwrap(); let esk = [3; 32]; - let shared_secret = SharedSecretKey::new(&esk, &account_keys.vpk()); + let shared_secret = SharedSecretKey::new(esk, &account_keys.vpk()); let program_with_deps = ProgramWithDependencies::new( validity_window_chain_caller, @@ -428,7 +434,7 @@ mod tests { let keys = test_private_account_keys_1(); let npk = keys.npk(); let seed = PdaSeed::new([42; 32]); - let shared_secret_pda = SharedSecretKey::new(&[55; 32], &keys.vpk()); + let shared_secret_pda = SharedSecretKey::new([55; 32], &keys.vpk()); // PDA (new, private PDA) — AccountId derived from auth_transfer_proxy's program ID let pda_id = AccountId::for_private_pda(&program.id(), &seed, &npk); @@ -465,7 +471,7 @@ mod tests { let keys = test_private_account_keys_1(); let npk = keys.npk(); let seed = PdaSeed::new([42; 32]); - let shared_secret_pda = SharedSecretKey::new(&[55; 32], &keys.vpk()); + let shared_secret_pda = SharedSecretKey::new([55; 32], &keys.vpk()); // PDA (new, private PDA) let pda_id = AccountId::for_private_pda(&program.id(), &seed, &npk); @@ -518,7 +524,7 @@ mod tests { let shared_keys = test_private_account_keys_1(); let shared_npk = shared_keys.npk(); let shared_identifier: u128 = 42; - let shared_secret = SharedSecretKey::new(&[55; 32], &shared_keys.vpk()); + let shared_secret = SharedSecretKey::new([55; 32], &shared_keys.vpk()); // Sender: public account with balance, owned by auth-transfer let sender_id = AccountId::new([99; 32]); diff --git a/nssa/src/privacy_preserving_transaction/message.rs b/nssa/src/privacy_preserving_transaction/message.rs index 697f66ac..39b2dc80 100644 --- a/nssa/src/privacy_preserving_transaction/message.rs +++ b/nssa/src/privacy_preserving_transaction/message.rs @@ -250,7 +250,7 @@ pub mod tests { let account_id = nssa_core::account::AccountId::from((&npk, 0)); let commitment = Commitment::new(&account_id, &account); let esk = [3; 32]; - let shared_secret = SharedSecretKey::new(&esk, &vpk); + let shared_secret = SharedSecretKey::new(esk, &vpk); let epk = EphemeralPublicKey::from_scalar(esk); let ciphertext = EncryptionScheme::encrypt(&account, 0, &shared_secret, &commitment, 2); let encrypted_account_data = diff --git a/nssa/src/public_transaction/execution.rs b/nssa/src/public_transaction/execution.rs new file mode 100644 index 00000000..a5dc1cd9 --- /dev/null +++ b/nssa/src/public_transaction/execution.rs @@ -0,0 +1,118 @@ +use std::collections::{HashMap, VecDeque}; + +use log::debug; +use nssa_core::{ + account::{Account, AccountId, AccountWithMetadata}, + program::{ChainedCall, ProgramId, ProgramOutput}, +}; + +use crate::{PublicTransaction, V03State, error::NssaError}; + +pub trait Validator { + fn validate_pre_execution(&mut self) -> Result<(), NssaError>; + + fn on_chained_call(&mut self) -> Result<(), NssaError>; + + fn validate_output( + &mut self, + state_diff: &HashMap, + caller_program_id: Option, + chained_call: &ChainedCall, + program_output: &ProgramOutput, + ) -> Result<(), NssaError>; + + fn validate_post_execution( + &mut self, + state_diff: &HashMap, + ) -> Result<(), NssaError>; +} + +pub fn execute( + mut validator: impl Validator, + tx: &PublicTransaction, + state: &V03State, +) -> Result, NssaError> { + validator.validate_pre_execution()?; + + let message = tx.message(); + let signer_account_ids = tx.signer_account_ids(); + + // Build pre_states for execution + let input_pre_states: Vec<_> = message + .account_ids + .iter() + .map(|account_id| { + AccountWithMetadata::new( + state.get_account_by_id(*account_id), + signer_account_ids.contains(account_id), + *account_id, + ) + }) + .collect(); + + let mut state_diff: HashMap = HashMap::new(); + + let initial_call = ChainedCall { + program_id: message.program_id, + instruction_data: message.instruction_data.clone(), + pre_states: input_pre_states, + pda_seeds: vec![], + }; + + let mut chained_calls = VecDeque::from_iter([(initial_call, None)]); + + while let Some((chained_call, caller_program_id)) = chained_calls.pop_front() { + validator.on_chained_call()?; + + // Check that the `program_id` corresponds to a deployed program + let Some(program) = state.programs().get(&chained_call.program_id) else { + return Err(NssaError::InvalidInput("Unknown program".into())); + }; + + debug!( + "Program {:?} pre_states: {:?}, instruction_data: {:?}", + chained_call.program_id, chained_call.pre_states, chained_call.instruction_data + ); + let mut program_output = program.execute( + caller_program_id, + &chained_call.pre_states, + &chained_call.instruction_data, + )?; + debug!( + "Program {:?} output: {:?}", + chained_call.program_id, program_output + ); + + validator.validate_output( + &state_diff, + caller_program_id, + &chained_call, + &program_output, + )?; + + for post in program_output + .post_states + .iter_mut() + .filter(|post| post.required_claim().is_some()) + { + post.account_mut().program_owner = chained_call.program_id; + } + + // Update the state diff + for (pre, post) in program_output + .pre_states + .iter() + .zip(program_output.post_states.iter()) + { + state_diff.insert(pre.account_id, post.account().clone()); + } + + for new_call in program_output.chained_calls.into_iter().rev() { + chained_calls.push_front((new_call, Some(chained_call.program_id))); + } + } + + validator.validate_post_execution(&state_diff)?; + + Ok(state_diff) +} diff --git a/nssa/src/public_transaction/mod.rs b/nssa/src/public_transaction/mod.rs index 1af61e10..108dbf6e 100644 --- a/nssa/src/public_transaction/mod.rs +++ b/nssa/src/public_transaction/mod.rs @@ -1,7 +1,9 @@ +pub use execution::{Validator, execute}; pub use message::Message; pub use transaction::PublicTransaction; pub use witness_set::WitnessSet; +mod execution; mod message; mod transaction; mod witness_set; diff --git a/nssa/src/state.rs b/nssa/src/state.rs index 9e4d8524..a281b5aa 100644 --- a/nssa/src/state.rs +++ b/nssa/src/state.rs @@ -122,7 +122,22 @@ pub struct V03State { programs: HashMap, } +impl Default for V03State { + fn default() -> Self { + Self { + public_state: HashMap::new(), + private_state: (CommitmentSet::with_capacity(32), NullifierSet::new()), + programs: HashMap::new(), + } + } +} + impl V03State { + #[must_use] + pub fn new() -> Self { + Self::default() + } + #[must_use] pub fn new_with_genesis_accounts( initial_data: &[(AccountId, u128)], @@ -361,6 +376,7 @@ pub mod tests { use std::collections::HashMap; + use authenticated_transfer_core::Instruction as AuthTransferInstruction; use nssa_core::{ BlockId, Commitment, InputAccountIdentity, Nullifier, NullifierPublicKey, NullifierSecretKey, SharedSecretKey, Timestamp, @@ -525,8 +541,13 @@ pub mod tests { let account_ids = vec![from, to]; let nonces = vec![Nonce(from_nonce), Nonce(to_nonce)]; let program_id = Program::authenticated_transfer_program().id(); - let message = - public_transaction::Message::try_new(program_id, account_ids, nonces, balance).unwrap(); + let message = public_transaction::Message::try_new( + program_id, + account_ids, + nonces, + AuthTransferInstruction::Transfer { amount: balance }, + ) + .unwrap(); let witness_set = public_transaction::WitnessSet::for_message(&message, &[from_key, to_key]); PublicTransaction::new(message, witness_set) @@ -1206,7 +1227,7 @@ pub mod tests { let witness_set = public_transaction::WitnessSet::for_message(&message, &[]); let tx = PublicTransaction::new(message, witness_set); - let result = state.transition_from_public_transaction(&tx, 1, 0); + let result = state.transition_from_public_transaction(&tx, 2, 0); assert!(matches!( result, @@ -1240,7 +1261,7 @@ pub mod tests { .unwrap(); let witness_set = public_transaction::WitnessSet::for_message(&message, &[]); let tx = PublicTransaction::new(message, witness_set); - let result = state.transition_from_public_transaction(&tx, 1, 0); + let result = state.transition_from_public_transaction(&tx, 2, 0); assert!(matches!( result, @@ -1288,12 +1309,15 @@ pub mod tests { AccountWithMetadata::new(Account::default(), false, (&recipient_keys.npk(), 0)); let esk = [3; 32]; - let shared_secret = SharedSecretKey::new(&esk, &recipient_keys.vpk()); + let shared_secret = SharedSecretKey::new(esk, &recipient_keys.vpk()); let epk = EphemeralPublicKey::from_scalar(esk); let (output, proof) = circuit::execute_and_prove( vec![sender, recipient], - Program::serialize_instruction(balance_to_move).unwrap(), + Program::serialize_instruction(AuthTransferInstruction::Transfer { + amount: balance_to_move, + }) + .unwrap(), vec![ InputAccountIdentity::Public, InputAccountIdentity::PrivateUnauthorized { @@ -1337,16 +1361,19 @@ pub mod tests { AccountWithMetadata::new(Account::default(), false, (&recipient_keys.npk(), 0)); let esk_1 = [3; 32]; - let shared_secret_1 = SharedSecretKey::new(&esk_1, &sender_keys.vpk()); + let shared_secret_1 = SharedSecretKey::new(esk_1, &sender_keys.vpk()); let epk_1 = EphemeralPublicKey::from_scalar(esk_1); let esk_2 = [3; 32]; - let shared_secret_2 = SharedSecretKey::new(&esk_2, &recipient_keys.vpk()); + let shared_secret_2 = SharedSecretKey::new(esk_2, &recipient_keys.vpk()); let epk_2 = EphemeralPublicKey::from_scalar(esk_2); let (output, proof) = circuit::execute_and_prove( vec![sender_pre, recipient_pre], - Program::serialize_instruction(balance_to_move).unwrap(), + Program::serialize_instruction(AuthTransferInstruction::Transfer { + amount: balance_to_move, + }) + .unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { ssk: shared_secret_1, @@ -1404,12 +1431,15 @@ pub mod tests { ); let esk = [3; 32]; - let shared_secret = SharedSecretKey::new(&esk, &sender_keys.vpk()); + let shared_secret = SharedSecretKey::new(esk, &sender_keys.vpk()); let epk = EphemeralPublicKey::from_scalar(esk); let (output, proof) = circuit::execute_and_prove( vec![sender_pre, recipient_pre], - Program::serialize_instruction(balance_to_move).unwrap(), + Program::serialize_instruction(AuthTransferInstruction::Transfer { + amount: balance_to_move, + }) + .unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { ssk: shared_secret, @@ -1910,14 +1940,14 @@ pub mod tests { Program::serialize_instruction(10_u128).unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { - ssk: SharedSecretKey::new(&[55; 32], &sender_keys.vpk()), + ssk: SharedSecretKey::new([55; 32], &sender_keys.vpk()), nsk: recipient_keys.nsk, membership_proof: (0, vec![]), identifier: 0, }, InputAccountIdentity::PrivateUnauthorized { npk: recipient_keys.npk(), - ssk: SharedSecretKey::new(&[56; 32], &recipient_keys.vpk()), + ssk: SharedSecretKey::new([56; 32], &recipient_keys.vpk()), identifier: 0, }, ], @@ -1956,14 +1986,14 @@ pub mod tests { Program::serialize_instruction(10_u128).unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { - ssk: SharedSecretKey::new(&[55; 32], &sender_keys.vpk()), + ssk: SharedSecretKey::new([55; 32], &sender_keys.vpk()), nsk: sender_keys.nsk, membership_proof: (0, vec![]), identifier: 0, }, InputAccountIdentity::PrivateUnauthorized { npk: recipient_keys.npk(), - ssk: SharedSecretKey::new(&[56; 32], &recipient_keys.vpk()), + ssk: SharedSecretKey::new([56; 32], &recipient_keys.vpk()), identifier: 0, }, ], @@ -2002,14 +2032,14 @@ pub mod tests { Program::serialize_instruction(10_u128).unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { - ssk: SharedSecretKey::new(&[55; 32], &sender_keys.vpk()), + ssk: SharedSecretKey::new([55; 32], &sender_keys.vpk()), nsk: sender_keys.nsk, membership_proof: (0, vec![]), identifier: 0, }, InputAccountIdentity::PrivateUnauthorized { npk: recipient_keys.npk(), - ssk: SharedSecretKey::new(&[56; 32], &recipient_keys.vpk()), + ssk: SharedSecretKey::new([56; 32], &recipient_keys.vpk()), identifier: 0, }, ], @@ -2048,14 +2078,14 @@ pub mod tests { Program::serialize_instruction(10_u128).unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { - ssk: SharedSecretKey::new(&[55; 32], &sender_keys.vpk()), + ssk: SharedSecretKey::new([55; 32], &sender_keys.vpk()), nsk: sender_keys.nsk, membership_proof: (0, vec![]), identifier: 0, }, InputAccountIdentity::PrivateUnauthorized { npk: recipient_keys.npk(), - ssk: SharedSecretKey::new(&[56; 32], &recipient_keys.vpk()), + ssk: SharedSecretKey::new([56; 32], &recipient_keys.vpk()), identifier: 0, }, ], @@ -2094,14 +2124,14 @@ pub mod tests { Program::serialize_instruction(10_u128).unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { - ssk: SharedSecretKey::new(&[55; 32], &sender_keys.vpk()), + ssk: SharedSecretKey::new([55; 32], &sender_keys.vpk()), nsk: sender_keys.nsk, membership_proof: (0, vec![]), identifier: 0, }, InputAccountIdentity::PrivateUnauthorized { npk: recipient_keys.npk(), - ssk: SharedSecretKey::new(&[56; 32], &recipient_keys.vpk()), + ssk: SharedSecretKey::new([56; 32], &recipient_keys.vpk()), identifier: 0, }, ], @@ -2138,14 +2168,14 @@ pub mod tests { Program::serialize_instruction(10_u128).unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { - ssk: SharedSecretKey::new(&[55; 32], &sender_keys.vpk()), + ssk: SharedSecretKey::new([55; 32], &sender_keys.vpk()), nsk: sender_keys.nsk, membership_proof: (0, vec![]), identifier: 0, }, InputAccountIdentity::PrivateUnauthorized { npk: recipient_keys.npk(), - ssk: SharedSecretKey::new(&[56; 32], &recipient_keys.vpk()), + ssk: SharedSecretKey::new([56; 32], &recipient_keys.vpk()), identifier: 0, }, ], @@ -2164,7 +2194,7 @@ pub mod tests { let program = Program::simple_balance_transfer(); let keys = test_private_account_keys_1(); let npk = keys.npk(); - let shared_secret = SharedSecretKey::new(&[55; 32], &keys.vpk()); + let shared_secret = SharedSecretKey::new([55; 32], &keys.vpk()); let public_account_1 = AccountWithMetadata::new( Account { program_owner: program.id(), @@ -2204,7 +2234,7 @@ pub mod tests { let keys = test_private_account_keys_1(); let npk = keys.npk(); let seed = PdaSeed::new([42; 32]); - let shared_secret = SharedSecretKey::new(&[55; 32], &keys.vpk()); + let shared_secret = SharedSecretKey::new([55; 32], &keys.vpk()); let account_id = AccountId::for_private_pda(&program.id(), &seed, &npk); let pre_state = AccountWithMetadata::new(Account::default(), false, account_id); @@ -2239,7 +2269,7 @@ pub mod tests { let npk_a = keys_a.npk(); let npk_b = keys_b.npk(); let seed = PdaSeed::new([42; 32]); - let shared_secret = SharedSecretKey::new(&[55; 32], &keys_b.vpk()); + let shared_secret = SharedSecretKey::new([55; 32], &keys_b.vpk()); // `account_id` is derived from `npk_a`, but `npk_b` is supplied for this pre_state. // `AccountId::for_private_pda(program, seed, npk_b) != account_id`, so the claim check in @@ -2272,7 +2302,7 @@ pub mod tests { let keys = test_private_account_keys_1(); let npk = keys.npk(); let seed = PdaSeed::new([77; 32]); - let shared_secret = SharedSecretKey::new(&[55; 32], &keys.vpk()); + let shared_secret = SharedSecretKey::new([55; 32], &keys.vpk()); let account_id = AccountId::for_private_pda(&delegator.id(), &seed, &npk); let pre_state = AccountWithMetadata::new(Account::default(), false, account_id); @@ -2309,7 +2339,7 @@ pub mod tests { let npk = keys.npk(); let claim_seed = PdaSeed::new([77; 32]); let wrong_delegated_seed = PdaSeed::new([88; 32]); - let shared_secret = SharedSecretKey::new(&[55; 32], &keys.vpk()); + let shared_secret = SharedSecretKey::new([55; 32], &keys.vpk()); let account_id = AccountId::for_private_pda(&delegator.id(), &claim_seed, &npk); let pre_state = AccountWithMetadata::new(Account::default(), false, account_id); @@ -2345,8 +2375,8 @@ pub mod tests { let keys_a = test_private_account_keys_1(); let keys_b = test_private_account_keys_2(); let seed = PdaSeed::new([55; 32]); - let shared_a = SharedSecretKey::new(&[66; 32], &keys_a.vpk()); - let shared_b = SharedSecretKey::new(&[77; 32], &keys_b.vpk()); + let shared_a = SharedSecretKey::new([66; 32], &keys_a.vpk()); + let shared_b = SharedSecretKey::new([77; 32], &keys_b.vpk()); let account_a = AccountId::for_private_pda(&program.id(), &seed, &keys_a.npk()); let account_b = AccountId::for_private_pda(&program.id(), &seed, &keys_b.npk()); @@ -2389,7 +2419,7 @@ pub mod tests { let program = Program::noop(); let keys = test_private_account_keys_1(); let npk = keys.npk(); - let shared_secret = SharedSecretKey::new(&[55; 32], &keys.vpk()); + let shared_secret = SharedSecretKey::new([55; 32], &keys.vpk()); let seed = PdaSeed::new([99; 32]); // Simulate a previously-claimed private PDA: program_owner != DEFAULT, is_authorized = @@ -2487,7 +2517,7 @@ pub mod tests { (&sender_keys.npk(), 0), ); - let shared_secret = SharedSecretKey::new(&[55; 32], &sender_keys.vpk()); + let shared_secret = SharedSecretKey::new([55; 32], &sender_keys.vpk()); let result = execute_and_prove( vec![private_account_1.clone(), private_account_1], Program::serialize_instruction(100_u128).unwrap(), @@ -2538,7 +2568,7 @@ pub mod tests { program.id(), vec![from, to], vec![Nonce(0), Nonce(0)], - amount, + AuthTransferInstruction::Transfer { amount }, ) .unwrap(); let witness_set = @@ -2561,15 +2591,19 @@ pub mod tests { assert_eq!(state.get_account_by_id(account_id), Account::default()); - let message = - public_transaction::Message::try_new(program.id(), vec![account_id], vec![], 0_u128) - .unwrap(); + let message = public_transaction::Message::try_new( + program.id(), + vec![account_id], + vec![], + AuthTransferInstruction::Initialize, + ) + .unwrap(); let witness_set = public_transaction::WitnessSet::for_message(&message, &[]); let tx = PublicTransaction::new(message, witness_set); - let result = state.transition_from_public_transaction(&tx, 1, 0); + let result = state.transition_from_public_transaction(&tx, 2, 0); - assert!(matches!(result, Err(NssaError::ProgramExecutionFailed(_)))); + assert!(matches!(result, Err(NssaError::InvalidProgramBehavior(_)))); assert_eq!(state.get_account_by_id(account_id), Account::default()); } @@ -2586,7 +2620,7 @@ pub mod tests { program.id(), vec![account_id], vec![Nonce(0)], - 0_u128, + AuthTransferInstruction::Initialize, ) .unwrap(); let witness_set = public_transaction::WitnessSet::for_message(&message, &[&account_key]); @@ -2794,12 +2828,12 @@ pub mod tests { let result = execute_and_prove( vec![public_account], - Program::serialize_instruction(0_u128).unwrap(), + Program::serialize_instruction(AuthTransferInstruction::Initialize).unwrap(), vec![InputAccountIdentity::Public], &program.into(), ); - assert!(matches!(result, Err(NssaError::ProgramProveFailed(_)))); + assert!(matches!(result, Err(NssaError::CircuitProvingError(_)))); } #[test] @@ -2828,12 +2862,17 @@ pub mod tests { let recipient_pre = AccountWithMetadata::new(Account::default(), true, recipient_account_id); let esk = [5; 32]; - let shared_secret = SharedSecretKey::new(&esk, &sender_keys.vpk()); + let shared_secret = SharedSecretKey::new(esk, &sender_keys.vpk()); let epk = EphemeralPublicKey::from_scalar(esk); + let balance = 37; + let (output, proof) = execute_and_prove( vec![sender_pre, recipient_pre], - Program::serialize_instruction(37_u128).unwrap(), + Program::serialize_instruction(authenticated_transfer_core::Instruction::Transfer { + amount: balance, + }) + .unwrap(), vec![ InputAccountIdentity::PrivateAuthorizedUpdate { ssk: shared_secret, @@ -2871,7 +2910,7 @@ pub mod tests { state.get_account_by_id(recipient_account_id), Account { program_owner: program_id, - balance: 37, + balance, nonce: Nonce(1), ..Account::default() } @@ -2929,11 +2968,11 @@ pub mod tests { ); let from_esk = [3; 32]; - let from_ss = SharedSecretKey::new(&from_esk, &from_keys.vpk()); + let from_ss = SharedSecretKey::new(from_esk, &from_keys.vpk()); let from_epk = EphemeralPublicKey::from_scalar(from_esk); let to_esk = [3; 32]; - let to_ss = SharedSecretKey::new(&to_esk, &to_keys.vpk()); + let to_ss = SharedSecretKey::new(to_esk, &to_keys.vpk()); let to_epk = EphemeralPublicKey::from_scalar(to_esk); let mut dependencies = HashMap::new(); @@ -3139,7 +3178,7 @@ pub mod tests { /// This test ensures that even if a malicious program tries to perform overflow of balances /// it will not be able to break the balance validation. #[test] - fn malicious_program_cannot_break_balance_validation() { + fn malicious_program_cannot_break_balance_validation_if_not_in_genesis() { let sender_key = PrivateKey::try_new([37; 32]).unwrap(); let sender_id = AccountId::from(&PublicKey::new_from_private_key(&sender_key)); let sender_init_balance: u128 = 10; @@ -3178,7 +3217,7 @@ pub mod tests { let witness_set = public_transaction::WitnessSet::for_message(&message, &[&sender_key]); let tx = PublicTransaction::new(message, witness_set); - let res = state.transition_from_public_transaction(&tx, 1, 0); + let res = state.transition_from_public_transaction(&tx, 2, 0); let expected_total_balance_pre_states = WrappedBalanceSum::from_balances( [sender_init_balance, recipient_init_balance].into_iter(), ) @@ -3232,16 +3271,15 @@ pub mod tests { // Set up parameters for the new account let esk = [3; 32]; - let shared_secret = SharedSecretKey::new(&esk, &private_keys.vpk()); + let shared_secret = SharedSecretKey::new(esk, &private_keys.vpk()); let epk = EphemeralPublicKey::from_scalar(esk); - // Balance to initialize the account with (0 for a new account) - let balance: u128 = 0; + let instruction = authenticated_transfer_core::Instruction::Initialize; // Execute and prove the circuit with the authorized account but no commitment proof let (output, proof) = execute_and_prove( vec![authorized_account], - Program::serialize_instruction(balance).unwrap(), + Program::serialize_instruction(instruction).unwrap(), vec![InputAccountIdentity::PrivateAuthorizedInit { ssk: shared_secret, nsk: private_keys.nsk, @@ -3285,7 +3323,7 @@ pub mod tests { let program = Program::claimer(); let esk = [5; 32]; - let shared_secret = SharedSecretKey::new(&esk, &private_keys.vpk()); + let shared_secret = SharedSecretKey::new(esk, &private_keys.vpk()); let epk = EphemeralPublicKey::from_scalar(esk); let (output, proof) = execute_and_prove( @@ -3335,15 +3373,15 @@ pub mod tests { // Set up parameters for claiming the new account let esk = [3; 32]; - let shared_secret = SharedSecretKey::new(&esk, &private_keys.vpk()); + let shared_secret = SharedSecretKey::new(esk, &private_keys.vpk()); let epk = EphemeralPublicKey::from_scalar(esk); - let balance: u128 = 0; + let instruction = authenticated_transfer_core::Instruction::Initialize; // Step 2: Execute claimer program to claim the account with authentication let (output, proof) = execute_and_prove( vec![authorized_account.clone()], - Program::serialize_instruction(balance).unwrap(), + Program::serialize_instruction(instruction).unwrap(), vec![InputAccountIdentity::PrivateAuthorizedInit { ssk: shared_secret, nsk: private_keys.nsk, @@ -3385,7 +3423,7 @@ pub mod tests { let noop_program = Program::noop(); let esk2 = [4; 32]; - let shared_secret2 = SharedSecretKey::new(&esk2, &private_keys.vpk()); + let shared_secret2 = SharedSecretKey::new(esk2, &private_keys.vpk()); // Step 3: Try to execute noop program with authentication but without initialization let res = execute_and_prove( @@ -3469,7 +3507,7 @@ pub mod tests { vec![private_account], Program::serialize_instruction(instruction).unwrap(), vec![InputAccountIdentity::PrivateAuthorizedUpdate { - ssk: SharedSecretKey::new(&[3; 32], &sender_keys.vpk()), + ssk: SharedSecretKey::new([3; 32], &sender_keys.vpk()), nsk: sender_keys.nsk, membership_proof: (0, vec![]), identifier: 0, @@ -3495,7 +3533,7 @@ pub mod tests { vec![private_account], Program::serialize_instruction(instruction).unwrap(), vec![InputAccountIdentity::PrivateAuthorizedUpdate { - ssk: SharedSecretKey::new(&[3; 32], &sender_keys.vpk()), + ssk: SharedSecretKey::new([3; 32], &sender_keys.vpk()), nsk: sender_keys.nsk, membership_proof: (0, vec![]), identifier: 0, @@ -3542,7 +3580,7 @@ pub mod tests { let instruction = (balance_to_transfer, auth_transfers.id()); let recipient_esk = [3; 32]; - let recipient = SharedSecretKey::new(&recipient_esk, &recipient_keys.vpk()); + let recipient = SharedSecretKey::new(recipient_esk, &recipient_keys.vpk()); let mut dependencies = HashMap::new(); dependencies.insert(auth_transfers.id(), auth_transfers); @@ -3699,7 +3737,7 @@ pub mod tests { let mut state = V03State::new_with_genesis_accounts(&[], vec![], 0).with_test_programs(); let tx = { let esk = [3; 32]; - let shared_secret = SharedSecretKey::new(&esk, &account_keys.vpk()); + let shared_secret = SharedSecretKey::new(esk, &account_keys.vpk()); let epk = EphemeralPublicKey::from_scalar(esk); let instruction = ( @@ -3769,7 +3807,7 @@ pub mod tests { let mut state = V03State::new_with_genesis_accounts(&[], vec![], 0).with_test_programs(); let tx = { let esk = [3; 32]; - let shared_secret = SharedSecretKey::new(&esk, &account_keys.vpk()); + let shared_secret = SharedSecretKey::new(esk, &account_keys.vpk()); let epk = EphemeralPublicKey::from_scalar(esk); let instruction = ( diff --git a/nssa/src/validated_state_diff.rs b/nssa/src/validated_state_diff.rs index 455a13a6..f7044b51 100644 --- a/nssa/src/validated_state_diff.rs +++ b/nssa/src/validated_state_diff.rs @@ -1,14 +1,14 @@ use std::{ - collections::{HashMap, HashSet, VecDeque}, + collections::{HashMap, HashSet}, hash::Hash, }; -use log::debug; use nssa_core::{ BlockId, Commitment, Nullifier, PrivacyPreservingCircuitOutput, Timestamp, account::{Account, AccountId, AccountWithMetadata}, program::{ - ChainedCall, Claim, DEFAULT_PROGRAM_ID, compute_public_authorized_pdas, validate_execution, + ChainedCall, Claim, DEFAULT_PROGRAM_ID, ProgramId, ProgramOutput, + compute_public_authorized_pdas, validate_execution, }, }; @@ -45,237 +45,11 @@ impl ValidatedStateDiff { block_id: BlockId, timestamp: Timestamp, ) -> Result { - let message = tx.message(); - let witness_set = tx.witness_set(); - - // All account_ids must be different - ensure!( - message.account_ids.iter().collect::>().len() == message.account_ids.len(), - NssaError::InvalidInput("Duplicate account_ids found in message".into(),) - ); - - // Check exactly one nonce is provided for each signature - ensure!( - message.nonces.len() == witness_set.signatures_and_public_keys.len(), - NssaError::InvalidInput( - "Mismatch between number of nonces and signatures/public keys".into(), - ) - ); - - // Check the signatures are valid - ensure!( - witness_set.is_valid_for(message), - NssaError::InvalidInput("Invalid signature for given message and public key".into()) - ); - - let signer_account_ids = tx.signer_account_ids(); - // Check nonces corresponds to the current nonces on the public state. - for (account_id, nonce) in signer_account_ids.iter().zip(&message.nonces) { - let current_nonce = state.get_account_by_id(*account_id).nonce; - ensure!( - current_nonce == *nonce, - NssaError::InvalidInput("Nonce mismatch".into()) - ); - } - - // Build pre_states for execution - let input_pre_states: Vec<_> = message - .account_ids - .iter() - .map(|account_id| { - AccountWithMetadata::new( - state.get_account_by_id(*account_id), - signer_account_ids.contains(account_id), - *account_id, - ) - }) - .collect(); - - let mut state_diff: HashMap = HashMap::new(); - - let initial_call = ChainedCall { - program_id: message.program_id, - instruction_data: message.instruction_data.clone(), - pre_states: input_pre_states, - pda_seeds: vec![], - }; - - let mut chained_calls = VecDeque::from_iter([(initial_call, None)]); - let mut chain_calls_counter = 0; - - while let Some((chained_call, caller_program_id)) = chained_calls.pop_front() { - ensure!( - chain_calls_counter <= MAX_NUMBER_CHAINED_CALLS, - NssaError::MaxChainedCallsDepthExceeded - ); - - // Check that the `program_id` corresponds to a deployed program - let Some(program) = state.programs().get(&chained_call.program_id) else { - return Err(NssaError::InvalidInput("Unknown program".into())); - }; - - debug!( - "Program {:?} pre_states: {:?}, instruction_data: {:?}", - chained_call.program_id, chained_call.pre_states, chained_call.instruction_data - ); - let mut program_output = program.execute( - caller_program_id, - &chained_call.pre_states, - &chained_call.instruction_data, - )?; - debug!( - "Program {:?} output: {:?}", - chained_call.program_id, program_output - ); - - let authorized_pdas = - compute_public_authorized_pdas(caller_program_id, &chained_call.pda_seeds); - - let is_authorized = |account_id: &AccountId| { - signer_account_ids.contains(account_id) || authorized_pdas.contains(account_id) - }; - - for pre in &program_output.pre_states { - let account_id = pre.account_id; - // Check that the program output pre_states coincide with the values in the public - // state or with any modifications to those values during the chain of calls. - let expected_pre = state_diff - .get(&account_id) - .cloned() - .unwrap_or_else(|| state.get_account_by_id(account_id)); - ensure!( - pre.account == expected_pre, - InvalidProgramBehaviorError::InconsistentAccountPreState { - account_id, - expected: Box::new(expected_pre), - actual: Box::new(pre.account.clone()) - } - ); - - // Check that authorization flags are consistent with the provided ones or - // authorized by program through the PDA mechanism - let expected_is_authorized = is_authorized(&account_id); - ensure!( - pre.is_authorized == expected_is_authorized, - InvalidProgramBehaviorError::InconsistentAccountAuthorization { - account_id, - expected_authorization: expected_is_authorized, - actual_authorization: pre.is_authorized - } - ); - } - - // Verify that the program output's self_program_id matches the expected program ID. - ensure!( - program_output.self_program_id == chained_call.program_id, - InvalidProgramBehaviorError::MismatchedProgramId { - expected: chained_call.program_id, - actual: program_output.self_program_id - } - ); - - // Verify that the program output's caller_program_id matches the actual caller. - ensure!( - program_output.caller_program_id == caller_program_id, - InvalidProgramBehaviorError::MismatchedCallerProgramId { - expected: caller_program_id, - actual: program_output.caller_program_id, - } - ); - - // Verify execution corresponds to a well-behaved program. - // See the # Programs section for the definition of the `validate_execution` method. - validate_execution( - &program_output.pre_states, - &program_output.post_states, - chained_call.program_id, - ) - .map_err(InvalidProgramBehaviorError::ExecutionValidationFailed)?; - - // Verify validity window - ensure!( - program_output.block_validity_window.is_valid_for(block_id) - && program_output - .timestamp_validity_window - .is_valid_for(timestamp), - NssaError::OutOfValidityWindow - ); - - for (i, post) in program_output.post_states.iter_mut().enumerate() { - let Some(claim) = post.required_claim() else { - continue; - }; - let account_id = program_output.pre_states[i].account_id; - - // The invoked program can only claim accounts with default program id. - ensure!( - post.account().program_owner == DEFAULT_PROGRAM_ID, - InvalidProgramBehaviorError::ClaimedNonDefaultAccount { account_id } - ); - - match claim { - Claim::Authorized => { - // The program can only claim accounts that were authorized by the signer. - ensure!( - is_authorized(&account_id), - InvalidProgramBehaviorError::ClaimedUnauthorizedAccount { account_id } - ); - } - Claim::Pda(seed) => { - // The program can only claim accounts that correspond to the PDAs it is - // authorized to claim. The public-execution path only sees public - // accounts, so the public-PDA derivation is the correct formula here. - let pda = AccountId::for_public_pda(&chained_call.program_id, &seed); - ensure!( - account_id == pda, - InvalidProgramBehaviorError::MismatchedPdaClaim { - expected: pda, - actual: account_id - } - ); - } - } - - post.account_mut().program_owner = chained_call.program_id; - } - - // Update the state diff - for (pre, post) in program_output - .pre_states - .iter() - .zip(program_output.post_states.iter()) - { - state_diff.insert(pre.account_id, post.account().clone()); - } - - for new_call in program_output.chained_calls.into_iter().rev() { - chained_calls.push_front((new_call, Some(chained_call.program_id))); - } - - chain_calls_counter = chain_calls_counter - .checked_add(1) - .expect("we check the max depth at the beginning of the loop"); - } - - // Check that all modified uninitialized accounts where claimed - for (account_id, post) in state_diff.iter().filter_map(|(account_id, post)| { - let pre = state.get_account_by_id(*account_id); - if pre.program_owner != DEFAULT_PROGRAM_ID { - return None; - } - if pre == *post { - return None; - } - Some((*account_id, post)) - }) { - ensure!( - post.program_owner != DEFAULT_PROGRAM_ID, - InvalidProgramBehaviorError::DefaultAccountModifiedWithoutClaim { account_id } - ); - } + let validator = PublicTransactionValidator::new(tx, state, block_id, timestamp); + let state_diff = crate::public_transaction::execute(validator, tx, state)?; Ok(Self(StateDiff { - signer_account_ids, + signer_account_ids: tx.signer_account_ids(), public_diff: state_diff, new_commitments: vec![], new_nullifiers: vec![], @@ -293,63 +67,62 @@ impl ValidatedStateDiff { let witness_set = &tx.witness_set; // 1. Commitments or nullifiers are non empty - if message.new_commitments.is_empty() && message.new_nullifiers.is_empty() { - return Err(NssaError::InvalidInput( + ensure!( + !message.new_commitments.is_empty() || !message.new_nullifiers.is_empty(), + NssaError::InvalidInput( "Empty commitments and empty nullifiers found in message".into(), - )); - } + ) + ); // 2. Check there are no duplicate account_ids in the public_account_ids list. - if n_unique(&message.public_account_ids) != message.public_account_ids.len() { - return Err(NssaError::InvalidInput( - "Duplicate account_ids found in message".into(), - )); - } + ensure!( + n_unique(&message.public_account_ids) == message.public_account_ids.len(), + NssaError::InvalidInput("Duplicate account_ids found in message".into()) + ); // Check there are no duplicate nullifiers in the new_nullifiers list - if n_unique(&message.new_nullifiers) != message.new_nullifiers.len() { - return Err(NssaError::InvalidInput( - "Duplicate nullifiers found in message".into(), - )); - } + ensure!( + n_unique(&message.new_nullifiers) == message.new_nullifiers.len(), + NssaError::InvalidInput("Duplicate nullifiers found in message".into()) + ); // Check there are no duplicate commitments in the new_commitments list - if n_unique(&message.new_commitments) != message.new_commitments.len() { - return Err(NssaError::InvalidInput( - "Duplicate commitments found in message".into(), - )); - } + ensure!( + n_unique(&message.new_commitments) == message.new_commitments.len(), + NssaError::InvalidInput("Duplicate commitments found in message".into()) + ); // 3. Nonce checks and Valid signatures // Check exactly one nonce is provided for each signature - if message.nonces.len() != witness_set.signatures_and_public_keys.len() { - return Err(NssaError::InvalidInput( + ensure!( + message.nonces.len() == witness_set.signatures_and_public_keys.len(), + NssaError::InvalidInput( "Mismatch between number of nonces and signatures/public keys".into(), - )); - } + ) + ); // Check the signatures are valid - if !witness_set.signatures_are_valid_for(message) { - return Err(NssaError::InvalidInput( - "Invalid signature for given message and public key".into(), - )); - } + ensure!( + witness_set.signatures_are_valid_for(message), + NssaError::InvalidInput("Invalid signature for given message and public key".into()) + ); let signer_account_ids = tx.signer_account_ids(); // Check nonces corresponds to the current nonces on the public state. for (account_id, nonce) in signer_account_ids.iter().zip(&message.nonces) { let current_nonce = state.get_account_by_id(*account_id).nonce; - if current_nonce != *nonce { - return Err(NssaError::InvalidInput("Nonce mismatch".into())); - } + ensure!( + current_nonce == *nonce, + NssaError::InvalidInput("Nonce mismatch".into()) + ); } // Verify validity window - if !message.block_validity_window.is_valid_for(block_id) - || !message.timestamp_validity_window.is_valid_for(timestamp) - { - return Err(NssaError::OutOfValidityWindow); - } + ensure!( + message.block_validity_window.is_valid_for(block_id) + && message.timestamp_validity_window.is_valid_for(timestamp), + NssaError::OutOfValidityWindow + ); // Build pre_states for proof verification let public_pre_states: Vec<_> = message @@ -417,6 +190,22 @@ impl ValidatedStateDiff { })) } + pub fn from_public_genesis_transaction( + tx: &PublicTransaction, + state: &V03State, + ) -> Result { + let validator = GenesisPublicTransactionValidator; + let state_diff = crate::public_transaction::execute(validator, tx, state)?; + + Ok(Self(StateDiff { + signer_account_ids: tx.signer_account_ids(), + public_diff: state_diff, + new_commitments: vec![], + new_nullifiers: vec![], + program: None, + })) + } + /// Returns the public account changes produced by this transaction. /// /// Used by callers (e.g. the sequencer) to inspect the diff before committing it, for example @@ -431,6 +220,256 @@ impl ValidatedStateDiff { } } +pub struct PublicTransactionValidator<'tx, 'state> { + tx: &'tx PublicTransaction, + state: &'state V03State, + block_id: BlockId, + timestamp: Timestamp, + chain_calls_counter: usize, +} + +impl<'tx, 'state> PublicTransactionValidator<'tx, 'state> { + pub const fn new( + tx: &'tx PublicTransaction, + state: &'state V03State, + block_id: BlockId, + timestamp: Timestamp, + ) -> Self { + Self { + tx, + state, + block_id, + timestamp, + chain_calls_counter: 0, + } + } +} + +impl crate::public_transaction::Validator for PublicTransactionValidator<'_, '_> { + fn validate_pre_execution(&mut self) -> Result<(), NssaError> { + let message = self.tx.message(); + let witness_set = self.tx.witness_set(); + + // All account_ids must be different + ensure!( + message.account_ids.iter().collect::>().len() == message.account_ids.len(), + NssaError::InvalidInput("Duplicate account_ids found in message".into(),) + ); + + // Check exactly one nonce is provided for each signature + ensure!( + message.nonces.len() == witness_set.signatures_and_public_keys.len(), + NssaError::InvalidInput( + "Mismatch between number of nonces and signatures/public keys".into(), + ) + ); + + // Check the signatures are valid + ensure!( + witness_set.is_valid_for(message), + NssaError::InvalidInput("Invalid signature for given message and public key".into()) + ); + + let signer_account_ids = self.tx.signer_account_ids(); + // Check nonces corresponds to the current nonces on the public state. + for (account_id, nonce) in signer_account_ids.iter().zip(&message.nonces) { + let current_nonce = self.state.get_account_by_id(*account_id).nonce; + ensure!( + current_nonce == *nonce, + NssaError::InvalidInput("Nonce mismatch".into()) + ); + } + + Ok(()) + } + + fn on_chained_call(&mut self) -> Result<(), NssaError> { + self.chain_calls_counter = self + .chain_calls_counter + .checked_add(1) + .ok_or(NssaError::MaxChainedCallsDepthExceeded)?; + ensure!( + self.chain_calls_counter <= MAX_NUMBER_CHAINED_CALLS, + NssaError::MaxChainedCallsDepthExceeded + ); + Ok(()) + } + + fn validate_output( + &mut self, + state_diff: &HashMap, + caller_program_id: Option, + chained_call: &ChainedCall, + program_output: &ProgramOutput, + ) -> Result<(), NssaError> { + let authorized_pdas = + compute_public_authorized_pdas(caller_program_id, &chained_call.pda_seeds); + + let is_authorized = |account_id: &AccountId| { + self.tx.signer_account_ids().contains(account_id) + || authorized_pdas.contains(account_id) + }; + + for pre in &program_output.pre_states { + let account_id = pre.account_id; + // Check that the program output pre_states coincide with the values in the public + // state or with any modifications to those values during the chain of calls. + let expected_pre = state_diff + .get(&account_id) + .cloned() + .unwrap_or_else(|| self.state.get_account_by_id(account_id)); + ensure!( + pre.account == expected_pre, + InvalidProgramBehaviorError::InconsistentAccountPreState { + account_id, + expected: Box::new(expected_pre), + actual: Box::new(pre.account.clone()) + } + ); + + // Check that authorization flags are consistent with the provided ones or + // authorized by program through the PDA mechanism + let expected_is_authorized = is_authorized(&account_id); + ensure!( + pre.is_authorized == expected_is_authorized, + InvalidProgramBehaviorError::InconsistentAccountAuthorization { + account_id, + expected_authorization: expected_is_authorized, + actual_authorization: pre.is_authorized + } + ); + } + + // Verify that the program output's self_program_id matches the expected program ID. + ensure!( + program_output.self_program_id == chained_call.program_id, + InvalidProgramBehaviorError::MismatchedProgramId { + expected: chained_call.program_id, + actual: program_output.self_program_id + } + ); + + // Verify that the program output's caller_program_id matches the actual caller. + ensure!( + program_output.caller_program_id == caller_program_id, + InvalidProgramBehaviorError::MismatchedCallerProgramId { + expected: caller_program_id, + actual: program_output.caller_program_id, + } + ); + + // Verify execution corresponds to a well-behaved program. + // See the # Programs section for the definition of the `validate_execution` method. + validate_execution( + &program_output.pre_states, + &program_output.post_states, + chained_call.program_id, + ) + .map_err(InvalidProgramBehaviorError::ExecutionValidationFailed)?; + + // Verify validity window + ensure!( + program_output + .block_validity_window + .is_valid_for(self.block_id) + && program_output + .timestamp_validity_window + .is_valid_for(self.timestamp), + NssaError::OutOfValidityWindow + ); + + for (i, post) in program_output.post_states.iter().enumerate() { + let Some(claim) = post.required_claim() else { + continue; + }; + let account_id = program_output.pre_states[i].account_id; + + // The invoked program can only claim accounts with default program id. + ensure!( + post.account().program_owner == DEFAULT_PROGRAM_ID, + InvalidProgramBehaviorError::ClaimedNonDefaultAccount { account_id } + ); + + match claim { + Claim::Authorized => { + // The program can only claim accounts that were authorized by the signer. + ensure!( + is_authorized(&account_id), + InvalidProgramBehaviorError::ClaimedUnauthorizedAccount { account_id } + ); + } + Claim::Pda(seed) => { + // The program can only claim accounts that correspond to the PDAs it is + // authorized to claim. + let pda = AccountId::for_public_pda(&chained_call.program_id, &seed); + ensure!( + account_id == pda, + InvalidProgramBehaviorError::MismatchedPdaClaim { + expected: pda, + actual: account_id + } + ); + } + } + } + + Ok(()) + } + + fn validate_post_execution( + &mut self, + state_diff: &HashMap, + ) -> Result<(), NssaError> { + // Check that all modified uninitialized accounts where claimed + for (account_id, post) in state_diff.iter().filter_map(|(account_id, post)| { + let pre = self.state.get_account_by_id(*account_id); + if pre.program_owner != DEFAULT_PROGRAM_ID { + return None; + } + if pre == *post { + return None; + } + Some((*account_id, post)) + }) { + ensure!( + post.program_owner != DEFAULT_PROGRAM_ID, + InvalidProgramBehaviorError::DefaultAccountModifiedWithoutClaim { account_id } + ); + } + + Ok(()) + } +} + +pub struct GenesisPublicTransactionValidator; + +impl crate::public_transaction::Validator for GenesisPublicTransactionValidator { + fn validate_pre_execution(&mut self) -> Result<(), NssaError> { + Ok(()) + } + + fn on_chained_call(&mut self) -> Result<(), NssaError> { + Ok(()) + } + + fn validate_output( + &mut self, + _state_diff: &HashMap, + _caller_program_id: Option, + _chained_call: &ChainedCall, + _program_output: &ProgramOutput, + ) -> Result<(), NssaError> { + Ok(()) + } + + fn validate_post_execution( + &mut self, + _state_diff: &HashMap, + ) -> Result<(), NssaError> { + Ok(()) + } +} + fn check_privacy_preserving_circuit_proof_is_valid( proof: &Proof, public_pre_states: &[AccountWithMetadata], diff --git a/program_methods/guest/Cargo.toml b/program_methods/guest/Cargo.toml index dc2077b7..e0ef5e75 100644 --- a/program_methods/guest/Cargo.toml +++ b/program_methods/guest/Cargo.toml @@ -9,6 +9,7 @@ workspace = true [dependencies] nssa_core.workspace = true +authenticated_transfer_core.workspace = true clock_core.workspace = true token_core.workspace = true token_program.workspace = true diff --git a/program_methods/guest/src/bin/authenticated_transfer.rs b/program_methods/guest/src/bin/authenticated_transfer.rs index 32b69c3a..525fcf2b 100644 --- a/program_methods/guest/src/bin/authenticated_transfer.rs +++ b/program_methods/guest/src/bin/authenticated_transfer.rs @@ -1,3 +1,5 @@ +use authenticated_transfer_core::Instruction; +use clock_core::{CLOCK_01_PROGRAM_ACCOUNT_ID, ClockAccountData}; use nssa_core::{ account::{Account, AccountWithMetadata}, program::{ @@ -8,7 +10,6 @@ use nssa_core::{ /// Initializes a default account under the ownership of this program. fn initialize_account(pre_state: AccountWithMetadata) -> AccountPostState { let account_to_claim = AccountPostState::new_claimed(pre_state.account, Claim::Authorized); - let is_authorized = pre_state.is_authorized; // Continue only if the account to claim has default values assert!( @@ -16,9 +17,6 @@ fn initialize_account(pre_state: AccountWithMetadata) -> AccountPostState { "Account must be uninitialized" ); - // Continue only if the owner authorized this operation - assert!(is_authorized, "Account must be authorized"); - account_to_claim } @@ -61,6 +59,39 @@ fn transfer( vec![sender_post, recipient_post] } +/// Mints `balance` into a new account at genesis (`block_id` == 0). +/// +/// Claims the target account and sets its balance in a single operation. +fn mint( + target: AccountWithMetadata, + clock: AccountWithMetadata, + balance: u128, +) -> Vec { + assert_eq!( + clock.account_id, CLOCK_01_PROGRAM_ACCOUNT_ID, + "Second account must be the clock account" + ); + + let clock_data = ClockAccountData::from_bytes(&clock.account.data.clone().into_inner()); + assert_eq!( + clock_data.block_id, 0, + "Mint can only execute at genesis (block_id must be 0)" + ); + + assert!( + target.account == Account::default(), + "Target account must be uninitialized" + ); + + let mut target_post_account = target.account; + target_post_account.balance = balance; + let target_post = AccountPostState::new_claimed(target_post_account, Claim::Authorized); + + let clock_post = AccountPostState::new(clock.account); + + vec![target_post, clock_post] +} + /// A transfer of balance program. /// To be used both in public and private contexts. fn main() { @@ -70,20 +101,29 @@ fn main() { self_program_id, caller_program_id, pre_states, - instruction: balance_to_move, + instruction, }, instruction_words, - ) = read_nssa_inputs(); + ) = read_nssa_inputs::(); - let post_states = match (pre_states.as_slice(), balance_to_move) { - ([account_to_claim], 0) => { - let post = initialize_account(account_to_claim.clone()); - vec![post] + let post_states = match instruction { + Instruction::Initialize => { + let [account_to_claim] = <[_; 1]>::try_from(pre_states.clone()) + .expect("Initialize requires exactly 1 account"); + vec![initialize_account(account_to_claim)] } - ([sender, recipient], balance_to_move) => { - transfer(sender.clone(), recipient.clone(), balance_to_move) + Instruction::Transfer { + amount: balance_to_move, + } => { + let [sender, recipient] = <[_; 2]>::try_from(pre_states.clone()) + .expect("Transfer requires exactly 2 accounts"); + transfer(sender, recipient, balance_to_move) + } + Instruction::Mint { amount: balance } => { + let [target, clock] = <[_; 2]>::try_from(pre_states.clone()) + .expect("Mint requires exactly 2 accounts: target, clock"); + mint(target, clock, balance) } - _ => panic!("invalid params"), }; ProgramOutput::new( diff --git a/programs/authenticated_transfer/core/Cargo.toml b/programs/authenticated_transfer/core/Cargo.toml new file mode 100644 index 00000000..0331bd64 --- /dev/null +++ b/programs/authenticated_transfer/core/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "authenticated_transfer_core" +version = "0.1.0" +edition = "2024" +license = { workspace = true } + +[lints] +workspace = true + +[dependencies] +serde.workspace = true diff --git a/programs/authenticated_transfer/core/src/lib.rs b/programs/authenticated_transfer/core/src/lib.rs new file mode 100644 index 00000000..ed1121f8 --- /dev/null +++ b/programs/authenticated_transfer/core/src/lib.rs @@ -0,0 +1,29 @@ +//! Core data structures for the Authenticated Transfer Program. + +use serde::{Deserialize, Serialize}; + +/// Instruction type for the Authenticated Transfer program. +#[derive(Serialize, Deserialize)] +pub enum Instruction { + /// Transfer `amount` of native balance from sender to recipient. + /// + /// Required accounts: `[sender, recipient]`. + Transfer { amount: u128 }, + + /// Initialize a new account under the ownership of this program. + /// + /// Required accounts: `[account_to_initialize]`. + Initialize, + + /// Mint `amount` into a new account at genesis (`block_id` == 0). + /// + /// Claims the target account (sets `program_owner` to `authenticated_transfer` program id) + /// and sets its balance in a single operation. + /// + /// Required accounts: `[target_account, clock_account]`. + /// + /// Panics if: + /// - `target_account` is not in the default (uninitialized) state + /// - clock's `block_id` is not 0 + Mint { amount: u128 }, +} diff --git a/sequencer/core/Cargo.toml b/sequencer/core/Cargo.toml index 827c8b2e..ef9db98f 100644 --- a/sequencer/core/Cargo.toml +++ b/sequencer/core/Cargo.toml @@ -15,6 +15,7 @@ storage.workspace = true mempool.workspace = true logos-blockchain-zone-sdk.workspace = true testnet_initial_state.workspace = true +authenticated_transfer_core.workspace = true anyhow.workspace = true serde.workspace = true @@ -30,6 +31,7 @@ rand.workspace = true borsh.workspace = true bytesize.workspace = true url.workspace = true +rocksdb.workspace = true [features] default = [] diff --git a/sequencer/core/src/block_store.rs b/sequencer/core/src/block_store.rs index e85b5d33..ada6d306 100644 --- a/sequencer/core/src/block_store.rs +++ b/sequencer/core/src/block_store.rs @@ -6,9 +6,11 @@ use common::{ block::{Block, BlockMeta, MantleMsgId}, transaction::NSSATransaction, }; +use log::info; use logos_blockchain_zone_sdk::sequencer::SequencerCheckpoint; use nssa::V03State; -use storage::{error::DbError, sequencer::RocksDBIO}; +pub use storage::DbResult; +use storage::sequencer::RocksDBIO; pub struct SequencerStore { dbio: Arc, @@ -19,25 +21,53 @@ pub struct SequencerStore { } impl SequencerStore { + /// Open existing database at the given location. Fails if no database is found. + pub fn open_db(location: &Path, signing_key: nssa::PrivateKey) -> DbResult { + let dbio = Arc::new(RocksDBIO::open(location)?); + let genesis_id = dbio.get_meta_first_block_in_db()?; + let last_id = dbio.latest_block_meta()?.id; + + info!("Preparing block cache"); + let mut tx_hash_to_block_map = HashMap::new(); + for i in genesis_id..=last_id { + let block = dbio + .get_block(i)? + .expect("Block should be present in the database"); + + tx_hash_to_block_map.extend(block_to_transactions_map(&block)); + } + info!( + "Block cache prepared. Total blocks in cache: {}", + tx_hash_to_block_map.len() + ); + + Ok(Self { + dbio, + tx_hash_to_block_map, + genesis_id, + signing_key, + }) + } + /// Starting database at the start of new chain. /// Creates files if necessary. /// /// ATTENTION: Will overwrite genesis block. - pub fn open_db_with_genesis( + pub fn create_db_with_genesis( location: &Path, genesis_block: &Block, genesis_msg_id: MantleMsgId, + genesis_state: &V03State, signing_key: nssa::PrivateKey, - ) -> Result { - let tx_hash_to_block_map = block_to_transactions_map(genesis_block); - - let dbio = Arc::new(RocksDBIO::open_or_create( + ) -> DbResult { + let dbio = Arc::new(RocksDBIO::create( location, genesis_block, genesis_msg_id, + genesis_state, )?); - let genesis_id = dbio.get_meta_first_block_in_db()?; + let tx_hash_to_block_map = block_to_transactions_map(genesis_block); Ok(Self { dbio, @@ -55,16 +85,16 @@ impl SequencerStore { Arc::clone(&self.dbio) } - pub fn get_block_at_id(&self, id: u64) -> Result, DbError> { + pub fn get_block_at_id(&self, id: u64) -> DbResult> { self.dbio.get_block(id) } - pub fn delete_block_at_id(&mut self, block_id: u64) -> Result<()> { - Ok(self.dbio.delete_block(block_id)?) + pub fn delete_block_at_id(&mut self, block_id: u64) -> DbResult<()> { + self.dbio.delete_block(block_id) } - pub fn mark_block_as_finalized(&mut self, block_id: u64) -> Result<()> { - Ok(self.dbio.mark_block_as_finalized(block_id)?) + pub fn mark_block_as_finalized(&mut self, block_id: u64) -> DbResult<()> { + self.dbio.mark_block_as_finalized(block_id) } /// Returns the transaction corresponding to the given hash, if it exists in the blockchain. @@ -86,8 +116,8 @@ impl SequencerStore { ); } - pub fn latest_block_meta(&self) -> Result { - Ok(self.dbio.latest_block_meta()?) + pub fn latest_block_meta(&self) -> DbResult { + self.dbio.latest_block_meta() } #[must_use] @@ -100,8 +130,8 @@ impl SequencerStore { &self.signing_key } - pub fn get_all_blocks(&self) -> impl Iterator> { - self.dbio.get_all_blocks().map(|res| Ok(res?)) + pub fn get_all_blocks(&self) -> impl Iterator> { + self.dbio.get_all_blocks() } pub(crate) fn update( @@ -109,16 +139,15 @@ impl SequencerStore { block: &Block, msg_id: MantleMsgId, state: &V03State, - ) -> Result<()> { + ) -> DbResult<()> { let new_transactions_map = block_to_transactions_map(block); self.dbio.atomic_update(block, msg_id, state)?; self.tx_hash_to_block_map.extend(new_transactions_map); Ok(()) } - #[must_use] - pub fn get_nssa_state(&self) -> Option { - self.dbio.get_nssa_state().ok() + pub fn get_nssa_state(&self) -> DbResult { + self.dbio.get_nssa_state() } pub fn get_zone_checkpoint(&self) -> Result> { @@ -172,9 +201,14 @@ mod tests { let genesis_block = genesis_block_hashable_data.into_pending_block(&signing_key, [0; 32]); // Start an empty node store - let mut node_store = - SequencerStore::open_db_with_genesis(path, &genesis_block, [0; 32], signing_key) - .unwrap(); + let mut node_store = SequencerStore::create_db_with_genesis( + path, + &genesis_block, + [0; 32], + &testnet_initial_state::initial_state(), + signing_key, + ) + .unwrap(); let tx = common::test_utils::produce_dummy_empty_transaction(); let block = common::test_utils::produce_dummy_block(1, None, vec![tx.clone()]); @@ -207,9 +241,14 @@ mod tests { let genesis_block = genesis_block_hashable_data.into_pending_block(&signing_key, [0; 32]); let genesis_hash = genesis_block.header.hash; - let node_store = - SequencerStore::open_db_with_genesis(path, &genesis_block, [0; 32], signing_key) - .unwrap(); + let node_store = SequencerStore::create_db_with_genesis( + path, + &genesis_block, + [0; 32], + &testnet_initial_state::initial_state(), + signing_key, + ) + .unwrap(); // Verify that initially the latest block hash equals genesis hash let latest_meta = node_store.latest_block_meta().unwrap(); @@ -232,9 +271,14 @@ mod tests { }; let genesis_block = genesis_block_hashable_data.into_pending_block(&signing_key, [0; 32]); - let mut node_store = - SequencerStore::open_db_with_genesis(path, &genesis_block, [0; 32], signing_key) - .unwrap(); + let mut node_store = SequencerStore::create_db_with_genesis( + path, + &genesis_block, + [0; 32], + &testnet_initial_state::initial_state(), + signing_key, + ) + .unwrap(); // Add a new block let tx = common::test_utils::produce_dummy_empty_transaction(); @@ -268,9 +312,14 @@ mod tests { }; let genesis_block = genesis_block_hashable_data.into_pending_block(&signing_key, [0; 32]); - let mut node_store = - SequencerStore::open_db_with_genesis(path, &genesis_block, [0; 32], signing_key) - .unwrap(); + let mut node_store = SequencerStore::create_db_with_genesis( + path, + &genesis_block, + [0; 32], + &testnet_initial_state::initial_state(), + signing_key, + ) + .unwrap(); // Add a new block with Pending status let tx = common::test_utils::produce_dummy_empty_transaction(); @@ -297,4 +346,49 @@ mod tests { common::block::BedrockStatus::Finalized )); } + + #[test] + fn open_existing_db_caches_transactions() { + let temp_dir = tempdir().unwrap(); + let path = temp_dir.path(); + + let signing_key = sequencer_sign_key_for_testing(); + + let genesis_block_hashable_data = HashableBlockData { + block_id: 0, + prev_block_hash: HashType([0; 32]), + timestamp: 0, + transactions: vec![], + }; + + let genesis_block = genesis_block_hashable_data.into_pending_block(&signing_key, [0; 32]); + let tx = common::test_utils::produce_dummy_empty_transaction(); + { + // Create a scope to drop the first store after creating the db + let mut node_store = SequencerStore::create_db_with_genesis( + path, + &genesis_block, + [0; 32], + &testnet_initial_state::initial_state(), + signing_key.clone(), + ) + .unwrap(); + + // Add a new block + let block = common::test_utils::produce_dummy_block(1, None, vec![tx.clone()]); + node_store + .update( + &block, + [1; 32], + &V03State::new_with_genesis_accounts(&[], vec![], 0), + ) + .unwrap(); + } + + // Re-open the store and verify that the transaction is still retrievable (which means it + // was cached correctly) + let node_store = SequencerStore::open_db(path, signing_key).unwrap(); + let retrieved_tx = node_store.get_transaction_by_hash(tx.hash()); + assert_eq!(Some(tx), retrieved_tx); + } } diff --git a/sequencer/core/src/config.rs b/sequencer/core/src/config.rs index b33dd694..bdac163b 100644 --- a/sequencer/core/src/config.rs +++ b/sequencer/core/src/config.rs @@ -10,17 +10,25 @@ use bytesize::ByteSize; use common::config::BasicAuth; use humantime_serde; use logos_blockchain_core::mantle::ops::channel::ChannelId; +use nssa::AccountId; use serde::{Deserialize, Serialize}; -use testnet_initial_state::{PrivateAccountPublicInitialData, PublicAccountPublicInitialData}; use url::Url; +/// A transaction to be applied at genesis to supply initial balances. +#[derive(Clone, Debug, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum GenesisTransaction { + SupplyPublicAccount { + account_id: AccountId, + balance: u128, + }, +} + // TODO: Provide default values #[derive(Clone, Serialize, Deserialize)] pub struct SequencerConfig { /// Home dir of sequencer storage. pub home: PathBuf, - /// Genesis id. - pub genesis_id: u64, /// If `True`, then adds random sequence of bytes to genesis block. pub is_genesis_random: bool, /// Maximum number of user transactions in a block (excludes the mandatory clock transaction). @@ -41,10 +49,9 @@ pub struct SequencerConfig { pub signing_key: [u8; 32], /// Bedrock configuration options. pub bedrock_config: BedrockConfig, - #[serde(skip_serializing_if = "Option::is_none")] - pub initial_public_accounts: Option>, - #[serde(skip_serializing_if = "Option::is_none")] - pub initial_private_accounts: Option>, + /// Genesis configuration. + #[serde(default)] + pub genesis: Vec, } #[derive(Clone, Serialize, Deserialize)] diff --git a/sequencer/core/src/lib.rs b/sequencer/core/src/lib.rs index bce8151f..1c35aa8c 100644 --- a/sequencer/core/src/lib.rs +++ b/sequencer/core/src/lib.rs @@ -1,22 +1,22 @@ use std::{path::Path, time::Instant}; use anyhow::{Context as _, Result, anyhow}; -#[cfg(feature = "testnet")] -use common::PINATA_BASE58; use common::{ HashType, block::{BedrockStatus, Block, HashableBlockData}, transaction::{NSSATransaction, clock_invocation}, }; -use config::SequencerConfig; +use config::{GenesisTransaction, SequencerConfig}; use log::{error, info, warn}; use logos_blockchain_key_management_system_service::keys::{ED25519_SECRET_KEY_SIZE, Ed25519Key}; use mempool::{MemPool, MemPoolHandle}; #[cfg(feature = "mock")] pub use mock::SequencerCoreWithMockClients; -use nssa::V03State; +use nssa::{ + AccountId, PublicTransaction, ValidatedStateDiff, program::Program, public_transaction::Message, +}; +use nssa_core::GENESIS_BLOCK_ID; pub use storage::error::DbError; -use testnet_initial_state::initial_state; use crate::{ block_publisher::{BlockPublisherTrait, ZoneSdkPublisher}, @@ -48,34 +48,68 @@ impl SequencerCore { pub async fn start_from_config( config: SequencerConfig, ) -> (Self, MemPoolHandle) { - let hashable_data = HashableBlockData { - block_id: config.genesis_id, - transactions: vec![], - prev_block_hash: HashType([0; 32]), - timestamp: 0, - }; - let signing_key = nssa::PrivateKey::try_new(config.signing_key).unwrap(); - let genesis_parent_msg_id = [0; 32]; - let genesis_block = hashable_data.into_pending_block(&signing_key, genesis_parent_msg_id); + let db_path = config.home.join("rocksdb"); let bedrock_signing_key = load_or_create_signing_key(&config.home.join("bedrock_signing_key")) .expect("Failed to load or create bedrock signing key"); - // TODO: Remove msg_id from BlockMeta — it is no longer needed now that - // zone-sdk manages L1 settlement state via its own checkpoint. - let genesis_msg_id = [0_u8; 32]; + let (store, state, genesis_block) = + match SequencerStore::open_db(&db_path, signing_key.clone()) { + Ok(store) => { + let state = store + .get_nssa_state() + .expect("Failed to read state from store"); + let genesis_block = store + .get_block_at_id(store.genesis_id()) + .expect("Failed to read genesis block from store") + .expect("Genesis block not found in store"); + (store, state, genesis_block) + } + Err(DbError::RocksDbError { error, .. }) + if error.kind() == rocksdb::ErrorKind::InvalidArgument + && error.to_string().contains("does not exist") => + { + warn!( + "Database not found at {}, starting from genesis", + db_path.display() + ); + + // TODO: Remove msg_id from BlockMeta — it is no longer needed now that + // zone-sdk manages L1 settlement state via its own checkpoint. + let genesis_msg_id = [0; 32]; + let genesis_parent_msg_id = [0; 32]; + let (genesis_state, genesis_txs) = build_genesis_state(&config); + + let hashable_data = HashableBlockData { + block_id: GENESIS_BLOCK_ID, + transactions: genesis_txs, + prev_block_hash: HashType([0; 32]), + timestamp: 0, + }; + let genesis_block = + hashable_data.into_pending_block(&signing_key, genesis_parent_msg_id); + + let store = SequencerStore::create_db_with_genesis( + &db_path, + &genesis_block, + genesis_msg_id, + &genesis_state, + signing_key, + ) + .expect("Failed to create database with genesis block"); + + (store, genesis_state, genesis_block) + } + Err(err) => { + panic!( + "Failed to open database at {} with error: {err:#?}", + db_path.display() + ); + } + }; - // Sequencer should panic if unable to open db, - // as fixing this issue may require actions non-native to program scope - let store = SequencerStore::open_db_with_genesis( - &config.home.join("rocksdb"), - &genesis_block, - genesis_msg_id, - signing_key, - ) - .unwrap(); let latest_block_meta = store .latest_block_meta() .expect("Failed to read latest block meta from store"); @@ -125,63 +159,6 @@ impl SequencerCore { error!("Failed to publish genesis block: {err:#}"); } - #[cfg_attr(not(feature = "testnet"), allow(unused_mut))] - let mut state = if let Some(state) = store.get_nssa_state() { - info!("Found local database. Loading state and pending blocks from it."); - state - } else { - info!( - "No database found when starting the sequencer. Creating a fresh new with the initial data" - ); - - let initial_private_accounts: Option< - Vec<(nssa_core::Commitment, nssa_core::Nullifier)>, - > = config.initial_private_accounts.clone().map(|accounts| { - accounts - .iter() - .map(|init_comm_data| { - let npk = &init_comm_data.npk; - let account_id = nssa::AccountId::from((npk, 0)); - - let mut acc = init_comm_data.account.clone(); - - acc.program_owner = - nssa::program::Program::authenticated_transfer_program().id(); - - ( - nssa_core::Commitment::new(&account_id, &acc), - nssa_core::Nullifier::for_account_initialization(&account_id), - ) - }) - .collect() - }); - - let init_accs: Option> = config - .initial_public_accounts - .clone() - .map(|initial_accounts| { - initial_accounts - .iter() - .map(|acc_data| (acc_data.account_id, acc_data.balance)) - .collect() - }); - - // If initial commitments or accounts are present in config, need to construct state - // from them - if initial_private_accounts.is_some() || init_accs.is_some() { - V03State::new_with_genesis_accounts( - &init_accs.unwrap_or_default(), - initial_private_accounts.unwrap_or_default(), - genesis_block.header.timestamp, - ) - } else { - initial_state() - } - }; - - #[cfg(feature = "testnet")] - state.add_pinata_program(PINATA_BASE58.parse().unwrap()); - let (mempool, mempool_handle) = MemPool::new(config.mempool_max_size); let sequencer_core = Self { @@ -359,7 +336,7 @@ impl SequencerCore { Ok(self .store .get_all_blocks() - .collect::>>()? + .collect::>>()? .into_iter() .filter(|block| matches!(block.bedrock_status, BedrockStatus::Pending)) .collect()) @@ -376,6 +353,61 @@ impl SequencerCore { } } +/// Builds the initial genesis state from `testnet_initial_state` plus configured genesis +/// transactions. Returns the final state and the list of [`NSSATransaction`]s that should be +/// committed to the genesis block so external observers can replay them. +fn build_genesis_state(config: &SequencerConfig) -> (nssa::V03State, Vec) { + #[cfg(not(feature = "testnet"))] + let mut state = testnet_initial_state::initial_state(); + + #[cfg(feature = "testnet")] + let mut state = testnet_initial_state::initial_state_testnet(); + + let mut genesis_txs = Vec::new(); + + for genesis_tx in &config.genesis { + let (tx, diff) = match genesis_tx { + GenesisTransaction::SupplyPublicAccount { + account_id, + balance, + } => build_supply_public_account_genesis_transaction(&state, account_id, *balance), + }; + state.apply_state_diff(diff); + genesis_txs.push(tx); + } + + let clock_tx = clock_invocation(0); + let diff = ValidatedStateDiff::from_public_transaction(&clock_tx, &state, GENESIS_BLOCK_ID, 0) + .expect("Failed to execute clock transaction for genesis block"); + state.apply_state_diff(diff); + genesis_txs.push(clock_tx.into()); + + (state, genesis_txs) +} + +fn build_supply_public_account_genesis_transaction( + state: &nssa::V03State, + account_id: &AccountId, + balance: u128, +) -> (NSSATransaction, ValidatedStateDiff) { + let authenticated_transfer_id = Program::authenticated_transfer_program().id(); + + let message = Message::try_new( + authenticated_transfer_id, + vec![*account_id, nssa::CLOCK_01_PROGRAM_ACCOUNT_ID], + vec![], + authenticated_transfer_core::Instruction::Mint { amount: balance }, + ) + .expect("Failed to serialize genesis mint instruction"); + let witness_set = nssa::public_transaction::WitnessSet::for_message(&message, &[]); + + let tx = PublicTransaction::new(message, witness_set); + let diff = ValidatedStateDiff::from_public_genesis_transaction(&tx, state) + .expect("Failed to execute genesis mint public transaction"); + + (tx.into(), diff) +} + /// Load signing key from file or generate a new one if it doesn't exist. fn load_or_create_signing_key(path: &Path) -> Result { if path.exists() { @@ -406,14 +438,19 @@ mod tests { use std::{pin::pin, time::Duration}; use common::{ + HashType, + block::HashableBlockData, test_utils::sequencer_sign_key_for_testing, transaction::{NSSATransaction, clock_invocation}, }; use logos_blockchain_core::mantle::ops::channel::ChannelId; use mempool::MemPoolHandle; + use tempfile::tempdir; use testnet_initial_state::{initial_accounts, initial_pub_accounts_private_keys}; use crate::{ + block_store::SequencerStore, + build_genesis_state, config::{BedrockConfig, SequencerConfig}, mock::SequencerCoreWithMockClients, }; @@ -424,7 +461,6 @@ mod tests { SequencerConfig { home, - genesis_id: 1, is_genesis_random: false, max_num_tx_in_block: 10, max_block_size: bytesize::ByteSize::mib(1), @@ -437,8 +473,7 @@ mod tests { auth: None, }, retry_pending_blocks_timeout: Duration::from_mins(4), - initial_public_accounts: None, - initial_private_accounts: None, + genesis: vec![], } } @@ -475,7 +510,7 @@ mod tests { let (sequencer, _mempool_handle) = SequencerCoreWithMockClients::start_from_config(config.clone()).await; - assert_eq!(sequencer.chain_height, config.genesis_id); + assert_eq!(sequencer.chain_height, 1); assert_eq!(sequencer.sequencer_config.max_num_tx_in_block, 10); let acc1_account_id = initial_accounts()[0].account_id; @@ -488,6 +523,57 @@ mod tests { assert_eq!(20000, balance_acc_2); } + #[tokio::test] + async fn start_from_config_opens_existing_db_if_it_exists() { + let config = setup_sequencer_config(); + let temp_dir = tempdir().unwrap(); + let mut config = config; + config.home = temp_dir.path().to_path_buf(); + + let signing_key = nssa::PrivateKey::try_new(config.signing_key).unwrap(); + let (genesis_state, genesis_txs) = build_genesis_state(&config); + let genesis_hashable_data = HashableBlockData { + block_id: 1, + transactions: genesis_txs, + prev_block_hash: HashType([0; 32]), + timestamp: 0, + }; + let genesis_block = genesis_hashable_data.into_pending_block(&signing_key, [0; 32]); + + let expected_msg_id = [7; 32]; + SequencerStore::create_db_with_genesis( + &config.home.join("rocksdb"), + &genesis_block, + expected_msg_id, + &genesis_state, + signing_key, + ) + .unwrap(); + + let (sequencer, _mempool_handle) = + SequencerCoreWithMockClients::start_from_config(config).await; + let latest_meta = sequencer.store.latest_block_meta().unwrap(); + + assert_eq!(latest_meta.msg_id, expected_msg_id); + assert_eq!(sequencer.chain_height, 1); + } + + #[should_panic(expected = "Failed to open database")] + #[tokio::test] + async fn start_from_config_panics_when_db_open_returns_non_not_found_error() { + let mut config = setup_sequencer_config(); + let temp_dir = tempdir().unwrap(); + config.home = temp_dir.path().to_path_buf(); + + let db_path = config.home.join("rocksdb"); + + std::fs::create_dir_all(&config.home).unwrap(); + // Force RocksDB open to fail with an IO error by placing a file at DB path. + std::fs::write(&db_path, b"not-a-directory").unwrap(); + + let _ = SequencerCoreWithMockClients::start_from_config(config).await; + } + #[test] fn transaction_pre_check_pass() { let tx = common::test_utils::produce_dummy_empty_transaction(); @@ -906,51 +992,6 @@ mod tests { ); } - #[tokio::test] - async fn start_from_config_uses_db_height_not_config_genesis() { - let mut config = setup_sequencer_config(); - let original_genesis_id = config.genesis_id; - - // Step 1: Create initial database and produce some blocks - let expected_chain_height = { - let (mut sequencer, mempool_handle) = - SequencerCoreWithMockClients::start_from_config(config.clone()).await; - - // Verify we start with the genesis_id from config - assert_eq!(sequencer.chain_height, original_genesis_id); - - // Produce multiple blocks to advance chain height - let tx = common::test_utils::produce_dummy_empty_transaction(); - mempool_handle.push(tx).await.unwrap(); - sequencer.produce_new_block().await.unwrap(); - - let tx = common::test_utils::produce_dummy_empty_transaction(); - mempool_handle.push(tx).await.unwrap(); - sequencer.produce_new_block().await.unwrap(); - - // Return the current chain height (should be genesis_id + 2) - sequencer.chain_height - }; - - // Step 2: Modify the config to have a DIFFERENT genesis_id - let different_genesis_id = original_genesis_id + 100; - config.genesis_id = different_genesis_id; - - // Step 3: Restart sequencer with the modified config (different genesis_id) - let (sequencer, _mempool_handle) = - SequencerCoreWithMockClients::start_from_config(config.clone()).await; - - // Step 4: Verify chain_height comes from database, NOT from the new config.genesis_id - assert_eq!( - sequencer.chain_height, expected_chain_height, - "Chain height should be loaded from database metadata, not config.genesis_id" - ); - assert_ne!( - sequencer.chain_height, different_genesis_id, - "Chain height should NOT match the modified config.genesis_id" - ); - } - #[tokio::test] async fn user_tx_that_chain_calls_clock_is_dropped() { let (mut sequencer, mempool_handle) = common_setup().await; @@ -1028,81 +1069,4 @@ mod tests { "Block production should abort when clock account data is corrupted" ); } - - #[tokio::test] - async fn genesis_private_account_cannot_be_re_initialized() { - use common::transaction::NSSATransaction; - use nssa::{ - Account, - privacy_preserving_transaction::{ - PrivacyPreservingTransaction, circuit::execute_and_prove, message::Message, - witness_set::WitnessSet, - }, - program::Program, - }; - use nssa_core::{ - InputAccountIdentity, SharedSecretKey, - account::AccountWithMetadata, - encryption::{EphemeralPublicKey, EphemeralSecretKey, ViewingPublicKey}, - }; - use testnet_initial_state::PrivateAccountPublicInitialData; - - let nsk: nssa_core::NullifierSecretKey = [7; 32]; - let npk = nssa_core::NullifierPublicKey::from(&nsk); - let vsk: EphemeralSecretKey = [8; 32]; - let vpk = ViewingPublicKey::from_scalar(vsk); - - let genesis_account = Account { - program_owner: Program::authenticated_transfer_program().id(), - ..Account::default() - }; - - // Start a sequencer from config with a preconfigured private genesis account - let mut config = setup_sequencer_config(); - config.initial_private_accounts = Some(vec![PrivateAccountPublicInitialData { - npk, - account: genesis_account, - }]); - - let (mut sequencer, _mempool_handle) = - SequencerCoreWithMockClients::start_from_config(config).await; - - // Attempt to re-initialize the same genesis account via a privacy-preserving transaction - let esk = [9; 32]; - let shared_secret = SharedSecretKey::new(&esk, &vpk); - let epk = EphemeralPublicKey::from_scalar(esk); - - let (output, proof) = execute_and_prove( - vec![AccountWithMetadata::new( - Account::default(), - true, - (&npk, 0), - )], - Program::serialize_instruction(0_u128).unwrap(), - vec![InputAccountIdentity::PrivateAuthorizedInit { - ssk: shared_secret, - nsk, - identifier: 0, - }], - &Program::authenticated_transfer_program().into(), - ) - .unwrap(); - - let message = - Message::try_from_circuit_output(vec![], vec![], vec![(npk, vpk, epk)], output) - .unwrap(); - - let witness_set = WitnessSet::for_message(&message, proof, &[]); - let tx = NSSATransaction::PrivacyPreserving(PrivacyPreservingTransaction::new( - message, - witness_set, - )); - - let result = tx.execute_check_on_state(&mut sequencer.state, 2, 0); - - assert!( - result.is_err_and(|e| e.to_string().contains("Nullifier already seen")), - "re-initializing a genesis private account must be rejected by the sequencer" - ); - } } diff --git a/storage/src/cells/shared_cells.rs b/storage/src/cells/shared_cells.rs index 2a76edf3..1efd0e35 100644 --- a/storage/src/cells/shared_cells.rs +++ b/storage/src/cells/shared_cells.rs @@ -63,6 +63,14 @@ impl SimpleStorableCell for FirstBlockCell { impl SimpleReadableCell for FirstBlockCell {} +impl SimpleWritableCell for FirstBlockCell { + fn value_constructor(&self) -> DbResult> { + borsh::to_vec(&self).map_err(|err| { + DbError::borsh_cast_message(err, Some("Failed to serialize first block id".to_owned())) + }) + } +} + #[derive(Debug, BorshSerialize, BorshDeserialize)] pub struct BlockCell(pub Block); diff --git a/storage/src/indexer/mod.rs b/storage/src/indexer/mod.rs index 75538835..4cc63c89 100644 --- a/storage/src/indexer/mod.rs +++ b/storage/src/indexer/mod.rs @@ -4,7 +4,7 @@ use common::{ block::Block, transaction::{NSSATransaction, clock_invocation}, }; -use nssa::V03State; +use nssa::{GENESIS_BLOCK_ID, V03State, ValidatedStateDiff}; use rocksdb::{ BoundColumnFamily, ColumnFamilyDescriptor, DBWithThreadMode, MultiThreaded, Options, }; @@ -56,11 +56,8 @@ impl DBIO for RocksDBIO { } impl RocksDBIO { - pub fn open_or_create( - path: &Path, - genesis_block: &Block, - initial_state: &V03State, - ) -> DbResult { + // TODO: Remove initial state when it will be included in genesis block + pub fn open_or_create(path: &Path, initial_state: &V03State) -> DbResult { let mut cf_opts = Options::default(); cf_opts.set_max_write_buffer_number(16); // ToDo: Add more column families for different data @@ -87,17 +84,9 @@ impl RocksDBIO { let dbio = Self { db }; - let is_start_set = dbio.get_meta_is_first_block_set()?; - if !is_start_set { - let block_id = genesis_block.header.block_id; - dbio.put_meta_last_block_in_db(block_id)?; - dbio.put_meta_first_block_in_db_batch(genesis_block)?; - dbio.put_meta_is_first_block_set()?; - - // First breakpoint setup - dbio.put_breakpoint(0, initial_state)?; - dbio.put_meta_last_breakpoint_id(0)?; - } + // First breakpoint setup + dbio.put_breakpoint(0, initial_state)?; + dbio.put_meta_last_breakpoint_id(0)?; Ok(dbio) } @@ -155,86 +144,107 @@ impl RocksDBIO { // State pub fn calculate_state_for_id(&self, block_id: u64) -> DbResult { - let last_block = self.get_meta_last_block_in_db()?; + let last_block_id = self.get_meta_last_block_id_in_db()?.unwrap_or(0); - if block_id <= last_block { - let br_id = closest_breakpoint_id(block_id); - let mut breakpoint = self.get_breakpoint(br_id)?; + if block_id > last_block_id { + return Err(DbError::db_interaction_error( + "Block on this id not found".to_owned(), + )); + } - // ToDo: update it to handle any genesis id - // right now works correctly only if genesis_id < BREAKPOINT_INTERVAL - let start = if br_id != 0 { - u64::from(BREAKPOINT_INTERVAL) - .checked_mul(br_id) - .expect("Reached maximum breakpoint id") - } else { - self.get_meta_first_block_in_db()? - }; + let br_id = closest_breakpoint_id(block_id); + let mut breakpoint = self.get_breakpoint(br_id)?; - for block in self.get_block_batch_seq( - start.checked_add(1).expect("Will be lesser that u64::MAX")..=block_id, - )? { - let expected_clock = - NSSATransaction::Public(clock_invocation(block.header.timestamp)); + let start = u64::from(BREAKPOINT_INTERVAL) + .checked_mul(br_id) + .expect("Reached maximum breakpoint id"); - if let Some((clock_tx, user_txs)) = block.body.transactions.split_last() { - if *clock_tx != expected_clock { - return Err(DbError::db_interaction_error( - "Last transaction in block must be the clock invocation for the block timestamp" - .to_owned(), - )); - } - for transaction in user_txs { - transaction - .clone() - .transaction_stateless_check() - .map_err(|err| { - DbError::db_interaction_error(format!( - "transaction pre check failed with err {err:?}" - )) - })? - .execute_check_on_state( - &mut breakpoint, - block.header.block_id, - block.header.timestamp, - ) - .map_err(|err| { - DbError::db_interaction_error(format!( - "transaction execution failed with err {err:?}" - )) - })?; - } + for mut block in self.get_block_batch_seq( + start.checked_add(1).expect("Will be lesser that u64::MAX")..=block_id, + )? { + let expected_clock = NSSATransaction::Public(clock_invocation(block.header.timestamp)); - let NSSATransaction::Public(clock_public_tx) = clock_tx else { - return Err(DbError::db_interaction_error( - "Clock invocation must be a public transaction".to_owned(), - )); + let clock_tx = block.body.transactions.pop().ok_or_else(|| { + DbError::db_interaction_error( + "Block must contain clock transaction at the end".to_owned(), + ) + })?; + let user_txs = block.body.transactions; + + if clock_tx != expected_clock { + return Err(DbError::db_interaction_error( + "Last transaction in block must be the clock invocation for the block timestamp" + .to_owned(), + )); + } + for transaction in user_txs { + let is_genesis = block.header.block_id == GENESIS_BLOCK_ID; + if is_genesis { + let genesis_tx = match transaction { + NSSATransaction::Public(public_tx) => public_tx, + NSSATransaction::PrivacyPreserving(_) + | NSSATransaction::ProgramDeployment(_) => { + return Err(DbError::db_interaction_error( + "Genesis block should contain only public transactions".to_owned(), + )); + } }; - - breakpoint - .transition_from_public_transaction( - clock_public_tx, + let state_diff = ValidatedStateDiff::from_public_genesis_transaction( + &genesis_tx, + &breakpoint, + ) + .map_err(|err| { + DbError::db_interaction_error(format!( + "Failed to create state diff from genesis transaction with err {err:?}" + )) + })?; + breakpoint.apply_state_diff(state_diff); + } else { + transaction + .transaction_stateless_check() + .map_err(|err| { + DbError::db_interaction_error(format!( + "transaction pre check failed with err {err:?}" + )) + })? + .execute_check_on_state( + &mut breakpoint, block.header.block_id, block.header.timestamp, ) .map_err(|err| { DbError::db_interaction_error(format!( - "clock transaction execution failed with err {err:?}" + "transaction execution failed with err {err:?}" )) })?; } } - Ok(breakpoint) - } else { - Err(DbError::db_interaction_error( - "Block on this id not found".to_owned(), - )) + let NSSATransaction::Public(clock_public_tx) = clock_tx else { + return Err(DbError::db_interaction_error( + "Clock invocation must be a public transaction".to_owned(), + )); + }; + + breakpoint + .transition_from_public_transaction( + &clock_public_tx, + block.header.block_id, + block.header.timestamp, + ) + .map_err(|err| { + DbError::db_interaction_error(format!( + "clock transaction execution failed with err {err:?}" + )) + })?; } + + Ok(breakpoint) } pub fn final_state(&self) -> DbResult { - self.calculate_state_for_id(self.get_meta_last_block_in_db()?) + let last_block_id = self.get_meta_last_block_id_in_db()?.unwrap_or(0); + self.calculate_state_for_id(last_block_id) } } @@ -255,7 +265,7 @@ mod tests { use super::*; fn genesis_block() -> Block { - common::test_utils::produce_dummy_block(1, None, vec![]) + produce_dummy_block(1, None, vec![]) } fn acc1_sign_key() -> nssa::PrivateKey { @@ -281,7 +291,6 @@ mod tests { let dbio = RocksDBIO::open_or_create( temdir_path, - &genesis_block(), &nssa::V03State::new_with_genesis_accounts( &[(acc1(), 10000), (acc2(), 20000)], vec![], @@ -290,21 +299,21 @@ mod tests { ) .unwrap(); - let last_id = dbio.get_meta_last_block_in_db().unwrap(); - let first_id = dbio.get_meta_first_block_in_db().unwrap(); + let last_id = dbio.get_meta_last_block_id_in_db().unwrap(); + let first_id = dbio.get_meta_first_block_id_in_db().unwrap(); let is_first_set = dbio.get_meta_is_first_block_set().unwrap(); let last_observed_l1_header = dbio.get_meta_last_observed_l1_lib_header_in_db().unwrap(); let last_br_id = dbio.get_meta_last_breakpoint_id().unwrap(); - let last_block = dbio.get_block(1).unwrap().unwrap(); + let last_block = dbio.get_block(1).unwrap(); let breakpoint = dbio.get_breakpoint(0).unwrap(); let final_state = dbio.final_state().unwrap(); - assert_eq!(last_id, 1); - assert_eq!(first_id, 1); + assert_eq!(last_id, None); + assert_eq!(first_id, None); assert_eq!(last_observed_l1_header, None); - assert!(is_first_set); - assert_eq!(last_br_id, 0); - assert_eq!(last_block.header.hash, genesis_block().header.hash); + assert!(!is_first_set); + assert_eq!(last_br_id, Some(0)); // TODO: Will be None after we remove hardcoded testnet state + assert!(last_block.is_none()); assert_eq!( breakpoint.get_account_by_id(acc1()), final_state.get_account_by_id(acc1()) @@ -322,7 +331,6 @@ mod tests { let dbio = RocksDBIO::open_or_create( temdir_path, - &genesis_block(), &nssa::V03State::new_with_genesis_accounts( &[(acc1(), 10000), (acc2(), 20000)], vec![], @@ -331,7 +339,10 @@ mod tests { ) .unwrap(); - let prev_hash = genesis_block().header.hash; + let genesis_block = genesis_block(); + dbio.put_block(&genesis_block, [0; 32]).unwrap(); + + let prev_hash = genesis_block.header.hash; let from = acc1(); let to = acc2(); let sign_key = acc1_sign_key(); @@ -342,8 +353,8 @@ mod tests { dbio.put_block(&block, [1; 32]).unwrap(); - let last_id = dbio.get_meta_last_block_in_db().unwrap(); - let first_id = dbio.get_meta_first_block_in_db().unwrap(); + let last_id = dbio.get_meta_last_block_id_in_db().unwrap().unwrap(); + let first_id = dbio.get_meta_first_block_id_in_db().unwrap(); let last_observed_l1_header = dbio .get_meta_last_observed_l1_lib_header_in_db() .unwrap() @@ -355,11 +366,11 @@ mod tests { let final_state = dbio.final_state().unwrap(); assert_eq!(last_id, 2); - assert_eq!(first_id, 1); + assert_eq!(first_id, Some(1)); assert_eq!(last_observed_l1_header, [1; 32]); assert!(is_first_set); - assert_eq!(last_br_id, 0); - assert_ne!(last_block.header.hash, genesis_block().header.hash); + assert_eq!(last_br_id, Some(0)); + assert_eq!(last_block.header.hash, block.header.hash); assert_eq!( breakpoint.get_account_by_id(acc1()).balance - final_state.get_account_by_id(acc1()).balance, @@ -379,7 +390,6 @@ mod tests { let dbio = RocksDBIO::open_or_create( temdir_path, - &genesis_block(), &nssa::V03State::new_with_genesis_accounts( &[(acc1(), 10000), (acc2(), 20000)], vec![], @@ -392,11 +402,11 @@ mod tests { let to = acc2(); let sign_key = acc1_sign_key(); - for i in 1..=BREAKPOINT_INTERVAL { - let last_id = dbio.get_meta_last_block_in_db().unwrap(); - let last_block = dbio.get_block(last_id).unwrap().unwrap(); - - let prev_hash = last_block.header.hash; + for i in 1..=BREAKPOINT_INTERVAL + 1 { + let prev_hash = dbio.get_meta_last_block_id_in_db().unwrap().map(|last_id| { + let last_block = dbio.get_block(last_id).unwrap().unwrap(); + last_block.header.hash + }); let transfer_tx = common::test_utils::create_transaction_native_token_transfer( from, @@ -405,12 +415,12 @@ mod tests { 1, &sign_key, ); - let block = produce_dummy_block((i + 1).into(), Some(prev_hash), vec![transfer_tx]); + let block = produce_dummy_block(i.into(), prev_hash, vec![transfer_tx]); dbio.put_block(&block, [i; 32]).unwrap(); } - let last_id = dbio.get_meta_last_block_in_db().unwrap(); - let first_id = dbio.get_meta_first_block_in_db().unwrap(); + let last_id = dbio.get_meta_last_block_id_in_db().unwrap().unwrap(); + let first_id = dbio.get_meta_first_block_id_in_db().unwrap(); let is_first_set = dbio.get_meta_is_first_block_set().unwrap(); let last_br_id = dbio.get_meta_last_breakpoint_id().unwrap(); let last_block = dbio.get_block(last_id).unwrap().unwrap(); @@ -419,19 +429,19 @@ mod tests { let final_state = dbio.final_state().unwrap(); assert_eq!(last_id, 101); - assert_eq!(first_id, 1); + assert_eq!(first_id, Some(1)); assert!(is_first_set); - assert_eq!(last_br_id, 1); + assert_eq!(last_br_id, Some(1)); assert_ne!(last_block.header.hash, genesis_block().header.hash); assert_eq!( prev_breakpoint.get_account_by_id(acc1()).balance - final_state.get_account_by_id(acc1()).balance, - 100 + 101 ); assert_eq!( final_state.get_account_by_id(acc2()).balance - prev_breakpoint.get_account_by_id(acc2()).balance, - 100 + 101 ); assert_eq!( breakpoint.get_account_by_id(acc1()).balance @@ -452,7 +462,6 @@ mod tests { let dbio = RocksDBIO::open_or_create( temdir_path, - &genesis_block(), &nssa::V03State::new_with_genesis_accounts( &[(acc1(), 10000), (acc2(), 20000)], vec![], @@ -465,31 +474,27 @@ mod tests { let to = acc2(); let sign_key = acc1_sign_key(); - let last_id = dbio.get_meta_last_block_in_db().unwrap(); - let last_block = dbio.get_block(last_id).unwrap().unwrap(); - - let prev_hash = last_block.header.hash; let transfer_tx = common::test_utils::create_transaction_native_token_transfer(from, 0, to, 1, &sign_key); - let block = produce_dummy_block(2, Some(prev_hash), vec![transfer_tx]); + let block = produce_dummy_block(1, None, vec![transfer_tx]); let control_hash1 = block.header.hash; dbio.put_block(&block, [1; 32]).unwrap(); - let last_id = dbio.get_meta_last_block_in_db().unwrap(); + let last_id = dbio.get_meta_last_block_id_in_db().unwrap().unwrap(); let last_block = dbio.get_block(last_id).unwrap().unwrap(); let prev_hash = last_block.header.hash; let transfer_tx = common::test_utils::create_transaction_native_token_transfer(from, 1, to, 1, &sign_key); - let block = produce_dummy_block(3, Some(prev_hash), vec![transfer_tx]); + let block = produce_dummy_block(2, Some(prev_hash), vec![transfer_tx]); let control_hash2 = block.header.hash; dbio.put_block(&block, [2; 32]).unwrap(); - let last_id = dbio.get_meta_last_block_in_db().unwrap(); + let last_id = dbio.get_meta_last_block_id_in_db().unwrap().unwrap(); let last_block = dbio.get_block(last_id).unwrap().unwrap(); let prev_hash = last_block.header.hash; @@ -498,10 +503,10 @@ mod tests { let control_tx_hash1 = transfer_tx.hash(); - let block = produce_dummy_block(4, Some(prev_hash), vec![transfer_tx]); + let block = produce_dummy_block(3, Some(prev_hash), vec![transfer_tx]); dbio.put_block(&block, [3; 32]).unwrap(); - let last_id = dbio.get_meta_last_block_in_db().unwrap(); + let last_id = dbio.get_meta_last_block_id_in_db().unwrap().unwrap(); let last_block = dbio.get_block(last_id).unwrap().unwrap(); let prev_hash = last_block.header.hash; @@ -510,7 +515,7 @@ mod tests { let control_tx_hash2 = transfer_tx.hash(); - let block = produce_dummy_block(5, Some(prev_hash), vec![transfer_tx]); + let block = produce_dummy_block(4, Some(prev_hash), vec![transfer_tx]); dbio.put_block(&block, [4; 32]).unwrap(); let control_block_id1 = dbio.get_block_id_by_hash(control_hash1.0).unwrap().unwrap(); @@ -524,10 +529,10 @@ mod tests { .unwrap() .unwrap(); - assert_eq!(control_block_id1, 2); - assert_eq!(control_block_id2, 3); - assert_eq!(control_block_id3, 4); - assert_eq!(control_block_id4, 5); + assert_eq!(control_block_id1, 1); + assert_eq!(control_block_id2, 2); + assert_eq!(control_block_id3, 3); + assert_eq!(control_block_id4, 4); } #[test] @@ -539,7 +544,6 @@ mod tests { let dbio = RocksDBIO::open_or_create( temdir_path, - &genesis_block(), &nssa::V03State::new_with_genesis_accounts( &[(acc1(), 10000), (acc2(), 20000)], vec![], @@ -552,56 +556,52 @@ mod tests { let to = acc2(); let sign_key = acc1_sign_key(); - let last_id = dbio.get_meta_last_block_in_db().unwrap(); - let last_block = dbio.get_block(last_id).unwrap().unwrap(); - - let prev_hash = last_block.header.hash; let transfer_tx = common::test_utils::create_transaction_native_token_transfer(from, 0, to, 1, &sign_key); - let block = produce_dummy_block(2, Some(prev_hash), vec![transfer_tx]); + let block = produce_dummy_block(1, None, vec![transfer_tx]); block_res.push(block.clone()); dbio.put_block(&block, [1; 32]).unwrap(); - let last_id = dbio.get_meta_last_block_in_db().unwrap(); + let last_id = dbio.get_meta_last_block_id_in_db().unwrap().unwrap(); let last_block = dbio.get_block(last_id).unwrap().unwrap(); let prev_hash = last_block.header.hash; let transfer_tx = common::test_utils::create_transaction_native_token_transfer(from, 1, to, 1, &sign_key); - let block = produce_dummy_block(3, Some(prev_hash), vec![transfer_tx]); + let block = produce_dummy_block(2, Some(prev_hash), vec![transfer_tx]); block_res.push(block.clone()); dbio.put_block(&block, [2; 32]).unwrap(); - let last_id = dbio.get_meta_last_block_in_db().unwrap(); + let last_id = dbio.get_meta_last_block_id_in_db().unwrap().unwrap(); let last_block = dbio.get_block(last_id).unwrap().unwrap(); let prev_hash = last_block.header.hash; let transfer_tx = common::test_utils::create_transaction_native_token_transfer(from, 2, to, 1, &sign_key); - let block = produce_dummy_block(4, Some(prev_hash), vec![transfer_tx]); + let block = produce_dummy_block(3, Some(prev_hash), vec![transfer_tx]); block_res.push(block.clone()); dbio.put_block(&block, [3; 32]).unwrap(); - let last_id = dbio.get_meta_last_block_in_db().unwrap(); + let last_id = dbio.get_meta_last_block_id_in_db().unwrap().unwrap(); let last_block = dbio.get_block(last_id).unwrap().unwrap(); let prev_hash = last_block.header.hash; let transfer_tx = common::test_utils::create_transaction_native_token_transfer(from, 3, to, 1, &sign_key); - let block = produce_dummy_block(5, Some(prev_hash), vec![transfer_tx]); + let block = produce_dummy_block(4, Some(prev_hash), vec![transfer_tx]); block_res.push(block.clone()); dbio.put_block(&block, [4; 32]).unwrap(); let block_hashes_mem: Vec<[u8; 32]> = block_res.into_iter().map(|bl| bl.header.hash.0).collect(); - // Get blocks before ID 6 (i.e., starting from 5 going backwards), limit 4 - // This should return blocks 5, 4, 3, 2 in descending order - let mut batch_res = dbio.get_block_batch(Some(6), 4).unwrap(); + // Get blocks before ID 5 (i.e., starting from 4 going backwards), limit 4 + // This should return blocks 4, 3, 2, 1 in descending order + let mut batch_res = dbio.get_block_batch(Some(5), 4).unwrap(); batch_res.reverse(); // Reverse to match ascending order for comparison let block_hashes_db: Vec<[u8; 32]> = @@ -611,9 +611,9 @@ mod tests { let block_hashes_mem_limited = &block_hashes_mem[1..]; - // Get blocks before ID 6, limit 3 - // This should return blocks 5, 4, 3 in descending order - let mut batch_res_limited = dbio.get_block_batch(Some(6), 3).unwrap(); + // Get blocks before ID 5, limit 3 + // This should return blocks 4, 3, 2 in descending order + let mut batch_res_limited = dbio.get_block_batch(Some(5), 3).unwrap(); batch_res_limited.reverse(); // Reverse to match ascending order for comparison let block_hashes_db_limited: Vec<[u8; 32]> = batch_res_limited @@ -629,7 +629,7 @@ mod tests { .map(|block| block.header.block_id) .collect::>(); - assert_eq!(block_batch_ids, vec![1, 2, 3, 4, 5]); + assert_eq!(block_batch_ids, vec![1, 2, 3, 4]); } #[test] @@ -639,7 +639,6 @@ mod tests { let dbio = RocksDBIO::open_or_create( temdir_path, - &genesis_block(), &nssa::V03State::new_with_genesis_accounts( &[(acc1(), 10000), (acc2(), 20000)], vec![], @@ -654,10 +653,6 @@ mod tests { let mut tx_hash_res = vec![]; - let last_id = dbio.get_meta_last_block_in_db().unwrap(); - let last_block = dbio.get_block(last_id).unwrap().unwrap(); - - let prev_hash = last_block.header.hash; let transfer_tx1 = common::test_utils::create_transaction_native_token_transfer(from, 0, to, 1, &sign_key); let transfer_tx2 = @@ -665,11 +660,11 @@ mod tests { tx_hash_res.push(transfer_tx1.hash().0); tx_hash_res.push(transfer_tx2.hash().0); - let block = produce_dummy_block(2, Some(prev_hash), vec![transfer_tx1, transfer_tx2]); + let block = produce_dummy_block(1, None, vec![transfer_tx1, transfer_tx2]); dbio.put_block(&block, [1; 32]).unwrap(); - let last_id = dbio.get_meta_last_block_in_db().unwrap(); + let last_id = dbio.get_meta_last_block_id_in_db().unwrap().unwrap(); let last_block = dbio.get_block(last_id).unwrap().unwrap(); let prev_hash = last_block.header.hash; @@ -680,11 +675,11 @@ mod tests { tx_hash_res.push(transfer_tx1.hash().0); tx_hash_res.push(transfer_tx2.hash().0); - let block = produce_dummy_block(3, Some(prev_hash), vec![transfer_tx1, transfer_tx2]); + let block = produce_dummy_block(2, Some(prev_hash), vec![transfer_tx1, transfer_tx2]); dbio.put_block(&block, [2; 32]).unwrap(); - let last_id = dbio.get_meta_last_block_in_db().unwrap(); + let last_id = dbio.get_meta_last_block_id_in_db().unwrap().unwrap(); let last_block = dbio.get_block(last_id).unwrap().unwrap(); let prev_hash = last_block.header.hash; @@ -695,11 +690,11 @@ mod tests { tx_hash_res.push(transfer_tx1.hash().0); tx_hash_res.push(transfer_tx2.hash().0); - let block = produce_dummy_block(4, Some(prev_hash), vec![transfer_tx1, transfer_tx2]); + let block = produce_dummy_block(3, Some(prev_hash), vec![transfer_tx1, transfer_tx2]); dbio.put_block(&block, [3; 32]).unwrap(); - let last_id = dbio.get_meta_last_block_in_db().unwrap(); + let last_id = dbio.get_meta_last_block_id_in_db().unwrap().unwrap(); let last_block = dbio.get_block(last_id).unwrap().unwrap(); let prev_hash = last_block.header.hash; @@ -707,7 +702,7 @@ mod tests { common::test_utils::create_transaction_native_token_transfer(from, 6, to, 1, &sign_key); tx_hash_res.push(transfer_tx.hash().0); - let block = produce_dummy_block(5, Some(prev_hash), vec![transfer_tx]); + let block = produce_dummy_block(4, Some(prev_hash), vec![transfer_tx]); dbio.put_block(&block, [4; 32]).unwrap(); diff --git a/storage/src/indexer/read_multiple.rs b/storage/src/indexer/read_multiple.rs index 866fc7b0..d91e9627 100644 --- a/storage/src/indexer/read_multiple.rs +++ b/storage/src/indexer/read_multiple.rs @@ -12,7 +12,10 @@ impl RocksDBIO { before_id.saturating_sub(1) } else { // Get the latest block ID - self.get_meta_last_block_in_db()? + let Some(last) = self.get_meta_last_block_id_in_db()? else { + return Ok(vec![]); // No blocks in the database + }; + last }; for i in 0..limit { diff --git a/storage/src/indexer/read_once.rs b/storage/src/indexer/read_once.rs index 8ab7fd23..6e79adc4 100644 --- a/storage/src/indexer/read_once.rs +++ b/storage/src/indexer/read_once.rs @@ -12,12 +12,14 @@ use crate::{ impl RocksDBIO { // Meta - pub fn get_meta_first_block_in_db(&self) -> DbResult { - self.get::(()).map(|cell| cell.0) + pub fn get_meta_first_block_id_in_db(&self) -> DbResult> { + self.get_opt::(()) + .map(|opt| opt.map(|cell| cell.0)) } - pub fn get_meta_last_block_in_db(&self) -> DbResult { - self.get::(()).map(|cell| cell.0) + pub fn get_meta_last_block_id_in_db(&self) -> DbResult> { + self.get_opt::(()) + .map(|opt| opt.map(|cell| cell.0)) } pub fn get_meta_last_observed_l1_lib_header_in_db(&self) -> DbResult> { @@ -29,8 +31,9 @@ impl RocksDBIO { Ok(self.get_opt::(())?.is_some()) } - pub fn get_meta_last_breakpoint_id(&self) -> DbResult { - self.get::(()).map(|cell| cell.0) + pub fn get_meta_last_breakpoint_id(&self) -> DbResult> { + self.get_opt::(()) + .map(|opt| opt.map(|cell| cell.0)) } // Block diff --git a/storage/src/indexer/write_atomic.rs b/storage/src/indexer/write_atomic.rs index 9b661f3b..7e05791f 100644 --- a/storage/src/indexer/write_atomic.rs +++ b/storage/src/indexer/write_atomic.rs @@ -4,8 +4,8 @@ use rocksdb::WriteBatch; use super::{BREAKPOINT_INTERVAL, Block, DbError, DbResult, RocksDBIO}; use crate::{ - DB_META_FIRST_BLOCK_IN_DB_KEY, DBIO as _, - cells::shared_cells::{FirstBlockSetCell, LastBlockCell}, + DBIO as _, + cells::shared_cells::{FirstBlockCell, FirstBlockSetCell, LastBlockCell}, indexer::indexer_cells::{ AccNumTxCell, BlockHashToBlockIdMapCell, LastBreakpointIdCell, LastObservedL1LibHeaderCell, TxHashToBlockIdMapCell, @@ -143,28 +143,12 @@ impl RocksDBIO { // Meta - pub fn put_meta_first_block_in_db_batch(&self, block: &Block) -> DbResult<()> { - let cf_meta = self.meta_column(); - self.db - .put_cf( - &cf_meta, - borsh::to_vec(&DB_META_FIRST_BLOCK_IN_DB_KEY).map_err(|err| { - DbError::borsh_cast_message( - err, - Some("Failed to serialize DB_META_FIRST_BLOCK_IN_DB_KEY".to_owned()), - ) - })?, - borsh::to_vec(&block.header.block_id).map_err(|err| { - DbError::borsh_cast_message( - err, - Some("Failed to serialize first block id".to_owned()), - ) - })?, - ) - .map_err(|rerr| DbError::rocksdb_cast_message(rerr, None))?; - - self.put_block(block, [0; 32])?; - Ok(()) + pub fn put_meta_first_block_in_db_batch( + &self, + block: &Block, + write_batch: &mut WriteBatch, + ) -> DbResult<()> { + self.put_batch(&FirstBlockCell(block.header.block_id), (), write_batch) } pub fn put_meta_last_block_in_db_batch( @@ -199,7 +183,7 @@ impl RocksDBIO { pub fn put_block(&self, block: &Block, l1_lib_header: [u8; 32]) -> DbResult<()> { let cf_block = self.block_column(); - let last_curr_block = self.get_meta_last_block_in_db()?; + let last_curr_block = self.get_meta_last_block_id_in_db()?.unwrap_or(0); let mut write_batch = WriteBatch::default(); write_batch.put_cf( @@ -216,6 +200,10 @@ impl RocksDBIO { self.put_meta_last_block_in_db_batch(block.header.block_id, &mut write_batch)?; self.put_meta_last_observed_l1_lib_header_in_db_batch(l1_lib_header, &mut write_batch)?; } + if last_curr_block == 0 { + self.put_meta_first_block_in_db_batch(block, &mut write_batch)?; + self.put_meta_is_first_block_set_batch(&mut write_batch)?; + } self.put_block_id_by_hash_batch( block.header.hash.into(), diff --git a/storage/src/indexer/write_non_atomic.rs b/storage/src/indexer/write_non_atomic.rs index 505360fa..7ddab1dd 100644 --- a/storage/src/indexer/write_non_atomic.rs +++ b/storage/src/indexer/write_non_atomic.rs @@ -42,9 +42,10 @@ impl RocksDBIO { } pub fn put_next_breakpoint(&self) -> DbResult<()> { - let last_block = self.get_meta_last_block_in_db()?; + let last_block = self.get_meta_last_block_id_in_db()?.unwrap_or(0); let next_breakpoint_id = self .get_meta_last_breakpoint_id()? + .unwrap_or(0) .checked_add(1) .expect("Breakpoint Id will be lesser than u64::MAX"); let block_to_break_id = next_breakpoint_id diff --git a/storage/src/sequencer/mod.rs b/storage/src/sequencer/mod.rs index 537d198d..be5e5cfe 100644 --- a/storage/src/sequencer/mod.rs +++ b/storage/src/sequencer/mod.rs @@ -42,36 +42,26 @@ impl DBIO for RocksDBIO { } impl RocksDBIO { - pub fn open_or_create( + pub fn open(path: &Path) -> DbResult { + let db_opts = Options::default(); + Self::open_inner(path, &db_opts) + } + + pub fn create( path: &Path, genesis_block: &Block, genesis_msg_id: MantleMsgId, + genesis_state: &V03State, ) -> DbResult { - let mut cf_opts = Options::default(); - cf_opts.set_max_write_buffer_number(16); - // ToDo: Add more column families for different data - let cfb = ColumnFamilyDescriptor::new(CF_BLOCK_NAME, cf_opts.clone()); - let cfmeta = ColumnFamilyDescriptor::new(CF_META_NAME, cf_opts.clone()); - let cfstate = ColumnFamilyDescriptor::new(CF_NSSA_STATE_NAME, cf_opts.clone()); - let mut db_opts = Options::default(); db_opts.create_missing_column_families(true); db_opts.create_if_missing(true); - let db = DBWithThreadMode::::open_cf_descriptors( - &db_opts, - path, - vec![cfb, cfmeta, cfstate], - ) - .map_err(|err| DbError::RocksDbError { - error: err, - additional_info: Some("Failed to open or create DB".to_owned()), - })?; - - let dbio = Self { db }; + let dbio = Self::open_inner(path, &db_opts)?; let is_start_set = dbio.get_meta_is_first_block_set()?; if !is_start_set { let block_id = genesis_block.header.block_id; + // TODO: Shouldn't this be atomic (batched)? dbio.put_meta_first_block_in_db(genesis_block, genesis_msg_id)?; dbio.put_meta_is_first_block_set()?; dbio.put_meta_last_block_in_db(block_id)?; @@ -81,11 +71,35 @@ impl RocksDBIO { hash: genesis_block.header.hash, msg_id: genesis_msg_id, })?; + dbio.put_nssa_state_in_db(genesis_state)?; } Ok(dbio) } + fn open_inner(path: &Path, db_opts: &Options) -> DbResult { + let mut cf_opts = Options::default(); + cf_opts.set_max_write_buffer_number(16); + + // ToDo: Add more column families for different data + let cfb = ColumnFamilyDescriptor::new(CF_BLOCK_NAME, cf_opts.clone()); + let cfmeta = ColumnFamilyDescriptor::new(CF_META_NAME, cf_opts.clone()); + let cfstate = ColumnFamilyDescriptor::new(CF_NSSA_STATE_NAME, cf_opts.clone()); + + let db = DBWithThreadMode::::open_cf_descriptors( + db_opts, + path, + vec![cfb, cfmeta, cfstate], + ) + .map_err(|err| DbError::RocksDbError { + error: err, + additional_info: Some("Failed to open or create DB".to_owned()), + })?; + + let dbio = Self { db }; + Ok(dbio) + } + pub fn destroy(path: &Path) -> DbResult<()> { let mut cf_opts = Options::default(); cf_opts.set_max_write_buffer_number(16); @@ -135,7 +149,15 @@ impl RocksDBIO { Ok(self.get_opt::(())?.is_some()) } - pub fn put_nssa_state_in_db(&self, state: &V03State, batch: &mut WriteBatch) -> DbResult<()> { + pub fn put_nssa_state_in_db(&self, state: &V03State) -> DbResult<()> { + self.put(&NSSAStateCellRef(state), ()) + } + + pub fn put_nssa_state_in_db_batch( + &self, + state: &V03State, + batch: &mut WriteBatch, + ) -> DbResult<()> { self.put_batch(&NSSAStateCellRef(state), (), batch) } @@ -366,7 +388,7 @@ impl RocksDBIO { let block_id = block.header.block_id; let mut batch = WriteBatch::default(); self.put_block(block, msg_id, false, &mut batch)?; - self.put_nssa_state_in_db(state, &mut batch)?; + self.put_nssa_state_in_db_batch(state, &mut batch)?; self.db.write(batch).map_err(|rerr| { DbError::rocksdb_cast_message( rerr, diff --git a/test_program_methods/guest/Cargo.toml b/test_program_methods/guest/Cargo.toml index 46edeb61..ca8cdc1d 100644 --- a/test_program_methods/guest/Cargo.toml +++ b/test_program_methods/guest/Cargo.toml @@ -9,6 +9,7 @@ workspace = true [dependencies] nssa_core.workspace = true +authenticated_transfer_core.workspace = true clock_core.workspace = true risc0-zkvm.workspace = true diff --git a/test_program_methods/guest/src/bin/chain_caller.rs b/test_program_methods/guest/src/bin/chain_caller.rs index 5c124bed..ac25301b 100644 --- a/test_program_methods/guest/src/bin/chain_caller.rs +++ b/test_program_methods/guest/src/bin/chain_caller.rs @@ -1,3 +1,4 @@ +use authenticated_transfer_core::Instruction as AuthTransferInstruction; use nssa_core::program::{ AccountPostState, ChainedCall, PdaSeed, ProgramId, ProgramInput, ProgramOutput, read_nssa_inputs, @@ -25,7 +26,7 @@ fn main() { return; }; - let instruction_data = to_vec(&balance).unwrap(); + let instruction_data = to_vec(&AuthTransferInstruction::Transfer { amount: balance }).unwrap(); let mut running_recipient_pre = recipient_pre.clone(); let mut running_sender_pre = sender_pre.clone(); diff --git a/test_program_methods/guest/src/bin/flash_swap_callback.rs b/test_program_methods/guest/src/bin/flash_swap_callback.rs index 251833bb..ca596163 100644 --- a/test_program_methods/guest/src/bin/flash_swap_callback.rs +++ b/test_program_methods/guest/src/bin/flash_swap_callback.rs @@ -63,7 +63,10 @@ fn main() { // Mark the receiver as authorized since it will be PDA-authorized in this chained call. let mut receiver_authorized = receiver_pre.clone(); receiver_authorized.is_authorized = true; - let transfer_instruction = risc0_zkvm::serde::to_vec(&instruction.amount) + let transfer_instruction = + risc0_zkvm::serde::to_vec(&authenticated_transfer_core::Instruction::Transfer { + amount: instruction.amount, + }) .expect("transfer instruction serialization"); chained_calls.push(ChainedCall { diff --git a/test_program_methods/guest/src/bin/flash_swap_initiator.rs b/test_program_methods/guest/src/bin/flash_swap_initiator.rs index 27d1f317..c6a76ebd 100644 --- a/test_program_methods/guest/src/bin/flash_swap_initiator.rs +++ b/test_program_methods/guest/src/bin/flash_swap_initiator.rs @@ -123,7 +123,10 @@ fn main() { let mut vault_authorized = vault_pre.clone(); vault_authorized.is_authorized = true; let transfer_instruction = - risc0_zkvm::serde::to_vec(&amount_out).expect("transfer instruction serialization"); + risc0_zkvm::serde::to_vec(&authenticated_transfer_core::Instruction::Transfer { + amount: amount_out, + }) + .expect("transfer instruction serialization"); let call_1 = ChainedCall { program_id: token_program_id, pre_states: vec![vault_authorized, receiver_pre.clone()], diff --git a/test_program_methods/guest/src/bin/malicious_authorization_changer.rs b/test_program_methods/guest/src/bin/malicious_authorization_changer.rs index f7aba4a0..894f22bf 100644 --- a/test_program_methods/guest/src/bin/malicious_authorization_changer.rs +++ b/test_program_methods/guest/src/bin/malicious_authorization_changer.rs @@ -32,7 +32,8 @@ fn main() { ..sender.clone() }; - let instruction_data = to_vec(&balance).unwrap(); + let instruction_data = + to_vec(&authenticated_transfer_core::Instruction::Transfer { amount: balance }).unwrap(); let chained_call = ChainedCall { program_id: transfer_program_id, diff --git a/testnet_initial_state/src/lib.rs b/testnet_initial_state/src/lib.rs index f6f1e288..3e9e7af0 100644 --- a/testnet_initial_state/src/lib.rs +++ b/testnet_initial_state/src/lib.rs @@ -1,6 +1,7 @@ use common::PINATA_BASE58; use key_protocol::key_management::{ KeyChain, + key_tree::chain_index::ChainIndex, secret_holders::{PrivateKeyHolder, SecretSpendingKey}, }; use nssa::{Account, AccountId, Data, PrivateKey, PublicKey, V03State}; @@ -97,6 +98,7 @@ pub struct PublicAccountPrivateInitialData { pub struct PrivateAccountPrivateInitialData { pub account: nssa_core::account::Account, pub key_chain: KeyChain, + pub chain_index: Option, pub identifier: nssa_core::Identifier, } @@ -156,6 +158,7 @@ pub fn initial_priv_accounts_private_keys() -> Vec Vec FfiAccountListEntry { + account_id: FfiBytes32::from_account_id(account_id), + is_public: true, + }, + AccountIdWithPrivacy::Private(account_id) => FfiAccountListEntry { + account_id: FfiBytes32::from_account_id(account_id), + is_public: false, + }, + }) + .collect::>(); let count = entries.len(); @@ -508,3 +488,168 @@ pub unsafe extern "C" fn wallet_ffi_free_account_data(account: *mut FfiAccount) } } } + +/// Import a public account private key into wallet storage. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `private_key_hex`: Hex-encoded private key string +/// +/// # Returns +/// - `Success` on successful import +/// - Error code on failure +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `private_key_hex` must be a valid pointer to a null-terminated C string +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_import_public_account( + handle: *mut WalletHandle, + private_key_hex: *const c_char, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + let private_key_hex = match c_str_to_string(private_key_hex, "private_key_hex") { + Ok(value) => value, + Err(e) => return e, + }; + + let private_key = match nssa::PrivateKey::from_str(&private_key_hex) { + Ok(value) => value, + Err(e) => { + print_error(format!("Invalid public account private key: {e}")); + return WalletFfiError::InvalidKeyValue; + } + }; + + let mut wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + print_error(format!("Failed to lock wallet: {e}")); + return WalletFfiError::InternalError; + } + }; + + wallet + .storage_mut() + .key_chain_mut() + .add_imported_public_account(private_key); + + match wallet.store_persistent_data() { + Ok(()) => WalletFfiError::Success, + Err(e) => { + print_error(format!("Failed to save wallet after public import: {e}")); + WalletFfiError::StorageError + } + } +} + +/// Import a private account keychain and account state into wallet storage. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `key_chain_json`: JSON-encoded `key_protocol::key_management::KeyChain` +/// - `chain_index`: Optional chain index string (for example `/0/1`, `NULL` if unknown) +/// - `identifier`: Identifier for this private account as little-endian u128 bytes +/// - `account_state_json`: JSON-encoded `wallet::account::HumanReadableAccount` +/// +/// # Returns +/// - `Success` on successful import +/// - Error code on failure +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `key_chain_json` must be a valid pointer to a null-terminated C string +/// - `identifier` must be a valid pointer to a `FfiU128` struct +/// - `account_state_json` must be a valid pointer to a null-terminated C string +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_import_private_account( + handle: *mut WalletHandle, + key_chain_json: *const c_char, + chain_index: *const c_char, + identifier: *const FfiU128, + account_state_json: *const c_char, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if identifier.is_null() { + print_error("Null pointer for identifier"); + return WalletFfiError::NullPointer; + } + + let key_chain_json = match c_str_to_string(key_chain_json, "key_chain_json") { + Ok(value) => value, + Err(e) => return e, + }; + + let account_state_json = match c_str_to_string(account_state_json, "account_state_json") { + Ok(value) => value, + Err(e) => return e, + }; + + let key_chain: KeyChain = match serde_json::from_str(&key_chain_json) { + Ok(value) => value, + Err(e) => { + print_error(format!("Invalid key chain JSON: {e}")); + return WalletFfiError::SerializationError; + } + }; + + let account_state: HumanReadableAccount = match serde_json::from_str(&account_state_json) { + Ok(value) => value, + Err(e) => { + print_error(format!("Invalid account state JSON: {e}")); + return WalletFfiError::SerializationError; + } + }; + + let account = nssa::Account::from(account_state); + + let mut wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + print_error(format!("Failed to lock wallet: {e}")); + return WalletFfiError::InternalError; + } + }; + + let chain_index = if chain_index.is_null() { + None + } else { + let chain_index_path = match c_str_to_string(chain_index, "chain_index") { + Ok(value) => value, + Err(e) => return e, + }; + + let parsed_chain_index = match ChainIndex::from_str(&chain_index_path) { + Ok(value) => value, + Err(e) => { + print_error(format!("Invalid chain index string: {e}")); + return WalletFfiError::InvalidTypeConversion; + } + }; + + Some(parsed_chain_index) + }; + + let identifier = u128::from_le_bytes(unsafe { (*identifier).data }); + + wallet + .storage_mut() + .key_chain_mut() + .add_imported_private_account(key_chain, chain_index, identifier, account); + + match wallet.store_persistent_data() { + Ok(()) => WalletFfiError::Success, + Err(e) => { + print_error(format!("Failed to save wallet after private import: {e}")); + WalletFfiError::StorageError + } + } +} diff --git a/wallet-ffi/src/error.rs b/wallet-ffi/src/error.rs index a8c345b5..6afbffcc 100644 --- a/wallet-ffi/src/error.rs +++ b/wallet-ffi/src/error.rs @@ -4,6 +4,7 @@ /// Error codes returned by FFI functions. #[repr(C)] +// #[must_use] #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum WalletFfiError { /// Operation completed successfully. diff --git a/wallet-ffi/src/keys.rs b/wallet-ffi/src/keys.rs index 0471f255..b676ffab 100644 --- a/wallet-ffi/src/keys.rs +++ b/wallet-ffi/src/keys.rs @@ -116,12 +116,11 @@ pub unsafe extern "C" fn wallet_ffi_get_private_account_keys( let account_id = AccountId::new(unsafe { (*account_id).data }); - let Some((key_chain, _account, _identifier)) = - wallet.storage().user_data.get_private_account(account_id) - else { + let Some(acc) = wallet.storage().key_chain().private_account(account_id) else { print_error("Private account not found in wallet"); return WalletFfiError::AccountNotFound; }; + let key_chain = acc.key_chain; // NPK is a 32-byte array let npk_bytes = key_chain.nullifier_public_key.0; diff --git a/wallet-ffi/src/lib.rs b/wallet-ffi/src/lib.rs index d84bf5a3..16943d3e 100644 --- a/wallet-ffi/src/lib.rs +++ b/wallet-ffi/src/lib.rs @@ -26,9 +26,13 @@ reason = "TODO: fix later" )] -use std::sync::OnceLock; +use std::{ + ffi::{c_char, CStr}, + sync::OnceLock, +}; use ::wallet::ExecutionFailureKind; +use error::WalletFfiError; // Re-export public types for cbindgen pub use error::WalletFfiError as FfiError; use tokio::runtime::Handle; @@ -88,3 +92,20 @@ pub(crate) fn map_execution_error(e: ExecutionFailureKind) -> FfiError { _ => FfiError::InternalError, } } + +/// Helper to convert a C string to a Rust String. +fn c_str_to_string(ptr: *const c_char, name: &str) -> Result { + if ptr.is_null() { + print_error(format!("Null pointer for {name}")); + return Err(WalletFfiError::NullPointer); + } + + let c_str = unsafe { CStr::from_ptr(ptr) }; + match c_str.to_str() { + Ok(s) => Ok(s.to_owned()), + Err(e) => { + print_error(format!("Invalid UTF-8 in {name}: {e}")); + Err(WalletFfiError::InvalidUtf8) + } + } +} diff --git a/wallet-ffi/src/sync.rs b/wallet-ffi/src/sync.rs index 41031d06..5f7a4413 100644 --- a/wallet-ffi/src/sync.rs +++ b/wallet-ffi/src/sync.rs @@ -93,7 +93,7 @@ pub unsafe extern "C" fn wallet_ffi_get_last_synced_block( }; unsafe { - *out_block_id = wallet.last_synced_block; + *out_block_id = wallet.storage().last_synced_block(); } WalletFfiError::Success diff --git a/wallet-ffi/src/types.rs b/wallet-ffi/src/types.rs index 87c30315..b970a8d3 100644 --- a/wallet-ffi/src/types.rs +++ b/wallet-ffi/src/types.rs @@ -149,7 +149,7 @@ impl FfiBytes32 { /// Create from an `AccountId`. #[must_use] - pub const fn from_account_id(id: &nssa::AccountId) -> Self { + pub const fn from_account_id(id: nssa::AccountId) -> Self { Self { data: *id.value() } } } @@ -186,8 +186,8 @@ impl From for u128 { } } -impl From<&nssa::AccountId> for FfiBytes32 { - fn from(id: &nssa::AccountId) -> Self { +impl From for FfiBytes32 { + fn from(id: nssa::AccountId) -> Self { Self::from_account_id(id) } } diff --git a/wallet-ffi/src/wallet.rs b/wallet-ffi/src/wallet.rs index 93fc20aa..7aabaa2d 100644 --- a/wallet-ffi/src/wallet.rs +++ b/wallet-ffi/src/wallet.rs @@ -10,7 +10,7 @@ use std::{ use wallet::WalletCore; use crate::{ - block_on, + c_str_to_string, error::{print_error, WalletFfiError}, types::WalletHandle, }; @@ -60,23 +60,6 @@ fn c_str_to_path(ptr: *const c_char, name: &str) -> Result Result { - if ptr.is_null() { - print_error(format!("Null pointer for {name}")); - return Err(WalletFfiError::NullPointer); - } - - let c_str = unsafe { CStr::from_ptr(ptr) }; - match c_str.to_str() { - Ok(s) => Ok(s.to_owned()), - Err(e) => { - print_error(format!("Invalid UTF-8 in {name}: {e}")); - Err(WalletFfiError::InvalidUtf8) - } - } -} - /// Create a new wallet with fresh storage. /// /// This initializes a new wallet with a new seed derived from the password. @@ -212,7 +195,7 @@ pub unsafe extern "C" fn wallet_ffi_save(handle: *mut WalletHandle) -> WalletFfi } }; - match block_on(wallet.store_persistent_data()) { + match wallet.store_persistent_data() { Ok(()) => WalletFfiError::Success, Err(e) => { print_error(format!("Failed to save wallet: {e}")); diff --git a/wallet-ffi/wallet_ffi.h b/wallet-ffi/wallet_ffi.h index 89026950..adbb7b50 100644 --- a/wallet-ffi/wallet_ffi.h +++ b/wallet-ffi/wallet_ffi.h @@ -410,6 +410,50 @@ enum WalletFfiError wallet_ffi_get_account_private(struct WalletHandle *handle, */ void wallet_ffi_free_account_data(struct FfiAccount *account); +/** + * Import a public account private key into wallet storage. + * + * # Parameters + * - `handle`: Valid wallet handle + * - `private_key_hex`: Hex-encoded private key string + * + * # Returns + * - `Success` on successful import + * - Error code on failure + * + * # Safety + * - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` + * - `private_key_hex` must be a valid pointer to a null-terminated C string + */ +enum WalletFfiError wallet_ffi_import_public_account(struct WalletHandle *handle, + const char *private_key_hex); + +/** + * Import a private account keychain and account state into wallet storage. + * + * # Parameters + * - `handle`: Valid wallet handle + * - `key_chain_json`: JSON-encoded `key_protocol::key_management::KeyChain` + * - `chain_index`: Optional chain index string (for example `/0/1`, `NULL` if unknown) + * - `identifier`: Identifier for this private account as little-endian u128 bytes + * - `account_state_json`: JSON-encoded `wallet::account::HumanReadableAccount` + * + * # Returns + * - `Success` on successful import + * - Error code on failure + * + * # Safety + * - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` + * - `key_chain_json` must be a valid pointer to a null-terminated C string + * - `identifier` must be a valid pointer to a `FfiU128` struct + * - `account_state_json` must be a valid pointer to a null-terminated C string + */ +enum WalletFfiError wallet_ffi_import_private_account(struct WalletHandle *handle, + const char *key_chain_json, + const char *chain_index, + const struct FfiU128 *identifier, + const char *account_state_json); + /** * Get the public key for a public account. * diff --git a/wallet/Cargo.toml b/wallet/Cargo.toml index 4e98b8ef..ed6fc1c5 100644 --- a/wallet/Cargo.toml +++ b/wallet/Cargo.toml @@ -11,6 +11,7 @@ workspace = true nssa_core.workspace = true nssa.workspace = true common.workspace = true +authenticated_transfer_core.workspace = true key_protocol.workspace = true sequencer_service_rpc = { workspace = true, features = ["client"] } token_core.workspace = true @@ -39,3 +40,9 @@ async-stream.workspace = true indicatif = { version = "0.18.3", features = ["improved_unicode"] } optfield = "0.4.0" url.workspace = true +derive_more = { workspace = true, features = ["display"] } + +[dev-dependencies] +tempfile.workspace = true +key_protocol = { workspace = true, features = ["test_utils"] } +bincode.workspace = true diff --git a/wallet/configs/debug/wallet_config.json b/wallet/configs/debug/wallet_config.json index 94e13ebd..926ee298 100644 --- a/wallet/configs/debug/wallet_config.json +++ b/wallet/configs/debug/wallet_config.json @@ -3,411 +3,5 @@ "seq_poll_timeout": "30s", "seq_tx_poll_max_blocks": 15, "seq_poll_max_retries": 10, - "seq_block_poll_max_amount": 100, - "initial_accounts": [ - { - "Public": { - "account_id": "CbgR6tj5kWx5oziiFptM7jMvrQeYY3Mzaao6ciuhSr2r", - "pub_sign_key": "7f273098f25b71e6c005a9519f2678da8d1c7f01f6a27778e2d9948abdf901fb" - } - }, - { - "Public": { - "account_id": "2RHZhw9h534Zr3eq2RGhQete2Hh667foECzXPmSkGni2", - "pub_sign_key": "f434f8741720014586ae43356d2aec6257da086222f604ddb75d69733b86fc4c" - } - }, - { - "Private": { - "account_id": "GoKB6RuE6pT2KxCqDXQqiCuuuYZaGdJNfctzyqRdGBCy", - "identifier": 0, - "account": { - "program_owner": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "balance": 10000, - "data": [], - "nonce": 0 - }, - "key_chain": { - "secret_spending_key": [ - 75, - 231, - 144, - 165, - 5, - 36, - 183, - 237, - 190, - 227, - 238, - 13, - 132, - 39, - 114, - 228, - 172, - 82, - 119, - 164, - 233, - 132, - 130, - 224, - 201, - 90, - 200, - 156, - 108, - 199, - 56, - 22 - ], - "private_key_holder": { - "nullifier_secret_key": [ - 212, - 34, - 166, - 184, - 182, - 77, - 127, - 176, - 147, - 68, - 148, - 190, - 41, - 244, - 8, - 202, - 51, - 10, - 44, - 43, - 93, - 41, - 229, - 130, - 54, - 96, - 198, - 242, - 10, - 227, - 119, - 1 - ], - "viewing_secret_key": [ - 205, - 10, - 5, - 19, - 148, - 98, - 49, - 19, - 251, - 186, - 247, - 216, - 75, - 53, - 184, - 36, - 84, - 87, - 236, - 205, - 105, - 217, - 213, - 21, - 61, - 183, - 133, - 174, - 121, - 115, - 51, - 203 - ] - }, - "nullifier_public_key": [ - 122, - 213, - 113, - 8, - 118, - 179, - 235, - 94, - 5, - 219, - 131, - 106, - 246, - 253, - 14, - 204, - 65, - 93, - 0, - 198, - 100, - 108, - 57, - 48, - 6, - 65, - 183, - 31, - 136, - 86, - 82, - 165 - ], - "viewing_public_key": [ - 3, - 165, - 235, - 215, - 77, - 4, - 19, - 45, - 0, - 27, - 18, - 26, - 11, - 226, - 126, - 174, - 144, - 167, - 160, - 199, - 14, - 23, - 49, - 163, - 49, - 138, - 129, - 229, - 79, - 9, - 15, - 234, - 30 - ] - } - } - }, - { - "Private": { - "account_id": "BCdMnPkdH2DrVhe7cGdawkPU9iapsSboRvJpWX8pWnLq", - "identifier": 0, - "account": { - "program_owner": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "balance": 20000, - "data": [], - "nonce": 0 - }, - "key_chain": { - "secret_spending_key": [ - 107, - 49, - 136, - 174, - 162, - 107, - 250, - 105, - 252, - 146, - 166, - 197, - 163, - 132, - 153, - 222, - 68, - 17, - 87, - 101, - 22, - 113, - 88, - 97, - 180, - 203, - 139, - 18, - 28, - 62, - 51, - 149 - ], - "private_key_holder": { - "nullifier_secret_key": [ - 219, - 5, - 233, - 185, - 144, - 150, - 100, - 58, - 97, - 5, - 57, - 163, - 110, - 46, - 241, - 216, - 155, - 217, - 100, - 51, - 184, - 21, - 225, - 148, - 198, - 9, - 121, - 239, - 232, - 98, - 22, - 218 - ], - "viewing_secret_key": [ - 35, - 105, - 230, - 121, - 218, - 177, - 21, - 55, - 83, - 80, - 95, - 235, - 161, - 83, - 11, - 221, - 67, - 83, - 1, - 218, - 49, - 242, - 53, - 29, - 26, - 171, - 170, - 144, - 49, - 233, - 159, - 48 - ] - }, - "nullifier_public_key": [ - 33, - 68, - 229, - 154, - 12, - 235, - 210, - 229, - 236, - 144, - 126, - 122, - 58, - 107, - 36, - 58, - 243, - 128, - 174, - 197, - 141, - 137, - 162, - 190, - 155, - 234, - 94, - 156, - 218, - 34, - 13, - 221 - ], - "viewing_public_key": [ - 3, - 122, - 7, - 137, - 250, - 84, - 10, - 85, - 3, - 15, - 134, - 250, - 205, - 40, - 126, - 211, - 14, - 120, - 15, - 55, - 56, - 214, - 72, - 243, - 83, - 17, - 124, - 242, - 251, - 184, - 174, - 150, - 83 - ] - } - } - } - ] + "seq_block_poll_max_amount": 100 } \ No newline at end of file diff --git a/wallet/src/account.rs b/wallet/src/account.rs new file mode 100644 index 00000000..dca0a051 --- /dev/null +++ b/wallet/src/account.rs @@ -0,0 +1,149 @@ +use std::str::FromStr; + +use base58::{FromBase58 as _, ToBase58 as _}; +use derive_more::Display; +use nssa::AccountId; +use serde::{Deserialize, Serialize}; +use thiserror::Error; + +#[derive(Debug, Display, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] +#[display("{_0}")] +pub struct Label(String); + +impl Label { + #[expect( + clippy::needless_pass_by_value, + reason = "Convenience for caller and negligible cost" + )] + #[must_use] + pub fn new(label: impl ToString) -> Self { + Self(label.to_string()) + } +} + +impl FromStr for Label { + type Err = std::convert::Infallible; + + fn from_str(s: &str) -> std::result::Result { + Ok(Self(s.to_owned())) + } +} + +impl From<&str> for Label { + fn from(value: &str) -> Self { + Self(value.to_owned()) + } +} + +impl From for Label { + fn from(value: String) -> Self { + Self(value) + } +} + +#[derive(Debug, Display, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)] +pub enum AccountIdWithPrivacy { + #[display("Public/{_0}")] + Public(AccountId), + #[display("Private/{_0}")] + Private(AccountId), +} + +#[derive(Debug, Error)] +pub enum AccountIdWithPrivacyParseError { + #[error("Invalid format, expected 'Public/{{account_id}}' or 'Private/{{account_id}}'")] + InvalidFormat, + #[error("Invalid account id")] + InvalidAccountId(#[from] nssa_core::account::AccountIdError), +} + +impl FromStr for AccountIdWithPrivacy { + type Err = AccountIdWithPrivacyParseError; + + fn from_str(s: &str) -> Result { + if let Some(stripped) = s.strip_prefix("Public/") { + Ok(Self::Public(AccountId::from_str(stripped)?)) + } else if let Some(stripped) = s.strip_prefix("Private/") { + Ok(Self::Private(AccountId::from_str(stripped)?)) + } else { + Err(AccountIdWithPrivacyParseError::InvalidFormat) + } + } +} + +/// Human-readable representation of an account. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct HumanReadableAccount { + balance: u128, + program_owner: String, + data: String, + nonce: u128, +} + +impl FromStr for HumanReadableAccount { + type Err = anyhow::Error; + + fn from_str(s: &str) -> Result { + serde_json::from_str(s).map_err(Into::into) + } +} + +impl std::fmt::Display for HumanReadableAccount { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let json = serde_json::to_string_pretty(self).map_err(|_err| std::fmt::Error)?; + write!(f, "{json}") + } +} + +impl From for HumanReadableAccount { + fn from(account: nssa::Account) -> Self { + let program_owner = account + .program_owner + .iter() + .flat_map(|n| n.to_le_bytes()) + .collect::>() + .to_base58(); + let data = hex::encode(account.data); + Self { + balance: account.balance, + program_owner, + data, + nonce: account.nonce.0, + } + } +} + +impl From for nssa::Account { + fn from(account: HumanReadableAccount) -> Self { + let mut program_owner_bytes = [0_u8; 32]; + let decoded_program_owner = account + .program_owner + .from_base58() + .expect("Invalid base58 in HumanReadableAccount.program_owner"); + assert!( + decoded_program_owner.len() == 32, + "HumanReadableAccount.program_owner must decode to exactly 32 bytes" + ); + program_owner_bytes.copy_from_slice(&decoded_program_owner); + + let mut program_owner = [0_u32; 8]; + for (index, chunk) in program_owner_bytes.chunks_exact(4).enumerate() { + let chunk: [u8; 4] = chunk + .try_into() + .expect("chunk length is guaranteed to be 4"); + program_owner[index] = u32::from_le_bytes(chunk); + } + + let data = hex::decode(&account.data).expect("Invalid hex in HumanReadableAccount.data"); + let data = data + .try_into() + .expect("Invalid account data: exceeds maximum allowed size"); + + Self { + balance: account.balance, + program_owner, + data, + nonce: nssa_core::account::Nonce(account.nonce), + } + } +} diff --git a/wallet/src/chain_storage.rs b/wallet/src/chain_storage.rs deleted file mode 100644 index 8d168d8e..00000000 --- a/wallet/src/chain_storage.rs +++ /dev/null @@ -1,308 +0,0 @@ -use std::collections::{BTreeMap, HashMap, btree_map::Entry}; - -use anyhow::Result; -use bip39::Mnemonic; -use key_protocol::{ - key_management::{ - key_tree::{KeyTreePrivate, KeyTreePublic, chain_index::ChainIndex}, - secret_holders::SeedHolder, - }, - key_protocol_core::{NSSAUserData, UserPrivateAccountData}, -}; -use log::debug; -use nssa::program::Program; - -use crate::config::{InitialAccountData, Label, PersistentAccountData, WalletConfig}; - -pub struct WalletChainStore { - pub user_data: NSSAUserData, - pub wallet_config: WalletConfig, - pub labels: HashMap, -} - -impl WalletChainStore { - #[expect( - clippy::wildcard_enum_match_arm, - reason = "We perform search for specific variants only" - )] - pub fn new( - config: WalletConfig, - persistent_accounts: Vec, - labels: HashMap, - ) -> Result { - if persistent_accounts.is_empty() { - anyhow::bail!("Roots not found; please run setup beforehand"); - } - - let mut public_init_acc_map = BTreeMap::new(); - let mut private_init_acc_map = BTreeMap::new(); - - let public_root = persistent_accounts - .iter() - .find(|data| match data { - &PersistentAccountData::Public(data) => data.chain_index == ChainIndex::root(), - _ => false, - }) - .cloned() - .expect("Malformed persistent account data, must have public root"); - - let private_root = persistent_accounts - .iter() - .find(|data| match data { - &PersistentAccountData::Private(data) => data.chain_index == ChainIndex::root(), - _ => false, - }) - .cloned() - .expect("Malformed persistent account data, must have private root"); - - let mut public_tree = KeyTreePublic::new_from_root(match public_root { - PersistentAccountData::Public(data) => data.data, - _ => unreachable!(), - }); - let mut private_tree = KeyTreePrivate::new_from_root(match private_root { - PersistentAccountData::Private(data) => data.data, - _ => unreachable!(), - }); - - for pers_acc_data in persistent_accounts { - match pers_acc_data { - PersistentAccountData::Public(data) => { - public_tree.insert(data.account_id, data.chain_index, data.data); - } - PersistentAccountData::Private(data) => { - let npk = data.data.value.0.nullifier_public_key; - let chain_index = data.chain_index; - for identifier in &data.identifiers { - let account_id = nssa::AccountId::from((&npk, *identifier)); - private_tree - .account_id_map - .insert(account_id, chain_index.clone()); - } - private_tree.key_map.insert(chain_index, data.data); - } - PersistentAccountData::Preconfigured(acc_data) => match acc_data { - InitialAccountData::Public(data) => { - public_init_acc_map.insert(data.account_id, data.pub_sign_key); - } - InitialAccountData::Private(data) => { - private_init_acc_map.insert( - data.account_id(), - UserPrivateAccountData { - key_chain: data.key_chain, - accounts: vec![(data.identifier, data.account)], - }, - ); - } - }, - } - } - - Ok(Self { - user_data: NSSAUserData::new_with_accounts( - public_init_acc_map, - private_init_acc_map, - public_tree, - private_tree, - )?, - wallet_config: config, - labels, - }) - } - - pub fn new_storage(config: WalletConfig, password: &str) -> Result<(Self, Mnemonic)> { - let mut public_init_acc_map = BTreeMap::new(); - let mut private_init_acc_map = BTreeMap::new(); - - let initial_accounts = config - .initial_accounts - .clone() - .unwrap_or_else(InitialAccountData::create_initial_accounts_data); - - for init_acc_data in initial_accounts { - match init_acc_data { - InitialAccountData::Public(data) => { - public_init_acc_map.insert(data.account_id, data.pub_sign_key); - } - InitialAccountData::Private(data) => { - let account_id = data.account_id(); - let mut account = data.account; - // TODO: Program owner is only known after code is compiled and can't be set - // in the config. Therefore we overwrite it here on - // startup. Fix this when program id can be fetched - // from the node and queried from the wallet. - account.program_owner = Program::authenticated_transfer_program().id(); - private_init_acc_map.insert( - account_id, - UserPrivateAccountData { - key_chain: data.key_chain, - accounts: vec![(data.identifier, account)], - }, - ); - } - } - } - - // TODO: Use password for storage encryption - let _ = password; - let (seed_holder, mnemonic) = SeedHolder::new_mnemonic(""); - let public_tree = KeyTreePublic::new(&seed_holder); - let private_tree = KeyTreePrivate::new(&seed_holder); - - Ok(( - Self { - user_data: NSSAUserData::new_with_accounts( - public_init_acc_map, - private_init_acc_map, - public_tree, - private_tree, - )?, - wallet_config: config, - labels: HashMap::new(), - }, - mnemonic, - )) - } - - /// Restore storage from an existing mnemonic phrase. - pub fn restore_storage( - config: WalletConfig, - mnemonic: &Mnemonic, - password: &str, - ) -> Result { - // TODO: Use password for storage encryption - let _ = password; - let seed_holder = SeedHolder::from_mnemonic(mnemonic, ""); - let public_tree = KeyTreePublic::new(&seed_holder); - let private_tree = KeyTreePrivate::new(&seed_holder); - - Ok(Self { - user_data: NSSAUserData::new_with_accounts( - BTreeMap::new(), - BTreeMap::new(), - public_tree, - private_tree, - )?, - wallet_config: config, - labels: HashMap::new(), - }) - } - - pub fn insert_private_account_data( - &mut self, - account_id: nssa::AccountId, - identifier: nssa_core::Identifier, - account: nssa_core::account::Account, - ) { - debug!("inserting at address {account_id}, this account {account:?}"); - - // Update default accounts if present - if let Entry::Occupied(mut entry) = self - .user_data - .default_user_private_accounts - .entry(account_id) - { - let entry = entry.get_mut(); - if let Some((_, acc)) = entry.accounts.iter_mut().find(|(id, _)| *id == identifier) { - *acc = account; - } else { - entry.accounts.push((identifier, account)); - } - return; - } - - // Otherwise update the private key tree - - // Find the node by iterating all tree nodes for this account_id - let chain_index = self - .user_data - .private_key_tree - .account_id_map - .get(&account_id) - .cloned(); - - if let Some(chain_index) = chain_index { - // Node already in account_id_map — update its entry - if let Some(node) = self - .user_data - .private_key_tree - .key_map - .get_mut(&chain_index) - { - if let Some((_, acc)) = node.value.1.iter_mut().find(|(id, _)| *id == identifier) { - *acc = account; - } else { - node.value.1.push((identifier, account)); - } - } - } else { - // Node not yet in account_id_map — find it by checking all nodes - for (ci, node) in &mut self.user_data.private_key_tree.key_map { - let expected_id = - nssa::AccountId::from((&node.value.0.nullifier_public_key, identifier)); - if expected_id == account_id { - if let Some((_, acc)) = - node.value.1.iter_mut().find(|(id, _)| *id == identifier) - { - *acc = account; - } else { - node.value.1.push((identifier, account)); - } - // Register in account_id_map - self.user_data - .private_key_tree - .account_id_map - .insert(account_id, ci.clone()); - break; - } - } - } - } -} - -#[cfg(test)] -mod tests { - use key_protocol::key_management::key_tree::{ - keys_private::ChildKeysPrivate, keys_public::ChildKeysPublic, - }; - - use super::*; - use crate::config::{PersistentAccountDataPrivate, PersistentAccountDataPublic}; - - fn create_sample_wallet_config() -> WalletConfig { - WalletConfig { - sequencer_addr: "http://127.0.0.1".parse().unwrap(), - seq_poll_timeout: std::time::Duration::from_secs(12), - seq_tx_poll_max_blocks: 5, - seq_poll_max_retries: 10, - seq_block_poll_max_amount: 100, - basic_auth: None, - initial_accounts: None, - } - } - - fn create_sample_persistent_accounts() -> Vec { - let public_data = ChildKeysPublic::root([42; 64]); - let private_data = ChildKeysPrivate::root([47; 64]); - - vec![ - PersistentAccountData::Public(PersistentAccountDataPublic { - account_id: public_data.account_id(), - chain_index: ChainIndex::root(), - data: public_data, - }), - PersistentAccountData::Private(Box::new(PersistentAccountDataPrivate { - identifiers: vec![], - chain_index: ChainIndex::root(), - data: private_data, - })), - ] - } - - #[test] - fn new_initializes_correctly() { - let config = create_sample_wallet_config(); - let accs = create_sample_persistent_accounts(); - - let _ = WalletChainStore::new(config, accs, HashMap::new()).unwrap(); - } -} diff --git a/wallet/src/cli/account.rs b/wallet/src/cli/account.rs index 0e12e9a5..2d7f325b 100644 --- a/wallet/src/cli/account.rs +++ b/wallet/src/cli/account.rs @@ -1,19 +1,15 @@ use anyhow::{Context as _, Result}; use clap::Subcommand; use itertools::Itertools as _; -use key_protocol::key_management::key_tree::chain_index::ChainIndex; +use key_protocol::key_management::{KeyChain, key_tree::chain_index::ChainIndex}; use nssa::{Account, PublicKey, program::Program}; -use sequencer_service_rpc::RpcClient as _; +use nssa_core::Identifier; use token_core::{TokenDefinition, TokenHolding}; use crate::{ WalletCore, - cli::{SubcommandReturnValue, WalletSubcommand}, - config::Label, - helperfunctions::{ - AccountPrivacyKind, HumanReadableAccount, parse_addr_with_privacy_prefix, - resolve_id_or_label, - }, + account::{AccountIdWithPrivacy, HumanReadableAccount, Label}, + cli::{CliAccountMention, SubcommandReturnValue, WalletSubcommand}, }; /// Represents generic chain CLI subcommand. @@ -27,17 +23,9 @@ pub enum AccountSubcommand { /// Display keys (pk for public accounts, npk/vpk for private accounts). #[arg(short, long)] keys: bool, - /// Valid 32 byte base58 string with privacy prefix. - #[arg( - short, - long, - conflicts_with = "account_label", - required_unless_present = "account_label" - )] - account_id: Option, - /// Account label (alternative to --account-id). - #[arg(long, conflicts_with = "account_id")] - account_label: Option, + /// Either 32 byte base58 account id string with privacy prefix or a label. + #[arg(short, long)] + account_id: CliAccountMention, }, /// Produce new public or private account. #[command(subcommand)] @@ -53,21 +41,16 @@ pub enum AccountSubcommand { }, /// Set a label for an account. Label { - /// Valid 32 byte base58 string with privacy prefix. - #[arg( - short, - long, - conflicts_with = "account_label", - required_unless_present = "account_label" - )] - account_id: Option, - /// Account label (alternative to --account-id). - #[arg(long = "account-label", conflicts_with = "account_id")] - account_label: Option, + /// Either 32 byte base58 account id string with privacy prefix or a label. + #[arg(short, long)] + account_id: CliAccountMention, /// The label to assign to the account. #[arg(short, long)] - label: String, + label: Label, }, + /// Import external account. + #[command(subcommand)] + Import(ImportSubcommand), } /// Represents generic register CLI subcommand. @@ -80,7 +63,7 @@ pub enum NewSubcommand { cci: Option, #[arg(short, long)] /// Label to assign to the new account. - label: Option, + label: Option

8K*N8+GHbT`{%4F}{g)b>1a2C^Ar^cb269C7Dl9cN=K+zC ztd4L$UtdjuO_0rJrPNRj(uYD^3)d+96LAE4cE|iQBG%LJnlA%>4lbk5z1=K@R{(N} zMU8=f!P%;b--7!oe%tr=GDxwu!MY3LA0P+h07rf)k81537 zn3pi^OrJAN^WmXi$6T%Gd%^XJ`yRpc{~1RJBGv$Sn{qfCUeORFSPa)Gz97WILwqs3 zS=nC(ul>ePPxk+@2=*HRTpr@dA+CgD-v$Mm9^xvvMCoq`@f^6?*R%d|fj|j_=fNvg z0(Zdc6yF7JQ@j+;_%0~W3OHZ!10jAmU|Iho)}siDmBW*8t>S0k!aYF->q7iuh&REd z%KkNYgW@;gk>5*tl0OCb&tZYb+d}*SJk53R^gH0Kia&=d_Qpg>;J;uY{w~CO;RRyv z=8wbA2*CB2Saby%rt+J28g^HVpIMZh@e+tkBL8WrYg7fzU1vnO7 ztvDAhRtwGXaGBz+@GQkA!i!aAmOnL@ftF5E>Kr!FnakJ(~xbzl>RJZExkf29||o4^FZ< zZGvT8C}yb>PAlR>g=sA-r|?KvTEsoiU~gFt$Kp&QWAG&cX+mRg+&LV0D*aSgn%wBu z!ZMH7_!&$b%u-DaQ(@V>>R_p{S(<-lN3wZ3god3(TGJ*>c$h0tgGc2RJ*3Tf5 zs>z`2Lh)B{ zwc_tWye}RS{0uKs4hP^3ihqZwz`dG={944Su_%^HDdsd!{wTvM9`oF zAHq6=Pec4Ud_Wc8D>(b-nA={`V&B1=6z>ah-e$QX=+*TFpzNCGuJ8~xp|w3y)~ z@B!GYY%lw4^!0EiU6g@9()+<@S1b%0D}9o~)rjQF;N-H;F`k*-rekX!u|Kh{37x`x)3jgYm|OPi0>Ds zfLWv@R`$9f$`BUXGyOZvmHucw&ev;9_Mz z1uj=S1KyzcdRUs=3$`^Iu8AwbO$aK~xm`6}tMs?R4JAPW^Wk+$e+Rrl-6L89Z&LcZ z;XR6%z(>3Y;a&tm;F)t+PrJn>{Ogni%mKy+uw=-PargIjOiRhY9aBuhf=jt{%OEX5 zFYC-qSY}Cq&p%zt{x3E55=gP8U&f0NNT8*k;5t~kq}q3Q`*JQo(*iMHpUHoxq=xxE zkASuP@(|yzDk$s1`clT9?xRf@XnqymuKI8@Jo3Miy@ZJMZ+MR4cS8I@h(CgtDf`dj z2ulAKbCZ(2L*y z$%-$Br3UBWAV;+;VJWb=M3bQkBz@X7RNxbpUiOlnM-(`oWc5-8lE4M9Zo=Uqz8KC{ zO?(+#qIfL4Kyf*&TkuNwaF7=vU4=k5;S^;c1-b*C#w>AL$V##9gLMWEhWKH4r7FPV zaQ^QxKTl3#;1xbI{v+12N+A3~h+l;3R06NSTNM8j-l=#C9Qz~4@NKw{;`iY)k7fPm z7EA+T@zFl7howMfuSmeNU~e-@v94DIl3BA9)?KvY;X{f)g-h}Grm1bElyOAW6cc9xzwA(UBp)RlR|c&Sj8=RM+@LsH z91=0h3lS>^mI8ahw({T;;64as3|#25(GQ2EfQB!IkJ$f5BM3rc;&NE`=@{4qY2w+i zE>Jwgx4<>3z_*8ZVHx9poiex^1I#ja@nU$J%JAM0uYmU}{R40%ORW@0mf|gN z|Fj(M4em%faCp2-^j`gK>l_5x7MXSE3I7l-)X z5U+r{D*FfEI>iqQ$CcpmkinC1z0yAe_g6Li6h5HzU%=Tdg90{$`1=s=gX1O2p%H=R z18{}X{|*nO02%Ix;eg{R7NVnq47ShI_v<9wH`t@*I zrT+@v(kdvxcOl*v;-BGC{LL8Ya5dwvxOI+q<&!};`)ZHPEQp8r7Fg!B7x{30{zLp z{%N0mecXB$!B&;vI=BJu;X8ccvq|tPSjK?iZ{TeB6yH8`ipNIZ2EGV=b6-EeXHU=d z|A7c(P#A|IxDr0iceuu9qn`oGAT@j)EC;DxNU>(Y3*b})a?rY4{C%xl&i@)d9OV4} zTLk(ryOFzI%UhS$YFZQRF-xI zxfeJQQOx+~cLxyEDudSWoHl{OG4NW&*&)seaUQ%@DB7tNmRD?SAF*K;2pJx+1-D*#}mOG zRl}{Y)i!8>_uxFmANgz!v07epq`pmv+rh=kzoTI{e@fU1!D3}_T!_2CtCjvlxL$Dq z-1g|8z^8=x^bns3S7YzxPXPw`0@Fn2z$;aPL*VQig2!^MgL}YoDkclfYIwi0e-zGW z7Zm8p5I^IwpFc_b13^hvj`z=IxcM}iR3(rZ;x=$UrO$$=DLxjyjRL0m1uTZwD*Xj; z-H+V=m+Ts(STlWtp)$y%Kp}_qA>IgYRSCWduOq`uKf}Fn(J?^_{0whb`VP}MPlzkQ zIU-OFLwt5eIR*MpNWU$_AHW&2g90?cd9-Lg1(FKgGQ(q#z+*pfTnxOx4;>lM0lZ1^4tTBFoIZo!R=f*NX3Tkk z`vJa0kf8((aIIRazk~Jje|uqB2TTG#!m4B6vYwp(=3M6q zj6)v$2nHkEv*I{1)s zSP#pzGWw0M%mTwN!!ipD*TW-W8-Y~d2cM1pCs+ot8|450jR<5E8-oLIHJpS%66ieB zW24W7Wt1B}9+p{RxGOBP$nc4<%mTwbVVMOI82>!oj^NP9z@QKOHU?&zjP=9JT`1jQYf*HT*(~~baATGUoJKeLLjri zU0C3x3J$qw5idbGJtqUE(Xk{T_VZzxR;T(rUDZ$yK$gKWE&EVnS$aS68FTTlJ~J%! z7r`zB+tob&8s6GDSSa?u`xXBf;$K4i8?3wFARGjqC4;34y!`2cCS@Qs$h)4qR$@T` zx`j9&9;)=cLfi)~Rr=H5D#ZifwXqyOe_G&dPv94l{tNN>@U}U@GaL`Y4T}GSQ*(j> zTeFVjB)CB7Q(ac)|IHDUD1%IR2cz6Qhqx@n6W|3mnw5+v9^f6ye`$!9!~2!~emGuyTu^}32+9;c>T{m$jpDCE`aL23 z0bZf}_ruolLHfVJB^21SXy+Rke}zhL-VOAT;%nh~DuG!czA41jaOMd?hPQ=y0X$Uc z7u~@4(}KkqEKmmb!mCw*>f!qCK?ZNYqfZR@tq{K(;`iaj%Kqaxg0*B|j(F_ZTx4QY zn8$yOPp_WK?v@r0Bt!GiRO%<5tA&(se_atLCxMbD9*& zNu|1kq}m}wp@^Hu2_b|~BvA?-yR)>$}!>uf6u#4`-i; z304rpomBkaxcBivyu|V#%Y$)|s-GA^!E9Afg%>MdZuu(9SK}3`{#4u`8g%G7%QNdb z;oM9?hH5YmcUQh0mnq+E`990{%V&?BajvJxFN2h zLZ06s2bZZKABdMKUxzoS_A`Cw(_YT~KUnc!wB`B#J_=Tlu(`j&PUBN29>~JqDZ<-1 z5y{m|w%}af$uRDZ<)|^f2+L7rd@+{8&bSzxAGc-x^Vc;g7)S+|8nS{Le47S0;d0`Q z{P@$pP5fCrinw{ivfa0de}%`Zc*_YX6PNRU$T@<7apwg+Y=h;@W)if;au^!7$8yvd zcfe2J5(;Dk`uaBUe_=VQjL*Yz6s6Wrg9|9ocezDaCXHz@0L!E?F2OP0EUd_rKPWo_s zZg4|0LA965`$F6(#_Rw7WR+R!UX?0Ht%Qd}mK);+6N209JiLbvn-f(rE+e67Ut#$Y zJVnKas5iP|#lyAU^bt=J=6l_u6hIcAAnZ!dTmEZ)t zOvTG_ri#zRhxpH?rLwOMHsXPn!Q+@`QDR0Ls|JIK2kcBt7 zuuR(25^{DRweg>E2IdV@(uJI(r=)D!AA@BQ8y|~hk{Wlx zGO3M^Pf#F3XbNIj_Nj3WUZr?e3m+%!o&V))O2+YA-l5tr-9k|smFg^adwn8fYo#h|!nUE?ua`vqN# zG$vh|@A}vBu=%WD1&we>#q;oX)u9r+;q0LPprpC}^Z8>(X8A)_g-0zvfw!v!Pvdm8 z!q0G{e+Db~3WwEE((*cP(^b5+I6*-XTO=Jg$Et9?d~d zw|N_``Hgkshg)ui!~KH}x5a(Nv~$LDZk7?e7~jMS)7StxO8$cv)z;_wcLN10Y76)f zDc+(y4{uYx9gid75q`qe*tsC+z*^j0dA;v}^gue)Vy24A>;EHk0d9l)sRZrtxQV%W81Gf_3Y>9a(19ViyYfg}s5}N2`DXs}sTT_7s|pF<1N|O9Z^d7>{3?D-wSNN_ zT@-ZaZ9GnSleAA+&i`r7hZHPO6}I9P%Ae!C$~$}~f7y)oC*D*yUTC=o&Myi&)EjTU zSe(56q&fefVBmnD!a2Ujr=^B`ffc{U@?tziwSN%LQj=~IZZI&&{~>NK@znN*oCdS# zk*d(xccFhCIMa%sZTTGBpg35;`M6BE2+vk7#&hUE!rXGrprCI_kl-e~`igeW7XK#n z8$40PzsJjz_u$RS`|!=Iz~t|AGn2G5$ln#WDOJz^W2pkiJZv7}o1MhMmjx`3#l2O+ z@pzH))p&#QRQ%Ww?kW8deHFJTSFiuyprEik=;7PGcd&XnZd=Z-8*gp-C|su6AB}e^ zcfwsNg8W^@2?{p&D;Q~27-M-H?xPY+z+03jVP{aVf@!|D`1xP6;&0-FZm^z$OqF0G zUZlJkZ&Cil_u{nF2xZQx8$Z@^7u=vS=wQ|y*5CJ%pdgnD)0I#3-NoN$S6T7NmZ#zs zs{M8Nb2SO8@kHi8YT*kib2$EFQka70si6I`7$i?Mn{2n&9;hA$C z=ROrb8&|9N6$uI!U)9c8M+TW>YjLCDL5J4k{>mFIZ?^m~9c{Y7%6WLXa(BE&`Bc28)?EKjlY+592mX%ts@M1D;u)6(@eA=I zY>^q#YjB2Ye=T03w)kT|NkikODU+w5XdBIdJ8uks=;Bn#kimYt?*Li zw)ioVkoITd$Cbz6CzKc9{L54MnE(9z4h8qC3hQti&i!VWyo2RhVEjJTBlMva-)i|& zyi>LR5H8BZylDSuJ-!>PHlmt|JgJ|&|6qkb zQ?Ouikl;7mhbJPbh5LiscwlgK5O0jDl$+!6)7m+!(o*M<^YI!LFT#bBg7(F@A5N{G z4pdMuMO7Fg4gS;4*%MABtj3=(gyiSnkh2xHP#yjpuU6iHE2ji2+=V+`6Zl75b&b0I z|4PATR$v~f95df>wyJ&pPy8u1b7DM}Elw@`h!xf&HpPnn$MOt3f128dH&GCs9weNL z`zhaszfc``1vh1cOb6EB9mLHf+k<5UO?;o_(Cx$%s)9?wc;$w;)3rf@Cb&|$1>T~3 z1dd!6)ISRMS3VjS@rvjl&K&+rqz z?c2oP#gfnXJuK@p-h4arPkLkuKBmGn+?xXF;X!w#Y~qcuJa#i~g5|lMadRwB!Hf^X zpW|W*BwwL#6Yp^c^Ix7?nS#@(AWylB&%pAO%eW7gr)0)wD$y_kE@9{^W*z`o49i)BNTLi_x~u6hsmZwJ-i2- zbA6U?6OZFxiH9hV4h-;Z;w5;WYJa_N6Q7A44%1YAUjIDp7nlmq;`G`IA?FL&_j*RW-PbS#vfz3i#Fbh<+j`SQ!IDQ#@n&nHT&0JJ|s$k z+$Ng}-(b0oHr|Ehg@o~LEH6Baf5LLpY5WV8TRP)?SZ+Fvox4-_oHG6_At#*zxvNbr zA*UXen@Zz@u-sG{H^OpLY1{v~WOX&mra)dSnhLpCuJ^_TSg!BJ z-LX7=H$DZ+<9Fk~;i10dOD?@|uO;!9k~{e*d6F>fLBUkXwS-(p&rs$hHy9;f0x@pR=g@KWWod@mw_yqaEW z#UHl(*h1#t8kOKlDuizgI`k~=tNfzxs*^tJJ;mp>UGo6gkDjJEe!?MqlXEyv1mK7#nj)y`{WE3B}QNJB` zN^*Vv`eo7-QJ}ZD*m4=xlX6fpf$1_oWB-7II}2Db$xl8cv54SrZ;44$dt zSKy_}l79>J8%PJ}#`AbPZsa?W{s14Np`e9d&YY#zJagg4;2YJ^^t)Kw!z`1^cGKv2uSiy~W5%D}f{uJJ<+JB1UxT_y;@(^c2 z6)(V5#`5~Vl!7h~1tU;td6?yqxKh<0gNHsDw7&w!Rfq4vJ(btte!i2h|9_=mm8x*e ze|hbv{7*bZc|2aEd>^h-UXN!h@55!votDvor;{C)^Dlqu5P$MAT3JOy%MDe`UN1F#&X#wAz|Q{!^XVd}4+1eFxX zacU|I!E&4$565zt8jr$qm>E}LIn0d5VmZu=ufS83C*axB)$9L>6f9B|CSy6SO@gUd z&I`u>!I?5gk_*2Rj^oNV;-1R0a6jcaxGbRx=21|kd>fvkd3A%ya+$0d>>w= zd_Ufx{2)$jxHkCW(I%;Y%@%!tKf_WY`?%gCDVz8~SZ1|xBP^5FxC!orTT&qHPw;Kx zCq2UaJDCcN{R)*-5St1^u*_=X;drPod89H52Ma$!iS_09;>+rO3udgUFPGohk1+oh zaagTRmzN>@dNCEmsf8~LSl)?Os`wAMNOkZxyiLW^ALZ@*l|jA+cx6SI1(BD71Q+7Iuk!JD_JQn@yKv?!LHu4kQ27BoZ*>q~=C?Py@Nvse)iKw< zXDArS3QdC-@N(r>@LuILmfy0x0mokp^1X+bzaID_ywg}-|NoDIj5R@p?RbXr*OtGt z`~zOC>i>c>*9Q4&aG7%WG2SD3GZkn4^Os5}nBfa{lM{oP&a-&&P{YgCffVaCm*Nf-=j4a3>WXiZ>~b!h4fWUVr#y z^4bE{Plv9wd=-wq9jtINZnPorbX=%>z2#Y!=iu>DKe>KZcq;|d-w6`liB~Bvvb@Cd zQoLK$e;8-J8{~TeS8WXZwC~jV>A*^>!i#v3YOoq_QeKN!ycZ-~Z+WBT_i^O?p#H}x z`|GCzTPf(HDtvDFOI)Pl-{LCe-FUI`&z66)oc1^;s`nE?kLpp-^P|8A>FpB~$fPnAI$)V}#+}5zZd!4c;Jw{cE}A)h!2}{2P7L5 zr;+$BET{S%X(=b>UC!Tsp+{jV$PHToby!$Nl=CR(&Hjo0q2FMd_xvqDOr92FIDvqu1?w1Z)*8a z++ds8#R>k@N}Yl#e@#s7t;EBD7Ml>d##lm7_W9C`ge z-7iS>n7?F-r31z{U_A$J!ok8_EY@?tQ*jy5$FT0elgiA09;;HYfE9Kot6aZ7!`oDk zzq0%d?)j-1!Zhc5%Rl0YD*h{8^LbET{a#=U56FeG&Aq8{Y6`;B3qJmQTccRQ*ES;H#j0FWg`GOk5>S zuAdP&+Z3>UG9vvfpO5FO1Vwn;j$j4FxY5^vD=ZJOJRC=;pISdF98E!7B^ZY%Do?OH z$?`Q==1^*3Qe*v#3fJK^Dt-fAex7>$e-j1URE632b7c>Ip?oX;O8IvDjq(D#Q+XlY zrF<{`eujGezl4I_s=`wIqw;_8Ps)$rJ<5;cpOu&6UzDH5`Y?VLoAKxWcGWyjfj*A+ za;}yhhlt9l`INDodU2ZXN%(u^m#}Prso!86e-{jA`1Q}kGD0SPJx<6LnS|>okS#Vo zlxu#EW6O;TQPz2pA4Z%P(uZo zbWsw>)oPUtk-x~9>=Rr#E4U>)_(>idHwW!|JjwiD`Exse75wNF z75cIQ^Kki6JXEc4J|2(F!{wLpd==k`m#X%yp5l&2#e3p)bRd^C%9(aVf`SIKgC58~*38D7q-cn_R`r3*6T!|}x0IM4rYpra@yYbHcbOmN{X3D3(cO+!E`H%MmzO_!Es-Ut8Mx@q|>8Q)_n$^dvjga!=e_ zO~NzqUgfiJqk5)8Y0kea_qTiz?q09<`k&?uOcnT@PIF4}NR_Y>@2wxKU>J@z2z;sK zv6ipEBUSxG(zVxrejb;CiK@ahJYRVR-mH9+<++w`!5Iey9lQgtY8ZGSZj(4TC|FE^ z-iHt1VA)mk5Z3#!gqLR0p~6t=YWX~7NS)njDc`}18|{ZxKH24O;6xkMfww8peiwI9 z@elAiCLQ^cr&4z%FSk{^A>OIn1V7!mJ1u{YH>>)4Rwg)cGzogRj|w}LL(kWBeaj7TX49a36WpeG;1)PK zH#qm7f(vm6C$)it6BJac3Ulz5LxTjjTE5fr-FO`B5AhSO#ThMv_UkRbgXdA-ytqv` zFVKJ?O)Y$40n0uzu7_n886SjY7a2FgvWtwH;Q7kUvFtJvKMczp@||!pD0nL@(v6EW6CO zJC8^&YVCGCAbi)Dn;a6&4iU7eO3B6Hu~6U&fF1&L3?GGr$H z8kP|=@y3(VlDn*_U%xMwU6#BFrTxuVcA1H1Pv)r$@uTJXCo8yIZLyr0=HiiR7T;$1 z4m?rC7vg@0wP*FR@MqZZY~=?nKT>Ose`)YI1&dXKr|=f#=kRXjRe06m?WHjbe+LwA zQhvko+m_$OTcmz+{UrE+f*mTs7Th$03dtqS`4o3j{?hWdmcPS=s{T)wf5G3fOA_W| zw;f*OKEP}5L|CEB+P-)`PQG}=SK=aU?(6TxkKyD#CH@xP(Yk%AzhrpV@&}eb!h2h* z>;L~KSllK^uw5#s6&%V3{dOpyj2j&p)bC-rx8=X%HmZJK-04Vl{Xdt2d{yB>+*5e~ z?x$Rarz>BA=PM7#>y$@}j|w_GPMlB$6RZjo@dEZyY6&@$@hau1cmr@OHeSU*NBBh+U98?%C%pUrO1uKLX1fGH!!2@xc_x zoI2gNiJ$or^Z$4%9OG9QLj|#^Fb>aF9k>#oOT3<6|6bpw{t_&c)OabLf?N9aH~Kd5 z_g~`plUZ&GKBR)oYU3?<74ATRY{9`Vr)=VfV40N0&9F>b;}*ElyugR!GUZkY3gWi} z6^_KMZVMd2gO!iQGv){JW3aw<9E*cxS4|hJuN@t^CzLs4PQ{6)Q}~1;$8Ch2Dvw+) z#?pblWRX+z0xTV9Ph7keO9zhiop}wvoX!^Y_v=?+*}`?c7h~DL&;0sdVwu$KQgQab z>am>r`-t0`ElhL%X}KScs`v#s5P8F6O8jr=&LE|g1 zbkKML)^lJY4whXtld+xyQ&l`6L%xuLMwuodmru(N;5I70OyV7b`j6w`bm&OdDqFk- zFIDkREq@tUu77;YhJtmf!FPCDr(gv?;mEOp_u@=70yVg&a%eTDYGoHo2UAPPX@IXw zI(hx&xTZi4;UPF!cGWb)dI&p?=9Y^NS23&QsCgbs2h3sh4+7GGRwR+5=3Oi+OrEN7 z=c(Lb;iHnF z|Ci>BrC>G%sfEAUZTV`;Q}9wcnA~DI_+Km?PAwtl5xiJ!z=ys~d`qf*a{MU^Isc8u~#dL@dwODS3BVE+>za<4r?{4o* zXRR{i!|)2W;9FK8eiB!84H7^LZ{ln4P_zB=-tLtl|3iT<_Ziss?4EAvxmvu8+zzYq_ z-En_ae-K`v>JPO%;x(@SJ?{xVjs6rB`YJbgok>YTa}%14m*WV-B)jBdyyN(wL#380 zEf2v>qe1W`LQ73gLu61BbKWzKb4@M3tMcq z@KZdcuSpnkw&OS}G%qHbuSq#IPx$2&EW5}!1IsQjZjCE(hyoe0(|ntF;tUD~s|r=V zO@*;|DDnD!g1dd2_&s=yx%29`;lT;%%y76n87u$%`r;9%KRvk~j_!22pL=K=SP zy6qd_VA)l3FxKr4QSs#Uzrae+T~&}bCQq>v{7uEB1H-KLBUN15kG9%h7R34eZz|kn zC0GUJ9vjW?B2KhA>OOvTXCOU*#*h-FYj_vP?%@-5f>AzcgeRn zSUB}!J*3;Xo=XS%g;N)!A5?wmVC2oZ`HsfPC3XJaRdWmlI^nUV0<|PTKP$ocDlQ{* zq1FE1DlYA(TkWs&G_IS%U)?5g6@f&Nzei;{7(ekxpSB`CHM%&-#NsNymLv#j=W zR9rf+(rW*r#B0}2g_o@auUZLqTM2$rap}M>R{MP_E*P3UjRlw^#{QVSSjsYIzOTbL36cUOKoQ>kYg; zlb6GiuqT@-H<9nC2GV0^ecgoVI9PVo)WbUAK`Jio<5v4T6_*a3kgyV*q$)^)N-Mz- z6_*6Vt@fi-T-wjK+TW?-(mrvwmEay#K@zOPQ`DL99m|{W3>E(n&r{xtmn(mcw*^i( zJ1Efm>{}cxoNBQi;_X{g9U4d_*=0Yd`qJUZ+ja9Dje~_VEe`S}(w$>f1xe7)N^ri4 z%aC1ICqcUNZxxsJ)2;T`skpSiLARH`e{z$mAPH7j37%7NN$`SBK>L?eT-xun+JCR& z(*8%)p5s5=`B_zv1eqJ^4q-|RY4NW zuoB#;;*wxikRaK9j*3hBl~(%~Rb1M?T-!c*{!4dWRTU(`ZY#l0DlQ3rsZAi`lJ4wN zacSS_ow_5~83zkzTAUog)cH5v$x;<0L6MbUfQm~8N=$-e)^w*_#ijjBtNqO?F74;~ z?NjS#3vN*rB*7{x!7C~*310IPq_!&ES*zmGevj4uR~47`zopvy>!$;0?*;=T3A$i? zUN~OGB|!}9NtmPJ(te=TzEs7feMPc;?d$(^=Mq&x63n&|cq%RlZcQdI_l)Vz?J6$q zS6l60S8-|ohP2ne|MQlrAPM$b32Iba5`;F^9RU}cMcPNP9>HuCm-e|hp@*-F}#gOZ$0Po$H<3Eic%}^=mUskvQ zH^?`;B+Yrx@@Cvd#Xs4|{F_-2H291P@$P}Y!n%Xs;9%KRvkU7E=1faVcA$&@I$*b| zFCA>VscydZ2?~N`S4{`36L!LzI!2sADmCZjW>-9AMkM*^cySKiepldLc=v*cv)ixV z7sv06B;U4^`WN6n#5?)%L@@;oD3CiKsW1c=(V&IzF}TaZAU+lEB%a~NZ^Tt9;XFKF z`93_6`Xl}NPvDWbY03%b6$*OZ9dWk%6+XnPND%e?Io{bY^_fuVV9WPNK!+;*_^Egk zX2g>lFdT2ji+tZ^)nALZT_16(l5y_;;vYE9^E*OE0TN%LsobTmY+^B zLpF3Xk63PqIDOJmEBp=1Z^x|kS9sNjjNtT0@=viz`)ja#`FvFvKprHT1d;zSOS?s!HGYBtSiTQ1&`&T6%P*y5`fjw1 zcS85DPyPCZcpM$h@Z;~}#}-ALRq3e?T=6Nl@i&o=&mSjy^e_eT;W4w%&;N{v$M3gu zBH>hn&+(!c+a*8gBpqJIWSQP8;>cB3JmE`uFd0dHsztmRuT;DAlOH)MZi_hm%!vHN zh}UK_CcJxP#EJMl-up9?kS(6)$3Oms&+mPd`dW>&@AxYnWETwd z;{&mLAt57_%6~hS?-MNW;~(G_tLRXIohk{c_ELc!_oaeN!XI(z& z{4Mz4H&*aoJEzQ#H?Ls?`J{7dR`Y`fSUw$B=*O2~`PNHM-}|IKBc3orK9EkxZ@-u= zT#4nkT#O@W{IHnYzIMnbVfir{6F-*Iv2K4I*6qK>@-5n#{)n_mXQMZ^OE|s#f)Wbk z>v3!R9xlQ1FnXx(e>UJPmtm3GU2<+?I&fjc+2qIHYF5`zA1)s{3Fbsv1|RQMBRUE1 zot0o8_zCtL!805lCTIG-xE0@wVaUvJ-=;OM75UC4Z-6FuSt*t;q3-ePU)qMB>tj-} z=aTU@N2WQI>{7|sjMGz#qj*n<^FW3lzX115+}h5W?-x8tLD_@BasCaCJQQ(Ogi{H7 zv`uqH5;t>VYdbzh(<1fOtIVOf?fKZvOZ=5LyE5wx|L-?04gFIP>e&m(}Dbc^WUrskrN` z#GO>UPdDCd<_!pQs-BMJOQ>CFAS3p9H_rd^l}cHM6hx0_h#68gH0i-uK6Yca=$sfo zD8QsLN6mCB?+q9F34e+cX9Y#R3v9_BY&!k=wNq)Ot z>L=c$ppuJ;ne|r|q}4fh|LbJ_^!i3Fr~V}Tt}re2t`;k3=J1!(Po+L*J~N~zp3Px) zd~hZlh4<{`{=x6ic+SC9!7fTT|D|AlP~d!m7bu@|9=B9nTqgQk@cQ}e!&`zAPv`!1 zPc&C^cvP@zAh!~!ulMRe*1yA?;-6RP8Uvdx&F_kU}g(W zEdCaTOPMs>@t7?x#En`8ht*UZIhZ>lKVj1{5;o#TEd2I!a7JTJwZ5B|bKGNdZJ3AK z(1AGdK?g3w^2g^Re!_S0OomhrTR99T4@z?;9@fs8;m7-3 z!eRP%Zb1Aw^Cgx)&AN;R$q^llBkg38r>_4V1@gz_%lrf%WBxdN?X2!NggMYII2Dh= z@<*x%`t{$&^0(dR`EJKp%b#Z7;=3P~KT2&5%h$2|rS+(}{_mwg{&f0uzrmZsm^2;O zB7cZ`45!B(lRZvu!Od9y?zemdQ?_UomJhA0@wfOlyzZ#rhUUZ(Y->I6|Pwv=X$(;K;iGM$D zo?SDs-_0wqtM0dER`h_Y=GZk`?Kf+-H#f)4ZN1hTstw}{ZFDI*@AU``w zrz*0&hCRc*o8{!h%Cbwd^D9cSa`I%}c};tThb3YIWXPfsdo=bt7+D9ti?d{m|2TD` z&ODC&)xPBa=?d!P&ytx`r$dQ9KCohPpwwyb$Mv&hR{w?iv8=4W*dXS0K0VwqQIVaO z70t=bDlg9FM3Ni(OS30iR(fD(mh9g)2;sj&NHrEsRjpFKkl9Sk8q1~|MY^J@8^}i9AN4!uUUP! zl{fL!@L}GaA-8_wPgfGl{foVinQk3OpAvH8kRAPttH}PVBbsgYnLSiT{=xlBcAi&! zYWRrcI7R+!oV-ylhY$5G?-4${^5P{G1r_mVyev02dDT8{soTC+Xl)7eIo!<~_+Yq!H?yhR_KA9KBHdedm|M>)d^UWL91GD@<$4X> zYwLN@yTdKK1+LpAxiaszpTn)I_cnEB9_FRBb)(g*j&aw8y{yyRj!n67%8tfM@(K!~ z(cGN8V(*5|?s)I0Lidov%13dNomE;KkChac#>!%OWx3fUUP)K?Xs_7>H|90XahrQ@ zf5v~NN8JwI&7Iw`$%ZYH4Rd0#l30FOPH`zWbJ1e%sG6PP&h_5?%x&WJJt-XVPUz-# z&nU^tugJ~IEi31iu9!Q&Ue2)cVWlH4_Zszb^Fw*L-nwq?5nkUOZhh~~sQZtg`8m<7 zg3?${S+t}yx1gdl&df?)F#mKOt3ktGw^0~i@=f(00;`!cd-P{rN zcsY`nHNe|h>9+T-Kgm7VdnVs)mbmoN5tnA3-Y+w^bj;|g5yKdm(t_gbyz;z~yxh{V z;&}N1uRm|U>;Hod7^Dxc-2a~pIzhpH6L@J+H|{;U(9LgJo>QDtQj(jMT@Wj+$jK`A zPRVx%dzTfstG!?I-KaP98~0G}hm)8G|2@sUyfM3Nba_>B?+qL2H62qg;(h#g_X6+U zK5l2PqK}(@>VfT^toZ&rSHf!tZra>)yxf^?b`#m{1@Y|iSaxxFK~BCm_H=j9iGRBP zWBbqFs<(UhsehVa{~eT{8!jB{&2!5`HBcuM$RN9;e{O^{bV@c1o^+0;Pm9l;sCpl zwf{bNM;*tLjl8qm>#J`)+wE4*+x>U<(CQPh@tp|0y?+~RhtUN_i%qP2HL9(AtyhPgcQ zMmjcis{2|4Z}K;8%W6FLAUPEurHoY18>15o&rg@dc-F8$tGUfm+mp%?c2Gw4I03C=+rOVmEPTVyN7!h ze(4_TJ^Cxx(l5SrD;s(FecUYXwC~*Z)x&>s*Vp$>u5nw2;&Jc18uzG%`F(h3)ji~7 zUf^9NmbdSV=7gL^dEULazPtxixhCYjUgNf_FYijO1mD-V9n$%qIj!q;NPl>3XikrM z9XfAb%hSN7X--2Pfkm6j2Y=;l5XU*4e|ZX4yKMe2ea_AGI@HVgDBT%4?eS;p-Fnsk E0~T$D%>V!Z diff --git a/artifacts/program_methods/clock.bin b/artifacts/program_methods/clock.bin index c24f463ca0a49450953a99ee53ba16a1156024ee..270966925ed477166790fde2278009459ae1ff90 100644 GIT binary patch delta 13744 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 I3C}$6|2q+W8~^|S delta 13735 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 diff --git a/artifacts/program_methods/genesis_supply_account.bin b/artifacts/program_methods/genesis_supply_account.bin new file mode 100644 index 0000000000000000000000000000000000000000..c377a1e606e86d2523807c4ceda8b93a2ea933f8 GIT binary patch literal 419688 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