Skip to content

Cross-chain Tokens

Overview

The Spark Liquidity Layer enables cross-chain liquidity of USDS, sUSDS and sUSDC. Integrators on these networks can tap into this liquidity by integrating these cross-chain tokens, and the Spark PSM.

The crosschain USDS and sUSDS tokens use the same simple ERC20 token implementation. The only difference between them is that sUSDS will increase in value over time according to the Sky Savings Rate. Converting between them on other networks can be done at no slippage or fees beyond gas using the Spark PSM. The crosschain sUSDS token does not contain any ERC4626 functionality - this is only available on Ethereum mainnet.

sUSDC does contain ERC4626 functionality, and can be used to deposit into the Spark Savings Vault.

Contract Details

USDS

  • Type/Category: Token
  • Contract Source: Github

sUSDS

  • Type/Category: Token
  • Contract Source: Github

sUSDC

  • Type/Category: Token
  • Contract Source: Github

Deployment Addresses

NetworkTokenAddress
BaseUSDS0x820C137fa70C8691f0e44Dc420a5e53c168921Dc
BasesUSDS0x5875eEE11Cf8398102FdAd704C9E96607675467a
BasesUSDC0x3128a0F7f0ea68E7B7c9B00AFa7E41045828e858
ArbitrumUSDS0x6491c05A82219b8D1479057361ff1654749b876b
ArbitrumsUSDS0xdDb46999F8891663a8F2828d25298f70416d7610
ArbitrumsUSDC0x940098b108fB7D0a7E374f6eDED7760787464609
OptimismUSDS0x4F13a96EC5C4Cf34e442b46Bbd98a0791F20edC3
OptimismsUSDS0xb5B2dc7fd34C249F4be7fB1fCea07950784229e0
OptimismsUSDC0xCF9326e24EBfFBEF22ce1050007A43A3c0B6DB55
UnichainUSDS0x7E10036Acc4B56d4dFCa3b77810356CE52313F9C
UnichainsUSDS0xA06b10Db9F390990364A3984C04FaDf1c13691b5
UnichainsUSDC0x14d9143BEcC348920b68D123687045db49a016C6

ERC20 token functionality

The contract implements the functions specified in the ERC-20 interface.

  • transfer: Transfers a specified amount of tokens from the caller's address to the specified recipient's address. It returns a boolean value indicating the success of the transfer.
  • transferFrom: Transfers a specified amount of tokens from the from address to the to address. The transfer must be allowed by the from address by calling the approve function or by setting an allowance. It returns a boolean value indicating the success of the transfer.
  • approve: Sets an allowance for a specific spender to spend a certain amount of tokens on behalf of the caller. It returns a boolean value indicating the success of the approval.

ERC4626 token functionality (only crosschain sUSDC)

The contract implements the functions specified in the ERC-4626 interface.

  • deposit: Deposits a specified amount of tokens into the vault. It returns the amount of shares minted to the caller.
  • mint: Mints a specified amount of shares to the caller. It returns the amount of shares minted to the caller.
  • redeem: Redeems a specified amount of shares from the vault. It returns the amount of tokens redeemed to the caller.
  • withdraw: Withdraws a specified amount of tokens from the vault. It returns the amount of tokens withdrawn from the caller.

Upgradeability

The contract uses the ERC-1822 UUPS pattern for upgradeability and the ERC-1967 proxy storage slots standard. It is important that the SUsdsDeploy library sequence be used for deploying.

Events emitted

  • Approval: This event is emitted when an approval is set for a specific address. It indicates that the owner has approved the spender to spend a certain amount of tokens.
  • Transfer: This event is emitted when tokens are transferred from one address to another. It indicates the amount of tokens transferred and the addresses involved in the transfer.

Additional resources