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

Filecoin Poseidon/Neptune #91

Open
4 tasks
weikengchen opened this issue Dec 15, 2021 · 2 comments · May be fixed by arkworks-rs/sponge#32
Open
4 tasks

Filecoin Poseidon/Neptune #91

weikengchen opened this issue Dec 15, 2021 · 2 comments · May be fixed by arkworks-rs/sponge#32
Assignees

Comments

@weikengchen
Copy link
Member

Summary

Filecoin has an optimized implementation of Poseidon that has gone through an audit by the ADBK Consulting (by Mikhail Vladimirov and Dmitry Khovratovich)

https://github.com/filecoin-project/neptune/blob/master/spec/poseidon_spec.pdf

It seems to include two changes: (1) treatment of the round constants and (2) the use of sparse MDS matrices.

Neptune is fortunately MIT/Apache2.

Problem Definition

It may be interesting to look at their implementations and see if it is compatible with the current implementation, and whether or not it can bring performance improvement.

Proposal

Analysis the compatibility and decide whether or not to implement it.


For Admin Use

  • Not duplicate issue
  • Appropriate labels applied
  • Appropriate contributors tagged
  • Contributor assigned/self-assigned
@tsunrise
Copy link
Member

Filecoin has reference implementation here: https://github.com/filecoin-project/neptune/blob/master/src/poseidon.rs, though it does not have sponge construction. They also support arbitrary rate & capacity. We can probably adapt some code from them

@tsunrise tsunrise self-assigned this Feb 8, 2022
@burdges
Copy link

burdges commented Mar 9, 2022

We're okay with "sponges" that do not support converting from sponge back into absorb to give runtime errors? I'd think runtime errors would be the only option for something like say a sponge that permits converting back to absorb only if two field elements remain unsqueezed.

@Pratyush Pratyush transferred this issue from arkworks-rs/sponge Jan 19, 2023
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 a pull request may close this issue.

3 participants