Skip to content

Conversation

@Foivos
Copy link
Contributor

@Foivos Foivos commented Dec 1, 2025

why

  • Adding relayer discovery to ITS as well as using it for interchain executables

how

  • Deprecated the use of the execute entrypoint on ITS nad instead using a different entrypoint for each use case of execute.
  • Using discovery to point the relayer to the right entrypoint.
  • Assuming an interchain executable uses a special case of discoverable to allow for discovery to figure out the accounts they need.

Note

Replaces ITS’s monolithic execute with discovery-driven flows (deploy/link/transfer), adds transaction discovery APIs/PDAs, a discoverable test program, and updates fixtures/harness/tests to execute via relayer discovery.

  • ITS (program changes)
    • Replace generic execute with specific handlers: execute_deploy_interchain_token, execute_link_token, execute_interchain_transfer, each using validate_message.
    • Add discovery endpoint get_transaction and helpers (utils::relayer_transaction, find_interchain_executable_transaction_pda, decode_interchain_transfer_payload, executable_accounts).
    • Initialize relayer transaction PDA in Initialize and include new feature/dependency wiring (relayer-discovery).
  • New discoverable program: solana-axelar-test-discoverable
    • Implements init, get_its_transaction, execute_with_interchain_token, and logs via execute; initializes its own transaction and ITS interchain-executable PDAs.
  • Fixtures/Harness
    • Add relayer discovery test fixture (RelayerDiscoveryTestFixture) and relayer_execute_with_checks.
    • Update ITS test fixtures and mollusk-harness to approve/execute via discovery, auto-provision payload/payer accounts, and init required PDAs.
  • Tests
    • Migrate GMP tests to discovery-driven execution; add tests for interchain-transfer with data and discoverable executables; adjust helpers accordingly.
  • Dependencies/Config
    • Add relayer-discovery across crates, enable ITS no-entrypoint where needed, and minor Cargo feature updates.

Written by Cursor Bugbot for commit 8d216ac. This will update automatically on new commits. Configure here.


let counter_account: solana_axelar_memo::Counter = its_harness
.get_account_as(&counter_pda)
.expect("counter account should exist");
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Test deserializes counter with wrong type

The test uses solana_axelar_test_discoverable throughout (getting counter_pda at line 104, serializing Payload at lines 108-111) but then attempts to deserialize the counter account as solana_axelar_memo::Counter instead of solana_axelar_test_discoverable::Counter. This type mismatch will cause the test to incorrectly interpret the account data or fail.

Fix in Cursor Fix in Web

@Deiadara Deiadara force-pushed the feat/relayer-discovery branch from 34b2204 to abc6aaa Compare January 21, 2026 17:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants