# Multi Token Environment

<!--
valid status values are: Pre-draft|Draft|Proposal|Accepted
-->
* Authors: Will Ruddick <willruddick@gmail.com> (grassecon.org)
* Date: 2021.05.29
* Version: 1
* Status: Pre-draft

## Rationale
Enabeling users to hold and trade multiple tokens- will allows wallet holders to be connected to eachother as well as other tokens such as rewards.

## Intro 
* Today users only hold one token aka Sarafu - created by Grassroots Economics. This means that users can't interact with other tokens at all.
* We want users to create and be able to interact with other CICs and tokens.

## Multi-Token – User Flow:

1. A users is given (via trade or token creation) multiple tokens (These tokens must all be registered on Sarafu Network)
2. The user should be able to see these tokens and their balances (if non-zero) in a 'My Sarafu' Menu item (top level) - as many as possible on USSD with the highest balalances at the top.
3. The user should be able to switch which token is their Active Token. This will be used for sending, as well as default balance checks and mini statement. 

## USSD Menu

1. My Sarafu (top level)
   1. Show tokens
   1. Set Active Token

### CICADA Mgmt Platform - GUI
1. On the user info page you should be able to set their Active Token - via a drop down
1. You should be able to see balances in all the tokens they have

## Active Token 
1. Each user needs to be assigned a default / Active token - they start with Sarafu by default.

## Auto Activate Token
1. Users with only one token with non zero balance in their account will default to that as their active token

## Interfaces - UX

### Command Line - CLI Set Active Token
1. User ID and Name or ID of the token - ensure it is a valid token


### USSD feature phones - Set Active Token
- New user dials ussd session code where she selects My Sarafu -> Set Active Token
- They top X tokens by balances they have in their wallet are shown with an option to select the number of the token they want to choose
- Confirmation message and entry of pin number to Confirm
- Future transactions send from this account will try to send that token

## Testing

## Action items

## Implementation

### Workflow

### Variables

### Interface



## Security
1. 

## Changelog
<!--
Please remember to describe every change to this document in the changelog using 
serial number:

* version 1:
-->
