We’ve heard about “blockchain” and many of our clients have been asking about it, too, because of the buzz around this technology. So Softjourn decided to do some research on blockchain and gain some experience with it.
What Softjourn has come up with?
The Softjourn team discussed the best way to start and how we might implement blockchain technology, and decided to develop an in-house loyalty system based on cryptocurrency with smart contracts. This internal currency, which we call “SJ coins” can be spent on goods sold through vending machine, for gym and water park passes, and more, eventually. Our SJ Coins project is starting with two phases:
Phase 1: Research
Before starting, the team researched available blockchain and smart contract systems and reviewed several of them: Ethereum, Open Transactions, OpenChain, HyperLedger Fabric, and Eris. We found Ethereum to be the most developed and production-ready, but we chose not to go with it because of their proof-of-work algorithm and the requirement to have mining nodes.
Open Transactions, an off-blockchain solution, has the capacity to manage assets via digital notary and implements smart contracts. Unfortunately, OT was not production-ready and current development was focused on digital assets rather than smart contracts.
The OpenChain system had the simplest interfaces and was very easy to use, but it has no smart contract capacity at the moment.
The Linux Foundation’s HyperLedger Fabric was available as a developer preview and worked just fine as a pre-built image in IBM BlueMix cloud. However, the building system has issues when running on-premises, which was our preferred way to implement the project.
In the end, we chose Eris, renamed into Monax, for a permissioned chain with rich smart contracts based on Ethereum technologies. Monax moreover has very good documentation and is very easy to set up and run.
Phase 2: App development
The next step was to buy a Saeco vending machine without any payment system. Instead of the standard payment system, we installed a Raspberry Pi single-board computer and our developers developed a hardware keyboard emulator to control the vending of goods through the web service. Raspberry Pi runs a Java-based client for Eris blockchain to run smart contracts, to get the machine account token balance, and to initiate transfers and communication with the goods inventory service.
At the same time, the Softjourn team developed iOS and Android mobile clients to operate as token wallets and vending machine inventory browsers, with the ability to buy goods from vending machines with a token. On the server side, we have inventory and token distribution services. The inventory service tracks the vending machine goods load, while the token distribution service acts like a smart contract token treasury to send coins to system users as a monthly loyalty reward and to collect coins from the vending machine.
Future Plans for SJ Coins
During next phases, Softjourn plans to build a company management system based on smart contracts to motivate people to gain more experience and create value for customers. This means that every employee can earn coins that they can spend on goods in the vending machine and, eventually for services outside the company, like tickets to the movies or the water park, gym passes, and so on. Overall, we plan to extend the system to run on programmable skill points and involve contracts for Softjourn employees to focus on professional development, greater expertise and a better capacity to gain customer satisfaction.
Softjourn is now negotiating to extend its SJ coins system to local coffee shops and to provide discounts on various purchases. The idea is to replace plastic discount cards with a mobile application and allow people to be compensated for their custom at local coffee shops.
Another idea is to use coins for crowdfunding municipal social projects organized by a non-profit organization called “Teple Misto” in Ivano-Frankivsk. SJ coins would be sent in support of a particular project and then converted into real money to fund the project.