Bitcoin Forum
May 07, 2024, 06:28:35 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Bitcoin difficulty and rewards clarity, and philosophical innovation thread.  (Read 258 times)
TheCryptomancer (OP)
Newbie
*
Offline Offline

Activity: 3
Merit: 0


View Profile WWW
September 01, 2017, 06:17:27 PM
 #1

Hello.

I've been paying a lot of attention to bitcoin and crypto for several weeks with mostly intense effort. (like most, I've known ABOUT it since the early days of silk road, but never paid much attention other than that.) I've absorbed a lot of information on almost every facet of the cryptoverse, and now feel semi confident on the topic of many altcoins, and bitcoin, and also now have a modest bittrex portfolio to compliment my newfound knowledge.

However, I still have some significant gray areas in my learning, part of the purpose of this thread is to raise some not-so superficial questions regarding the bitcion mining system, specifically pertaining to the proof-of-work and mining rewards concepts.

Beyond that, I have some "deep thoughts" about the way things maybe could or should be different, and I'd like to to hear what others might have to add or say about that.

Let me start with what I think I know.

The reward for signing a block is 12.5 BTC.
only one person gets the reward.

Now, as far as I've learned, completing a block ammounts to guessing a single string that, when appended to a completed block hash, hashes down to the "answer" known by the network.

So everyone is collectively spending over $1,000,000 USD per day to run GPUs that are essentially guessing at this string.

and then you are telling me that just ONE person gets the WHOLE reward?
Either i am wrong somewhere or this is in fact the case.
I'm kind of unsure.

presuming I'm correct on this picture.
1. how are mining companies able to produce evenly distributed contracts if potentially they won't keep getting "lucky" enough to get the rewards?

2. what other rewards are there, like transaction fees? How much do miners get? how do they get them, and how distributed are they?

3. Is it possible to run a successful cloud mining company just off the transaction fee rewards? Or will you tank if you never get a signed block reward?

4. Could any PC anywhere suddenly, and very very luckily just guess the right string out of nowhere and get 12.5 btc? AKA could i mine 12.5 BTC with an apple II by hitting the jackpot?

This brings me to the philosophical discussion. Shouldn't the reward be somewhat distributed? Can't there be some sort of "cooperative proof of work" where the "puzzle" is somehow actually "worked" on instead of just guessed at and the amount of contribution each miner put towards it can be measured, so they get a proportional reward? That way one lucky guesser doesn't get all the bank while all the other miners are left out in the cold?

What would a system like this look like? How would it be implemented?
I am a former class of 2009 computer science major from RPI, and I'd be interested in working with some one or some people on implementing some crypto solutions that involve cooperative work methods rather than competitive as there is in BTC and LTC. (ETH going proof of stake) ifyou don't want to just blurt out your thoughts on this i'd welcome private conversations through PM, my email cryptomancer16@gmail.com, or my blog https://cryptomancerblog.wordpress.com

would this be better, worse, why?
"In a nutshell, the network works like a distributed timestamp server, stamping the first transaction to spend a coin. It takes advantage of the nature of information being easy to spread but hard to stifle." -- Satoshi
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715063315
Hero Member
*
Offline Offline

Posts: 1715063315

View Profile Personal Message (Offline)

Ignore
1715063315
Reply with quote  #2

1715063315
Report to moderator
1715063315
Hero Member
*
Offline Offline

Posts: 1715063315

View Profile Personal Message (Offline)

Ignore
1715063315
Reply with quote  #2

1715063315
Report to moderator
DannyHamilton
Legendary
*
Offline Offline

Activity: 3388
Merit: 4623



View Profile
September 01, 2017, 06:53:52 PM
 #2

The reward for signing a block is 12.5 BTC.

The subsidy for being the first to complete the proof-of-work on a block is currently 12.5 BTC.

The reward consists of the subsidy PLUS all the transaction fees from all the transactions that are included in that block.

The subsidy began as 50 BTC in January of 2009.  It was cut in half to 25 BTC at block number 210,000 in November 2012. It was cut in half again to 12.5 BTC at block number 420,000 in July 2016. It will be cut in half again to 6.25 BTC at block number 630,000 sometime in the year 2020.

only one person gets the reward.

There  is only 1 transaction that pays the reward in the block.  That reward can be paid to 1 person, or it can be split up across multiple people.  The number of people that receive any part of the reward is a decision that is left up to the person (or software) that builds the block.

Now, as far as I've learned, completing a block ammounts to guessing a single string that, when appended to a completed block hash, hashes down to the "answer" known by the network.

Guessing a number, not a string.

