sUSDe

Ethereum ERC-20 Token Browse chains

0x9d39a5de30e57443bff2a8307a4256c8797a3497

Solidity v0.8.19+commit.7dd6d404

Fungible token following the ERC-20 standard.

🤖
Query this contract from your AI
Reference: susde-eth 0x9d39a5de30e57443bff2a8307a4256c8797a3497
Sample prompt: "Tell me the current state of susde-eth"
No AI wired up yet? → mcp.smarts.md · Browse chains

Admin & Risk

Who can change the rules?

Block #25,493,373

Detected mintable, ownable, and role based controls from the verified ABI.

Mintable Ownable Role Based

Current controls

Owner
0x3b0aaf6e6fcd4a7ceef8c92c32dfea9e64dc1862 ↗ Etherscan → smarts

Overview

Read Functions
33
Write Functions
24
Events
13

Read Functions

Block #25,493,373 · just now
DEFAULT_ADMIN_ROLE() view → 0x0000000000000000000000000000000000000000000000000000000000000000

Returns the identifier for the contract's default admin role.✨ AI

Returns

Name Type Description
bytes32 bytes32 role identifier that represents the DEFAULT_ADMIN_ROLE used for role-based access control✨ AI
DOMAIN_SEPARATOR() view → 0x940284ae30a8660e5c2bae12953bc4bd5a028a0f55e1dd2c19a8c1473d3eb553

Returns the EIP-712 domain separator used to verify typed signatures (EIP-2612).✨ AI

dev: Computed from the contract name, version, chainId, and address per EIP-712; it changes if chainId or address change.✨ AI

Returns

Name Type Description
bytes32 EIP-712 domain separator (bytes32) used to validate typed signatures such as permit.✨ AI
MAX_COOLDOWN_DURATION() view → 7,776,000

Returns the maximum cooldown duration allowed for unstaking, expressed in seconds.✨ AI

Returns

Name Type Description
uint24 The maximum cooldown duration in seconds, returned as a uint24.✨ AI
allowance(owner: address, spender: address) view

Returns the remaining token allowance that owner granted to spender.✨ AI

dev: Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.

Parameters

Name Type Description
owner address Address that owns the tokens.✨ AI
spender address Address authorized to spend tokens on owner's behalf.✨ AI

Returns

