FiatTokenV2_2

Sonic ERC-20 Token

0x29219dd400f2bf60e5a23d13be72b486d4038894

Proxy implementation: 0x229e64252e2901a424600e22c28a722404d92dcc

Solidity v0.6.12+commit.27d51765

Fungible token following the ERC-20 standard.

🤖
Query this contract from your AI
Reference: 0x29219dd400f2bf60e5a23d13be72b486d4038894
Sample prompt: "Tell me the current state of sonic/0x29219dd400f2bf60e5a23d13be72b486d4038894"
No AI wired up yet? → mcp.smarts.md
Sonic is a docs-only chain on Smarts: source code and ABI are indexed, but live on-chain data (state, recent events, admin profile) is not currently available. AI agents can still query get_contract_info and get_contract_source via MCP.

Overview

Read Functions
24
Write Functions
31
Events
17

Read Functions

CANCEL_AUTHORIZATION_TYPEHASH() view

Returns

Name Type Description
bytes32
DOMAIN_SEPARATOR() view

Get the EIP712 Domain Separator.

Returns

Name Type Description
bytes32 The bytes32 EIP712 domain separator.
PERMIT_TYPEHASH() view

Returns

Name Type Description
bytes32
RECEIVE_WITH_AUTHORIZATION_TYPEHASH() view

Returns

Name Type Description
bytes32
TRANSFER_WITH_AUTHORIZATION_TYPEHASH() view

Returns

Name Type Description
bytes32
allowance(owner: address, spender: address) view

Gets the remaining amount of fiat tokens a spender is allowed to transfer on behalf of the token owner.

Parameters

Name Type Description
owner address The token owner's address.
spender address The spender's address.

Returns

Name Type Description
uint256 The remaining allowance.
authorizationState(authorizer: address, nonce: bytes32) view

Returns the state of an authorization

dev: Nonces are randomly generated 32-byte data unique to the authorizer's address

Parameters

Name Type Description
authorizer address Authorizer's address
nonce bytes32 Nonce of the authorization

Returns

Name Type Description
bool True if the nonce is used
balanceOf(account: address) view

Gets the fiat token balance of an account.

Parameters

Name Type Description
account address The address to check.

Returns

Name Type Description
uint256 balance The fiat token balance of the account.
blacklister() view

Returns

Name Type Description
address
currency() view

Returns

Name Type Description
string
decimals() view

Returns

Name Type Description
uint8
isBlacklisted(_account: address) view

Checks if account is blacklisted.

Parameters

Name Type Description
_account address The address to check.

Returns

Name Type Description
bool True if the account is blacklisted, false if the account is not blacklisted.
isMinter(account: address) view

Checks if an account is a minter.

Parameters

Name Type Description
account address The address to check.

Returns

Name Type Description
bool True if the account is a minter, false if the account is not a minter.
masterMinter() view

Returns

Name Type Description
address
minterAllowance(minter: address) view

Gets the minter allowance for an account.

Parameters

Name Type Description
minter address The address to check.

Returns

Name Type Description
uint256 The remaining minter allowance for the account.
name() view

Returns

Name Type Description
string
nonces(owner: address) view

Nonces for permit

Parameters

Name Type Description
owner address Token owner's address (Authorizer)

Returns

Name Type Description
uint256 Next nonce
owner() view
dev: Tells the address of the owner

Returns

Name Type Description
address the address of the owner
paused() view

Returns

Name Type Description
bool
pauser() view

Returns

Name Type Description
address
rescuer() view

Returns current rescuer

Returns

Name Type Description
address Rescuer's address
symbol() view

Returns

Name Type Description
string
totalSupply() view

Gets the totalSupply of the fiat token.

Returns

Name Type Description
uint256 The totalSupply of the fiat token.
version() pure

Version string for the EIP712 domain separator

Returns

Name Type Description
string Version string

Write Functions

approve(spender: address, value: uint256) nonpayable

Sets a fiat token allowance for a spender to spend on behalf of the caller.

Parameters

Name Type Description
spender address The spender's address.
value uint256 The allowance amount.

Returns

Name Type Description
bool True if the operation was successful.
blacklist(_account: address) nonpayable

Adds account to blacklist.

Parameters

Name Type Description
_account address The address to blacklist.
burn(_amount: uint256) nonpayable

Allows a minter to burn some of its own tokens.

dev: The caller must be a minter, must not be blacklisted, and the amount to burn should be less than or equal to the account's balance.

Parameters

Name Type Description
_amount uint256 the amount of tokens to be burned.
cancelAuthorization(authorizer: address, nonce: bytes32, v: uint8, r: bytes32, s: bytes32) nonpayable

Attempt to cancel an authorization

dev: Works only if the authorization is not yet used. EOA wallet signatures should be packed in the order of r, s, v.

Parameters

Name Type Description
authorizer address Authorizer's address
nonce bytes32 Nonce of the authorization
v uint8
r bytes32
s bytes32
cancelAuthorization(authorizer: address, nonce: bytes32, signature: bytes) nonpayable

