BCH-Upgrade-Vorschlag

2 14
Avatar for krise636
4 years ago
  • BCH-Upgrade-Vorschlag: Ihre Sie ASERT als neue DAA


Abstrakt

Der aktuelle BCH-Schwierigkeitsanpassungsalgorithmus (DAA) ermöglicht es einem Switch Miner, einem großen Gewinn aus Minern mit konstanter Hashrate zu ziehen. Dies wirkt sich stark negativ auf das Mining mit konstanter Hashrate aus, führt das Switch-Mining und führt zu Schwächen in Schwierigkeitsgrad und Hashrate. In meiner Testsimulation liegt der Gestohlene Gewinn in der Größenordnung von 6% Umsatzverlust durch konstante Hashrate-Miner für die aktuelle DAA, aber nur etwa 0,35% bis 0,65% für die EMA-DAA-Familie. Ich schlage einen möglichen EMA-Typ gehört  ASERT vor  , damit BCH im eigenen Protokoll-Upgrade vom November 2020 wird, und  stelle  welche zu diesem auch als nicht  gehört Beispiel-C ++ - gehört  bereit.


Warum die DAA ein Problem ist

Der aktuelle BCH-Schwierigkeitsanpassungsalgorithmus - bekannt als  cw-144, da der Verwaltung auf Kettenbemessungen - hat ein Problem: Er ist Lieben für Schwingungen. This Schwingung ist das Plan Ergebnis des current BCH-DAA unter verwendung Einer einfachen gleitenden Durchschnitt und in Wird  frühere  Arbeiten  ausführlich beschrieben. Es war  cw-144bereits im  Oktober 2017  ein bekanntes Problem, bevor es im Mainnet wurde.

Wenn Sie mit dieser Schwingung bereits vorhanden sind, z. B. wenn Sie mein  Video vom 27. Februar 2020 gesehen haben  , können Sie diesen Abschnitt überspringen und zur Überschrift  Stabile DAAs  springen.)

Es gibt einige Gründe, warum dieser Fehler und das damit verbundene Problemproblematik sind:

  1. Es ist die Tatsache, dass Transaktionsbestätigungszeiten um den Faktor 2x, wenn sich 90% der Hashrate rational sind.

  2. Es gehört dazu, dass die Kette gehört zum Stillstand kommt, wenn sich 100% der Hashrate rational verhält.

  3. Es ist wahr, dass alle wahrhaftig egoistisch sind. Egoistische Bergbau-Anhaltspunkte Block-Reorgs, Rechte das Vertrauen der Öffentlichkeit in der Block-Kette und Machen mit mit doppelten Lern ​​praktikabler.

  4. Es führt Bergleute verwirkt, dass sie BCH unterscheiden loyal sind.

  5. Es ist eine kleine Solo-Bergleute, die nicht über die technologischen Raffinesse Richtlinien, um Strategien zur Umschaltung von Hashraten zu automatisieren. und

  6. Es ermöglicht fähwillige Strategien, mit denen ein Bergmann die Schwingungen und die Rechte auf die Umschalten zu geben, zu ändern, seine Hashrate selbst auf gepumpte Weise umschaltet oder die Zeitstempel der von ihm verwandauten Blöcke manipuliert.

Kurz gesagt, die Schwingung zu ändern,  cw-144gehört die letzten 144 Blöcke, um die Hashrate zu viel. Wenn ein Block mit einem hohen Hashrat das SMA-Fenster wird, können Sie die Rechte um die Rechte Rechte, wie ein neuer Block, der im Fenster eintritt, ihn gehört. Blöcke, die Fenster verlassen, die eigenen, die Rechte stark in einer Richtung, die Bergleute gehören anregt, die Hashrate des abgenommenen Blocks zu sich. Ich nenne diesen Effekt "Hashrate-Echos". Bedenken haben diese Echos kein zufriedenwilliges Miner-Verhalten. Sie sind das Ergebnis des Ergebnisses von Bergleuten, die Rechte Rechte Bürger der DAA folgen.

Diese Hash-Oszillationen haben einen Zeitraum von etwa 1,05 Tagen, welche sie in den schwierigen Schwierigkeitsgraden oder Hashrate-Diagrammen haben, aber in  diesen interaktiven Diagrammen  gesehen sind wichtig.

Diese Hashrate-Echos treten nach  cw-144dem DAA im November 2017 in BCH auf. Zu diesem Zeitpunkt, den die Oszillationsamplitude etwa 1 EH / s, die Anzahl der Rechte-Hash-Rate, die Zweifache des Mindest-Mindestbetrags:

Sponsors of krise636
empty
empty
empty

Die von BME-Bergbau-Pools haben diese Echos um den 1. Oktober 2019  geändert  . Die Schwingungsamplitude gehört 11 EH / s mit Befugnissen Spitzen bei 4x bis 8x des Arbeits Minimums. Unterschiedliche Klischees Extreme um den 20. Januar 2020 und den größten Teil des April 2020 gehört.


