Nonce is a ticketing, content and collectible dApp (decentralized app) powered by the Ethereum blockchain. The project is intended to be a flexible vehicle for offchain benefits or rewards, e.g., permissioned and verifiable access to events, content or collectibles. This document catalogs the ideation, planning and development process and will evolve as the project progresses.
- Ethereum Config
- Implementing ERC721X Token Standard
- Front End Config
- Authentication and Identity Management
There are two key issues with the vast majority of dApps:
- The friction of interacting with the Ethereum network
- The cost of transacting on the Ethereum network
Friction
The typical dApp architecture requires users to interact with Ethereum using a browser extension like MetaMask, which acts as a bridge to the network. Because internet users have been conditioned to interact with the web seamlessly -- and because most internet users are ignorant of the underlying protocol -- a dApp built in the MetaMask model is unlikely to break through with non-technical users.
Cost
Every change of state registered on the Ethereum main chain -- big or small -- costs ether. That means that a dApp user is paying a few cents every time they 'like' or 'post', for example. The high cost of micro-interactions lends to a poor user experience and is a clear barrier to mainstream adoption.
...
With these challenges well understood, there are several projects in the Ethereum ecosystem developing "Layer 2" solutions that abstract away the role of the network while mitigating the cost.
Nonce is being developed on Loom Network's PlasmaChain, a sidechain built on top of the Ethereum main chain, where the transactions are nearly frictionless and the marginal cost approaches zero. Beyond the efficiency benefits, PlasmaChain offers an implementation of Plasma Cash, an approach to the challenge of securely moving cryptoassets on and off the main network.
Configuring Loom required downloading a local client, running a few initialization commands and pulling Loom test tokens off the development faucet.
In addition to Loom, Nonce uses a conventional Truffle project setup for smart contract and UI code management.
The bare bones smart contract implementation of Nonce should satisfy the following product specifications:
- Minters create tokens and control the supply
- Patrons acquire, trade or burn tokens
A generic user can play either role.
Minters should be able to mint a unique set of transferable tokens, mapping to an offchain benefit or reward
- The set can be limited or unlimited in quantity
- The minter can set or change the ether price of tokens in their set (it can be free, of course)
- The patron can acquire an unclaimed token with a paid or unpaid transaction
- The patron can demonstrate ownership of an asset to the minter, potentially for an offchain benefit or reward
- Future implementation will include a mechanism for trading, spending and/or reselling tokens
- ERC721X infrastructure: PR #1
- Basic functionality for minting, acquiring tokens: PR #2, PR #5
- Foundation for future implementation of PlasmaChain gateway: PR #3
- Testing: PR #4, PR #5
To get started with Loom, the initial Nonce directory cloned the Truffle Dappchain Example which uses a conventional React web setup. Nonce also uses Redux for state management.
...continued