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
Network | Token | Address |
---|---|---|
Base | USDS | 0x820C137fa70C8691f0e44Dc420a5e53c168921Dc |
Base | sUSDS | 0x5875eEE11Cf8398102FdAd704C9E96607675467a |
Base | sUSDC | 0x3128a0F7f0ea68E7B7c9B00AFa7E41045828e858 |
Arbitrum | USDS | 0x6491c05A82219b8D1479057361ff1654749b876b |
Arbitrum | sUSDS | 0xdDb46999F8891663a8F2828d25298f70416d7610 |
Arbitrum | sUSDC | 0x940098b108fB7D0a7E374f6eDED7760787464609 |
Optimism | USDS | 0x4F13a96EC5C4Cf34e442b46Bbd98a0791F20edC3 |
Optimism | sUSDS | 0xb5B2dc7fd34C249F4be7fB1fCea07950784229e0 |
Optimism | sUSDC | 0xCF9326e24EBfFBEF22ce1050007A43A3c0B6DB55 |
Unichain | USDS | 0x7E10036Acc4B56d4dFCa3b77810356CE52313F9C |
Unichain | sUSDS | 0xA06b10Db9F390990364A3984C04FaDf1c13691b5 |
Unichain | sUSDC | 0x14d9143BEcC348920b68D123687045db49a016C6 |
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 thefrom
address to theto
address. The transfer must be allowed by thefrom
address by calling theapprove
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.