As some of you might know my funding request for Ironbelly got approved and I will posting here bi-weekly updates about progress I’ve done on Ironbelly.
So, here is the first update:
Ironbelly was migrated to the latest version of grin-wallet on both iOS and Android. Because APIs and some libraries in grin-wallet were updated (like croaring) it took some time to get it up and running on both platforms again. This means Slatepack is unlocked for Ironbelly .
Completely new flow for creating transactions is in-progress. I hope it will be more straight forward for new users. Users also would be able to copy/paste Slatepack messages instead of only sending/receiving files. Because there is no “the approach” in Grin on how to build async/sync transactions in UI it takes some time to experiment with different approaches to get it right.
Regarding the release date I would like to finish the new flow for creating transactions and then cut v4 release.
Well, RFC0015 solves the problem of unifying the underlying transport layer for building TXs in Grin.
What I was talking about is the UX for building these TXs: how to unify synchronous and asynchronous approaches in the UI, how to guide user through both of them and so on.
Great news!
Just a question, does the slatepack transaction flow is the same of the grin-wallet? I.e., check for online TOR address before printing the slatepack block?
Eventually, yes, it will be as it is right now in grin-wallet. I’m evaluating the exact approach on how to get there and probably I’ll split this into two pieces: introduce async version only first (slatepack exchanges manually) and only then will add grin addresses via TOR.
Last couple of weeks I did some experiments on how best to structure transacting process using Slatepack and I hope you will like it.
The flow explained
Initiate Send. On the initial screen Alice enters an amount and choose fee she would like to pay. Then when she presses “Send” it would navigate her to the next screen.
Sending Screen. On this screen Alice would see a little guide on what to do next and her part of the transaction in the form of Slatepack. She now needs to share it as a text or as a file with Bob.
Initiate Receive. Button “Receive” in the bottom left was only used for information purposes, but not anymore! Now it would navigate Bob to “Receiving screen”.
*Receiving Screen. Here Bob sees a little guide and the text area which he can fill manually, paste from clipboard or open a file (depend on how Alice has shared her slatepack). When Bob enters the slatepack from Alice he press “Generates response” and shares it back with Alice as a text or as a file.
Finalizing. Alice receives Bob’s slatepack and enters it on the “Sending screen”. Then she presses “Finish transaction”.
Posting. After finalization app would automatically show a confirmation dialog after which transaction would be send to the node.
Also, if a user opens a slatepack from another app (as it is the only way right now) in Ironbelly it would automatically navigate to the needed screen!
Little Demo
I’m doing final tests at the moment and hope this or next week this functionality will be in App/Play stores!
What’s next?
My next big goal is implementing Grin addresses in Ironbelly!
Besides here is a couple of things I’ve been doing as well or will be doing:
New website
Bringing back to life end-to-end tests, so I can do less manual testing and iterate faster.
So, recently version 4.0.0 was released to both Android and iOS.
What’s new?
Slatepack support via files or copy/paste.
Transation flow is redone, now it’s more intuitive (I hope) and has more guidance.
Part of the app, when wallet is created is redesigned.
Analytics was completely removed per community request
Default Ironbelly node was changed to https
Small UI / UX improvements
What’s next?
Right now I’m concentrated to bring TOR and Grin addresses to iOS, later to Android. I’ve decided to start with iOS, cause Grin++ team is working on bringing it to Android first, hence Grin community could have earlier Grin addresses support for both platforms.
My pace is currently somewhat slow because my laptop got broken recently and I’m using my old laptop till it gets fixed. It is not really good for this type of depelopment, though, but do not worry, I will compensate for this time later and even after my funding period will be finished. I’m still commited to deliever the features I’ve decribed in the proposal till the next Hard Fork.
Thanks for reporting bugs and submitting feedback!
I think the primary innovation here for grin is to be able to send slatepacks over animated QR codes (https://github.com/divan/txqr). Almost every phone has a front-facing camera, so the transport medium is there. This could be easier than juggling files on phones.
As a user, I’d expect that if I point my front-facing camera at another phone, the two phones would able to communicate by reading each-others animated QA codes. The phones will vibrate to give feedback once the interaction is complete.
NFC would be great for devices that support it. I would develop the QR scanning first and then NFC second. Admittedly, NFC would be the most ideal user experience.
Last couple of weeks I’ve been working on adding Grin addresses to Ironbelly. I’m glad to share with you all that now it’s working on iOS and Android support is coming very soon!
Right now I’m polishing a couple of edge cases and after that is done I will release 4.1.0 with Grin Addresses support for iOS.
As of now both Android and iOS latest versions support Grin Addresses and Slatepack
Besides there is a couple things I’ve packed into the latest release as well:
Automatic background update of the transactions state, so no need to pull down manually!
Slightly different unlocking wallet mechanism under the hood, which would allow to speed things up a bit as well as removes the need to store password in JavaScript environment in the upcoming release.
Android should have a slightly faster Fingeprint unlock mechanism.
Implemented automatic screenshot taking before each release (Apple rejected a build recently because the screenshots were not up to date)
And as always minor cosmetic lift-up and optimizations
What’s next?
Here is my current roadmap:
Bring QR codes for encoding Slatepacks and Grin addresses (should be in the next release)
Minimize places where sensitive data is exposed to the JavaScript runtime (continue my effort, which I’ve started in the current release).
Introducing PIN instead of a password, which would allow to increase level of security and create a better UX for unlocking.
Ability to change PIN
Also, I’m planning to release version 5.x of the wallet with a complete support of the upcoming hardfork on time!
Deprecation note!
After the upcoming hardfork Ironbelly would not support http and file transactions in favor of Grin addresses and Slatepack.