Hello everyone, time for another Horizon State Development Update!
The last one was ages ago, and we haven’t released an update in the interim because we wanted to be able to share some awesome details about what we have been doing this last year, the current capabilities of the platform — and where we are going with it.
So first of all — the Horizon State platform is now operable! This means we can onboard customers and have them use the software to make their decisions and cast their votes. Obviously this is a huge milestone for the company (#buidl right??) and we are very proud of what we have achieved. Comments and responses from potential customers are very positive, all saying how beautiful the platform looks, and how easy it is to use.
From a technical perspective, the platform was developed and delivered as a web application rather than an app. The main reason for this decision was to allow a rapid pace of development and testing. Another reason for both CoinPocket and the platform to be delivered in this manner is to provide low friction for users.
The reasoning behind it is that users are less likely to download an app just to vote once or twice. This is proving itself to be the right decision, as some of the potential customers are wanting to link the application directly from their website or even map a subdomain to our application (in the format of https://vote.awesomecustomerusingblockcha.in) and not everyone is enthusiastic about asking their users to download another app on their phone.
Having said that — an app is very much on the Horizon, and we will start working on one in the next few months.
The technology stack we are using is mainly React, .Net, Solidity (for smart contracts) and some Java thrown in for specific parts of the system.
Speaking of the blockchain aspect of the system — as we mentioned before, our goal is to be chain-agnostic rather than tie ourselves down to a specific chain. This enables us to use chains that have different cost models, throughput and technical capabilities.
Right now, the platform works with Ethereum, NEM and Halo. All are public chains. Halo specifically is very interesting to us. Being a fork of Ethereum, it allows us to use smart contracts in the same manner that Ethereum does. However — using a different consensus mechanism, it is much faster than what Ethereum currently provides, and using a different incentive mechanism — it allows zero-cost transactions. This means that the part of the cost of the vote contributed by the actual blockchain (gas cost) is reduced substantially when using Halo. Unlike Ethereum, it is not affected by the load on the system, or the price of Ethereum. Unlike NEM it is not affected by the fluctuation of price of XEM.
The last part we want to talk about is the component-based setup of the UI (User Interface). We spent a lot of time creating a library of components — distinct UI elements — that are all interoperable, and all use the same ‘design language’. Having developed the system this way means that all components ‘change together’ if we need to make a visual or behavioural change to one or any of them. It also means that creating complex user interface elements is many times like putting together Lego pieces: every component we have can be attached to other components and ‘just work’.
Building our component library this way has allowed us to develop a new type of vote for a potential customer in a couple of days — rather than a couple of weeks. We can see the effect this has on our development speed, where the last pieces we completed were considerably faster to develop than the first few iterations.
Moving forward with development, there are a few interesting results counting algorithms that we need to develop for our customers. Complex types of voting like preferential vote or weighted candidates, need more than just the transparency and accountability that the public ledger provides. In some cases you can’t just tally up the vote and declare a winner — as there are other considerations to account for.
We will address the challenges and how we solve them in a future update.
That’s all from us! Have a great week!