Name Type Description
uint256 Remaining allowance as a uint256 (amount in the token's smallest unit) that spender may transfer from owner.✨ AI
asset() view → 0x4c9edd5852cd905f086c759e8383e09bff1e68b3

Return the address of the underlying asset token used by this staked USDe contract.✨ AI

dev: See {IERC4626-asset}.

Returns

Name Type Description
address The ERC-20 token contract address that serves as the underlying asset for staking.✨ AI
balanceOf(account: address) view

Return the token balance for the specified account.✨ AI

dev: Returns the amount of tokens owned by `account`.

Parameters

Name Type Description
account address Address whose token balance will be returned.✨ AI

Returns

Name Type Description
uint256 The account's token balance denominated in the token's smallest units (uint256).✨ AI
convertToAssets(shares: uint256) view

Converts a number of vault shares into the corresponding amount of underlying assets.✨ AI

dev: See {IERC4626-convertToAssets}.

Parameters

Name Type Description
shares uint256 Number of vault shares to convert to underlying assets.✨ AI

Returns

Name Type Description
uint256 Amount of underlying assets that the provided shares currently represent.✨ AI
convertToShares(assets: uint256) view

Convert an asset token amount into the equivalent number of vault shares.✨ AI

dev: See {IERC4626-convertToShares}.

Parameters

Name Type Description
assets uint256 Amount of underlying assets to convert to shares.✨ AI

Returns

Name Type Description
uint256 Number of shares equivalent to the provided assets, rounded down to avoid exceeding assets.✨ AI
cooldownDuration() view → 86,400

Returns the cooldown duration in seconds required before tokens become eligible to unstake.✨ AI

Returns

Name Type Description
uint24 The cooldown duration in seconds (uint24) that must elapse before tokens can be unstaked.✨ AI
cooldowns(address) view

Returns the cooldown end timestamp and the underlying amount for a given account.✨ AI

Parameters

Name Type Description
address

Returns

Name Type Description
cooldownEnd uint104 cooldownEnd: uint104 timestamp (seconds) when the account's cooldown ends.✨ AI
underlyingAmount uint152 underlyingAmount: uint152 amount of underlying tokens tied to the cooldown for the account.✨ AI
decimals() pure → 18

Return the number of decimal places used by the token.✨ AI

dev: Necessary because both ERC20 (from ERC20Permit) and ERC4626 declare decimals()

Returns

Name Type Description
uint8 The token's decimals as a uint8 representing the number of decimal places.✨ AI
eip712Domain() view → 0x0f, sUSDe, 1, 1, 0x9d39a5de30e57443bff2a8307a4256c8797a3497, 0x0000000000000000000000000000000000000000000000000000000000000000, []

Return the EIP-712 domain components used for signing permits and meta-transactions.✨ AI

dev: See {EIP-5267}. _Available since v4.9._

Returns

Name Type Description
fields bytes1 fields — single byte indicating which EIP-712 domain fields are present.✨ AI
name string name — domain name string (typically the token name) used in the EIP-712 domain.✨ AI
version string version — domain version string used in the EIP-712 domain.✨ AI
chainId uint256 chainId — numeric chain identifier that signatures are bound to.✨ AI
verifyingContract address verifyingContract — address of the contract that verifies EIP-712 signatures.✨ AI
salt bytes32 salt — 32-byte salt field included in the domain for uniqueness.✨ AI
extensions uint256[] extensions — array of uint256 extension values for any custom domain fields.✨ AI
getRoleAdmin(role: bytes32) view

Returns the admin role that controls the given role.✨ AI

dev: Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.

Parameters

Name Type Description
role bytes32 Role identifier as a bytes32 value.✨ AI

Returns

Name Type Description
bytes32 Admin role identifier (bytes32) that can grant or revoke the specified role.✨ AI
getUnvestedAmount() view → 18,252,004,069,444,444,444,444

Returns the amount of USDe tokens that are unvested in the contract.

Returns

Name Type Description
uint256
hasRole(role: bytes32, account: address) view

Check if an account currently holds a specific role identifier.✨ AI

dev: Returns `true` if `account` has been granted `role`.

Parameters

Name Type Description
role bytes32 Role identifier as a bytes32 value.✨ AI
account address Address of the account to check for the role.✨ AI

Returns

Name Type Description
bool True if the account has the role, otherwise false.✨ AI
lastDistributionTimestamp() view → 1,783,560,647

Returns the Unix timestamp of the last reward distribution.✨ AI

Returns

Name Type Description
uint256 Unix timestamp (seconds) when the contract last distributed staking rewards.✨ AI
maxDeposit(address) view

Return the maximum amount the given address can deposit into the contract.✨ AI

dev: See {IERC4626-maxDeposit}.

Parameters

Name Type Description
address

Returns

Name Type Description
uint256 Maximum deposit allowed for the given address, expressed in the underlying token's smallest units.✨ AI
maxMint(address) view

Return the maximum amount of tokens the address can mint.✨ AI

dev: See {IERC4626-maxMint}.

Parameters

Name Type Description
address

Returns

Name Type Description
uint256 Maximum number of tokens the address is allowed to mint, expressed in the token's smallest unit.✨ AI
maxRedeem(owner: address) view

Return the maximum amount of shares the given owner can redeem right now.✨ AI

dev: See {IERC4626-maxRedeem}.

Parameters

Name Type Description
owner address Address owning the shares to be potentially redeemed.✨ AI

Returns

Name Type Description
uint256 Maximum number of shares the owner can redeem, limited by balance and caller allowance.✨ AI
maxWithdraw(owner: address) view

Return the maximum amount of underlying tokens the owner can withdraw right now.✨ AI

dev: See {IERC4626-maxWithdraw}.

Parameters

Name Type Description
owner address Address whose withdrawable amount is being queried.✨ AI

Returns

Name Type Description
uint256 Maximum amount of underlying asset the owner may withdraw, expressed in the contract's asset units.✨ AI
name() view → Staked USDe

Returns the ERC-20 token name for this StakedUSDeV2 token.✨ AI

dev: Returns the name of the token.

Returns

Name Type Description
string The token name as a string.✨ AI
nonces(owner: address) view

Return the current permit nonce for an account, used to authorize off-chain approvals.✨ AI

dev: See {IERC20Permit-nonces}.

Parameters

Name Type Description
owner address Account address whose permit nonce is returned.✨ AI

Returns

Name Type Description
uint256 Current nonce value for the owner that must be included in permit signatures to prevent replay.✨ AI
owner() view → 0x3b0aaf6e6fcd4a7ceef8c92c32dfea9e64dc1862

Returns the address of the contract owner.✨ AI

dev: See {IERC5313-owner}.

Returns

Name Type Description
address The address currently set as the contract owner.✨ AI
previewDeposit(assets: uint256) view

Show how many vault shares you would receive for depositing the given amount of assets.✨ AI

dev: See {IERC4626-previewDeposit}.

Parameters

Name Type Description
assets uint256 Amount of underlying assets to deposit (in token smallest units).✨ AI

Returns

Name Type Description
uint256 Estimated number of shares that would be minted for the provided asset amount.✨ AI
previewMint(shares: uint256) view

Estimate the amount of underlying assets required to mint a given number of vault shares.✨ AI

dev: See {IERC4626-previewMint}.

Parameters

Name Type Description
shares uint256 Number of vault shares to mint.✨ AI

Returns

Name Type Description
uint256 Amount of underlying asset tokens required to mint the specified shares.✨ AI
previewRedeem(shares: uint256) view

Estimate the amount of underlying tokens you will receive for burning the given shares.✨ AI

dev: See {IERC4626-previewRedeem}.

Parameters

Name Type Description
shares uint256 Number of vault shares to redeem for underlying tokens.✨ AI

Returns

Name Type Description
uint256 Estimated amount of underlying USDe tokens that will be returned for the given shares.✨ AI
previewWithdraw(assets: uint256) view

Preview how many vault shares you must burn to withdraw a specified amount of underlying assets.✨ AI

dev: See {IERC4626-previewWithdraw}.

Parameters

Name Type Description
assets uint256 Amount of underlying assets you want to withdraw from the vault.✨ AI

Returns

Name Type Description
uint256 Estimated number of vault shares required to withdraw the requested assets.✨ AI
silo() view → 0x7fc7c91d556b400afa565013e3f32055a0713425

Returns the address of the silo contract associated with this token.✨ AI

Returns

Name Type Description
address The address of the silo contract used by StakedUSDeV2.✨ AI
supportsInterface(interfaceId: bytes4) view

Report whether the contract implements the interface identified by the given interfaceId.✨ AI

dev: See {IERC165-supportsInterface}.

Parameters

Name Type Description
interfaceId bytes4 Interface identifier (4-byte) to query, following ERC‑165 conventions.✨ AI

Returns

Name Type Description
bool True if the contract implements the interface specified by interfaceId; otherwise false.✨ AI
symbol() view → sUSDe

Returns the token's symbol as a short, human-readable identifier.✨ AI

dev: Returns the symbol of the token, usually a shorter version of the name.

Returns

Name Type Description
string The token symbol string used as the ERC-20 identifier (e.g., "sUSDe").✨ AI
totalAssets() view → 1,617,020,291,407,746,241,103,035,954

Returns the amount of USDe tokens that are vested in the contract.

Returns

Name Type Description
uint256
totalSupply() view → 1,305,630,602.33 sUSDe

Returns the total supply of StakedUSDeV2 tokens.✨ AI

dev: Returns the amount of tokens in existence.

Returns

Name Type Description
uint256 Total number of tokens in existence as a uint256.✨ AI
vestingAmount() view → 56,889,363,333,333,333,333,333

Returns

Name Type Description
uint256

Write Functions

acceptAdmin() nonpayable
addToBlacklist(target: address, isFullBlacklisting: bool) nonpayable

Allows the owner (DEFAULT_ADMIN_ROLE) and blacklist managers to blacklist addresses.

Parameters

Name Type Description
target address The address to blacklist.
isFullBlacklisting bool Soft or full blacklisting level.
approve(spender: address, amount: uint256) nonpayable
dev: Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.

Parameters

Name Type Description
spender address
amount uint256

Returns

Name Type Description
bool
cooldownAssets(assets: uint256) nonpayable

redeem assets and starts a cooldown to claim the converted underlying asset

Parameters

Name Type Description
assets uint256 assets to redeem

Returns

Name Type Description
shares uint256
cooldownShares(shares: uint256) nonpayable

redeem shares into assets and starts a cooldown to claim the converted underlying asset

Parameters

Name Type Description
shares uint256 shares to redeem

Returns

Name Type Description
assets uint256
decreaseAllowance(spender: address, subtractedValue: uint256) nonpayable
dev: Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.

Parameters

Name Type Description
spender address
subtractedValue uint256

Returns

Name Type Description
bool
deposit(assets: uint256, receiver: address) nonpayable
dev: See {IERC4626-deposit}.

Parameters

Name Type Description
assets uint256
receiver address

Returns

Name Type Description
uint256
grantRole(role: bytes32, account: address) nonpayable

admin role cannot be granted externally

Parameters

Name Type Description
role bytes32 bytes32
account address address
increaseAllowance(spender: address, addedValue: uint256) nonpayable
dev: Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.

Parameters

Name Type Description
spender address
addedValue uint256

Returns

Name Type Description
bool
mint(shares: uint256, receiver: address) nonpayable
dev: See {IERC4626-mint}. As opposed to {deposit}, minting is allowed even if the vault is in a state where the price of a share is zero. In this case, the shares will be minted without requiring any assets to be deposited.

Parameters

Name Type Description
shares uint256
receiver address

Returns

Name Type Description
uint256
permit(owner: address, spender: address, value: uint256, deadline: uint256, v: uint8, r: bytes32, s: bytes32) nonpayable
dev: See {IERC20Permit-permit}.

Parameters

Name Type Description
owner address
spender address
value uint256
deadline uint256
v uint8
r bytes32
s bytes32
redeem(shares: uint256, receiver: address, _owner: address) nonpayable
dev: See {IERC4626-redeem}.

Parameters

Name Type Description
shares uint256
receiver address
_owner address

Returns

Name Type Description
uint256
redistributeLockedAmount(from: address, to: address) nonpayable
dev: Burns the full restricted user amount and mints to the desired owner address.

Parameters

Name Type Description
from address The address to burn the entire balance, with the FULL_RESTRICTED_STAKER_ROLE
to address The address to mint the entire balance of "from" parameter.
removeFromBlacklist(target: address, isFullBlacklisting: bool) nonpayable

Allows the owner (DEFAULT_ADMIN_ROLE) and blacklist managers to un-blacklist addresses.

Parameters

Name Type Description
target address The address to un-blacklist.
isFullBlacklisting bool Soft or full blacklisting level.
renounceRole(bytes32, address) nonpayable
dev: Remove renounce role access from AccessControl, to prevent users to resign roles.

Parameters

Name Type Description
bytes32
address
rescueTokens(token: address, amount: uint256, to: address) nonpayable

Allows the owner to rescue tokens accidentally sent to the contract. Note that the owner cannot rescue USDe tokens because they functionally sit here and belong to stakers but can rescue staked USDe as they should never actually sit in this contract and a staker may well transfer them here by accident.

Parameters

Name Type Description
token address The token to be rescued.
amount uint256 The amount of tokens to be rescued.
to address Where to send rescued tokens
revokeRole(role: bytes32, account: address) nonpayable

admin role cannot be revoked

Parameters

Name Type Description
role bytes32 bytes32
account address address
setCooldownDuration(duration: uint24) nonpayable

Set cooldown duration. If cooldown duration is set to zero, the StakedUSDeV2 behavior changes to follow ERC4626 standard and disables cooldownShares and cooldownAssets methods. If cooldown duration is greater than zero, the ERC4626 withdrawal and redeem functions are disabled, breaking the ERC4626 standard, and enabling the cooldownShares and the cooldownAssets functions.

Parameters

Name Type Description
duration uint24 Duration of the cooldown
transfer(to: address, amount: uint256) nonpayable
dev: Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.

Parameters

Name Type Description
to address
amount uint256

Returns

Name Type Description
bool
transferAdmin(newAdmin: address) nonpayable

This can ONLY be executed by the current admin

Parameters

Name Type Description
newAdmin address address
transferFrom(from: address, to: address, amount: uint256) nonpayable
dev: Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.

Parameters

Name Type Description
from address
to address
amount uint256

Returns

Name Type Description
bool
transferInRewards(amount: uint256) nonpayable

Allows the owner to transfer rewards from the controller contract into this contract.

Parameters

Name Type Description
amount uint256 The amount of rewards to transfer.
unstake(receiver: address) nonpayable

Claim the staking amount after the cooldown has finished. The address can only retire the full amount of assets.

dev: unstake can be called after cooldown have been set to 0, to let accounts to be able to claim remaining assets locked at Silo

Parameters

Name Type Description
receiver address Address to send the assets by the staker
withdraw(assets: uint256, receiver: address, _owner: address) nonpayable
dev: See {IERC4626-withdraw}.

Parameters

Name Type Description
assets uint256
receiver address
_owner address

Returns

Name Type Description
uint256

Events

AdminTransferRequested(oldAdmin: address, newAdmin: address)
Name Type Indexed Description
oldAdmin address
newAdmin address
AdminTransferred(oldAdmin: address, newAdmin: address)
Name Type Indexed Description
oldAdmin address
newAdmin address
Approval(owner: address, spender: address, value: uint256)
Name Type Indexed Description
owner address
spender address
value uint256
CooldownDurationUpdated(previousDuration: uint24, newDuration: uint24)

Event emitted when cooldown duration updates

Name Type Indexed Description
previousDuration uint24
newDuration uint24
Deposit(sender: address, owner: address, assets: uint256, shares: uint256)
Name Type Indexed Description
sender address
owner address
assets uint256
shares uint256
EIP712DomainChanged()
LockedAmountRedistributed(from: address, to: address, amount: uint256)

Event emitted when the balance from an FULL_RESTRICTED_STAKER_ROLE user are redistributed

Name Type Indexed Description
from address
to address
amount uint256
RewardsReceived(amount: uint256)

Event emitted when the rewards are received

Name Type Indexed Description
amount uint256
RoleAdminChanged(role: bytes32, previousAdminRole: bytes32, newAdminRole: bytes32)
Name Type Indexed Description
role bytes32
previousAdminRole bytes32
newAdminRole bytes32
RoleGranted(role: bytes32, account: address, sender: address)
Name Type Indexed Description
role bytes32
account address
sender address
RoleRevoked(role: bytes32, account: address, sender: address)
Name Type Indexed Description
role bytes32
account address
sender address
Transfer(from: address, to: address, value: uint256)
Name Type Indexed Description
from address
to address
value uint256
Withdraw(sender: address, receiver: address, owner: address, assets: uint256, shares: uint256)
Name Type Indexed Description
sender address
receiver address
owner address
assets uint256
shares uint256