Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 61 additions & 3 deletions continuous/collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -172,8 +172,11 @@ func collectSequencerEvents(startBlock uint64, endBlock uint64, cfg *Configurati
}

type Success struct {
trigger int64
included int64
trigger int64
included int64
validatorIndex int64
graffiti string
decryptedTxHash common.Hash
}

type BlockCache struct {
Expand Down Expand Up @@ -267,7 +270,22 @@ func collectSubmitIncomingTx(startBlock uint64, endBlock uint64, cache *BlockCac
var successForBlock []Success
for _, tx := range txs {
if tx.To() != nil && tx.To().Hex() == cfg.submitAccount.Address.Hex() {
success := Success{tx.Value().Int64(), block.Number().Int64()}
blockNumber := block.Number().Int64()

validatorIndex, graffiti, err := queryValidatorInfoForBlock(blockNumber, cfg)
if err != nil {
log.Printf("Error querying validator info for block %d: %v", blockNumber, err)
validatorIndex = 0
graffiti = ""
}

success := Success{
trigger: tx.Value().Int64(),
included: blockNumber,
validatorIndex: validatorIndex,
graffiti: graffiti,
decryptedTxHash: tx.Hash(),
}
result = append(result, success)
successForBlock = append(successForBlock, success)
}
Expand Down Expand Up @@ -457,6 +475,26 @@ func queryDecryptionKeysBySlot(blame *ValidatorBlame, cfg *Configuration) error
return nil
}

func queryValidatorInfoForBlock(blockNumber int64, cfg *Configuration) (int64, string, error) {
query := `
SELECT
p.validator_index,
COALESCE(vg.graffiti, '') AS graffiti
FROM block AS b
LEFT JOIN proposer_duties AS p ON p.slot = b.slot
LEFT JOIN validator_graffiti AS vg ON vg.validator_index = p.validator_index
WHERE b.block_number = $1
LIMIT 1;`
connection := GetConnection(cfg)
var validatorIndex int64
var graffiti string
err := connection.db.QueryRow(context.Background(), query, blockNumber).Scan(&validatorIndex, &graffiti)
if err != nil {
return 0, "", err
}
return validatorIndex, graffiti, nil
}

func queryStatusRatios(w *bufio.Writer, startBlock, endBlock uint64, cfg *Configuration) error {
queryStatusRatios := `
SELECT
Expand Down Expand Up @@ -526,12 +564,14 @@ func CollectContinuousTestStats(startBlock uint64, endBlock uint64, cache *Block
successByTrigger[success[i].trigger] = success[i]
}

var successful []Success
for i := range submit {
trigger := submit[i].trigger
included, ok := successByTrigger[trigger]
if ok {
delay := float64(included.included - submit[i].sequenced)
delays = append(delays, delay)
successful = append(successful, included)
} else {
failed = append(failed, submit[i])
failCnt++
Expand Down Expand Up @@ -608,6 +648,24 @@ func CollectContinuousTestStats(startBlock uint64, endBlock uint64, cache *Block
if err != nil {
return err
}

_, err = fmt.Fprintf(w, "=== Information about successful transaction inclusions ===\n")
if err != nil {
return err
}

for _, s := range successful {
_, err = fmt.Fprintln(w, s)
if err != nil {
return err
}
}

_, err = fmt.Fprintf(w, "=== Information about failed blames ===\n")
if err != nil {
return err
}

for _, blame := range blames {
_, err = fmt.Fprintln(w, blame)
if err != nil {
Expand Down