Replies: 1 comment 1 reply
-
A few quick thoughts:
|
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
After playing with Solidity implementation of Poseidon in context of development on-chain Nova verifier, I've noticed couple of differences in implementation between Neptune, which we treat as reference for Nova and Ethereum-based one, which I used as a starting point for a Poseidon building block for Nova. This is the patch for actual contract that uses state with 7 field elements (lines with minuses mean Ethereum-based implementation and lines with pluses are actually influenced by Neptune in order to achieve compatibility with it):
Also, probably the differences in generator might be more expressive, so let me also show them in this context:
Essentially, these are the differences:
ark
) function, Neptune uses multiple constants (different one for each field element in the state) for adding to the state, while Ethereum uses one constant for adding to all elements in the state:mix
function:I can't judge about cryptographic implications, but would like to pay attention, as soon as security is important.
Beta Was this translation helpful? Give feedback.
All reactions