Several weeks ago finance.vote made their first venture into the world of the multi-chain blockchain — our first destination was the Binance Smart Chain.
It worked fantastically for about 2 weeks and then things started to go wrong.
This article is an update for our users who are waiting for functionality for our BSC Vote Markets.
What are Vote Markets?
A Vote Market is a prediction market that works on quadratic voting. Rather than a standard over-under style prediction market system, our vote markets allow users to spend a budget of voice credits that are assigned to their Decentralised Identity Tokens.
This allows users to hedge their predictions across a list of tokens, weighted by their belief of the market performance, at market close a week into the future.
The result is a consensus sorted list of tokens. Our vision is that this data can be used as a market indicator in the future, but also expand into a rolling collection of the best tokens on every viable chain in the market.
What are Decentralised Identity Tokens?
These tokens are our Sybil Protection Mechanism. Quadratic Voting breaks if it’s easy to simply vote across multiple accounts. Our DIT system implies an economic cost to creating a voting identity, a cost that is time sensitive to buy orders. Every time a user buys an identity, the price of the identities doubles and then decays back to its starting price if nobody buys another.
Each identity is an NFT that carries both aesthetics and utility (see our Ethereum Identities for an example). The identity system carries with it the user’s voting history and their history of correctness in the market. It also forms a reputation ($V), which increases on correct calls and flows voting power to those users who have a demonstrable ability to consistently predict the market.
So What’s Up With Binance Smart Chain?
We migrated to this chain to provide a more affordable environment for users to play in our vote markets. And it is; voters have paid north of $150 in gas to vote on the Ethereum chain, whereas votes on BSC are in the order of $1–2.
It was working for a while.. At time of writing, users have minted 610 IDs on Binance Smart Chain and our adoption on our BSC vote markets was roughly 4X that of Ethereum. And then…
Our IDs stopped being detected by our dApp, making it impossible for users to vote through the front end.
So why is this happening?
Binance Smart Chain is like Ethereum, but is different in the trade-offs it chooses to reach scalability.
BSC chooses quicker block times of 3 seconds as opposed to Ethereum’s 12.
BSC uses larger blocks with gas limits of 60 million as opposed to Ethereum’s 12 million.
This is achieved by reducing its validator set to 12 staking validators using a ‘Proof of Staked Authority’ consensus mechanism as opposed to Ethereum’s ‘Proof of Work Nakamoto’ consensus system.
This modified trust model allows for far greater throughput of blocks and data; however, this comes at a cost.
DApps built on BSC require access to ‘nodes’ or computers that keep track of the past and current state of the blockchain.
This is important for dApps such as ours, which use the blockchain as our backend (database and API).
Being a fork of the Ethereum code base, like Ethereum, BSC has three kinds of nodes: Full Node, Light Node, and Archive Node.
For our ID system to work, we need to check back into the blockchain’s past to make sure that a user is actually holding a decentralised identity token, what their reputation is, and what their voting history is.
Like most dApps in the space, finance.vote uses thirty party providers for node infrastructure. This is natural because of the overhead of running a node yourself, both in terms of human resources and computing hardware.
Unfortunately, our node providers started running into trouble. The larger blocks and quicker block times meant that the computing requirements to run a node were much greater than those necessary for an Ethereum node. Even worse, as block times drift closer to network latency, the consensus algorithm can fail to, well, reach consensus.
Events are the lifeblood of dApps. They are a gas efficient way of storing historical data on the blockchain in a way that is invisible to other smart contracts but visible to off-chain systems such as user interfaces.
We use them extensively in our vote markets for everything from recording prices and votes to who owns what identity. In BSC, the node software cannot efficiently retrieve events deep enough in the blockchain. This renders our user interface unusable.
Even infrastructure like bscscan.com are unable to display transactions more than a certain depth in the blockchain. See here for example: https://bscscan.com/token/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c
What have we done?
We have been working with two node infrastructure providers this month to find a workable solution.
For the first few weeks, there were issues related to syncing archive nodes. Due to BSC’s extensive state history, this becomes an exceptionally slow process.
Both due to the BSC’s trade-offs and its viral growth (and therefore full blocks), the blockchain itself is growing so fast that the infrastructure is falling over under the load.
So far, no node provider that we have talked to has produced a solution that rectifies these issues and brings our BSC vote markets back to life.
’If you are a node provider that can solve this problem, please contact us ASAP.’
What’s happening now?
We have spent considerable time and resources on trying to fix what might be an irreparably broken system.
Our users are frustrated, but incredibly they have trained themselves to interact directly with the smart contract (using bscscan as their interface). Even in spite of a completely non-functional front end, we have received over 1200 votes on the top voted token in the last round.
We will now be consulting our BSC Citizens about the best way to proceed culminating in a vote. If necessary, we are open to abandoning Binance Smart Chain altogether and accelerating our rollout onto other viable networks such as Polygon.
If this happens, we will give users their respective ID number on our next chain free of charge. BSC remains functional as a simple trading venue for now, and BSC FVT alongside the existing liquidity on pancakeswap will continue to be available.
If a solution emerges (and this article should be considered as an open call for help in resolving this issue), then we will resume a full rollout and promotion of the BSC vote markets as our primary low cost vote market venue.
We believe that BSC has chosen an unsustainable approach to achieving scalability that renders more complex dApps such as ours unusable.
It is our belief that if the network does not transition to a more sensible configuration (slower block times for example), then BSC will shake itself to death. The hardware has limits as does the software used by node providers, and these limits should be respected when attempting to scale. Abandoning events removes a major functionality that dapps rely on and should not be done lighty.
There is a possibility that a newly designed space that is less reliant on events could emerge, and we would then consider a rebuild of our vote markets utilising this new paradigm.
We will discuss all possibilities with our BSC Citizens in the coming weeks, and we will carry out an influence.vote to decide finance.vote’s future multi-chain strategy.
TL;DR BSC rekt, slow down the blocks and stop buying dog coins.