<h1>Bitcoin in a nutshell</h1>
<p>Bitcoin was designed as a purely peer-to-peer system of electronic cash with no privileged participants, no central controls and no trusted third parties.</p>
<h2>Cash</h2>
<p>If you want to know how many dollar bills (banknotes) are in your wallet, you don't go to a bank, hand over your wallet and ask a bank employee to open your wallet and count whats inside it. You just look yourself. You don't need to trust someone else to do it for you. The same if you want to know how many coins are in your pocket. Bitcoin was intended to work the same way.</p>
<h2>Third parties</h2>
<p>When you go into a shop and hand over some physical cash for a loaf of bread, you dont ask a bank to act as an intermediary, you may trust the shop to hand over the bread but you don't need a trusted third party. You and the shopkeeper are the first two parties and the only ones where trust may be necessary.</p>
<h2>Exchanges</h2>
<p>Bitcoin's inventor envisaged that an economy could use Bitcoin as its currency. In that case there would be no need for any exchanges. Most ordinary folk don't need to use a currency exchange to receive salary or to buy things.</p>
<h2>Miners</h2>
<p>At the beginning every Bitcoin wallet was also a miner. Miners have no special privileges allotted to them. In the beginning every wallet was what is called a full-node. They download the full journal of transactions we call the blockchain and verify it independently. This way they don't need to trust other people's nodes (wallets etc).</p>
<p>At the beginning Bitcoin's inventor did anticipate the need for nodes that don't download the whole transaction journal but rely on some semi-trusted nodes. This was Simplified Payment Verification (SPV) and nodes that use it are not full-nodes but lightweight nodes. These lightweight nodes are more vulnerable to fraud but can be useful for use on devices that lack storage capacity and processing power.</p>
<h2>Open source</h2>
<p>The source-code of the original software was made public with a permissive licence that qualifies it as open source. Anyone can make their own version of that software. That tradition continues to this day and many of the most trusted wallet programs are open-source.</p>
<p>The security of Bitcoin does not depend on secrets in the source code. It does not depend on the integrity of any particular source code. It does rely on the majority of people using software that applies a common set of rules (sometimes called the consensus rules). Bitcoin has rules without rulers.</p>
<p>So long as we are careful to use software that applies the rules, our money is safe.</p>
<h2>Control and Authority</h2>
<p>Many of these Bitcoin-wallet projects have a fairly open system of development where anybody with persuasive ideas can propose changes. It is up to the broader community to either adopt or reject those changes. No one person or organisation is in control of Bitcoin and the same applies to some major wallets.</p>
<h2>Security</h2>
<p>Bitcoin does not rely on some central system of usernames and passwords. Every user chooses a random number and uses it as a private-key that is always kept secret. Using digital signatures, hashes and other fruits of public-key cryptography (but not cryptography itself) Bitcoin is able to give individuals exclusive control over the spending of amounts of money.</p>
<h2>Transaction journal</h2>
<p>The only truth is the blockchain. That is where we, somewhat indirectly, keep track of who controls the spending of money. Every full-node has their own copy. By inspecting and verifying every part of it, every full node can independently come to a common global understanding of the state of the Bitcoin universe.</p>
<h2>Wallets</h2>
<p>The only really significant data stored in a wallet is the secret number used as a private key.</p>
<p>The job of a wallet is: to use the transaction journal to keep track of your money; to use that secret number to spend money; to talk to a small random group of other nodes to pass on information about transactions.</p>
<h2>Addresses</h2>
<p>Unlike normal addresses, Bitcoin addresses don't identify people, organisations or places. They are essentially a random-looking number that represents a Bitcoin script in a transaction in the transaction journal. This script usually determines which secret number (private-key) can be used to spend some money. So addresses are not assigned by others, they are just a number derived from details in a transaction. It is a number that can be made public and which another person can use to create a transaction that gives control over money to someone who knows a secret number without making that secret number known to anyone.</p>
<h2>Not trusting third parties</h2>
<p>Any third party who sells Bitcoin related services that rely on you trusting them are outside the vision of Bitcoin's founder. I would argue that they are essentially parasitical and should be unnecessary. However many people find them and their services irresistibly alluring. Web based &quot;wallets&quot; are often of this type and I prefer to refer to them as accounts rather than as wallets because they contradict the original vision and often cause confusion and loss of money. <strong>&quot;Not your keys: not your Bitcoin!&quot;</strong></p>

