From a463f8f7d998b55d3cdb2269700dba9b5fe5d1ca Mon Sep 17 00:00:00 2001 From: philipliu Date: Sun, 15 Jun 2025 15:47:26 -0400 Subject: [PATCH 01/16] Update testnet reset script --- .env.example | 8 +- scripts/testnet_reset.sh | 257 +++++++++++++++++++++++++++++++++++---- 2 files changed, 237 insertions(+), 28 deletions(-) mode change 100644 => 100755 scripts/testnet_reset.sh diff --git a/.env.example b/.env.example index 4c8126f036..403447a4a7 100644 --- a/.env.example +++ b/.env.example @@ -11,11 +11,17 @@ SECRET__KEY= # Test secrets TEST_CLIENT_WALLET_SECRET= -TEST_CLIENT_WALLET_PK_BYTES= TEST_CLIENT_SMART_WALLET_ACCOUNT= TEST_CLIENT_WALLET_EXTRA_SIGNER_1_SECRET= TEST_CLIENT_WALLET_EXTRA_SIGNER_2_SECRET= + TEST_WITHDRAW_FUND_CLIENT_SECRET_1= TEST_WITHDRAW_FUND_CLIENT_SECRET_2= TEST_DEPOSIT_FUND_CLIENT_SECRET_1= TEST_DEPOSIT_FUND_CLIENT_SECRET_2= + +CLIENT_WALLET_PK_BYTES= + +# USDC issuer +USDC_ISSUER_SECRET= +USDC_ISSUER_PUBLIC= diff --git a/scripts/testnet_reset.sh b/scripts/testnet_reset.sh old mode 100644 new mode 100755 index b7ffd1f2b6..afcd4fce21 --- a/scripts/testnet_reset.sh +++ b/scripts/testnet_reset.sh @@ -3,30 +3,233 @@ # It assumes that the secrets defined in the .env.example file are set in the environment # and that the Stellar CLI and Rust are installed. -set -x - -pushd ../soroban - -stellar contract build - -stellar contract deploy \ - --wasm target/wasm32-unknown-unknown/release/account.wasm \ - --source-account ${TEST_CLIENT_WALLET_SECRET} \ - --network testnet \ - --salt 616e63686f722d706c6174666f726d \ - -- \ - --admin ${TEST_CLIENT_WALLET_SECRET} \ - --signer ${TEST_CLIENT_WALLET_PK_BYTES} - -stellar contract deploy \ - --wasm target/wasm32-unknown-unknown/release/web_auth.wasm \ - --source-account ${SECRET_SEP10_SIGNING_SEED} \ - --network testnet \ - --salt 616e63686f722d706c6174666f726d \ - -- \ - --admin ${SECRET_SEP10_SIGNING_SEED} - -stellar contract asset deploy \ - --source ${SECRET_SEP10_SIGNING_SEED} \ - --network testnet \ - --asset USDC:GDQOE23CFSUMSVQK4Y5JHPPYK73VYCNHZHA7ENKCV37P6SUEO6XQBKPP \ No newline at end of file +set -e + +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' + +log_info() { echo -e "${BLUE}[INFO]${NC} $1"; } +log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; } +log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; } +log_error() { echo -e "${RED}[ERROR]${NC} $1"; } + +check_prerequisites() { + log_info "Checking prerequisites..." + command -v stellar &>/dev/null || { + log_error "Stellar CLI not installed" + exit 1 + } + command -v rustc &>/dev/null || { + log_error "Rust not installed" + exit 1 + } + log_success "Prerequisites check passed" +} + +load_env() { + log_info "Loading environment..." + [[ -f "../.env" ]] || { + log_error ".env file not found" + exit 1 + } + source ../.env + log_success "Environment loaded" +} + +fund_account() { + local public_key=$1 + log_info "Funding: $public_key" + curl -s "https://friendbot.stellar.org/?addr=$public_key" >/dev/null +} + +fund_test_accounts() { + log_info "Funding test accounts..." + local accounts=( + "SECRET_SEP10_SIGNING_SEED:GDAHPZ2NSYIIHZXM56Y36SBVTV5QKFIZGYMMBHOU53ETUSWTP62B63EQ" + "TEST_CLIENT_WALLET_SECRET:GDJLBYYKMCXNVVNABOE66NYXQGIA5AC5D223Z2KF6ZEYK4UBCA7FKLTG" + "TEST_CLIENT_WALLET_EXTRA_SIGNER_1_SECRET:GC6X2ANA2OS3O2ESHUV6X44NH6J46EP2EO2JB7563Y7DYOIXFKHMHJ5O" + "TEST_CLIENT_WALLET_EXTRA_SIGNER_2_SECRET:GATEYCIMJZ2F6Y437QSYH4XFQ6HLD5YP4MBJZFFPZVEQDJOY4QTCB7BB" + "TEST_WITHDRAW_FUND_CLIENT_SECRET_1:GDC2U5GRKUSPGV5XENLBWKQZH2C4PG7ZEVMQOUA2QZKIRXE5FYYEMEF7" + "TEST_WITHDRAW_FUND_CLIENT_SECRET_2:GASI56WX7UKIDFPZRCQEI4OQE3V3QBGXEOB4ZY6ZMU5MZXPHQHIDA7JU" + "TEST_DEPOSIT_FUND_CLIENT_SECRET_1:GD4C2QRT7YL4WJFJPYQCYRXEDBB7ERHC3XZGWR6KXKRHPEFXXNXIVNFY" + "TEST_DEPOSIT_FUND_CLIENT_SECRET_2:GC56VTOVOJDRQAJRYLZW6DLQGVTQSYDTZU7ISNIZ2VJIE3FYWI2HMD5G" + ) + + for account_info in "${accounts[@]}"; do + local secret_var="${account_info%%:*}" + local public_key="${account_info##*:}" + if [[ -n "${!secret_var}" ]]; then + fund_account "$public_key" + fi + sleep 1 + done +} + +setup_trustlines() { + log_info "Setting up USDC trustlines..." + local usdc_issuer="${USDC_ISSUER_PUBLIC:-GDQOE23CFSUMSVQK4Y5JHPPYK73VYCNHZHA7ENKCV37P6SUEO6XQBKPP}" + local circle_usdc_issuer="GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5" + local accounts=( + "TEST_CLIENT_WALLET_SECRET" + "TEST_WITHDRAW_FUND_CLIENT_SECRET_1" + "TEST_WITHDRAW_FUND_CLIENT_SECRET_2" + "TEST_DEPOSIT_FUND_CLIENT_SECRET_1" + "TEST_DEPOSIT_FUND_CLIENT_SECRET_2" + ) + + for account_var in "${accounts[@]}"; do + local account_secret="${!account_var}" + if [[ -n "$account_secret" ]]; then + stellar tx new change-trust \ + --source-account "$account_secret" \ + --network testnet \ + --line "USDC:$usdc_issuer" >/dev/null 2>&1 + log_success "Anchor USDC trustline created for $account_var" + + stellar tx new change-trust \ + --source-account "$account_secret" \ + --network testnet \ + --line "USDC:$circle_usdc_issuer" >/dev/null 2>&1 + log_success "Circle USDC trustline created for $account_var" + fi + sleep 1 + done +} + +issue_and_fund_usdc() { + log_info "Issuing USDC and funding accounts..." + local usdc_issuer_secret="$USDC_ISSUER_SECRET" + local usdc_issuer_public="${USDC_ISSUER_PUBLIC:-GDQOE23CFSUMSVQK4Y5JHPPYK73VYCNHZHA7ENKCV37P6SUEO6XQBKPP}" + + fund_account "$usdc_issuer_public" + + local recipient_accounts=( + "TEST_CLIENT_WALLET_SECRET:GDJLBYYKMCXNVVNABOE66NYXQGIA5AC5D223Z2KF6ZEYK4UBCA7FKLTG" + "TEST_WITHDRAW_FUND_CLIENT_SECRET_1:GDC2U5GRKUSPGV5XENLBWKQZH2C4PG7ZEVMQOUA2QZKIRXE5FYYEMEF7" + "TEST_WITHDRAW_FUND_CLIENT_SECRET_2:GASI56WX7UKIDFPZRCQEI4OQE3V3QBGXEOB4ZY6ZMU5MZXPHQHIDA7JU" + "TEST_DEPOSIT_FUND_CLIENT_SECRET_1:GD4C2QRT7YL4WJFJPYQCYRXEDBB7ERHC3XZGWR6KXKRHPEFXXNXIVNFY" + "TEST_DEPOSIT_FUND_CLIENT_SECRET_2:GC56VTOVOJDRQAJRYLZW6DLQGVTQSYDTZU7ISNIZ2VJIE3FYWI2HMD5G" + ) + + for recipient_info in "${recipient_accounts[@]}"; do + local account_var="${recipient_info%%:*}" + local recipient_public="${recipient_info##*:}" + local account_secret="${!account_var}" + + if [[ -n "$account_secret" ]]; then + log_info "Sending 1000 USDC to $account_var ($recipient_public)..." + if stellar tx new payment \ + --source-account "$usdc_issuer_secret" \ + --destination "$recipient_public" \ + --asset "USDC:$usdc_issuer_public" \ + --amount 10000000000 \ + --network testnet; then + log_success "Sent 1000 USDC to $account_var" + else + log_warning "Failed to send USDC to $account_var" + fi + else + log_warning "Skipping $account_var (no secret key found)" + fi + done +} + +reset_multisig() { + log_info "Ensuring signers are present with 1/1/1 thresholds..." + local primary_secret="$TEST_CLIENT_WALLET_SECRET" + + local signer1_public="GC6X2ANA2OS3O2ESHUV6X44NH6J46EP2EO2JB7563Y7DYOIXFKHMHJ5O" + local signer2_public="GATEYCIMJZ2F6Y437QSYH4XFQ6HLD5YP4MBJZFFPZVEQDJOY4QTCB7BB" + + stellar tx new set-options \ + --source-account "$primary_secret" \ + --network testnet \ + --signer "$signer1_public" \ + --signer-weight 1 >/dev/null 2>&1 + + stellar tx new set-options \ + --source-account "$primary_secret" \ + --network testnet \ + --signer "$signer2_public" \ + --signer-weight 1 >/dev/null 2>&1 + + log_success "Signers configured with 1/1/1 thresholds" +} + +deploy_contracts() { + log_info "Deploying contracts..." + + local deployer_secret="$TEST_CLIENT_WALLET_SECRET" + local deployer_public="GDJLBYYKMCXNVVNABOE66NYXQGIA5AC5D223Z2KF6ZEYK4UBCA7FKLTG" + + log_info "Using $deployer_public as contract deployer" + + pushd ../soroban >/dev/null + stellar contract build + + log_info "Deploying account contract..." + local account_contract_result=$(stellar contract deploy \ + --wasm target/wasm32-unknown-unknown/release/account.wasm \ + --source-account "$deployer_secret" \ + --network testnet \ + --salt 616e63686f722d706c6174666f726d \ + -- \ + --admin "$deployer_public" \ + --signer "$CLIENT_WALLET_PK_BYTES" 2>&1) + + if [[ $? -eq 0 ]]; then + local account_contract_id=$(echo "$account_contract_result" | tail -1) + log_success "Account contract deployed: $account_contract_id" + else + log_warning "Account contract deployment skipped (already exists)" + fi + + log_info "Deploying web auth contract..." + local webauth_deployer_secret="$SECRET_SEP10_SIGNING_SEED" + local webauth_deployer_public="GDAHPZ2NSYIIHZXM56Y36SBVTV5QKFIZGYMMBHOU53ETUSWTP62B63EQ" + + local webauth_contract_result=$(stellar contract deploy \ + --wasm target/wasm32-unknown-unknown/release/web_auth.wasm \ + --source-account "$webauth_deployer_secret" \ + --network testnet \ + --salt 616e63686f722d706c6174666f726d \ + -- \ + --admin "$webauth_deployer_public" 2>&1) + + if [[ $? -eq 0 ]]; then + local webauth_contract_id=$(echo "$webauth_contract_result" | tail -1) + log_success "Web auth contract deployed: $webauth_contract_id" + else + log_warning "Web auth contract deployment skipped (already exists)" + fi + + log_info "Deploying USDC asset contract..." + if stellar contract asset deploy \ + --source "$deployer_secret" \ + --network testnet \ + --asset USDC:GDQOE23CFSUMSVQK4Y5JHPPYK73VYCNHZHA7ENKCV37P6SUEO6XQBKPP 2>/dev/null; then + log_success "USDC asset contract deployed" + else + log_warning "USDC asset contract deployment skipped (already exists)" + fi + + popd >/dev/null + log_success "Contracts deployed" +} + +main() { + log_info "Starting testnet reset..." + check_prerequisites + load_env + fund_test_accounts + reset_multisig + setup_trustlines + issue_and_fund_usdc + deploy_contracts + log_success "✨ Testnet setup completed!" +} + +main "$@" From 4b125da6a4697908d6c7ea0fc619b03573cd0ba6 Mon Sep 17 00:00:00 2001 From: philipliu Date: Wed, 18 Jun 2025 11:37:03 -0400 Subject: [PATCH 02/16] Issue SRT --- .env.example | 8 +++++ scripts/testnet_reset.sh | 64 +++++++++++++++++++++++++++++++++++----- 2 files changed, 65 insertions(+), 7 deletions(-) diff --git a/.env.example b/.env.example index 403447a4a7..15a8b7ba31 100644 --- a/.env.example +++ b/.env.example @@ -25,3 +25,11 @@ CLIENT_WALLET_PK_BYTES= # USDC issuer USDC_ISSUER_SECRET= USDC_ISSUER_PUBLIC= + +# SRT issuer +SRT_ISSUER_SECRET= +SRT_ISSUER_PUBLIC= + +# Test Anchor Distribution Account +TESTANCHOR_DISTRIBUTION_SECRET= +TESTANCHOR_DISTRIBUTION_PUBLIC= diff --git a/scripts/testnet_reset.sh b/scripts/testnet_reset.sh index afcd4fce21..d52fd82673 100755 --- a/scripts/testnet_reset.sh +++ b/scripts/testnet_reset.sh @@ -56,6 +56,8 @@ fund_test_accounts() { "TEST_WITHDRAW_FUND_CLIENT_SECRET_2:GASI56WX7UKIDFPZRCQEI4OQE3V3QBGXEOB4ZY6ZMU5MZXPHQHIDA7JU" "TEST_DEPOSIT_FUND_CLIENT_SECRET_1:GD4C2QRT7YL4WJFJPYQCYRXEDBB7ERHC3XZGWR6KXKRHPEFXXNXIVNFY" "TEST_DEPOSIT_FUND_CLIENT_SECRET_2:GC56VTOVOJDRQAJRYLZW6DLQGVTQSYDTZU7ISNIZ2VJIE3FYWI2HMD5G" + "SRT_ISSUER_SECRET:GCDNJUBQSX7AJWLJACMJ7I4BC3Z47BQUTMHEICZLE6MU4KQBRYG5JY6B" + "TESTANCHOR_DISTRIBUTION_SECRET:GABCKCYPAGDDQMSCTMSBO7C2L34NU3XXCW7LR4VVSWCCXMAJY3B4YCZP" ) for account_info in "${accounts[@]}"; do @@ -69,31 +71,52 @@ fund_test_accounts() { } setup_trustlines() { - log_info "Setting up USDC trustlines..." + log_info "Setting up trustlines..." local usdc_issuer="${USDC_ISSUER_PUBLIC:-GDQOE23CFSUMSVQK4Y5JHPPYK73VYCNHZHA7ENKCV37P6SUEO6XQBKPP}" local circle_usdc_issuer="GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5" + local srt_issuer="${SRT_ISSUER_PUBLIC:-GCDNJUBQSX7AJWLJACMJ7I4BC3Z47BQUTMHEICZLE6MU4KQBRYG5JY6B}" local accounts=( "TEST_CLIENT_WALLET_SECRET" "TEST_WITHDRAW_FUND_CLIENT_SECRET_1" "TEST_WITHDRAW_FUND_CLIENT_SECRET_2" "TEST_DEPOSIT_FUND_CLIENT_SECRET_1" "TEST_DEPOSIT_FUND_CLIENT_SECRET_2" + "TESTANCHOR_DISTRIBUTION_SECRET" ) for account_var in "${accounts[@]}"; do local account_secret="${!account_var}" if [[ -n "$account_secret" ]]; then - stellar tx new change-trust \ + # Create USDC trustlines + if stellar tx new change-trust \ --source-account "$account_secret" \ --network testnet \ - --line "USDC:$usdc_issuer" >/dev/null 2>&1 - log_success "Anchor USDC trustline created for $account_var" + --line "USDC:$usdc_issuer"; then + log_success "Anchor USDC trustline created for $account_var" + else + log_warning "Failed to create Anchor USDC trustline for $account_var" + fi - stellar tx new change-trust \ + if stellar tx new change-trust \ --source-account "$account_secret" \ --network testnet \ - --line "USDC:$circle_usdc_issuer" >/dev/null 2>&1 - log_success "Circle USDC trustline created for $account_var" + --line "USDC:$circle_usdc_issuer"; then + log_success "Circle USDC trustline created for $account_var" + else + log_warning "Failed to create Circle USDC trustline for $account_var" + fi + + # Create SRT trustline only for TESTANCHOR_DISTRIBUTION_SECRET + if [[ "$account_var" == "TESTANCHOR_DISTRIBUTION_SECRET" ]]; then + if stellar tx new change-trust \ + --source-account "$account_secret" \ + --network testnet \ + --line "SRT:$srt_issuer"; then + log_success "SRT trustline created for $account_var" + else + log_warning "Failed to create SRT trustline for $account_var" + fi + fi fi sleep 1 done @@ -104,8 +127,10 @@ issue_and_fund_usdc() { local usdc_issuer_secret="$USDC_ISSUER_SECRET" local usdc_issuer_public="${USDC_ISSUER_PUBLIC:-GDQOE23CFSUMSVQK4Y5JHPPYK73VYCNHZHA7ENKCV37P6SUEO6XQBKPP}" + # Fund USDC issuer fund_account "$usdc_issuer_public" + # Fund USDC to test accounts local recipient_accounts=( "TEST_CLIENT_WALLET_SECRET:GDJLBYYKMCXNVVNABOE66NYXQGIA5AC5D223Z2KF6ZEYK4UBCA7FKLTG" "TEST_WITHDRAW_FUND_CLIENT_SECRET_1:GDC2U5GRKUSPGV5XENLBWKQZH2C4PG7ZEVMQOUA2QZKIRXE5FYYEMEF7" @@ -135,6 +160,30 @@ issue_and_fund_usdc() { log_warning "Skipping $account_var (no secret key found)" fi done + +} + +issue_and_fund_srt() { + log_info "Issuing SRT and funding test anchor distribution account..." + local srt_issuer_secret="$SRT_ISSUER_SECRET" + local srt_issuer_public="${SRT_ISSUER_PUBLIC:-GCDNJUBQSX7AJWLJACMJ7I4BC3Z47BQUTMHEICZLE6MU4KQBRYG5JY6B}" + + # Fund SRT issuer + fund_account "$srt_issuer_public" + + # Fund SRT to test anchor distribution account + local anchor_dist_public="${TESTANCHOR_DISTRIBUTION_PUBLIC:-GABCKCYPAGDDQMSCTMSBO7C2L34NU3XXCW7LR4VVSWCCXMAJY3B4YCZP}" + log_info "Sending 1000000 SRT to test anchor distribution account..." + if stellar tx new payment \ + --source-account "$srt_issuer_secret" \ + --destination "$anchor_dist_public" \ + --asset "SRT:$srt_issuer_public" \ + --amount 10000000000000 \ + --network testnet; then + log_success "Sent 1000000 SRT to test anchor distribution account" + else + log_warning "Failed to send SRT to test anchor distribution account" + fi } reset_multisig() { @@ -228,6 +277,7 @@ main() { reset_multisig setup_trustlines issue_and_fund_usdc + issue_and_fund_srt deploy_contracts log_success "✨ Testnet setup completed!" } From 93298a218efdd0cf8f951069899e9435ba7c4887 Mon Sep 17 00:00:00 2001 From: philipliu Date: Wed, 18 Jun 2025 18:44:31 -0400 Subject: [PATCH 03/16] Fix SEP-10 signer public key --- scripts/testnet_reset.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/testnet_reset.sh b/scripts/testnet_reset.sh index d52fd82673..4ec745ed6e 100755 --- a/scripts/testnet_reset.sh +++ b/scripts/testnet_reset.sh @@ -48,7 +48,7 @@ fund_account() { fund_test_accounts() { log_info "Funding test accounts..." local accounts=( - "SECRET_SEP10_SIGNING_SEED:GDAHPZ2NSYIIHZXM56Y36SBVTV5QKFIZGYMMBHOU53ETUSWTP62B63EQ" + "SECRET_SEP10_SIGNING_SEED:GCHLHDBOKG2JWMJQBTLSL5XG6NO7ESXI2TAQKZXCXWXB5WI2X6W233PR" "TEST_CLIENT_WALLET_SECRET:GDJLBYYKMCXNVVNABOE66NYXQGIA5AC5D223Z2KF6ZEYK4UBCA7FKLTG" "TEST_CLIENT_WALLET_EXTRA_SIGNER_1_SECRET:GC6X2ANA2OS3O2ESHUV6X44NH6J46EP2EO2JB7563Y7DYOIXFKHMHJ5O" "TEST_CLIENT_WALLET_EXTRA_SIGNER_2_SECRET:GATEYCIMJZ2F6Y437QSYH4XFQ6HLD5YP4MBJZFFPZVEQDJOY4QTCB7BB" @@ -56,6 +56,7 @@ fund_test_accounts() { "TEST_WITHDRAW_FUND_CLIENT_SECRET_2:GASI56WX7UKIDFPZRCQEI4OQE3V3QBGXEOB4ZY6ZMU5MZXPHQHIDA7JU" "TEST_DEPOSIT_FUND_CLIENT_SECRET_1:GD4C2QRT7YL4WJFJPYQCYRXEDBB7ERHC3XZGWR6KXKRHPEFXXNXIVNFY" "TEST_DEPOSIT_FUND_CLIENT_SECRET_2:GC56VTOVOJDRQAJRYLZW6DLQGVTQSYDTZU7ISNIZ2VJIE3FYWI2HMD5G" + "USDC_ISSUER_SECRET:GDQOE23CFSUMSVQK4Y5JHPPYK73VYCNHZHA7ENKCV37P6SUEO6XQBKPP" "SRT_ISSUER_SECRET:GCDNJUBQSX7AJWLJACMJ7I4BC3Z47BQUTMHEICZLE6MU4KQBRYG5JY6B" "TESTANCHOR_DISTRIBUTION_SECRET:GABCKCYPAGDDQMSCTMSBO7C2L34NU3XXCW7LR4VVSWCCXMAJY3B4YCZP" ) @@ -238,7 +239,7 @@ deploy_contracts() { log_info "Deploying web auth contract..." local webauth_deployer_secret="$SECRET_SEP10_SIGNING_SEED" - local webauth_deployer_public="GDAHPZ2NSYIIHZXM56Y36SBVTV5QKFIZGYMMBHOU53ETUSWTP62B63EQ" + local webauth_deployer_public="GCHLHDBOKG2JWMJQBTLSL5XG6NO7ESXI2TAQKZXCXWXB5WI2X6W233PR" local webauth_contract_result=$(stellar contract deploy \ --wasm target/wasm32-unknown-unknown/release/web_auth.wasm \ From 3c1402ff51e29a4ae7f27c9f3a08aa2a7b5040b6 Mon Sep 17 00:00:00 2001 From: philipliu Date: Wed, 18 Jun 2025 18:48:52 -0400 Subject: [PATCH 04/16] Only issue Circle USDC to testanchor account --- scripts/testnet_reset.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/scripts/testnet_reset.sh b/scripts/testnet_reset.sh index 4ec745ed6e..a276e4f4a5 100755 --- a/scripts/testnet_reset.sh +++ b/scripts/testnet_reset.sh @@ -98,15 +98,6 @@ setup_trustlines() { log_warning "Failed to create Anchor USDC trustline for $account_var" fi - if stellar tx new change-trust \ - --source-account "$account_secret" \ - --network testnet \ - --line "USDC:$circle_usdc_issuer"; then - log_success "Circle USDC trustline created for $account_var" - else - log_warning "Failed to create Circle USDC trustline for $account_var" - fi - # Create SRT trustline only for TESTANCHOR_DISTRIBUTION_SECRET if [[ "$account_var" == "TESTANCHOR_DISTRIBUTION_SECRET" ]]; then if stellar tx new change-trust \ @@ -117,6 +108,15 @@ setup_trustlines() { else log_warning "Failed to create SRT trustline for $account_var" fi + + if stellar tx new change-trust \ + --source-account "$account_secret" \ + --network testnet \ + --line "USDC:$circle_usdc_issuer"; then + log_success "Circle USDC trustline created for $account_var" + else + log_warning "Failed to create Circle USDC trustline for $account_var" + fi fi fi sleep 1 From abd696691bec8d935df13e8047e02b1da529292f Mon Sep 17 00:00:00 2001 From: philipliu Date: Wed, 18 Jun 2025 19:14:08 -0400 Subject: [PATCH 05/16] Fund distribution account --- scripts/testnet_reset.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/testnet_reset.sh b/scripts/testnet_reset.sh index a276e4f4a5..4bba521942 100755 --- a/scripts/testnet_reset.sh +++ b/scripts/testnet_reset.sh @@ -138,6 +138,7 @@ issue_and_fund_usdc() { "TEST_WITHDRAW_FUND_CLIENT_SECRET_2:GASI56WX7UKIDFPZRCQEI4OQE3V3QBGXEOB4ZY6ZMU5MZXPHQHIDA7JU" "TEST_DEPOSIT_FUND_CLIENT_SECRET_1:GD4C2QRT7YL4WJFJPYQCYRXEDBB7ERHC3XZGWR6KXKRHPEFXXNXIVNFY" "TEST_DEPOSIT_FUND_CLIENT_SECRET_2:GC56VTOVOJDRQAJRYLZW6DLQGVTQSYDTZU7ISNIZ2VJIE3FYWI2HMD5G" + "TESTANCHOR_DISTRIBUTION_SECRET:GABCKCYPAGDDQMSCTMSBO7C2L34NU3XXCW7LR4VVSWCCXMAJY3B4YCZP" ) for recipient_info in "${recipient_accounts[@]}"; do From 0a3125c26039c8dfb1385acfb1be5d23b771ec2f Mon Sep 17 00:00:00 2001 From: philipliu Date: Wed, 18 Jun 2025 19:34:07 -0400 Subject: [PATCH 06/16] Ancho receive account --- scripts/testnet_reset.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/testnet_reset.sh b/scripts/testnet_reset.sh index 4bba521942..871bf71021 100755 --- a/scripts/testnet_reset.sh +++ b/scripts/testnet_reset.sh @@ -59,6 +59,7 @@ fund_test_accounts() { "USDC_ISSUER_SECRET:GDQOE23CFSUMSVQK4Y5JHPPYK73VYCNHZHA7ENKCV37P6SUEO6XQBKPP" "SRT_ISSUER_SECRET:GCDNJUBQSX7AJWLJACMJ7I4BC3Z47BQUTMHEICZLE6MU4KQBRYG5JY6B" "TESTANCHOR_DISTRIBUTION_SECRET:GABCKCYPAGDDQMSCTMSBO7C2L34NU3XXCW7LR4VVSWCCXMAJY3B4YCZP" + "TESTANCHOR_RECEIVE_SECRET:GBN4NNCDGJO4XW4KQU3CBIESUJWFVBUZPOKUZHT7W7WRB7CWOA7BXVQF" ) for account_info in "${accounts[@]}"; do @@ -83,6 +84,7 @@ setup_trustlines() { "TEST_DEPOSIT_FUND_CLIENT_SECRET_1" "TEST_DEPOSIT_FUND_CLIENT_SECRET_2" "TESTANCHOR_DISTRIBUTION_SECRET" + "TESTANCHOR_RECEIVE_SECRET" ) for account_var in "${accounts[@]}"; do @@ -98,8 +100,8 @@ setup_trustlines() { log_warning "Failed to create Anchor USDC trustline for $account_var" fi - # Create SRT trustline only for TESTANCHOR_DISTRIBUTION_SECRET - if [[ "$account_var" == "TESTANCHOR_DISTRIBUTION_SECRET" ]]; then + # Create SRT trustline only for TESTANCHOR_DISTRIBUTION_SECRET or TESTANCHOR_RECEIVE_SECRET + if [[ "$account_var" == "TESTANCHOR_DISTRIBUTION_SECRET" || "$account_var" == "TESTANCHOR_RECEIVE_SECRET" ]]; then if stellar tx new change-trust \ --source-account "$account_secret" \ --network testnet \ @@ -139,6 +141,7 @@ issue_and_fund_usdc() { "TEST_DEPOSIT_FUND_CLIENT_SECRET_1:GD4C2QRT7YL4WJFJPYQCYRXEDBB7ERHC3XZGWR6KXKRHPEFXXNXIVNFY" "TEST_DEPOSIT_FUND_CLIENT_SECRET_2:GC56VTOVOJDRQAJRYLZW6DLQGVTQSYDTZU7ISNIZ2VJIE3FYWI2HMD5G" "TESTANCHOR_DISTRIBUTION_SECRET:GABCKCYPAGDDQMSCTMSBO7C2L34NU3XXCW7LR4VVSWCCXMAJY3B4YCZP" + "TESTANCHOR_RECEIVE_SECRET:GBN4NNCDGJO4XW4KQU3CBIESUJWFVBUZPOKUZHT7W7WRB7CWOA7BXVQF" ) for recipient_info in "${recipient_accounts[@]}"; do From 440283992624087758fb0c9b7d93f69c44f18c78 Mon Sep 17 00:00:00 2001 From: philipliu Date: Fri, 19 Dec 2025 17:14:48 -0500 Subject: [PATCH 07/16] Update --- scripts/testnet_reset.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/scripts/testnet_reset.sh b/scripts/testnet_reset.sh index 871bf71021..8fe6163e2d 100755 --- a/scripts/testnet_reset.sh +++ b/scripts/testnet_reset.sh @@ -52,6 +52,7 @@ fund_test_accounts() { "TEST_CLIENT_WALLET_SECRET:GDJLBYYKMCXNVVNABOE66NYXQGIA5AC5D223Z2KF6ZEYK4UBCA7FKLTG" "TEST_CLIENT_WALLET_EXTRA_SIGNER_1_SECRET:GC6X2ANA2OS3O2ESHUV6X44NH6J46EP2EO2JB7563Y7DYOIXFKHMHJ5O" "TEST_CLIENT_WALLET_EXTRA_SIGNER_2_SECRET:GATEYCIMJZ2F6Y437QSYH4XFQ6HLD5YP4MBJZFFPZVEQDJOY4QTCB7BB" + "OTHER_SEP10_SIGNING_SECRET:GBDYDBJKQBJK4GY4V7FAONSFF2IBJSKNTBYJ65F5KCGBY2BIGPGGLJOH" "TEST_WITHDRAW_FUND_CLIENT_SECRET_1:GDC2U5GRKUSPGV5XENLBWKQZH2C4PG7ZEVMQOUA2QZKIRXE5FYYEMEF7" "TEST_WITHDRAW_FUND_CLIENT_SECRET_2:GASI56WX7UKIDFPZRCQEI4OQE3V3QBGXEOB4ZY6ZMU5MZXPHQHIDA7JU" "TEST_DEPOSIT_FUND_CLIENT_SECRET_1:GD4C2QRT7YL4WJFJPYQCYRXEDBB7ERHC3XZGWR6KXKRHPEFXXNXIVNFY" @@ -60,6 +61,7 @@ fund_test_accounts() { "SRT_ISSUER_SECRET:GCDNJUBQSX7AJWLJACMJ7I4BC3Z47BQUTMHEICZLE6MU4KQBRYG5JY6B" "TESTANCHOR_DISTRIBUTION_SECRET:GABCKCYPAGDDQMSCTMSBO7C2L34NU3XXCW7LR4VVSWCCXMAJY3B4YCZP" "TESTANCHOR_RECEIVE_SECRET:GBN4NNCDGJO4XW4KQU3CBIESUJWFVBUZPOKUZHT7W7WRB7CWOA7BXVQF" + "SECRET__KEY:GAJ3JPQH3ISAZBMRUPKQ6ZQLRXIROCKJKBIYMGPFUEETQEDGFAW4IQ5H" ) for account_info in "${accounts[@]}"; do @@ -85,6 +87,8 @@ setup_trustlines() { "TEST_DEPOSIT_FUND_CLIENT_SECRET_2" "TESTANCHOR_DISTRIBUTION_SECRET" "TESTANCHOR_RECEIVE_SECRET" + "OTHER_SEP10_SIGNING_SECRET" + "SECRET__KEY" ) for account_var in "${accounts[@]}"; do @@ -116,9 +120,21 @@ setup_trustlines() { --network testnet \ --line "USDC:$circle_usdc_issuer"; then log_success "Circle USDC trustline created for $account_var" + elif [[ "$account_var" == "OTHER_SEP10_SIGNING_SECRET" ]]; then + log_warning "Failed to create Circle USDC trustline for test payment destination ($account_var)" else log_warning "Failed to create Circle USDC trustline for $account_var" fi + elif [[ "$account_var" == "OTHER_SEP10_SIGNING_SECRET" ]]; then + # The test payment destination only needs Circle USDC + if stellar tx new change-trust \ + --source-account "$account_secret" \ + --network testnet \ + --line "USDC:$circle_usdc_issuer"; then + log_success "Circle USDC trustline created for test payment destination" + else + log_warning "Failed to create Circle USDC trustline for test payment destination ($account_var)" + fi fi fi sleep 1 @@ -142,6 +158,7 @@ issue_and_fund_usdc() { "TEST_DEPOSIT_FUND_CLIENT_SECRET_2:GC56VTOVOJDRQAJRYLZW6DLQGVTQSYDTZU7ISNIZ2VJIE3FYWI2HMD5G" "TESTANCHOR_DISTRIBUTION_SECRET:GABCKCYPAGDDQMSCTMSBO7C2L34NU3XXCW7LR4VVSWCCXMAJY3B4YCZP" "TESTANCHOR_RECEIVE_SECRET:GBN4NNCDGJO4XW4KQU3CBIESUJWFVBUZPOKUZHT7W7WRB7CWOA7BXVQF" + "OTHER_SEP10_SIGNING_SECRET:GBDYDBJKQBJK4GY4V7FAONSFF2IBJSKNTBYJ65F5KCGBY2BIGPGGLJOH" ) for recipient_info in "${recipient_accounts[@]}"; do From 99fcca7512997f609fa7f8b2901cc0a68a8594c6 Mon Sep 17 00:00:00 2001 From: Amanda Gonsalves <64379712+amandagonsalves@users.noreply.github.com> Date: Wed, 10 Jun 2026 15:41:58 -0300 Subject: [PATCH 08/16] feat(workflow): add testnet reset workflow * add new github actions workflow for manual testnet resets * update workflow to install rust, stellar cli, and stellar sdk dependencies * add environment variables for various testnet accounts and secrets --- .github/workflows/on_testnet_reset.yml | 43 ++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 .github/workflows/on_testnet_reset.yml diff --git a/.github/workflows/on_testnet_reset.yml b/.github/workflows/on_testnet_reset.yml new file mode 100644 index 0000000000..79d47f4c2a --- /dev/null +++ b/.github/workflows/on_testnet_reset.yml @@ -0,0 +1,43 @@ +name: Testnet Reset + +on: + workflow_dispatch: + +jobs: + testnet_reset: + name: Run Testnet Reset + runs-on: ubuntu-latest + env: + SECRET_SEP10_SIGNING_SEED: ${{ vars.SECRET_SEP10_SIGNING_SEED }} + TEST_CLIENT_WALLET_SECRET: ${{ vars.TEST_CLIENT_WALLET_SECRET }} + TEST_CLIENT_WALLET_EXTRA_SIGNER_1_SECRET: ${{ vars.TEST_CLIENT_WALLET_EXTRA_SIGNER_1_SECRET }} + TEST_CLIENT_WALLET_EXTRA_SIGNER_2_SECRET: ${{ vars.TEST_CLIENT_WALLET_EXTRA_SIGNER_2_SECRET }} + OTHER_SEP10_SIGNING_SECRET: ${{ secrets.OTHER_SEP10_SIGNING_SECRET }} + TEST_WITHDRAW_FUND_CLIENT_SECRET_1: ${{ vars.TEST_WITHDRAW_FUND_CLIENT_SECRET_1 }} + TEST_WITHDRAW_FUND_CLIENT_SECRET_2: ${{ vars.TEST_WITHDRAW_FUND_CLIENT_SECRET_2 }} + TEST_DEPOSIT_FUND_CLIENT_SECRET_1: ${{ vars.TEST_DEPOSIT_FUND_CLIENT_SECRET_1 }} + TEST_DEPOSIT_FUND_CLIENT_SECRET_2: ${{ vars.TEST_DEPOSIT_FUND_CLIENT_SECRET_2 }} + USDC_ISSUER_SECRET: ${{ secrets.USDC_ISSUER_SECRET }} + SRT_ISSUER_SECRET: ${{ secrets.SRT_ISSUER_SECRET }} + TESTANCHOR_DISTRIBUTION_SECRET: ${{ secrets.TESTANCHOR_DISTRIBUTION_SECRET }} + TESTANCHOR_RECEIVE_SECRET: ${{ secrets.TESTANCHOR_RECEIVE_SECRET }} + SECRET__KEY: ${{ vars.SECRET__KEY }} + CLIENT_WALLET_PK_BYTES: ${{ vars.CLIENT_WALLET_PK_BYTES }} + steps: + - name: Checkout the repository + uses: actions/checkout@v4 + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + with: + targets: wasm32-unknown-unknown + + - name: Install Stellar CLI + run: cargo install --locked stellar-cli --features opt + + - name: Install stellar-sdk Python package + run: pip install stellar-sdk + + - name: Run testnet reset + working-directory: scripts + run: bash testnet_reset.sh From f5d6edfd8979402372de1ca2f12f8778f2401744 Mon Sep 17 00:00:00 2001 From: Amanda Gonsalves <64379712+amandagonsalves@users.noreply.github.com> Date: Wed, 10 Jun 2026 15:42:55 -0300 Subject: [PATCH 09/16] refactor(scripts): derive public keys dynamically * add python3 and stellar-sdk prerequisites * update .env loading to be optional, relying on environment variables if not present * add public_key helper function to derive stellar public keys from secret keys * refactor all script sections to use dynamically derived public keys from secret keys * update usdc funding amount --- scripts/testnet_reset.sh | 153 ++++++++++++++++++++++----------------- 1 file changed, 86 insertions(+), 67 deletions(-) diff --git a/scripts/testnet_reset.sh b/scripts/testnet_reset.sh index 8fe6163e2d..18ac900f32 100755 --- a/scripts/testnet_reset.sh +++ b/scripts/testnet_reset.sh @@ -26,17 +26,30 @@ check_prerequisites() { log_error "Rust not installed" exit 1 } + command -v python3 &>/dev/null || { + log_error "python3 not installed" + exit 1 + } + python3 -c "from stellar_sdk import Keypair" 2>/dev/null || { + log_error "stellar-sdk Python package not installed (pip install stellar-sdk)" + exit 1 + } log_success "Prerequisites check passed" } load_env() { log_info "Loading environment..." - [[ -f "../.env" ]] || { - log_error ".env file not found" - exit 1 - } - source ../.env - log_success "Environment loaded" + if [[ -f "../.env" ]]; then + source ../.env + log_success "Environment loaded from .env" + else + log_info "No .env file found, relying on environment variables" + fi +} + +# Derive the Stellar public key (G...) from a secret key (S...) +public_key() { + python3 -c "from stellar_sdk import Keypair; print(Keypair.from_secret('$1').public_key)" } fund_account() { @@ -47,28 +60,29 @@ fund_account() { fund_test_accounts() { log_info "Funding test accounts..." - local accounts=( - "SECRET_SEP10_SIGNING_SEED:GCHLHDBOKG2JWMJQBTLSL5XG6NO7ESXI2TAQKZXCXWXB5WI2X6W233PR" - "TEST_CLIENT_WALLET_SECRET:GDJLBYYKMCXNVVNABOE66NYXQGIA5AC5D223Z2KF6ZEYK4UBCA7FKLTG" - "TEST_CLIENT_WALLET_EXTRA_SIGNER_1_SECRET:GC6X2ANA2OS3O2ESHUV6X44NH6J46EP2EO2JB7563Y7DYOIXFKHMHJ5O" - "TEST_CLIENT_WALLET_EXTRA_SIGNER_2_SECRET:GATEYCIMJZ2F6Y437QSYH4XFQ6HLD5YP4MBJZFFPZVEQDJOY4QTCB7BB" - "OTHER_SEP10_SIGNING_SECRET:GBDYDBJKQBJK4GY4V7FAONSFF2IBJSKNTBYJ65F5KCGBY2BIGPGGLJOH" - "TEST_WITHDRAW_FUND_CLIENT_SECRET_1:GDC2U5GRKUSPGV5XENLBWKQZH2C4PG7ZEVMQOUA2QZKIRXE5FYYEMEF7" - "TEST_WITHDRAW_FUND_CLIENT_SECRET_2:GASI56WX7UKIDFPZRCQEI4OQE3V3QBGXEOB4ZY6ZMU5MZXPHQHIDA7JU" - "TEST_DEPOSIT_FUND_CLIENT_SECRET_1:GD4C2QRT7YL4WJFJPYQCYRXEDBB7ERHC3XZGWR6KXKRHPEFXXNXIVNFY" - "TEST_DEPOSIT_FUND_CLIENT_SECRET_2:GC56VTOVOJDRQAJRYLZW6DLQGVTQSYDTZU7ISNIZ2VJIE3FYWI2HMD5G" - "USDC_ISSUER_SECRET:GDQOE23CFSUMSVQK4Y5JHPPYK73VYCNHZHA7ENKCV37P6SUEO6XQBKPP" - "SRT_ISSUER_SECRET:GCDNJUBQSX7AJWLJACMJ7I4BC3Z47BQUTMHEICZLE6MU4KQBRYG5JY6B" - "TESTANCHOR_DISTRIBUTION_SECRET:GABCKCYPAGDDQMSCTMSBO7C2L34NU3XXCW7LR4VVSWCCXMAJY3B4YCZP" - "TESTANCHOR_RECEIVE_SECRET:GBN4NNCDGJO4XW4KQU3CBIESUJWFVBUZPOKUZHT7W7WRB7CWOA7BXVQF" - "SECRET__KEY:GAJ3JPQH3ISAZBMRUPKQ6ZQLRXIROCKJKBIYMGPFUEETQEDGFAW4IQ5H" + local secret_vars=( + "SECRET_SEP10_SIGNING_SEED" + "TEST_CLIENT_WALLET_SECRET" + "TEST_CLIENT_WALLET_EXTRA_SIGNER_1_SECRET" + "TEST_CLIENT_WALLET_EXTRA_SIGNER_2_SECRET" + "OTHER_SEP10_SIGNING_SECRET" + "TEST_WITHDRAW_FUND_CLIENT_SECRET_1" + "TEST_WITHDRAW_FUND_CLIENT_SECRET_2" + "TEST_DEPOSIT_FUND_CLIENT_SECRET_1" + "TEST_DEPOSIT_FUND_CLIENT_SECRET_2" + "USDC_ISSUER_SECRET" + "SRT_ISSUER_SECRET" + "TESTANCHOR_DISTRIBUTION_SECRET" + "TESTANCHOR_RECEIVE_SECRET" + "SECRET__KEY" ) - for account_info in "${accounts[@]}"; do - local secret_var="${account_info%%:*}" - local public_key="${account_info##*:}" - if [[ -n "${!secret_var}" ]]; then - fund_account "$public_key" + for secret_var in "${secret_vars[@]}"; do + local secret="${!secret_var}" + if [[ -n "$secret" ]]; then + fund_account "$(public_key "$secret")" + else + log_warning "Skipping $secret_var (not set)" fi sleep 1 done @@ -76,9 +90,12 @@ fund_test_accounts() { setup_trustlines() { log_info "Setting up trustlines..." - local usdc_issuer="${USDC_ISSUER_PUBLIC:-GDQOE23CFSUMSVQK4Y5JHPPYK73VYCNHZHA7ENKCV37P6SUEO6XQBKPP}" + local usdc_issuer + usdc_issuer="$(public_key "$USDC_ISSUER_SECRET")" local circle_usdc_issuer="GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5" - local srt_issuer="${SRT_ISSUER_PUBLIC:-GCDNJUBQSX7AJWLJACMJ7I4BC3Z47BQUTMHEICZLE6MU4KQBRYG5JY6B}" + local srt_issuer + srt_issuer="$(public_key "$SRT_ISSUER_SECRET")" + local accounts=( "TEST_CLIENT_WALLET_SECRET" "TEST_WITHDRAW_FUND_CLIENT_SECRET_1" @@ -94,7 +111,6 @@ setup_trustlines() { for account_var in "${accounts[@]}"; do local account_secret="${!account_var}" if [[ -n "$account_secret" ]]; then - # Create USDC trustlines if stellar tx new change-trust \ --source-account "$account_secret" \ --network testnet \ @@ -104,7 +120,6 @@ setup_trustlines() { log_warning "Failed to create Anchor USDC trustline for $account_var" fi - # Create SRT trustline only for TESTANCHOR_DISTRIBUTION_SECRET or TESTANCHOR_RECEIVE_SECRET if [[ "$account_var" == "TESTANCHOR_DISTRIBUTION_SECRET" || "$account_var" == "TESTANCHOR_RECEIVE_SECRET" ]]; then if stellar tx new change-trust \ --source-account "$account_secret" \ @@ -120,13 +135,10 @@ setup_trustlines() { --network testnet \ --line "USDC:$circle_usdc_issuer"; then log_success "Circle USDC trustline created for $account_var" - elif [[ "$account_var" == "OTHER_SEP10_SIGNING_SECRET" ]]; then - log_warning "Failed to create Circle USDC trustline for test payment destination ($account_var)" else log_warning "Failed to create Circle USDC trustline for $account_var" fi elif [[ "$account_var" == "OTHER_SEP10_SIGNING_SECRET" ]]; then - # The test payment destination only needs Circle USDC if stellar tx new change-trust \ --source-account "$account_secret" \ --network testnet \ @@ -144,57 +156,54 @@ setup_trustlines() { issue_and_fund_usdc() { log_info "Issuing USDC and funding accounts..." local usdc_issuer_secret="$USDC_ISSUER_SECRET" - local usdc_issuer_public="${USDC_ISSUER_PUBLIC:-GDQOE23CFSUMSVQK4Y5JHPPYK73VYCNHZHA7ENKCV37P6SUEO6XQBKPP}" + local usdc_issuer_public + usdc_issuer_public="$(public_key "$usdc_issuer_secret")" - # Fund USDC issuer fund_account "$usdc_issuer_public" - # Fund USDC to test accounts - local recipient_accounts=( - "TEST_CLIENT_WALLET_SECRET:GDJLBYYKMCXNVVNABOE66NYXQGIA5AC5D223Z2KF6ZEYK4UBCA7FKLTG" - "TEST_WITHDRAW_FUND_CLIENT_SECRET_1:GDC2U5GRKUSPGV5XENLBWKQZH2C4PG7ZEVMQOUA2QZKIRXE5FYYEMEF7" - "TEST_WITHDRAW_FUND_CLIENT_SECRET_2:GASI56WX7UKIDFPZRCQEI4OQE3V3QBGXEOB4ZY6ZMU5MZXPHQHIDA7JU" - "TEST_DEPOSIT_FUND_CLIENT_SECRET_1:GD4C2QRT7YL4WJFJPYQCYRXEDBB7ERHC3XZGWR6KXKRHPEFXXNXIVNFY" - "TEST_DEPOSIT_FUND_CLIENT_SECRET_2:GC56VTOVOJDRQAJRYLZW6DLQGVTQSYDTZU7ISNIZ2VJIE3FYWI2HMD5G" - "TESTANCHOR_DISTRIBUTION_SECRET:GABCKCYPAGDDQMSCTMSBO7C2L34NU3XXCW7LR4VVSWCCXMAJY3B4YCZP" - "TESTANCHOR_RECEIVE_SECRET:GBN4NNCDGJO4XW4KQU3CBIESUJWFVBUZPOKUZHT7W7WRB7CWOA7BXVQF" - "OTHER_SEP10_SIGNING_SECRET:GBDYDBJKQBJK4GY4V7FAONSFF2IBJSKNTBYJ65F5KCGBY2BIGPGGLJOH" + local recipient_vars=( + "TEST_CLIENT_WALLET_SECRET" + "TEST_WITHDRAW_FUND_CLIENT_SECRET_1" + "TEST_WITHDRAW_FUND_CLIENT_SECRET_2" + "TEST_DEPOSIT_FUND_CLIENT_SECRET_1" + "TEST_DEPOSIT_FUND_CLIENT_SECRET_2" + "TESTANCHOR_DISTRIBUTION_SECRET" + "TESTANCHOR_RECEIVE_SECRET" + "OTHER_SEP10_SIGNING_SECRET" ) - for recipient_info in "${recipient_accounts[@]}"; do - local account_var="${recipient_info%%:*}" - local recipient_public="${recipient_info##*:}" + for account_var in "${recipient_vars[@]}"; do local account_secret="${!account_var}" - if [[ -n "$account_secret" ]]; then - log_info "Sending 1000 USDC to $account_var ($recipient_public)..." + local recipient_public + recipient_public="$(public_key "$account_secret")" + log_info "Sending 10000 USDC to $account_var ($recipient_public)..." if stellar tx new payment \ --source-account "$usdc_issuer_secret" \ --destination "$recipient_public" \ --asset "USDC:$usdc_issuer_public" \ --amount 10000000000 \ --network testnet; then - log_success "Sent 1000 USDC to $account_var" + log_success "Sent 10000 USDC to $account_var" else log_warning "Failed to send USDC to $account_var" fi else - log_warning "Skipping $account_var (no secret key found)" + log_warning "Skipping $account_var (not set)" fi done - } issue_and_fund_srt() { log_info "Issuing SRT and funding test anchor distribution account..." local srt_issuer_secret="$SRT_ISSUER_SECRET" - local srt_issuer_public="${SRT_ISSUER_PUBLIC:-GCDNJUBQSX7AJWLJACMJ7I4BC3Z47BQUTMHEICZLE6MU4KQBRYG5JY6B}" - - # Fund SRT issuer + local srt_issuer_public + srt_issuer_public="$(public_key "$srt_issuer_secret")" + fund_account "$srt_issuer_public" - # Fund SRT to test anchor distribution account - local anchor_dist_public="${TESTANCHOR_DISTRIBUTION_PUBLIC:-GABCKCYPAGDDQMSCTMSBO7C2L34NU3XXCW7LR4VVSWCCXMAJY3B4YCZP}" + local anchor_dist_public + anchor_dist_public="$(public_key "$TESTANCHOR_DISTRIBUTION_SECRET")" log_info "Sending 1000000 SRT to test anchor distribution account..." if stellar tx new payment \ --source-account "$srt_issuer_secret" \ @@ -212,8 +221,10 @@ reset_multisig() { log_info "Ensuring signers are present with 1/1/1 thresholds..." local primary_secret="$TEST_CLIENT_WALLET_SECRET" - local signer1_public="GC6X2ANA2OS3O2ESHUV6X44NH6J46EP2EO2JB7563Y7DYOIXFKHMHJ5O" - local signer2_public="GATEYCIMJZ2F6Y437QSYH4XFQ6HLD5YP4MBJZFFPZVEQDJOY4QTCB7BB" + local signer1_public + signer1_public="$(public_key "$TEST_CLIENT_WALLET_EXTRA_SIGNER_1_SECRET")" + local signer2_public + signer2_public="$(public_key "$TEST_CLIENT_WALLET_EXTRA_SIGNER_2_SECRET")" stellar tx new set-options \ --source-account "$primary_secret" \ @@ -234,7 +245,8 @@ deploy_contracts() { log_info "Deploying contracts..." local deployer_secret="$TEST_CLIENT_WALLET_SECRET" - local deployer_public="GDJLBYYKMCXNVVNABOE66NYXQGIA5AC5D223Z2KF6ZEYK4UBCA7FKLTG" + local deployer_public + deployer_public="$(public_key "$deployer_secret")" log_info "Using $deployer_public as contract deployer" @@ -242,7 +254,8 @@ deploy_contracts() { stellar contract build log_info "Deploying account contract..." - local account_contract_result=$(stellar contract deploy \ + local account_contract_result + account_contract_result=$(stellar contract deploy \ --wasm target/wasm32-unknown-unknown/release/account.wasm \ --source-account "$deployer_secret" \ --network testnet \ @@ -252,7 +265,8 @@ deploy_contracts() { --signer "$CLIENT_WALLET_PK_BYTES" 2>&1) if [[ $? -eq 0 ]]; then - local account_contract_id=$(echo "$account_contract_result" | tail -1) + local account_contract_id + account_contract_id=$(echo "$account_contract_result" | tail -1) log_success "Account contract deployed: $account_contract_id" else log_warning "Account contract deployment skipped (already exists)" @@ -260,9 +274,11 @@ deploy_contracts() { log_info "Deploying web auth contract..." local webauth_deployer_secret="$SECRET_SEP10_SIGNING_SEED" - local webauth_deployer_public="GCHLHDBOKG2JWMJQBTLSL5XG6NO7ESXI2TAQKZXCXWXB5WI2X6W233PR" + local webauth_deployer_public + webauth_deployer_public="$(public_key "$webauth_deployer_secret")" - local webauth_contract_result=$(stellar contract deploy \ + local webauth_contract_result + webauth_contract_result=$(stellar contract deploy \ --wasm target/wasm32-unknown-unknown/release/web_auth.wasm \ --source-account "$webauth_deployer_secret" \ --network testnet \ @@ -271,17 +287,20 @@ deploy_contracts() { --admin "$webauth_deployer_public" 2>&1) if [[ $? -eq 0 ]]; then - local webauth_contract_id=$(echo "$webauth_contract_result" | tail -1) + local webauth_contract_id + webauth_contract_id=$(echo "$webauth_contract_result" | tail -1) log_success "Web auth contract deployed: $webauth_contract_id" else log_warning "Web auth contract deployment skipped (already exists)" fi + local usdc_issuer_public + usdc_issuer_public="$(public_key "$USDC_ISSUER_SECRET")" log_info "Deploying USDC asset contract..." if stellar contract asset deploy \ --source "$deployer_secret" \ --network testnet \ - --asset USDC:GDQOE23CFSUMSVQK4Y5JHPPYK73VYCNHZHA7ENKCV37P6SUEO6XQBKPP 2>/dev/null; then + --asset "USDC:$usdc_issuer_public" 2>/dev/null; then log_success "USDC asset contract deployed" else log_warning "USDC asset contract deployment skipped (already exists)" From f7b7b2ff6e20c106b4dcec9e8c968de9613d1ac5 Mon Sep 17 00:00:00 2001 From: Amanda Gonsalves <64379712+amandagonsalves@users.noreply.github.com> Date: Mon, 15 Jun 2026 15:38:53 -0300 Subject: [PATCH 10/16] Potential fix for pull request finding 'CodeQL / Workflow does not contain permissions' Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --- .github/workflows/on_testnet_reset.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/on_testnet_reset.yml b/.github/workflows/on_testnet_reset.yml index 79d47f4c2a..40c664c73e 100644 --- a/.github/workflows/on_testnet_reset.yml +++ b/.github/workflows/on_testnet_reset.yml @@ -3,6 +3,9 @@ name: Testnet Reset on: workflow_dispatch: +permissions: + contents: read + jobs: testnet_reset: name: Run Testnet Reset From c30fa9ddeb1937aa76e83aef6ef7f6bd7934e951 Mon Sep 17 00:00:00 2001 From: Amanda Gonsalves <64379712+amandagonsalves@users.noreply.github.com> Date: Mon, 15 Jun 2026 17:36:47 -0300 Subject: [PATCH 11/16] refactor(testnet): update key management for contract deployment * delete `CLIENT_WALLET_PK_BYTES` environment variable * add `pk_bytes` helper function to derive raw public key bytes * update contract deployment to derive signer public key from a secret * delete unused public keys from `.env.example` * add `OTHER_SEP10_SIGNING_SECRET` for testing purposes * update `TESTANCHOR_DISTRIBUTION_SECRET` to `TESTANCHOR_RECEIVE_SECRET` --- .env.example | 11 ++++------- .github/workflows/on_testnet_reset.yml | 1 - scripts/testnet_reset.sh | 7 ++++++- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/.env.example b/.env.example index 15a8b7ba31..4bd2a5c8ba 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,3 @@ -# TODO(ANCHOR-1016): Describe how to fill in these secrets - # Anchor Platform secrets SECRET_SEP10_SIGNING_SEED= @@ -20,16 +18,15 @@ TEST_WITHDRAW_FUND_CLIENT_SECRET_2= TEST_DEPOSIT_FUND_CLIENT_SECRET_1= TEST_DEPOSIT_FUND_CLIENT_SECRET_2= -CLIENT_WALLET_PK_BYTES= +# Used as a test payment destination with Circle USDC trustline +OTHER_SEP10_SIGNING_SECRET= # USDC issuer USDC_ISSUER_SECRET= -USDC_ISSUER_PUBLIC= # SRT issuer SRT_ISSUER_SECRET= -SRT_ISSUER_PUBLIC= -# Test Anchor Distribution Account +# Test Anchor accounts TESTANCHOR_DISTRIBUTION_SECRET= -TESTANCHOR_DISTRIBUTION_PUBLIC= +TESTANCHOR_RECEIVE_SECRET= diff --git a/.github/workflows/on_testnet_reset.yml b/.github/workflows/on_testnet_reset.yml index 40c664c73e..74c46b50af 100644 --- a/.github/workflows/on_testnet_reset.yml +++ b/.github/workflows/on_testnet_reset.yml @@ -25,7 +25,6 @@ jobs: TESTANCHOR_DISTRIBUTION_SECRET: ${{ secrets.TESTANCHOR_DISTRIBUTION_SECRET }} TESTANCHOR_RECEIVE_SECRET: ${{ secrets.TESTANCHOR_RECEIVE_SECRET }} SECRET__KEY: ${{ vars.SECRET__KEY }} - CLIENT_WALLET_PK_BYTES: ${{ vars.CLIENT_WALLET_PK_BYTES }} steps: - name: Checkout the repository uses: actions/checkout@v4 diff --git a/scripts/testnet_reset.sh b/scripts/testnet_reset.sh index 18ac900f32..4010c7a150 100755 --- a/scripts/testnet_reset.sh +++ b/scripts/testnet_reset.sh @@ -52,6 +52,11 @@ public_key() { python3 -c "from stellar_sdk import Keypair; print(Keypair.from_secret('$1').public_key)" } +# Derive the raw ed25519 public key bytes (hex) from a secret key (S...) +pk_bytes() { + python3 -c "from stellar_sdk import Keypair; print(Keypair.from_secret('$1').raw_public_key().hex())" +} + fund_account() { local public_key=$1 log_info "Funding: $public_key" @@ -262,7 +267,7 @@ deploy_contracts() { --salt 616e63686f722d706c6174666f726d \ -- \ --admin "$deployer_public" \ - --signer "$CLIENT_WALLET_PK_BYTES" 2>&1) + --signer "$(pk_bytes "$deployer_secret")" 2>&1) if [[ $? -eq 0 ]]; then local account_contract_id From a3701cd2b917eb47aa67ff6281192f977c33f42e Mon Sep 17 00:00:00 2001 From: Amanda Gonsalves <64379712+amandagonsalves@users.noreply.github.com> Date: Wed, 17 Jun 2026 17:39:30 -0300 Subject: [PATCH 12/16] refactor(ci/script): update secret handling and build process * refactor secrets in ci workflow * update rust wasm target * refactor secret key handling in script * update friendbot funding to handle errors * refactor contract deployment for robustness --- .github/workflows/on_testnet_reset.yml | 20 ++++++++++---------- scripts/testnet_reset.sh | 24 +++++++++++------------- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/.github/workflows/on_testnet_reset.yml b/.github/workflows/on_testnet_reset.yml index 74c46b50af..339d3d74f1 100644 --- a/.github/workflows/on_testnet_reset.yml +++ b/.github/workflows/on_testnet_reset.yml @@ -11,20 +11,20 @@ jobs: name: Run Testnet Reset runs-on: ubuntu-latest env: - SECRET_SEP10_SIGNING_SEED: ${{ vars.SECRET_SEP10_SIGNING_SEED }} - TEST_CLIENT_WALLET_SECRET: ${{ vars.TEST_CLIENT_WALLET_SECRET }} - TEST_CLIENT_WALLET_EXTRA_SIGNER_1_SECRET: ${{ vars.TEST_CLIENT_WALLET_EXTRA_SIGNER_1_SECRET }} - TEST_CLIENT_WALLET_EXTRA_SIGNER_2_SECRET: ${{ vars.TEST_CLIENT_WALLET_EXTRA_SIGNER_2_SECRET }} + SECRET_SEP10_SIGNING_SEED: ${{ secrets.SECRET_SEP10_SIGNING_SEED }} + TEST_CLIENT_WALLET_SECRET: ${{ secrets.TEST_CLIENT_WALLET_SECRET }} + TEST_CLIENT_WALLET_EXTRA_SIGNER_1_SECRET: ${{ secrets.TEST_CLIENT_WALLET_EXTRA_SIGNER_1_SECRET }} + TEST_CLIENT_WALLET_EXTRA_SIGNER_2_SECRET: ${{ secrets.TEST_CLIENT_WALLET_EXTRA_SIGNER_2_SECRET }} OTHER_SEP10_SIGNING_SECRET: ${{ secrets.OTHER_SEP10_SIGNING_SECRET }} - TEST_WITHDRAW_FUND_CLIENT_SECRET_1: ${{ vars.TEST_WITHDRAW_FUND_CLIENT_SECRET_1 }} - TEST_WITHDRAW_FUND_CLIENT_SECRET_2: ${{ vars.TEST_WITHDRAW_FUND_CLIENT_SECRET_2 }} - TEST_DEPOSIT_FUND_CLIENT_SECRET_1: ${{ vars.TEST_DEPOSIT_FUND_CLIENT_SECRET_1 }} - TEST_DEPOSIT_FUND_CLIENT_SECRET_2: ${{ vars.TEST_DEPOSIT_FUND_CLIENT_SECRET_2 }} + TEST_WITHDRAW_FUND_CLIENT_SECRET_1: ${{ secrets.TEST_WITHDRAW_FUND_CLIENT_SECRET_1 }} + TEST_WITHDRAW_FUND_CLIENT_SECRET_2: ${{ secrets.TEST_WITHDRAW_FUND_CLIENT_SECRET_2 }} + TEST_DEPOSIT_FUND_CLIENT_SECRET_1: ${{ secrets.TEST_DEPOSIT_FUND_CLIENT_SECRET_1 }} + TEST_DEPOSIT_FUND_CLIENT_SECRET_2: ${{ secrets.TEST_DEPOSIT_FUND_CLIENT_SECRET_2 }} USDC_ISSUER_SECRET: ${{ secrets.USDC_ISSUER_SECRET }} SRT_ISSUER_SECRET: ${{ secrets.SRT_ISSUER_SECRET }} TESTANCHOR_DISTRIBUTION_SECRET: ${{ secrets.TESTANCHOR_DISTRIBUTION_SECRET }} TESTANCHOR_RECEIVE_SECRET: ${{ secrets.TESTANCHOR_RECEIVE_SECRET }} - SECRET__KEY: ${{ vars.SECRET__KEY }} + SECRET__KEY: ${{ secrets.SECRET__KEY }} steps: - name: Checkout the repository uses: actions/checkout@v4 @@ -32,7 +32,7 @@ jobs: - name: Install Rust uses: dtolnay/rust-toolchain@stable with: - targets: wasm32-unknown-unknown + targets: wasm32v1-none - name: Install Stellar CLI run: cargo install --locked stellar-cli --features opt diff --git a/scripts/testnet_reset.sh b/scripts/testnet_reset.sh index 4010c7a150..9bf427fac8 100755 --- a/scripts/testnet_reset.sh +++ b/scripts/testnet_reset.sh @@ -49,18 +49,20 @@ load_env() { # Derive the Stellar public key (G...) from a secret key (S...) public_key() { - python3 -c "from stellar_sdk import Keypair; print(Keypair.from_secret('$1').public_key)" + python3 -W ignore -c "import sys; from stellar_sdk import Keypair; print(Keypair.from_secret(sys.stdin.read().strip()).public_key)" <<<"$1" } # Derive the raw ed25519 public key bytes (hex) from a secret key (S...) pk_bytes() { - python3 -c "from stellar_sdk import Keypair; print(Keypair.from_secret('$1').raw_public_key().hex())" + python3 -W ignore -c "import sys; from stellar_sdk import Keypair; print(Keypair.from_secret(sys.stdin.read().strip()).raw_public_key().hex())" <<<"$1" } fund_account() { local public_key=$1 log_info "Funding: $public_key" - curl -s "https://friendbot.stellar.org/?addr=$public_key" >/dev/null + if ! curl -fsS "https://friendbot.stellar.org/?addr=$public_key" >/dev/null 2>&1; then + log_warning "Friendbot funding failed for $public_key (may already be funded)" + fi } fund_test_accounts() { @@ -260,16 +262,14 @@ deploy_contracts() { log_info "Deploying account contract..." local account_contract_result - account_contract_result=$(stellar contract deploy \ - --wasm target/wasm32-unknown-unknown/release/account.wasm \ + if account_contract_result=$(stellar contract deploy \ + --wasm target/wasm32v1-none/release/account.wasm \ --source-account "$deployer_secret" \ --network testnet \ --salt 616e63686f722d706c6174666f726d \ -- \ --admin "$deployer_public" \ - --signer "$(pk_bytes "$deployer_secret")" 2>&1) - - if [[ $? -eq 0 ]]; then + --signer "$(pk_bytes "$deployer_secret")" 2>&1); then local account_contract_id account_contract_id=$(echo "$account_contract_result" | tail -1) log_success "Account contract deployed: $account_contract_id" @@ -283,15 +283,13 @@ deploy_contracts() { webauth_deployer_public="$(public_key "$webauth_deployer_secret")" local webauth_contract_result - webauth_contract_result=$(stellar contract deploy \ - --wasm target/wasm32-unknown-unknown/release/web_auth.wasm \ + if webauth_contract_result=$(stellar contract deploy \ + --wasm target/wasm32v1-none/release/web_auth.wasm \ --source-account "$webauth_deployer_secret" \ --network testnet \ --salt 616e63686f722d706c6174666f726d \ -- \ - --admin "$webauth_deployer_public" 2>&1) - - if [[ $? -eq 0 ]]; then + --admin "$webauth_deployer_public" 2>&1); then local webauth_contract_id webauth_contract_id=$(echo "$webauth_contract_result" | tail -1) log_success "Web auth contract deployed: $webauth_contract_id" From 9bb3a7ef1061a06ad81da6904db5b22195147584 Mon Sep 17 00:00:00 2001 From: Amanda Gonsalves <64379712+amandagonsalves@users.noreply.github.com> Date: Wed, 17 Jun 2026 17:47:06 -0300 Subject: [PATCH 13/16] feat(scripts): update testnet usdc funding amounts * update usdc funding logic * update TESTANCHOR_DISTRIBUTION_SECRET usdc amount to 10000 * update other accounts usdc amount to 0.1 --- scripts/testnet_reset.sh | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/scripts/testnet_reset.sh b/scripts/testnet_reset.sh index 9bf427fac8..0e52287d88 100755 --- a/scripts/testnet_reset.sh +++ b/scripts/testnet_reset.sh @@ -184,14 +184,22 @@ issue_and_fund_usdc() { if [[ -n "$account_secret" ]]; then local recipient_public recipient_public="$(public_key "$account_secret")" - log_info "Sending 10000 USDC to $account_var ($recipient_public)..." + local amount amount_human + if [[ "$account_var" == "TESTANCHOR_DISTRIBUTION_SECRET" ]]; then + amount=100000000000 # 10000 USDC in stroops + amount_human="10000" + else + amount=1000000 # 0.1 USDC in stroops + amount_human="0.1" + fi + log_info "Sending $amount_human USDC to $account_var ($recipient_public)..." if stellar tx new payment \ --source-account "$usdc_issuer_secret" \ --destination "$recipient_public" \ --asset "USDC:$usdc_issuer_public" \ - --amount 10000000000 \ + --amount "$amount" \ --network testnet; then - log_success "Sent 10000 USDC to $account_var" + log_success "Sent $amount_human USDC to $account_var" else log_warning "Failed to send USDC to $account_var" fi From 283c382e48d045ce9c24bb7586f162cd229aa154 Mon Sep 17 00:00:00 2001 From: Amanda Gonsalves <64379712+amandagonsalves@users.noreply.github.com> Date: Wed, 17 Jun 2026 17:59:16 -0300 Subject: [PATCH 14/16] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- scripts/testnet_reset.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/testnet_reset.sh b/scripts/testnet_reset.sh index 0e52287d88..6ef81de21f 100755 --- a/scripts/testnet_reset.sh +++ b/scripts/testnet_reset.sh @@ -302,7 +302,12 @@ deploy_contracts() { webauth_contract_id=$(echo "$webauth_contract_result" | tail -1) log_success "Web auth contract deployed: $webauth_contract_id" else - log_warning "Web auth contract deployment skipped (already exists)" + if echo "$webauth_contract_result" | grep -qi "contract already exists"; then + log_warning "Web auth contract deployment skipped (already exists)" + else + log_error "Web auth contract deployment failed: $webauth_contract_result" + exit 1 + fi fi local usdc_issuer_public From 98d214b6ddd760bf77a1303ba8867150d7fd752f Mon Sep 17 00:00:00 2001 From: Amanda Gonsalves <64379712+amandagonsalves@users.noreply.github.com> Date: Wed, 17 Jun 2026 18:00:21 -0300 Subject: [PATCH 15/16] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .github/workflows/on_testnet_reset.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/on_testnet_reset.yml b/.github/workflows/on_testnet_reset.yml index 339d3d74f1..f7252088a4 100644 --- a/.github/workflows/on_testnet_reset.yml +++ b/.github/workflows/on_testnet_reset.yml @@ -38,7 +38,7 @@ jobs: run: cargo install --locked stellar-cli --features opt - name: Install stellar-sdk Python package - run: pip install stellar-sdk + run: python3 -m pip install stellar-sdk - name: Run testnet reset working-directory: scripts From c53b6e6dbecb92788d0d1362ba54ab779ef3b0af Mon Sep 17 00:00:00 2001 From: Amanda Gonsalves <64379712+amandagonsalves@users.noreply.github.com> Date: Thu, 18 Jun 2026 10:37:06 -0300 Subject: [PATCH 16/16] test(testnet-setup): update testnet funding and recipient list * delete unused recipient variables from testnet funding list * add specific funding amount (100 USDC) for TEST_CLIENT_WALLET_SECRET --- scripts/testnet_reset.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/scripts/testnet_reset.sh b/scripts/testnet_reset.sh index 6ef81de21f..089099412e 100755 --- a/scripts/testnet_reset.sh +++ b/scripts/testnet_reset.sh @@ -171,12 +171,7 @@ issue_and_fund_usdc() { local recipient_vars=( "TEST_CLIENT_WALLET_SECRET" "TEST_WITHDRAW_FUND_CLIENT_SECRET_1" - "TEST_WITHDRAW_FUND_CLIENT_SECRET_2" - "TEST_DEPOSIT_FUND_CLIENT_SECRET_1" - "TEST_DEPOSIT_FUND_CLIENT_SECRET_2" "TESTANCHOR_DISTRIBUTION_SECRET" - "TESTANCHOR_RECEIVE_SECRET" - "OTHER_SEP10_SIGNING_SECRET" ) for account_var in "${recipient_vars[@]}"; do @@ -188,6 +183,9 @@ issue_and_fund_usdc() { if [[ "$account_var" == "TESTANCHOR_DISTRIBUTION_SECRET" ]]; then amount=100000000000 # 10000 USDC in stroops amount_human="10000" + elif [[ "$account_var" == "TEST_CLIENT_WALLET_SECRET" ]]; then + amount=1000000000 # 100 USDC in stroops + amount_human="100" else amount=1000000 # 0.1 USDC in stroops amount_human="0.1"