The tracepoint validation:block_connected was introduced in #22006.
The first argument was the hash of the connected block as a pointer
to a C-like String. The last argument passed the hash of the
connected block as a pointer to 32 bytes. The hash was only passed as
string to allow bpftrace scripts to print the hash. It was
(incorrectly) assumed that bpftrace cannot hex-format and print the
block hash given only the hash as bytes.
The block hash can be printed in bpftrace by calling
printf("%02x") for each byte of the hash in an unroll () {...}.
By starting from the last byte of the hash, it can be printed in
big-endian (the block-explorer format).
$p = $hash + 31;
unroll(32) {
$b = *(uint8*)$p;
printf("%02x", $b);
$p -= 1;
}
See also: #22902 (comment)
This is a breaking change to the block_connected tracepoint API, however this tracepoint has not yet been included in a release.