ABM Protocol
ABM Module
The ABM Governance Token Implementation

1. Introduction (Summary)

The ABM Module contains the ABM token, which is a deployed Ds-Token contract. It is an ERC20 token that provides a standard ERC20 token interface. It also contains logic for burning and authorized minting of ABM.

2. Contract Details:

Glossary (ABM)

  • guy - user address
  • wad - a quantity of tokens, usually as a fixed point integer with 10^18 decimal places.
  • dst - refers to the destination address.

Key Functionalities (as defined in the smart contract)

mint - credit tokens at an address whilst simultaneously increasing totalSupply (requires auth).
burn - debit tokens at an address whilst simultaneously decreasing totalSupply (requires auth).


push - transfer an amount from msg.sender to a given address.
pull - transfer an amount from a given address to msg.sender (requires trust or approval).
move - transfer an amount from a given src address to a given dst address (requires trust or approval).
Standard ERC-20
name - returns the name of the token - e.g. "MyToken".
symbol - token symbol.
decimals - returns the number of decimals the token uses - e.g. 8, means to divide the token amount by 100000000 to get its user representation.
transfer - transfers _value amount of tokens to address _to, and MUST fire the Transfer event. This SHOULD throw if the message caller’s account balance does not have enough tokens to spend.
transferFrom - transfers _value amount of tokens from address _from to address _to, and MUST fire the Transfer event.
approve - allows _spender to withdraw from your account multiple times, up to the _value amount. If this function is called again it overwrites the current allowance with _value.
totalSupply - returns the total token supply.
balanceOf - returns the account balance of another account with address _owner.
allowance - returns the amount which _spender is still allowed to withdraw from _owner.
Further information about the ERC20 Token standard can be found here.
Important note: there is a transferFrom auto approval when src == msg.sender.

3. Key Mechanisms & Concepts

Along with ABM having a standard ERC20 token interface, it also has the addition of DSAuth-protected mint and burn functions; binary approval via MAX_UINT; as well as a push, pull and move aliases for transferFrom operations.
The ABM token has 3 methods of use within the Maker Protocol :
  • As a utility token: As dotBTC stability fees earned on Vaults accrue within the Maker Protocol, ABM holders can use ABM to vote to enable the Flapper auction house to sell dotBTC surplus for ABM. Once the auction is complete the Maker protocol burns the ABM.
  • As a governance token: ABM is used by ABM holders to vote for the risk management and business logic of the Maker Protocol. Tokens are a simple representation of voting power.
  • As a recapitalization resource: ABM can autonomously be minted by the Flopper auction house and sold for dotBTC , which is used to recap the Maker Protocol in times of insolvency.

4. Gotchas (Potential source of user error)

  • The ABM token is an ERC-20 token created using DSToken. A key difference to note between dotBTC and most other popular ERC20 tokens is that both these fields use bytes32 instead of the string type.

5. Failure Modes (Bounds on Operating Conditions & External Risk Factors)

  • ABM.stop - ES cannot be triggered. ABM in the chief can still vote, but cannot join or exit.
Last modified 7mo ago