diff --git a/README.md b/README.md index 9f81f792..113c91de 100644 --- a/README.md +++ b/README.md @@ -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) +Decentlabs 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 diff --git a/docs/developmentEnvironment.md b/docs/developmentEnvironment.md index e55081df..7c9b541f 100644 --- a/docs/developmentEnvironment.md +++ b/docs/developmentEnvironment.md @@ -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 @@ -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 @@ -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 @@ -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