Architecture

The backbone of our application is built on Ethereum and IPFS.

We have written smart contracts to represent individual users (identities), as well as different type of records that may be associated with users: references, membership of professional associations etc. On top of this, we have a main contract, which keeps track of registered identities and records and emits events to signal to the API that a new contract has been registered.

To store user information and reference contents, we use IPFS — the fields in the smart contracts hold IPFS hashes and the API transparently retrieves the content when these fields are accessed. As an experiment, we implemented basic public key cryptography using the W3C WebCrypto API — which was surprisingly easy to use. You can use the BitKariero API to provide encrypted references to other users. Key transfer is done through dedicated pubKey fields in identity contracts.

Our BitKariero API is written in Javascript and makes extensive use of the popular Embark framework, which provides bindings for communicating with local Ethereum and IPFS nodes. For the user interface, we used React and Semantic UI.

Class Diagrams