CC BY-SA 4.0
2021-08-11T10:30:43.967Z
2021-08-13T23:17:58.903Z
2021-08-13T23:17:58.903Z
RedGrittyBrick
<blockquote>
<p>If its NOT hosted on central 3rd party server - does every miner store local copy of whole blockchain data? And newly joined miner will require to connect the network, and download whole blockchain?</p>
</blockquote>
<p>Yes, unless they'd prefer to trust someone else (such as a mining pool) to do that for them.</p>
<blockquote>
<p>If that so, it means could seamlessly write/read local files, which is only possible in desktop app, correct? (web app have security issues in accessing local client files) - does that means newly joined miner will require to &quot;download&quot; the .exe first to connect to network?</p>
</blockquote>
<p>Mining is an operation done at significant scale. You wouldn't control a mining operation from a small device. Typically, a mining operator or controller will decide what software they want to run, download its source code, confirm that they have an official release that they know is trustworthy, and then compile it themselves.</p>
<blockquote>
<p>My previous assumption its in executable file format was based to the idea no one have access to its source code (each miner only have client app). But then, who deploy new update, is it voted as well? Will the miner require to download latest update?</p>
</blockquote>
<p>If the miner had no access to the source code, how could they know for sure that it was doing what they wanted it to do? It must be the reverse -- the miner must have control over the source code so they can ensure that they are doing what, and only what, they in fact want to do.</p>
<blockquote>
<p>The blockchain data seems not consist a security information (like password), and all datas were public. Which means, its the third party platform that does the job assigning what address to whom? How they could make sure no one will access another one's wallet? Do bitcoin core provide API for miner to push newly data?</p>
</blockquote>
<p>Each user generates their own wallet using credentials that only they know.</p>
<blockquote>
<p>I already searched multiple blockchain framework such as IBM's hyperledger, and to my knowledge its nowhere close to bitcoin. Even though they are blockchain-based, they still require central server, correct? - does that means if anyone want to create bitcoin-like platform, the best way to start with is by cloning the bitcoin core and make modification from there?</p>
</blockquote>
<p>Probably not since bitcoin uses mining to provide its security. You'd have to generate a large amount of value just to induce enough mining to keep the system secure and that would be a pretty huge challenge.</p>

CC BY-SA 4.0
2021-08-12T03:08:44.550Z
Thank you for valuable input! +1

Regarding your last statement,
Let's say I want to create simple blockchain with bitcoin like system, except it needs to be **permissioned** "miner", and I don't want to share the source code. What would you think the best way to start with?
talkingpandas
CC BY-SA 4.0
2021-08-12T05:54:14.477Z
@talkingpandas Just do exactly what you said. What step is giving you trouble?
David Schwartz
CC BY-SA 4.0
2021-08-12T08:12:34.167Z
I still can't picture it clearly how they communicate between machine. For instance during initial full block download ( https://bitcoin.org/en/full-node#initial-block-downloadibd ) or when listening to inbound connection; From what exactly does it listen to? Because if there is an API, it can't be **decentralized**. And vice versa, where to push the data in absence of API? What exactly commands those data traffic to be sent (updated) into all machine in the network if there isn't one?
talkingpandas
CC BY-SA 4.0
2021-08-12T12:24:29.047Z
Been hours reading other thread in this forum, i think i am enlightened a bit now. Never thought it would be possible without API to communicate between machine. Moreover through internet port https://bitcoin.stackexchange.com/a/34041/124999
talkingpandas
CC BY-SA 4.0
2021-08-11T21:47:30.693Z
2021-08-11T21:47:30.693Z
David Schwartz
<p>Everyone says,</p>
<blockquote>
<p><strong>Bitcoin is decentralized.</strong> No central server is &quot;hosted the app&quot;</p>
</blockquote>
<p>But no matter how hard i am trying to get a grasp of it, i still couldn't understand how it works for exactly</p>
<ul>
<li>If its NOT hosted on central 3rd party server - does every miner <strong>store local copy of whole blockchain data</strong>? And newly joined miner will require to connect the network, and download whole blockchain?</li>
<li>If that so, it means could seamlessly write/read local files, which is only possible in desktop app, correct? (web app have security issues in accessing local client files) - does that means newly joined miner will require to &quot;download&quot; the .exe first to connect to network?</li>
<li>My previous assumption its in executable file format was based to the idea no one have access to its source code (each miner only have client app). But then, who deploy new update, is it voted as well? Will the miner require to download latest update?</li>
<li>The blockchain data seems not consist a security information (like password), and all datas were public. Which means, its the third party platform that does the job assigning what address to whom? How they could make sure no one will access another one's wallet? Do bitcoin core provide API for miner to push newly data?</li>
<li>I already searched multiple blockchain framework such as IBM's hyperledger, and to my knowledge its nowhere close to bitcoin. Even though they are blockchain-based, they still require central server, correct? - does that means if anyone want to create bitcoin-like platform, the best way to start with is by cloning the bitcoin core and make modification from there?</li>
</ul>

