Forte Rules Engine home page
v1
Search...
⌘K
Ask AI
Contact Us
Contact Us
Search...
Navigation
ERC-20
ApplicationERC20 Invariants
Documentation
Guides
Reference
Documentation
GitHub FRE
Contributor Guide
Get Started
Introduction
Live Demo
Networks
Core Concepts
Overview
Application Level Rules
Token Level Rules
Permissions
Customization Options
Rule Types
Tag Based
Access Level
Risk Score
Additional Concepts
Action Types
Oracles
Pricing
Advanced
Architecture
Development
Invariants
Pricing Invariants
Protocol
Client
Token
Candler
ERC-20
ApplicationERC20 Invariants
ERC-721
Application
Token Systen Level Invariants
Adding New Rules
Glossary
Fees
On this page
Base ERC20 Invariants
Burnable ERC20 Invariants
Unimplemented
Protocol Related Invariants
Mintable ERC20 Invariants
ProtocolTokenCommon Invariants
ERC-20
ApplicationERC20 Invariants
Base ERC20 Invariants
User balance must not exceed total supply
Sum of users balance must not exceed total supply
Address zero should have zero balance
Transfers to zero address should not be allowed.
transferFroms to zero address should not be allowed.
Self transfers should not break accounting.
Self transferFroms should not break accounting.
Transfers for more than available balance should not be allowed
TransferFroms for more than available balance should not be allowed
Zero amount transfers should not break accounting
Zero amount transferFroms should not break accounting
Transfers should update accounting correctly
TransferFroms should update accounting correctly
Approve should set correct allowances
Allowances should be updated correctly when approve is called twice.
TransferFrom should decrease allowance
Burnable ERC20 Invariants
Burn should update user balance and total supply
Burn should update user balance and total supply when burnFrom is called twice
burnFrom should update allowance
Unimplemented
Protocol Related Invariants
note: Not implemented fully
Version will never be blank
Version will never change.
Any user can get the contract’s version
Only app admins may connect a handler
A non-appAdmin can never connect a handler to the contract
Any account can retrieve handler address
Once set to a non zero address, a Handler address can never be set to zero address
New deployment will always emit NewTokenDeployed event
If a cumulative positive fees exist, the amount of tokens received by the toAddress is less than the amount transferred by the fromAddress
If a cumulative negative fees exist, the amount of tokens received by the toAddress is equal to the amount transferred by the fromAddress
If a cumulative positive fees exist, the feeSink address balance will increase with a transfer
If a cumulative negative fees exist, the feeSink address balance will remain the same with a transfer
Mintable ERC20 Invariants
User balance and total supply should be updated correctly after minting.
ProtocolTokenCommon Invariants
Only an App Admin can propose a new AppManager
Proposed AppManagerAddress can not be set to zero address
Any type of address may confirm the proposed AppManager as long as it is the proposed AppManager.
Only the proposed AppManager may confirm the AppManagerAddress
When AppManagerAddress is confirmed, AppManagerAddressSet event is always emitted
Any type of address may retrieve the AppManagerAddress
Any type of address may retrieve the HandlerAddress
ProtocolERC20Handler Invariants
ApplicationERC721 Invariants
Assistant
Responses are generated using AI and may contain mistakes.