Skip to content

Latest commit

 

History

History
7 lines (4 loc) · 3.56 KB

basics.md

File metadata and controls

7 lines (4 loc) · 3.56 KB

Introduction

With the publication of the Bitcoin whitepaper in 2009 and the subsequent delivery of the first working implementation of Bitcoin two months later, the individual or group behind the pseudonym Satoshi Nakamoto, has started to prove that a new class of decentralised system is practical. Although its founder has officially vanished from the day-to-day development only 1.5 years after its release, the Bitcoin community persisted and grew from zero to a billion industry today.

Bitcoin is the first instance of an open and decentralized blockchain which act as electronic payment system, that allows two or more parties to exchange monetary values among themselves without passing through intermediaries (such as banks or payment processors). Due to a missing centralised entity, all nodes in the Bitcoin network have to reach consensus about the transactions that are considered valid. Specifically, nodes reach consensus given two mechanisms: (i) all nodes in the Bitcoin network receive all transactions through a broadcast protocol, and (ii) the consensus algorithm allows all participants to synchronise about their perceived reality in regular time-intervals. Nodes differ in their view of reality if different or conflicting transactions are considered valid. The broadcast mechanism is realised on top of TCP/IP, such that any node connected to the Internet is technically capable of receiving and sending transactions through the Bitcoin network. This design has the advantage, that it enables any individual, regardless of the respective geographical location, to participate in monetary transactions, might however suffer from scalability challenges that are inherent to broadcast communication. Bitcoin's consensus algorithm consists of a computational expensive challenge that needs to be solved periodically by its participants. The node that solves the challenge, broadcasts the solution in the network and therefore timestamps the current consensus among the nodes.

In order to send a payment from one participant {% math %}\mathcal{A}{% endmath %} to another participant {% math %}\mathcal{B}{% endmath %}, the participant {% math %}\mathcal{A}{% endmath %} is required to create a transaction paying from his address {% math %}\mathcal{X}{% endmath %} to the address {% math %}\mathcal{Y}{% endmath %} of participant {% math %}\mathcal{B}{% endmath %}. {% math %}\mathcal{A}{% endmath %} then broadcasts the transaction such that all peers in the Bitcoin network can receive and validate the transaction. A participant can generate multiple addresses, and an address corresponds to the cryptographic hash of a public key, while the related private key is required to spend funds associated to the given address. Besides one-to-one payments, transactions can as well be paid from one-to-many or many-to-many addresses. The freedom to express different transaction types is realised through a Bitcoin specific non-turing complete transaction programming language called script. Before forwarding, every node is supposed to validate a received transaction, validation includes basic sanity checks, the valid formulation of the associated script and signature verification. Transactions are signed by the spender, such that the redeemer (and any other participant) can verify the authenticity of the payment. Once a transaction has propagated in the network, and a node solves the consensus challenge, the challenge typically confirms the currently unconfirmed transactions in the network. At this point the participants of the Bitcoin network reached consensus and repeat the same process periodically.