Pages:
Author

Topic: On The Longest Chain Rule and Programmed Self-Destruction of Crypto Currencies - page 6. (Read 17939 times)

donator
Activity: 1218
Merit: 1079
Gerald Davis
Wasn't aware that time stamping was used at all, except for difficulty changes.

It isn't.

Quote
Seems it used as a sort of double checking for blocks, although seems unnecessary or at least not critical because of the longest chain rule.

How is change in difficulty computed?  What would happen to difficulty computation if there was no timestamp checking on blocks (attacker could use any timestamp he wanted)?
legendary
Activity: 1302
Merit: 1008
Core dev leaves me neg feedback #abuse #political
Thanks for the link. Funny how 2011 is ancient history in the bitcoin world.

Wasn't aware that time stamping was used at all, except for difficulty changes.
Seems it used as a sort of double checking for blocks, although seems unnecessary
or at least not critical because of the longest chain rule.
jr. member
Activity: 56
Merit: 1
Interestingly Satoshi didn't put much thought into the problem of time stamping, although he realised timekeeping was important. The general assumption he made was that all nodes would report the correct time. (This is not the case and has the potential to cause major problems with bitcoin if exploited in tandem with a Sybil attack)

In the code Satoshi wrote:

Quote from: Satoshi
"Never go to sea with two chronometers; take one or three."
Our three chronometers are:
  - System clock
  - Median of other server's clocks
  - NTP servers

note: NTP isn't implemented yet, so until then we just use the median of other nodes clocks to correct ours.

The quote comes from "The Mythical Man Month" for those interested in Satoshi's background.

The code he implemented was:

Code:
nTimeOffset = nMedian;
if ((nMedian > 0 ? nMedian : -nMedian) > 5 * 60)
{
    // Only let other nodes change our clock so far before we
    // go to the NTP servers
    /// todo: Get time from NTP servers, then set a flag
    ///    to make sure it doesn't get changed again
}

Satoshi decided to contradict his quote and use two chronometers!

