<p>One of the core concepts of Bitcoin is that it has a <strong>decentralized</strong> transaction ledger (the Bitcoin blockchain). This means that every (full) node in the network has a copy of this ledger (as opposed to VISA for example where only one centralized party has a copy of the transaction ledger).</p>

<p>When new transactions have to be added to the blockchain, this results in a problem. The nodes in the Bitcoin network need to agree (or <strong>reach consensus</strong>) about a new state of the blockchain. The problem boils down to <em>"Which block of transactions will we all add to our blockchain next?"</em>.</p>

<p>Now, say all of the full nodes would have your proposed software routine that says <em>"I will create a new block of all the transactions of the past 10 minutes"</em>.</p>

<p>The result will be that <strong>different nodes will have different blockchains</strong>. </p>

<p>Transactions can't be propagated instantly across the entire Bitcoin network.
So a given transaction could fall within the 10 minute time-span for some nodes, but arrive late to other, more distant nodes.</p>

<p>The nodes are now in disagreement and it's unsure which blockchain is the true blockchain of the network.</p>

<p>So to prevent this, a consensus algorithm is needed, which allows all the nodes in the network to agree on the next block to add, so there is <strong>only one version of the truth</strong>.
One node will have to propose the next block to be added, and the other nodes will need to be able to easily verify that the block is valid.</p>

<p>PoW is just one example of a consensus algorithm, and it's indeed known to consume a lot of energy.
Other consensus algorithms exist that are more energy-efficient, e.g. PoS (Proof-of-Stake), PoC (Proof-of-Capacity), ...</p>

<p>But without one of these algorithms, there is no way of keeping <strong>one and the same</strong> decentralized blockchain.</p>

CC BY-SA 4.0
2021-12-30T20:37:27.193Z
I don't understand in the sense that if a node propose a block, it implicitly accepts it. If other nodes refuse the block,they will have a different blokchain? Unless the node that proposes the block needs to wait for the answer of all other nodes?
totalMongot
CC BY-SA 3.0
2017-07-30T12:24:59.190Z
2017-07-30T12:24:59.190Z
smizzlov
<p>Who would create the block? What if two people create different blocks and can't agree? If the whole network trusted one pool to create the block once every 10 minutes, it becomes completely centralised. Bitcoin uses the mining race to securely decentralise the decision of which block is the accepted block.</p>

CC BY-SA 3.0
2017-07-29T11:02:23.047Z
Appreciate the response MeshCollider.
now say, block is created by itself, assuming it is coded like that only. It won't be centralized, no pool is creating the block, but the code itself.
Piyush Chittara
CC BY-SA 3.0
2017-07-29T11:22:48.097Z
But if everyone's code makes a block based on the order it sees transactions, what if two different computers see the transactions in different orders? How can they reach agreement? The whole point is that everyone must agree
meshcollider
CC BY-SA 3.0
2017-07-29T14:06:13.927Z
No, not everyone is making blocks. Assume block is being created by blockchain itself every 5 minutes, and only one transaction from one public key in a block. According to priority, txns are automatically added to the block. It will stop the double spending, and no need of POW, and within 5 min, changes will be reflected in connecting nodes.
Piyush Chittara
CC BY-SA 3.0
2017-07-29T20:26:20.423Z
I think you completely misunderstand what the blockchain actually is. There is no code in the blockchain itself, there is no way for it to make blocks itself.
meshcollider
CC BY-SA 3.0
2017-07-30T15:56:45.233Z
Adding to Mesh's argument, how can you know your magic blockchain code hasn't been hacked? The value of having so many users on the network is its security. The whole point of a blockchain is so that the databse / ledger is decentralized. If the machine is the one running it, there is no way to know for sure that it isn't being manipulated.
James P.
CC BY-SA 3.0
2017-07-29T10:12:27.497Z
2017-07-29T10:12:27.497Z
meshcollider
<p>The problem in a peer-to-peer gossip network is that not every peer has the same information at the same time. This means that "only one transaction from one public key at a time" is <strong>not</strong> a trivial problem to solve. In fact, this is the core invention of Bitcoin: The Bitcoin network uses the blockchain to determine <strong>which transaction is to be considered "seen first"</strong>.</p>

CC BY-SA 3.0
2017-07-31T16:41:07.487Z
2017-07-31T16:41:07.487Z
Murch
<p>Bitcoin is designed to have an average time duration of 10 min between block mining. This is maintained by the difficulty attribute and haskey complexity. But mining takes so much power and it is a manual process as well.</p>

<p>Why it just not create a block every 10 min automatically?</p>

<p>Now bitcoin has 10kb(not sure exactly) reserved for priority transactions of pool. Let's just decide priority by the same functionality, and fill our block with transactions.</p>

<p>Users need only send transaction to the pool, no power lost and it is automated. Blocks will still have it's hash codes, and all immutability would be maintained. Just miner need not find it.
Say I have coded bitcoin like this: 
1. 5 min for every new block. 2. only one transaction from one public key at a time. It will stop the double spend, and no need of POW, and within 5 min, changes will be reflected in connecting nodes.</p>

<p>Why are such methods not used?? What are the drawbacks??</p>

CC BY-SA 3.0
2017-07-29T11:05:46.093Z
Thanks for the response alcio.
Say I have coded bitcoin like this:
1. 5 min for every new block.
2. only one transaction from one public key at a time.

