In terms of price, there’s not much to say, except it has been a boring week. Opinions seem to be quite divided, although that is only natural as the market keeps moving side-ways.
Boring as hell.
In terms of new and exciting developments happening on the bitcoin community, there are a few different ones I would like to discuss today.
Again, I’m not focusing in other projects like Iota or Eos, as their product is either in testnet, training wheels or was just released.
What's more important, to discuss how amazing new ideas will solve scalability, like PoS, DPoS and DAG’s, or to focus on what is being done at the bitcoin core development?
Yes, I agree there are many different projects worth mentioning and I will write an article discussing the ones I consider to be the most promising, their advantages and problems. But for now, let’s focus on Bitcoin. Not because of price, but due to adoption: no other cryptocurrency has as many users, developers and infrastructure support. Maybe Ethereum, which is closing in, but still Bitcoin is the most widely spread cryptocurrency and the base layer for the entire market.
Today I will be discussing ways bitcoin is being improved and infrastructure changes happening in the near future, that can potentially help by lowering fees, by improving ease-of-use, by creating off-chain payments solutions or simply by adding more transactions to each block. There are ways of implementing each solution separately, but some core technology must be widely adopted, like Segregated Witnessing (SegWit).
There will be three main topics I will approach today: batching, schnorr signatures and atomic swaps. I’ve been discussing the Lightning Network too much and I want to check different potential solutions, less prone to centralization.
Speaking of the devil, that’s definitely one of the features I believe we should be trying to avoid. Bitcoin’s purpose is to be fully decentralized, so any action, update or improvement that won’t go in that direction should be disregarded.
Ready for what’s coming?
Although this is obvious for techies, it doesn’t mean it’s an easy solution to implement on a massive scale.
First we need to understand how bitcoin works.
Each transaction is based on one input and multiple outputs. Meaning, with a single transaction you can transfer money to multiple people, for example.
What’s really interesting is how data flows in the blockchain and what we can do with that information. Let's say I create a transaction which weight is equal to 40 bytes and that said transaction only contains one input and one output. With batching you can aggregate transactions and literally save up space, so when I add an extra output, instead of the total weight of the transaction = 80 bytes (doubling down), it only adds, for example, 20 bytes more.
This means that instead of creating single transactions, you can do one with a series of different outputs. Plus, each additional output does not double down the total transaction weight, meaning there's economies of scale at play.
These are very good news, as this feature can also be a way to help improving scaling. It won’t increase the number of transactions, but allows for a higher number of outputs per input.
This is what batching is: aggregating many different transactions into a single transaction, by adding multiple outputs per input.
Would you like a more visual representation of the savings?
As you can see the number of bytes significantly reduces each time another payment (output) is added in a single transaction (for each input).
It’s really cool if you’re a business or someone who makes recurring transfers, like sending money abroad.
With batching there’s considerably more space in the block for more transactions with more outputs. Exchanges do this, of course; hopefully there will be tools available soon, so that single customers can easily select transaction outputs they would like to batch together on the same payment.
Imagine you have a company and you do cryptocurrency payments.
Instead of doing 5 different transactions in order to pay salaries or suppliers, you could chose to batch all payments in the same transaction (input) and set 5 different outputs, which would allow you to pay way less fees and make the overall block smaller.
You already got it, right?
This is a very straightforward example, but it actually works pretty well. You still need to do it from a command terminal (I think), as there is no way to do it with most wallet apps or exchanges’ wallets (blockchain.info, coinbase, etc).
Still, learning how to do it might be worth the effort if you send money to many different addresses.
This subject might be a bit complex for the average non-technical reader and again, I’m not an expert. If you really want to get acquainted with the math behind it, check this video from a lead developer working on Schnorr Signatures. It’s still quite technical but, nevertheless, it’s the best explanation I've found so far.
I’ll try to make this introduction as simple as possible, so you don't run away.
Right, first things first;
This is the model you usually see to explain how transactions work, correct?
Bitcoin's blockchain registers unspent transaction outputs; that's all it does.
When you send some bitcoin, you're basically sending a message with an input which can be distributed between many outputs (as we've seen in batching). This is called the simple UTXO model.
Now, there's small features you can add, like allowing for different signatures to approve a transaction, for example.
Multi-signature (or multisig) transactions require the participation (signature) of multiple participants. Each multisig transaction can only be posted if, and only if, the require signatures are present. This means that in order for any of the outputs to be used, they need to be unlocked.
The really cool feature introduced by Schnorr Signatures is that it aggregates the signatures needed into only one signature (or signature hash, to be more precise) which can be used as proof to unlock the transaction outputs.
Using Schnorr Signatures, the unlocking script would simply have 1 signature representing an aggregate of each participant’s signature. You can guess what happens:
There are, of course, attack vectors that could potentially compromise a one signature scheme. I’m not going into details but you can check some more information here.
I absolutely love the concept of atomic swaps. To better explain it, we can use the usual example:
Luke and Vader want to trade Rebel and Imperial tokens. As Luke is in Tatooine and Vader on the Death Star, it is difficult to do it physically, plus, Luke’s pretty sure he would be chased by Imperials enforcers, so he kind of wants to avoid that.
Luke could send the Rebel token and hope Vader would send the Imperial token, or it could go the other way around.
This means the option would be for Luke and Vader to trust each other.
That’s also not happening as Luke can’t turn Vader to the Light side and Vader can't turn Luke to the dark side. They’re basically at a cross-road.
What to do, what to do?
The third option is to get an escrow, so someone both trust or an agency which holds the tokens. Only after both approve, the escrow sends tokens to Luke and Vader, which were previously locked.
The problem is that escrows are expensive and the trust problem does not get solved. Centralized exchanges, like Bittrex, Binance, etc are also escrows as they keep tokens in their own personal wallets.
Atomic Swaps simply allow for some cryptocurrencies (based on the language SCRIPT, such as Bitcoin, Litecoin, Vertcoin, etc) to be automatically exchanged between one another.
Using the example above, Luke locks Rebels tokens in a digital box which only Vader can open with his digital signature, and Vader does the same thing. Immediately after Vader opens the box Luke will be able to open Vader’s box and get his Imperial tokens.
This works because opening one lockbox effectively gives the other party the ability to open the other lockbox. Because each lockbox requires both the key and the signature, both lockboxes are essentially secure.
In case something goes wrong or one party backs out in the middle of the process, the lockboxes are constructed in a way as to refund respectively both agents, if nobody opened the lockboxes in 48 and 24 hours respectively.
Atomic swaps reduce on-chain privacy, as users transactions can be linked cross-chain. But this technology can also be used with off-chain protocols, like the Lightning Network, which can also help protecting privacy. Better yet, imagine this technology working with bitcoin to privacy coins. You could, potentially, use those coins privacy to mask your bitcoin transactions.
If you're worried none of these improvements matter until we "fix" transaction throughput you might want to look at the problem from a different angle.
I understand the current hype is more about “how many transactions per second does your blockchain do, bro?!”.
Security, apparently, is not the main concern anymore.
Do you really think it’s easier to start-over and create a USD 11 billion dollar project like EOS, than fixing problems with the most used and adopted cryptocurrency out there? I'm not saying other projects shouldn't be given a chance, especially considering they use different technology, have a different purpose and economic incentives.
But man, bluntly believing coin X or Y will fix everything because some smart dude said so, doesn't seem a very productive use of your time.
I hope most projects succeed as I have been investing full force in many of them, as well.
The question here is not about system performance (how many transactions per second).
What we should be worrying about is network performance. How many people do we need to secure the entire network? How many people use this cryptocurrency on a daily basis? What’s the network reach? How can incentives be aligned with consensus in a long-term perspective?
Do you really think any project that claims to do a gazillion transactions per second won’t have security issues?
If you want to understand how serious you should be worried about security instead of performance, check this out. It shows how cheap it is to actually perform a 51% double spend attack on some blockchains by using Nice-hash, a cloud mining pool.
My goal here is not to trash other projects, as I’m definitely not a bitcoin maximalist.
I want to share as much information as possible so that you too can critique and question other ideas. The more we learn, the more challenging it becomes to progress with improvements (seems contradictory, right?)
I understand PoS seems unbreakable and much better (to some) than PoW, or that the DAG is the cure to all blockchain evilness and power-struggles.
Want some advice I got from an old man?