Diese Schwächen der Hashrate müssen und werden durch die Bergbauschwierigkeiten verursacht. Diese Schwierigkeitsschwäche beziehen sich auf die Amplitude von 10%, Krieg verbunden, dass die Bergleute die Wahrnehmung Zeit mit Verlust (im Vergleich zum Bergbau von BTC) abbauen.

Diese Schwächungsbedenken sterben die Benutzererfahrung. Die Bursts mit jedem Hashrat sind kurz; Die Dürreperioden da langen sind lang. Die folgenden Folgen werden zu den Dürreperioden, die zu den gleichen Poisson-Block-Verträgen gehören. Dieser Effekt ist in diesem  interaktiven Diagramm der Konfigurationszeiten  zu sehen. Die Konfigurationszeiten haben sich in der letzten Zeit gleichheitschtert. Sie haben seit September 2019 vertraute 15 Minuten und im Januar 2020 einen Höchststand von 28 Minuten.

Im September-Oktober 2017 haben Kyuupichan und einige andere Entwickler die  Software-Suite "Schwierigkeitsgrad" geschrieben  , um diese Schwierigkeitsschwächen und das Umschalten der Hashrate mit verschiedenen DAAs zu simulieren. Im Februar 2020 wird ich diese Suite um eine grafische browserbedingte Rechte (  Code  ;  langsame Online-Version  ). Diese Rechte Rechteigenen, die mit dem  cw-144Anspruch dieser Oszillationen ohne Schadenwilliges Miner-Verhalten werden. Alles, was gehört wurde, um sie zu hören,  cw-144ist, dass die Bergleute die Münze (BCH oder BTC) abbauen, die zu einem Zustand Zustand am rentabelsten ist.


  • Die wahrnehmungsbedingten auch, dass die schwaltungsbedingten  cw-*Fehlerwellen sind. Die Schwächungen sind in allen anderen der  cwFamilie vorhanden, wenn Bergleute rationalen Anreizen folgen, mit Verträgen und Folgenen Schwächen für  cwsoziale Mitwirkungen, z. B.  cw-144ist schlechter als  cw-576), aber die Schwächen sind in allen anderen guten DAA-Familienhaften von der Bedeutungsbehaltung.

  • Die Tatsache, dass Switch-Bergleute 5 bis 20% mehr verdienen können als Bergleute mit konstanter Personalabteilung, ist ein Fehler. Dieser Fehler ist das Ergebnis der eintägigen Resonanz und der Tendenz zur Schwingung. Wir können den Zugriff für Switch Mining um etwa 90% bis 95% beziehen, entschädigen wir für einen anderen DAA-Status, einen für einen anderen der EMA-Familie.

    Stabile DAAs

    Die Instanzen des gleichen gleitenden Mittel (SMA) basierenden Managements  cw-144werden durch den Einfluss eines Blocks auf die gleichen verursacht, die abrupten Enden, wenn der Block das 144-Block-Fenster wird. Diese Instanzen können sich ändern, entschädigen den Einfluss eines Blocks mit der Zeit langsam verblasst. Wenn der Einfluss von über 144 Blöcken linear abgenommen, sieht die Instanz. Dies ist die Funktion des  lwmaVertrags (linear gewichteter gleitender Steuern) sowie des zugehörigen Gewichtsete  wtZeit von Tom Harding. Eine andere Möglichkeit besteht darin, den Einfluss mit der Zeit exponentiell verblassen zu lassen, z. B. mit einer Zeitkonstante von 144 Blöcken. Dies ist, war die EMA-Berührungsfamilie tut. Diese Familie besteht aus vielen Personen, wie die von Jacob Eliosoffema-1dund  simpexp-1dTom Harding wtemaund Mark Lundebergs Richtlinien  asert.

    Unter Diesem stabilen DAAs identifizieren sie vier Wichtigste Kandidaten Algorithmen:  asertwtemalwma, und  wt. Alle vier Konflikte HaBen in  meinen  guten guten  Ergebnissen Sie Sie Sie und in  den Behinderungen von zawy12 gute ergebnisse  . Nachfolgend finden Sie eine Tabelle mit Daten zu einem vollständigen Simulationslauf für alle vier Abwicklungsalgorithmen sowie  cwals Referenz bei drei verschiedenen Einstellungen für die Funktionsfähigkeit, die ein Tag gehört.cw-144), 2 Tage oder 4 Tage. Die Tabelle wird die Berechtigungszeit für die in der zweiten Spalte. Diese Zahl sollte ideal sein, so dass wie möglich sein. In den Spalten "Gierig" bis "Stetig" zeigt die Tabelle die relative Rentablenbildung Bergbaustrategien (im Vergleich zum Bergbau-BTC). In der letzten Spalte zeigen die Tabelle den Vorteil, der durch den Wechsel von der schlechtesten Bergbaustrategie zur besten Bergbaustrategie wird werden kann. Diese Zahl sollte ideal sein, so nahe wie möglich bei 0% liegen.

