Check out the Issue Explorer
Looking to fund some work? You can submit a new Funded Issue here.
As part of the Istanbul network upgrade, BLAKE2b support will be added to Ethereum.
This bounty is to implement a BLAKE2b precompile as part of Pantheon that conforms to the specification in EIP-131 (as specified in this [Github PR link](https://github.com/ethereum/EIPs/pull/2129/files)) as required for the Istanbul Hard fork [EIP-1679](http://eips.ethereum.org/EIPS/eip-1679).
**Note: if you wish to work on this bounty for the hackathon, please comment on the Github issue so that others know you are working on it.**
The implementations should use a coding style consistent with the rest of Pantheon. Please see our [Contribution Guidelines](https://github.com/PegaSysEng/pantheon/blob/master/CONTRIBUTING.md) for more information, along with the following classes for reference:
* The RipeMD precompiled contract is expected to have a similar pattern: [Github search results](https://github.com/PegaSysEng/pantheon/search?q=RIPEMD160PrecompiledContract&unscoped_q=RIPEMD160PrecompiledContract)
* The BouncyCastle library has a [Blake2bDigest](https://github.com/bcgit/bc-java/blob/master/core/src/main/java/org/bouncycastle/crypto/digests/Blake2bDigest.java) that may be of use implementing the EIP. Bouncy Castle has a [MIT style license](https://github.com/bcgit/bc-java/blob/master/core/src/main/java/org/bouncycastle/LICENSE.java) and is compatible with our Apache 2.0 license. Be sure to attribute authorship and point to the relevant license when copying code.
### Submission Requirements
* Implementation of a BLAKE2b precompile as part of Pantheon which is compliant with EIP-131 (also possibly known under the numbers (https://github.com/ethereum/EIPs/pull/2129/files) and (https://github.com/ethereum/EIPs/pull/2024/files)) and the requirements for the Istanbul network upgrade.
* Unit test code to validate correct behavior.
* Integration test to demonstrate correct behavior.
* Passes all reference tests for the Blake 2b precompiles in the [Ethereum reference tests](https://github.com/ethereum/tests), if they are available prior to the submission deadline.
* All libraries and dependencies must use Apache 2.0 friendly licenses
* A `demo.md` file that explains how PegaSys engineers can verify that the code works as intended, ideally without the use of 3rd party tools.
### Submission Deadline: July 10th
### Judging Criteria
The bounty will be awarded to the best submission based on compliance the EIP specification, code and testing quality, compliance with [Contribution Guidelines](https://github.com/PegaSysEng/pantheon/blob/master/CONTRIBUTING.md), performance speed, maintenance burdens, and the Submission Requirements above, according to PegaSys.
### Judging Date: July 12th
### Bounty: 1000 DAI