Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Readme & dev docs updates #219

Merged
merged 4 commits into from
May 10, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
139 changes: 68 additions & 71 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,116 +13,113 @@ Decentralised stable cryptocurrency on Ethereum

## Concept

Augmint provides digital tokens, value of each token pegged to a fiat currency.
Decentralized stablecoins targeted to fiat currencies built on Ethereum.

The first Augmint token will be A-EUR (Augmint Euro), pegged to EUR.
The first Augmint token is AEUR.

The value of 1 A-EUR is always closely around 1 EUR.
**1 AEUR ≈ 1 EUR.**

Augmint tokens are cryptocurrency tokens with all the benefits of cryptocurrencies: stored securely in a decentralised manner and instantly transferable worldwide.
- Buy and sell AEUR for ETH or EUR.
- Get a loan in AEUR by depositing ETH.
- Lock AEUR to earn a premium.

Read more and try it: **[www.augmint.cc](http://www.augmint.cc)**
Try it: **[https://www.augmint.org](http://www.augmint.org)**

**[Our Trello board](https://trello.com/b/RYGAt2so/augmint-documents)** with a collection of documents about the project.
**[Manifesto](https://www.augmint.org/manifesto)**

**[White paper draft](http://bit.ly/augmint-wp)** - Work in progress. Please feel free to comment it: questions, ideas, suggestions are welcome.
**[White Paper](http://bit.ly/augmint-wp)**

## Components
### Related repos

[Web frontend repo](https://github.com/Augmint/augmint-web)
- [Web frontend](https://github.com/Augmint/augmint-web)
- [@augmint/js library](https://github.com/Augmint/augmint-js)

## Flows
## Flow diagrams

[Contract dependency graph](docs/contractDependencies.png)
- [Loan flow](docs/loanFlow.png)
- [Lock flow](docs/lockFlow.png)
- [Exchange flow](docs/exchangeFlow.png)
- [Flow of funds](https://docs.google.com/document/d/1IQwGEsImpAv2Nlz5IgU_iCJkEqlM2VUHf5SFkcvb80A/#heading=h.jsbfubuh6okn)

Sequence diagrams:
## Solidity Contracts

* [Loan flow](docs/loanFlow.png)
* [Lock flow](docs/lockFlow.png)
* [Exchange flow](docs/exchangeFlow.png)
* [Reserve Sales flow](docs/reserveSalesFlow.png) _(not implemented yet)_
### Dependencies

[Flow of funds](https://docs.google.com/document/d/1IQwGEsImpAv2Nlz5IgU_iCJkEqlM2VUHf5SFkcvb80A/#heading=h.jsbfubuh6okn)
[![Contract dependency graph](docs/contractDependencies.png)](docs/contractDependencies.png)

## Solidity Contracts
### List of contracts

* [Restricted.sol](./contracts/generic/Restricted.sol)
- [Restricted.sol](./contracts/generic/Restricted.sol)
Stores permissions per address
* [MultiSig.sol](./contracts/generic/MultiSig.sol)
- [MultiSig.sol](./contracts/generic/MultiSig.sol)
Abstract contract to manage multi signature approval and execution of atomic, one-off contract scripts
* [StabilityBoardProxy.sol](./contracts/generic/StabilityBoardProxy.sol)
- [StabilityBoardProxy.sol](./contracts/generic/StabilityBoardProxy.sol)
Augmint parameters can be set only via this contract with a quorum approving a contract script to run.
* [ERC20.sol](./contracts/generic/ERC20.sol)
- [ERC20.sol](./contracts/generic/ERC20.sol)
Standard [ERC20](https://theethereum.wiki/w/index.php/ERC20_Token_Standard) token interface.
* [SystemAccount.sol](./contracts/generic/ERC20.sol)
- [SystemAccount.sol](./contracts/generic/ERC20.sol)
Abstract contract to maintain balances of Augmint system accounts
* [AugmintReserves](./contracts/AugmintReserves.sol)
* Holds Augmint's ETH and token reserves
* [InterestEarnedAccount](./contracts/InterestEarnedAccount.sol)
* Holds interest earning from token lending - only from repaid loans, i.e. already "earned"
* Provides interest for Locks
* [FeeAccount.sol](./contracts/FeeAccount.sol)
* holds all fees: tokens from transfer and exchange fees (to be implemented) + ETH fees from defaulting fees
* calculates transferFees
* [AugmintToken.sol](./contracts/generic/AugmintToken.sol)
- [AugmintReserves](./contracts/AugmintReserves.sol)
- Holds Augmint's ETH and token reserves
- [InterestEarnedAccount](./contracts/InterestEarnedAccount.sol)
- Holds interest earning from token lending - only from repaid loans, i.e. already "earned"
- Provides interest for Locks
- [FeeAccount.sol](./contracts/FeeAccount.sol)
- holds all fees: tokens from transfer and exchange fees (to be implemented) + ETH fees from defaulting fees
- calculates transferFees
- [AugmintToken.sol](./contracts/generic/AugmintToken.sol)
Base contract for all Augmint tokens, [TokenAEur.sol](./contracts/TokenAEur.sol) being the first implementation.
* ERC20 standard functions
* maintains account token balances
* Generic `transferAndNotify` "convenience" function
* allows MonetarySupervisor to issue tokens on loan disbursement and for reserve
* allows accounts to burn their tokens (used by repay loan and burn from reserves via MonetarySupervisor contract)
* [MonetarySupervisor.sol](./contracts/MonetarySupervisor.sol)
* maintains system wide KPIs (totalLockAmount, totalLoanAmount)
* enforces system wide limits (Loan to Deposit ratio limits)
* issue to & from reserve functions
* [TokenAEur.sol](./contracts/TokenAEur.sol)
* First AugmintToken contract instance, pegged for pegged to EUR (A-EUR aka Augmint Euro aka A€ )
* Sets standard token parameters (name, symbol, decimals, peggedSymbol etc.)
* [Rates.sol](./contracts/Rates.sol)
- ERC20 standard functions
- maintains account token balances
- Generic `transferAndNotify` "convenience" function
- allows MonetarySupervisor to issue tokens on loan disbursement and for reserve
- allows accounts to burn their tokens (used by repay loan and burn from reserves via MonetarySupervisor contract)
- [MonetarySupervisor.sol](./contracts/MonetarySupervisor.sol)
- maintains system wide KPIs (totalLockAmount, totalLoanAmount)
- enforces system wide limits (Loan to Deposit ratio limits)
- issue to & from reserve functions
- [TokenAEur.sol](./contracts/TokenAEur.sol)
- First AugmintToken contract instance, pegged for pegged to EUR (A-EUR aka Augmint Euro aka A€ )
- Sets standard token parameters (name, symbol, decimals, peggedSymbol etc.)
- [Rates.sol](./contracts/Rates.sol)
A contract to return fiat/ETH exchange rates.
* [Exchange.sol](./contracts/Exchange.sol)
- [Exchange.sol](./contracts/Exchange.sol)
EUR / ETH exchange contract. Sell or buy A-EUR for ETH
* [LoanManager.sol](./contracts/LoanManager.sol)
* Loan products and their parameters
* Maintains all loans via new loan, repayment, collection functions
* Holds collateral in escrow
* [Locker.sol](./contracts/Lock.sol)
* Lock products and parameters
* Token funds locking and releasing
* Holds locked tokens (with interest)
- [LoanManager.sol](./contracts/LoanManager.sol)
- Loan products and their parameters
- Maintains all loans via new loan, repayment, collection functions
- Holds collateral in escrow
- [Locker.sol](./contracts/Lock.sol)
- Lock products and parameters
- Token funds locking and releasing
- Holds locked tokens (with interest)

## Contribution
## Contributions

Augmint is an open and transparent project.

We are seeking for great minds to extend our core team. Contribution in any area is much appreciated: development, testing, UX&UI design, legal, marketing spreading the word etc.
We are looking for great minds to extend our core team. Contributions in any area is much appreciated: development, testing, UX&UI design, legal, marketing, spreading the word etc.

**[Development environment setup](docs/developmentEnvironment.md)**
[Code of Conduct](CODE_OF_CONDUCT.md)

## Publish NPM package

When the abiniser directory changed:
- bump the version property in the package.json
- `npm publish --access public`
## [Development environment setup](docs/developmentEnvironment.md)

## Get in touch

Drop us an email: hello@augmint.cc
or
say hi on our [Discord server](https://discord.gg/PwDmsnu): [![Discord](https://img.shields.io/discord/407574313810788364.svg)](https://discord.gg/PwDmsnu)
- [hello@augmint.org](mailto:hello@augmint.org)
- [Discord server](https://discord.gg/PwDmsnu) [![Discord](https://img.shields.io/discord/407574313810788364.svg)](https://discord.gg/PwDmsnu)
- [Telegram](https://t.me/augmint)

## Authors

![DECENT](http://www.decent.org/images/logo-voronoi_120x33.png)
See team on [www.augmint.org](https://www.augmint.org)

The project was born at [DECENT Labs](http://www.decent.org)
<img src="https://github.com/Augmint/augmint-web/raw/staging/src/assets/images/decentlabs.png" alt="Decentlabs" width="60" height="60"> The project was born at [DECENT Labs](http://www.decent.org)

### Concept, initial version

* [szerintedmi](https://github.com/szerintedmi)
* [Charlie](https://github.com/krosza)

Check the whole team on [augmint.cc](http://www.augmint.cc)
- [szerintedmi](https://github.com/szerintedmi)
- [Charlie](https://github.com/krosza)

## Licence

Expand Down
30 changes: 19 additions & 11 deletions docs/developmentEnvironment.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@
- [Install](#Install)
- [Launch](#Launch)
- [Tests](#Tests)
- [Publish NPM package](#Publish-NPM-package)
- [Docker Image](#Docker-Image)
- [Sequence diagrams](#Sequence-diagrams)
- [Non ganache launches/deploys](#Non-ganache-launchesdeploys) -
- [Non ganache launches/deploys](#Non-ganache-launchesdeploys)

## Install

Expand Down Expand Up @@ -103,9 +104,21 @@ yarn start
yarn test
```

## Publish NPM package

When the abiniser directory changed:

- bump the version property in the package.json
- release a new version as usual (staging -> master, git tag & github release)
- `npm publish` from master branch. test it with `--dry-run`

## Docker Image

A docker image with an initial state of the contracts in ganache is published for development of dependent packes: [hub.docker.com/r/augmint/contracts](https://hub.docker.com/r/augmint/contracts)
A docker image with an initial state of the contracts in ganache is published for development of dependent packages.

The image is published to [augmint/contracts dockerhub repo](https://hub.docker.com/r/augmint/contracts).

NB: `augmint-contracts`' own tests are also running on this container at Travis

## Running docker image

Expand All @@ -117,12 +130,6 @@ yarn docker:start
yarnd docker:stop
```

## Docker image

Docker images are used by dependent projects to quickly launch local ganache with all augmint contracts for testing Augmint.
The image is published to [augmint/contracts dockerhub repo](https://hub.docker.com/r/augmint/contracts).
NB: `augmint-contracts`' own tests are also running on this container at Travis,

### Build docker image

- `localchaindb:builddocker` : deletes local chain data folder (`./localchaindb`), launches ganache, migrates contracts and builds a docker image with `localdockerimage` name
Expand All @@ -135,9 +142,10 @@ Travis set to generate a docker image for master and staging branch builds. See

**Tags**

- `yarn docker:tag`: every published image tagged with `commit-xxxxx` and `build-travisbuildnumber`
- `yarn docker:tag:nextver` : on staging branch image tagged with `nextver`
- `yarn docker:tag:latest` : on master branch image tagged with `latest` and `vx.x.x` tags (from package.json version)
- `yarn docker:tag:build`: every published image tagged with `build-travisbuildnumber` and `commit-xxxxx`
- `yarn docker:tag:staging` : on staging branch image tagged with `staging`
- `yarn docker:tag:latest` : on master branch image tagged with `latest`
- `yarn docker:tag:version` : on master branch image tagged with `vx.x.x` tags (from git tag if it's in semver format)

## Sequence diagrams

Expand Down