erc20-limiter

ERC20 balance limit registry
Info | Log | Files | Refs | README

erc20-limiter

These smart contract implementations define value limits for tokens by holders.

The contracts satisfy the CIC TokenLimit interface.

Defining limits

The setLimit(token, value) method set the limit of token that the transaction signer will accept to value.

Values are inclusive; if 42 is returned, a balance up to and including 42 should be approved.

A limit of 0 means that the "holder" will categorically not accept a token.

Defining limits for contracts

An alternative setLimitFor(token, holder, value) method exists, where the contract owner may change the limit for a smart contract.

If smart contract capable of transacting against this method itself does so, the result is the same as if that contract called setLimit().

The owner for the contract defined and managed according to the ERC173 standard.

Honoring limits

Limits will only be honored if integrated into the proper context.

One example of context is to implement a limit check in the transfer and transferFrom methods of ERC20 tokens.

ACL Index variant

The LimitIndex.sol contract variant includes an implementation of the CIC ACL interface.

In this case, any non-zero limit of a token for a holder results in a true value being returned. Otherwise, false is returned.

The LimitIndex.sol contract takes a regular Limit.sol token address as argument, or more specifically a contract that satisfies this interface:

interface Limiter {
    function limitOf(address,address) external view returns(uint256);
    function setLimit(address,uint256) external;
    function setLimitFor(address,address,uint256) external;
}