erasureprotocol / Nmr

The Numeraire Ethereum Smart Contract

Projects that are alternatives of or similar to Nmr

Smart Contracts Example
Simple example of token market. Based on blockchain technology using Ethereum platform.
Stars: ✭ 37 (-88.29%)
Mutual labels:  ethereum, smart-contracts, ethereum-contract
Daox Contracts
Smart contracts for creating Daox-based fundraising organization
Stars: ✭ 31 (-90.19%)
Mutual labels:  ethereum, smart-contracts, ethereum-contract
Colonynetwork
Colony Network smart contracts
Stars: ✭ 351 (+11.08%)
Mutual labels:  ethereum, smart-contracts, ethereum-contract
Ethereum Smart Contracts Security Checklist
Ethereum Smart Contracts Security CheckList From Knownsec 404 Team
Stars: ✭ 114 (-63.92%)
Mutual labels:  ethereum, smart-contracts, ethereum-contract
Smart Contract Sanctuary
🐦🌴🌴🌴🦕 A home for ethereum smart contracts. 🏠
Stars: ✭ 99 (-68.67%)
Mutual labels:  ethereum, smart-contracts, ethereum-contract
Solidity
🔐 Ethereum smart contracts developed for the Hanzo Platform.
Stars: ✭ 46 (-85.44%)
Mutual labels:  ethereum, smart-contracts, ethereum-contract
React Ethereum Dapp Example
A starter boilerplate for an Ethereum dapp using web3.js v1.0, truffle, react, and parity
Stars: ✭ 384 (+21.52%)
Mutual labels:  ethereum, smart-contracts, ethereum-contract
Ethereum Ico Contract
Tested Ethereum ICO Contract for Token Crowdsales
Stars: ✭ 59 (-81.33%)
Mutual labels:  ethereum, smart-contracts, ethereum-contract
Eden Smart Contracts
EDEN - EDN Smart Token & Smart Contracts
Stars: ✭ 109 (-65.51%)
Mutual labels:  ethereum, smart-contracts, ethereum-contract
Ico Contracts
Ethereum smart contracts that have been used during successful ICOs
Stars: ✭ 160 (-49.37%)
Mutual labels:  ethereum, smart-contracts, ethereum-contract
Smart Contract Search Engine
Takes a link to a smart contract's raw ABI file and an RPC URL and then indexes all instances of that smart contract
Stars: ✭ 265 (-16.14%)
Mutual labels:  ethereum, smart-contracts
Octopus
Security Analysis tool for WebAssembly module (wasm) and Blockchain Smart Contracts (BTC/ETH/NEO/EOS)
Stars: ✭ 261 (-17.41%)
Mutual labels:  ethereum, smart-contracts
Ethereum Erc721
Non-fungible token implementation for Ethereum-based blockchains.
Stars: ✭ 253 (-19.94%)
Mutual labels:  ethereum, smart-contracts
Truffle Flattener
Truffle Flattener concats solidity files from Truffle and Buidler projects with all of their dependencies
Stars: ✭ 254 (-19.62%)
Mutual labels:  ethereum, smart-contracts
Celo Monorepo
Official repository for core projects comprising the Celo platform
Stars: ✭ 269 (-14.87%)
Mutual labels:  ethereum, smart-contracts
Solidity Idiosyncrasies
Solidity gotchas, pitfalls, limitations, and idiosyncrasies.
Stars: ✭ 267 (-15.51%)
Mutual labels:  ethereum, smart-contracts
Uniswap V2 Periphery
🎚 Peripheral smart contracts for interacting with Uniswap V2
Stars: ✭ 267 (-15.51%)
Mutual labels:  ethereum, smart-contracts
Yearn Protocol
Yearn smart contracts
Stars: ✭ 277 (-12.34%)
Mutual labels:  ethereum, ethereum-contract
Augur
Augur - Prediction Market Protocol and Client
Stars: ✭ 294 (-6.96%)
Mutual labels:  ethereum, ethereum-contract
dala-smart-contracts
Smart contracts for the Dala token sale and ERC20 token
Stars: ✭ 19 (-93.99%)
Mutual labels:  smart-contracts, ethereum-contract