Die aktuelle DAA cw-144führt den schlechtesten aller mit großem Abstand getesteten Algorithmen aus. Die beste DAA in diesem Test benötigte asert-576nur 51%, um die durchschnittliche Transaktion zu bestätigen, und reduzierte den Anreiz für Switch Mining um 94,4% im Vergleich zu cw-144. Alle Algorithmen außer cw sind bei einer bestimmten Reaktionseinstellung in ihrer Leistung eng zusammengeballt. Der Leistungsvorteil für die längste Reaktionszeit (576 Blöcke, 4 Tage) war im Vergleich zur mittleren Einstellung gering.

Die Unterschiede in der Leistung der Hashratregulierung zwischen diesen vier Optionen in Simulationen waren gering. Es schien oft einen kleinen Vorteil für die EMA-basierten Algorithmen ( wtemaund asert) zu geben, aber die Vorteile waren klein genug, dass wir der Ansicht waren, dass die Wahl aufgrund anderer Aspekte wie der Komplexität der Implementierung getroffen werden sollte. Beide lwmaund wterfordern das Abtasten jedes Blockheaders in ihren Fenstern (z. B. 288 Blöcke), um die Schwierigkeit des nächsten Blocks zu berechnen, während die EMA-Familie im Allgemeinen nur das Abtasten von zwei Blockheadern erfordert, sodass sich unsere Aufmerksamkeit auf die EMA-Familie konzentrierte.

Unsere Aufmerksamkeit konzentrierte sich dann auf die Bestimmung des zu verwendenden EMA-Algorithmus. Die interessantesten zu sein schien wtemaund asert.

WTEMA und ASERT

Die beiden EMAs, die als die besten Kandidaten erschienen, waren wtemaund asert. Der wtemaAlgorithmus wurde von dgenr8 (Tom Harding) am oder vor dem 1. Januar 2018 erstellt . Es ist eine außergewöhnlich einfache Nur-Ganzzahl-EMA, die auf dem folgenden Pseudocode basiert:

next_target = prior_target / (IDEAL_BLOCK_TIME * alpha_recip)
next_target *= block_time + IDEAL_BLOCK_TIME * (alpha_recip - 1)

In abstrakten Begriffen wird gehört, um wie viel das "Ziel" des Blocks (der Kehrwert der Steuern) wird, um 600-Sekunden-Blöcke zu gehört, wenn das letzte Blockintervall perfekt für die Hashrate isthalten soll. Dann wird es ein gewichteten Durchschnitt zwischen diesem Wert und dem Ziel des letzten Blocks durch, wird  1/alpha_recipals Gewichtungskoeffizient verwendet wird. Dies macht  wtemaeine rekursiv definierte Funktion und ein klassisches Beispiel für ein verbessertes IIR-Filter erste Ordnung  , das eine  einzelne RC-Filter enthält. Lassen Sie sich selbst nicht von der Berechtigung hören: Es  funktioniert besser als ein komplexes PID-Reglersystem  , auch mit einem Bruchteil der Kenntnisse.

Der  asertWert wurde von Mark Lundeberg  am oder vor dem Februar 2020 entwickelt  , wurde eine von Äquivalente Formel auch 2018 von Jacob Eliosoff beeinflusst wurde, wurde ohne Mark Lundebergs wertvolle Analyse und  wurde 2020 von Werner et. al am Imperial College London  . asertwird durch Ihre Formeln Rechte:

target_timestamp = (height + 1 - activation_height)*IDEAL_BLOCK_TIME
next_target = target_at_activation * 2^((last_timestamp − target_timestamp)/tau)

Hinweis:  ^Bezeichnet die Gleitkomma-Potenzielle, nicht die Ganzzahl XOR.

asertsteht für absolut steht exponentiell steigende Ziele. In abstrakten Begriffen wird  asertein idealer Blockkrieg. Für jede  tauzweite für die Hälfte eines Blocks wurde der Schwierigkeitsgrad des zweiten Blocks um den Faktor 2 geändert. Angemessene Werte von  taukönnen einige Stunden bis einige Wochen gehören. Wie  wtemaasert‚s - Code und Mathematik ist einfach und und nur von zwei Blöcken. Im gleichen zu  wtemaasertgehört zu dem nur auf dem letzten Block und die Entstehungsgeschichte Block oder den Gabelblock  asertwurde festgestellt. Dies vermeidet die rekursive Definition, sterben wtemaHut. Für weitere Informationen,  asertdie ich Mark Lundebergs prägnantes Einführungspapier  .

Die beiden gehören sind funktional gehört, wenn die Blockintervalle nahe am Normalen liegen und sich nur an den Extremen befinden.

