HIVE Monitor - Adding Hive-Engine Witness Schedule EN/DE

Here comes the next update on my tool for HIVE / Hive-Engine witnesses primersion.com.

I haven't posted an update on the tool for quite some time, but I have still been working on it in the last weeks.

Hive-Engine Witness Schedule

The biggest new feature is the Hive-Engine witness schedule. If you missed the recent update, the number of Hive-Engine witnesses were increased from 10+1 to 20+1. So now each rounds takes twice as long as before and the rewards for witnesses were approximately halved.

Verification of blocks on Hive-Engine is done by the witnesses in so called "rounds". One round consists of 21 blocks and at the start of the round the new schedule is chosen from the 20 main witnesses plus one backup witness from the remaining witnesses. After all blocks were verified, at the end of the round the last witness proposes the round hashes (detailed tx over here https://he.dtools.dev/b/6313914):

...
"round":153125,
"roundHash":"d1923fd960384c1c7a2b3e97819d95b2da9a8e2e9e86b93851a8a2b98be87d96",
"signatures":[
  ["hewitness","1f2ba90c1d794f093c17d3c7d73e7419551e307ac29101521f75fe468615825c314ced9088eff3837904b90e16bccb86763c1f95d26d22e0b3de23f26920b6510d"],
  ["ausbit.dev","202a8271ef0be3d56ccb832af8bc690a323dbe49e1267566ab10a178e70e16d8e23ae7b35243858b0a42de5499ac951355be538c1836f1dca5d792f58943ab2c37"],
  ["actifit-he","1f2e6970ef612075e13e2c3e277cda874a61027444ff3263eed6...
...

which has to contain at least 14 (out of the 21) signatures or else the process will fail.

Additionally the round rewards are paid out at the end of the round:

...
{"contract":"tokens","event":"transferFromContract","data":{"from":"witnesses","to":"primersion","symbol":"BEE","quantity":"0.00951293"}},
{"contract":"tokens","event":"transferFromContract","data":{"from":"witnesses","to":"ph1102.ctp","symbol":"BEE","quantity":"0.00951293"}}
...

and the new schedule is started, which can be seen by the virtual transaction with the action scheduleWitnesses.

How to find the current schedule?

The schedule is processed by the witnesses contract and can be read directly from the database of a Hive-Engine node by reading the data of the witnesses contract. Details of the process can be found at the wiki over here.
There is a schedules table, which holds the current schedule for all 21 blocks of the current round. The table includes the fields witness, blockNumber and round and can be read e.g. through the RPC interface of a node using:

{
  id: 1,
  jsonrpc: "2.0",
  method: "find",
  params: {
    contract: "witnesses",
    indexes: [
      {
        index: "blockNumber",
        descending: true,
      }
    ],
    query: {},
    table: "schedules"
  }
}

which will return something like:

{ "_id" : 1719342, "witness" : "spinvest-witness", "blockNumber" : 6314919, "round" : 153174 }
{ "_id" : 1719343, "witness" : "actifit-he", "blockNumber" : 6314920, "round" : 153174 }
{ "_id" : 1719344, "witness" : "brofund-witness", "blockNumber" : 6314921, "round" : 153174 }
{ "_id" : 1719345, "witness" : "enginemaker", "blockNumber" : 6314922, "round" : 153174 }
...

Displaying the schedule on HIVE Monitor

I have added a new section to the HIVE Monitor tool, which can be found on the left side under the HIVE Engine section:

image.png

When you click on it the current schedule will load, displaying the current Hive-Engine block, the current round and the schedule for the current round:

image.png

Already processed blocks will have a solid background and blocks, which need to be processed are highlighted. The content will auto-refresh every few seconds and show the newly processed blocks. When all blocks were processed the new schedule loads automatically (this may take a few seconds). At the top also the witness proposing the current round hashes is shown, which is always the last witness in the schedule.

If you are curious go and check it out over here: https://primersion.com/he-schedule

This adds more transparency to the process and I hope this helps you understand the Hive-Engine witness process a little better.

Other changes to the HIVE Monitor

A few other small changes were made to the tool, including a short section with "Useful Links". This section is intended to be more like a page for collecting useful stuff regarding and for Hive-Engine witnesses. It includes links for how to set up a Hive-Engine node, links to snapshots and other useful stuff:

image.png

I also made a few small changes to the HE witnesses page. I added a new column called "last reward", which indicates when the last reward was received:

image.png

The reason for this was, that the "last block" column is updated only for the witness proposing a round. This means that it can take quite some time, until this column is updated, especially for witnesses further down the list. For them the column may show "a day ago". The last reward column is updated whenever the witness receives a reward, which is the case when the witness participates in a round (even if not proposing the round). So this column is updated much more frequently (for the main witnesses it will mainly show "a few seconds ago", because they participate in every round).


That was all from my side - I hope this adds more transparency and makes the whole process more clear to all of you.



Hier kommt endlich das nächste Update zu meinem Tool für Hive / Hive-Engine Witnesse primersion.com.

Ich habe schon längere Zeit kein Update mehr zu dem Tool geposted, aber ich habe in den letzten Wochen stets daran weitergearbeitet.

Hive-Engine Witness Schedule

Die größte Neuerung ist das Hive-Engine Witness Schedule. Falls du das kürzliche Update verpasst hast, die Anzahl der Hive-Engine Witnesse wurde von 10+1 auf 20+1 erhöht. Das heißt jede Runde dauert nun doppelt so lange und die Witness Rewards werden somit in etwa halbiert (unter mehr Witnessen aufgeteilt).

Die Verifizierung von Blöcken auf Hive-Engine wird von den Witnessen in so genannten Runden durchgeführt. Jede Runde besteht aus 21 Blöcken und am Beginn der Runde wird ein neues Schedule aus den 20 Hauptwitnessen plus einem Backupwitness (ausgewählt aus den übrigen Witnessen) zusammengestellt. Nachdem alle Blöcke der Runde verifizert wurden veröffentlich der letzte Witness alle Hashes der Runde (mehr Details dazu findest du in der Transaktion hier https://he.dtools.dev/b/6313914):

...
"round":153125,
"roundHash":"d1923fd960384c1c7a2b3e97819d95b2da9a8e2e9e86b93851a8a2b98be87d96",
"signatures":[
  ["hewitness","1f2ba90c1d794f093c17d3c7d73e7419551e307ac29101521f75fe468615825c314ced9088eff3837904b90e16bccb86763c1f95d26d22e0b3de23f26920b6510d"],
  ["ausbit.dev","202a8271ef0be3d56ccb832af8bc690a323dbe49e1267566ab10a178e70e16d8e23ae7b35243858b0a42de5499ac951355be538c1836f1dca5d792f58943ab2c37"],
  ["actifit-he","1f2e6970ef612075e13e2c3e277cda874a61027444ff3263eed6...
...

was mindestens 14 (aus den 21) Signaturen beinhalten muss, ansonsten scheitert der Mechanismus.

Zusätzlich werden hier auch die Rewards der Runde an die Witnesse ausgezahlt:

...
{"contract":"tokens","event":"transferFromContract","data":{"from":"witnesses","to":"primersion","symbol":"BEE","quantity":"0.00951293"}},
{"contract":"tokens","event":"transferFromContract","data":{"from":"witnesses","to":"ph1102.ctp","symbol":"BEE","quantity":"0.00951293"}}
...

und das nächste Schedule wird initiiert, was man der virtuellen Transaktion mit der Aktion scheduleWitnesses erkennen kann.

Wie findet man das aktuelle Schedule?

Das Schedule wird vom Witnesses Contract gehandhabt und kann direkt aus der Datenbank eines Hive-Engine Nodes aus dem Witnesses Contract ausgelesen werden. Details zum genauen Ablauf findet man hier im Wiki.
Es gibt dort eine schedules Tabelle, welche das aktuelle Schedule für alle 21 Blöcke der aktuellen Runde hält. Die Tabelle beinhaltet die Felder witness, blockNumber und round und kann zum Beispiel direkt über das RPC Interface eines Nodes ausgelesen werden:

{
  id: 1,
  jsonrpc: "2.0",
  method: "find",
  params: {
    contract: "witnesses",
    indexes: [
      {
        index: "blockNumber",
        descending: true,
      }
    ],
    query: {},
    table: "schedules"
  }
}

was etwas in dieser Richtung ausspuckt:

{ "_id" : 1719342, "witness" : "spinvest-witness", "blockNumber" : 6314919, "round" : 153174 }
{ "_id" : 1719343, "witness" : "actifit-he", "blockNumber" : 6314920, "round" : 153174 }
{ "_id" : 1719344, "witness" : "brofund-witness", "blockNumber" : 6314921, "round" : 153174 }
{ "_id" : 1719345, "witness" : "enginemaker", "blockNumber" : 6314922, "round" : 153174 }
...

Anzeigen des Schedules im HIVE Monitor

Ich habe eine neue Seite zum HIVE Monitor hinzugefügt, welche auf der linken Seite im Menü direkt im HIVE Engine Unterpunkt gefunden werden kann:

image.png

Wenn du darauf klickst wird das aktuelle Schedule geladen, welches den aktuellen Hive-Engine Block, die aktuelle Runde und das Schedule der Runde folgendermaßen anzeigt:

image.png

Bereits abgearbeitete Blöcke haben einen einfarbigen Hintergrund, Blöcke die noch abgearbeitet werden müssen sind mit einem schrägen Hintergrund markiert. Der Inhalt aktualisiert sich automatisch alle paar Sekunden und zeigt die neu abgearbeitetn Blöcke an. Wenn alle Blöcke durch sind, wird das neue Schedule automatisch geladen (kann ein paar Sekunden dauern). Ganz oben sieht man auch noch den Witness, welcher die Hashes der aktuellen Runde auf der Blockchain veröffentlicht (immer der letzte Witness der aktuellen Runde).

Du kannst dir das ganze direkt hier anschauen: https://primersion.com/he-schedule

Dadurch wird der ganze Prozess transparenter und hoffentlich wird daurch für euch alle etwas verständlicher was genau die Hive-Engine Witnesse eigentlich machen.

Andere Änderungen im HIVE Monitor

Einige kleine Änderungen wurden am Tool durchgeführt. Unter Anderem wurde ein neuer Unterpunkt "Useful Links" eingefügt. Dort werden verschiedene Links über und für Hive-Engine Witnesse gesammelt. Zum Beispiel gibt es Links zu Tutorials, wie ihr selbst einen Hive-Engine Node aufsetzen könnt, Links zu Snapshots und einige weitere nützliche Infos:

image.png

Außerdem habe ich ein paar kleinere Änderungen an der HE Witness Seite durchgeführt. Ich habe eine "last reward" Spalte hinzugefügt, welche anzeigt wann der Witness zuletzt einen Reward in Form von BEE erhalten hat:

image.png

Der Grund dafür ist, dass die "last block" Spalte nur für den Witness der die Hashes der Runde veröffentlicht aktualisiert wird. Das heißt, dass es lange dauern kann bis diese Spalte aktualisiert wird, vor allem für Witnesse weiter unten in der Liste. Für diese kann dort durchaus auch mal "vor einem Tag" stehen. Die "last reward" Spalte hingegen wird immer aktualisiert, wenn der Witness einen Reward erhält, was immer der Fall ist, wenn der Witness an einer Runde teilnimmt (ohne die Runden Hashes zu veröffentlichen). Also wird diese Spalte viel häufiger aktualisiert (für die Hauptwitnesse wird die Spalte fast immer "vor ein paar Sekunden" anzeigen, weil diese ja an jeder Runde teilnehmen).


Das war auch schon wieder alles von meiner Seite - ich hoffe (vor allem) das Schedule bringt mehr Transparenz in die ganze Geschichte und macht für euch den Prozess verständlicher.


If you like what I am doing, please support me by voting for my HIVE / Hive-Engine witness:

HIVE (using Hivesigner)
Hive-Engine (using Votify)

H2
H3
H4
3 columns
2 columns
1 column
14 Comments
Ecency