Your mobile Portal to Ethereum
A modular platform to securely connect Ethereum-based Blockchains with mobile phones.
The Elements of the Platform
Ethereum Android was created to enable a broad variety of use cases where mobile devices need to connect to blockchain technology based on Ethereum.
The platform consists of 3 parts:
The secure server module connects any Ethereum-based blockchain securely to the smartphone application.
The software library offers an API to interact with the Ethereum Virtual Machine. This makes it possible for any app to incorporate blockchain functionality in it.
The mobile application makes interaction with any Ethereum-based blockchain possible. This means that a user can query the blockchain, sign transactions, and interact with smart contracts.
Secure Server Module
To support a wider variety of new and already existing technical infrastructure we extended the server module by extracting the security layer into a lightweight secure proxy server. As long as the blockchain node exposes a JSON-RPC the wallet app can communicate with it.
The secure proxy server in combination with our crypto library Seccoco guarantees that every connection between wallet app and blockchain node is end-to-end encrypted while Seccoco applies state of the art encryption to also guarantee the integrity of the application data itself on the device.
Our main priorities behind this approach were guaranteeing the integrity of the user’s data — especially any imported private key — while at the same time offering a great amount of integration flexibility to support the most common technical infrastructures.
API of the Ethereum Virtual Machine
Our Android library makes it possible to make secure blockchain calls with plain Java code from an Android application. A developer using the library does not need to know anything specific about the Ethereum implementation like nonce handling or serialization. Instead the library offers regular, known Java interfaces to work with.
The client app acts as a gatekeeper for apps that access the API. Similar to Google Play Services, the user, as owner of his Ethereum account, decides the level of access he or she wants to grant a specific app. Currently, every time an external app requests to make a blockchain call, the user needs to confirm it manually.
We plan to build in a certain level of automation, i.e. a user sets a specific spending cap for an app which is then authorized to send transactions on behalf of the user until the cap is reached. Especially 2nd-layer applications like Raiden and Plasma could benefit by this mechanism.
The client app
The wallet app is the heart of the platform. We worked long and hard to find a balance between security, decentralization, privacy, performance, and a good UX.
You might notice that some of these attributes are hard to combine. Decentralization and performance, for instance, or security and a good UX.
The wallet app was originally designed to offer the same amount of features as a web-wallet with the same level of complexity that comes with it. Users could quickly switch between Blockchains, set a custom Gas Price for transactions, and export unsigned transactions for external signing with a hardware wallet, for instance.
We noticed at an early stage that many users who were new to blockchain technology were overwhelmed and simply did not understand what they should do.
While some were extremely happy when they received test-ether because they thought it was the real deal, others were plainly insulting to us because they did not understand the concept of Gas Prices and Limits and thought that we were blocking their money in our app.
Currently, we are working on a major update of our wallet app which will offer a completely new UX while supporting significantly more powerful use cases.
As a part of the Secure Proxy, the Transaction Relay is a way to ‘outsource’ transaction fees in the context of industrial blockchain applications.
Here's how it works: When a user creates a transaction of any kind, the relay analyzes its content (sender, recipient, and data) and decides if this transaction is applicable for ‘fee outsourcing’ and, if so, to which service it belongs. The relay then directs a new transaction that amounts the required fee of the original transaction from the service provider to the user. Finally, when the user received the fee, the original transaction is submitted to the blockchain.
Decoupling the process of submitting a transaction to a blockchain made it possible to completely separate sending transactions and paying their fees. This way service providers that cover the fees can choose for themselves how they get reimbursed. They could deduct an amount of tokens from their users or handle the payment off-chain at any time.
Our goal here is to remove most of the friction users face when interacting with smart contracts. We think that this is a flexible and pragmatic approach that will help companies benefit from blockchains from a purely functional point of view while hiding its complexity from their customers.
Modularity of the Platform
The Blockchain is a powerful technology and enables completely new business cases. However, as powerful as it might be, it is still a very young technology and industries are still finding out how they could benefit from it.
To help blockchains get adopted in already existing processes and infrastructure we have build its architecture with modularity in mind.
A company that uses Ethereum Android can chose freely exactly which module it wants to have integrated to have a good fit with its existing technical and software infrastructure.
This way, we don't force a decentralized architecture but only use it where it can really make a difference.
Customers can decide for instance to have their own on premise storage backend connected to their app, while interacting with Ethereum's public chain and using their on premise account management solution for user management and authentication.
For more information about Ethereum Android, visit ethereum-android.com