wtema und asert sind für kleine Blocklösungszeiten, die äquivalent sind. In beiden Richtungen wird asert eine zukünftigee Leistung auf. Es gibt eine problematische Zeit der x-Achse mit großen negativen Lösungszeiten mit wtema, aber nicht asert. Große positive Lösungsbefehle gehören dazu, dass die Rechte durch Aertwerden werden. Bildnachweis: dgenr8

Die Debatte zwischen den beiden, die sich auf  vier Themen zu konzentrieren  :

  1. Ganzzahlige Näherungen - werden  wtemaals  asert, da  aserteine explizite Exponentialfunktion verwendet wird, aber in beiden besteht möglich

  2. Singularität und negative Löslichkeiten - problematisch  wtema, aber nicht  asert, wie in der sozialen Grafik (Quelle:  dgenr8  ). wtemaDies ist ein Wert zu sein (zB>  -0.5 * 144 * 600 secfür  wtema-144)

  3. Mathematische und theoretische Eleganz - gut mit beiden, aber besser für asert

  4. Akkumulation von Rundungs- / Approximationsfehlern - verloren  wtema, aber verloren sein  asertabsolutes Natur nicht vorhanden

Die Hauptprobleme finden  # 1  und  # 2 zu sein  . Die Ursache ganzzahliger Näherungen von 2 ^ x macht  asertdie Wahrnehmung. Die richtige, vor große negative Lösungszeiten zu schützen, wird zu  wtematun. Wir haben uns nicht entschieden, dass es besser ist, ein paar Codezahlen zur Schwierigkeitsberechnungsfunktion selbst zu haben, als andere zu regeln, zu haben und zu haben, zu haben  asert.

Es ist wichtig, Gleitkommacode nicht in Bitcoin-Konformitätsregeln, da  C und C ++ im Allgemeinen nicht IEEE 754-Kompatibel  sind und verschiedene Compiler und Hardware bei Gleitkommabere gehört  nicht  gehört können. Wir brauchen auch eine ganzzahlige Näherung. Wir haben uns dann verschiedene Approximationsimplementierungen führen.

Die von mir gewählte Methode gehört zu der  2^x = 2 * 2^(x-1)Identität, um die  2^xAnnäherung und den  0 <= x < 1Bereich zu gehört. Wenn dies stirbt, ist es, dass  asertes nicht erledigt ist, wenn es geht und wenn es sich um eine Annäherung  2^x ~= 1 + xhandelt. Aber wir haben es viel besser gemacht, auch wir haben es getan. Ich habe für Mark Lundebergs  kubische Annäherung  von  2^xfür  0 <= x < 1. Diese Annäherung gehört eine Fehlerquote unter 0,013%.

Die aktuelle DAA cw-144führt den schlechtesten aller mit großem Abstand getesteten Algorithmen aus. Die beste DAA in diesem Test benötigte asert-576nur 51%, um die durchschnittliche Transaktion zu bestätigen, und reduzierte den Anreiz für Switch Mining um 94,4% im Vergleich zu cw-144. Alle Algorithmen außer cw sind bei einer bestimmten Reaktionseinstellung in ihrer Leistung eng zusammengeballt. Der Leistungsvorteil für die längste Reaktionszeit (576 Blöcke, 4 Tage) war im Vergleich zur mittleren Einstellung gering.

Die Unterschiede in der Leistung der Hashratregulierung zwischen diesen vier Optionen in Simulationen waren gering. Es schien oft einen kleinen Vorteil für die EMA-basierten Algorithmen ( wtemaund asert) zu geben, aber die Vorteile waren klein genug, dass wir der Ansicht waren, dass die Wahl aufgrund anderer Aspekte wie der Komplexität der Implementierung getroffen werden sollte. Beide lwmaund wterfordern das Abtasten jedes Blockheaders in ihren Fenstern (z. B. 288 Blöcke), um die Schwierigkeit des nächsten Blocks zu berechnen, während die EMA-Familie im Allgemeinen nur das Abtasten von zwei Blockheadern erfordert, sodass sich unsere Aufmerksamkeit auf die EMA-Familie konzentrierte.

Unsere Aufmerksamkeit konzentrierte sich dann auf die Bestimmung des zu verwendenden EMA-Algorithmus. Die interessantesten zu sein schien wtemaund asert.

WTEMA und ASERT

Die beiden EMAs, die als die besten Kandidaten erschienen, waren wtemaund asert. Der wtemaAlgorithmus wurde von dgenr8 (Tom Harding) am oder vor dem 1. Januar 2018 erstellt . Es ist eine außergewöhnlich einfache Nur-Ganzzahl-EMA, die auf dem folgenden Pseudocode basiert:

next_target = prior_target / (IDEAL_BLOCK_TIME * alpha_recip)
next_target *= block_time + IDEAL_BLOCK_TIME * (alpha_recip - 1)

