The customer is engaged in building a freelance marketplace platform that fosters employers and freelancers to engage seamlessly with each other. It allows any two people to directly connect, form a peer-to-peer contract with escrow, and get paid nearly instantaneously anywhere in the world.
The Existing Solution
We had earlier engaged with the company to build an omni channel experience for its users that supported both web based and mobile based solutions.
- The solution was modelled as a Backend-as-a-service using the Micro-Services concepts based on the Lagom framework.
- The back end was modelled using Cassandra.
- Kafka Queues were used to manage the load of messages to be processed.
- The solution could be hosted on a Bare Metal Server or over a cloud and could be scaled out on demand.
The company was engaged in building a Blockchain infrastructure of its own, however at the point of delivery this framework was still in development phase. The company was looking to build a gateway that would support the exchange of tokens (Ethereum) to facilitate transactions.
- The solution was modelled using the previous implementation to provide for an omni channel experience over the web and mobile.
- Changes were required on the client side to support SPV wallets and to be able to store Crypto assets.
- The service layer was not used in the implementation where the communication to the server was managed by a redirection call from PLAY to Web3J. The service layer here proved to be an overhead, however going ahead all the calls could be managed via service layer.
- The user registration was modelled on the client side and the server side.
- INFURA API’s were consumed on the server side to manage transactions and for syncing with the nodes of the blockchain.
- The solution provided for was build keeping in mind that we would need to migrate the same to a proprietary blockchain implementation.
- Ethereum was decided to be used wherein the tokens could be exchanged using the smart contract implementation of ERC-20 standards
- Wallets were created on the Ethereum platform to facilitate the transactions among the various stake holders (a piece of software that allows you to store your funds, easily conduct transactions and check your balance whenever you need to)
- Client-Side Light wallets / SPV wallets (Simplified Payment Verification) were used to sync up with the blockchain thus saving on time and space. The Crypto assets and private key are stored locally on your device. EthereumJS were used to facilitate user sign in and registration.
- Server side – Web3J was used on the server side. Calls to INFRUA API’s were managed from the server side. User registration was also managed from the server side.
- ETHER SCAN was used to monitor the state of the transactions (Etherscan allows you to explore and search the Ethereum blockchain for transactions, addresses, tokens, prices and other activities taking place on Ethereum (ETH)).
- TOKEN BALANCE was used to calculate the token balance for a given user
- Transaction History was fetched using ETHER SCAN
- COINCAP MARKET was used to fetch the current market price of the tokens
- The existing accounts were managed (import and recovery) using KEYSTORE FILE, KEYSTORE CONTENT, PRIVATE KEY AND MNEOMONIC PHRASE.
- The transactions were initiated using the QRCODE or the PUBLIC KEY and were modelled using the Ether transactions using the ERC-20 Standards
- Testing was done using ROPSTEN using testnet.