The number is appended to a partial block header, not a completed block hash.

Only the block header is hashed.

So everyone is collectively spending over $1,000,000 USD per day to run GPUs that are essentially guessing at this string.

It hasn't been effective to perform Bitcoin proof-of-work with GPUs for several years now.  Proof-of-work is now handled by Application Specific Integrated Circuits (ASIC).

I suspect the total amount being spent by everyone combined is somewhere between $5 million per day and $10 million per day.  Perhaps a bit less.

and then you are telling me that just ONE person gets the WHOLE reward?

There are 144 blocks per day on average.  That means that in a given day there are 144 rewards paid.  Additionally, most of those rewards are split among many participants.
 
Either i am wrong somewhere or this is in fact the case.
I'm kind of unsure.

You are overlooking the concept of a mining pool.

In that case, the pool builds the blocks and then gives them to participants to handle the guessing and hashing.  If anyone in the pool succeeds, then the pool gets paid the reward and the pool then shares that rewards with all the participants (splitting it up proportionally based on the amount of hashing each participant contributed).

presuming I'm correct on this picture.
1. how are mining companies able to produce evenly distributed contracts if potentially they won't keep getting "lucky" enough to get the rewards?

Contracts?  You're talking about "cloud mining"?  Those are almost all scams.

2. what other rewards are there, like transaction fees?

Correct.

How much do miners get? how do they get them, and how distributed are they?

This was explained above.  The reward is the subsidy PLUS the fees of the transactions that are included in the block. They are distributed to the participants by the pool that earns the reward.

3. Is it possible to run a successful cloud mining company just off the transaction fee rewards?

If you have enough hardware to run a cloud mining company, then you can earn more money by mining for yourself instead of selling the hash power to others.  Most cloud mining companies are scams.

Or will you tank if you never get a signed block reward?

Lets stop talking about the scams that are "cloud mining" companies.  Instead lets talk about mining pools.

A mining pool will pay out based on the hash power.  While luck can create variations, over the long term earnings will approach the mathematical probability.

4. Could any PC anywhere suddenly, and very very luckily just guess the right string out of nowhere and get 12.5 btc?

Yes.  But if you are mining with a P.C., then you probably have a better chance of winning the lottery (twice in a row) than getting a block by yourself.

AKA could i mine 12.5 BTC with an apple II by hitting the jackpot?

Yes.  But it is FAR more likely that you will mine for a few hundred years without hitting the jackpot at all.

This brings me to the philosophical discussion. Shouldn't the reward be somewhat distributed?

It is.

Can't there be some sort of "cooperative proof of work" where the "puzzle" is somehow actually "worked" on instead of just guessed at and the amount of contribution each miner put towards it can be measured, so they get a proportional reward?

You are describing a mining pool.  They already exist.

That way one lucky guesser doesn't get all the bank while all the other miners are left out in the cold?

This is why people created mining pools in the first place.

What would a system like this look like?

It would look like a mining pool.

How would it be implemented?

https://en.bitcoin.it/wiki/Pooled_mining

I am a former class of 2009 computer science major from RPI, and I'd be interested in working with some one or some people on implementing some crypto solutions that involve cooperative work methods rather than competitive as there is in BTC and LTC. (ETH going proof of stake) ifyou don't want to just blurt out your thoughts on this i'd welcome private conversations through PM, my email cryptomancer16@gmail.com, or my blog https://cryptomancerblog.wordpress.com

You're a bit late.  This was done back in 2010.

would this be better, worse, why?

Neither. It's how it already works.
TheCryptomancer (OP)
Newbie
*
Offline Offline

Activity: 3
Merit: 0


View Profile WWW
September 01, 2017, 09:26:00 PM
 #3

Thanks for the thorough response DannyHamilton it helped a lot.

Sorry I was a bit fuzzy on the way i was talking I do realize about the halving and that its actually more on asics than gpus I was just speaking in casual terms.

Quote
You are overlooking the concept of a mining pool.

In that case, the pool builds the blocks and then gives them to participants to handle the guessing and hashing.  If anyone in the pool succeeds, then the pool gets paid the reward and the pool then shares that rewards with all the participants (splitting it up proportionally based on the amount of hashing each participant contributed).


I think I understand. So the pool is like a wrapper around every participating miner. And all the miners agree to sacrifice the reward if they receive it for the good of the pool?

so miners are only generating guesses then, not performing the entire mining function in it's entirety? The pool would be doing the final check?

this leads to my next philosophical question.

OK, so at least people are getting a FAIR SHARE of what they are doing. Due to mining pools. But the question is WHY?