In abstrakten Begriffen wird zunächst geschätzt, um wie viel das "Ziel" des Blocks (der Kehrwert der Schwierigkeit) geändert werden sollte, um 600-Sekunden-Blöcke zu erreichen, wenn das letzte Blockintervall perfekt für die Hashrate repräsentativ wäre. Dann führt es einen gewichteten Durchschnitt zwischen diesem Wert und dem Ziel des letzten Blocks durch, wobei es 1/alpha_recipals Gewichtungskoeffizient verwendet wird. Dies macht wtemaeine rekursiv definierte Funktion und ein klassisches Beispiel für ein einfaches IIR-Filter erster Ordnung , das einem elektronischen RC-Filter entspricht. Lassen Sie sich jedoch nicht von der Einfachheit täuschen: Es funktioniert genauso gut wie ein komplexes PID-Reglersystem , jedoch mit einem Bruchteil der Komplexität.

Der asertAlgorithmus wurde größtenteils von Mark Lundeberg am oder vor Februar 2020 entwickelt , obwohl eine äquivalente Formel auch 2018 von Jacob Eliosoff unabhängig entdeckt wurde, jedoch ohne Mark Lundebergs detaillierte Analyse, und erneut 2020 von Werner et. al am Imperial College London . asertwird durch folgende Formeln definiert:

target_timestamp = (height + 1 - activation_height)*IDEAL_BLOCK_TIME
next_target = target_at_activation * 2^((last_timestamp − target_timestamp)/tau)

Hinweis: ^Bezeichnet die Gleitkomma-Potenzierung, nicht die Ganzzahl XOR.

asertsteht für absolut geplante exponentiell steigende Ziele. In abstrakten Begriffen wird asertein idealer Blockzeitplan definiert und die Schwierigkeit jedes Blocks exponentiell festgelegt, basierend darauf, wie weit vor oder hinter diesem Zeitplan der übergeordnete Block war. Für jede tauSekunde vor dem Zeitplan eines Blocks steigt der Schwierigkeitsgrad des nächsten Blocks um den Faktor 2. Angemessene Werte von taukönnen einige Stunden bis einige Wochen betragen. Wie wtemaasert‚s - Code und Mathematik ist einfach, und hängt nur von zwei Blöcken. Im Gegensatz zu wtemaaserthängt bei dem nur auf dem letzten Block und die Entstehungsgeschichte Block oder den Gabelblock asertwurde aktiviert. Dies vermeidet die rekursive Definition, die wtemahat. Für weitere Informationen asertempfehle ich Mark Lundeberg'sprägnantes Einführungspapier .

Die beiden Algorithmen sind funktional nahezu identisch, wenn die Blockintervalle ziemlich nahe am Normalen liegen und sich nur an den Extremen unterscheiden.

wtema und asert sind für kleine Blocklösungszeiten ungefähr gleichwertig, weichen jedoch für längere Lösungszeiten voneinander ab. In beiden Richtungen weist asert eine überlegene Leistung auf. Es gibt eine problematische Kreuzung der x-Achse mit großen negativen Lösungszeiten mit wtema, aber nicht asert. Große positive Löslichkeiten führen dazu, dass die Schwierigkeit durch Aert verringert wird. Bildnachweis: dgenr8

Die Debatte zwischen den beiden Algorithmen schien sich auf vier Themen zu konzentrieren :

  1. Ganzzahlige Näherungen - einfacher wtemaals asert, da aserteine explizite Exponentialfunktion verwendet wird, aber in beiden Fällen möglich

  2. Singularität und negative Löslichkeiten - problematisch wtema, aber nicht asert, wie in der obigen Grafik gezeigt (Quelle: dgenr8 ). wtemabenötigt wahrscheinlich Regeln, die die Löslichkeit einschränken, um größer als ein Wert zu sein (zB> -0.5 * 144 * 600 secfür wtema-144)

  3. Mathematische und theoretische Eleganz - gut mit beiden, aber besser für asert

  4. Akkumulation von Rundungs- / Approximationsfehlern - bescheiden wtema, aber asertaufgrund seiner absoluten Natur nicht vorhanden

Die Hauptprobleme schienen # 1 und # 2 zu sein . Die Notwendigkeit ganzzahliger Näherungen von 2 ^ x macht asertdie Komplexität komplexer. Die Notwendigkeit, vor großen negativen Lösungszeiten zu schützen, wird wtemakomplexer. Letztendlich haben wir beschlossen, dass es besser ist, ein paar Codezeilen zur Schwierigkeitsberechnungsfunktion selbst hinzuzufügen, als andere Konsensregeln hinzuzufügen oder zu ändern, um große negative Lösungszeiten zu verbieten, und haben uns daher entschlossen asert.

Es ist wichtig, Gleitkommacode nicht in Bitcoin-Konsensregeln aufzunehmen, da C und C ++ im Allgemeinen nicht IEEE 754-kompatibel sind und verschiedene Compiler und Hardware bei Gleitkommaberechnungen nicht übereinstimmen können. Wir brauchen also eine ganzzahlige Näherung. Wir haben uns dann verschiedene Approximationsimplementierungen angesehen.

