Bitcoin Forum
May 04, 2024, 02:17:25 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: Proof of Min  (Read 1753 times)
Anders (OP)
Full Member
***
Offline Offline

Activity: 126
Merit: 100



View Profile
August 14, 2014, 05:24:46 AM
Last edit: August 14, 2014, 08:21:00 AM by Anders
 #1

Here is a system for fast transaction times called Proof of Min (PoM):

A distributed time server generates UTC timestamps every second with low network latency. Each timestamp includes a random nonce that is unknown until it is generated by the time server.

The timestamps alternate with the types START and STOP. When the miners receive a START timestamp they start searching for blocks with as low hash value as possible. Each block includes the START nonce. When the miners receive a STOP timestamp they check which of the submitted blocks has the lowest (min) hash value and include it in the block chain.

EDIT: Each miner submits one block (with the lowest hash value found during the time period) to the network of miners. The block must be sent before the next STOP timestamp, early enough to be registered by the other miners.

This will give transaction times of around 2 seconds.
You can see the statistics of your reports to moderators on the "Report to moderator" pages.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714789045
Hero Member
*
Offline Offline

Posts: 1714789045

View Profile Personal Message (Offline)

Ignore
1714789045
Reply with quote  #2

1714789045
Report to moderator
1714789045
Hero Member
*
Offline Offline

Posts: 1714789045

View Profile Personal Message (Offline)

Ignore
1714789045
Reply with quote  #2

1714789045
Report to moderator
1714789045
Hero Member
*
Offline Offline

Posts: 1714789045

View Profile Personal Message (Offline)

Ignore
1714789045
Reply with quote  #2

1714789045
Report to moderator
gmaxwell
Staff
Legendary
*
Offline Offline

Activity: 4158
Merit: 8382



View Profile WWW
August 14, 2014, 06:08:57 AM
 #2

And send 10 gajigga bytes of potentially min traffic around the network.  Besides unless your "distributed timestamp server" is another POW blockchain (in which case nothing has been achieved) its not obvious how to construct that in a decentralized way.

Generally if you can assume the existence of such a construct no mining is needed at all. Mining exists basically to solve that problem.
Relnarien
Sr. Member
****
Offline Offline

Activity: 399
Merit: 257


View Profile
August 14, 2014, 06:18:46 AM
 #3

Your idea is flawed.

1. How would a distributed time server generate a single, unique nonce per block? Either the nonce generator would have to be centralized, which is obviously not wanted in a decentralized currency, or a malicious entity can just recode the client to produce a timestamp and nonce combination which is already known to produce a very low hash value.

2. In order to check which hash has the lowest value, the network would have to store every submitted hash until the block is found. If each miner could produce at least 1000 hashes per second and there were at least 100 miners currently hashing, then at least 1 million hashes with their accompanying block contents would have to be stored by each node that verifies the hashes every couple of seconds. That's a lot of memory, not to mention a lot of overhead in time to verify each hash in case any malicious entity submits multiple fraudulent hashes with low hash values. 1000 hashes per second is not even a lot.

3. 2 second transaction times will create an extremely bloated blockchain, not to mention a ton of orphaned blocks. Who really needs such a quick transaction period?
Anders (OP)
Full Member
***
Offline Offline

Activity: 126
Merit: 100



View Profile
August 14, 2014, 06:20:16 AM
 #4

And send 10 gajigga bytes of potentially min traffic around the network.  Besides unless your "distributed timestamp server" is another POW blockchain (in which case nothing has been achieved) its not obvious how to construct that in a decentralized way.

Generally if you can assume the existence of such a construct no mining is needed at all. Mining exists basically to solve that problem.

So you mean such distributed time server would remove the need for mining entirely? The time server could be tricky to implement, but maybe doable!

NTP is perhaps something that could be used as a foundation for the distributed time server:

"Network Time Protocol (NTP) is a networking protocol for clock synchronization between computer systems over packet-switched, variable-latency data networks. In operation since before 1985, NTP is one of the oldest Internet protocols in use. NTP was originally designed by David L. Mills of the University of Delaware, who still develops and maintains it with a team of volunteers.

NTP is intended to synchronize all participating computers to within a few milliseconds of Coordinated Universal Time (UTC).[1]:3 It uses a modified version of Marzullo's algorithm to select accurate time servers and is designed to mitigate the effects of variable network latency." -- http://en.wikipedia.org/wiki/Network_Time_Protocol
Anders (OP)
Full Member
***
Offline Offline

Activity: 126
Merit: 100



View Profile
August 14, 2014, 06:25:56 AM
 #5

Your idea is flawed.

