cic-docs/spec/006_Self_Service_Token.md

117 lines
4.9 KiB
Markdown
Raw Normal View History

2020-05-18 13:23:02 +02:00
# Current Platform Incentives spec
<!--
valid status values are: Pre-draft|Draft|Proposal|Accepted
-->
* Authors: Will Ruddick <willruddick@gmail.com> (grassecon.org)
* Date: 2020.05.18
* Version: 1
* Status: Pre-draft
## Rationale
Enabeling users to create their own tokens is one of the main goals of CICs
## Intro
Today users only receive tokens created by Grassroots Economics - the reserves of these tokens are donors giving to Grassroots Economics.
This means Users have very little feeling of reserve depletion because it is not their token and not their money behind it.
We want users to be able to create their tokens to create more ownership and diffusion.
## Token creation process - UI
(I will describe this for USSD be a web interface should also be made)
1. Existing User calls Sarafu
2020-05-18 13:34:12 +02:00
- New user dials *483*46# where she selects
- My Account -> Create Token
- Note that this ability is whitelisted- to be whitelisted the user must have:
1. Been in the system as an active user for some time (at least 1 month)
1. Have a substantial balance (his CIC converted to reserve) to reach at least 25% reserve. Minimum 100 USD in value DAI. Which will staked into the converter and leveraged into $400 of CIC tokens (the value changes as reserve is removed).
2020-05-18 13:23:02 +02:00
2. Default Token Options
*. Based on the users location the system has preset defaults:
1. 25% Target Reserve Ratio (1:1 with reserve)
1. Minimum initial reserve is $100 USD in value
3. Chosen Options
1. Token Name (limited to 9 characters (auto converted to lowercase no special letters) (TOKEN_NAME)
2. Reserve amount (the minimum is 10,000 Kenyan Shillings in value- higher amount means a higher price of the final tokens) - Max is the users current balance. Note that this10,000 Kenyan Shillings can be in the form of other tokens and converted to Sarafu.
3. How many initial members? (NUM)MEMBERS)
4. How much will initial members receive (INITAL_NEWUSER_AMT) (maximum is MAX_CIC_CREATED/NUM_MEMBERS)
5. Note that members must join the token (via USSD) using the TOKEN_NAME to receive this.
4. Pin
2020-05-18 13:31:55 +02:00
* “Enter PIN
* _______________”
* Repeat Pin
* “Enter PIN again
* _______________”
*
* Pop Up:
* “Your TOKEN_NAME token is being created.
* Youll receive an SMS when your token is ready.”
*
* Error:
* If the user doesnt repeat the same password pop up with the text
* “Wrong PIN, please try again”
*
* Clicking back will lead to Repeat Pin screen
2020-05-18 13:23:02 +02:00
5. “You will receive an SMS when your TOKEN_NAME token is ready”
6. Approval
At this stage, the wallet creation starts confirmation SMS will be sent only when the Backend process (see below) is over.
If token creation succeeds:
Send an SMS to the user with the following text
2020-05-18 13:31:55 +02:00
* “You have just created the TOKEN_NAME token!
2020-05-18 13:23:02 +02:00
Dial *483*46# Airtel or *384*96# to use TOKEN_NAME token
Tell your members to JOIN TOKEN_NAME via My Account”
2020-05-18 13:31:55 +02:00
* If account creation fails:
2020-05-18 13:23:02 +02:00
Send an SMS to the user with the following text:
“Whoops! There was a problem creating your token. To try again Dial *483*46#. If issues persist contact support: 0757628885”
2020-05-18 13:31:55 +02:00
## Token creation process - Backend
2020-05-18 13:23:02 +02:00
Start this process between step 5 to 6,
Save all the information created in the process on the SEMPO DB.
Generate a token and converter on xDAI and store private and public keys
Mint the standard amount of tokens. (40,000)
Convert the users tokens into nDAI and put them into the converter. (min 10,000)
The new token should have a value of at least 1:1 with nDAI and be at least at 25% reserve
Put the TOKEN_NAME tokens into the Users wallet (Group wallet) - note that when other users later join (via my account -> join Chama) the TOKEN_NAME they will receive tokens from this wallet. - there is a contract here.
The token owner should not be able to transfer more tokens than he has committed to new users.
The token owner should have his community token for auto-convert set to TOKEN_NAME
This account is now considered a GROUP account!? Meaning that only it can cash out 50% a month from its own reserve.
If the token has been created send the SMS for the token creation approval.
Else send error.
Action items:
Token Value Alerts
Whenever the token is converted to another token or nDAI and the price changes more than 10% an alter is sent to the token holders
Message Alert your BALANCE TOKEN_NAME tokens have changed in +10% / -10% value and are now worth (value of Balance in nDAI)
Note that the receipt messages for token transfers that include a conversion should also show the tokens exchange value (this is already ont he USSD system)
## Implementation
### Workflow
### Variables
### Interface
## Testing
<!--
Please describe what test vectors that are required for this implementation
-->
## Changelog
<!--
Please remember to describe every change to this document in the changelog using
serial number:
* version 1:
-->