Die von mir gewählte Methode basiert auf der 2^x = 2 * 2^(x-1)Identität, um die 2^xAnnäherung an den 0 <= x < 1Bereich zu verschieben. Sobald dies geschehen ist, asertwird es bemerkenswert unempfindlich gegenüber verbleibenden Fehlern, und selbst eine so einfache Annäherung 2^x ~= 1 + xfunktioniert ziemlich gut. Aber wir könnten es viel besser machen, also haben wir es gemacht. Nachdem ich einige Ansätze getestet habe, entscheide ich mich schließlich für Mark Lundebergs kubische Approximation von 2^xfor 0 <= x < 1. Diese Annäherung hält eine Fehlerquote unter 0,013% aufrecht.

Der Fehler für Mark Lundebergs 2 ^ x-Näherung liegt zwischen -0,010% und + 0,013%.

Hier ist ein noch nicht getestetes Beispiel für eine C ++ - Implementierung des aserti3Algorithmus , und hier ist eine gut getestete Python3-Implementierung vonaserti3 . Die Leistung spiegelt die wahre asert sehr genau wider . Das Testen der C ++ - Implementierung sollte bald folgen.

Die wichtigste konkurrierende Approximationsoption war die exp_int_approx()Implementierung von Jacob Eliosoff , bei der ein Algorithmus aus dem Stapelüberlauf verwendet wird , um eine willkürliche Genauigkeit zu erzielen, jedoch auf Kosten der Verwendung einer forSchleife und einer undurchsichtigeren Mathematik und eines undurchsichtigeren Codes.

Ich habe eine Halbwertszeit von 2 Tagen gewählt ( tau = 2*24*60*60entspricht einer Reaktionseinstellung von 2*144/ln(2)oder aserti3-415.5aufgrund eines Unterschieds in den Exponentialbasen), da dies innerhalb des Wertebereichs zu liegen scheint, der in der Simulation nahezu optimal funktioniert und gleichzeitig für den Menschen leicht zu verstehen und zu verstehen ist diskutieren - für alle 2 Tage vor dem Zeitplan verdoppelt sich der Schwierigkeitsgrad eines Blocks. Ich betrachte eine Halbwertszeit von 1 Tag (aserti3-207.75) auch akzeptabel sein. Ich empfehle, nicht unter 207,75 oder höher als 576 zu gehen.

Aktivierung

Da die asertBerechnung von der Höhe und dem Schwierigkeitsgrad des Gabelblocks abhängt, ist die Implementierung wesentlich einfacher und einfacher, wenn die Aktivierung auf einer vorgegebenen Blockhöhe und nicht auf einer vorgegebenen Medianzeit (MTP) erfolgt. Wenn der letztere Ansatz verwendet wird, muss der neue asertCode nach dem Verzweigen die Blockchain nach dem ersten Block durchsuchen, dessen MTP die Gabelzeit überschritten hat, und die Höhe und Schwierigkeit aus dem Header dieses Blocks extrahieren. Wenn dagegen eine Gabelhöhe verwendet wird, muss der asertAlgorithmus nur die Blockchain nach der Schwierigkeit in der bekannten Höhe durchsuchen - eine erheblich einfachere Operation. Obwohl eine MTP-basierte Aktivierung von asertmöglich ist, glaube ich, dass es insgesamt einfacher und besser sein wird, diese Aktivierung stattdessen basierend auf der Blockhöhe durchzuführen.

Bitcoin ABC hat die Tradition, dem Code im Voraus eine Giftpille hinzuzufügen, um veraltete Versionen seiner Software bei einem vorgegebenen MTP zu entfernen. Wenn zur Aktivierung eine Gabelhöhe verwendet wird asertasertstimmen die Aktivierung der Giftpille und die Aktivierung nicht genau überein. Dies führt wahrscheinlich zu zwei technischen Hartgabeln in schneller Folge und nicht zu einer einzigen Dreiwegegabel. Dies ist ein kleiner Nachteil bei der Verwendung einer Gabelhöhenaktivierung. Aber selbst wenn die Giftpille nicht perfekt zusammenfällt, wird sie dennoch ihren Zweck erfüllen: Sie wird Einzelpersonen davon abhalten, weiterhin veraltete Software auszuführen.

Ich glaube, dass der (möglicherweise dauerhaft) einfachere Code einer höhenbasierten Aktivierung von asertdas Problem der zeitlichen Nichtübereinstimmung überwiegt, daher habe ich in meiner Beispiel-C ++ - Implementierung eine höhenbasierte Aktivierung verwendet . Ich bin damit einverstanden, dass dies geändert wird, wenn eine Mehrheit der BCH-Entwicklergemeinschaft anderer Meinung ist.

Testnet