<blockchain>
How bitcoin exactly works?
talkingpandas
# How bitcoin exactly works?

(Asked by: username_0 on 2021-08-11)

Everyone says,

> **Bitcoin is decentralized.** No central server is "hosted the app"

But no matter how hard i am trying to get a grasp of it, i still couldn't understand how it works for exactly

* If its NOT hosted on central 3rd party server - does every miner **store local copy of whole blockchain data**? And newly joined miner will require to connect the network, and download whole blockchain?
* If that so, it means could seamlessly write/read local files, which is only possible in desktop app, correct? (web app have security issues in accessing local client files) - does that means newly joined miner will require to "download" the .exe first to connect to network?
* My previous assumption its in executable file format was based to the idea no one have access to its source code (each miner only have client app). But then, who deploy new update, is it voted as well? Will the miner require to download latest update?
* The blockchain data seems not consist a security information (like password), and all datas were public. Which means, its the third party platform that does the job assigning what address to whom? How they could make sure no one will access another one's wallet? Do bitcoin core provide API for miner to push newly data?
* I already searched multiple blockchain framework such as IBM's hyperledger, and to my knowledge its nowhere close to bitcoin. Even though they are blockchain-based, they still require central server, correct? - does that means if anyone want to create bitcoin-like platform, the best way to start with is by cloning the bitcoin core and make modification from there?

**Tags:** blockchain


---

## 2 answers

### Answer by username_1 on 2021-08-11. Score: 2

# Bitcoin in a nutshell

Bitcoin was designed as a purely peer-to-peer system of electronic cash with no privileged participants, no central controls and no trusted third parties.

## Cash

If you want to know how many dollar bills (banknotes) are in your wallet, you don't go to a bank, hand over your wallet and ask a bank employee to open your wallet and count whats inside it. You just look yourself. You don't need to trust someone else to do it for you. The same if you want to know how many coins are in your pocket. Bitcoin was intended to work the same way.

## Third parties

When you go into a shop and hand over some physical cash for a loaf of bread, you dont ask a bank to act as an intermediary, you may trust the shop to hand over the bread but you don't need a trusted third party. You and the shopkeeper are the first two parties and the only ones where trust may be necessary.

## Exchanges

Bitcoin's inventor envisaged that an economy could use Bitcoin as its currency. In that case there would be no need for any exchanges. Most ordinary folk don't need to use a currency exchange to receive salary or to buy things.

## Miners

At the beginning every Bitcoin wallet was also a miner. Miners have no special privileges allotted to them. In the beginning every wallet was what is called a full-node. They download the full journal of transactions we call the blockchain and verify it independently. This way they don't need to trust other people's nodes (wallets etc).

At the beginning Bitcoin's inventor did anticipate the need for nodes that don't download the whole transaction journal but rely on some semi-trusted nodes. This was Simplified Payment Verification (SPV) and nodes that use it are not full-nodes but lightweight nodes. These lightweight nodes are more vulnerable to fraud but can be useful for use on devices that lack storage capacity and processing power.

## Open source

The source-code of the original software was made public with a permissive licence that qualifies it as open source. Anyone can make their own version of that software. That tradition continues to this day and many of the most trusted wallet programs are open-source.

The security of Bitcoin does not depend on secrets in the source code. It does not depend on the integrity of any particular source code. It does rely on the majority of people using software that applies a common set of rules (sometimes called the consensus rules). Bitcoin has rules without rulers.

So long as we are careful to use software that applies the rules, our money is safe.

## Control and Authority

Many of these Bitcoin-wallet projects have a fairly open system of development where anybody with persuasive ideas can propose changes. It is up to the broader community to either adopt or reject those changes. No one person or organisation is in control of Bitcoin and the same applies to some major wallets.

