dominant-strategies / go-quai

Official Go Implementation of the Quai Network
GNU General Public License v3.0
2.36k stars 456 forks source link

[Metrics] Transaction Timing #1884

Open Djadih opened 2 weeks ago

Djadih commented 2 weeks ago

Add metrics for timing transaction propagation. When it was created, when it was included and mined, when it was received.

mibuono commented 2 weeks ago

Questions:

Do we want to add this data to transactions? If not, do we want to add as a non hashed field in the propagating payloads? How long does it take to get a block? How long does it take to broadcast a transaction?

If we end up going with workshare broadcast We are interested on broadcast time vs receive time.

Summary: How quickly blocks and transactions get around the network, and how quickly transactions are processed.

We want to add metrics for the following: Broadcast time for work share Receive time for the transaction When they got processed in the block

For non work shares - its when it gets included in a block. For work shares, it's already worked. Seems like we already have the data, just aren't logging it anywhere. We don't have the broadcast deltas.

Conclusion: Use the time payload in the broadcast packets, for both transactions and work shares. Re-add the transaction handler on the transaction receive No more data needed across the network, we just need to log it.

2 branches - we will separate out the efforts to measure these.

1 he will add to transactions 1 he will add to broadcasts

Updated scope for metrics:

  1. The data that goQuai has isn't useful - it needs to be added
  2. Needs to happen for both trasnactions and work shares.

You need to take Boardcast time versus the received time, versus the processed time.

Need to permutate these above on the same chart - see below @Djadih Broadcast and received Broadcast and processed