1. How would a distributed time server generate a single, unique nonce per block? Either the nonce generator would have to be centralized, which is obviously not wanted in a decentralized currency, or a malicious entity can just recode the client to produce a timestamp and nonce combination which is already known to produce a very low hash value.

Here is an example of random nonce generation:

"(I'm aware that people on the forums are coming up with randomness protocols for proof-of-stake, proof-of-activity and the like which don't involve external true randomness like lotteries - they just hash the last hundred blocks' hashes together, or something like that. I don't think this is good enough. [For their application or for mine!] Someone producing the latest block, given the previous 99, can privately produce billions of cheap variations on it, by varying the order the transactions are listed etc, until they find, and publish, the one that "games" the randomness in their favour. However, if I'm wrong about this, and hashing the last hundred blocks is in fact fine, then good! We can drop the lottery rigmarole!" -- https://en.bitcoin.it/wiki/Proof_of_burn

Quote
2. In order to check which hash has the lowest value, the network would have to store every submitted hash until the block is found. If each miner could produce at least 1000 hashes per second and there were at least 100 miners currently hashing, then at least 1 million hashes with their accompanying block contents would have to be stored by each node that verifies the hashes every couple of seconds. That's a lot of memory, not to mention a lot of overhead in time to verify each hash in case any malicious entity submits multiple fraudulent hashes with low hash values. 1000 hashes per second is not even a lot.

Each miner would only submit one hash value (the lowest found during the time period).

Quote
3. 2 second transaction times will create an extremely bloated blockchain, not to mention a ton of orphaned blocks. Who really needs such a quick transaction period?

That could be a problem. I don't know the exact details about that.
jl2012
Legendary
*
Offline Offline

Activity: 1792
Merit: 1093


View Profile
August 14, 2014, 06:51:56 AM
 #6

And send 10 gajigga bytes of potentially min traffic around the network.  Besides unless your "distributed timestamp server" is another POW blockchain (in which case nothing has been achieved) its not obvious how to construct that in a decentralized way.

Generally if you can assume the existence of such a construct no mining is needed at all. Mining exists basically to solve that problem.

So you mean such distributed time server would remove the need for mining entirely? The time server could be tricky to implement, but maybe doable!

NTP is perhaps something that could be used as a foundation for the distributed time server:


Are you saying that your whole proposal is building on "perhaps something"? Come back after you figure out how it might work.

Donation address: 374iXxS4BuqFHsEwwxUuH3nvJ69Y7Hqur3 (Bitcoin ONLY)
LRDGENPLYrcTRssGoZrsCT1hngaH3BVkM4 (LTC)
PGP: D3CC 1772 8600 5BB8 FF67 3294 C524 2A1A B393 6517
Anders (OP)
Full Member
***
Offline Offline

Activity: 126
Merit: 100



View Profile
August 14, 2014, 07:43:45 AM
 #7

And send 10 gajigga bytes of potentially min traffic around the network.  Besides unless your "distributed timestamp server" is another POW blockchain (in which case nothing has been achieved) its not obvious how to construct that in a decentralized way.

Generally if you can assume the existence of such a construct no mining is needed at all. Mining exists basically to solve that problem.

So you mean such distributed time server would remove the need for mining entirely? The time server could be tricky to implement, but maybe doable!

NTP is perhaps something that could be used as a foundation for the distributed time server:


Are you saying that your whole proposal is building on "perhaps something"? Come back after you figure out how it might work.

A distributed time server with random nonce generation is probably tricky to develop. But it's the general idea I wanted to present. So that other people can figure out possible solutions or explain why it would be impossible.
Anders (OP)
Full Member
***
Offline Offline

Activity: 126
Merit: 100



View Profile
August 14, 2014, 07:51:09 AM
 #8

Who really needs such a quick transaction period?

I forgot to answer that. Here is a use case:

1. Person A buys a coffee at Starbucks.
2. A restless person B standing in line shouts "Hurry up, will ya?"
3. Person A pays with a two-second bitcoin transaction.
4. The cashier sees that the transaction was completed.
5. The next customer standing in line can be served.

 Cheesy
Anders (OP)
Full Member
***
Offline Offline

Activity: 126
Merit: 100



View Profile
August 14, 2014, 08:29:58 AM
 #9

... or a malicious entity can just recode the client to produce a timestamp and nonce combination which is already known to produce a very low hash value.

Another part I forgot to answer. The timestamp nonce is included in the block. So the miners can check if the nonce included is the same as the current START timestamp nonce from the distributed time server. The miners have to wait for the START nonce in real-time, since they don't know what the random value of the nonce will be. And if the miners try to generate their own nonce values, the other miners will immediately see that those values are different than the Start timestamp nonce from the distributed time server.
Anders (OP)
Full Member
***
Offline Offline

