ERC 20 - OpenZeppelin Docs (2024)

Table of Contents
IERC20 ERC20

IERC20

Interface of the ERC20 standard as defined in the EIP.

Functions

  • totalSupply()

  • balanceOf(account)

  • transfer(recipient, amount)

  • allowance(owner, spender)

  • approve(spender, amount)

  • transferFrom(sender, recipient, amount)

Events

  • Transfer(from, to, value)

  • Approval(owner, spender, value)

totalSupply() → uint256 external

Returns the amount of tokens in existence.

balanceOf(address account) → uint256 external

Returns the amount of tokens owned by account.

transfer(address recipient, uint256 amount) → bool external

Moves amount tokens from the caller’s account to recipient.

Returns a boolean value indicating whether the operation succeeded.

Emits a Transfer event.

allowance(address owner, address spender) → uint256 external

Returns the remaining number of tokens that spender will beallowed to spend on behalf of owner through transferFrom. This iszero by default.

This value changes when approve or transferFrom are called.

approve(address spender, uint256 amount) → bool external

Sets amount as the allowance of spender over the caller’s tokens.

Returns a boolean value indicating whether the operation succeeded.

Beware that changing an allowance with this method brings the riskthat someone may use both the old and the new allowance by unfortunatetransaction ordering. One possible solution to mitigate this racecondition is to first reduce the spender’s allowance to 0 and set thedesired value afterwards:https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729

Emits an Approval event.

transferFrom(address sender, address recipient, uint256 amount) → bool external

Moves amount tokens from sender to recipient using theallowance mechanism. amount is then deducted from the caller’sallowance.

Returns a boolean value indicating whether the operation succeeded.

Emits a Transfer event.

Transfer(address from, address to, uint256 value) event

Emitted when value tokens are moved from one account (from) toanother (to).

Note that value may be zero.

Approval(address owner, address spender, uint256 value) event

Emitted when the allowance of a spender for an owner is set bya call to approve. value is the new allowance.

ERC20

Implementation of the IERC20 interface.

This implementation is agnostic to the way tokens are created. This meansthat a supply mechanism has to be added in a derived contract using _mint.For a generic mechanism see ERC20PresetMinterPauser.

For a detailed writeup see our guideHowto implement supply mechanisms.

We have followed general OpenZeppelin guidelines: functions revert insteadof returning false on failure. This behavior is nonetheless conventionaland does not conflict with the expectations of ERC20 applications.

Additionally, an Approval event is emitted on calls to transferFrom.This allows applications to reconstruct the allowance for all accounts justby listening to said events. Other implementations of the EIP may not emitthese events, as it isn’t required by the specification.

Finally, the non-standard decreaseAllowance and increaseAllowancefunctions have been added to mitigate the well-known issues around settingallowances. See IERC20.approve.

Functions

  • constructor(name_, symbol_)

  • name()

  • symbol()

  • decimals()

  • totalSupply()

  • balanceOf(account)

  • transfer(recipient, amount)

  • allowance(owner, spender)

  • approve(spender, amount)

  • transferFrom(sender, recipient, amount)

  • increaseAllowance(spender, addedValue)

  • decreaseAllowance(spender, subtractedValue)

  • _transfer(sender, recipient, amount)

  • _mint(account, amount)

  • _burn(account, amount)

  • _approve(owner, spender, amount)

  • _setupDecimals(decimals_)

  • _beforeTokenTransfer(from, to, amount)

Events

IERC20

  • Transfer(from, to, value)

  • Approval(owner, spender, value)

constructor(string name_, string symbol_) public

Sets the values for name and symbol, initializes decimals witha default value of 18.

To select a different value for decimals, use _setupDecimals.

All three of these values are immutable: they can only be set once duringconstruction.

name() → string public

Returns the name of the token.

symbol() → string public

Returns the symbol of the token, usually a shorter version of thename.

decimals() → uint8 public

Returns the number of decimals used to get its user representation.For example, if decimals equals 2, a balance of 505 tokens shouldbe displayed to a user as 5,05 (505 / 10 ** 2).

Tokens usually opt for a value of 18, imitating the relationship betweenEther and Wei. This is the value ERC20 uses, unless _setupDecimals iscalled.

This information is only used for display purposes: it inno way affects any of the arithmetic of the contract, includingIERC20.balanceOf and IERC20.Transfer.

totalSupply() → uint256 public

See IERC20.totalSupply.

balanceOf(address account) → uint256 public

See IERC20.balanceOf.

transfer(address recipient, uint256 amount) → bool public

See IERC20.Transfer.

Requirements:

  • recipient cannot be the zero address.

  • the caller must have a balance of at least amount.

allowance(address owner, address spender) → uint256 public

See IERC20.allowance.

approve(address spender, uint256 amount) → bool public

See IERC20.approve.

Requirements:

  • spender cannot be the zero address.

transferFrom(address sender, address recipient, uint256 amount) → bool public

See IERC20.transferFrom.

Emits an Approval event indicating the updated allowance. This is notrequired by the EIP. See the note at the beginning of ERC20.

Requirements:

  • sender and recipient cannot be the zero address.

  • sender must have a balance of at least amount.

  • the caller must have allowance for sender's tokens of at leastamount.