The idea was that if the offset between your node and the others was more than 5 minutes something is wrong. This was further relaxed in a subsequent version to a massive 70 minute offset! (Why 70 minutes, I have no idea, the change isn't documented anywhere public as far as I can tell) Edit: the changes can be found here and here but there is no explanation.

Code:
// Only let other nodes change our time by so much
if (abs64(nMedian) < 70 * 60)
{
      nTimeOffset = nMedian;
}

But still no NTP support.
legendary
Activity: 1302
Merit: 1008
Core dev leaves me neg feedback #abuse #political
Perhaps it is possible to replace proof of work with some other distributed time-based system,
although you would still need the longest chain as a basis for convergence.

Possibly but it is a non trivial problem for which robust decentralized solution exists.  As I said it is like saying instead of taking a rocket to the moon we "could" teleport directly there although the technology does not exist and it may not ever be possible.  Hopefully you wouldn't write a paper saying nobody knows why NASA opted to use a rocket instead of teleport to the moon.  Smiley

Non trivial, although on the surface, seems deceptively simple.
(We just want a block every 10 minutes!)

Maybe there could be a list of 1000 different timestamp servers
that nodes can check, and by introducing a time element, the hashing
work could be reduced.   
donator
Activity: 1218
Merit: 1079
Gerald Davis
Perhaps it is possible to replace proof of work with some other distributed time-based system,
although you would still need the longest chain as a basis for convergence.

Possibly but it is a non trivial problem for which robust decentralized solution exists.  As I said it is like saying instead of taking a rocket to the moon we "could" teleport directly there although the technology does not exist and it may not ever be possible.  Hopefully you wouldn't write a paper saying nobody knows why NASA opted to use a rocket instead of teleport to the moon.  Smiley
full member
Activity: 140
Merit: 107
Academics have produced nothing but perfect nonsense on the topic of Bitcoin. This is one of the worst.
legendary
Activity: 1302
Merit: 1008
Core dev leaves me neg feedback #abuse #political
Perhaps it is possible to replace proof of work with some other distributed time-based system,
although you would still need the longest chain as a basis for convergence.

legendary
Activity: 4130
Merit: 1307
Utter nonsense.   It is sad that they wrote a paper based on the premise that timestamps can be used to solve the double spend problem (they can't) and then never did any research as to why Bitcoin doesn't rely on timestamps.   I mean it isn't a minor note, it is the core claim of the article.

Quote
It surprising to discover that Satoshi did NOT introduce a transaction
timestamp in bitcoin software. It is NOT known WHY neither the original
creator of bitcoin nor later bitcoin developers did not mandate one. This could
can be seen as an expression of misplaced ideology. Giving an impression
showing that maybe the Longest Chain Rule does solve the problems in an
appropriate way. Unhappily it doesn't.

One would think that when writing a paper if you are surprised that it would lead you to question and seek information.  Maybe you are surprised because you are misinformed, or misunderstand the conditions.  Generally speaking just assuming your surprise is due to someone else being wrong and then not verifying that in any way is not the start of a good paper.

Saved me having to look at it.

And It is known why - many reasons, which a little research would've discovered.

donator
Activity: 1218
Merit: 1079
Gerald Davis
Utter nonsense.   It is sad that they wrote a paper based on the premise that timestamps can be used to solve the double spend problem (they can't) and then never did any research as to why Bitcoin doesn't rely on timestamps.   I mean it isn't a minor note, it is the core claim of the article.

Quote
It surprising to discover that Satoshi did NOT introduce a transaction
timestamp in bitcoin software. It is NOT known WHY neither the original
creator of bitcoin nor later bitcoin developers did not mandate one. This could
can be seen as an expression of misplaced ideology. Giving an impression
showing that maybe the Longest Chain Rule does solve the problems in an
appropriate way. Unhappily it doesn't.

One would think that when writing a paper if you are surprised that it would lead you to question and seek information.  Maybe you are surprised because you are misinformed, or misunderstand the conditions. Generally speaking just assuming your surprise is due to someone else being wrong and then not verifying that in any way is not the start of a good paper.  Satoshi did not include tx timestamps because proving timestamps in a decentralized environment is an incredibly difficult (some would say impossible) task.  In the absence of verifiable timestamps it would simply be wasted bits.  Nodes can optionally record the timestamp of when they learn of the transaction but that will differ from node to node.

Quote
Currently an approximate timing of transactions is known in the bitcoin
network, it comes from the number of block in which a given transaction is
included: this gives a precision of approx. 10 minutes. Transactions without a
fee could be much older than the block. However all blocks are broadcast on the
network and it is very easy for the bitcoin software to obtain more precise timing
of transactions with a precision of 1 second, maybe better. A number of web sites
such as blockchain.info are already doing this: they publish timestamps for
all bitcoin transactions which correspond to the earliest moment at which these
transactions have been seen.

Seen by who?  Oh thats right one individual node with no guarantee or assurance that ANY OTHER NODE has even seen that transaction much less at that time.

Quote
Then the solution is quite simple:

1. In case of double spending if the second event is older than say 20 seconds
after the fi rst transaction, the fi rst transaction will simply be considered as
valid and the second as invalid. This based on the earliest timestamp in
existence which proves that one transaction was in existance earlier.
This seems reasonable knowing that the median time until a node receives
a block is 6.5 seconds cf. [8, 9].

How are you proving timestamps?  Timestamp is simply a number.  I can give you a timestamp from the birth of Jesus does that mean I have proven I made a bitcoin transaction thousands of years ago?

Quote
The implementation of such a mechanism is not obvious and will be discussed separately below. However it seems that it could be left to the free
market: several mechanisms could function simultaneously. For example one can immediately use timestamps published by blockchain.info and simultaneously use timestamps from other sources.

So the decentralized currency is based on the timestamps as decided by some centralized "super peers".  If I bribe the timestamp servers to say my tx is older then I can double spend without even using hashing power.

Quote
For solutions which would prevent various bitcoin web servers from manipulating these time stamps we will need to propose additional mechanisms,
such as secure bitstamps or additional distributed consensus mechanisms.
We will develop these questions in another paper.

Gee really?  You are saying that decentralized provable timestamps are an incredibly difficult problem to solve.  Maybe someone could use an append only linked list of timestamps, where each timestamp is proven by requiring the creator of an individual timestamp element use a non-trivial amount of resources.  Thus once an individual element of the list has a sufficient number of elements after it then users would have some assurances that modifying the element would be very difficult.  As part of the process to make the element of the list maybe we could put a hash of the txn in the element and thus substituting the txn becomes as difficult as changing the list.  To avoid a lot of work needed for every txn you could have each element store a hash which represents an entire set of txns.  Each user would always extend the longest valid list to force a consensus between multiple valid but incompatible lists.  We could probably call these list elements "blocks" and the linked list a "blockchain".

Quote
In case of double spending if both events come within at most 20 seconds
of each other, miners should NOT include any of these transactions in block
they mine. Some miners can nevertheless accept a transaction because they
have only received one of the two transactions, or because they are trying to
cheat. Then their block could simply be invalidated because they have not
been careful enough about collecting all the transactions which have been
around. For honest miners this would occur with small probability.

So it becomes trivial to fork the network.

I create two transaction (with magical 100% provable decentralized timestamps which don't exist and yet are the lynchpin of the paper yet are not discussed in the paper) within 20 seconds of each other and broadcast one, when it is included in a block I broadcast the other one and the block just mined is invalid.  

Quote
Again this decision on whether to include or not a given
transaction could be decentralized.
All this requires some form of timestamping and some security against manipulation of these timestamps to be implemented than in the current software,
either by consensus or secure timestamps.

By magic?  I mean it like saying taking a spacecraft to the moon is a flawed strategy when we could just teleport there instead.  Also teleporting to the moon will require some teleportation capabilities and stuff.

Quote
An alternative to timestamps could be a pure consensus mechanism by which
numerous network nodes would certify that that they have seen one transaction
earlier than another transaction. This can be very easy done: we can re-use shares
which are already computed by miners in vast quantities or select only certain
shares with a sucient number of zeros.  We could mandate that if transactions
are hashed in a certain order in a Merkle hash tree, it means that this miner
have seen certain transactions earlier

I am seeing a trend, when you say "easy" it actually means "this seems easy because I lack the basic knowledge to see why it isn't".  So a tx being in the merkle tree of a miner means it is first?  What if a miner ignores the first tx and puts the second tx in the merkle tree?  We have a tx in a merkle tree somehow it magically proves it was first?  However even if it did, we are still operating on magical provable decentralized timestamps.

Quote
or another similar mechanism assuming
that the majority of miners are honest
.

Wait a minute.  Lets read this one again slowly "assuming that the majority of miners are honest", "assuming that the majority of miners are honest".  Really?

I know you can't mean majority as in >50% of the nodes by count because the entire concept of proof of work (or stake) is predicated on a well founded assumption that preventing a sybill attack in a decentealized network is infeasible.  If you could prevent a sybill attack, well miners could just vote and there would be no need for work or stake at all.  You wouldn't even need magical provable timestamps as each node would simply vote based on its own observations.  

So by "majority" you must mean more than 50% of the hashrate.  You didn't see where I am going when you wrote this?  In other words even this convoluted, nonsensical solution still fails to prevent double spends when the attacker has 51% of the hashrate.  Wasn't that the "flaw" that the entire paper is based on "fixing"?






legendary
Activity: 1628
Merit: 1012

Wow. This is actually a very interesting read. I'm not currently finished with it, but I had to stop and say thank you.

Most people completely disregard Dogecoin as having any clout in the cryptocurrency world, so I find the analysis in those sections fairly intriguing.

EDIT: Seems I was a bit misinformed, based on the post below. Re-reading....

b!z
legendary
Activity: 1582
Merit: 1010
Interesting paper. Thank you for sharing.
Pages:
Jump to: