mirror of https://github.com/status-im/swarms.git
111 lines
3.5 KiB
Markdown
111 lines
3.5 KiB
Markdown
|
Idea code: DEV#003
|
||
|
Status: Done
|
||
|
Created: 2017-11-08
|
||
|
Started: 2017-11-14
|
||
|
Ended: 2018-01-04
|
||
|
|
||
|
## Summary
|
||
|
|
||
|
Add ERC20 support
|
||
|
|
||
|
## Idea proposal
|
||
|
|
||
|
As a user I want my [ERC20](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md) tokens to be first class citizen.
|
||
|
|
||
|
## Swarm Participants
|
||
|
|
||
|
* Lead Contributor: @jeluard
|
||
|
* Contributor: @goranjovic
|
||
|
* Support: @3esmit
|
||
|
* Tester: @asemiankevich
|
||
|
|
||
|
Swarm channel: **3-erc20**
|
||
|
|
||
|
## Requirements
|
||
|
|
||
|
A user should be able to manage its ERC20 tokens pretty much the same way as ETH.
|
||
|
In particular `wallet` and `send` command must support ERC20 tokens.
|
||
|
|
||
|
As a first step considered ERC20 tokens will be based on a static list embedded in the application. This might be revisited later (see #18).
|
||
|
|
||
|
ERC20 extensions might also be considered: [ERC223](https://github.com/ethereum/EIPs/issues/223), [Minime](https://github.com/Giveth/minime) ([SNT](https://etherscan.io/token/StatusNetwork) itself is a Minime token).
|
||
|
|
||
|
## Zeplin references
|
||
|
|
||
|
* Assets https://zpl.io/blwD8ka
|
||
|
* wallet main screen (with list of assets shown + managin assets) https://zpl.io/b6d1eNV
|
||
|
|
||
|
## Board
|
||
|
https://github.com/status-im/status-react/projects/4
|
||
|
|
||
|
## Goals & Implementation Plan
|
||
|
|
||
|
Following features should be considered:
|
||
|
|
||
|
* list wallet tokens
|
||
|
* provide default token
|
||
|
* send tokens to a contact
|
||
|
* request token from a contact
|
||
|
* get current price
|
||
|
* get historical price
|
||
|
* get token details (historical price, market cap, # tokens, volume, crowdsale)
|
||
|
* list historical transactions
|
||
|
* add gas and data support when sending transaction
|
||
|
* chart graphs
|
||
|
|
||
|
Can be split in 4 categories:
|
||
|
|
||
|
* wallet token details (access and management)
|
||
|
* token details (static and dynamic data)
|
||
|
* token price details
|
||
|
* token transactions
|
||
|
|
||
|
Token details will require some metadata currently not available in ethereum.
|
||
|
Token price details can be provided by `cryptocompare`.
|
||
|
|
||
|
### Minimum Viable Product
|
||
|
|
||
|
List user tokens and display token details
|
||
|
|
||
|
Goal Date: 2017-12-01
|
||
|
Started: 2017-11-15
|
||
|
Completed: 2017-12-05
|
||
|
Description: token list and details
|
||
|
|
||
|
### Iteration 1
|
||
|
|
||
|
Allow sending and requesting tokens.
|
||
|
Show token historical data and update percentage info
|
||
|
|
||
|
Goal Date: 2017-12-15
|
||
|
Started: 2017-12-06
|
||
|
Completed: 2018-01-04
|
||
|
Description: send/request tokens
|
||
|
|
||
|
### Post Mortem
|
||
|
|
||
|
#### What could be improved
|
||
|
|
||
|
[App structure refinement](#61) was defined during the first iteration and significantly impacted the scope of this iteration. Specifically @goranjovic work around asset details had to be removed.
|
||
|
|
||
|
A number of technical elements has been discovered and added to the todo list during development. It appears primordial to spend some time during the first days to have a detailed understanding of what's to be done and technical impacts. It appears our decentralized nature makes some usually simple things harder to implement.
|
||
|
|
||
|
Finally we discovered pretty late some technical limitations that prevented us to implement some features (e.g. token transaction history).
|
||
|
|
||
|
#### What went well
|
||
|
|
||
|
Overall implementation went smoothly and we had fast test cycle thanks to @asemiankevich .
|
||
|
|
||
|
## Appendix: archive of future work
|
||
|
|
||
|
### Known limitations
|
||
|
|
||
|
Due to technical constraints some features have been left out and will be addressed after prerequisites have been implemented.
|
||
|
|
||
|
* no token transaction history (etherscan API doesn't support that)
|
||
|
* send command: no token support (requires upgrade to API, support for deep linking)
|
||
|
* request disabled for tokens (requires upgrade to API)
|
||
|
|
||
|
## Copyright
|
||
|
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).
|
||
|
|