Activity: 126
Merit: 100



View Profile
August 14, 2014, 08:49:45 AM
 #10

Or maybe a random nonce is unnecessary! Because it will be impossible for the miners to know what exact transactions will be included in the block. And then the UTC timestamp itself will act as a nonce. And the UTC timestamp is fixed and cannot be altered since it must be included in the block. A miner can then pre-calculate blocks but only in a limited way since the stream of new incoming transactions is unpredictable.
gmaxwell
Staff
Legendary
*
Offline Offline

Activity: 4158
Merit: 8382



View Profile WWW
August 14, 2014, 11:46:59 AM
 #11

NTP isn't trustless. You trust your servers and if they lie to you, your time will be wrong.
Anders (OP)
Full Member
***
Offline Offline

Activity: 126
Merit: 100



View Profile
August 14, 2014, 03:02:44 PM
 #12

NTP isn't trustless. You trust your servers and if they lie to you, your time will be wrong.

Hmm... Not good. It should definitely be trustless. Otherwise it's a step back technologically. Unless NTP is so established by now that it can be relied upon. That could be worth investigating. The Internet itself is actually not trustless. NTP I assume is a very battle tested protocol.
jl2012
Legendary
*
Offline Offline

Activity: 1792
Merit: 1093


View Profile
August 14, 2014, 03:07:51 PM
 #13

And send 10 gajigga bytes of potentially min traffic around the network.  Besides unless your "distributed timestamp server" is another POW blockchain (in which case nothing has been achieved) its not obvious how to construct that in a decentralized way.

Generally if you can assume the existence of such a construct no mining is needed at all. Mining exists basically to solve that problem.

So you mean such distributed time server would remove the need for mining entirely? The time server could be tricky to implement, but maybe doable!

NTP is perhaps something that could be used as a foundation for the distributed time server:


Are you saying that your whole proposal is building on "perhaps something"? Come back after you figure out how it might work.

A distributed time server with random nonce generation is probably tricky to develop. But it's the general idea I wanted to present. So that other people can figure out possible solutions or explain why it would be impossible.

You are saying nothing but "I want this, I want that" without really knowing what you are talking about.

The Bitcoin miner network IS already a distributed time server. Due to its decentralized nature its resolution could not be too high. If you believe you are able to create an even better distributed time server than the miner network, just do it.

Donation address: 374iXxS4BuqFHsEwwxUuH3nvJ69Y7Hqur3 (Bitcoin ONLY)
LRDGENPLYrcTRssGoZrsCT1hngaH3BVkM4 (LTC)
PGP: D3CC 1772 8600 5BB8 FF67 3294 C524 2A1A B393 6517
Anders (OP)
Full Member
***
Offline Offline

Activity: 126
Merit: 100



View Profile
August 14, 2014, 03:27:42 PM
 #14

And send 10 gajigga bytes of potentially min traffic around the network.  Besides unless your "distributed timestamp server" is another POW blockchain (in which case nothing has been achieved) its not obvious how to construct that in a decentralized way.

Generally if you can assume the existence of such a construct no mining is needed at all. Mining exists basically to solve that problem.

So you mean such distributed time server would remove the need for mining entirely? The time server could be tricky to implement, but maybe doable!

NTP is perhaps something that could be used as a foundation for the distributed time server:


Are you saying that your whole proposal is building on "perhaps something"? Come back after you figure out how it might work.

A distributed time server with random nonce generation is probably tricky to develop. But it's the general idea I wanted to present. So that other people can figure out possible solutions or explain why it would be impossible.

You are saying nothing but "I want this, I want that" without really knowing what you are talking about.

The Bitcoin miner network IS already a distributed time server. Due to its decentralized nature its resolution could not be too high. If you believe you are able to create an even better distributed time server than the miner network, just do it.

Granted, I don't know much about the technical details of Bitcoin so it may be a bit over my head. Anyway, the main idea is that instead of the miners reaching a target they have a deadline. This means zero variance and very fast transaction times. The miners would still get the usual reward in bitcoins (25 at the moment I think) and the transaction fees. Another difference is that yes Bitcoin is a timestamp server but not a real-time one. I don't know much about distributed systems, so that's why I posted this thread without having my own solution to it in terms of implementation.
DannyHamilton
Legendary
*
Offline Offline

Activity: 3388
Merit: 4615



View Profile
August 14, 2014, 03:44:04 PM
Last edit: August 14, 2014, 04:14:48 PM by DannyHamilton
 #15

I've been meaning to put Anders on ignore for a while now.  This thread finally reminded me to do it.

I'm getting a bit bored with his poorly thought out, hey, let just do the following and all the problems of the world will be solved:

  • Step 1. Collect underpants
  • Step 2. ?
  • Step 3. Profit

