sUSDe

Ethereum ERC-20 Token

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

Admin & Risk

Who can change the rules?

Block #25,169,551

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,169,551 · just now
DEFAULT_ADMIN_ROLE() view → 0x0000000000000000000000000000000000000000000000000000000000000000

Returns

Name Type Description
bytes32
DOMAIN_SEPARATOR() view → 0x940284ae30a8660e5c2bae12953bc4bd5a028a0f55e1dd2c19a8c1473d3eb553

Returns

Name Type Description
bytes32
MAX_COOLDOWN_DURATION() view → 7,776,000

Returns

Name Type Description
uint24
allowance(owner: address, spender: address) view
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
spender address

Returns

Name Type Description
uint256
asset() view → 0x4c9edd5852cd905f086c759e8383e09bff1e68b3
dev: See {IERC4626-asset}.

Returns

Name Type Description
address
balanceOf(account: address) view
dev: Returns the amount of tokens owned by `account`.

Parameters

Name Type Description
account address

Returns

Name Type Description
uint256
convertToAssets(shares: uint256) view
dev: See {IERC4626-convertToAssets}.

Parameters

Name Type Description
shares uint256

Returns

Name Type Description
uint256
convertToShares(assets: uint256) view
dev: See {IERC4626-convertToShares}.

Parameters

Name Type Description
assets uint256

Returns

Name Type Description
uint256
cooldownDuration() view → 86,400

Returns

Name Type Description
uint24
cooldowns(address) view

Parameters

Name Type Description
address

Returns

Name Type Description
cooldownEnd uint104
underlyingAmount uint152
decimals() pure → 18
dev: Necessary because both ERC20 (from ERC20Permit) and ERC4626 declare decimals()

Returns

Name Type Description
uint8
eip712Domain() view → 0x0f, sUSDe, 1, 1, 0x9d39a5de30e57443bff2a8307a4256c8797a3497, 0x0000000000000000000000000000000000000000000000000000000000000000, []
dev: See {EIP-5267}. _Available since v4.9._

Returns

Name Type Description
fields bytes1
name string
version string
chainId uint256
verifyingContract address
salt bytes32
extensions uint256[]
getRoleAdmin(role: bytes32) view
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

Returns

Name Type Description
bytes32
getUnvestedAmount() view → 40,063,676,001,984,126,984,127

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

Returns

Name Type Description
uint256
hasRole(role: bytes32, account: address) view
dev: Returns `true` if `account` has been granted `role`.

Parameters

Name Type Description
role bytes32
account address

Returns

Name Type Description
bool
lastDistributionTimestamp() view → 1,779,669,095

Returns

Name Type Description
uint256
maxDeposit(address) view
dev: See {IERC4626-maxDeposit}.

Parameters

Name Type Description
address

Returns

Name Type Description
uint256
maxMint(address) view
dev: See {IERC4626-maxMint}.

Parameters

Name Type Description
address

Returns

Name Type Description
uint256
maxRedeem(owner: address) view
dev: See {IERC4626-maxRedeem}.

Parameters

Name Type Description
owner address

Returns

Name Type Description
uint256
maxWithdraw(owner: address) view
dev: See {IERC4626-maxWithdraw}.

Parameters

Name Type Description
owner address

Returns

Name Type Description
uint256
name() view → Staked USDe
dev: Returns the name of the token.

Returns

Name Type Description
string
nonces(owner: address) view
dev: See {IERC20Permit-nonces}.

Parameters

Name Type Description
owner address

Returns

Name Type Description
uint256
owner() view → 0x3b0aaf6e6fcd4a7ceef8c92c32dfea9e64dc1862
dev: See {IERC5313-owner}.

Returns

Name Type Description
address
previewDeposit(assets: uint256) view
dev: See {IERC4626-previewDeposit}.

Parameters

Name Type Description
assets uint256

Returns

Name Type Description
uint256
previewMint(shares: uint256) view
dev: See {IERC4626-previewMint}.

Parameters

Name Type Description
shares uint256

Returns

Name Type Description
uint256
previewRedeem(shares: uint256) view
dev: See {IERC4626-previewRedeem}.

Parameters

Name Type Description
shares uint256

Returns

Name Type Description
uint256
previewWithdraw(assets: uint256) view
dev: See {IERC4626-previewWithdraw}.

Parameters

Name Type Description
assets uint256

Returns

Name Type Description
uint256
silo() view → 0x7fc7c91d556b400afa565013e3f32055a0713425

Returns

Name Type Description
address
supportsInterface(interfaceId: bytes4) view
dev: See {IERC165-supportsInterface}.

Parameters

Name Type Description
interfaceId bytes4

Returns

Name Type Description
bool
symbol() view → sUSDe
dev: Returns the symbol of the token, usually a shorter version of the name.

Returns

Name Type Description
string
totalAssets() view → 1,811,120,536,365,471,283,423,323,841

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

Returns

Name Type Description
uint256
totalSupply() view → 1,469,175,110.59 sUSDe
dev: Returns the amount of tokens in existence.

Returns

Name Type Description
uint256
vestingAmount() view → 60,208,404,761,904,761,904,762

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