Non-determinism, in commerce relationships, involving trade, is a problem. It will be frustrating, stressful, and worrisome. Guess what, people will be wanting to use cryptos on transactions, investments, that would equate to “dust and lint” on the blockchain today. This is a problem, call it the “synchronized weaver’s problem”. The complexity of the weave gets worse, and adding weavers makes the problem only worse – each weaver must duplicate, each wants to discover the “next best” weave, and all must duplicate the next best weave. It might be “copy paste” simple, but it is still network traffic.
People want to use a tool to buy something, and not be rejected – but sellers, as well, don’t want to wait days to “see their money”, and then be scared something happened. Sellers have to plan, and that includes small “mom and pop” shops that will likely spend amounts in fractions of coins. It is this, the process, a very non-deterministic one, and some of this can’t be avoided, this variable behavior. But it doesn’t mean the “whole blockchain” must be treated as a whole. The transactional space can and must be partitioned – it is how better performance will be achieved. This is what I call the partitioned-blockchain. In essence, every “coin” is a subnetwork of transactional miners, motivated to earn fees, and to improve the performance of the network.
We will encode the miners into the partitioned chain, so that there is a ledger of performance, accuracy, truth, because this MUST BE transparent – no room for secrets here.
But ideas have a genesis …
In recent days I’ve been testing our Word Press site’s eCommerce plugin – WOO Commerce, and the crypto plugin that supports Bitcoin and other cryptos for our site (GoURL.IO) – we are incrementally testing, using Bitcoin first, but then we intend to branch our support to as many cryptos as we can. To say it has been a frustrating process would be an understatement. I understood, going into the process, that Satoshis, or fractions of a bitcoin or crypto generally, have a lower priority for transactional clearing than the “full coins” – and the crypto community has been aware of this. The big “branch” in Bitcoin recently, dealing with seg-wit (segregated witness) and the expansion of the block-size have been approaches, responses, to the speed at which the p2p blockchain network has been clearing transactions.
It is not required that anyone state the obvious: for cryptos to become widely accepted, the blockchain architectures will need to become better at handling “fractional units” of coinage in what I would call typical use cases – people buying a coffee, a burger, a few items at the grocery store, all of which would add up to a fraction of a Bitcoin and not an entire coin.
Furthermore, the non-determinism in terms of “final clearing”? – this is a serious problem. It might be an unavoidable problem as well – because of the nature of the blockchain. But, if you make transactions the “unit of value” on the chain, and you partition the coin-space allowing nodes to specialize in mining separate, distinct, coins? And you incentivize network performance, getting fees, over simply mining? Then it is probable an important speed gain can be achieved for small merchant transactions.
In the current blockchain world, transactions never “starve to death”, but they do spend “time in Venezuela”, so to speak, and they’re never quite sure when they get to go home.
Starvation, in the human world, is an obvious calamity – people need food, and without it, eventually, the human will die. In the computer science world “starvation” usually refers to a specific problem in queuing theory.
A queue in computer science is a FIFO list – first in, first out. This means that if a queue represents a sequence of transactions, ceterus paribus, the first transaction to appear is the first to be processed – and this is, in mathematical terms, a deterministic process. Determinism meaning that one can predict, to 100% accuracy, the behavior of a simple queue.
But queuing theory is about more than simple lists – and typically, in the “real world”, queues use heuristic functions to “shuffle” members of the queue around, so that the most important items are moved to the front of the line. If your item, or object, or entity, is not important? – barring rules that break starvation, your object will starve in queue, forever waiting to be addressed, but never having enough value to move to the front of the line. This is called priority queuing.
The processing of transactions in the blockchain world currently works more like a priority queue – and this is partly because miners are “competing” to extend the blockchain and adding transactions to the each new block as this occurs. Prioritization, in the blockchain currently, is mainly about “size of transaction” – i.e., if you’re moving whole Bitcoins around, then you can expect relatively good performance in terms of the clearing process. If you are moving about Satoshis to buy coffee? – the timing for transactional clearing is non-deterministic and far from immediate (and that’s a nice way of putting it).
This is one of the issues in play – small scale transactions suffer some “starvation”. There is no evidence that the starvation is permanent, from what I’ve seen – but there’s reason to believe that transactions can “bounce off” the chain, returning to their wallet, because no success was found in integrating the fractional amounts into a new block.
If the starvation was deterministic or stochastically “guessable”, meaning one could reasonably predict transactional clearing time using probability theory, then it would be less noisome – and potentially there would be an arbitrage opportunity in handling these “bits and pieces” of coin. However, the incentives as they currently exist reward miners for new coins, and for large scale funds transfer, but not so much for the stuff, the parts, that would be used to buy a taco.
I do not know if there is a solution to this problem, but in this brief essay I am proposing an approach that may represent a partial solution.
Many Chains, Many Coins
What is a coin in the crypto-currency sense? – arguably, it is simply the discovery of a hash that complies with the Merkle Tree rules for blockchain construction – a hash that is discovered via brute force processing. It is this process that allows for the chain to maintain a distributed representation of the ownership, and transactions, for the blockchain.
Coins are mined – and mining Bitcoin, at this point, can be a very expensive process. The longer the chain gets, the more effort it takes to discover a new hash that complies with the chain’s rules of construction.
Adding more mining nodes, one would think, would improve network performance – but what if the opposite were true?
What if, by design, the current blockchain has a non-linear cost associated with each new miner, each new node, that comes into existence on the p2p network?
Clearly, the focus of many “get rich quick” coders is on mining – and why not? The mining helps to expand the financial network. But the process of mining is like cross-country, camera enabled, synchronized weaving – where some percentage of weavers “must agree” that next series of stitches or patterns are “correct”, and then once the correctness is agreed upon by some voting block within the universe of weavers, the weavers that “lost” have to play catch-up, re-synch their weaving, and continue.
One of the principle reasons for distributing a problem is to take advantage of non-blocking efficiencies – meaning that the Bernstein Conditions for parallel processing are met, and each process can solve a given sub-problem without coordination with the others. Most real world distributed computing is a combination of blocking and non-blocking behaviors – for example, if I have a network of processes that are trying to “find the next hash” on the blockchain, they can each use the same source chain, and the one that returns a result first wins, winner take all, and this is as it should be.
But with mining networks, there is a reset step – a process by which other chains must resynch in order to continue. This problem, inherent to any distributed ledger operation, does not, likely, have a good solution – otherwise, it wouldn’t be the blockchain, it would be just another hierarchical system, with centralized points of failure.
Bitcoin has centralized structures – that allow for the network discovery of nodes, but, in general, it is a distributed model.
The idea being discussed here is not “the block chain is flawed”, but, instead, that the blockchain should be partitioned, logically, along the lines of the critical object – the transaction.
The transaction is, in many ways, the “first class citizen” of the blockchain, or it should be. The incentives, currently, are focused on mining coins.
But, what if, it were different?
What if each coin, crypto-coin, is only indirectly valuable – not valuable for the discovery process itself, but for how it enables transactional consistency within the ledger?
Also, there is the question of the magic numbers – “only 21 million will ever be created”? Why 21 million? There are many problems in mathematics that exhibit non-linear cost behaviors and would allow someone to have larger discrete units than 21 million – it is an arbitrary number, and in that sense it is simply a constraint on a system of money that should be unconstrained in terms of growth.
You could contend, “but Dan, if there’s no limit, you’re simply another fiat?” That’s not the proposal here – a p2p network can have constraints on the number of objects, entities, entries, without that being a “specific number”. More so, where is the real “constraint” – on the number of coins, or the number of transactions, or, put another way, the amount of transactional flow the network can sustain without starvation.
The idea is to keep the best features of the blockchain, as envisioned by Satoshi – while changing the dynamics and formation of network topology by changing the incentives.
But, why not partition the blockchain – making the coin the nexus of value, but the transactions being the true value.
Let’s walk through a user story.
User Story (scrum methodology)
Bob wants to create his own, private, credit card system. He wants it to be distributed, and that means the ledger as well. He wants to ensure that his “whole network” will only maintain a consistent representation of funds on hand. For Bob, he issues a simple card and then allows people to “load the card” with anything – dollars, Bitcoin, perhaps even physical gold (once delivered). Bob isn’t selling crypto coins – he’s selling membership, in a sense, within a consistent credit system.
The question comes up for Bob, “man, you will simply allow too many users, too many transactions, and double-spend will occur!”.
Bob decides to use the blockchain, but he partitions it, by server – and in this sense creating nodes that are mapped, one-to-one, with one or more individual coins.
The initial value in Bob’s credit card network? – zero. He has 10 servers, 100 coin processors, but until the very first user “loads” their card? – there is no value in the system. The first person to “load a card” becomes the seed transaction, and the value of these coin-chains is measured by all follow on transactions. Each chain is constrained exactly the same way Bitcoin or the other cryptos, but the chain is split, partitioned, around logical separations – there are only 100 coins in the system, only 100 sub-networks for mining is possible.
The pay-off for Bob? – not in mining coins … the coins exist, and are limited to 100 (but each coin is only limited by the same rules that limit the blockchain architecture – hashing, discovery, mining) … the value is in the transactional chains associated with each coin, and the fractional fee (that all crypto networks assign). As the coin’s chain extends, the value of the coin increases, and Bob gets paid a transactional fee as his 100 coin processors mine the additional transactions. If bob wants to know the “state of a coin”, he simply queries that sub-network’s blockchain, and can do a simple linear check-sum on the Satoshis issued. Each coin is limited exactly the way all blockchain currencies work, and the incentives are focused on speed of processing.
Bob could allow others to mine his coin – as long as he has a well-defined API, a coin-bus (a system that keeps track of where each coin is), and contract definitions for communication and encryption? – then Bob can allow anyone to mine. They must be part of his encryption network, using public and private keys for transmission, but that is the principle requirement.
Bob’s friend, Carol, has been mining Bitcoin for years – but wants a way to translate her valuable Bitcoin into something amenable to “buying coffee”. Carol and Bob work out a plan to get local businesses to accept Bob’s card, and Carol loads her card with value from the Bitcoin.
Bob doesn’t want the “perverse incentives” of mining to impact transactional performance – and he believes it is the “Satoshi” (fractional unit of a crypto) and not the coin itself that holds the value.
Let’s say Bob’s friend Chuck decides to create his own brand new crypto currency – and he mines the first 1,000,000. What does this imply? – well, it implies that Chuck’s computer, due to brute force hash discovery, spent a non-linear amount of computing time finding these. And that’s great, but if no one uses Chuck’s coin, then, well, he has 1,000,000 interesting hashes, and not much more.
Bob is providing a service – and his incentive to “discover” the non-linear-cost sequences exists in servicing transactional requests. Carol, too, builds mining machines for Bob, expands the network, and now the network has 200 coins, but the value is still constrained by: a) coin-chains AND b) the value stored, initially.
Bob’s network is more stable in terms of “value representation” – meaning that changes in Bob’s network size does NOT add “more money” magically. Again, a “coin” in Bob’s system has a value of ZERO at the beginning. You get points, value, by managing transactional requests – which, obviously, includes loading the card with Satoshis to begin with (here, I’m using the word “Satoshi” to mean the generic fractional units of a crypto currency and not specific to Bitcoin).
Bob’s network, because it has no “inherent value” at the beginning, only gains value by servicing customers, clients, people. If a coin services no transactions? – its value is zilch.
Finally, Bob’s network grows incrementally, per the rules of the marketplace – there is no “only 21 million coins can exist” limit – because, ultimately, that’s an arbitrary number based upon the complexity of Merkle Tree expansion and NOT based upon the idea that healthy human societies do grow, expand, and there are no schedules or magic numbers for this.
Bob has created an expanding alternative to the current credit cards. Miners are incentivized to focus on servicing transactional requests, no matter their size. The “creation of a Satoshi” becomes, in many ways, an equivalent to the mining of a coin – but the focus is where it should be: constantly improving clearing house behaviors.
Chuck decides to make a deposit in Bob’s network, and use his card. The performance improves, as the number of Bob-Coin nodes expand. The blockchain is kept consistent, and Chuck earns money just by depositing in the network node – money off the transactional fees, returned.
I am still a relative noob to the world of the blockchain – and it could be argued that I still have much to learn, I know that I do.
The basic “coin node” would operate exactly like other crypto currencies today – the only difference is they would be mining transactions and not coins. A layer, above the miner level, the coin-bus, would manage routing from wallet software.
The blockchain, formally, could be seen as a partitioned-blockchain, and putting the focus on network resiliency and performance.
Wallets will be encoded into every transaction, so “recovering funds” will be a trivial process.
The network will grow, fees, earned, and those who use the service will be rewarded in a similar way to bitcoin. But in this case it will be a portion of coin transaction earnings. There is no free lunch, but this system will attempt to be an ethical, scalable, coin that is not restricted by a “number”, but rather by the natural network flow of human commerce – which should be the governor.
The idea of a network that expands through “servicing transactions” and not through “generating coins” appeals to me – even if it is not feasible, it seems to be a more open-ended approach to a distributed currency.
What is clear is this: if the current transactional latency, performance, and non-determinism issues are not addressed, the crypto-economy could, probably will, falter. Ordinary people, not buying Lamborghinis or luxury homes, want functional tools for managing their financial affairs – and the “trust” that their money didn’t “magically disappear” or “go into limbo” is important to them.
For all of us in the blockchain world, with respect to clearing house operations on small value transactions, there’s clearly more work to be done.