<oembed><type>rich</type><version>1.0</version><author_name>npub1re22dhneg8azw7z3979njqn2sp4gxzp4703g62tsrvmsvnj76heqj679nu</author_name><author_url>https://nostr.ae/npub1re22dhneg8azw7z3979njqn2sp4gxzp4703g62tsrvmsvnj76heqj679nu</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2016-03-09&#xA;📝 Original message:&gt; On 9 Mar 2016, at 20:21, Bob McElrath &lt;bob_bitcoin at mcelrath.org&gt; wrote:&#xA;&gt; &#xA;&gt; Dave Hudson [dave at hashingit.com] wrote:&#xA;&gt;&gt; A damping-based design would seem like the obvious choice (I can think of a&#xA;&gt;&gt; few variations on a theme here, but most are found in the realms of control&#xA;&gt;&gt; theory somewhere).  The problem, though, is working working out a timeframe&#xA;&gt;&gt; over which to run the derivative calculations.&#xA;&gt; &#xA;&gt; From a measurement theory perspective this is straightforward.  Each block is a&#xA;&gt; measurement, and error propagation can be performed to derive an error on the&#xA;&gt; derivatives.&#xA;&#xA;Sure, but I think there are 2 problems:&#xA;&#xA;1) My guess is that errors over anything but a long period are probably too large to be very useful.&#xA;&#xA;2) We don&#39;t have a strong notion of time that is part of the consensus.  Sure, blocks have timestamps but they&#39;re very loosely controlled (can&#39;t be more than 2 hours ahead of what any validating node thinks the time might be).  Difficulty can&#39;t be calculated based on anything that&#39;s not part of the consensus data.&#xA;&#xA;&gt; The statistical theory of Bitcoin&#39;s block timing is known as a Poisson Point&#xA;&gt; Process: https://en.wikipedia.org/wiki/Poisson_point_process or temporal point&#xA;&gt; process.  If you google those plus &#34;estimation&#34; you&#39;ll find a metric shit-ton of&#xA;&gt; literature on how to handle this.&#xA;&#xA;Strictly it&#39;s a non-homogeneous Poisson Process, but I&#39;m pretty familiar with the concept (Google threw one of my own blog posts back at me: http://hashingit.com/analysis/27-hash-rate-headaches, but I actually prefer this one: http://hashingit.com/analysis/30-finding-2016-blocks because most people seem to find it easier to visualize).&#xA;&#xA;&gt;&gt; The problem is the measurement of the hashrate, which is pretty inaccurate at&#xA;&gt;&gt; best because even 2016 events isn&#39;t really enough (with a completely constant&#xA;&gt;&gt; hash rate running indefinitely we&#39;d see difficulty swings of up to +/- 5% even&#xA;&gt;&gt; with the current algorithm).  In order to meaningfully react to a major loss&#xA;&gt;&gt; of hashing we&#39;d still need to be considering a window of probably 2 weeks.&#xA;&gt; &#xA;&gt; You don&#39;t want to assume it&#39;s constant in order to get a better measurement.&#xA;&gt; The assumption is clearly false.  But, errors can be calculated, and retargeting&#xA;&gt; can take errors into account, because no matter what we&#39;ll always be dealing&#xA;&gt; with a finite sample.&#xA;&#xA;Agreed, it&#39;s a thought experiment I ran in May 2014 (http://hashingit.com/analysis/28-reach-for-the-ear-defenders).  I found that many people&#39;s intuition is that there would be little or no difficulty changes in such a scenario, but the intuition isn&#39;t reliable.  Given a static hash rate the NHPP behaviour introduces a surprisingly large amount of noise (often much larger than any signal over a period of even weeks).  Any measurements in the order of even a few days has so much noise that it&#39;s practically unusable.  I just realized that unlike some of my other sims this one didn&#39;t make it to github; I&#39;ll fix that later this week.&#xA;&#xA;&#xA;Cheers,&#xA;Dave</html></oembed>