NMR Ethereum Smart Contract

Numeraire (NMR) is an ERC-20 token used for staking and burning.

NMR is the native token of the Erasure Protocol.

See documentation for more information.

Security Contact: [email protected]

Validated Metrics

NMR circulating supply
Etherscan token tracker
Coingecko token tracker
DeFiPulse token tracker

Deployed Contracts

Contract Address
NumeraireBackend 0x1776e1f26f98b1a5df9cd347953a26dd3cb46671
NumeraireDelegateV1 0xF32e4724946d4e288B3042d504919CE68C4Fda9c
NumeraireDelegateV2 0x3548718A49EE7cd348e50290D446D9F1A1f9C59E
NumeraireDelegateV3 0x29F709e42C95C604BA76E73316d325077f8eB7b2
UpgradeDelegate 0x3361F79f0819fD5feaA37bea44C8a33d98b2A1cd
Relay 0xB17dF4a656505570aD994D023F632D48De04eDF2

Security Audits

Audit Provider Date
NMR Token New Alchemy May 2017
NMR Code Fix New Alchemy April 2018
NMR 2.0 Trail of Bits July 2019

Whitepapers

Project Authors Date
Numerai Richard Craib, Geoffrey Bradway, Xander Dunn, Joey Krug February 2017
Erasure Quant Richard Craib, James Geary, Jason Paryani August 2019
Erasure Bay Stephane Gosselin, Jonathan Sidego March 2020

Specification

ERC-20

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);

Refer to ERC-20 standard for detailed specification.

Note: NMR deviates from ERC-20 in the implementation of the approve() function to prevent the ERC-20 approve race condition.

The approve() function is limited to changing the allowance from zero or to zero.

In order to change the allowance from a non-zero value to a different non-zero value in a single transaction. The user must use the changeApproval() function.

function changeApproval(address _spender, uint256 _oldValue, uint256 _newValue);

Sets the approval to a new value while checking that the previous approval value is what we expected.

  • _spender is the address of the contract.
  • _oldValue is the current amount the contract is allowed to spend.
  • _newValue is the new amount to allow the contract to spend.

Burning

The mint() and numeraiTransfer() functions have been repurposed from their initial use in order to support native token burns as implemented in OpenZeppelin's ERC20Burnable.

Note: The caller must check the return values of these functions as they return false on failure.

/**
 * @dev Destoys `amount` tokens from `msg.sender`, reducing the total supply.
 *
 * Emits a `Transfer` event with `to` set to the zero address.
 *
 * Requirements:
 * - `account` must have at least `amount` tokens.
 */
function mint(uint256 _value);
   => function burn(uint256 amount);

/**
 * @dev Destoys `amount` tokens from `account`.`amount` is then deducted
 * from the caller's allowance.
 *
 * Emits an `Approval` event indicating the updated allowance.
 * Emits a `Transfer` event with `to` set to the zero address.
 *
 * Requirements:
 * - `account` must have at least `amount` tokens.
 * - `account` must have approved `msg.sender` with allowance of at least `amount` tokens.
 */
function numeraiTransfer(address _to, uint256 _value);
   => function burnFrom(address account, uint256 amount);

Custody for Numerai Tournament

Numerai performs custody of the token for participants in the Numerai Tournament. This removes participation barriers as users no longer need to pay for gas or manage their own private keys. The withdraw() function can be used by Numerai to transfer tokens from the first 1 million accounts (0x00...00000000 to 0x00...000F4240).

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

Deprecated Features

All other contract methods belong to the following features which have been disabled as a part of the NMR 2.0 upgrade.

  • Multisignature
  • Emergency Stops
  • Minting
  • Upgradeability
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].