Attempt to cancel an authorization

dev: Works only if the authorization is not yet used. EOA wallet signatures should be packed in the order of r, s, v.

Parameters

Name Type Description
authorizer address Authorizer's address
nonce bytes32 Nonce of the authorization
signature bytes Signature bytes signed by an EOA wallet or a contract wallet
configureMinter(minter: address, minterAllowedAmount: uint256) nonpayable

Adds or updates a new minter with a mint allowance.

Parameters

Name Type Description
minter address The address of the minter.
minterAllowedAmount uint256 The minting amount allowed for the minter.

Returns

Name Type Description
bool True if the operation was successful.
decreaseAllowance(spender: address, decrement: uint256) nonpayable

Decrease the allowance by a given decrement

Parameters

Name Type Description
spender address Spender's address
decrement uint256 Amount of decrease in allowance

Returns

Name Type Description
bool True if successful
increaseAllowance(spender: address, increment: uint256) nonpayable

Increase the allowance by a given increment

Parameters

Name Type Description
spender address Spender's address
increment uint256 Amount of increase in allowance

Returns

Name Type Description
bool True if successful
initialize(tokenName: string, tokenSymbol: string, tokenCurrency: string, tokenDecimals: uint8, newMasterMinter: address, newPauser: address, newBlacklister: address, newOwner: address) nonpayable

Initializes the fiat token contract.

Parameters

Name Type Description
tokenName string The name of the fiat token.
tokenSymbol string The symbol of the fiat token.
tokenCurrency string The fiat currency that the token represents.
tokenDecimals uint8 The number of decimals that the token uses.
newMasterMinter address The masterMinter address for the fiat token.
newPauser address The pauser address for the fiat token.
newBlacklister address The blacklister address for the fiat token.
newOwner address The owner of the fiat token.
initializeV2(newName: string) nonpayable

Initialize v2

Parameters

Name Type Description
newName string New token name
initializeV2_1(lostAndFound: address) nonpayable

Initialize v2.1

Parameters

Name Type Description
lostAndFound address The address to which the locked funds are sent
initializeV2_2(accountsToBlacklist: address[], newSymbol: string) nonpayable

Initialize v2.2

Parameters

Name Type Description
accountsToBlacklist address[] A list of accounts to migrate from the old blacklist
newSymbol string New token symbol data structure to the new blacklist data structure.
mint(_to: address, _amount: uint256) nonpayable

Mints fiat tokens to an address.

Parameters

Name Type Description
_to address The address that will receive the minted tokens.
_amount uint256 The amount of tokens to mint. Must be less than or equal to the minterAllowance of the caller.

Returns

Name Type Description
bool True if the operation was successful.
pause() nonpayable
dev: called by the owner to pause, triggers stopped state
permit(owner: address, spender: address, value: uint256, deadline: uint256, signature: bytes) nonpayable

Update allowance with a signed permit

dev: EOA wallet signatures should be packed in the order of r, s, v.

Parameters

Name Type Description
owner address Token owner's address (Authorizer)
spender address Spender's address
value uint256 Amount of allowance
deadline uint256 The time at which the signature expires (unix time), or max uint256 value to signal no expiration
signature bytes Signature bytes signed by an EOA wallet or a contract wallet
permit(owner: address, spender: address, value: uint256, deadline: uint256, v: uint8, r: bytes32, s: bytes32) nonpayable

Update allowance with a signed permit

dev: EOA wallet signatures should be packed in the order of r, s, v.

Parameters

Name Type Description
owner address Token owner's address (Authorizer)
spender address Spender's address
value uint256 Amount of allowance
deadline uint256 The time at which the signature expires (unix time), or max uint256 value to signal no expiration
v uint8
r bytes32
s bytes32
receiveWithAuthorization(from: address, to: address, value: uint256, validAfter: uint256, validBefore: uint256, nonce: bytes32, signature: bytes) nonpayable

Receive a transfer with a signed authorization from the payer

dev: This has an additional check to ensure that the payee's address matches the caller of this function to prevent front-running attacks. EOA wallet signatures should be packed in the order of r, s, v.

Parameters

Name Type Description
from address Payer's address (Authorizer)
to address Payee's address
value uint256 Amount to be transferred
validAfter uint256 The time after which this is valid (unix time)
validBefore uint256 The time before which this is valid (unix time)
nonce bytes32 Unique nonce
signature bytes Signature bytes signed by an EOA wallet or a contract wallet
receiveWithAuthorization(from: address, to: address, value: uint256, validAfter: uint256, validBefore: uint256, nonce: bytes32, v: uint8, r: bytes32, s: bytes32) nonpayable

Receive a transfer with a signed authorization from the payer

dev: This has an additional check to ensure that the payee's address matches the caller of this function to prevent front-running attacks. EOA wallet signatures should be packed in the order of r, s, v.

Parameters

Name Type Description
from address Payer's address (Authorizer)
to address Payee's address
value uint256 Amount to be transferred
validAfter uint256 The time after which this is valid (unix time)
validBefore uint256 The time before which this is valid (unix time)
nonce bytes32 Unique nonce
v uint8
r bytes32
s bytes32
removeMinter(minter: address) nonpayable

