Pre-Flight Health Checks

Before running functional tests, verify the BME module and dependencies are healthy. These checks establish a baseline and confirm the testnet is ready for testing.

Test 0.1: Node and Network Connectivity

Objective: Verify testnet node is accessible and synced

User Actions:

  1. Check node status:
    Terminal window
    akash status
  2. Verify node is synced (catching_up: false)
  3. Note current block height

Expected Results:

  • Node responds
  • catching_up: false
  • Block height advancing

Test 0.2: BME Module Enabled

Objective: Verify BME module is loaded and responding

User Actions:

  1. Query BME params:
    Terminal window
    akash query bme params
  2. Verify response includes expected parameters

Expected Results:

  • Query succeeds (no “unknown query path” error)
  • Returns: CircuitBreakerWarnThreshold, CircuitBreakerHaltThreshold, MinEpochBlocks, EpochBlocksBackoff

Test 0.3: Oracle Health Check

Objective: Verify oracle is providing price feeds

User Actions:

  1. Query oracle prices:
    Terminal window
    akash query oracle prices
  2. Filter for specific denoms if needed:
    Terminal window
    akash query oracle prices --asset-denom uakt
    akash query oracle prices --asset-denom uact
  3. Verify prices are reasonable and recent

Expected Results:

  • AKT price returns valid USD value (e.g., ~0.45 in example)
  • ACT price returns ~$1.00 (pegged)
  • Timestamps are recent (not stale)

Test 0.4: BME Vault State Baseline

Objective: Record initial BME vault state for comparison during testing

User Actions:

  1. Query full BME vault state:
    Terminal window
    akash query bme vault-state
  2. Record baseline values:
    • Balances (VaultAKT)
    • TotalBurned
    • TotalMinted
    • RemintCredits

Expected Results:

  • Query succeeds
  • All fields returned (may be zero on fresh testnet)
  • Document baseline for later comparison

Test 0.5: Collateral Ratio and Status Check

Objective: Verify BME status query returns collateral ratio and system health

User Actions:

  1. Query BME status:
    Terminal window
    akash query bme status

Example Output:

collateral_ratio: "0.999328857700195767"
halt_threshold: "0.900000000000000000"
mints_allowed: true
refunds_allowed: true
status: mint_status_healthy
warn_threshold: "0.950000000000000000"

Expected Results:

  • collateral_ratio: Decimal value (e.g., ~0.99 means 99% collateralized)
  • status: mint_status_healthy (required to proceed with most tests)
  • mints_allowed: true
  • refunds_allowed: true
  • warn_threshold: 0.95 (status changes to warning below this)
  • halt_threshold: 0.90 (mints halt below this)

If status is NOT mint_status_healthy:

  • mint_status_warning: Collateralization Ratio dropped below 0.95 - investigate
  • mint_status_halt_cr: Collateralization Ratio dropped below 0.90 - mints blocked, investigate before proceeding
  • mint_status_halt_oracle: Oracle failure - investigate oracle health (Test 0.3)

Test 0.6: BME Params Check

Objective: Verify BME module parameters are configured

User Actions:

  1. Query BME params:
    Terminal window
    akash query bme params

Expected Results:

  • Query succeeds
  • Returns epoch settings, thresholds, and other BME configuration

Test 0.7: Token Supply Baseline

Objective: Record token supplies for inflation tracking

User Actions:

  1. Query total AKT supply:
    Terminal window
    akash query bank total --denom uakt
  2. Query total ACT supply (OutstandingACT):
    Terminal window
    akash query bank total --denom uact
  3. Document baseline values

Expected Results:

  • AKT supply returned (note for inflation tracking in later tests)
  • ACT supply returned (may be 0 on fresh testnet)

Test 0.8: ACT Supply Baseline

Objective: Record initial ACT supply for tracking during tests

User Actions:

  1. Query total ACT supply:
    Terminal window
    akash query bank total --denom uact
  2. Record the value for comparison during testing

Expected Results:

  • Query succeeds
  • Returns total ACT in circulation (may be 0 on fresh testnet)
  • Document baseline for later comparison

Note: This helps track inflationary events during testing. Compare with vault-state.total_minted.uact.


Test 0.9: Test Wallet Setup

Objective: Prepare test wallet with AKT for subsequent tests

User Actions:

  1. Create a new test wallet:

    Terminal window
    akash keys add test-account

    Important: Save the mnemonic phrase securely

  2. Note the wallet address from output

  3. Fund from faucet (testnet faucet provides 100 AKT per request)

  4. Verify balance:

    Terminal window
    akash query bank balances <test-wallet-address>

Expected Results:

  • Wallet created successfully
  • After faucet: balance shows 100000000uakt (100 AKT)
  • No ACT balance initially (uact not listed)

