Verbesserung des PoS Verfahrens

  • Das jetzige Verfahren ist zwar besser als das, was die meisten Coins verwenden (feste Blockbelohnung), aber das heißt ja nicht, das man es nicht noch verbessern könnte. :)


    Der große Vorteil bei DEM ist:
    Man muss nicht 24/7 staken, um seine Stakebelohnungen zu bekommen, ist ist sogar egal, wann oder wie lange man stake't.

    Ein Nachteil bleibt aber: Wenn das Netzgewicht steigt (das ist die logische Folge, wenn der Coin bekannter wird) wird es immer schwerer für die, die nur verhältnismäßig wenig Coins besitzen, eine Belohnung zu bekommen. Sie müssen Wochen oder Monate warten, um mal das "Glück" zu haben.


    Lösung: Man macht es z.B. so wie Elite (1337).

    Neue Coins haben ein Gewicht von 0. Nach exakt 24 Stunden haben sie ein Gewicht, das der Anzahl der Coins entspricht. Zeiten darunter werden anteilig berechnet.

    Wenn man z.B. 24 Coins hätte, würde das Gewicht jede Stunde um 1 steigen.

    Das führt dazu, dass sich die Wartezeit verringert, je länger man keine Belohnung mehr bekommen hat.


    An den Spezifikationen des Coins ändert sich dadurch ja nichts. Es macht "nur" ein bischen Programmierarbeit.
    Vielleicht ist das ne Überlegung wert für die Entwickler.

  • Es tut mir leid es sagen zu müssen, aber bei der eMark ist es genau so wie du beschreibst.

    Je älter ein Coinblock ist, desdo mehr "Gewichtung" bekommt er. Berechnet wird aus dem Alter des Coinblockes und der Größe des Coinblockes. Und das führt dazu, dass sich die Wartezeit verringert, je länger man keine Belohnung mehr bekommen hat.


    Eine Änderung des Berechnungsalgos würde nur etwas bringen, wenn kleine Coinblöcke irgendwie bevorzugt würden. Bei den jetzigen 2 Parametern ändert sich nix, da sich das auf kleine wie auch auf große Coinblöcke linear auswirkt.

  • Das muss dir nicht leid tun. ^^

    Ich kann das nur nicht nachvollziehen. Wenn das stimmt, was du sagst, wäre ja die Anzeige der zu erwarteten Zeit im Wallet falsch.

    Denn die wird berechnet aus dem Verhältnis zw. eigenem Gewicht und Netzgewicht.


    Bsp: 1.000 DEM, die älter sind als 30 Tage und Netzgewicht von 720.000 DEM


    unter "getstakinginfo" steht dann:

    "weight" : 1000000000,

    "netstakeweight" : 720000000000


    Das heißt, das Netzgewicht ist 720 mal höher als das eigene Gewicht.

    Bei 720 erzeugten Blöcken hat man also statistisch gesehen, die Chance 1 Belohnung zu erhalten.
    Da 720 Blöcke an einem Tag erzeugt werden, ist die erwartete Zeit 1 Tag.


    Das wird auch unten rechts bei Mouseover angezeigt.

    Ich kann nirgends einen Hinweis erkennen, dass meine Coins mehr Gewichtung bekommen. Und wenn das so wäre, wäre wie gesagt die angezeigte Zeit falsch.

    Unter Coincontrol gibts zwar eine Spalte "Priorität", das hat aber nichts mit der Gewichtung zu tun, sondern wirkt sich normalerweise nur auf die Transaktionsgebühren aus. (das konnte ich jedenfalls bei anderen Coins feststellen)

    Bei DEM wirkt sich dies nach meiner Einschätzung gar nicht aus.

    Dass Priorität und Gewichtung nicht dasselbe sein können, sieht man auch daran, dass bei 1337 unter "Coin Control" 2 Spalten dafür existieren. Während "Priorität" nur wenige Abstufungen kennt (zB. niedrig, mittel, mittel-hoch, hoch, am höchsten) und hohe Beträge sofort das Prädikat "am höchsten" bekommen, kann man in der Spalte "Weight" minütlich bzw. stündlich zukucken, wie das Gewicht jeder einzelnen Transaktion höher wird.


    Du schreibst: "da sich das auf kleine wie auch auf große Coinblöcke linear auswirkt."

    Das stimmt nicht ganz. Wenn man das Wallet monatelang offen staken läßt, wird ein großer Block niemals das Alter von 100 Tagen erreichen. Je nachdem wie groß er ist, bekommt er ja am 1. Tag schon den Stake und verliert sein Gewicht wieder.

    Nur kleine Blöcke profitieren davon und haben dadurch die Chance überhaupt in angemessener Zeit eine Belohnung zu bekommen.


    Das ist der Sinn, dass kleine Coinblöcke bevorzugt werden (je älter sie werden). Angenommen man hat 2 Transaktionen:

    10 DEM + 1.000 DEM


    Der kleine Block hat eine 100 mal kleinere Chanche, eine Belohnung zu erhalten als der große und wird deshalb immer älter.

    Der große Block wird nach wenigen Stunden eine Belohnung erhalten und ist dann ja für 30 Tage nicht mehr stakefähig.

    Der kleine Block altert und sein Gewicht wird jeden Tag um 10 höher. Also nach 100 Tagen hätte er dasselbe Gewicht wie der Große zu Anfang.

    So ist es bei Elite (1337).


    Anderes Bsp:

    Man hat eine 300 Tage alte Transaktion von 100 DEM und auf einem getrennten Wallet eine 1000 DEM Transaktion, die 30 Tage alt ist.

    Wenn es stimmt was du sagst, müsste die erwartete Zeit bei beiden Wallets genauso hoch sein, 100 DEM sind zwar nur 1 Zehntel von 1000, dafür ist es aber 10x so alt.

    Tatsache ist, dass auf dem 100 DEM Wallet die angezeigte erwartete Zeit 10x höher ist, als auf dem 1000er Wallet.

    Also spielt nur der Betrag eine Rolle und nicht das Alter.

  • Berechnet wird aus dem Alter des Coinblockes und der Größe des Coinblockes.
    Und das führt dazu, dass sich die Wartezeit verringert, je länger man keine Belohnung mehr bekommen hat.

    Der 1. Satz stimmt. Denn der jährliche Zins ist ja festgelegt. Ein Block, der nur 1 Monat alt ist, bekommt beim Stake auch nur 1 Zwölftel dieses Jahreszinses. Der feste Jahreszins ist der einzige Grund, warum das Alter eine Rolle spielt. Es spielt aber nur ne Rolle, für die Berechnung des Zinsbetrages, nicht für die Dauer des Stakens.

    Satz 2 stimmt leider nicht, denn die Wartezeit ist allein abhängig vom Wert des Coinblockes und seinem Verhältnis zum Netzgewicht. So ist das leider bei den meisten Coins.


    Außerdem gilt auch hier ein Gesetz des Zufalls, das sogenannte "2 Drittel Gesetz".

    Bsp. Roulette: (Die 0 lassen wir hierbei außer acht)


    Man setzt auf eine der 36 Zahlen und spielt 36 Runden.

    2 Drittel aller in diesen 36 Runden gezogenen Zahlen werden ein oder sogar mehrmals gezogen.

    Das bedeutet aber auch, dass ein Drittel überhaupt nicht gezogen wird.

    Dazu kommt dann das Gesetz der langen Serien.

    Es ist auch nicht ungewöhnlich, wenn eine Zahl innerhalb von 200 Runden nicht gezogen wird.


    Beim PoS wird zwar keine Zahl gezogen und ausgelost, aber die Gesetze des Zufalls gelten auch hier.

    Die im Wallet angezeigte erwartete Zeit ist zwar langfristig richtig, läßt aber die beiden Gesetze des Zufalls außer acht.

    Man hat also eine Wahrscheinlichkeit von ca. 33% die Belohnung NICHT in der erwarteten Zeit zu bekommen.

    Und sie in der doppelten Erwartungszeit NICHT zu bekommen, ist die Wahrscheinlichkeit immernoch 11%.
    Das gilt auch, wenn man nur 1 Transaktion hat, wenn man mehrere hat, führt das zu einer noch größeren "Streuung" und langen Zeiten erfolglosen Stakens.


    Meine Erwartungszeit betug z.B. 36 Stunden, ich bekam aber in 240 Stunden ununterbrochenen Stakens keine Belohnung.

    Ich habe 16 gleich große Transaktionen, wären diese zusammengefasst in 1 Transaktion, hätte ich wahrscheinlich am 1. oder 2. Tag den Stake bekommen.

    Da aber jede einzelne Transaktion eine Erwartungszeit von 16 x 36 = 576 Stunden hat, wirkt sich das ungünstig aus, auch wenn sich durch die Anzahl 16 rein rechnerisch eine Zeit von 36 Stunden ergibt.


    Das könnte man durch meinen Vorschlag beheben, indem jede Transaktion ein Gewicht bekommt, das nach 1 Tag der Anzahl ihrer Coins entspricht und jeden weiteren Tag um diesen Betrag ansteigt. Dasselbe gilt natürlich fürs Netzgewicht, man sieht dann nicht mehr, wieviel Coins weltweit grade staken, aber das muss man ja auch nicht.

  • Du hast wirklich dein Wallet die ganze Zeit rund um die Uhr staken lassen?

    Wenn man annimmt, dass das geöffnete Wallet durch die zusätzliche CPU Belastung dazu führt, dass dein PC nur 0,5 Watt zusätzlich Strom verbraucht, wäre das über die gesamte Zeit (ca. 199 Tage) ein zusätzlicher Stromverbrauch von 2,3 kWh. Bei 26 cent je kWh sind das Kosten von 0,60€.
    Der erhaltene Zinsbetrag ist nach heutigem Kurswert 0,00068 € wert. Das bedeutet, der Stromverbrauch ist ca. 880x höher als der Zinsertrag. ;)

    Hier ist wie gesagt nur der "zusätzliche" Stromverbrauch berechnet. Ein Raspberry Pi verbraucht etwa 5 Watt, also das 10fache.

    Der 880fache Betrag wären 2.700 DEM. Erst bei diesem Betrag würde ein Staken von 24/7 die zusätzlichen Stromkosten decken. Allerdings wäre das ja gar nicht nötig, weil man die Zinsen schon nach ca. 5 Stunden bekommen würde. Und genau hier sieht man das Problem, man hat die Wahl, entweder auf die Zinsen zu verzichten (was ökonomisch sinnvoll wäre) oder 7 Monate zu staken und den 880fachen Zinsertrag als Stromkosten zu zahlen.


    Wenn die Uhrzeit bei beiden angegebenen Daten identisch wäre, wären es genau 199 Tage.
    3,8% Jahreszins macht bei deiner Anlagesumme einen jährlichen Zins von 0,116052 DEM und einen täglichen Zins von 0,00031773 DEM.

    Dein Zinsbetrag ist also für 198,75 Tage = ca. 198 Tage + 18 Stunden

    Das heißt, die Uhrzeit als du den Zins bekommen hast, müsste ca. 6 Stunden (5 Stunden unterschied im Explorer wg. Sommerzeit) früher sein als die Uhrzeit vom 25.12.2017

    Das aktuelle Netzgewicht ist nur noch 288.676 (schwankt leider sehr stark).

    Dein Anlagebetrag ist also ein 94524stel davon. Bei 2 min Blockzeit (720 Blöcke je Tag) wäre das eine zu erwartende Zeit von 131 Tage.

    In der vergangenenen Zeit war das Netzgewicht aber meist zwischen 500.000 und 800.000 - das wären dann 227 bis 364 Tage Wartezeit.

    Meiner Meinung nach hattest du Glück und gehörtest zu den 67%, die den Zins INNERHALB der erwarteten Zeit bekommen haben. ;)

  • Bei deiner 2. Angabe hast du dich völlig vertan. Der Zinsbetrag ist verlinkt auf eine Zinsgutschrift von 7.83560100 DEM
    Und das war ein Stake auf einen Wechselgeldbetrag von 2499.999 DEM für einen Zeitraum von 30 Tagen.
    Dieser Betrag entstand am 12th Feb 2018, als du ne Überweisung von 2500 DEM gemacht hast +0,001 DEM Gebühren und dafür ne 5000 DEM Transaktion verwendet hast.

  • Willst du mit mir streiten? ;)
    Nein, das ist kein Anzeigefehler. Ich kann dir das auch beweisen. 8o

    Es befinden sich nur noch 10,317152 DEM auf der Adresse, weil du am 1. April (ca. 2 Wochen nach Zinsgutschrift) eine Zahlung von 3009,58477000 DEM gemacht hast (die einzige rot markierte Transaktion http://gcpool.eu:3590/address/…WBtnfeakLz93wLtCRVBQHvYW3).

    Du siehst es auch schon an den Zahlen, dass es nicht stimmen kann, was du da geschrieben hast: 7,20 DEM * 3.8% = 0,2736 DEM Zinsen für ein komplettes Jahr. Und du möchtest in 2,5 Monaten, was nur ca. ein Fünftel des Jahres ist, mehr als den doppelten Betrag, nämlich 0,635601 DEM bekommen haben? Das würde ca. 44% im Jahr entsprechen.

    Wie kommst du überhaupt auf diesen Betrag, der steht ja nirgens? Da steht + 7.83560100 DEM

    Das ist der Betrag, der hinzu kam, die Zinsen stehen als Gutschrift immer einzeln, da das stakende Guthaben ja schon auf der Adresse vorhanden ist.

    Wenn du -> hier <- auf das ( i ) rechts neben der "txid" klickst, siehst du (mittendrinn):


    "value": 2507.834601


    Das ist der Stakebetrag 2499.999 DEM + 7.835601 DEM Zinsgutschrift


    Kontrolle:

    Blocktime 12th Feb 2018 16:22:13 = 1518448933

    Blocktime 14th Mar 2018 19:22:56 = 1521051776

    Differenz = 2.602.843 sec / 86.400 sec je Tag = 30,12549769 Tage
    (0,1255 Tage * 24 = 3,012 Stunden =
    16:22 Uhr bis 19:22 Uhr)

    (0,012 Stunden * 3600 = 43 Sekunden = 16:22:13 Uhr bis 19:22:56 Uhr)


    2499,999 * 3,8% = 94,999962 / 365,25 * 30,12549769 Tage = 7,835513 DEM Zinsen (Schaltjahr ist berücksichtigt, deshalb 365,25 Tage)


    Du hast etwas mehr bekommen. Aber es handelt sich nur um ein 10.000stel DEM. Da kann man drüber wegsehen. :)

    Ich weiss aber nicht, ob das im Code so gerechnet wird... Vielleicht werden die Blocksekunden auch nicht so genau genommen und es entsteht dadurch eine Abweichung.

  • Unter https://deutsche-emark.org/de/faq/

    Wie kann man nun "staken"?


    steht:


    Je größer die Coinblöcke und je älter diese sind, desto größer ist auch ihr „Gewicht“, d.h. größere und alte Coinblöcke werden schneller gestakt, bei sehr kleinen Blöcken kann es auch mehrere Wochen dauern, bis diese gestakt werden


    Coinblöcke, die jünger sind als 30 Tage, haben das Gewicht von 0, die die älter sind, haben das Gewicht, das ihren Coins entspricht. Das Gewicht verändert sich ansonsten nicht. Also ist die obige Aussage falsch. "Wochen" war vieleicht mal richtig, als das Netzgewicht noch sehr klein war. Man sollte es ersetzen durch "Monate oder sogar Jahre".

    Ich warte immernoch auf jemanden, der mich vom Gegenteil überzeugt. Ich würde mich gerne irren. ;)

  • es würde reichen, die gelb markierten Stellen einfach zu löschen, wenn sie offensichtlich falsch sind.


    EDIT:
    Naja, eigentlich ist die Aussage ne Binsenweisheit: "Je größer die Coinblöcke, desto größer ist auch ihr „Gewicht“..."

    Das kann man sich eigentlich sparen. ;)

    Man könnte es so schreiben:

    Das "Gewicht" eines Coinblocks entspricht seiner Größe, d.h. der Anzahl seiner Coins. Wie schnell dieser Block gestakt wird, hängt ab vom Verhältnis dieses Gewichts zum Netzgewicht, also der Anzahl aller im Netzwerk stakenden Coins. Ist dieses Verhältnis z.B. 1:720, wird es erwartungsgemäß 1 Tag dauern, da am Tag 720 Blöcke durch PoS erzeugt werden. Ist das Verhältnis 1:30, wird es erwartungsgemäß nur 1 Stunde dauern.

    Darum werden größere Coinblöcke schneller gestakt, bei sehr kleinen Blöcken kann es auch mehrere Monate dauern, bis diese gestakt werden.


    Man könnte auch noch hinzufügen:
    Die Zuteilung erfolgt zufallsbasiert. Deshalb ist die berechnete Erwartungszeit nur ein Richtwert, der wenn man "Glück" hat, auch deutlich unterschritten und wenn man "Pech" hat, auch deutlich überschritten werden kann.