The number of newbies that show up here thinking that their ideas are brand new and nobody has bothered to think of them in the past 6 years just astounds me.

I'm not saying that a newbie can't come up with an original idea, just that most of them don't, and none of them seem to even consider the possibility that their idea isn't new and that they should learn a bit about what has already been discussed regarding their idea before they present it as revolutionary.
Anders (OP)
Full Member
***
Offline Offline

Activity: 126
Merit: 100



View Profile
August 14, 2014, 03:47:52 PM
 #16

The variance in Bitcoin today could lead to transaction times of several hours! The probability for that may be exceedingly small, yet remember Murphy's law.

Let me tell you a true story about Nobel laureates in economics who developed a "foolproof" model for derivatives trading or something like that. The model worked wonderfully until one day the stockmarkets dropped more than "they are supposed" to do, leading to a catastrophic crash of their entire model.

So what, you may think. An occasional long transaction time would only be like a bump on the road. Again, consider Murphy's law where Bitcoin has become mainstream and several financial systems rely on Bitcoin transaction times being less than two hours.
Anders (OP)
Full Member
***
Offline Offline

Activity: 126
Merit: 100



View Profile
August 14, 2014, 03:53:47 PM
 #17

Another problem to consider: How many bitcoin transactions per 10 minutes are done today? Around 400 perhaps. Compare that with the millions and millions ordinary money transactions per ten minutes happening in the world today. If Bitcoin is supposed to become anywhere near mainstream, it would have to cope with several orders of magnitude increase in number of transactions. Block chain bloat, anyone?
maxihatop
Member
**
Offline Offline

Activity: 102
Merit: 12


View Profile WWW
August 14, 2014, 04:19:01 PM
 #18

Propose attack:

1. I select my own nonce, and generate block with it (maybe, spend some work resources).
2. I send fake time-message (with senderIP and so on belong to official time-server), contains my own nonce,
a little earlier, than official time server.
And, instantly, send block to my peers.
 

luv2drnkbr
Hero Member
*****
Offline Offline

Activity: 793
Merit: 1016



View Profile
August 14, 2014, 04:28:27 PM
 #19

So you mean such distributed time server would remove the need for mining entirely?

Yes, pretty much.  That's the entire point of mining.

Bitcoin-like things work because the earliest transaction is the valid transaction, and later ones are invalid and orphaned.  The trouble was how do you know what's earliest?  Your clock might be wrong.  Outside sources might lie to you.  Information propagation takes time.  And on top of it, when money is involved, you have to assume everybody else is trying to lie and cheat and steal from you.  And that on top of THAT, you want the system to be able to work with nodes coming on and offline, and they need to be able to download updates and KNOW, not trust, that they are accurate.  Sure, a signature could contain a timestamp, but the signer might have just lied, even if he had accurate information.

So how the hell do you solve that?

By not relying on time, but instead relying on WORK.  Churning through sha hashes until you find one within a specific range.  If we assume sha hashes are not predictable, then we know that if you found a specific hash, you HAD to have, on average, churned through some number of hashes.  And given that it takes TIME to calculate a hash, we know that it will on average take some amount of time to do that work.  Now we have a basis for coordinating our clocks.  We may not know the exact time, but we CAN quite easily verify that work has been done, and we know that that work HAD to have taken some amount of time.

So now we can all synchronize our clocks, not by time, but by the longest valid chain of work done, because we know that it could not possibly have been faked.  The work WAS done.  The valid hash is proof of that.  And now, we can have nodes coming on- and off-line, lying to us, and on and on, and all we have to do is get somebody, anybody, to send us the valid chain, and we'll know it's valid, because we can check it very easily, and we've all agreed ahead of time that the longest ("longest" meaning most work) valid chain is the real chain.

Yes, bitcoin mining's whole purpose is to solve the distributed time server problem in a TRUSTLESS manner.  The purpose of doing the work is to PROVE that time has elapsed.  The transaction with more work done on top of it is OLDER.  Thus, we can now verify which transaction came first.

If you can solve the time server another way, you will have done what nobody could do for decades until Satoshi.  Go for it.

Anders (OP)
Full Member
***
Offline Offline

Activity: 126
Merit: 100



View Profile
August 14, 2014, 04:33:04 PM
 #20

Propose attack:

1. I select my own nonce, and generate block with it (maybe, spend some work resources).
2. I send fake time-message (with senderIP and so on belong to official time-server), contains my own nonce,
a little earlier, than official time server.
And, instantly, send block to my peers.
 

The other miners would check your nonce and see that it differs from the UTC timestamp and therefore reject your block.
Pages: [1] 2 »  All
  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!