Es gilt die Standardregel für 20-Minuten-Testnetze: Ein Block kann mit Schwierigkeit 1 abgebaut werden, wenn sein Zeitstempel mindestens 20 Minuten vor dem vorherigen Block liegt. Da die asertSchwierigkeitsanpassungen eher auf der Zeit als auf der Blockhöhe basieren, funktioniert die "Timewarp" -Technik zum Zurücksetzen der Schwierigkeit im Testnetz (durch wiederholtes Vorwärtsspringen des Zeitstempels, um die durchschnittliche Kettenarbeit über das letzte Schwierigkeitsanpassungsintervall zu senken) nicht. Aus diesem Grund lassen sich Testnet-Schwierigkeiten nach dieser Änderung langsamer beheben als zuvor, und Testnet-Benutzer können einige Tage lang mit 20-Minuten-Blöcken stecken bleiben, nachdem ein ASIC-Miner Testnet verlassen hat. Dies könnte durch Reduzierung dertauWert auf testnet, aber die Kosten für diese Änderung wären, dass testnet dem Mainnet weniger genau ähnelt. Entwickler, die häufig Testnet verwenden, sollten diskutieren, welchen Ansatz sie bevorzugen.

Anschläge

Wir haben uns einige verschiedene Arten von Angriffen angesehen aserti3und bisher mit bestehenden Konsensregeln und Nicht-ABC / BCHN-Knotenrichtlinien in fast allen Szenarien eine aserti3Outperformance erzielt cw-144. Es gibt nur wenige, die besorgniserregend erscheinen. Alle bisher identifizierten Angriffe sind von geringer Größe (normalerweise kleiner als andere bekannte und vorhandene Angriffsvektoren) und / oder können durch Änderungen der Richtlinien für kleine Knoten leicht abgeschwächt werden.

Die Angriffsszenarien, die von erheblicher Bedeutung sind, sind alle diejenigen, vor denen die aktuelle DAA durch die Verwendung eines Median-of-Three-Vorfilters schützt . Die aktuelle DAA verwendet den mittleren Zeitstempel der letzten drei Blöcke sowie den mittleren Zeitstempel der Blöcke 144, 145 und 146 vor. Dieser Median-of-Three-Vorfilter fügt der DAA in den meisten Szenarien effektiv 1 Block Verzögerung hinzu, wodurch verhindert wird, dass Schwierigkeiten bei einem 2-Block-Reorg-Angriff ausgenutzt werden, wie sie in den meisten bekannten egoistischen Mining-Strategien verwendet werden. Dieser zusätzliche Verzögerungsblock führt jedoch auch zu Oszillationsproblemen in den meisten DAAs, die noch nicht oszillierend sind, einschließlich EMAs. Daher raten zawy12 und ich dringend von der Verwendung von Median-Vorfiltern ab. Dies erfordert zwei Arten von 2-Block-Angriffen, die besondere Aufmerksamkeit erfordern.

Das untere Diagramm zeigt die Schwierigkeitsregulierungsleistung für eine normale EMA-DAA wie wtema. Das obere Diagramm zeigt denselben DAA, jedoch mit einer Verzögerung von 1 Block. Diese Verzögerung erzeugt eine Instabilität und Schwingung mit einer Periode von 2 Blöcken und ist eine Katastrophe. Bildnachweis: zawy12

Der erste Angriff ist egoistischer Bergbau ohne Schwingungen. In diesem Szenario kann ein egoistischer Bergmann Aeinen Block A1mit einem künstlich frühen Zeitstempel erstellen - beispielsweise einer Lösungszeit von 1 Sekunde -, was die Schwierigkeit des nächsten Blocks A2um 0,24% erhöht . Dies kann dazu führen, dass die Kette A2etwas mehr Kettenarbeit hat als B2und dass Knoten bevorzugt A2werden, B2selbst wenn B2sie zuerst gesehen wurden. Bitcoin ABC und BCHN haben bereits Knotenrichtlinienregeln , die diesen Angriff blockieren, Bitcoin Unlimited jedochund die meisten anderen Knoten nicht. Um dieses Problem zu beheben, empfehlen wir, dass alle verbleibenden Knoten der zuerst gesehenen Regel für Blöcke eine Hysterese hinzufügen: Knoten sollten Ketten nur wechseln, wenn die Arbeit der neuen Kette die der ersten um einen wesentlichen Schwellenwert überschreitet, z. B. 10% oder 50% der Kettenarbeit eines Blocks .

Der zweite Angriff ist der FTL-Angriff (Future Time Limit). Bei diesem Angriff erstellt ein Bergmann einen Block mit dem auf die FTL gesetzten Zeitstempel ( derzeit 7200 Sekunden in der Zukunft gemäß den Richtlinien der meisten BCH-Knoten), um den Schwierigkeitsgrad einer geheimen Kette zu verringern. Anschließend werden so viele Blöcke wie möglich bis zum Schwierigkeitsgrad abgebaut an dieser Kette kehrt zum Normalzustand zurück. Dieser Angriff kann unter bestimmten (aber nicht allen) Umständen etwas effektiver sein asertals cwunter, da asertdie Schwierigkeit nach einem einzelnen Block und nicht nach zwei für reagiert cw. Dieser Effekt wird durch die Verwendung einer langsameren Reaktionseinstellung ( aserti3-2detwa 1/4 so reaktionsschnell wie cw-144) weitgehend gemindert , kann jedoch besser durch einfaches Verringern der FTL behoben werden.

