Bitcoin Prep Work: Preventing Softforks


What I Am Reading:

Can soft-forks be prevented? and linked within – a discussion to the mailing list.

Notes

At first, I really didn’t get this at all. I read that it was impossible, but I didn’t understand how.

As I read the mailing list, I got progressively more confused. I really didn’t understand what was being talked about – isStandard, Anyone-can-spend scripts, etc.

But finally, I came across the quote below, and it illuminated it all for me very well.

Since a soft-fork is a restriction of the consensus rules, I think the only way to have an un-soft-forkable cryptocurrency is creating a cryptocurrency where no transaction is valid.

Imagine I build a very minimal cryptocurrency where in the transaction output you only indicate the public key to send your coins to and the amount. One can still soft-fork it by deciding that, from now on, only even amounts are valid or only public keys that are a multiple of 10 are valid.

After I read this I understood the context of all the other elements they were discussing on the mailing list.

Bitcoin Prep Work: Introduction to Bitcoin Blockchain

What I Watched:

SF Bitcoin Devs Seminar: A Special Presentation By Matt Corallo of Blockstream

Link to slides.

Notes

Bitcoin is mostly focused on preventing double-spends using proof-of-work.

Proof-of-work is based off of Hashcash.

Hashcash is a poisson process.

A Bitcoin without block reward would end up as a disincentive miners to act honestly.

Confirmations: 51% hashpower isn’t necessary for a short-term attack.

Writing consensus code is interestingly difficult.

The coding to consensus slide was probably the most interesting part of the talk, at least to me.

Conclusion

Great talk – I learned a lot about forking, and the Bad Ideas section was very enlightening.

The thing I really took away from this talk was: Bitcoin is a fragile system, but has a GREAT incentive structure, that takes weaknesses (eg. miners could try and double-spend) into strengths (if they double-spend, it destroys the use case).

Bitcoin Prep Work: Bitcoin’s Academic Pedigree

What I Read

I read Bitcoin’s Academic Pedigree.

Notes

Was very interesting to trace Bitcoin back to its original ideas. This paper was not very technical, but was rather a sort of technical recap. Any advanced topics were spelled out quite easily, even something seemingly complicated like Blockchain is described in very simple language.

This is definitely a paper that I will refer back on in the future. There is just so much history, I am sure I missed something.

The most interesting thing I learned was about hashcash. I didn’t realize that the solving of the puzzle itself, was the cash, in this protocol. It was cool seeing how Bitcoin was adopted to include proof-of-work, and the coinage/cash element was a complete separate part of this element.

Also, reading about Blockchains as a separate entity, with the paper evaluating the usage of a Blockchain among a consortium of banks, as the small number of parties would not need Nakamoto consensus.

Bitcoin Prep Work: If I’d Known What We Were Starting

What I Read

In this version of Bitcoin Prep Work, I read Ray Dillinger’s: If I’d Known What We Were Starting.

Notes

I’ve read this before, recently actually. It was great to re-read it. You can sense the admiration Ray has for Satoshi. He brings out, in great lengths, the characteristics of Satoshi and how it hasn’t been replicated since.

The un-scammy nature of Satoshi should have set a standard for the entire space, but many people ended up seeing Bitcoin & Blockchain as a get rich quick scheme, and still do.

It’s really exciting to read something through the lens of someone who has been in the Bitcoin space since the beginning. It gave me an interesting perspective on Satoshi, but it seems like Ray is a bit regretful of the whole experience, because of the abuse, but understands that it is a function of human nature.

Bitcoin Prep Work: Whitepaper

What I Read

I read the Bitcoin whitepaper. It has been a long time since I’ve read the Bitcoin whitepaper, and this time I actually understood it! I should have re-read it a while ago.

Notes

Definition of A Bitcoin

A bitcoin is defined as a chain of digital signatures. Specifically, you sign the previous hash and the public key of the next owner. When the next owner receives this coin, he can verify the signatures in order to know that the chain of ownership is valid.

Merkle Tree in Bitcoin

You can hash all the transactions, and come up with a root. This root is then used in the service string, which is used to generate the proof of work.

If we change any elements of the transactions, it will invalidate the root. This will further invalidate elements down the chain, specifically the previousBlockHash header that we generate for every block. So, you will have to recalculate the given block hash header, include it in the next block, and then recalculate the next header, since we use the previousBlockHash within every block.

You can see where this will be very time-consuming and not worthwhile to pursue, given the costs of proof of work.

Calculations

I didn’t understand the math behind the calculations, but I found this great article that broke down, in very simple terms, what this section meant.

Essentially, we are calculating the probability of an attacker to to alter the blockchain. The more hashpower he has, the easier it will be.

We can calculate, given an attacker chain and honest chain, how difficult it will be to overtake our chain. To quote the article,

“These numbers tell us the that the more CPU power an attacker has (q) the more confirmations we have to wait (5, 8, …) to know that the probability of the attacker catching up with the chain will be < 0.1%.”

Bitcoin white paper explained (PART 3/3)

This helped make it very clear to me what we were calculating in this section.

Conclusion

It was very beneficial to re-read the Bitcoin whitepaper. I felt like I learned a lot, and that I missed a lot by not reading it earlier.

I am a bit more technical now, so it definitely would have been more beneficial to tackle this sooner rather than later, but at any rate, I enjoyed how simple and straightforward this paper was.

Even the stuff I struggled with, I found simple explanations online about, that I could easily understand.