Skip to content
This repository has been archived by the owner on Feb 11, 2019. It is now read-only.

convergentcx/milky-way

Repository files navigation

Build Status Greenkeeper badge

Arc

Bonding Curves are a method of token issuance which allow for continuous liquidity of the issued token through the maintenance of a reserve. External users are free to purchase or sell tokens into the curve by submitting transactions to the bonding curve smart contract. The bonding curve will mint (buy) or burn (sell) new tokens depending on the action external users make. The name bonding curve comes from the fact that the price of the token will move on a determined path that can be visually viewed as a curve.

Notes on Upgradability

Arc uses ZeppelinOS to enable upgradibility in its contracts. For those not yet familiar with the proxy pattern, the contracts may look a bit strange at first. If you want to make yourself more comfortable with how the upgrade pattern works check out the great post on Zeppelin's blog.

That the contracts contained in the Arc library can be upgraded does not mean that they will be, all users or end consumers will have to opt-in to an upgrade. The way to opt in to an upgrade is by changing the the logic contract for which the the proxy points at. For users of Arena, we are working on nice and intuitive UI components to allow for this. For developers who use Arc, it will require some knowledge on how to perform the action themselves.

Testing

Clone this repository and install dependencies:

$ git clone git@github.com:convergentcx/Arc.git
$ yarn

Then compile the smart contracts and generate the TypeScript bindings:

$ yarn generate

Now in one window start the development chain:

$ yarn ganache

In other window run the tests:

$ yarn test

Running the Demo

Start by installing dependencies and running ganache in one console:

$ yarn
$ yarn ganache

In other console run:

$ yarn compile:dapp

Remaining in the new console, move to the dapp/ directory and run the following:

$ yarn
$ yarn start

Navigate to http://localhost:3000 in a web browser.