After some discussions in another thread, it was proposed that a list of requirements for a safecoin wallet application can be worked out by the community, and it will potentially result in an RFP as part of the CEP.
This is just a draft I put together in order to trigger the discussion and refinement of each them as needed.
Please note this is based on my current understanding and personal assessment.
Purpose:
Create a first version of a safecoin wallet application with a reduced/minimum set of features which can provide us with a basic tool for testing safecoins (whenever available), help us with safecoin related designs and/or implementations activities, as well as being the foundation for expanding it to support more advanced use cases in subsequent versions.
Assumptions & Constrains:
- Given that the safecoin is still not available in the SAFE network, a tag type for StructureData can be elected to create the âsafetestcoinâ coins.
- Coin divisibility support doesnât need to be part of the first implementation, but the app shall be designed so it can support it in the future.
* A single wallet address (clientâs public key) is associated to a SAFE user account in this first implementation.
- The application can be a web app, a browser plugin, or a desktop application. This can otherwise be pre-defined and made explicit as part of the RFP, or it can be left open allowing the proposals to define it.
- The application should not (or it should be discouraged to) access the SAFE network through the SAFE Launcher API as it will not be the way forward once the SAFE Authenticator is in place. Using the safe-js library, or safe_core library directly, should be favoured.
Technical Requirements:
- The wallet application shall be able to handle âsafetestcoinâ coins transactions within the SAFE network.
- The application shall be able to display the walletâs âsafetestcoinâ balance.
- The application shall be able to display the wallet address.
- The app shall be capable of sending âsafetestcoinsâ to another SAFE wallet address.
- The wallet shall request just the recipientâs wallet address and coin amount to perform a transaction, any other information like a description can be requested as optional fields.
- A simple contact list shall be provided to store wallet addresses with a label.
- The application shall allow the user to manually enter the recipientâs wallet address or select it from the contact list.
- The app shall allow the user to see its transaction history.
- The app shall differentiate incoming from outgoing transactions in the transaction history.
- The wallet shall periodically sync up with the SAFE network, e.g. every 2 minutes.
- The wallet shall display an alert upon an incoming transaction.