Auro Wallet :Mina Custom token’s are coming!
Project Background
Auro Wallet is an open source wallet on the Mina Protocol, that supports MINA transfer, staking, zkApp interaction and other features.
Currently, Mina will release the token standard. As a wallet, we need to support the token standard as soon as possible so that users can view token assets and transfers conveniently and quickly.
We plan to support the asset display, transfer and token management (display, hide) feature of mina token. The token standard we will be building for is mina fungible token, which is also the token standard currently promoted by Mina.
Proposal Overview
Problem:
Custom tokens are an important feature of the chain. Although the Mina token standard will be released, no wallets currently support them.
Solution:
Auro will add support for custom tokens in both the Chrome extension & mobile App. Users can send, receive and see history of custom tokens.
The details of the token standard supported are as follows:
Impact:
- Users can easily view token balances and details, as well as perform operations such as transfers and payments.
- Existing or new applications can benefit from this feature.
Audience:
All Mina token holders. All Auro Wallet users who use tokens on the Mina.
Architecture & Design
Detailed Design/Architecture:
There are mainly client-side (including mobile-apps and Chrome extensions, which are used as extension below) and server-side.
Users do not need to add tokens manually. The current token assets come from the daemon node.Daemon node requirements for returning token assets are to inherit or implement the basic token contract. Users can manage the returned assets (whether they are displayed on the page or not) and transfer token assets.See below for details.
The following changes are expected to the architecture/components:
The client-side:
-
UI
- Display mina and all token assets balances
- Display the token information of the user, including icon symbol, tokenId, balance, amount, currency.
- Display user token transaction records
- The transfer page supports part and all transfers of main currency and tokens
-
Extension Background
- Manage the token information configured by the user, such as hide and display tokens
- Handle requests from the UI, including sign transactions, broadcast, loop transaction status, etc.
The server-side:
-
Daemon node service
- Return mina and token assets balances.
- Return token pending-transaction records.
- Return token information, such as symbol, publicKey, etc.
-
Token build service
- Mainly used to process the transfer token information submitted by extension, package params to zkCommand, and then return to extension, for sign and broadcast. This server is used because some security of chrome and android do not support o1js (shareArrayBuffer is disabled for security reasons), so o1js cannot be used on chrome extension or mobile app. It can only be implemented by external zkApp or service. Considering the experience and compatibility, the service is introduced into o1js as a bridge for extension and mobile-apps to use o1js.(Only token transfers need to use this service, mina transfers do not.) (MINA transfer only need mina-signer.)
-
Archive node service
- Get token transaction records from archive-node through tokenId and user-publickey, and return to the extension
Vision:
Auro Wallet’s vision is to be the favorite wallet for Mina Protocol users and developers, and to create more possibilities together with Mina.
Existing Work :
Production Timeline :
It is currently in the development stage and is expected to be released in June.
Budget & milestones
-
Deliverables:
- The extension supports custom token asset display and transfer.
- Mobile App supports token asset display and transfer.
- Both include test cases.
-
Mid-Point milestones:
- Token-building service completed
- Token transfer work well in the extension.
- Token building service performance test completed.
- Token transaction record.
-
Project Timeline : 5 weeks
- Extension support token: 3 weeks.
- Extension develop token feature.
- Token build service.
- token transaction history.
- Mobile App support token: 2 weeks
-
Budget Requested :
23000 MINA
-
Budget Breakdown:
- Product Manager: 1 Product Manager * 1 weeks * 30 hours per week * 30 MINA/hour = 900 MINA
- UI/UX: 1 Designer * 1 week * 30 hours per week * 30 MINA/hour = 900 MINA
- Front-end/Back-end developer: 2 engineers * 5 weeks * 40 hours per week * 45 MINA/hour = 18000 MINA
- Operation and maintenance: 1 engineer * 1 week * 30 hours per week * 30 MINA/hour = 900 MINA
- Backend server and other costs: 2300 MINA
-
Wallet Address:
B62qpDuvZmpWkt4hVqUvWQsHCw2F1hY2QXQg1dK5T8Er1313FQVAMaQ
Team Info
-
Proposer Github:
-
Proposer Experience:
- We have extensive experience in blockchain development and have developed auro-wallet.
-
Team Members:
-
Achievements:
Risks & Mitigations
-
What risks or dependencies do you foresee with building this project ?
- o1js needs to be smaller than 4 MB (required by Firefox).
- ShareArraybuffer used by o1js requires the runtime environment to support coep and coop, but the extension side does not support this environment.
- The token standard has not been fully determined, and the development progress will change with the progress of the token standard.
-
What are your migrations, if any?
- Use the server to build a token script, that is, start a backend service. The extension and mobile app submit the build parameters to the server. The server packages the transaction and returns the transaction body to be signed. After the extension and mobile app verify that the returned transaction information is the same as the information submitted locally, they sign and broadcast.
- Split functional modules to reduce functional coupling. After the token standard is released, minimize the affected parts.