Open
Conversation
- Add Solana chain config, program IDs, and PDAs - Add Solana wallet connection (Phantom/Solflare) - Add EVM→Solana intent construction with Solana output recipient - Add Solana token balance fetching - Add bigint-safe order serialization for DB storage - Add input_settler_escrow ABI - Add Solana address utilities and unit tests
Adds Solana-aware orderId computation and token address handling to intentList so EVM→Solana orders (and any previously stored Solana→EVM orders) display without crashing.
0f1f294 to
9ddfa3a
Compare
… unused dep - Require non-empty valid Base58 address before Solana output can be submitted - Extract SOLANA_DEVNET_RPC / SOLANA_MAINNET_RPC as named constants - Add AbortSignal timeout (10 s) to getSolanaBalance RPC calls; return null on error so callers can distinguish 'zero balance' from 'RPC unavailable' - Fix allowance-skip: EVM inputs always need allowance even when hasSolanaOutput - Replace null-as-unknown-as-string for undeployed mainnet program IDs with typed null + requireSolanaProgram() runtime guard that throws a clear message - Replace inline dynamic import type in intentList.ts with top-level import type - Replace manual hex→Uint8Array loop with Buffer.from(hex, 'hex') - Drop unused @solana/spl-token dependency — token balances are fetched directly via connection.getParsedTokenAccountsByOwner() from @solana/web3.js; removing it eliminates the bigint-buffer@1.1.5 (CVE-2025-3194) transitive dep entirely - Update .claude/CLAUDE.md PDA values to match catalyst-intent-svm test fixtures
934147d to
2c812d9
Compare
Solana chain outputs cannot be queried or filled via an EVM client. Filter them out of the fill-status effect and show a static disabled Fill button so the UI does not throw or log warnings.
6 tasks
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes V2-111.
Enables users to issue intents from an EVM chain with Solana as the output chain. The user connects their EVM wallet as usual and optionally a Solana wallet to receive the output. No Solana signing is required for issuance.
What's included
Solana wallet connection
SolanaWalletButtoncomponent supporting Phantom and Solflare via wallet-adapterSolanaWalletStoreSvelte 5 class-based store managing connect/disconnect stateChain & token config
solanaDevnetandsolanaMainnetchain definitions with RPC constantsSOLANA_OUTPUT_SETTLER_PDA,POLYMER_ORACLE, etc.)coinListfor both devnet and mainnetIntent construction
intentFactory.openIntentpassesoutputRecipient(Solana bytes32 address) andchainNamespace: "solana"when building EVM→Solana intentsIssueIntentshows a Solana recipient field when any output token is on Solana — empty field correctly disables the submit buttonBalance & display
getSolanaBalancefetches native SOL and SPL token balances via@solana/web3.jsInputTokenModalfilters and displays Solana tokens correctlyintentListhandles Solana order types without crashing (32-byte token addresses, Solana-origin order IDs)Infrastructure
serializeOrder/deserializeOrderfor DB storage (PGLite doesn't survive nativeJSON.stringifyof bigints)solanaAddressToBytes32andisValidSolanaAddressutilitiesvite-plugin-node-polyfillsfor@solana/web3.jsbrowser compatibilityinput_settler_escrowABI addedAlso closes
Test plan
bun test—solanaUtilsandorderSerializationunit tests passbun run check— no TypeScript errorsExpected output
Screen.Recording.2026-04-05.at.9.36.42.PM.mov