ETH Price: $3,105.54 (+5.41%)
Gas: 3 Gwei

Token

Curve.Fi USD Stablecoin (crvUSD)
 

Overview

Max Total Supply

725,352,070.003569699292264318 crvUSD

Holders

1,659 ( -0.121%)

Market

Price

$1.00 @ 0.000322 ETH

Onchain Market Cap

$725,026,386.92

Circulating Supply Market Cap

$128,857,223.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 crvUSD

Value
$0.00
0xf0d4c12a5768d806021f80a262b4d39d26c58b8d
Loading...
Loading
Loading...
Loading
Loading...
Loading

Market

Volume (24H):$19,131,982.00
Market Capitalization:$128,857,223.00
Circulating Supply:128,932,783.00 crvUSD
Market Data Source: Coinmarketcap

 

 

 

 


# Exchange Pair Price  24H Volume % Volume
1
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0XDAC17F958D2EE523A2206206994597C13D831EC7$0.9994
0.0003221 Eth
$6,283,298.00
6,285,064.460 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
45.4668%
2
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48$0.9992
0.0003220 Eth
$5,649,388.00
5,653,264.355 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
40.8963%
3
Curve (Ethereum)
0X4C9EDD5852CD905F086C759E8383E09BFF1E68B3-0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E$0.9994
0.0003221 Eth
$4,958,766.00
4,950,851.691 0X4C9EDD5852CD905F086C759E8383E09BFF1E68B3
35.8150%
4
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$1.001
0.0003225 Eth
$699,187.00
689,205.649 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
4.9858%
5
Curve (Ethereum)
0X40D16FC0246AD3160CCC09B8D0D3A2CD28AE6C2F-0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E$0.9994
0.0003221 Eth
$338,300.00
338,183.303 0X40D16FC0246AD3160CCC09B8D0D3A2CD28AE6C2F
2.4465%
6
Curve (Ethereum)
0X8E870D67F660D95D5BE530380D0EC0BD388289E1-0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E$0.9994
0.0003221 Eth
$316,174.00
315,929.807 0X8E870D67F660D95D5BE530380D0EC0BD388289E1
2.2855%
7
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0XA663B02CF0A4B149D2AD41910CB81E23E1C41C32$0.9994
0.0003221 Eth
$246,351.00
246,639.691 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
1.7842%
8
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0X83F20F44975D03B1B09E64809B757C47F942BEEA$0.9994
0.0003221 Eth
$213,550.00
213,674.782 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
1.5457%
9
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0XD533A949740BB3306D119CC777FA900BA034CD52$0.9771
0.0003149 Eth
$202,808.00
206,673.003 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
1.4951%
10
Curve (Ethereum)
0X4591DBFF62656E7859AFE5E45F6F47D3669FBB28-0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E$0.9994
0.0003221 Eth
$198,469.00
200,052.805 0X4591DBFF62656E7859AFE5E45F6F47D3669FBB28
1.4472%
11
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0X57AB1EC28D129707052DF4DF418D58A2D46D5F51$0.9994
0.0003221 Eth
$197,018.00
195,517.326 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
1.4144%
12
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0X7F39C581F595B53C5CB19BD0B3F8DA6C935E2CA0$0.9994
0.0003221 Eth
$192,355.00
188,730.703 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
1.3653%
13
Curve (Arbitrum)
0X498BF2B1E120FED3AD3D42EA2165E9B73F99C1E5-0X912CE59144191C1204E64559FE8253A0E49E6548$0.9932
0.0003199 Eth
$164,134.00
165,485.598 0X498BF2B1E120FED3AD3D42EA2165E9B73F99C1E5
1.1971%
14
Curve (Ethereum)
0X5F98805A4E8BE255A32880FDEC7F6728C6568BA0-0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E$0.9994
0.0003221 Eth
$125,298.00
125,117.629 0X5F98805A4E8BE255A32880FDEC7F6728C6568BA0
0.9051%
15
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0X853D955ACEF822DB058EB8505911ED77F175B99E$0.9994
0.0003221 Eth
$103,102.00
103,165.262 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
0.7463%
16
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0X18084FBA666A33D37592FA2633FD49A74DD93A88$0.9994
0.0003221 Eth
$84,808.00
84,711.753 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
0.6128%
17
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0X085780639CC2CACD35E474E71F4D000E2405D8F6$0.9994
0.0003221 Eth
$73,400.00
73,469.888 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
0.5315%
18
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0X0000000000085D4780B73119B644AE5ECD22B376$0.9994
0.0003219 Eth
$63,813.00
63,853.600 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
0.4619%
19
Curve (Arbitrum)
0X498BF2B1E120FED3AD3D42EA2165E9B73F99C1E5-0X11CDB42B0EB46D95F990BEDD4695A6E3FA034978$0.9902
0.0003189 Eth
$51,813.00
52,123.862 0X498BF2B1E120FED3AD3D42EA2165E9B73F99C1E5
0.3771%
20
Curve (Ethereum)
0XCFC5BD99915AAA815401C5A41A927AB7A38D29CF-0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E$0.9994
0.0003221 Eth
$37,864.00
37,896.965 0XCFC5BD99915AAA815401C5A41A927AB7A38D29CF
0.2742%
21
Curve (Arbitrum)
0X498BF2B1E120FED3AD3D42EA2165E9B73F99C1E5-0X82AF49447D8A07E3BD95BD0D56F35241523FBAB1$1.003
0.0003232 Eth
$33,932.00
33,373.893 0X498BF2B1E120FED3AD3D42EA2165E9B73F99C1E5
0.2414%
22
Uniswap V3 (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48$0.9989
0.0003217 Eth
$31,781.00
31,794.552 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
0.2300%
23
Curve (Ethereum)
0X056FD409E1D7A124BD7017459DFEA2F387B6D5CD-0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E$0.9994
0.0003221 Eth
$29,894.00
29,899.250 0X056FD409E1D7A124BD7017459DFEA2F387B6D5CD
0.2163%
24
Curve (Ethereum)
0X865377367054516E17014CCDED1E7D814EDC9CE4-0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E$0.9994
0.0003221 Eth
$24,536.00
24,550.177 0X865377367054516E17014CCDED1E7D814EDC9CE4
0.1776%
25
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0X0E573CE2736DD9637A0B21058352E1667925C7A8$0.9994
0.0003221 Eth
$20,470.00
20,480.220 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
0.1482%
26
Curve (Ethereum)
0X8C0D76C9B18779665475F3E212D9CA1ED6A1A0E6-0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E$0.9994
0.0003219 Eth
$20,248.00
20,255.994 0X8C0D76C9B18779665475F3E212D9CA1ED6A1A0E6
0.1465%
27
Curve (Ethereum)
0X6C3EA9036406852006290770BEDFCABA0E23A0E8-0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E$0.9994
0.0003221 Eth
$19,975.58
19,993.059 0X6C3EA9036406852006290770BEDFCABA0E23A0E8
0.1446%
28
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0X5E8422345238F34275888049021821E8E08CAA1F$0.9994
0.0003221 Eth
$8,178.82
7,966.349 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
0.0576%
29
Curve (Ethereum)
0XCFC5BD99915AAA815401C5A41A927AB7A38D29CF-0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E$0.9994
0.0003221 Eth
$6,529.26
6,524.890 0XCFC5BD99915AAA815401C5A41A927AB7A38D29CF
0.0472%
30
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0X1CFA5641C01406AB8AC350DED7D735EC41298372$0.9994
0.0003221 Eth
$4,330.56
4,312.176 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
0.0312%
31
Curve (Arbitrum)
0X498BF2B1E120FED3AD3D42EA2165E9B73F99C1E5-0X2F2A2543B76A4166549F7AAB2E75BEF0AEFC5B0F$0.9873
0.0003180 Eth
$3,438.69
3,441.721 0X498BF2B1E120FED3AD3D42EA2165E9B73F99C1E5
0.0249%
32
Curve (Ethereum)
0XF091867EC603A6628ED83D274E835539D82E9CC8-0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E$0.9994
0.0003221 Eth
$2,583.13
1,566.732 0XF091867EC603A6628ED83D274E835539D82E9CC8
0.0113%
33
Curve (Ethereum)
0X53805A76E1F5EBBFE7115F16F9C87C2F7E633726-0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E$0.9994
0.0003219 Eth
$1,962.04
1,968.163 0X53805A76E1F5EBBFE7115F16F9C87C2F7E633726
0.0142%
34
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0X73968B9A57C6E53D41345FD57A6E6AE27D6CDB2F$0.9994
0.0003221 Eth
$1,735.39
1,736.348 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
0.0126%
35
Curve (BSC)
0XE2FB3F127F5450DEE44AFE054385D74C392BDEF4-0X55D398326F99059FF775485246999027B3197955$1.00
0.0003226 Eth
$1,243.67
1,243.469 0XE2FB3F127F5450DEE44AFE054385D74C392BDEF4
0.0090%
36
Curve (Ethereum)
0X40D16FC0246AD3160CCC09B8D0D3A2CD28AE6C2F-0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E$0.9994
0.0003221 Eth
$1,064.18
1,062.947 0X40D16FC0246AD3160CCC09B8D0D3A2CD28AE6C2F
0.0077%
37
Uniswap V3 (Arbitrum One)
0X498BF2B1E120FED3AD3D42EA2165E9B73F99C1E5-0X93B346B6BC2548DA6A1E7D98E9A421B42541425B$0.9941
0.0003200 Eth
$742.75
746.966 0X498BF2B1E120FED3AD3D42EA2165E9B73F99C1E5
0.0054%
38
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0X6C3EA9036406852006290770BEDFCABA0E23A0E8$1.001
0.0003225 Eth
$712.38
711.802 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
0.0051%
39
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0X6F80310CA7F2C654691D1383149FA1A57D8AB1F8$0.9994
0.0003221 Eth
$616.49
616.833 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
0.0045%
40
Curve (Arbitrum)
0X498BF2B1E120FED3AD3D42EA2165E9B73F99C1E5-0X82AF49447D8A07E3BD95BD0D56F35241523FBAB1$0.9903
0.0003190 Eth
$569.30
566.981 0X498BF2B1E120FED3AD3D42EA2165E9B73F99C1E5
0.0041%
41
Curve (BSC)
0XE2FB3F127F5450DEE44AFE054385D74C392BDEF4-0X8AC76A51CC950D9822D68B83FE1AD97B32CD580D$1.00
0.0003220 Eth
$526.49
526.273 0XE2FB3F127F5450DEE44AFE054385D74C392BDEF4
0.0038%
42
Aerodrome SlipStream
0X417AC0E078398C154EDFADD9EF675D30BE60AF93-0X833589FCD6EDB6E08F4C7C32D4F71B54BDA02913$0.9957
0.0003208 Eth
$497.44
499.605 0X417AC0E078398C154EDFADD9EF675D30BE60AF93
0.0036%
43
Balancer V2 (Gnosis)
0XABEF652195F98A91E490F047A5006B71C85F058D-0XAF204776C7245BF4147C2612BF6E5972EE483701$1.00
0.0003221 Eth
$453.12
453.135 0XABEF652195F98A91E490F047A5006B71C85F058D
0.0033%
44
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0X5E8422345238F34275888049021821E8E08CAA1F$1.046
0.0003371 Eth
$358.76
342.987 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
0.0025%
45
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0X99D8A9C45B2ECA8864373A26D1459E3DFF1E17F3$0.9994
0.0003219 Eth
$299.84
300.023 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
0.0022%
46
Curve (Ethereum)
0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E-0X3432B6A60D23CA0DFCA7761B7AB56459D9C964D0$0.9994
0.0003221 Eth
$294.05
294.212 0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E
0.0021%
47
Curve (Ethereum)
0XD533A949740BB3306D119CC777FA900BA034CD52-0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E$0.9994
0.0003221 Eth
$199.89
472.541 0XD533A949740BB3306D119CC777FA900BA034CD52
0.0034%
48
Matcha (Ethereum)
0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2-0XF939E0A03FB07F59A73314E73794BE0E57AC1B4E$0.9992
0.0003463 Eth
$151.47
0.052 0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2
0.0000%
49
Curve (Arbitrum)
0X498BF2B1E120FED3AD3D42EA2165E9B73F99C1E5-0X11CDB42B0EB46D95F990BEDD4695A6E3FA034978$0.99
0.0003190 Eth
$68.90
68.627 0X498BF2B1E120FED3AD3D42EA2165E9B73F99C1E5
0.0005%

Contract Source Code Verified (Exact Match)

Contract Name:
crvUSD Stablecoin

Compiler Version
vyper:0.3.7

Optimization Enabled:
N/A

Other Settings:
None license

Contract Source Code (Vyper language format)

# @version 0.3.7
"""
@title crvUSD Stablecoin
@author Curve.Fi
@license Copyright (c) Curve.Fi, 2020-2023 - all rights reserved
"""
from vyper.interfaces import ERC20

implements: ERC20


interface ERC1271:
    def isValidSignature(_hash: bytes32, _signature: Bytes[65]) -> bytes4: view


event Approval:
    owner: indexed(address)
    spender: indexed(address)
    value: uint256

event Transfer:
    sender: indexed(address)
    receiver: indexed(address)
    value: uint256

event SetMinter:
    minter: indexed(address)


decimals: public(constant(uint8)) = 18
version: public(constant(String[8])) = "v1.0.0"

ERC1271_MAGIC_VAL: constant(bytes4) = 0x1626ba7e
EIP712_TYPEHASH: constant(bytes32) = keccak256(
    "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract,bytes32 salt)"
)
EIP2612_TYPEHASH: constant(bytes32) = keccak256(
    "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
)
VERSION_HASH: constant(bytes32) = keccak256(version)


name: public(immutable(String[64]))
symbol: public(immutable(String[32]))
salt: public(immutable(bytes32))

NAME_HASH: immutable(bytes32)
CACHED_CHAIN_ID: immutable(uint256)
CACHED_DOMAIN_SEPARATOR: immutable(bytes32)


allowance: public(HashMap[address, HashMap[address, uint256]])
balanceOf: public(HashMap[address, uint256])
totalSupply: public(uint256)

nonces: public(HashMap[address, uint256])
minter: public(address)


@external
def __init__(_name: String[64], _symbol: String[32]):
    name = _name
    symbol = _symbol

    NAME_HASH = keccak256(_name)
    CACHED_CHAIN_ID = chain.id
    salt = block.prevhash
    CACHED_DOMAIN_SEPARATOR = keccak256(
        _abi_encode(
            EIP712_TYPEHASH,
            keccak256(_name),
            VERSION_HASH,
            chain.id,
            self,
            block.prevhash,
        )
    )

    self.minter = msg.sender
    log SetMinter(msg.sender)


@internal
def _approve(_owner: address, _spender: address, _value: uint256):
    self.allowance[_owner][_spender] = _value

    log Approval(_owner, _spender, _value)


@internal
def _burn(_from: address, _value: uint256):
    self.balanceOf[_from] -= _value
    self.totalSupply -= _value

    log Transfer(_from, empty(address), _value)


@internal
def _transfer(_from: address, _to: address, _value: uint256):
    assert _to not in [self, empty(address)]

    self.balanceOf[_from] -= _value
    self.balanceOf[_to] += _value

    log Transfer(_from, _to, _value)


@view
@internal
def _domain_separator() -> bytes32:
    if chain.id != CACHED_CHAIN_ID:
        return keccak256(
            _abi_encode(
                EIP712_TYPEHASH,
                NAME_HASH,
                VERSION_HASH,
                chain.id,
                self,
                salt,
            )
        )
    return CACHED_DOMAIN_SEPARATOR


@external
def transferFrom(_from: address, _to: address, _value: uint256) -> bool:
    """
    @notice Transfer tokens from one account to another.
    @dev The caller needs to have an allowance from account `_from` greater than or
        equal to the value being transferred. An allowance equal to the uint256 type's
        maximum, is considered infinite and does not decrease.
    @param _from The account which tokens will be spent from.
    @param _to The account which tokens will be sent to.
    @param _value The amount of tokens to be transferred.
    """
    allowance: uint256 = self.allowance[_from][msg.sender]
    if allowance != max_value(uint256):
        self._approve(_from, msg.sender, allowance - _value)

    self._transfer(_from, _to, _value)
    return True


@external
def transfer(_to: address, _value: uint256) -> bool:
    """
    @notice Transfer tokens to `_to`.
    @param _to The account to transfer tokens to.
    @param _value The amount of tokens to transfer.
    """
    self._transfer(msg.sender, _to, _value)
    return True


@external
def approve(_spender: address, _value: uint256) -> bool:
    """
    @notice Allow `_spender` to transfer up to `_value` amount of tokens from the caller's account.
    @dev Non-zero to non-zero approvals are allowed, but should be used cautiously. The methods
        increaseAllowance + decreaseAllowance are available to prevent any front-running that
        may occur.
    @param _spender The account permitted to spend up to `_value` amount of caller's funds.
    @param _value The amount of tokens `_spender` is allowed to spend.
    """
    self._approve(msg.sender, _spender, _value)
    return True


@external
def permit(
    _owner: address,
    _spender: address,
    _value: uint256,
    _deadline: uint256,
    _v: uint8,
    _r: bytes32,
    _s: bytes32,
) -> bool:
    """
    @notice Permit `_spender` to spend up to `_value` amount of `_owner`'s tokens via a signature.
    @dev In the event of a chain fork, replay attacks are prevented as domain separator is recalculated.
        However, this is only if the resulting chains update their chainId.
    @param _owner The account which generated the signature and is granting an allowance.
    @param _spender The account which will be granted an allowance.
    @param _value The approval amount.
    @param _deadline The deadline by which the signature must be submitted.
    @param _v The last byte of the ECDSA signature.
    @param _r The first 32 bytes of the ECDSA signature.
    @param _s The second 32 bytes of the ECDSA signature.
    """
    assert _owner != empty(address) and block.timestamp <= _deadline

    nonce: uint256 = self.nonces[_owner]
    digest: bytes32 = keccak256(
        concat(
            b"\x19\x01",
            self._domain_separator(),
            keccak256(_abi_encode(EIP2612_TYPEHASH, _owner, _spender, _value, nonce, _deadline)),
        )
    )

    if _owner.is_contract:
        sig: Bytes[65] = concat(_abi_encode(_r, _s), slice(convert(_v, bytes32), 31, 1))
        assert ERC1271(_owner).isValidSignature(digest, sig) == ERC1271_MAGIC_VAL
    else:
        assert ecrecover(digest, _v, _r, _s) == _owner

    self.nonces[_owner] = nonce + 1
    self._approve(_owner, _spender, _value)
    return True


@external
def increaseAllowance(_spender: address, _add_value: uint256) -> bool:
    """
    @notice Increase the allowance granted to `_spender`.
    @dev This function will never overflow, and instead will bound
        allowance to MAX_UINT256. This has the potential to grant an
        infinite approval.
    @param _spender The account to increase the allowance of.
    @param _add_value The amount to increase the allowance by.
    """
    cached_allowance: uint256 = self.allowance[msg.sender][_spender]
    allowance: uint256 = unsafe_add(cached_allowance, _add_value)

    # check for an overflow
    if allowance < cached_allowance:
        allowance = max_value(uint256)

    if allowance != cached_allowance:
        self._approve(msg.sender, _spender, allowance)

    return True


@external
def decreaseAllowance(_spender: address, _sub_value: uint256) -> bool:
    """
    @notice Decrease the allowance granted to `_spender`.
    @dev This function will never underflow, and instead will bound
        allowance to 0.
    @param _spender The account to decrease the allowance of.
    @param _sub_value The amount to decrease the allowance by.
    """
    cached_allowance: uint256 = self.allowance[msg.sender][_spender]
    allowance: uint256 = unsafe_sub(cached_allowance, _sub_value)

    # check for an underflow
    if cached_allowance < allowance:
        allowance = 0

    if allowance != cached_allowance:
        self._approve(msg.sender, _spender, allowance)

    return True


@external
def burnFrom(_from: address, _value: uint256) -> bool:
    """
    @notice Burn `_value` amount of tokens from `_from`.
    @dev The caller must have previously been given an allowance by `_from`.
    @param _from The account to burn the tokens from.
    @param _value The amount of tokens to burn.
    """
    allowance: uint256 = self.allowance[_from][msg.sender]
    if allowance != max_value(uint256):
        self._approve(_from, msg.sender, allowance - _value)

    self._burn(_from, _value)
    return True


@external
def burn(_value: uint256) -> bool:
    """
    @notice Burn `_value` amount of tokens.
    @param _value The amount of tokens to burn.
    """
    self._burn(msg.sender, _value)
    return True


@external
def mint(_to: address, _value: uint256) -> bool:
    """
    @notice Mint `_value` amount of tokens to `_to`.
    @dev Only callable by an account with minter privileges.
    @param _to The account newly minted tokens are credited to.
    @param _value The amount of tokens to mint.
    """
    assert msg.sender == self.minter
    assert _to not in [self, empty(address)]

    self.balanceOf[_to] += _value
    self.totalSupply += _value

    log Transfer(empty(address), _to, _value)
    return True


@external
def set_minter(_minter: address):
    assert msg.sender == self.minter

    self.minter = _minter
    log SetMinter(_minter)


@view
@external
def DOMAIN_SEPARATOR() -> bytes32:
    """
    @notice EIP712 domain separator.
    """
    return self._domain_separator()

Contract Security Audit

Contract ABI

[{"name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true},{"name":"spender","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Transfer","inputs":[{"name":"sender","type":"address","indexed":true},{"name":"receiver","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetMinter","inputs":[{"name":"minter","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"transfer","inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"approve","inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"permit","inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_deadline","type":"uint256"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"increaseAllowance","inputs":[{"name":"_spender","type":"address"},{"name":"_add_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"decreaseAllowance","inputs":[{"name":"_spender","type":"address"},{"name":"_sub_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"burnFrom","inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"burn","inputs":[{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"mint","inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"set_minter","inputs":[{"name":"_minter","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32"}]},{"stateMutability":"view","type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8"}]},{"stateMutability":"view","type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"salt","inputs":[],"outputs":[{"name":"","type":"bytes32"}]},{"stateMutability":"view","type":"function","name":"allowance","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"nonces","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"minter","inputs":[],"outputs":[{"name":"","type":"address"}]}]

6020610e886000396000516040602082610e880160003960005111610e8357602081610e880160003960005180604052602082018181610e88016060395050506020610ea86000396000516020602082610e880160003960005111610e8357602081610e88016000396000518060a05260208201602081610e880160003960005160c05250505034610e835760405180610cd452600081601f0160051c60028111610e835780156100cb57905b8060051b606001518160051b602001610cd401526001018181186100ac575b50505060a05180610d345260c051610d545250604051606020610d945246610db4526001430340610d74527fd87cd6ef79d4e2b95e15ce8abf732db51ec771f1ca2edccf22a46c729ac5647261010052604051606020610120527f15124d26d1272f8d4d5266a24ca397811f414b8cd05a53b26b745f63af5ae2fc610140524661016052306101805260014303406101a05260c060e05260e0805160208201209050610dd45233600455337fcec52196e972044edde8689a1b608e459c5946b7f3e5c8cd3d6d8e126d422e1c600060e0a2610cd46101ae61000039610df4610000f36003361161000c57610ab0565b60003560e01c34610cc2576323b872dd81186100e55760643610610cc2576004358060a01c610cc25760c0526024358060a01c610cc25760e052600060c051602052600052604060002080336020526000526040600020905054610100527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010051146100be5760c0516040523360605261010051604435808203828111610cc257905090506080526100be610ab6565b60c05160405260e0516060526044356080526100d8610b7f565b6001610120526020610120f35b63a9059cbb81186101295760443610610cc2576004358060a01c610cc25760c0523360405260c05160605260243560805261011e610b7f565b600160e052602060e0f35b63095ea7b3811861016d5760443610610cc2576004358060a01c610cc25760c0523360405260c051606052602435608052610162610ab6565b600160e052602060e0f35b63d505accf811861049b5760e43610610cc2576004358060a01c610cc257610120526024358060a01c610cc257610140526084358060081c610cc2576101605261012051156101c1576064354211156101c4565b60005b15610cc25760036101205160205260005260406000205461018052600060026101c0527f19010000000000000000000000000000000000000000000000000000000000006101e0526101c0805160208201836103200181518152505080830192505050610232610200610c1b565b610200518161032001526020810190507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c961024052610120516102605261014051610280526044356102a052610180516102c0526064356102e05260c061022052610220805160208201209050816103200152602081019050806103005261030090508051602082012090506101a052610120513b1561041c576000604060a46102603760406102405261024080516020820183610320018281848460045afa50505080830192505050610160516102a0526102a0601f810180516102e0525060016102c0526102c09050805160208201836103200181518152505080830192505050806103005261030090508051806101c05260208201816101e0838360045afa505050507f1626ba7e0000000000000000000000000000000000000000000000000000000061012051631626ba7e6102405260406101a05161026052806102805280610260016101c051808252602082018181836101e060045afa5050508051806020830101601f82600003163682375050601f19601f82516020010116905081015050602061024060c461025c845afa6103f4573d600060003e3d6000fd5b60203d10610cc257610240518060201b610cc2576103205261032090505118610cc25761044f565b610120516101a0516101c052610160516101e052604060a4610200376020600060806101c060015afa5060005118610cc2575b6101805160018101818110610cc2579050600361012051602052600052604060002055610120516040526101405160605260443560805261048e610ab6565b60016101c05260206101c0f35b6339509351811861054f5760443610610cc2576004358060a01c610cc25760c05260003360205260005260406000208060c051602052600052604060002090505460e05260243560e051016101005260e05161010051101561051d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100525b60e0516101005114610542573360405260c05160605261010051608052610542610ab6565b6001610120526020610120f35b63a457c2d781186105e45760443610610cc2576004358060a01c610cc25760c05260003360205260005260406000208060c051602052600052604060002090505460e05260243560e05103610100526101005160e05110156105b2576000610100525b60e05161010051146105d7573360405260c051606052610100516080526105d7610ab6565b6001610120526020610120f35b6379cc6790811861069b5760443610610cc2576004358060a01c610cc25760c052600060c05160205260005260406000208033602052600052604060002090505460e0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60e0511461067a5760c0516040523360605260e051602435808203828111610cc2579050905060805261067a610ab6565b60c05160405260243560605261068e610b0f565b6001610100526020610100f35b6342966c6881186106cb5760243610610cc257336040526004356060526106c0610b0f565b600160a052602060a0f35b6340c10f19811861078a5760443610610cc2576004358060a01c610cc2576040526004543318610cc2576040513081146107075780151561070a565b60005b905015610cc257600160405160205260005260406000208054602435808201828110610cc25790509050815550600254602435808201828110610cc2579050905060025560405160007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60243560605260206060a3600160605260206060f35b631652e9fc81186107e55760243610610cc2576004358060a01c610cc2576040526004543318610cc2576040516004556040517fcec52196e972044edde8689a1b608e459c5946b7f3e5c8cd3d6d8e126d422e1c60006060a2005b633644e515811861080a5760043610610cc2576020610805610120610c1b565b610120f35b63313ce56781186108285760043610610cc257601260405260206040f35b6354fd4d5081186108b05760043610610cc25760208060805260066040527f76312e302e30000000000000000000000000000000000000000000000000000060605260408160800181518082526020830160208301815181525050508051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506080f35b6306fdde0381186109115760043610610cc257602080604052806040016020610cd46000396000518082526020820181610cf4823950508051806020830101601f82600003163682375050601f19601f825160200101169050810190506040f35b6395d89b4181186109795760043610610cc257602080604052806040016020610d34600039600051808252602082016020610d54600039600051815250508051806020830101601f82600003163682375050601f19601f825160200101169050810190506040f35b63bfa0b13381186109a05760043610610cc2576020610d7460003960005160405260206040f35b63dd62ed3e81186109fa5760443610610cc2576004358060a01c610cc2576040526024358060a01c610cc2576060526000604051602052600052604060002080606051602052600052604060002090505460805260206080f35b6370a082318118610a355760243610610cc2576004358060a01c610cc257604052600160405160205260005260406000205460605260206060f35b6318160ddd8118610a545760043610610cc25760025460405260206040f35b637ecebe008118610a8f5760243610610cc2576004358060a01c610cc257604052600360405160205260005260406000205460605260206060f35b63075461728118610aae5760043610610cc25760045460405260206040f35b505b60006000fd5b608051600060405160205260005260406000208060605160205260005260406000209050556060516040517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560805160a052602060a0a3565b600160405160205260005260406000208054606051808203828111610cc25790509050815550600254606051808203828111610cc2579050905060025560006040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60605160805260206080a3565b606051308114610b9157801515610b94565b60005b905015610cc257600160405160205260005260406000208054608051808203828111610cc25790509050815550600160605160205260005260406000208054608051808201828110610cc257905090508155506060516040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60805160a052602060a0a3565b6020610db46000396000514614610cb1577fd87cd6ef79d4e2b95e15ce8abf732db51ec771f1ca2edccf22a46c729ac564726060526020610d946000396000516080527f15124d26d1272f8d4d5266a24ca397811f414b8cd05a53b26b745f63af5ae2fc60a0524660c0523060e0526020610d746000396000516101005260c06040526040805160208201209050815250610cc0565b6020610dd46000396000518152505b565b600080fda165767970657283000307000b005b600080fd00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001743757276652e46692055534420537461626c65636f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000066372765553440000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6003361161000c57610ab0565b60003560e01c34610cc2576323b872dd81186100e55760643610610cc2576004358060a01c610cc25760c0526024358060a01c610cc25760e052600060c051602052600052604060002080336020526000526040600020905054610100527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010051146100be5760c0516040523360605261010051604435808203828111610cc257905090506080526100be610ab6565b60c05160405260e0516060526044356080526100d8610b7f565b6001610120526020610120f35b63a9059cbb81186101295760443610610cc2576004358060a01c610cc25760c0523360405260c05160605260243560805261011e610b7f565b600160e052602060e0f35b63095ea7b3811861016d5760443610610cc2576004358060a01c610cc25760c0523360405260c051606052602435608052610162610ab6565b600160e052602060e0f35b63d505accf811861049b5760e43610610cc2576004358060a01c610cc257610120526024358060a01c610cc257610140526084358060081c610cc2576101605261012051156101c1576064354211156101c4565b60005b15610cc25760036101205160205260005260406000205461018052600060026101c0527f19010000000000000000000000000000000000000000000000000000000000006101e0526101c0805160208201836103200181518152505080830192505050610232610200610c1b565b610200518161032001526020810190507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c961024052610120516102605261014051610280526044356102a052610180516102c0526064356102e05260c061022052610220805160208201209050816103200152602081019050806103005261030090508051602082012090506101a052610120513b1561041c576000604060a46102603760406102405261024080516020820183610320018281848460045afa50505080830192505050610160516102a0526102a0601f810180516102e0525060016102c0526102c09050805160208201836103200181518152505080830192505050806103005261030090508051806101c05260208201816101e0838360045afa505050507f1626ba7e0000000000000000000000000000000000000000000000000000000061012051631626ba7e6102405260406101a05161026052806102805280610260016101c051808252602082018181836101e060045afa5050508051806020830101601f82600003163682375050601f19601f82516020010116905081015050602061024060c461025c845afa6103f4573d600060003e3d6000fd5b60203d10610cc257610240518060201b610cc2576103205261032090505118610cc25761044f565b610120516101a0516101c052610160516101e052604060a4610200376020600060806101c060015afa5060005118610cc2575b6101805160018101818110610cc2579050600361012051602052600052604060002055610120516040526101405160605260443560805261048e610ab6565b60016101c05260206101c0f35b6339509351811861054f5760443610610cc2576004358060a01c610cc25760c05260003360205260005260406000208060c051602052600052604060002090505460e05260243560e051016101005260e05161010051101561051d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100525b60e0516101005114610542573360405260c05160605261010051608052610542610ab6565b6001610120526020610120f35b63a457c2d781186105e45760443610610cc2576004358060a01c610cc25760c05260003360205260005260406000208060c051602052600052604060002090505460e05260243560e05103610100526101005160e05110156105b2576000610100525b60e05161010051146105d7573360405260c051606052610100516080526105d7610ab6565b6001610120526020610120f35b6379cc6790811861069b5760443610610cc2576004358060a01c610cc25760c052600060c05160205260005260406000208033602052600052604060002090505460e0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60e0511461067a5760c0516040523360605260e051602435808203828111610cc2579050905060805261067a610ab6565b60c05160405260243560605261068e610b0f565b6001610100526020610100f35b6342966c6881186106cb5760243610610cc257336040526004356060526106c0610b0f565b600160a052602060a0f35b6340c10f19811861078a5760443610610cc2576004358060a01c610cc2576040526004543318610cc2576040513081146107075780151561070a565b60005b905015610cc257600160405160205260005260406000208054602435808201828110610cc25790509050815550600254602435808201828110610cc2579050905060025560405160007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60243560605260206060a3600160605260206060f35b631652e9fc81186107e55760243610610cc2576004358060a01c610cc2576040526004543318610cc2576040516004556040517fcec52196e972044edde8689a1b608e459c5946b7f3e5c8cd3d6d8e126d422e1c60006060a2005b633644e515811861080a5760043610610cc2576020610805610120610c1b565b610120f35b63313ce56781186108285760043610610cc257601260405260206040f35b6354fd4d5081186108b05760043610610cc25760208060805260066040527f76312e302e30000000000000000000000000000000000000000000000000000060605260408160800181518082526020830160208301815181525050508051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506080f35b6306fdde0381186109115760043610610cc257602080604052806040016020610cd46000396000518082526020820181610cf4823950508051806020830101601f82600003163682375050601f19601f825160200101169050810190506040f35b6395d89b4181186109795760043610610cc257602080604052806040016020610d34600039600051808252602082016020610d54600039600051815250508051806020830101601f82600003163682375050601f19601f825160200101169050810190506040f35b63bfa0b13381186109a05760043610610cc2576020610d7460003960005160405260206040f35b63dd62ed3e81186109fa5760443610610cc2576004358060a01c610cc2576040526024358060a01c610cc2576060526000604051602052600052604060002080606051602052600052604060002090505460805260206080f35b6370a082318118610a355760243610610cc2576004358060a01c610cc257604052600160405160205260005260406000205460605260206060f35b6318160ddd8118610a545760043610610cc25760025460405260206040f35b637ecebe008118610a8f5760243610610cc2576004358060a01c610cc257604052600360405160205260005260406000205460605260206060f35b63075461728118610aae5760043610610cc25760045460405260206040f35b505b60006000fd5b608051600060405160205260005260406000208060605160205260005260406000209050556060516040517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560805160a052602060a0a3565b600160405160205260005260406000208054606051808203828111610cc25790509050815550600254606051808203828111610cc2579050905060025560006040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60605160805260206080a3565b606051308114610b9157801515610b94565b60005b905015610cc257600160405160205260005260406000208054608051808203828111610cc25790509050815550600160605160205260005260406000208054608051808201828110610cc257905090508155506060516040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60805160a052602060a0a3565b6020610db46000396000514614610cb1577fd87cd6ef79d4e2b95e15ce8abf732db51ec771f1ca2edccf22a46c729ac564726060526020610d946000396000516080527f15124d26d1272f8d4d5266a24ca397811f414b8cd05a53b26b745f63af5ae2fc60a0524660c0523060e0526020610d746000396000516101005260c06040526040805160208201209050815250610cc0565b6020610dd46000396000518152505b565b600080fda165767970657283000307000b000000000000000000000000000000000000000000000000000000000000001743757276652e46692055534420537461626c65636f696e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066372765553440000000000000000000000000000000000000000000000000000b99ba1c24ff7f96081ccd1ad26ffc380e2cc4c73b87f99e7a0165fa980b3b9776b6d6c86c326770f6c25b6ef3f5528c1ce6dc99246faa6c29790347076961bba00000000000000000000000000000000000000000000000000000000000000017906987b5141f4b3a52bd45bf8cd1495b428ff72f3caefd1d670d9726103a7f0

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001743757276652e46692055534420537461626c65636f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000066372765553440000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Curve.Fi USD Stablecoin
Arg [1] : _symbol (string): crvUSD

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000017
Arg [3] : 43757276652e46692055534420537461626c65636f696e000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [5] : 6372765553440000000000000000000000000000000000000000000000000000


Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.