Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: change type ID to Bytes #8

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

shiyasmohd
Copy link

@shiyasmohd shiyasmohd commented Jun 30, 2024

Comment on lines +147 to +148
export function compoundId(idA: Bytes, idB: Bytes): Bytes {
return idA.concat(idB)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small caveat with this function, there are some cases (unsure if it happens in this particular subgraph though) where you can end up with ID collision by using this approach (no separator when joining IDs).
It happened in the activity subgraph, where we had an ID generation logic that took an address and 2 numbers (which I can't recall if it was an address + log index and a counter, or the other way around).
You could have multiple collisions as long as logIndex.concat(counter) would be equals, which can happen in many different ways, like having a log index of 11 and a count equals to 0, and a log index of 1 and a count equals to 10.

There are 2 different ways of avoiding such collisions, one is to simply use a separator (when using strings it was often times quite easy since you simple used -and that's it, but with bytes you can't, so you need to use a random set of characters that you know) or use fixed bytes length for each different type of data (that way, if you know you are having 32 bytes for each number, 11 + 0 and 1 + 10 won't collide, since the padding will be different).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants