Holochain Forum

Why are DNA hashes padded by a "u"?

Hello folks,

writing the TS version of the hApp client call tutorial, I was struggling with encoding the DNA hash for the Cell ID. The DNA and PubAgentKey hashes were both prepended with a “u”, and the reason for that was not obvious to me.

I looked through the Rust code to see if this was documented anywhere, and asked @Connoropolous about it too. That only turned up a comment that indicates the pad is needed.

Does anyone know why there is this pad?

1 Like

It occurs to me that we can check git history to know who wrote the line of code. I think I know

We’re just trying to make sure Holochain addresses can be easily interpreted and understood by other applications out there. To do that we’re following the Multihash Multiformat standards.

u = unsigned integer

The hC[x] part that follows are prefixes we have registered in the Multihash table so people know to intepret these as Holochain compatible hashes using the Blake2b hashing algorithm.

6 Likes

Thanks @artbrock !
The u is related to multiformat spec, for ‘unsigned integer’ then?

1 Like

Thank you @Connoropolous and @artbrock. So there is a purpose behind it. And quite an interesting one - “self-identifying hashes”. Yeah, I had also wondered what kind of hashing algorithm is used, and I can find out looking in the code/docs. But knowing about the existence of a multihash protocol, there’s a table for that.

@Connoropolous If I understand it correctly, then it’s this unsigned varint.

1 Like