A Bitcoin full-node has to verify every transaction in the entire history of Bitcoin to be sure there were no double-spends. Because a single UTXO could be the result of money that passed through millions of accounts, a recipient of a Bitcoin payment has to verify millions of transactions that make up the history of the payment. Usually they just resort to trusting one of the full-nodes to do it for them.
Unlike Bitcoin and many other crypto-currencies, coins on Intercoin won’t split (at least for v1.0) and thus there is no problem of having to keep track of an ever-growing amount of UTXOs.
Instead, each community can issue coins in a variety of denominations, similar to how we have quarters, dimes, pennies etc. except the fractions just powers of 1/2. Because coins don’t split, verifying the history of a coins is straightforward: it passed whole through maybe a hundred accounts, but probably not millions. The entire history of the coin can be encoded in the payment stored by the recipient.
In Ethereum, smart contracts for each token must keep a balance for every holder of that token, and that has led to a big trade-off between scalability and security. On the one hand, you could have each smart contract token be watched by a subset of the network (called a shard) running a consensus about it, but on the other hand, if the amount of money invested in this token becomes large, it becomes a bigger target for attackers to try and take over that particular shard. Thus, Ethereum has not been able to achieve scalability, as they honestly admitted in their original yellow paper, and this has led to serious bottlenecks and congestion on the network.
In order for crypto to power a viable payment platform, it needs to scale. That’s why the network must be architected to be embarassingly parallel from the beginning. Any bottleneck (such as a Proof of Work Miner on a global blockchain) is a resource everyone must compete with, and the reason why Bitcoin can handle 7-10 transactions per second while Ethereum can handle 15. Increasing the size of a block by N times will just multiply the throughput by N, while making everyone store N times as much data.
The Intercoin platform simply has each coin be watched by its own subset of the network. With each coin being worth very little, there is not much incentive for an attacker to subvert the consensus about who it belongs to, unlike with an Ethereum smart contract, for example, which controls the balances of every wallet with that token. The attacker would have to sabotage a great many computers in the Intercoin network in order to interfere with the consensus about a large enough amount of coins. And even then, due to Intercoin’s approach to consensus, all they would be able to do is prevent forward progress, not steal the coins.
When it comes time to make a payment, the sender of the money might need to “get change” by exchanging their larger denominations for a set of smaller ones. This is a transaction where both parties neither gain nor lose any monetary value, and it becomes a matching problem. The most efficient way to solve the matching problem is for each community to have one well-known virtual address (a “bot”) which stores enough change for everyone. (As long as this account never spends money on its own, but only exchanges equal amounts of money, its money won’t count towards the community’s circulating money supply.)
The way the default software works, anyone who receives a payment in a community would automatically contact that community’s bot and exchange the small denominations for larger ones, thereby limiting the growth of coins in the system. Unlike the real world, there is no concern for physical distance between the vendor and the “change bot”. Large coins “frozen” by the change bot can then be given out to someone else, while the change coins are taken out of circulation. Since the virtual bot’s money supply doesn’t contribute to the circulating money supply, its account balance doesn’t need to be a bottleneck (semaphore) for the local transactions. But to speed up transactions further, some vendors may choose to hold on to the change and use it to “give change” back to their customers.
In addition, community coins are routinely retired from circulation when a cross-border payment is made, or money is withdrawn from a community. New community coins are issued when people deposit Intercoin into the community. So, coin histories can be deleted to prevent the community ledgers from growing indefinitely.