Technology deep dive update
Our CTO’s first post updating you on our technical progress.
This post is the first in a series of in-depth updates from Gaurav and his team. We hope you enjoy these posts and the insights into our project. Let us know what you think! And now, over to Gaurav…
This week (w/b Monday 10th September) marks the first workshop and sprint for BABB’s software and architecture development.
In the last few weeks, the teams situated in Kiev and London have been busy articulating everything and have done a spectacular job at making sure the approach is comprehensive, efficient, and precise enough to meet the expectations of needs of BABB’s vision in a timely manner.
We’ve been updating you about what we’re going to build, however, little has been said (so far) about how we’re actually doing it. In this post I’d like to highlight some important aspects of the build process and the tools utilised in doing so.
This post is first in a series in which I will discuss the various details of process, to keep the community in sync with what’s going on the inside.
BABB’s team responsible for delivering most of the front-end code for iOS, Android, and backend logic such as APIs, architecture, blockchain, and security will be based out of Kiev via Intellectsoft. They will be working closely with myself and the product team in London. As of today, a freshly hired group consisting of 14 members are as follows:
- Senior project manager
- Two Business Analysts including Lead Business Analyst
- Blockchain and Java architect
- Three Java Developers including Team Lead
- Two Mobile iOS and Android Developers
- User Experience / User Interface Designer
- Three Quality Assurance developers including Automation Team Lead
Although the teams are in two separate geographical locations, we try to mitigate the sense of distance by regularly conversing via video chat, conducting daily video standups and by maintaining a portal-like continuous video stream between the two offices.
The monitor in the picture above is streaming video from the London office into Kiev and vice versa. If anyone feels like they need to converse with either team, they can simply walk to the monitor and start conversing.
We utilise an agile development process. Agile development is a set of principles rather than a process or protocol; guidelines to building something that closely adheres to a value system. Agile development is described in a manifesto published in here.
The main advantage is that it is widely recognised to outperform most traditional development in delivering value to the customer in the least amount of time and with as little risk as possible. These advantages can be visualized in the figure below:
Modular architecture and micro-services
BABB’s architecture is modular by design.This approach, of dissecting various logic compartments into small independent parts or microservices, allows for easier augmentation of separate logic. For example, new functionality within the app, new payment channels, or additional blockchain interfaces, could all be added without having to upgrade the entire system.
This modular approach also helps scale the system up or down depending on usage and onboarding of users in real time. Since each service is separated and scaled independently, the total cost for the system grows just the right amount to meet the demands.
Tools and technologies
‘Comprehensive’ is the word that comes to mind when describing our usage of tools. Similar to a lot of modern tech companies, we use a combination of internal software and third party software-as-service providers to build our solution. We keep the critical and intellectually valuable pieces of the puzzle in-house, and outsource the non-vital components. Our language of choice is Java due to its enterprise level optimisation and durability.
The tools we use span a myriad of functionality including infrastructure monitoring, orchestration, logging, performance monitoring and optimisation, code quality analysis, UI/XU testing, automated and manual testing of front-end and backend components, security, intrusion prevention, intrusion detection, and distributed denial of service thwarting.
Continuous integration and delivery
In order to ensure rapid development we use a continuous integration process for our development and quality analysis environments. Environments can be thought of as copies of the architecture used to gauge and test the behavior of new features without actually affecting users’ day to day operations.
For example, when customers use our app, they would be interacting with the “production environment,” which stands separate from our other environments such as ones used for development, quality assessment, and control. All the necessary steps that subsequently follow new code, such as building, security checking, unit testing and reporting are automated so that each new logic is streamlined, allowing for faster inception to release cycles.
Blockchain and byzantine fault tolerance
BABB uses a hybrid approach for our distributed ledger. We use the hyperledger platform to conduct transactions within our network and an ERC-20 token for our external transactions. The internal hyperledger platform enables a customizable and smart contract enabled network where stakeholders such as external banks and other participants are unhindered by the canonical transaction throughput limits of 3–4 tps in Bitcoin and 15 transaction per second on Ethereum.
Hyperledger’s customisability also allows for us to adhere to regulations and jurisdictional limits that network participants may demand. It is true to say that hyperledger by itself does not guarantee immutability, at least not in the same sense as a public proof-of-work type ledger would, however, in order to interface with the legacy banking system that demands features like transaction withholding, a compromise between a completely public and completely private blockchain is established.
Trust minimisation and regulation adherence
It is also true to say that public blockchains, being permissionless, censorship-resistant and immutable, are far superior in accomplishing a truly autonomous eco-system that gives the user ultimate control of their assets, funds, and transactions. Bitcoin, Ethereum, Zcash and others instill these value systems in comparable levels. However, none of them are accepted in a legacy regulatory environment. BABB has to tackle the challenge of giving the user control of their funds while being compliant with regulatory requirements, such as analysing transaction streams for suspicious activity and locking compromised accounts etc.
The easy road would be to implement a private blockchain that is as immutable as a whiteboard (not very immutable) and comply with legal requirements. In this scenario, the case for a blockchain becomes weak at best. Instead, we incorporate a bilateral approach, where a public blockchain-enabled token (BAX) satisfies the requirements of the byzantine fault tolerant system, while the private and federated internal blockchain incorporates as many of the values of a public blockchain as possible, while staying compliant with all relevant legal, regulatory, and jurisdictional requirements.
For example, BABB attains accounting immutability by embedding summaries of its private blockchain to a secure public one, i.e. Bitcoin and Ethereum. By routinely embedding the summarized data points to anchor the internal blockchain; removing a historical account of “what happened” becomes as hard as reversing a transaction on a secure public blockchain.
There is a lot more to come. I will be making regular updates about our progress as our teams get busy converting our proposals to code. There are a few topics that I have intentionally left out but will be discussing in more detail in the upcoming posts. These include:
- Releases and roadmap
- AI and biometrics
- Security and auditing
- Future of BAX and enhancements to the protocol and functionality
- Novel payment routes, integration of more cryptocurrencies and exchanges
I’m very excited to move forward with the development of the software and am even more excited about bringing into reality, innovation that will have real world consequences to deep seated problems. I believe our approach is one of a kind, in that we’re a fintech company that IS the bridge between the legacy banking eco-system and a newer cryptocurrency enable one.
I’m confident that with the talent, ethic, and drive exhibited by the team members in Kiev and the team in London, we’re set to disrupt. Please join me in welcoming our new team members and stay tuned for more updates in the upcoming weeks.
Check out our Instagram story for behind-the-scenes content of the dev team’s week in the London office. See you there!