Removes a minter.

Parameters

Name Type Description
minter address The address of the minter to remove.

Returns

Name Type Description
bool True if the operation was successful.
rescueERC20(tokenContract: address, to: address, amount: uint256) nonpayable

Rescue ERC20 tokens locked up in this contract.

Parameters

Name Type Description
tokenContract address ERC20 token contract address
to address Recipient address
amount uint256 Amount to withdraw
transfer(to: address, value: uint256) nonpayable

Transfers tokens from the caller.

Parameters

Name Type Description
to address Payee's address.
value uint256 Transfer amount.

Returns

Name Type Description
bool True if the operation was successful.
transferFrom(from: address, to: address, value: uint256) nonpayable

Transfers tokens from an address to another by spending the caller's allowance.

dev: The caller must have some fiat token allowance on the payer's tokens.

Parameters

Name Type Description
from address Payer's address.
to address Payee's address.
value uint256 Transfer amount.

Returns

Name Type Description
bool True if the operation was successful.
transferOwnership(newOwner: address) nonpayable
dev: Allows the current owner to transfer control of the contract to a newOwner.

Parameters

Name Type Description
newOwner address The address to transfer ownership to.
transferWithAuthorization(from: address, to: address, value: uint256, validAfter: uint256, validBefore: uint256, nonce: bytes32, signature: bytes) nonpayable

Execute a transfer with a signed authorization

dev: EOA wallet signatures should be packed in the order of r, s, v.

Parameters

Name Type Description
from address Payer's address (Authorizer)
to address Payee's address
value uint256 Amount to be transferred
validAfter uint256 The time after which this is valid (unix time)
validBefore uint256 The time before which this is valid (unix time)
nonce bytes32 Unique nonce
signature bytes Signature bytes signed by an EOA wallet or a contract wallet
transferWithAuthorization(from: address, to: address, value: uint256, validAfter: uint256, validBefore: uint256, nonce: bytes32, v: uint8, r: bytes32, s: bytes32) nonpayable

Execute a transfer with a signed authorization

dev: EOA wallet signatures should be packed in the order of r, s, v.

Parameters

Name Type Description
from address Payer's address (Authorizer)
to address Payee's address
value uint256 Amount to be transferred
validAfter uint256 The time after which this is valid (unix time)
validBefore uint256 The time before which this is valid (unix time)
nonce bytes32 Unique nonce
v uint8
r bytes32
s bytes32
unBlacklist(_account: address) nonpayable

Removes account from blacklist.

Parameters

Name Type Description
_account address The address to remove from the blacklist.
unpause() nonpayable
dev: called by the owner to unpause, returns to normal state
updateBlacklister(_newBlacklister: address) nonpayable

Updates the blacklister address.

Parameters

Name Type Description
_newBlacklister address The address of the new blacklister.
updateMasterMinter(_newMasterMinter: address) nonpayable

Updates the master minter address.

Parameters

Name Type Description
_newMasterMinter address The address of the new master minter.
updatePauser(_newPauser: address) nonpayable

Updates the pauser address.

Parameters

Name Type Description
_newPauser address The address of the new pauser.
updateRescuer(newRescuer: address) nonpayable

Updates the rescuer address.

Parameters

Name Type Description
newRescuer address The address of the new rescuer.

Events

Approval(owner: address, spender: address, value: uint256)
Name Type Indexed Description
owner address
spender address
value uint256
AuthorizationCanceled(authorizer: address, nonce: bytes32)
Name Type Indexed Description
authorizer address
nonce bytes32
AuthorizationUsed(authorizer: address, nonce: bytes32)
Name Type Indexed Description
authorizer address
nonce bytes32
Blacklisted(_account: address)
Name Type Indexed Description
_account address
BlacklisterChanged(newBlacklister: address)
Name Type Indexed Description
newBlacklister address
Burn(burner: address, amount: uint256)
Name Type Indexed Description
burner address
amount uint256
MasterMinterChanged(newMasterMinter: address)
Name Type Indexed Description
newMasterMinter address
Mint(minter: address, to: address, amount: uint256)
Name Type Indexed Description
minter address
to address
amount uint256
MinterConfigured(minter: address, minterAllowedAmount: uint256)
Name Type Indexed Description
minter address
minterAllowedAmount uint256
MinterRemoved(oldMinter: address)
Name Type Indexed Description
oldMinter address
OwnershipTransferred(previousOwner: address, newOwner: address)
Name Type Indexed Description
previousOwner address representing the address of the previous owner
newOwner address representing the address of the new owner
Pause()
PauserChanged(newAddress: address)
Name Type Indexed Description
newAddress address
RescuerChanged(newRescuer: address)
Name Type Indexed Description
newRescuer address
Transfer(from: address, to: address, value: uint256)
Name Type Indexed Description
from address
to address
value uint256
UnBlacklisted(_account: address)
Name Type Indexed Description
_account address
Unpause()