This article was first published on: IOTA - Medium --
Regular visitors to the IOTA Discord will be well-accustomed to this phrase.
Trinity is the long-awaited user-friendly IOTA wallet that has been in development for the last few months. What started life as a little glint in my eye — okay okay, Charlie Varley may have played a small role here too 😄 — has blossomed into a project which has gained the support of the whole community.
The development team was aided by members of the community, who raised the mobile wallet to new heights, and who began working on the desktop implementation. However this project was run as a loosely controlled community project, and this has led to delays in delivering the final product.
This is where I put my hands up and take responsibility. Let’s call this article my catharsis.
After Action Review
Looking back, there are factors which led to delays.
- Pulling a Travis, the temptation to own the whole design process (see here, here and here). Luckily we have had some talented designers help us along the way, to mould these early designs into what we hope will be a pleasurable experience for all users.
- Standardisation of coding guidelines. In a drive to increase participation, there was a lack of standardisation. This led to technical debt which had to be made up.
- Use of the React Native / React framework. React Native does not give great performance off the bat compared to native code, therefore a lot of time has been spent working around performance limitations. However we feel it will pay dividends in the long term as it will be easier to make cross-platform updates.
- Communication — probably the most important factor! After a good start, we subsequently failed to communicate our timelines well. We have tried to improve over the last few weeks, with weekly updates of progress, but yet overall timelines have remained elusive.
But we will learn from these issues.
Combine this with the challenges of developing on a rapidly evolving technology, and the added challenges of a permissionless architecture, and I think we underestimated the size of the task from the outset!
A New Path
By January we had made a lot of progress. Enough for The IOTA Foundation to take the Trinity project under its wing and begin an official alpha test involving just over 250 users on iOS and Android. Although there was a great sense of satisfaction and personal validation, this was only the start of a bigger journey.
- There was now an increased focus on safety and security. There had also been an increase in the number of non-technical users entering the IOTA community. This meant that the wallet had to be foolproof, from both a frontend perspective and in terms of backend security features.
- We were now entering the territory of app store approvals in a constantly changing regulatory environment.
- The technical debt we had built up required a refactoring of the code. We have also decided to move some of the logic into a separate module, to allow community reuse for other applications — but this of course requires further work.
This redesign and refactoring was a heavy task to undertake, but one which was imperative, prior to undergoing a safety audit, and prior to moving to a public beta testing phase.
In order to protect our community, we feel that we must audit the wallet prior to beta release as well as a repeated audit prior to full release.
We are pleased to announce that the audit process has begun, led by accessec GmbH. This audit will be thorough, examining all features of the app and its dependencies. In consultation with accesec, we estimate that this process will take 6–7 weeks, however these time frames may grow or shrink. We hope that you will bear with us during this time. We will continue our weekly updates and endeavour to be more transparent with our expected timelines, though these may be very difficult to predict.
When this audit is complete we can move to a public beta test where everyone can try out the mobile wallet via the official app stores, without any special invitation. At this time, we will also release the full audit report and the complete source code for public review.
We have engaged with app stores to establish official IOTA Foundation accounts, under which we will publish the Trinity wallet. This is an ongoing process, but we hope this will further increase user confidence in the wallet.
Desktop alpha testing is hoped to commence in under 2 weeks. As before the alpha test will be for a small invited group, but progression to open beta testing is expected to be more rapid, given the cross-platform approach we have adopted. Again security audit will be performed prior to beta and full releases.
We thank you for your patience and understanding.
The Trinity Team
At the time of beta release, the expected feature list is as follows:
- Statefulness — the wallet will maintain a record of your transaction history -and balances, thereby vastly improving loading time.
- Seed storage — the wallet will securely encrypt your seed.
- Seed generation.
- Multi-seed support — multiple seeds can be added and managed by one app.
- Snapshot transition — the wallet will handle snapshots. No more 0 balance post snapshot.
- Ability to print a paper wallet.
- Price graph.
- Address QR scanning.
- Support for many languages.
- Standard and expert mode — additional features and information displayed to more experienced users.
- Local and remote PoW.
- Theme selection — choice of 8 themes.
- Fiat conversion across a range of currencies.
- Automatic fiat conversion on send — ability to send as fiat or iota value.
- Two factor authentication — TOTP for use in apps like Authy and Google Authenticator.
To follow our current progress, join us on the #trinity channel on IOTA Discord. Our last alpha update had the following changelog:
- Add iOS native address generation to snapshot transition function
- Finish implementation of new seed encryption schema
- Improve two-factor authentication key encryption
- Hide send max toggle on 0 balance
- Update loading animation
- Increase text input touch radius
- Add custom toggle component
- Add checksum to seed reentry page
- Fix 2FA crash
- Fix Android icon misrender bug
- Fix denomination reset on send transfer error
- Fix message display bug in history
- Replace app icon
- Update settings UI
- Update progress bar UI
- Update manual promotion/rebroadcast UI
- Wallet setup UI overhaul
- Add page transitions
- Add transaction deep-linking
- General bug fixes
- Fix slow load bug
- Fix slow transaction history update bug
- Fix number/symbol account name bug
- Add first unused address to store on initial load
- Add support for Greek
- Add new translations
- Code refactoring
- Add test coverage
- Update light and dark themes
Todo (not exhaustive):
- Android native address generation
- Further code refactoring and test coverage
- Other bug fixes
- Adjust tryte conversion scope/optimise conversion
- In-app bug reporting
The following videos outline some key wallet features including onboarding, sending transactions and settings. We hope that this gives our community a good indication of our direction of travel.
A teaser of the desktop client and evolving changes to overall Trinity design 😱.