Think of it this way.
Maybe I am an accountant. I need to add the numbers from the sales for the company i work for for the whole year.
That would be considered a "job."
It is useful work being completed every time I add on the next transaction.
Now obvously i'd use a computer for this in today's world.

Hence, each step of the computer's computation time is considered "useful work." It generates information that is useful to my business owner, hence i get paid, hence i get to eat food and be happy. Understandable.

Now. Guessing a block.

OK everyone sees the value of finally getting the block.

But the act of guessing astronomical amount of numbers just for the sake of making a number on a computer screen change, could be equated to sheer silliness from a superficial perspective.

To use my prevous statement. OK so each step of computation time is making progress towards the goal of finally getting the number. So you might think, well buddy, it's the same thing as what you were saying. Each clock cycle is doing useful work towards the end goal.

But we only have to do it like that because the designers TOLD us it had to be that way.

we litereally set up a system that says, BLARGH IM JUST GONNA RUN THESE GIGAFLOPS SO FAST AND THEN U'LL KNOW BUDDY, ULL KNOW FOR SURE I GOT HELLA HASH POWER BUDDY SO YEA THAT MEANS MONEY!

lol it is so screwy.

it seems to break down into nonsense.

But we are creating something.
But we are creating something by doing non-useful nonsense tasks.

I guess you have to think of the social value of bitcoin. That it is a decentralized option, has good security, all the pros we know about. However on thing that is bogging it down is high transaction fees. You can't really use it as-is. You have to put it into cash form or use it within somewhat proprietary frameworks to avoid transacting too much.

But on the other side, it feels like a lot of wasted energy for the sake of sheer greed.

What I'm trying to say is that the "difficulty" concept seems arbitrary. I'm just trying to imagine a system LIKE bitcoin but that wouldn't require so much nonsense. Can you grasp what I am thinking?

Can we have decentralization, ease and security of transaction, speed of transaction, to anywhere, to anyone, all that. Without asking our computers to just guess blindly at things?

Can computers do anything more useful? Or can they only manufacture greed and heat?

You know what i mean?
DannyHamilton
Legendary
*
Offline Offline

Activity: 3388
Merit: 4623



View Profile
September 02, 2017, 01:29:25 AM
 #4

So the pool is like a wrapper around every participating miner.

Right.

Another way to look at it is that the participating miners are renting their hash power to the pool.  Due to competitive forces, the market rate for that hash power naturally approaches the probability of that much hash power succeeding multiplied by the current reward.

And all the miners agree to sacrifice the reward if they receive it for the good of the pool?

They don't get to receive it directly.  Generally it is paid directly to the pool in the solved block, and the pool then distributes it.  If you don't agree to this, then you don't get to participate in a pool and you are left to try your luck all by yourself and wait for "luck" with your limited hash power.

so miners are only generating guesses then, not performing the entire mining function in it's entirety?

The entire mining function consists of:
  • Choose a set of valid unconfirmed transactions and assemble them into a block
  • Build an 80 byte header for that block
  • Repeatedly modify that 80 byte header and hash it until the resulting hash value is less than the current difficulty target

The pool handles the first 2 steps (which takes a fraction of a second) and then it hands off the header to the pool participants.  They then handle the third step until either someone in the pool submits a valid "solved" block, or the pool received a valid solved block from the network.  In either case, it starts over at step 1.

The pool would be doing the final check?

Every node on the peer-to-peer network performs a check on every block that it receives.  Nodes never trust anything they get from a peer.  So the final check is performed by each node before it adds the block to its own copy of the blockchain.

But yes, the miner returns the solved block to the pool, the pool verifies that the block is actually solved and then broadcasts it to all connected peers.

But the question is WHY?

Because the pool needs the hash power, and people are willing to provide it for a price.

Think of it this way.
Maybe I am an accountant. I need to add the numbers from the sales for the company i work for for the whole year.
That would be considered a "job."
It is useful work being completed every time I add on the next transaction.
Now obvously i'd use a computer for this in today's world.

Hence, each step of the computer's computation time is considered "useful work." It generates information that is useful to my business owner, hence i get paid, hence i get to eat food and be happy. Understandable.

That's one way people earn money.  It's not the only way.

Now. Guessing a block.

Ok.

OK everyone sees the value of finally getting the block.

Correct.

But the act of guessing astronomical amount of numbers just for the sake of making a number on a computer screen change, could be equated to sheer silliness from a superficial perspective.

Certainly. If it didn't have a purpose.  However, in this case it serves the purpose of securing the blockchain against modification while providing a method of reaching distributed consensus.  That is a very valuable thing that people are willing to pay a lot of money for.

