Skip to content

Commit ca65d3f

Browse files
Release 20251216-1
1 parent 2afa8c8 commit ca65d3f

File tree

3 files changed

+44
-31
lines changed

3 files changed

+44
-31
lines changed

WHITEPAPER.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
Relay’s vision for cross chain liquidity is that a network of solvers fill user requests instantly with their own capital. That said, not all cross chain orderflow can be filled by solvers:
2+
3+
- solvers won’t always have enough liquidity, especially for large orders, or long tail chains
4+
- solvers themselves need to rebalance inventory
5+
6+
Today, both of these are solved by canonical bridges:
7+
8+
- for large / exotic requests, users directly use the bridge instead of solver
9+
- solvers use the bridge to rebalance
10+
11+
What’s nice about canonical bridges is that they are low cost and support unlimited size. The main downside is speed, sometimes taking up to 7 days.
12+
13+
We think there is an opportunity for something in the middle. Not everyone who holds capital can run a solver, but they can contribute it to a pool, resulting in more available liquidity. Due to the onchain nature of pools, it’s hard to make them as fast as a solver, but they can definitely be much faster than the canonical bridge. And so you unlock improvements for both users and solvers:
14+
15+
- users get more tolerable speed (30 seconds) when there’s no instant solver liquidity
16+
- solvers can fast rebalance against a pool for higher throughput
17+
18+
While there are already other pool based bridges available (Stargate, Across, etc), the idea is that none of these fully optimize for a world dominated by sophisticated solvers and long tail chains, so there is a big gap in the market.
19+
20+
#### Implementation
21+
22+
The rough idea is that Relay Vaults are used to “accelerate” any existing bridge:
23+
24+
- users send money over a bridge, but via a proxy contract
25+
- in parallel, a fast message (e.g. via Hyperlane) is sent to the pool on the destination
26+
- the pool immediately gives funds to the user, minus a fee, because it knows that repayment is on the way
27+
- when the bridge completes, the funds arrive in the proxy contract
28+
- if the pool successfully filled the request, the funds are used to replenish the pool
29+
- if not, then the funds are given to the user
30+
31+
What’s interesting about this pool design is that effectively 100% of volume is getting rebalanced over a bridge. At first glance, this might seem inefficient, because it’s not able to do “netting” of bi-directional flow, as seen in most pool-based bridges. But this is deliberate. The assumption is that if there’s any netting available, solvers will take it. And the only volume that will come to the pool is the “toxic” orderflow, i.e. the one-directional excess. This design embraces that reality and optimizes for it:
32+
33+
- <b>one-sided pools</b>
34+
- rather than trying to manage connected pools on two or more chains, and rebalance between them, you can have simple one-sided pools
35+
- there’s no need to manage how liquidity is allocated between pools on different chains, because each pool is isolated, and 100% of volume replenished back to the pool
36+
- LPs choose exactly where to allocate liquidity, and get a simple deposit/withdraw UX
37+
- you can still achieve multi-directional flow by deploying multiple (unrelated) pools on different chains, and composing them at the application layer
38+
- <b>permissionless deployment</b>
39+
- because pools are isolated, it’s much easier to let anyone deploy them
40+
- this allows faster expansion to new chains
41+
- <b>yield maximization</b>
42+
- toxic orderflow tends to come in bursts, when solvers receive more demand than anticipated
43+
- this means that liquidity is often idle, and can be deployed into other protocols to earn a “base yield” when it’s not in use
44+
- this also pairs nicely with permissionless deployment, because you can have different pools with different risk / yield profiles

packages/networks/src/earliestBlocks.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
"sepolia": 8590000,
44
"arbitrum": 349398000,
55
"base": 31826000,
6-
"mint": 17540000,
76
"redstone": 19252000,
87
"lisk": 17980000,
98
"soneium": 8777000,

packages/networks/src/networks/mint.ts

Lines changed: 0 additions & 30 deletions
This file was deleted.

0 commit comments

Comments
 (0)