Note: Faucet provides 100 AKT per request. For tests requiring more AKT, either:

  • Request from faucet multiple times (if allowed)
  • Transfer from another funded account

Test 0.10: Provider Availability (If Testing Deployments)

Objective: Verify at least one provider is available for deployment tests

User Actions:

  1. Query active providers:
    Terminal window
    akash query provider list
  2. Verify at least one provider is online

Expected Results:

  • At least one provider listed
  • Provider status indicates availability
  • If no providers, deployment tests (Category 1-3) cannot proceed

Test 0.11: Market Params Check (Bid Deposit Denom)

Objective: Verify market module accepts AKT for bid deposits (not ACT)

User Actions:

  1. Query current market params via REST API (CLI not available for this query):
    Terminal window
    curl -s https://testnetapi.akashnet.net/akash/market/v1beta5/params | jq
  2. Check bid_min_deposit denom - should be uakt

Expected Results:

  • Response shows bid_min_deposit.denom is uakt
  • If denom is uact, providers cannot bid - requires governance fix (see below)

Example Response (problematic - needs fix):

{
"params": {
"bid_min_deposit": {
"denom": "uact", // <-- PROBLEM: should be "uakt"
"amount": "500000"
},
"order_max_bids": 20
}
}

If Fix Required - Update Market Params via Governance:

  1. Get gov module authority address:

    Terminal window
    akash query auth module-account gov

    For BME testnet: akash10d07y265gmmuvt4z0w9aw880jnsr700jhe7z0f

  2. Create proposal JSON file (market-params-fix.json):

    Terminal window
    cat > market-params-fix.json << 'EOF'
    {
    "messages": [
    {
    "@type": "/akash.market.v1beta5.MsgUpdateParams",
    "authority": "akash10d07y265gmmuvt4z0w9aw880jnsr700jhe7z0f",
    "params": {
    "bid_min_deposit": {
    "denom": "uakt",
    "amount": "500000"
    },
    "order_max_bids": 20
    }
    }
    ],
    "metadata": "ipfs://CID",
    "deposit": "50000000uakt",
    "title": "Fix Market Params - Bid Deposit Denom",
    "summary": "Update bid_min_deposit to use uakt instead of uact. Providers must deposit in AKT, not ACT.",
    "expedited": true
    }
    EOF

    Important:

    • Type URL must be /akash.market.v1beta5.MsgUpdateParams (not v1)
    • Deposit must be 50000000uakt (50 AKT) to enter voting period
  3. Submit expedited proposal:

    Terminal window
    akash tx gov submit-proposal market-params-fix.json \
    --from default \
    --gas auto \
    --gas-adjustment 1.5 \
    --gas-prices 0.025uakt \
    -y
  4. Get proposal ID from tx result, then vote:

    Terminal window
    # Find proposal ID
    akash query gov proposals --status voting_period
    # Vote yes (as validator)
    akash tx gov vote <proposal-id> yes \
    --from default \
    --gas auto \
    --gas-adjustment 1.5 \
    --gas-prices 0.025uakt \
    -y
  5. Monitor proposal status (expedited = ~5 min):

    Terminal window
    # Check proposal status
    akash query gov proposal <proposal-id>
    # Watch for status change to PROPOSAL_STATUS_PASSED
    watch -n 10 "akash query gov proposal <proposal-id> | grep status"
  6. Verify params updated after proposal passes:

    Terminal window
    curl -s https://testnetapi.akashnet.net/akash/market/v1beta5/params | jq

    Confirm bid_min_deposit.denom is now uakt

Note: CLI akash query market params is not implemented. Use REST API for this query.


Test 0.12: ACT Minting Verification

Objective: Verify ACT can be minted from AKT and appears in wallet after epoch processing

User Actions:

  1. Check initial balance:

    Terminal window
    akash query bank balances <user-address>
  2. Mint ACT from AKT:

    Terminal window
    akash tx bme mint-act 100000000uakt --from <wallet> -y
  3. Check BME vault state immediately:

    Terminal window
    akash query bme vault-state

    Note: AKT should appear in vault immediately

  4. Wait for epoch processing (~1 minute / 10 blocks):

    Terminal window
    # Check BME status for epoch info
    akash query bme status
    # Wait, then check balance again
    sleep 60
    akash query bank balances <user-address>

Expected Results:

  • AKT transferred to vault immediately
  • After epoch: ACT appears in user’s bank balance
  • ACT amount = AKT deposited × oracle price
  • vault-state shows: balances.uakt ↑, balances.uact ↑, remint_credits ↑, total_minted.uact ↑

Note: ACT minting is epoch-based. Default min_epoch_blocks = 10 blocks. If Collateralization Ratio drops below 0.95, epoch period increases.