8

A Hash Function maps "data of arbitrary size to fixed-size values". As an incredibly simple hash, consider a function only works on numbers and simply returns the last 3 (decimal) digits (ie., the 1s, 10s, and 100s places). Using this simple hash, 5 would hash to 005, and 123,456 would hash to 456. A Bitcoin block contains a handful of fields (...


7

Because Everyone can quickly use the transaction data to re-calculate the hash and check that it matches and is less than the target value. Computing the hash is not what takes time, it is altering the transactions details (e.g. the "nonce" value) until you find an arrangement that hashes to a value less than the target. On average this takes an ...


7

It's not trivial a) to agree on the time in a distributed system, especially how much time has passed between two events, b) to establish when exactly a block candidate was found. Further, when a node is catching up with the chaintip after being offline, it has no means whatsoever to determine whether a block was actually found within the allocated timeframe....


4

ASIC-resistance is a mirage. Application Specific Integrated Circuits (ASICs) are made to do one thing only and will always beat general purpose hardware. "General purpose computational devices like CPUs, GPUs, and even DRAM all make substantial compromises to their true potential in order to be useful for general computation." –David Vorick, &...


4

Bitcoin should switch to BFT (Byzantine Fault Tolerant) PoS which is secure by definition. Most people that don't like PoS are thinking in "vanilla" or "chain based" PoS protocols which are certainly more insecure than PoW. Ethereum 2.0 is using Casper currently in the Beacon Chain, and other coins are also using BFT PoS protocols. I will ...


4

the code could have a way to order transactions and if an attacker decides to do the opposite intentionally and decides to spam the network This is the crux of the issue: how do you achieve this? It isn't a trivial problem to solve in a decentralized network. The more generalized version of this non-trivial problem is called the Byzantine General's Problem, ...


4

There are several aspects here that are worth pointing out. The 'little man" rarely wins, simply because almost all mining happens in large pools, and they win proportionally to their hashrate. This isn't due to unfairness in mining, but simply due to the fact that the expected variance in payout is too large for most small hashrate entitites to risk ...


4

The key point of the Bitcoin design is to create a system that provides a reliable transaction record without any central coordination or arbiter. Instead, Bitcoin is a distributed system where a consensus is reached using a "consensus algorithm" that can be repeatedly evaluated by every node on the network. As Bitcoin is operating today, the ...


4

What happens if, for instance, a block's nonce is so large that the block's size exceeds the limit? The nonce is of a fixed size, 4 bytes. It can not be any other size. Is there any systematic way of setting this limit without knowing how to break SHA256? SHA256 has little to do with the validity of a block, having broken SHA256 in any way would not ...


3

would there be a way to change the algorithm to limit how many transactions a given mining installation could process per day, No. Miners can submit blocks anonymously, there is no mechanism by which miners can or do 'register with the network' in order to perform their mining work. Further, energy use has nothing to do with how many transactions are ...


3

No, it does not seem possible to impose limitations as proposed on miners without severely impacting key properties of Bitcoin. The proposed change would at least require registering miners and instituting some sort of oversight mechanism to evaluate their participation. The likely outcome would be some mix of reduced utility and evasion of the oversight at ...


3

Like chytrik said, the paper is light on all the interesting details. How do the rules get enforced? How are miners identified? How is the global time agreed upon? Why wouldn't miners just hop pools for the second round? What happens when miners fiddle with their block template's timestamps to get a head start on mining the second round block in case the ...


3

I think that implementing the protocol described in this paper wouldn't do much to diminish the total energy spent mining, but it would increase network instability and the potential for malicious miners to game the network to their advantage. This protocol creates a condition where every other block actually requires that the miner to find 2 valid blocks in ...


3

How does Bob get this proof of work or how does Bobs message went to a person who has such I proof? Bob offers a fee to whoever attaches his transaction to a block with the necessary proof of work. Now Bob wants to get his transaction to someone who can attach it and people who generate proof of work want Bob's transaction so they can get the fee. When two ...


3

The current network hashrate is around 150 EH/s, which means you need to compute around 90,000,000,000,000,000,000,000 hashes for every block. This is an incredible amount of computation with energy costs comparable to smaller countries. Creating a merkle tree from mempool transactions and validating them, on the other hand, can be done easily even on a low-...


3

Confirmation is not Validation Miners are not Adjudicators How does the 1-CPU-1 vote works There is no voting system in Bitcoin. There is no counting of votes. When Nakamoto wrote about voting in the Bitcoin whitepaper, they were using the word in an abstract, almost poetic way, not literally. Just as tigers vote for species of deer by choosing which to ...


3

To put it simply: digital things are infinitely reproducible with very little cost, and so if we are attempting to create a digital money system, we need to make sure that users cannot simply copy & paste their money, to create (infinitely) more money. Functionally, this means that we need to solve the double-spend problem, and to do that, what we ...


3

But the merkle root must be different to each miner/node due to transaction order and the generation transaction, Correct. so how do other nodes come to consensus if their transactions are different. They don't. Every miner is fully responsible for the choice of their own transactions. There is no need for different miners to agree on the transaction ...


3

There is no advantage or disadvantage for miners to include transactions, except for: If they don't include transactions they don't receive the fees (which are still dwarfed by subsidy for now, but perhaps not forever), though fees can also be paid out of band. It takes some time to build a block candidate with new transactions immediately after learning ...


3

In a nutshell, mining solves the problem of achieving a globally agreed ordering of transactions and selection of one of several incompatible transactions. Here's the problem that needs a solution: If I have 10 Bitcoin and I simultaneously introduce to two distant parts of the network a transaction that gives 10 Bitcoin to Alice and a transaction that gives ...


3

The downsides outweigh the upsides: as you mentioned this would require a hard fork, and would leave everyone (not just mining farms) who owns a Bitcoin miner with a very expensive paperweight, and as such it's unlikely a large enough portion of the community is willing to make the change for it to be successful. It would require throwing away a significant ...


2

It could! An attacker could replace a block at arbitrary depth given that they can maintain majority hashrate sufficiently long. Every block in the Bitcoin blockchain commits to its predecessor by including the previous block's hash in the header. Therefore, each block inductively commits to all previous blocks. This prevents a block from being swapped out, ...


2

First of all, "difficulty" as a concept does not exist in the protocol. It's a unit intended only for human consumption. Internally, the value that corresponds with it is the target. The target is a 256-bit number, computed for every block, and a block is valid if its hash (interpreted as 256-bit number as well) is less than or equal to the target. ...


2

How does a blockchain verify Blockchains do not verify anything; the network does. But blockchains can be used to verify things (in fact, that is the whole point of them). that the hash provided (the one with the leading zeros that is supposed to be unique …) is indeed unique Hashes are unique, by definition, in the sense that each block header has ...


2

@Sprout Coder The winning miner does not supply the hash to the network to be verified. He supplies the block. The first 80 bytes of a Bitcoin block are the block header. The block is not valid if the hash of the header is greater than the target hash. The miners hash the 80-byte header repeatedly, making a small change each time. When a miner finds a header ...


2

Your approach is interesting however to have a significant energy-consumption decrease you need to have a signficiant reward decrease which will involve a significant hash power decrease since then the security would have a significant decrease (because any old high hash power organization like current mining pool could "easily" reach 51 % of hash ...


2

Miner2 was really close to mining their block when Miner1 finished (perhaps within 10 increments of a nonce). This is not what's happening during mining. Mining isn't a gradual process where you could be "really close" to getting a block mined. Rather it is a constant lottery, with each attempt (incrementing a nonce and producing a block hash) ...


2

Two potential problems with this idea, somewhat related. Mining incentives will fluctuate during the 10-minute period, depending on the difficulty of the current block "candidate". If it is higher than expected, miners will be incentivised to stop mining until the start of the next period. In an extreme case, it might be that all miners stop ...


2

I believe that paper to be misguided. The properties a good proof-of-work function needs are: Committing to blocks. The contents of a block should be a parameter that goes into the PoW, in such a way that altering the blocks invalidates the PoW. Cheap to verify. Just for performance of validators/nodes. Configurable difficulty to create. The rate of blocks ...


2

since you created enough "nodes" to effectively have 51%, The 51% attack discussed for Bitcoin is 51% of hashing power, not 51% of nodes. Bitcoin tries to keep one coin being produced every 10 minutes The 10 minutes applies to blocks, not coins. There can be many Bitcoins minted per block (depending on the halving rule and block-height). The ...


Only top voted, non community-wiki answers of a minimum length are eligible