It will stop the double spend, and no need of POW, and within 5 min, changes will be reflected in connecting nodes. What the drawbacks here??
Piyush Chittara
CC BY-SA 3.0
2017-07-31T16:43:45.573Z
Problem 2 is not trivial to solve and is in fact solved by creating the blockchain.
Murch
<blockchain><bitcoin-core><block><bitcoin-core-development>
What is the need of miners and mining?
Piyush Chittara
# What is the need of miners and mining?

(Asked by: username_0 on 2017-07-29)

Bitcoin is designed to have an average time duration of 10 min between block mining. This is maintained by the difficulty attribute and haskey complexity. But mining takes so much power and it is a manual process as well.

Why it just not create a block every 10 min automatically?

Now bitcoin has 10kb(not sure exactly) reserved for priority transactions of pool. Let's just decide priority by the same functionality, and fill our block with transactions.

Users need only send transaction to the pool, no power lost and it is automated. Blocks will still have it's hash codes, and all immutability would be maintained. Just miner need not find it.
Say I have coded bitcoin like this:
1. 5 min for every new block. 2. only one transaction from one public key at a time. It will stop the double spend, and no need of POW, and within 5 min, changes will be reflected in connecting nodes.

Why are such methods not used?? What are the drawbacks??

**Tags:** blockchain, bitcoin-core, block, bitcoin-core-development

> **Comments:**
> **username_0**: Thanks for the response alcio. Say I have coded bitcoin like this: 1. 5 min for every new block. 2. only one transaction from one public key at a time.  It will stop the double spend, and no need of POW, and within 5 min, changes will be reflected in connecting nodes. What the drawbacks here??  
> **username_1**: Problem 2 is not trivial to solve and is in fact solved by creating the blockchain.  

---

## 3 answers

### Answer by username_2 on 2017-07-30. Score: 3 | Accepted answer

One of the core concepts of Bitcoin is that it has a **decentralized** transaction ledger (the Bitcoin blockchain). This means that every (full) node in the network has a copy of this ledger (as opposed to VISA for example where only one centralized party has a copy of the transaction ledger).

When new transactions have to be added to the blockchain, this results in a problem. The nodes in the Bitcoin network need to agree (or **reach consensus**) about a new state of the blockchain. The problem boils down to *"Which block of transactions will we all add to our blockchain next?"*.

Now, say all of the full nodes would have your proposed software routine that says *"I will create a new block of all the transactions of the past 10 minutes"*.

The result will be that **different nodes will have different blockchains**.

Transactions can't be propagated instantly across the entire Bitcoin network.
So a given transaction could fall within the 10 minute time-span for some nodes, but arrive late to other, more distant nodes.

The nodes are now in disagreement and it's unsure which blockchain is the true blockchain of the network.

So to prevent this, a consensus algorithm is needed, which allows all the nodes in the network to agree on the next block to add, so there is **only one version of the truth**.
One node will have to propose the next block to be added, and the other nodes will need to be able to easily verify that the block is valid.

PoW is just one example of a consensus algorithm, and it's indeed known to consume a lot of energy.
Other consensus algorithms exist that are more energy-efficient, e.g. PoS (Proof-of-Stake), PoC (Proof-of-Capacity), ...

But without one of these algorithms, there is no way of keeping **one and the same** decentralized blockchain.

> **Comments:**
> **username_3**: I don't understand in the sense that if a node propose a block, it implicitly accepts it. If other nodes refuse the block,they will have a different blokchain? Unless the node that proposes the block needs to wait for the answer of all other nodes?  

---

### Answer by username_4 on 2017-07-29. Score: 1

Who would create the block? What if two people create different blocks and can't agree? If the whole network trusted one pool to create the block once every 10 minutes, it becomes completely centralised. Bitcoin uses the mining race to securely decentralise the decision of which block is the accepted block.

> **Comments:**
> **username_0**: Appreciate the response MeshCollider. now say, block is created by itself, assuming it is coded like that only. It won't be centralized, no pool is creating the block, but the code itself.  
> **username_4**: But if everyone's code makes a block based on the order it sees transactions, what if two different computers see the transactions in different orders? How can they reach agreement? The whole point is that everyone must agree  
> **username_0**: No, not everyone is making blocks. Assume block is being created by blockchain itself every 5 minutes, and only one transaction from one public key in a block. According to priority, txns are automatically added to the block. It will stop the double spending, and no need of POW, and within 5 min, changes will be reflected in connecting nodes.  
> **username_4**: I think you completely misunderstand what the blockchain actually is. There is no code in the blockchain itself, there is no way for it to make blocks itself.  
> **username_5**: Adding to Mesh's argument, how can you know your magic blockchain code hasn't been hacked? The value of having so many users on the network is its security. The whole point of a blockchain is so that the databse / ledger is decentralized. If the machine is the one running it, there is no way to know for sure that it isn't being manipulated.  

---

### Answer by username_1 on 2017-07-31. Score: 0

The problem in a peer-to-peer gossip network is that not every peer has the same information at the same time. This means that "only one transaction from one public key at a time" is **not** a trivial problem to solve. In fact, this is the core invention of Bitcoin: The Bitcoin network uses the blockchain to determine **which transaction is to be considered "seen first"**.


---

