Wanted to share my experience with blockchains with you. Perhaps it could lead to a simpler solution for the cooperative.
From the mid-may to start of october I partcipated in a blockchain startup project as a lead developer. The aim was to move significant parts of a non-bank loan market trade to blockchain. It could dramatically lower compliance and due diligence costs and increase velocity.
Before that, my knowlwdge of blockchains was very sketchy, but the project was very interesting. We made a theoretical data model based on our knowledge of databases, and started to seek the blockchain platform that could be used as a tool for our model.
To keep a long story short, after a month of generally wasted efforts our first conclusion was:
1. There is too much hype and not much substance in all these blockchain platforms. Even in the most famous ones.
Marketing rules the world. What we really needed was to define our own data field in records, or at least toss more or less lengthy texts into some field that can be used to store json. But all the blockchain tools we tried out were very similar to bitcoin in one regard - they all were obsessed with storage and creation of coin type assets. If fact it really is a single field that stores a floating point value and thats it, if we do not take hashes and other infrastructure fields into account.
Somehow it seemed natural to us that developers should be able to define their own data structures, when setting up a blockchain database. We were wrong, and this mistake cost us a lot.
The only tool that promised to solve our problem was BigchainDB, but that was not usable yet in the mid-2016.
So, the next conclusion was:
2. Current blockchain platforms do not allow to define project-specific data fields.
Perhaps some will soon enable us to do it. Why so much care for data fields? Because correctly designed data structures allow to write less code.
We were on tight budget and had very little time. So we decided not to do anything with smart contracts - because:
- smart contracts are a hype and it is hard to separate truths from marketing, especially in short timespan;
- smart contracts can potentially hang up entire chain (we did not test though);
- smart contracts are somewhat similar to multi-threaded programming - hard to master and use properly.
We started to seek some platform that can be used to define our own assets with own data fields, even if it comes in some clumsy, convoluted way. And we found it: Stellar
The rest is another story of Electron application, Javascript and so on, but at the end we did it. We had to use Stellar in non-standart way, that is true, and we made it without smart contracts.
Stellar seems to be very suited to quickly program RH shares. It has the following developer usability points:
1) Stellar if free to try and test, and it already has an online-sandbox for playing and testing. We used it extensively.
2) Stellar has interfaces to several widely used languages, including Javascript, Go, C#, Python, Java, Ruby (https://www.stellar.org/developers/reference/). APIs are substantially documented, it is open-source.
3) One can make accounts, test out operations and create assets without coding, using only online tools at the website. This allows to quickly test models and assumptions.
4) Testnet is basically free while operations in the real net cost negligible amounts of lumens (XLM).
5) It is almost tailor-made for cooperative shares, as one can create an asset that can be moved only between predefined accounts; to set up the system correctly, one does not need to use smart contracts, but to configure it properly. In light of smart contract rawness and complexity, it is a big plus.
6) One can make his own system in the stallar chain, that is visible for others (including market regulators) but not usable by them.
7) Accounts have a very flexible permission system. Partially signed transactions can be moved offline, signed offline and after signing, imported back to the system. It allows to use the system via postmen, travelling notaries and whatever else. Multi signatures can be used for multi-side deals.
8) The developers are very helpful and forthcoming, this is from our experiance. One of them was a leading Ripple developer (Jed McCaleb).
9) Operations are fast, block time is 2 seconds. Almost instantly.
My humble advice is to use Stellar instead of Ethereum and smart contracts. In it, shares can be simply defined as a set of rules,without smart contracts. And you will spend 1 week for backend, most of it learning Stellar. Frontend probably is already ready.
Blockchains are developing very fast, and there is much chance that already a year from now there will be much better tools, so you will have to rewrite it anyway.