I have been researching for some time as to which blockchain technology I should choose to handle certain aspects of TAG, saving us time, money and allow us to expand. There are a few open source solutions out there, such as Hyperledger Fabric, R3 Corda, Openchain and so on, but eventually I chose Multichain (multichain.com) since it is fairly easy to install, uses standard Bitcoin libraries and is suitable for what we need. That is to handle multiple currencies, KYC, proof of existence, notarial and voting services etc..
I installed it on 3 servers that we have running already on Amazon AWS, although it could run on one machine using dockers.
I set up a practice chain using the Getting Started tutorials (https://www.multichain.com/gettingstarted/) and I am still using it to play around, getting things right before adding stuff to other chains.
Most of the default settings in the params.dat for each chain I have left, except I changed the number of empty blocks created after a transaction from 10 to 0, and for Voting I changed block times from 15 seconds to 60 seconds, as we may have a few more nodes acting as miners and this will allow for latency between them.
So far I have created a few chains, so here they are and what we will be using them for - I will be creating blog postings for each to cover a bit more detail.
KYC (Know your customer) Chain
Publishers (such as ourselves, banks and others that perform KYC for customers), do the KYC and store documents pertaining to each customer on their own systems. Once approved, they post a stream item to the chain where the Key is the hash of full name and email address and the Data is simply the text that shows status. We will probably use KYC, KYC1, KYC2 for individuals and KYCA, KYCB etc to show levels of KYC. We also publish the address of the publisher with their company name in Hex format. Other companies can now search for a user if they know the name and email, and can check status. If found, and happy with the status, they can decide if that is good enough and no need to do the KYC again.
Multiple currencies are created as assets in this chain, and Tagcash uses the API to interact with them. Customers will have the option of creating their own private keys and managing their own balances or they can leave them with us. Tagcash acts as custodian for any Fiat money exchanged for the digital version, so at any time a customer can exchange back. Any partners that want to join the network can be added by Tagcash, and can then run their own nodes, with their own customer balances. Customers from different companies using the system can transfer funds to each other using their public address to send money. Having multiple currencies in one chain enables atomic foreign exchange conversion.
Similar to the Fiat chain this will be used for our Trading apps, or for offchain transactions (on chain with us, but off the public chain). This is especially useful for microtransactions where the transaction fees are of consideration.
Custom Currency Chain
Tagcash merchants can create their own currency for rewards, in house use, crowdfunding etc. They control who can send or receive, and can extend their chain to their own partners for control, mining or validation. Using Tagcash NFC, merchants can also transfer funds to NFC bands and cards for offchain, off internet usage.
Supply Chain / Provenance
Tagbond is an app and platform for tracking data on objects. Customers can add their own data objects (products usually) and then add timestamped metadata to each (Notes, files, graphics, video, voice, checkin/out and more). We are in the process of storing a hash on the blockchain for each piece of metadata added so this will be very useful in supply chain management. The chain will have its own currency asset called BOND, so tokens can be deducted each time a piece of metadata is added. The same app and system will be used for Provenance tracking of personal high value items, such as fine art.
This chain will work in conjunction with an app currently in development for voting. This enables a campaign to be set up that authorizes voters to spend their votes for candidates. Voters are given 1 or more units of a voting asset (1 asset per vote campaign.) and can transfer to their candidate address. The votes are then added up to reveal the winner. Options will be 1 vote unit for standard voting, or range voting where the voter is given 10 vote units and they can transfer to different candidates as they prefer. There is also a burn address if they do not want to vote for anyone.
TAG77 is a event and ticketing site, linked with Tagcash Wallet for giving and redemption of tickets (free or paid). To prevent fraud and counterfeiting of tickets, each ticket issued will also be recorded on this chain, with redemption also recorded. The ticket ID will be set as the Key and the status of the ticket recorded in the Data section of the stream. The latest Key status is used to check if a ticket is still valid.
This chain will be used with the TAG Notary app we are developing to prove existence of documents or files, signed by digital Notaries.
Triple Ledger Chain
In the Philippines, an official receipt (OR) needs to be issued for every transaction made by a company, often using printed Official Receipt books. This proves difficult for apps and internet based transactions to do - the TAG solution stores a hash of each transaction, connected to an address for that company. Companies can submit their records electronically and government agencies can easily compare them with hashed records on the blockchain. Companies pay using the built in digital currency to pay each time a transaction occurs. Partners can join the chain as miners if they want to earn from the transactions.