Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zemse/poseidon2-evm
Poseidon2 hash function implemented in Solidity
https://github.com/zemse/poseidon2-evm
evm huff poseidon2 solidity yul
Last synced: 12 days ago
JSON representation
Poseidon2 hash function implemented in Solidity
- Host: GitHub
- URL: https://github.com/zemse/poseidon2-evm
- Owner: zemse
- License: mit
- Created: 2024-04-06T09:04:22.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-05-10T05:27:50.000Z (9 months ago)
- Last Synced: 2024-11-11T07:02:57.575Z (2 months ago)
- Topics: evm, huff, poseidon2, solidity, yul
- Language: Solidity
- Homepage:
- Size: 68.4 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# poseidon2 for evm
implementations of poseidon2 hash function (https://eprint.iacr.org/2023/323.pdf) in solidity, yul and huff.
## usage
the `Poseidon2` contract needs to be deployed on the network and then you can make calls to it. here is an example to hash two field elements:
```solidity
contract MyContract {
function myFunction() external returns (uint256) {
uint256 result = 0xPoseidon2ContractAddress.call(
abi.encode(
0x1762d324c2db6a912e607fd09664aaa02dfe45b90711c0dae9627d62a4207788,
0x1047bd52da536f6bdd26dfe642d25d9092c458e64a78211298648e81414cbf35
)
);
return result;
}
}
```## benchmarks
### huff
gas cost for hashing one, two or three elements: 16949
### yul benchmarks
gas cost for hasing one, two or three elements: 27517
### solidity benchmarks
| num elements | est gas |
|--------------|-----------|
| hash_1 | 219544 |
| hash_2 | 220018 |
| hash_3 | 220641 |
| hash 4 | 416486 |
| hash 5 | 417197 |
| hash 6 | 417952 |
| hash 7 | 604599 |
| hash 8 | 605311 |
| hash 9 | 606064 |
| hash 10 | 792604 |