Die Senkung der FTL scheint eine einfache Verbesserung zu sein. Viele Altcoins haben die FTL ohne beobachtete negative Konsequenzen gesenkt. In der modernen Welt von NTP und GPS ist es einfach, die Systemuhren innerhalb von 0,1 Sekunden synchron zu halten. Es gibt also keinen Grund, Fehler von bis zu 7.200 Sekunden ohne Bestrafung zuzulassen. Selbst in der interplanetaren Zukunft der Menschheit wird eine FTL von 600 Sekunden keine Probleme für das Bitcoin-Protokoll verursachen, da Blöcke, in denen der Zeitstempel die Veröffentlichungszeit widerspiegelt, dazu führen, dass Blöcke mit alten empfangen werdenZeitstempel auf anderen Planeten, keine zukünftigen Zeitstempel. In ferner Zukunft müssen wir möglicherweise die FTL überdenken, sobald der Bitcoin-Abbau für Fahrzeuge mit relativistischen Geschwindigkeiten beginnt. Bis dahin empfehle ich jedoch, den Wert auf 600 Sekunden oder weniger zu senken. Darüber hinaus muss bei jeder Reduzierung der FTL die DEFAULT_MAX_TIME_ADJUSTMENT- Grenze, inwieweit die Peer-Zeit von der Ortszeit abweichen kann (die "Peer-Time-Revert-Regel", wie zawy12 sie nennt), entsprechend angepasst werden.

Dies ist keine erschöpfende Diskussion möglicher Angriffe, sondern lediglich eine Einführung in die bekannten besorgniserregenden Angriffe. Die Diskussion einiger anderer Angriffsszenarien finden Sie in zawy12s EMA for BCH (Teil 2) und Hash Attack Examples Github Issue Threads.

Fazit

Die aktuelle DAA cw-144verursacht BCH viele Probleme. Wir sollten es reparieren. Ein Wechsel zu einem EMA- oder LWMA-Algorithmus würde diese Probleme beheben. Der aserti3-2dAlgorithmus scheint insgesamt weit überlegen zu sein cw-144, und ich glaube, er ist die beste Option, die wir haben.

Ein guter DAA sollte die folgenden Eigenschaften in grober Reihenfolge der Wichtigkeit haben:

  1. Es sollte stabil und nicht anfällig für Schwingungen sein.

  2. Die Bestätigungszeiten sollten niedrig gehalten werden.

  3. Es sollte die Anreize für Bergleute niedrig halten, Hashrate-Spielereien durchzuführen.

  4. Es sollte die Anreize für Bergleute niedrig halten, Zeitstempel-Manipulations-Spielereien durchzuführen.

  5. Es sollte die Anreize für Bergleute, selbstsüchtige Bergbau-Spielereien durchzuführen, gering halten.

  6. Aufgrund von Nr. 3 , Nr. 4 und Nr. 5 sollten ehrliche Bergbaustrategien mit konstantem Hashrat ein nahezu optimales Einkommen erzielen.

  7. Die Kette sollte sich nach plötzlichen Änderungen der Hashrate und / oder des Wechselkurses schnell erholen.

  8. Das durchschnittliche Blockintervall sollte nahe am Ziel gehalten werden (z. B. 600 Sekunden).

  9. Der Algorithmus sollte mathematisch einfach und elegant sein.

  10. Der Algorithmus sollte leicht zu verstehen und zu analysieren sein.

  11. Der Algorithmus sollte leicht und einfach zu implementieren sein. und

  12. Der Algorithmus sollte wenige oder keine Kanten- und Eckfälle haben.

In diesem Artikel habe ich einige Beweise geliefert, die aserti3-2dwahrscheinlich die meisten oder alle dieser Anforderungen erfüllen. Ich ermutige die BCH - Entwickler - Community, und die BCH - Gemeinschaft als Ganze, für Szenarien , in denen zu suchen , die aserti3-2ddiese Kriterien nicht erfüllt, und zu vergleichen , aserti3-2dum cw-144und alle anderen Kandidaten DAAs in diesen Szenarien.

https://arxiv.org/pdf/2006.03044.pdf

3
$ 0.00
Avatar for krise636
4 years ago

Comments

bitcoincash:qqwk9vcyv7mrexvz52njql60kfcgjjyspsey8xtgx4

$ 0.00
4 years ago

bitcoincash:qzdfzk7qym2q4svaqhwad3un0ex5sqeq5g23vaxkap

$ 0.00
4 years ago