NMR 2.0 is now live!

Published in
4 min readJul 9, 2019


Contract upgrades to Numeraire have just been deployed, reducing the maximum supply to 11 million. NMR can no longer be minted — only burned.

What we’ve done:

  • NMR smart contract is no longer controlled or upgradeable by Numerai
  • Thus, Numerai can no longer mint NMR — all NMR that will ever exist, exists today
  • Maximum supply is reduced from 21 million to 11 million to reduce dilution
  • Total supply is now 11 million, and will gradually decrease as tokens are burned on Erasure and in the Numerai tournament
  • Circulating supply is the total supply minus the amount held by Numerai for development of the protocol

Where we’ll be when Erasure launches:

  • NMR will no longer just be the token that powers Numerai’s hedge fund — NMR becomes the Erasure protocol
  • Thousands of new use cases beyond Numerai’s Erasure Quant application. In fact, we’re giving away $1mil in NMR in grants to developers with exciting application ideas to build on top of Erasure.

We’ve taken a contrarian path and prioritized the usefulness of our token above its initial decentralization. As a result, we’ve created something rare: a token that makes sense and is being used. And now, Numeraire will be even better, more versatile, and will be controlled by the people it was made for.
Richard Craib

49168 total NMR stakes as at Jul 8th, 2019

The Numeraire token was created two years ago during the early days of development on Ethereum. There was a lot of risk. We opted for a token that would give the highest level of security to our users by implementing features like upgradeability, emergency stop, multisignature, and custody.

The cost was that, until now, users of the token had to trust Numerai.

Now that Numeraire has been stress-tested for two years, almost to the day, we’re ready to become decentralized af.

TL;DR We have transitioned the tournament to an independent set of smart contracts and disabled the centralized components of the token, effectively converting it into a pure ERC-20 with additional burning and custody functionality. These changes were deployed to mainnet and independently audited by Trail of Bits.

here’s what Bryant had to say

The technical details


The token retains the existing ERC-20 interface.

function approve(address _spender, uint256 _value);
function transfer(address _to, uint256 _value);
function transferFrom(address _from, address _to, uint256 _value);
function totalSupply();
function balanceOf(address _owner);
function allowance(address _owner, address _spender);
event Transfer(address indexed _from, address indexed _to, uint256 _value);
event Approval(address indexed _owner, address indexed _spender, uint256 _value);


Since the lauch of the token, there has been additional standardization in how tokens are burned. In order to retrofit these standards to our existing token, we converted the mint() and numeraiTransfer() functions to behave like openzeppelin’s ERC20Burnable burn() and burnFrom().
Note: the caller must check the return values of these functions as they return false on failure.

function mint(uint256 _value) public {
_burn(msg.sender, amount);
function numeraiTransfer(address _to, uint256 _value) public {
_burnFrom(account, amount);

New tournament

The Numerai tournament contracts were moved to a separate set of smart contracts using the zos-lib proxy smart contracts. These new contracts currently have the same functionality as the predecessor with added security and architecture, supporting a broader range of feature improvements. Tournament participants who are currently doing self-custody need to follow this guide on custom-staking to interact with the new contract.

Custody in the Numerai tournament

Tournament participants can choose to self-custody or to opt in for the Numerai custodial wallet, which allows us to pay gas and manage private keys on their behalf.
To maintain this behavior we are using the withdraw() function, which is designed to be disabled in the future. The goal is self-custody using a contract-based wallet such as universal logins, wallet connect and EIP-1613.

function withdraw(address _from, address _to, uint256 _value);


In April 2018, it came to our attention that there were some minor security vulnerabilities with the multisignature wallet used to manage the token. In response, we implemented a temporary patch which allowed us to circumvent the issues identified. This multisignature wallet is now completely disabled as we now use a Gnosis multisig.

Emergency stop

The token was originally stoppable in the event of an emergency.
This is a centralized feature and thus has been disabled in this upgrade.


All 11 million of the tokens have now been minted. There will never again be minting of the token and the total supply will decrease as tokens are burned.

Correct numbers are already reflected at CoinGecko, including circulating supply and market cap. CoinMarketCap, Messari inter alia show the correct maximum supply and and we expect the rest of their numbers to reflect soon.

Thanks to Natasha-Jade for writing this release.