Tornado SVM Testnet Transaction Test #13
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Tornado SVM Testnet Transaction Test | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| denomination: | |
| description: 'Transaction denomination in SOL' | |
| required: true | |
| default: '1' | |
| merkle_tree_height: | |
| description: 'Merkle tree height' | |
| required: true | |
| default: '20' | |
| rpc_url: | |
| description: 'Solana RPC URL (defaults to testnet)' | |
| required: false | |
| default: 'https://api.testnet.solana.com' | |
| schedule: | |
| - cron: '0 0 * * 0' # Run weekly on Sundays at midnight UTC | |
| pull_request: | |
| branches: [ master ] | |
| paths: | |
| - 'src/**' | |
| - 'scripts/**' | |
| - 'client/**' | |
| jobs: | |
| run-tornado-transaction: | |
| name: Execute Tornado Transaction on Testnet | |
| runs-on: ubuntu-latest | |
| env: | |
| # Disable Telegram notifications | |
| SKIP_TELEGRAM_NOTIFICATIONS: 'true' | |
| TELEGRAM_BOT_TOKEN: 'disabled' | |
| TELEGRAM_CHAT_ID: 'disabled' | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v3 | |
| - name: Setup Bun | |
| uses: oven-sh/setup-bun@v1 | |
| with: | |
| bun-version: latest | |
| - name: Install dependencies | |
| run: | | |
| bun install | |
| bun install -g chartjs-node-canvas chart.js | |
| sudo apt-get update | |
| sudo apt-get install -y libudev-dev libusb-1.0-0-dev pkg-config | |
| - name: Install Solana CLI | |
| run: | | |
| # Install Solana CLI tools | |
| sh -c "$(curl -sSfL https://release.solana.com/v1.16.0/install)" | |
| # Add Solana to PATH for this job and ensure it persists across steps | |
| echo "$HOME/.local/share/solana/install/active_release/bin" >> $GITHUB_PATH | |
| echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
| # Also add to PATH for current shell session | |
| export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH" | |
| export PATH="$HOME/.cargo/bin:$PATH" | |
| # Verify installation | |
| solana --version | |
| - name: Install and Update Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt, clippy | |
| - name: Update Cargo to latest stable | |
| run: | | |
| # Update to the latest stable Rust toolchain | |
| rustup update stable | |
| rustup default stable | |
| # Check Cargo version explicitly | |
| cargo --version | |
| echo "Using Cargo from: $(which cargo)" | |
| # Ensure we can handle Cargo.lock version 4 | |
| CARGO_VERSION=$(cargo --version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+') | |
| echo "Cargo version: $CARGO_VERSION" | |
| # Check if Cargo version is new enough for lock file version 4 | |
| MAJOR=$(echo "$CARGO_VERSION" | cut -d'.' -f1) | |
| MINOR=$(echo "$CARGO_VERSION" | cut -d'.' -f2) | |
| if [ "$MAJOR" -lt 1 ] || ([ "$MAJOR" -eq 1 ] && [ "$MINOR" -lt 70 ]); then | |
| echo "Warning: Cargo version $CARGO_VERSION may not fully support Cargo.lock version 4 format" | |
| echo "Attempting to update Cargo again" | |
| curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stable --profile minimal | |
| source "$HOME/.cargo/env" | |
| cargo --version | |
| else | |
| echo "Cargo $CARGO_VERSION supports Cargo.lock version 4 format" | |
| fi | |
| - name: Regenerate Cargo.lock | |
| run: | | |
| # Remove any existing Cargo.lock | |
| if [ -f Cargo.lock ]; then | |
| echo "Removing existing Cargo.lock" | |
| rm Cargo.lock | |
| fi | |
| # Regenerate Cargo.lock with the latest Cargo version | |
| echo "Regenerating Cargo.lock" | |
| cargo generate-lockfile | |
| echo "Cargo.lock regenerated successfully" | |
| # Verify the Cargo.lock format | |
| if [ -f Cargo.lock ]; then | |
| echo "Checking Cargo.lock format..." | |
| # Quick check to see if it's a version 4 format (contains version = 4) | |
| if grep -q 'version = 4' Cargo.lock; then | |
| echo "Confirmed: Cargo.lock is using version 4 format" | |
| else | |
| echo "Warning: Cargo.lock may not be using version 4 format" | |
| # For debugging purposes, show the first few lines | |
| head -5 Cargo.lock | |
| fi | |
| else | |
| echo "Error: Cargo.lock was not generated!" | |
| exit 1 | |
| fi | |
| - name: Setup metrics directory | |
| run: | | |
| mkdir -p reports/metrics | |
| mkdir -p reports/graphs | |
| chmod +x scripts/generate_metrics.js | |
| chmod +x scripts/format_report.js | |
| - name: Generate keypair for testing | |
| run: | | |
| solana-keygen new --no-bip39-passphrase -o ~/.config/solana/id.json | |
| solana config set --url ${{ github.event.inputs.rpc_url || 'https://api.testnet.solana.com' }} | |
| echo "# Tornado SVM Testnet Transaction Report" > reports/transaction_report.md | |
| echo "Generated on: $(date)" >> reports/transaction_report.md | |
| echo "" >> reports/transaction_report.md | |
| echo "## Configuration" >> reports/transaction_report.md | |
| echo "- Denomination: ${{ github.event.inputs.denomination || '1' }} SOL" >> reports/transaction_report.md | |
| echo "- Merkle Tree Height: ${{ github.event.inputs.merkle_tree_height || '20' }}" >> reports/transaction_report.md | |
| echo "- Solana RPC URL: ${{ github.event.inputs.rpc_url || 'https://api.testnet.solana.com' }}" >> reports/transaction_report.md | |
| echo "- Solana Version: $(solana --version)" >> reports/transaction_report.md | |
| echo "- Bun Version: $(bun --version)" >> reports/transaction_report.md | |
| echo "- Rust Version: $(rustc --version)" >> reports/transaction_report.md | |
| echo "- Wallet Address: $(solana address)" >> reports/transaction_report.md | |
| echo "" >> reports/transaction_report.md | |
| - name: Request airdrop | |
| run: | | |
| echo "## Solana Testnet Airdrop" >> reports/transaction_report.md | |
| echo "Requesting airdrop..." | tee -a reports/transaction_report.md | |
| solana airdrop 1 $(solana address) || true | |
| sleep 2 | |
| BALANCE=$(solana balance) | |
| echo "Wallet balance: $BALANCE" | tee -a reports/transaction_report.md | |
| - name: Setup transaction script with metrics capture | |
| run: | | |
| # Modify the script to capture transaction signatures and execution times | |
| cp scripts/run_tornado_transaction.sh scripts/run_tornado_transaction_metrics.sh | |
| # Add start timestamp | |
| sed -i '3i\# Start time for metrics\nSTART_TIME=$(date +%s.%N)\necho "Transaction start time: $(date -u)" > ../reports/metrics/execution_times.txt\n' scripts/run_tornado_transaction_metrics.sh | |
| # Add timing for program deploy | |
| sed -i '/echo "Program deployed with ID: $PROGRAM_ID"/a\DEPLOY_END_TIME=$(date +%s.%N)\nDEPLOY_TIME=$(echo "$DEPLOY_END_TIME - $START_TIME" | bc)\necho "Program deployment time: ${DEPLOY_TIME}s" >> ../reports/metrics/execution_times.txt' scripts/run_tornado_transaction_metrics.sh | |
| # Add timing for initialize | |
| sed -i '/echo "Tornado instance created: $TORNADO_INSTANCE"/a\INIT_END_TIME=$(date +%s.%N)\nINIT_TIME=$(echo "$INIT_END_TIME - $DEPLOY_END_TIME" | bc)\necho "Initialization time: ${INIT_TIME}s" >> ../reports/metrics/execution_times.txt\necho $TORNADO_INSTANCE > ../reports/metrics/instance_id.txt' scripts/run_tornado_transaction_metrics.sh | |
| # Save deposit signature | |
| sed -i '/echo "Deposit transaction signature: $DEPOSIT_SIGNATURE"/a\echo $DEPOSIT_SIGNATURE > ../reports/metrics/deposit_signature.txt\nDEPOSIT_END_TIME=$(date +%s.%N)\nDEPOSIT_TIME=$(echo "$DEPOSIT_END_TIME - $INIT_END_TIME" | bc)\necho "Deposit time: ${DEPOSIT_TIME}s" >> ../reports/metrics/execution_times.txt' scripts/run_tornado_transaction_metrics.sh | |
| # Save withdraw signature | |
| sed -i '/echo "Withdraw transaction signature: $WITHDRAW_SIGNATURE"/a\echo $WITHDRAW_SIGNATURE > ../reports/metrics/withdraw_signature.txt\nWITHDRAW_END_TIME=$(date +%s.%N)\nWITHDRAW_TIME=$(echo "$WITHDRAW_END_TIME - $DEPOSIT_END_TIME" | bc)\necho "Withdrawal time: ${WITHDRAW_TIME}s" >> ../reports/metrics/execution_times.txt' scripts/run_tornado_transaction_metrics.sh | |
| # Add total time | |
| sed -i '/echo -e "${GREEN}Script completed!${NC}"/i\END_TIME=$(date +%s.%N)\nTOTAL_TIME=$(echo "$END_TIME - $START_TIME" | bc)\necho "Total execution time: ${TOTAL_TIME}s" >> ../reports/metrics/execution_times.txt' scripts/run_tornado_transaction_metrics.sh | |
| # Make the script executable | |
| chmod +x scripts/run_tornado_transaction_metrics.sh | |
| - name: Run Tornado transaction script with metrics | |
| run: | | |
| echo "## Transaction Log" >> reports/transaction_report.md | |
| echo "\`\`\`" >> reports/transaction_report.md | |
| cd scripts | |
| # Explicitly disabling telegram-related environment variables before running script | |
| export TELEGRAM_BOT_TOKEN=disabled TELEGRAM_CHAT_ID=disabled SKIP_TELEGRAM_NOTIFICATIONS=true | |
| # Pass the Solana PATH to the script | |
| SOLANA_PATH="$HOME/.local/share/solana/install/active_release/bin" ./run_tornado_transaction_metrics.sh 2>&1 | tee -a ../reports/transaction_log.txt | |
| cat ../reports/transaction_log.txt >> ../reports/transaction_report.md | |
| echo "\`\`\`" >> reports/transaction_report.md | |
| env: | |
| DENOMINATION: ${{ github.event.inputs.denomination || '1' }} | |
| MERKLE_TREE_HEIGHT: ${{ github.event.inputs.merkle_tree_height || '20' }} | |
| RPC_URL: ${{ github.event.inputs.rpc_url || 'https://api.testnet.solana.com' }} | |
| # Remove telegram token dependency | |
| TELEGRAM_BOT_TOKEN: 'disabled' | |
| TELEGRAM_CHAT_ID: 'disabled' | |
| SKIP_TELEGRAM_NOTIFICATIONS: 'true' | |
| - name: Generate transaction metrics | |
| env: | |
| # Remove telegram token dependency | |
| TELEGRAM_BOT_TOKEN: 'disabled' | |
| TELEGRAM_CHAT_ID: 'disabled' | |
| SKIP_TELEGRAM_NOTIFICATIONS: 'true' | |
| run: | | |
| echo "## Transaction Metrics" >> reports/transaction_report.md | |
| echo "### Execution Times" >> reports/transaction_report.md | |
| echo "\`\`\`" >> reports/transaction_report.md | |
| cat reports/metrics/execution_times.txt >> reports/transaction_report.md | |
| echo "\`\`\`" >> reports/transaction_report.md | |
| echo "### Transaction IDs" >> reports/transaction_report.md | |
| echo "- **Tornado Instance:** $(cat reports/metrics/instance_id.txt 2>/dev/null || echo 'Not available')" >> reports/transaction_report.md | |
| echo "- **Deposit Transaction:** $(cat reports/metrics/deposit_signature.txt 2>/dev/null || echo 'Not available')" >> reports/transaction_report.md | |
| echo "- **Withdraw Transaction:** $(cat reports/metrics/withdraw_signature.txt 2>/dev/null || echo 'Not available')" >> reports/transaction_report.md | |
| # Generate detailed transaction metrics using our custom script | |
| if [ -f reports/metrics/deposit_signature.txt ]; then | |
| DEPOSIT_SIG=$(cat reports/metrics/deposit_signature.txt) | |
| bun scripts/generate_metrics.js "$DEPOSIT_SIG" "${{ github.event.inputs.rpc_url || 'https://api.testnet.solana.com' }}" > reports/metrics/deposit_metrics.json | |
| fi | |
| if [ -f reports/metrics/withdraw_signature.txt ]; then | |
| WITHDRAW_SIG=$(cat reports/metrics/withdraw_signature.txt) | |
| bun scripts/generate_metrics.js "$WITHDRAW_SIG" "${{ github.event.inputs.rpc_url || 'https://api.testnet.solana.com' }}" > reports/metrics/withdraw_metrics.json | |
| fi | |
| - name: Generate detailed performance report | |
| env: | |
| # Remove telegram token dependency | |
| TELEGRAM_BOT_TOKEN: 'disabled' | |
| TELEGRAM_CHAT_ID: 'disabled' | |
| SKIP_TELEGRAM_NOTIFICATIONS: 'true' | |
| run: | | |
| echo "### Deposit Transaction Details" >> reports/transaction_report.md | |
| if [ -f reports/metrics/deposit_metrics.json ]; then | |
| echo "\`\`\`json" >> reports/transaction_report.md | |
| cat reports/metrics/deposit_metrics.json >> reports/transaction_report.md | |
| echo "\`\`\`" >> reports/transaction_report.md | |
| # Run complexity analysis on deposit transaction | |
| DEPOSIT_SIG=$(cat reports/metrics/deposit_signature.txt) | |
| chmod +x scripts/analyze_transaction_complexity.js | |
| echo "### Deposit Transaction Complexity Analysis" >> reports/transaction_report.md | |
| bun scripts/analyze_transaction_complexity.js "$DEPOSIT_SIG" "${{ github.event.inputs.rpc_url || 'https://api.testnet.solana.com' }}" > reports/metrics/deposit_complexity.json | |
| echo "\`\`\`json" >> reports/transaction_report.md | |
| cat reports/metrics/deposit_complexity.json >> reports/transaction_report.md | |
| echo "\`\`\`" >> reports/transaction_report.md | |
| # Create computation breakdown chart for deposit | |
| echo "### Deposit Operation Breakdown" >> reports/transaction_report.md | |
| echo "\`\`\`mermaid" >> reports/transaction_report.md | |
| echo "pie title Deposit Compute Units Distribution" >> reports/transaction_report.md | |
| grep -o '"type": "[^"]*", "program": "[^"]*", "subOperations": \[[^]]*\], "computeEstimate": [0-9]*, "percentage": [0-9]*' reports/metrics/deposit_complexity.json | while read -r line; do | |
| OP_TYPE=$(echo $line | grep -o '"type": "[^"]*"' | cut -d'"' -f4) | |
| PERCENTAGE=$(echo $line | grep -o '"percentage": [0-9]*' | cut -d':' -f2 | tr -d ' ') | |
| if [ -n "$OP_TYPE" ] && [ -n "$PERCENTAGE" ]; then | |
| echo " \"$OP_TYPE\" : $PERCENTAGE" >> reports/transaction_report.md | |
| fi | |
| done | |
| echo "\`\`\`" >> reports/transaction_report.md | |
| else | |
| echo "No deposit transaction metrics available" >> reports/transaction_report.md | |
| fi | |
| echo "### Withdraw Transaction Details" >> reports/transaction_report.md | |
| if [ -f reports/metrics/withdraw_metrics.json ]; then | |
| echo "\`\`\`json" >> reports/transaction_report.md | |
| cat reports/metrics/withdraw_metrics.json >> reports/transaction_report.md | |
| echo "\`\`\`" >> reports/transaction_report.md | |
| # Run complexity analysis on withdraw transaction | |
| WITHDRAW_SIG=$(cat reports/metrics/withdraw_signature.txt) | |
| echo "### Withdraw Transaction Complexity Analysis" >> reports/transaction_report.md | |
| bun scripts/analyze_transaction_complexity.js "$WITHDRAW_SIG" "${{ github.event.inputs.rpc_url || 'https://api.testnet.solana.com' }}" > reports/metrics/withdraw_complexity.json | |
| echo "\`\`\`json" >> reports/transaction_report.md | |
| cat reports/metrics/withdraw_complexity.json >> reports/transaction_report.md | |
| echo "\`\`\`" >> reports/transaction_report.md | |
| # Create computation breakdown chart for withdraw | |
| echo "### Withdraw Operation Breakdown" >> reports/transaction_report.md | |
| echo "\`\`\`mermaid" >> reports/transaction_report.md | |
| echo "pie title Withdraw Compute Units Distribution" >> reports/transaction_report.md | |
| grep -o '"type": "[^"]*", "program": "[^"]*", "subOperations": \[[^]]*\], "computeEstimate": [0-9]*, "percentage": [0-9]*' reports/metrics/withdraw_complexity.json | while read -r line; do | |
| OP_TYPE=$(echo $line | grep -o '"type": "[^"]*"' | cut -d'"' -f4) | |
| PERCENTAGE=$(echo $line | grep -o '"percentage": [0-9]*' | cut -d':' -f2 | tr -d ' ') | |
| if [ -n "$OP_TYPE" ] && [ -n "$PERCENTAGE" ]; then | |
| echo " \"$OP_TYPE\" : $PERCENTAGE" >> reports/transaction_report.md | |
| fi | |
| done | |
| echo "\`\`\`" >> reports/transaction_report.md | |
| else | |
| echo "No withdraw transaction metrics available" >> reports/transaction_report.md | |
| fi | |
| - name: Solana network metrics | |
| env: | |
| # Remove telegram token dependency | |
| TELEGRAM_BOT_TOKEN: 'disabled' | |
| TELEGRAM_CHAT_ID: 'disabled' | |
| SKIP_TELEGRAM_NOTIFICATIONS: 'true' | |
| run: | | |
| echo "## Solana Network Metrics" >> reports/transaction_report.md | |
| echo "### Transaction Count" >> reports/transaction_report.md | |
| echo "\`\`\`" >> reports/transaction_report.md | |
| solana transaction-count >> reports/transaction_report.md | |
| echo "\`\`\`" >> reports/transaction_report.md | |
| echo "### Current Epoch Info" >> reports/transaction_report.md | |
| echo "\`\`\`" >> reports/transaction_report.md | |
| solana epoch-info >> reports/transaction_report.md | |
| echo "\`\`\`" >> reports/transaction_report.md | |
| echo "### Inflation Rate" >> reports/transaction_report.md | |
| echo "\`\`\`" >> reports/transaction_report.md | |
| solana inflation >> reports/transaction_report.md | |
| echo "\`\`\`" >> reports/transaction_report.md | |
| - name: Transaction explorer links | |
| env: | |
| # Remove telegram token dependency | |
| TELEGRAM_BOT_TOKEN: 'disabled' | |
| TELEGRAM_CHAT_ID: 'disabled' | |
| SKIP_TELEGRAM_NOTIFICATIONS: 'true' | |
| run: | | |
| echo "## Transaction Explorer Links" >> reports/transaction_report.md | |
| if [ -f reports/metrics/deposit_signature.txt ]; then | |
| DEPOSIT_SIG=$(cat reports/metrics/deposit_signature.txt) | |
| echo "[Deposit Transaction on Explorer](https://explorer.solana.com/tx/$DEPOSIT_SIG?cluster=testnet)" >> reports/transaction_report.md | |
| fi | |
| if [ -f reports/metrics/withdraw_signature.txt ]; then | |
| WITHDRAW_SIG=$(cat reports/metrics/withdraw_signature.txt) | |
| echo "[Withdraw Transaction on Explorer](https://explorer.solana.com/tx/$WITHDRAW_SIG?cluster=testnet)" >> reports/transaction_report.md | |
| fi | |
| if [ -f reports/metrics/instance_id.txt ]; then | |
| INSTANCE_ID=$(cat reports/metrics/instance_id.txt) | |
| echo "[Tornado Instance on Explorer](https://explorer.solana.com/address/$INSTANCE_ID?cluster=testnet)" >> reports/transaction_report.md | |
| fi | |
| - name: Create transaction flow visualization | |
| env: | |
| # Remove telegram token dependency | |
| TELEGRAM_BOT_TOKEN: 'disabled' | |
| TELEGRAM_CHAT_ID: 'disabled' | |
| SKIP_TELEGRAM_NOTIFICATIONS: 'true' | |
| run: | | |
| echo "## Visualization" >> reports/transaction_report.md | |
| echo "### Transaction Flow" >> reports/transaction_report.md | |
| echo "\`\`\`mermaid" >> reports/transaction_report.md | |
| echo "graph TD" >> reports/transaction_report.md | |
| echo " A[Deploy Program] -->|$(grep 'Program deployment time' reports/metrics/execution_times.txt 2>/dev/null | cut -d' ' -f4 || echo '?')| B[Initialize Tornado]" >> reports/transaction_report.md | |
| echo " B -->|$(grep 'Initialization time' reports/metrics/execution_times.txt 2>/dev/null | cut -d' ' -f3 || echo '?')| C[Generate Commitment]" >> reports/transaction_report.md | |
| echo " C --> D[Deposit Funds]" >> reports/transaction_report.md | |
| echo " D -->|$(grep 'Deposit time' reports/metrics/execution_times.txt 2>/dev/null | cut -d' ' -f3 || echo '?')| E[Get Merkle Root]" >> reports/transaction_report.md | |
| echo " E --> F[Generate Proof]" >> reports/transaction_report.md | |
| echo " F --> G[Withdraw Funds]" >> reports/transaction_report.md | |
| echo " G -->|$(grep 'Withdrawal time' reports/metrics/execution_times.txt 2>/dev/null | cut -d' ' -f3 || echo '?')| H[Complete]" >> reports/transaction_report.md | |
| echo "\`\`\`" >> reports/transaction_report.md | |
| # Add zkSNARK workflow visualization | |
| echo "### zkSNARK Workflow" >> reports/transaction_report.md | |
| echo "\`\`\`mermaid" >> reports/transaction_report.md | |
| echo "sequenceDiagram" >> reports/transaction_report.md | |
| echo " participant User" >> reports/transaction_report.md | |
| echo " participant TornadoInstance" >> reports/transaction_report.md | |
| echo " participant MerkleTree" >> reports/transaction_report.md | |
| echo " participant zkSNARK" >> reports/transaction_report.md | |
| echo " User->>TornadoInstance: Initialize" >> reports/transaction_report.md | |
| echo " TornadoInstance->>MerkleTree: Create Empty Tree" >> reports/transaction_report.md | |
| echo " User->>User: Generate Commitment" >> reports/transaction_report.md | |
| echo " User->>TornadoInstance: Deposit Funds" >> reports/transaction_report.md | |
| echo " TornadoInstance->>MerkleTree: Insert Commitment" >> reports/transaction_report.md | |
| echo " User->>MerkleTree: Get Current Root" >> reports/transaction_report.md | |
| echo " User->>zkSNARK: Generate Proof" >> reports/transaction_report.md | |
| echo " User->>TornadoInstance: Withdraw with Proof" >> reports/transaction_report.md | |
| echo " TornadoInstance->>zkSNARK: Verify Proof" >> reports/transaction_report.md | |
| echo " TornadoInstance->>User: Transfer Funds" >> reports/transaction_report.md | |
| echo "\`\`\`" >> reports/transaction_report.md | |
| - name: Create summary report | |
| env: | |
| # Remove telegram token dependency | |
| TELEGRAM_BOT_TOKEN: 'disabled' | |
| TELEGRAM_CHAT_ID: 'disabled' | |
| SKIP_TELEGRAM_NOTIFICATIONS: 'true' | |
| run: | | |
| echo "## Executive Summary" > reports/summary.md | |
| echo "Tornado-SVM privacy solution transaction test completed on $(date)." >> reports/summary.md | |
| # Include status | |
| if [ -f reports/metrics/withdraw_signature.txt ]; then | |
| echo "✅ **Status: SUCCESS**" >> reports/summary.md | |
| else | |
| echo "❌ **Status: FAILED**" >> reports/summary.md | |
| fi | |
| # Include key metrics | |
| echo "" >> reports/summary.md | |
| echo "### Key Metrics" >> reports/summary.md | |
| echo "- **Network:** ${RPC_URL:-Testnet}" >> reports/summary.md | |
| echo "- **Total Execution Time:** $(grep 'Total execution time' reports/metrics/execution_times.txt 2>/dev/null | cut -d' ' -f4 || echo 'N/A')" >> reports/summary.md | |
| if [ -f reports/metrics/deposit_metrics.json ]; then | |
| DEPOSIT_COMPUTE=$(grep 'computeUnitsConsumed' reports/metrics/deposit_metrics.json | head -1 | awk '{print $2}' | tr -d ',:') | |
| echo "- **Deposit Compute Units:** ${DEPOSIT_COMPUTE:-N/A}" >> reports/summary.md | |
| fi | |
| if [ -f reports/metrics/withdraw_metrics.json ]; then | |
| WITHDRAW_COMPUTE=$(grep 'computeUnitsConsumed' reports/metrics/withdraw_metrics.json | head -1 | awk '{print $2}' | tr -d ',:') | |
| echo "- **Withdraw Compute Units:** ${WITHDRAW_COMPUTE:-N/A}" >> reports/summary.md | |
| fi | |
| # Add the summary to the main report | |
| cat reports/summary.md reports/transaction_report.md > reports/full_report.md | |
| mv reports/full_report.md reports/transaction_report.md | |
| - name: Upload transaction report artifact | |
| uses: actions/upload-artifact@v3 | |
| with: | |
| name: tornado-svm-transaction-report | |
| path: | | |
| reports/transaction_report.md | |
| reports/metrics/*.json | |
| reports/metrics/execution_times.txt | |
| retention-days: 90 | |
| - name: Create GitHub job summary | |
| env: | |
| # Remove telegram token dependency | |
| TELEGRAM_BOT_TOKEN: 'disabled' | |
| TELEGRAM_CHAT_ID: 'disabled' | |
| SKIP_TELEGRAM_NOTIFICATIONS: 'true' | |
| run: | | |
| cat reports/summary.md >> $GITHUB_STEP_SUMMARY | |
| # Explicitly disable Telegram notifications that might be inherited from elsewhere | |
| - name: Disable Telegram Notifications | |
| run: | | |
| echo "TELEGRAM_BOT_TOKEN=disabled" >> $GITHUB_ENV | |
| echo "TELEGRAM_CHAT_ID=disabled" >> $GITHUB_ENV | |
| echo "SKIP_TELEGRAM_NOTIFICATIONS=true" >> $GITHUB_ENV |