## Security

Bitcoin does not rely on some central system of usernames and passwords. Every user chooses a random number and uses it as a private-key that is always kept secret. Using digital signatures, hashes and other fruits of public-key cryptography (but not cryptography itself) Bitcoin is able to give individuals exclusive control over the spending of amounts of money.

## Transaction journal

The only truth is the blockchain. That is where we, somewhat indirectly, keep track of who controls the spending of money. Every full-node has their own copy. By inspecting and verifying every part of it, every full node can independently come to a common global understanding of the state of the Bitcoin universe.

## Wallets

The only really significant data stored in a wallet is the secret number used as a private key.

The job of a wallet is: to use the transaction journal to keep track of your money; to use that secret number to spend money; to talk to a small random group of other nodes to pass on information about transactions.

## Addresses

Unlike normal addresses, Bitcoin addresses don't identify people, organisations or places. They are essentially a random-looking number that represents a Bitcoin script in a transaction in the transaction journal. This script usually determines which secret number (private-key) can be used to spend some money. So addresses are not assigned by others, they are just a number derived from details in a transaction. It is a number that can be made public and which another person can use to create a transaction that gives control over money to someone who knows a secret number without making that secret number known to anyone.

## Not trusting third parties

Any third party who sells Bitcoin related services that rely on you trusting them are outside the vision of Bitcoin's founder. I would argue that they are essentially parasitical and should be unnecessary. However many people find them and their services irresistibly alluring. Web based "wallets" are often of this type and I prefer to refer to them as accounts rather than as wallets because they contradict the original vision and often cause confusion and loss of money. **"Not your keys: not your Bitcoin!"**


---

### Answer by username_2 on 2021-08-11. Score: 0

> If its NOT hosted on central 3rd party server - does every miner store local copy of whole blockchain data? And newly joined miner will require to connect the network, and download whole blockchain?

Yes, unless they'd prefer to trust someone else (such as a mining pool) to do that for them.

> If that so, it means could seamlessly write/read local files, which is only possible in desktop app, correct? (web app have security issues in accessing local client files) - does that means newly joined miner will require to "download" the .exe first to connect to network?

Mining is an operation done at significant scale. You wouldn't control a mining operation from a small device. Typically, a mining operator or controller will decide what software they want to run, download its source code, confirm that they have an official release that they know is trustworthy, and then compile it themselves.

> My previous assumption its in executable file format was based to the idea no one have access to its source code (each miner only have client app). But then, who deploy new update, is it voted as well? Will the miner require to download latest update?

If the miner had no access to the source code, how could they know for sure that it was doing what they wanted it to do? It must be the reverse -- the miner must have control over the source code so they can ensure that they are doing what, and only what, they in fact want to do.

> The blockchain data seems not consist a security information (like password), and all datas were public. Which means, its the third party platform that does the job assigning what address to whom? How they could make sure no one will access another one's wallet? Do bitcoin core provide API for miner to push newly data?

Each user generates their own wallet using credentials that only they know.

> I already searched multiple blockchain framework such as IBM's hyperledger, and to my knowledge its nowhere close to bitcoin. Even though they are blockchain-based, they still require central server, correct? - does that means if anyone want to create bitcoin-like platform, the best way to start with is by cloning the bitcoin core and make modification from there?

Probably not since bitcoin uses mining to provide its security. You'd have to generate a large amount of value just to induce enough mining to keep the system secure and that would be a pretty huge challenge.

> **Comments:**
> **username_0**: Thank you for valuable input! +1  Regarding your last statement, Let's say I want to create simple blockchain with bitcoin like system, except it needs to be **permissioned** "miner", and I don't want to share the source code. What would you think the best way to start with?  
> **username_2**: @username_0 Just do exactly what you said. What step is giving you trouble?  
> **username_0**: I still can't picture it clearly how they communicate between machine. For instance during initial full block download ( https://bitcoin.org/en/full-node#initial-block-downloadibd ) or when listening to inbound connection; From what exactly does it listen to? Because if there is an API, it can't be **decentralized**. And vice versa, where to push the data in absence of API? What exactly commands those data traffic to be sent (updated) into all machine in the network if there isn't one?  
> **username_0**: Been hours reading other thread in this forum, i think i am enlightened a bit now. Never thought it would be possible without API to communicate between machine. Moreover through internet port https://bitcoin.stackexchange.com/a/34041/124999  

---

