æternity Foundation Grant Report: Stoyan Vasilev

Stoyan Vasilev
aeternity Foundation
5 min readFeb 17, 2020

--

Introduction

Over the period of July 1, 2019 through middle of January, 2020 I coordinated the development of the æternity Base æpp Wallet & æpps Browser. The Base æpp is deployed to as a webapp to base.aepps.com (with different UX in mobile and desktop browsers), as well as to the iOS App Store and Google Play Market. Additionally, I wrote and submitted the æpps Metadata AEX, with the help of Denis Davidyuk. The rest of this post highlights some of the functionality we developed and released in the period mentioned above.

AENS

Perhaps the single biggest set of functionalities we developed and released in this period is the support for the æternity Naming System (AENS). The AENS was specified on the protocol level by Michal Zajda. I interpreted the specification, designed the user experience, and coordinated its implementation in the Base æpp. This includes the following functionality:

+ Send to name
+ Instantly claim names that are 13 characters or longer
+ Start a name auction
+ Participate in name auction
+ View name auctions sorted by ending soonest, highest bids, character length
+ View your own bids and names
+ Transfer of name
+ Change of name pointer
+ .chain extension gets added automatically to input fields
+ In aepp notifications related to bidding

In addition to coordinating the work of the Base æpp dev team, I worked with John Newby to make sure the AENS end points from the æternity Middleware (which the Base æpp relies on to support the AENS) were implemented on time. Additionally, I worked with the JS SDK team to sure sure any JS SDK dependencies are present and working as expected.

Internationalization

We abstracted the language/text in the Base æpp to separate files and implemented Chinese, Russian, and Spanish versions. Adding new supported languages is now a trivial task.

aepps Browser

Handling account management on behalf of æpps and making sure the æpps can run through the Base æpp is the most complex part of the Base æpp. The æpps browser landing page was part of the Base æpp code. We abstracted the browser home page to a separate HTML view (powered by Vue.js) and GitHub repository, where anyone could submit a pull request (to have their æpp included in the list).

The browser was also a cause for run ins with the Apple App Store. We removed the browser functionality in the native iOS app to make sure further releases are possible in iOS. See the Deep Links section below for alternative options for account handling on behalf of æpps.

æpps Metadata AEX

æpps, wallets, and listing services need a metadata format to share the information about each æpp. With the help of Denis Davidyuk I wrote æpps metada AEX and facilitated its movement through the AEXpansions process. Together with Denis we wrote the reference implementation. The æpps browser listing page currently takes advantage of the æpps metadata format/AEX.

Deep Links

The tight coupling of wallets and æpps in my opinion is not an optimal approach. It could create dependency limitations/challenges for developers and is also problematic for entities like the iOS App Store. We prototyped and tested a universal approach to account handling (by wallets) on behalf of an æpp. The approach is based on the deep links method and works like this:

+ By default æpps are assumed to support a set list of wallets
+ æpps developers can overwrite this list and choose which wallets their æpps support
+ When account access is needed inside an æpp a context-aware (mobile or desktop) modal panel is displayed, where users choose which wallet they would like to use to connect to the æpp.
+ A developer mode where all available options are rendered (and not filtered based on mobile or desktop context) is available for debugging.

To my knowledge this is the most resilient and robust approach for handling accounts between wallets and decentralized applications running on any blockchain protocol/ecosystem.

Secondary Currency Display

The Base æpp now supports rendering amounts (balance, transfer, etc) in a secondary currency (fiat or BTC). This makes it easier for users to understand what value they are working with in any view/screen (where value ammounts are displayed).

Redeem Paper Wallet Balance

We took the existing code written quickly in the past for the purpose of generating paper wallets, modified it, and made sure the Base æpp supports the redeeming of balances coming from paper wallets (which are automatically generated).

Additional Functionality

I coordinated the development and release of many enhancements. I cannot list most of them. Here is a small list of some of the more significant ones.

+ Desktop version: added connection status, added send to name, added version info
+ Info/onboarding overlays added to many views to increase usability
+ Info screen added to Settings
+ Smaller enhancements: decimal keyboard for input fields related to balance, confirmation when creating additional accounts, language enhancements

æpps Stack

I coordinated the reliable functioning of the Base æpp, which very much depends on the JS SDK, as well as the Middleware. This involved making sure the JS SDK inside the Base æpp was updated on time to support hard forks as well as any other new functionalities, which æpp developers need. Additionally, I made sure, when an issue with the Middleware was inhibiting any Base æpp functionality, it was addressed quickly.

Process

In addition to planning the functionality mentioned above, coordinating the implementation and releases, I handled the coordination of agile practices like sprint planning, daily meetings, release planning, sprint retrospectives, etc. I also wrote the release notes for all three platforms.

More Information

For more detailed information of the functionality released in the period discussed here please refer to the release notes for versions 0.8.7 through 0.21.0. You can learn more about the Base æpp and its development process in the video above.

Support

I coordinated the Base æpp support across the æternity Forum, the dedicated Base æpp Telegram group, and input we receive directly.

--

--