External Integrations

External Integrations

Sei staking precompile

The precompile at 0x0000000000000000000000000000000000001005 exposes Cosmos staking module functions to EVM contracts. JellyPad's staker uses three of them:

interface IStaking {
    function delegate(string memory valAddress) external payable returns (bool);
    function undelegate(string memory valAddress, uint256 amount) external returns (bool);
    function redelegate(string memory src, string memory dst, uint256 amount) external returns (bool);
}

Important quirk: unit asymmetry.

  • delegate(string) is payable. The precompile reads msg.value (in wei, EVM convention) and converts internally.
  • undelegate(string, uint256) and redelegate(...) take amounts as uint256 parameters interpreted as usei (the Cosmos-side denom, 1e6 = 1 SEI).

Mixing wei and usei silently reverts. Our JellyPadStaker._toUsei(wei) = wei / 1e12 applies the conversion at every undelegate call site. This caught us on the v1 staker deploy and stranded 10 SEI before we found it.

Sei distribution precompile

0x0000000000000000000000000000000000001007. For pulling delegator rewards.

interface IDistribution {
    function withdrawDelegationRewards(string memory validator) external returns (bool);
    function withdrawMultipleDelegationRewards(string[] memory validators) external returns (bool);
}

JellyPadStaker.claim() is permissionless. Anyone can call it to pull rewards from the active validator into the staker contract. The newly-arrived SEI lifts the buffer (and the jpSEI rate).

Saphyre / DragonSwap V2

Saphyre is Sei's main DEX. They acquired/rebranded DragonSwap. The underlying contracts are the same V2 deployment. Saphyre uses a Uniswap V2 fork with SEI instead of ETH everywhere:

Standard V2 methodSaphyre method
WETH()WSEI()
addLiquidityETHaddLiquiditySEI
swapExactETHForTokensswapExactSEIForTokens
Two-token addLiquidityunchanged
swapExactTokensForTokensunchanged
getAmountsOutunchanged

We use the two-token addLiquidity path at graduation. Pairing jpSEI (an ERC-20) with the memecoin (also an ERC-20) doesn't need any of the SEI-wrapper variants.

Splash spSEI (legacy, no longer used)

Splash is a liquid-staking protocol on Sei. Their token spSEI was JellyPad's LST through v3. We migrated off Splash in v4 because:

  1. Their instant-unstake buffer was sized for the whole Sei DeFi ecosystem and saw values as low as 80 SEI on chain. A single sell anywhere on Sei could drain it and break our sell flows. Hard dependency we couldn't control.
  2. Splash takes 6% of validator rewards as a platform fee. Running our own staker captures that share for jpSEI holders.

The Splash addresses (0x151669B5... pool, 0xC2573613... token) are still on-chain and still functional. We just don't use them.

Sei oracle precompile

0x0000000000000000000000000000000000000091. Provides USD prices on-chain. Not currently used. Each JellyPad token stores its own seiUsdPrice set by the factory owner. A future revision could pull from the oracle to make the graduation threshold genuinely USD-pegged.

Bridge / on-ramp

JellyPad doesn't operate its own bridge. Users bring SEI from:

  • Stargate: recommended. One-tx bridge from Ethereum.
  • Sei's official bridge: Wormhole-based, slightly more steps.
  • CEX deposits: Binance, Coinbase, Kraken all support native SEI withdrawals.