increaseAllowance(address spender, uint256 addedValue) → bool public

Atomically increases the allowance granted to spender by the caller.

This is an alternative to approve that can be used as a mitigation forproblems described in IERC20.approve.

Emits an Approval event indicating the updated allowance.

Requirements:

  • spender cannot be the zero address.

decreaseAllowance(address spender, uint256 subtractedValue) → bool public

Atomically decreases the allowance granted to spender by the caller.

This is an alternative to approve that can be used as a mitigation forproblems 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 leastsubtractedValue.

_transfer(address sender, address recipient, uint256 amount) internal

Moves tokens amount from sender to recipient.

This is internal function is equivalent to transfer, and can be used toe.g. implement automatic token fees, slashing mechanisms, etc.

Emits a transfer event.

Requirements:

  • sender cannot be the zero address.

  • recipient cannot be the zero address.

  • sender must have a balance of at least amount.

_mint(address account, uint256 amount) internal

Creates amount tokens and assigns them to account, increasingthe total supply.

Emits a transfer event with from set to the zero address.

Requirements:

  • to cannot be the zero address.

_burn(address account, uint256 amount) internal

Destroys amount tokens from account, reducing thetotal supply.

Emits a transfer event with to set to the zero address.

Requirements:

  • account cannot be the zero address.

  • account must have at least amount tokens.

_approve(address owner, address spender, uint256 amount) internal

Sets amount as the allowance of spender over the owner s tokens.

This internal function is equivalent to approve, and can be used toe.g. set automatic allowances for certain subsystems, etc.

Emits an Approval event.

Requirements:

  • owner cannot be the zero address.

  • spender cannot be the zero address.

_setupDecimals(uint8 decimals_) internal

Sets decimals to a value other than the default one of 18.

This function should only be called from the constructor. Mostapplications that interact with token contracts will not expectdecimals to ever change, and may work incorrectly if it does.

_beforeTokenTransfer(address from, address to, uint256 amount) internal

Hook that is called before any transfer of tokens. This includesminting and burning.

Calling conditions:

  • when from and to are both non-zero, amount of from's tokenswill be to transferred to to.

  • when from is zero, amount tokens will be minted for to.

  • when to is zero, amount of from's tokens will be burned.

  • from and to are never both zero.

To learn more about hooks, head to Using Hooks.

ERC 20 - OpenZeppelin Docs (2024)
Top Articles
Here’s how someone can spy on you via iCloud
What is TikTok for Business, and Why Does it Work? - Growth Marketing Genie
Evil Dead Movies In Order & Timeline
Pollen Count Los Altos
Artem The Gambler
Jonathon Kinchen Net Worth
FFXIV Immortal Flames Hunting Log Guide
Prosper TX Visitors Guide - Dallas Fort Worth Guide
Is Sportsurge Safe and Legal in 2024? Any Alternatives?
Snarky Tea Net Worth 2022
Waive Upgrade Fee
Lost Pizza Nutrition
Bme Flowchart Psu
The Blind Showtimes Near Showcase Cinemas Springdale
Inside California's brutal underground market for puppies: Neglected dogs, deceived owners, big profits
Craigslist Pikeville Tn
Guidewheel lands $9M Series A-1 for SaaS that boosts manufacturing and trims carbon emissions | TechCrunch
Straight Talk Phones With 7 Inch Screen
Transfer and Pay with Wells Fargo Online®
Roster Resource Orioles
라이키 유출
Nesz_R Tanjiro
Missed Connections Dayton Ohio
Officialmilarosee
Metro Pcs.near Me
Bekijk ons gevarieerde aanbod occasions in Oss.
Garnish For Shrimp Taco Nyt
Cain Toyota Vehicles
Plost Dental
Workshops - Canadian Dam Association (CDA-ACB)
Spectrum Outage in Queens, New York
John Philip Sousa Foundation
Gopher Carts Pensacola Beach
Vadoc Gtlvisitme App
Rush County Busted Newspaper
Street Fighter 6 Nexus
"Pure Onyx" by xxoom from Patreon | Kemono
Babbychula
The Pretty Kitty Tanglewood
Navigating change - the workplace of tomorrow - key takeaways
Http://N14.Ultipro.com
Ukg Dimensions Urmc
Natashas Bedroom - Slave Commands
Otter Bustr
The Syracuse Journal-Democrat from Syracuse, Nebraska
Tyler Perry Marriage Counselor Play 123Movies
Craigslist Com Panama City Fl
How To Customise Mii QR Codes in Tomodachi Life?
Hello – Cornerstone Chapel
Devotion Showtimes Near Showplace Icon At Valley Fair
6463896344
Latest Posts
Article information

Author: Rueben Jacobs

Last Updated:

Views: 6524

Rating: 4.7 / 5 (77 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Rueben Jacobs

Birthday: 1999-03-14

Address: 951 Caterina Walk, Schambergerside, CA 67667-0896

Phone: +6881806848632

Job: Internal Education Planner

Hobby: Candle making, Cabaret, Poi, Gambling, Rock climbing, Wood carving, Computer programming

Introduction: My name is Rueben Jacobs, I am a cooperative, beautiful, kind, comfortable, glamorous, open, magnificent person who loves writing and wants to share my knowledge and understanding with you.