Skip to content

Commit

Permalink
🐛 fix dangling pages
Browse files Browse the repository at this point in the history
  • Loading branch information
actuallymentor committed Dec 27, 2023
1 parent f62942c commit 7cf47ab
Show file tree
Hide file tree
Showing 9 changed files with 29 additions and 29 deletions.
4 changes: 3 additions & 1 deletion .github/workflows/compile-book.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,11 @@ jobs:

steps:

# Clones repo to the commit that triggered the event
# Clones repo to the commit that triggered the event
- name: Cloning repository
uses: actions/checkout@v3
with:
fetch-tags: true

# Set up node
- name: Set up frontend Node.js (.nvmrc)
Expand Down
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
build/
build/
.*
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Alternatively, you can also find the publishing history and the associated files

> This book offers a unique perspective essential for both enthusiasts and skeptics of blockchain technology. Regardless of personal beliefs, it provides context and enhances understanding, making it a must-read.
>
> ~ Rudy Dogum of the [Wholesone Crypto Podcast](https://www.wholesomecrypto.com/)
> ~ Rudy Dogum of the [Wholesome Crypto Podcast](https://www.wholesomecrypto.com/)
> As someone involved in the blockchain industry, I know how hard it is to critique our foundational technology. This book effectively communicates that blockchain technology isn't a universal solution; rather, it's a tool with specific use cases.
>
Expand Down
14 changes: 6 additions & 8 deletions book/0.0 - pretoc.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,16 @@
<div class='left'>
<p>This book was first published in 2023. The last known edit was on %%LASTEDIT%% (%%BOOKVERSION%%).</p>
<p>The content of this book is for educational purposes only. The author disclaims liability for any and all health, financial or other outcomes that may occur as a result of applying the methods suggested in this book.</p>
<!-- <p>To access digital versions of this book please visit nothingburgerbook.com/claim.</p> -->
<p>Copyright 2023 by Mentor Antoni Palokaj. All rights reserved.</p>
</div>
</div>

<!-- <div class="pdfonly">
<div class='center'>
<h1>Free stuff notice</h1>
<p>Buyers of the physical book are entitled to a free digital pdf, kindle and kobo versions. Scan the QR code below or go to nothingburgerbook.com/claim on your phone.</p>
<img style="width: 40%; height: auto; margin-top: 50px;" src='../assets/claim.svg' />
</div>
</div> -->
<div class='center fullscreen'>
<h1>Free update notice</h1>
<p>You are entitled to an always up-to-date link to free digital pdf, kindle and kobo versions. Scan the QR code below or go to nothingburgerbook.com/claim on your phone.</p>
<p class="pdfonly">The digital versions of this book have clickable links, so I highly recommend getting a copy so you can read the sources at your leasure.</p>
<img style="width: 40%; height: auto; margin-top: 50px;" src='../assets/claim.svg' />
</div>

<div class='center fullscreen'>
<h1>Acknowledgements</h1>
Expand Down
8 changes: 3 additions & 5 deletions book/1.2 - the right tool for the job.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
# The right tool for the job

Blockchains are useful under the same conditions that other things are: when they can do something in a way that other tools cannot do. This usually means that a tool needs to be one of these things:
Blockchains, like everything else, are useful when they can do something in a way that other tools cannot do. This usually means that a tool needs to be one of these things:

- the **cheapest** way to solve a problem
- the most **convenient** way to solve a problem

<img src="../assets/illustrations/fighter-jet-delivering-packages.png" alt="Fighter jet delivering packages" class="img-50-left">

Think of an F16 fighter jet. Whether it is useful is a matter of context. As a mode of transportation for example it is fast, but completely unwieldy and extremely expensive. Nobody would say F16s are the "best" way to deliver packages because they fly really fast. The same can be said for a surgeon's scalpel: it is very sharp, yet nobody I know uses them to cut their food.

Perhaps when you think about it, you have used a metaphorical scalpel to cut food before. Personally, I've used spoons while gardening for example. I did so purely because the little shovel I have was too hard to reach.
Think of an F16 fighter jet. It's usefulness is a matter of context. As a mode of transportation for example it is fast, but completely unwieldy and extremely expensive. Nobody would say F16s are the "best" way to deliver packages because they fly really fast. The same can be said for a surgeon's scalpel: it is very sharp, yet nobody I know uses them to cut their food.

## Blockchains are a specialised tool

Expand All @@ -25,7 +23,7 @@ The coming chapters present a framework to understand under which conditions a b

> I was once at a hackathon (a weekend where companies convince programmers to build free product demos in return for pizza and merch), where one of the programmers told me of an app he made. He'd repurposed a social media platform as a data storage application.
>
> Much to the dismay of the social media company, he would split a movie file up into small bits and post them in a private channel. His app would then download the bits and reassemble them into a movie file. It was a clever hack, but objectively a terrible use of technology. His app was like using a scalpel to eat food. Why did he do this? Because he could. That's programmers for you.
> He would split a movie file up into small bits and post them in a private channel. His app would on-demand reassemble them into a movie file. It was a clever hack, but a terrible use of the platform. His app was like using a scalpel to eat food. Why did he do this? Because he could. That's programmers for you.
## The five basic uses of blockchains

Expand Down
5 changes: 3 additions & 2 deletions book/2.0 - do you need a ledger.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ The Bitcoin spreadsheet has 2 columns:
> | ---- | ---- |
> | bc1Alice| 1.234 BTC |
> | bc1Bob | 0.5445 BTC |
> | bc1Robin | 0.1337 BTC |
> | ... | ... |
The cryptographic spice to this system is that making a change to a row requires a cryptographic key, which just means only the person with the cryptographic key (which looks like a long password; it's just text) can make changes.
Expand Down Expand Up @@ -67,11 +68,11 @@ If the above analogy of blockchains as spreadsheets makes you go "that sounds aw

## Ethereum: a spreadsheet with functions and macros

Another big blockchain is Ethereum, which unlike Bitcoin is not purely a "who owns what" ledger. Like an Excel spreadsheet you are used to, it can do more advanced logic.
Another big blockchain is Ethereum, which unlike Bitcoin is not purely a "who owns what" ledger. Like modern Excel spreadsheets you might be used to, it can do more advanced logic.

You can think of Bitcoin like a basic spreadsheet, and Ethereum like an advanced spreadsheet of the type that a financial analyst might use: it can do more advanced computations like functions and macros[^For the uninitiated: modern spreadsheets have many hidden functions that allow them to do almost anything. A sufficiently skilled spreadsheet user can in many cases get close to a data scientist who uses "real" programming languages to do their computations.].

For the programmers among you: Ethereum is Turing complete. For the non-programmers among you: that means you can create almost any computer program you can think of with it. Examples that have been created with Ethereum are:
For the programmers among you: Ethereum is Turing complete. For the non-programmers among you: that means you can create almost any computer program you can think of with it, because it has all logical building blocks that programming logic requires. Examples that have been created with Ethereum are:

- banks: or more specifically a lending platform that lends out money without human intervention
- insurance: in a cooperative sense where everyone pays into a pot and insurance claims are paid out if more than a certain percentage of people agree the claim is legit
Expand Down
4 changes: 3 additions & 1 deletion book/2.1 - do you need immutable data.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@ That is not to say it has never happened. If at any point a large group of stake

At this point, the amount of people you'd need to convince to change the most decentralised blockchains is so large and varied that in practice we just say: "Data on blockchains is immutable".

> In 2015 the Ethereum blockchain launched, in 2016 a lot of speculators put their money into a shared account that was hacked (it's more complicated than that, but close enough). After much debate, the solution was a general consensus of "let's just rewrite history and take the money back". I remember the heated debates at the time about whether doing this would be against the ethos of blockchains, with many claiming it would ring a bell you can't unring. A decision like that would be much harder to make now, as back then the amount of people involved in the Ethereum blockchain was so small that communicating on Reddit and a few online forums was enough to create a rough consensus. As of the time of writing the [market cap of public crypto assets](https://www.coingecko.com/en/global-charts) is over a trillion dollars, a world away from when that decision was feasible to make.
> In 2015 the Ethereum blockchain launched, in 2016 a lot of speculators put their money into a shared account that was hacked (it's more complicated than that, but close enough). After much debate, the solution was a general consensus of "let's just rewrite history and take the money back".
>
> I remember the heated debates at the time about whether doing this would be against the ethos of blockchains, with many claiming it would ring a bell you can't unring. A decision like that would be much harder to make now, as back then the amount of people involved in the Ethereum blockchain was so small that communicating on Reddit and a few online forums was enough to create a rough consensus. As of the time of writing the [market cap of public crypto assets](https://www.coingecko.com/en/global-charts) is over a trillion dollars, a world away from when that decision was feasible to make.
### Updating and undoing are not the same

Expand Down
10 changes: 4 additions & 6 deletions book/2.2 - do you need a distributed system.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ Here is how spreadsheet types differ:

- a **centralised** ledger is like having a spreadsheet that is saved on a USB stick. If you destroy the stick, you destroy the sheet.
- a **decentralised** ledger is like a Google Sheet: when you see it, it exists both on your laptop and several Google servers. If your laptop breaks, the sheet is still in the Google Cloud, if some computers at Google explode, the sheet is probably fine because they spread their data across servers
- a **distributed** ledger is like having a spreadsheet on a Dropbox-like system[^This is technically not true since Dropbox (and similar file systems) synchronise through central servers. So for the nitpickers: in this example, you may assume updates are transferred peer-to-peer]. Whenever someone changes the file on their computer, the file changes on all the other computers as well. If any of the computers break, the file is fine. In fact, the other users probably won't even notice. If you are a fellow-nerd, you are probably familiar with git, which is a good example of a distrubuted protocol[^Not to be confused with Github, which is a centralised provider of tooling for using the distrubuted git protocol].
- a **distributed** ledger is like having a spreadsheet on a Dropbox-like system[^This is technically not true since Dropbox (and similar file systems) synchronise through central servers. So for the nitpickers: in this example, you may assume updates are transferred peer-to-peer]. Whenever someone changes the file on their computer, the file changes on all the other computers as well. If any of the computers break, the file is fine. If you are a fellow-nerd, you are probably familiar with git, which is a good example of a distrubuted protocol.

Blockchains solve a collaboration problem: how do you make sure that the updates that people broadcast are legit? How do we make sure nobody cheats?

The name for the technology that keeps all copies of the blockchain in sync is a "consensus mechanism", and different blockchains use different ones. They are beyond the scope of this work. The most relevant thing to remember is that blockchains are distributed ledgers, which means:
The name for the technology that keeps all copies of the blockchain in sync is a "consensus mechanism", and different blockchains use different ones. They are beyond the scope of this book. The most relevant thing to remember is that blockchains are distributed ledgers, which means:

- everyone who runs a blockchain node (for example wallet software on your laptop) has a full copy of the blockchain
- whenever someone creates a transaction in their local wallet software, they "update their local spreadsheet"
Expand All @@ -40,7 +40,7 @@ The advantage of having data stored on a blockchain is that it is very robust. I

Not only is it hard to delete, but if you want to somehow introduce a change that is counter to the rules, you would have to convince everyone who keeps a copy of the blockchain to play along.

In a centralised system, taking information down, or altering it, is very easy. You simply need to convince the person who owns the place where the information lives to change it. This is how totalitarian governments can censor news on the internet. It is how banks can block transactions they don't like. It's also how important archival data can be lost because it's only stored in one place.
In a centralised system, taking information down, or altering it, is very easy. You simply need to convince the person who owns the place where the information lives to change it. This is how totalitarian governments can censor news on the internet. It is how banks can block transactions. It's also how important archival data can be lost because it's only stored in one place.

## Distributed data storage comes at a cost

Expand Down Expand Up @@ -72,6 +72,4 @@ Whenever someone transfers ownership of this NFT, the line in the blockchain spr

Because the data is on a distributed ledger, we have strong guarantees that we will always know who is the current registered owner of a certain NFT. Unlike with physical art, we can always see the serial number of an item, who owns that serial number, who have been owners in the past, and when they transferred ownership.

Whether having a robust record of who is the registered owner of a line in a spreadsheet has value in the real world is up to you.

I'll say that personally, this technology seems more suited to ownership titles of financial assets. Perhaps house deeds or the rights to the mortgage on the house. Especially in cases where centralised records cannot be trusted, places with weak rule of law for instance.
Whether having a robust record of who is the registered owner of a line in a spreadsheet has value in the real world is up to you. I'll say that personally, this technology seems more suited to ownership titles of financial assets. Perhaps house deeds or the rights to the mortgage on the house. Especially in cases where centralised records cannot be trusted, places with weak rule of law for instance.
8 changes: 4 additions & 4 deletions book/2.3 - do you need permissionlessness.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<img src="../assets/illustrations/open-padlock.png" alt="An open padlock" class="img-50-right">

Most computer systems are permissioned. What that means is that different actors have different rights to do different things. The computer you use for work, might, for example, have three accounts:
Most computer systems are permissioned. What that means is that fundamentally, different actors have different rights to do different things. The computer you use for work, might, for example, have three accounts:

- one for you, which is allowed to use the computer for work activity, but not to install new software
- one guest account that can be used by anyone who has the computer in their hands, but can only browse the internet
Expand Down Expand Up @@ -44,9 +44,9 @@ While blockchains attract a lot of innovation due to their open nature, this als

Not everything benefits from permissionlessness, and many useful applications are opposed to such a system.

If you're going to build a record-keeping system where you need different levels of access, you likely need permissioned systems. Imagine the tax service of a country running on a permissionless blockchain: everyone would be able to read everyone else's tax information[^Excitingly, this might change soon with the advent of zero-knowledge cryptography, but that is not entirely production-ready at the time of writing]. The same goes for storing medical data on a blockchain: that sounds like a terrible idea.
If you're going to build a record-keeping system where you need different levels of access, you likely need permissioned systems. Imagine the tax service of a country running on a permissionless blockchain: everyone would be able to read everyone else's tax information[^Excitingly, this might change soon with the advent of zero-knowledge cryptography, but that is not entirely production-ready at the time of writing].

Even financial applications, which blockchains are often used for, might not want to work in a permissionless system. While open access to the trades and transfers of everyone in the world makes for a fair playing field, it is also the death of financial privacy[^On blockchains that are not specifically privacy-centric it tends to be very easy to see the full financial history of any account].
Even financial applications might not want to work in a permissionless system. While open access to the trades and transfers of everyone in the world makes for a fair playing field, it is also the death of financial privacy[^On blockchains that are not specifically privacy-centric it tends to be very easy to see the full financial history of any account].

## Example: Proof of Attendance Protocol

Expand All @@ -58,7 +58,7 @@ This allows event organisers to do things like:
- people who attend a concert get a POAP token, and those who attended more than 5 concerts of an artist get access to a live-streamed Q&A with the artist
- members of an online community get a POAP token for showing up for monthly community calls, and those who have more than 3 get to vote on polls that determine the direction of the community

Because these POAP tokens are registered on a blockchain as NFTs, anyone can see which crypto wallets have which POAP tokens. The permissionless nature of the blockchain on which POAP tokens are stored means anyone can:
Because these POAP tokens are registered on a blockchain as NFTs, anyone can see which crypto wallets have which POAP tokens. This means anyone can:

1. determine the social track record of a crypto wallet: are they a long-standing community member? Do they engage in events you might have in common?
2. find people who match a demographic you are interested in: who is very active in Defi communities? Who goes to many in-person conferences?
Expand Down

0 comments on commit 7cf47ab

Please sign in to comment.