Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
1a8baf3
Add Solana support to Across bridge for EVM -> Solana swaps
0xh3rman Aug 28, 2025
24d233e
Add missing files
0xh3rman Aug 28, 2025
1e765f0
Fix high priority review comments for Across Solana support
0xh3rman Aug 28, 2025
a86625d
Use InvalidAddress error for bs58 decode failures
0xh3rman Aug 28, 2025
5c40590
Eliminate unwrap() and avoid re-parsing in relayer fee calculation
0xh3rman Aug 28, 2025
9a95562
Merge branch 'main' into across-solana
0xh3rman Aug 31, 2025
76bc7f3
Refactor price feed call indexing in Across swapper
0xh3rman Aug 31, 2025
9218117
Refactor AddressType to separate module in Across swapper
0xh3rman Aug 31, 2025
6684eec
Refactor chain handling and gas estimation in Across provider
0xh3rman Aug 31, 2025
9cb5464
Add Solana prioritization fee support to Across swapper
0xh3rman Aug 31, 2025
0986cce
Improve error handling for Solana fee fetching
0xh3rman Sep 1, 2025
69f94b1
Merge branch 'main' into across-solana
0xh3rman Sep 1, 2025
0060463
Merge branch 'main' into across-solana
0xh3rman Sep 1, 2025
cc0d2b9
Refactor Across provider for unified bytes32 address handling
0xh3rman Sep 2, 2025
0d0335f
add back message_for_multicall_handler
0xh3rman Sep 2, 2025
0ff6eb7
Add multicall handler message tests for Across swapper
0xh3rman Sep 2, 2025
331e142
Refactor token_bytes32_for_chain to token_bytes32_for_asset
0xh3rman Sep 2, 2025
f337542
Merge branch 'main' into across-solana
0xh3rman Sep 3, 2025
b14c1a1
Merge branch 'main' into across-solana
0xh3rman Sep 4, 2025
f3d2137
merge main
0xh3rman Sep 17, 2025
0f67faf
Add Hyperliquid chain and USDC asset support
0xh3rman Sep 17, 2025
fbab190
add usdt0 config for across
0xh3rman Sep 17, 2025
e6c1b00
Merge branch 'main' into across-solana
0xh3rman Sep 18, 2025
ea1523c
try building solana relay messages
0xh3rman Sep 18, 2025
8e44578
Merge branch 'main' into across-solana
0xh3rman Sep 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 12 additions & 87 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion GEMINI.md
36 changes: 20 additions & 16 deletions crates/gem_evm/src/across/contracts/spoke_pool.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use alloy_sol_types::sol;

// https://docs.across.to/reference/selected-contract-functions
// https://github.com/across-protocol/contracts/blob/master/contracts/interfaces/SpokePoolInterface.sol
// https://github.com/across-protocol/contracts/blob/master/contracts/interfaces/V3SpokePoolInterface.sol
sol! {
// Contains structs and functions used by SpokePool contracts to facilitate universal settlement.
interface V3SpokePoolInterface {
Expand All @@ -10,24 +10,24 @@ sol! {
// replay attacks on other chains. If any portion of this data differs, the relay is considered to be
// completely distinct.
struct V3RelayData {
// The address that made the deposit on the origin chain.
address depositor;
// The recipient address on the destination chain.
address recipient;
// The bytes32 that made the deposit on the origin chain.
bytes32 depositor;
// The recipient bytes32 on the destination chain.
bytes32 recipient;
// This is the exclusive relayer who can fill the deposit before the exclusivity deadline.
address exclusiveRelayer;
bytes32 exclusiveRelayer;
// Token that is deposited on origin chain by depositor.
address inputToken;
bytes32 inputToken;
// Token that is received on destination chain by recipient.
address outputToken;
bytes32 outputToken;
// The amount of input token deposited by depositor.
uint256 inputAmount;
// The amount of output token to be received by recipient.
uint256 outputAmount;
// Origin chain id.
uint256 originChainId;
// The id uniquely identifying this deposit on the origin chain.
uint32 depositId;
uint256 depositId;
// The timestamp on the destination chain after which this deposit can no longer be filled.
uint32 fillDeadline;
// The timestamp on the destination chain after which any relayer can fill the deposit.
Expand All @@ -38,21 +38,25 @@ sol! {

function getCurrentTime() public view virtual returns (uint256);

function depositV3(
address depositor,
address recipient,
address inputToken,
address outputToken,
function deposit(
bytes32 depositor,
bytes32 recipient,
bytes32 inputToken,
bytes32 outputToken,
uint256 inputAmount,
uint256 outputAmount,
uint256 destinationChainId,
address exclusiveRelayer,
bytes32 exclusiveRelayer,
uint32 quoteTimestamp,
uint32 fillDeadline,
uint32 exclusivityDeadline,
bytes calldata message
) external payable;

function fillV3Relay(V3RelayData calldata relayData, uint256 repaymentChainId) external;
function fillRelay(
V3RelayData calldata relayData,
uint256 repaymentChainId,
bytes32 repaymentAddress
) external;
}
}
Loading
Loading