To use my prevous statement. OK so each step of computation time is making progress towards the goal of finally getting the number. So you might think, well buddy, it's the same thing as what you were saying. Each clock cycle is doing useful work towards the end goal.

But we only have to do it like that because the designers TOLD us it had to be that way.

And the designers told us it had to be that way, because it is a method that everyone (everyone that understands the process) recognizes as securing and enforcing a distributed consensus which can be used to secure a global transaction system without needing to trust any single entity. If someone can come up with a better way to do that, then the proof-of-work system would quickly die.  However, in 2009, this was the first workable solution that anyone had ever come up with, and nobody has come up with a better solution yet.

we litereally set up a system that says, BLARGH IM JUST GONNA RUN THESE GIGAFLOPS SO FAST AND THEN U'LL KNOW BUDDY, ULL KNOW FOR SURE I GOT HELLA HASH POWER BUDDY SO YEA THAT MEANS MONEY!

Nah.  Did you even read the white paper? Do you understand why it is difficult to reach a distributed consensus? And how Bitcoin accomplishes it?

As a starting point, try watching this video.  It's a little light on details, and it generalizes some things, but it does a pretty good job of demonstrating the trust issues with a distributed peer-to-peer ledger system, and showing how bitcoin solves it:

https://www.youtube.com/watch?v=bBC-nXj3Ng4

We set up a system that says:
"You don't need to trust any third party.  Control over value can be exchanged electronically, and because of the financial incentives you can confirm that the whole world agrees that you have control over a specific amount of bitcoins. You don't need to get permission from anyone to use the system, and as long as you can communicate with a peer node somewhere in the world nobody can keep you from using the system. As long as you generate your private keys properly and you don't reveal your private keys to anybody, it is impossible for anybody to seize, freeze, or steal those bitcoins."

But we are creating something.

Not sure what you mean there.

We are using something (the bitcoin protocol) that was created in 2009.

Right now, that protocol is using inflation (release of value into the market) to subsidize those that choose to participate in securing the system.  Eventually that subsidy will shrink to 0 BTC and those that choose to participate in securing the system will be paid entirely with the transaction fees from the transactions that occur on that system.

But we are creating something by doing non-useful nonsense tasks.

It is useful.

Think about it like this.

If you just go out with a shovel and start digging a hole in the ground, you are doing a "non-useful nonsense task".

However, if you happen to agree to dig that hole where somebody needs it, the task hasn't changed, but someone has found a way to make use of that task and is willing to pay you to do that task for them.

I guess you have to think of the social value of bitcoin. That it is a decentralized option, has good security, all the pros we know about. However on thing that is bogging it down is high transaction fees. You can't really use it as-is.

Yes, you certainly can. If you are sending $10 million dollars of value to someone in another country, a transaction fee of $100 to get that transaction settled in approximately 10 minutes would seem VERY economical.  Generally, bitcoin can't economically be used for small value transactions, because the cost is such a large percentage of the transaction value.  At the moment bitcoin isn't designed to handle small value transactions.  It isn't a perfect system for every purpose. But it definitely has value and can be used for the right purposes.

There is some though that scaling solutions (SegWit, bigger blocks, side-chains, off-chain transactions, etc) will make it more useful to transfer less value, but there will always be a limit of some sort where the transaction isn't valuable enough to make it worth the cost.

But on the other side, it feels like a lot of wasted energy for the sake of sheer greed.

Greed is why the incentive structure works.  There wouldn't be enough willing participants expending the necessary resources to make it work if they didn't think they could profit from it. In that case their wouldn't be any security or reliability and the whole system wouldn't work.

What I'm trying to say is that the "difficulty" concept seems arbitrary. I'm just trying to imagine a system LIKE bitcoin but that wouldn't require so much nonsense. Can you grasp what I am thinking?

I understand that you want a system that provides the feature of reliable trustless decentralized consensus without the costs that the Bitcoin solution requires.  If you can come up with such a solution that would actually work, then you will become the next Satoshi Nakamoto.

Can we have decentralization, ease and security of transaction, speed of transaction, to anywhere, to anyone, all that. Without asking our computers to just guess blindly at things?

Nobody has come up with a workable solution yet.  Good luck.

Can computers do anything more useful?

More useful than providing "decentralization, ease and security of transaction, speed of transaction, to anywhere, to anyone, all that"?

Sure, and some computers do.  But that seems pretty valuable and useful to me.

Or can they only manufacture greed and heat?
You know what i mean?

They are not "manufacturing greed and heat".

The protocol uses greed as a tool to encourage participation, and heat can be a useful byproduct.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!