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

Proposal for supporting Blake2b #2024

Closed
wants to merge 145 commits into from
Closed
Show file tree
Hide file tree
Changes from 50 commits
Commits
Show all changes
145 commits
Select commit Hold shift + click to select a range
230647f
Start new EIP
tjade273 Jun 30, 2016
585958c
Add abstract and specification
tjade273 Jun 30, 2016
ae2a9ef
Add specification and rationale
tjade273 Jul 11, 2016
2fed08b
Add rationale
tjade273 Jul 11, 2016
9044f99
Spelling fixes
tjade273 Jul 11, 2016
57f2504
Remove EIP number until assignment
tjade273 Jul 11, 2016
1649ded
Fix gas calculation
tjade273 Jul 11, 2016
bb26ea7
Remove INSIZE parameter, as it is unnecessary
tjade273 Jul 12, 2016
ebea49b
Start new EIP
tjade273 Jun 30, 2016
9c45bf9
Add abstract and specification
tjade273 Jun 30, 2016
f33bbe1
Add specification and rationale
tjade273 Jul 11, 2016
34f649e
Add rationale
tjade273 Jul 11, 2016
10004d4
Spelling fixes
tjade273 Jul 11, 2016
00da725
Remove EIP number until assignment
tjade273 Jul 11, 2016
8e59a8d
Fix gas calculation
tjade273 Jul 11, 2016
5798cb7
Remove INSIZE parameter, as it is unnecessary
tjade273 Jul 12, 2016
db85771
Expand motivation section, typo fixes
Sep 27, 2017
f4e2fd8
Add implementations in various languages
Oct 3, 2017
2d4ea31
Edit wording
Oct 4, 2017
e8117c6
Merge branch 'blake2b' of https://github.com/arcalinea/EIPs into arca…
tjade273 Oct 4, 2017
0afe99a
Merge branch 'arcalinea-blake2b'
tjade273 Oct 4, 2017
240cabc
Change the citation format in README to point to EIP-1
axic Apr 30, 2019
39f7c3f
Create eip-Funding-eth-1x.md
MadeofTin May 13, 2019
6003de7
Delete eip-Funding-eth-1x.md
MadeofTin May 13, 2019
ef115c1
Created initial File
MadeofTin May 13, 2019
36a7845
Renamed to eip-blake2b.md
MadeofTin May 13, 2019
ef02974
updated authors
MadeofTin May 13, 2019
0d659c3
Updated to Historic EIP Number
MadeofTin May 13, 2019
7354cb4
Number 2024
MadeofTin May 13, 2019
601cc35
Update eip-Blake2b.md
MadeofTin May 13, 2019
46babcb
Rename eip-Blake2b.md to eip-2024.md
MadeofTin May 13, 2019
c260a55
Update eip-2024.md
MadeofTin May 13, 2019
f592757
Update eip-2024.md
MadeofTin May 14, 2019
ebe1d11
Update eip-2024.md
MadeofTin May 14, 2019
719318b
Update eip-2024.md
MadeofTin May 14, 2019
072efb9
Update eip-2024.md
MadeofTin May 14, 2019
e403a10
Update eip-2024.md
MadeofTin May 14, 2019
e774c44
Update and rename eip-2024.md to eip-131.md
MadeofTin May 14, 2019
b4fcd68
Update eip-131.md
MadeofTin May 14, 2019
3671f14
Merge pull request #1 from tjade273/master
MadeofTin May 14, 2019
5e745da
Updated Formatting to current standards
MadeofTin May 14, 2019
9258414
Delete eip-131.md
MadeofTin May 14, 2019
8613c50
Rename eip-9.md to eip-131.md
MadeofTin May 14, 2019
ceaa653
Update eip-131.md
MadeofTin May 14, 2019
5fa430f
Update eip-131.md
MadeofTin May 14, 2019
e79b430
Update eip-131.md
MadeofTin May 14, 2019
285c6f7
Added a Gitter room in the "discussions to" field
MadeofTin May 14, 2019
53dfa16
EIP-2015: Wallet Update Chain Method (#2015)
pedrouid May 14, 2019
90d9ce6
Automatically merged updates to draft EIP(s) 1679 (#2034)
expede May 16, 2019
9ac83ee
Update eip-131.md
MadeofTin May 16, 2019
9d73b0b
updated backwards compatibility
MadeofTin May 16, 2019
9f5008e
Added References and carterpy as an Author
MadeofTin May 16, 2019
0ec6181
Automatically merged updates to draft EIP(s) 663 (#2038)
axic May 17, 2019
b55bd38
Automatically merged updates to draft EIP(s) 1679 (#2043)
AFDudley May 17, 2019
a1ff047
Automatically merged updates to draft EIP(s) 615 (#2044)
expede May 17, 2019
495062d
Added to EIP-1679 for Istanbul
MadeofTin May 17, 2019
9ed4e96
Calldata gas cost reduction (#2028)
bbrandtom May 18, 2019
5e6d488
Automatically merged updates to draft EIP(s) 1155 (#2049)
AC0DEM0NK3Y May 18, 2019
433a6ce
EIP-1965 Method to check if a chainID is valid at a specific block Nu…
wighawag May 19, 2019
af982f1
Run spelling checks on CI (#2040)
axic May 19, 2019
0fb666b
Automatically merged updates to draft EIP(s) 1679, 1965 (#2047)
wighawag May 19, 2019
b1dd057
Automatically merged updates to draft EIP(s) 1679 (#1990)
wighawag May 19, 2019
6f35f9f
Add special requirement for mentioning EVM instructions
axic Mar 8, 2019
c2eca1e
EIP-1710: URL Format for Web3 Browsers (#1710)
May 19, 2019
27b24eb
EIP 1523: Standard for storing insurance policies as extension of ERC…
christoph2806 May 20, 2019
6894462
Automatically merged updates to draft EIP(s) 2028 (#2052)
axic May 20, 2019
fe44e99
EC arithmetics and pairings with runtime definitions (#1962)
shamatar May 20, 2019
9531351
Automatically merged updates to draft EIP(s) 663 (#2056)
axic May 21, 2019
6366821
Mention that the header is also called "front matter" in EIP1 (#2037)
axic May 21, 2019
2015ea3
Add EIP-1474 as a requirement to RPC ERCs
axic May 21, 2019
d428749
Added additional references
MadeofTin May 21, 2019
7c10d58
Fix Wrong Input Length - ERC165 Example (#1640)
May 22, 2019
36d2992
Automatically merged updates to draft EIP(s) 1155 (#2063)
AC0DEM0NK3Y May 22, 2019
0755e0c
Automatically merged updates to draft EIP(s) 1155 (#2064)
AC0DEM0NK3Y May 23, 2019
f417718
State Rent change H placeholder EIP - fixed rent prepayment for all a…
AlexeyAkhunov May 23, 2019
d6dfa55
Fix author fields (#2065)
axic May 23, 2019
ae59591
Sane limits for certain EVM parameters (#1985)
axic May 23, 2019
f993edd
Reduced gas cost for static calls made to precompiles (#2046)
axic May 23, 2019
d2aa4ae
Add draft for ESO (extended state oracle) (#2014)
axic May 23, 2019
5996a13
Update eip-181.md
Arachnid May 23, 2019
4fe5a9a
Update eip-162.md
Arachnid May 23, 2019
ea827e8
State Rent Change A EIP placeholder - State counters contract (#2029)
AlexeyAkhunov May 23, 2019
656aeda
New Opcode to check if a chainID is part of the history of chainIDs (…
wighawag May 23, 2019
cef55f5
Automatically merged updates to draft EIP(s) 1679 (#2055)
wighawag May 23, 2019
d7db470
Copyright 107 (#2068)
wighawag May 23, 2019
ae038c8
Update eip-1679.md
MadeofTin May 24, 2019
dbf67d4
Automatically merged updates to draft EIP(s) 1155 (#2074)
AC0DEM0NK3Y May 24, 2019
e8098d2
State Rent change C draft EIP - Net contract storage size accounting …
AlexeyAkhunov May 24, 2019
fdf8508
State Rent change B placeholder EIP - net transaction counter (#2031)
AlexeyAkhunov May 24, 2019
1f7987f
Stateless Clients: Repricing SLOAD and SSTORE to pay for block proofs…
AlexeyAkhunov May 24, 2019
8b8d2ea
Automatically merged updates to draft EIP(s) 1679 (#2036)
AlexeyAkhunov May 24, 2019
e2f9ace
Automatically merged updates to draft EIP(s) 1930 (#2076)
wighawag May 24, 2019
734934e
Automatically merged updates to draft EIP(s) 1679 (#2042)
axic May 24, 2019
fc56b06
updated authors formating
MadeofTin May 24, 2019
3f181cb
Updated Formating
MadeofTin May 24, 2019
a573835
Automatically merged updates to draft EIP(s) 1418 (#2078)
fulldecent May 24, 2019
9af2a9b
Automatically merged updates to draft EIP(s) 1108 (#2067)
Shadowfiend May 24, 2019
4b676ff
Automatically merged updates to draft EIP(s) 1155 (#2083)
AC0DEM0NK3Y May 25, 2019
9fa08d1
Automatically merged updates to draft EIP(s) 1155 (#2084)
AC0DEM0NK3Y May 25, 2019
69217d8
Automatically merged updates to draft EIP(s) 1155 (#2085)
AC0DEM0NK3Y May 25, 2019
ae0c0d8
Automatically merged updates to draft EIP(s) 1930 (#2086)
wighawag May 25, 2019
9b1c22d
Automatically merged updates to draft EIP(s) 778 (#2087)
fjl May 27, 2019
638b740
Automatically merged updates to draft EIP(s) 1155 (#2088)
AC0DEM0NK3Y May 27, 2019
32b82ef
Automatically merged updates to draft EIP(s) 1155 (#2089)
AC0DEM0NK3Y May 28, 2019
622136a
Last call for ERC-1155 (#2091)
coinfork May 30, 2019
96e8093
add EIP for particle gas costs (#2045)
cdetrio May 30, 2019
186c1db
Clarified Specification
MadeofTin May 31, 2019
9084f86
Spelling
MadeofTin May 31, 2019
5b3345b
Removed metropolis block number from params
MadeofTin May 31, 2019
550fb10
Automatically merged updates to draft EIP(s) 1803 (#2093)
axic Jun 2, 2019
5b60eb6
Automatically merged updates to draft EIP(s) 1803, 663 (#2094)
axic Jun 2, 2019
36f02df
Automatically merged updates to draft EIP(s) 1193 (#2092)
nivida Jun 3, 2019
f1df387
Automatically merged updates to draft EIP(s) 1155 (#2096)
AC0DEM0NK3Y Jun 4, 2019
5a0665c
Automatically merged updates to draft EIP(s) 778 (#2097)
fjl Jun 4, 2019
9a35c0a
Automatically merged updates to draft EIP(s) 1155 (#2101)
AC0DEM0NK3Y Jun 5, 2019
e3c2db1
Automatically merged updates to draft EIP(s) 1261 (#2102)
bitcoinbrisbane Jun 6, 2019
95dfa34
fix typo: "as follows" (#2099)
PeterTheOne Jun 6, 2019
296ba62
EIP-2003 - EVMC modules for implementations of precompiled contracts …
chfast Jun 6, 2019
7b6925e
Automatically merged updates to draft EIP(s) 1261 (#2107)
bitcoinbrisbane Jun 7, 2019
193fdeb
Automatically merged updates to draft EIP(s) 1155 (#2108)
AC0DEM0NK3Y Jun 7, 2019
914c3ba
Automatically merged updates to draft EIP(s) 1155 (#2109)
AC0DEM0NK3Y Jun 7, 2019
4694622
Automatically merged updates to draft EIP(s) 1155 (#2110)
AC0DEM0NK3Y Jun 7, 2019
c873524
Automatically merged updates to draft EIP(s) 2003 (#2112)
chfast Jun 10, 2019
083129d
Automatically merged updates to draft EIP(s) 1155 (#2113)
AC0DEM0NK3Y Jun 12, 2019
9457546
Merge pull request #2058 from axic/rpc-updates
gcolvin Jun 12, 2019
63a04a1
Merge pull request #1968 from axic/eip1-opcodes
gcolvin Jun 12, 2019
4f239f0
Merge pull request #1983 from axic/readme-canonical
gcolvin Jun 12, 2019
d95612c
Automatically merged updates to draft EIP(s) 1155 (#2114)
coinfork Jun 12, 2019
db441bb
Automatically merged updates to draft EIP(s) 1155 (#2116)
AC0DEM0NK3Y Jun 13, 2019
9691bd6
Automatically merged updates to draft EIP(s) 1155 (#2117)
coinfork Jun 13, 2019
4ea97fa
Automatically merged updates to draft EIP(s) 1155 (#2118)
coinfork Jun 13, 2019
39d47ef
Automatically merged updates to draft EIP(s) 1155 (#2120)
AC0DEM0NK3Y Jun 14, 2019
89a8794
Brought issue #152 into the repo as a draft EIP.
mhluongo Jun 16, 2019
843d377
Make the draft EIP consistent with the template
mhluongo Jun 16, 2019
3bcce1d
Break backwards compatibility into its own section
mhluongo Jun 16, 2019
c3f4c68
Added notes about the in-progress implementation
mhluongo Jun 16, 2019
92916e1
Specify EIP-2046 as a requirement
mhluongo Jun 16, 2019
764ff73
Don't use ABI encoding for precompile
mhluongo Jun 20, 2019
15c3352
Add @pdyraga to the EIP authors.
mhluongo Jun 20, 2019
552e602
Remove less relevant EIP rationale
mhluongo Jun 20, 2019
5a29338
Use 0x09 as the precompile address
mhluongo Jun 20, 2019
5d203c4
Choosing an EIP number
mhluongo Jun 21, 2019
ad01be2
Merge branch 'Blake2b' into blake2b-f-precompile
MadeofTin Jun 24, 2019
02568c4
Merge branch 'Blake2b' of https://github.com/madeoftin/EIPs into Blake2b
MadeofTin Jun 24, 2019
487aea3
Added References
MadeofTin Jun 24, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions EIPS/eip-131.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
---
eip: 131
title: Add precompiled BLAKE2b contract
author: Tjaden Hess (@tjade273), Jay Graber, (@carterpy), James Hancock (@madeoftin)
axic marked this conversation as resolved.
Show resolved Hide resolved
discussions-to: https://ethereum-magicians.org/t/blake2b-f-precompile/3157
status: Draft
type: Standards Track
category: Core
created: 2016-06-30
---

## Simple Summary
<!--"If you can't explain it simply, you don't understand it well enough." Provide a simplified and layman-accessible explanation of the EIP.-->
Special Projects wishes greater Ethereum interopability with Zcash, IPFS, and Handshake. Coincidentally, all of these projects use the Blake2 hash function. So, this is a request to add the Blake2b F precompile 11 to the Istanbul hardfork. The first special project here will probably be creating a wrapped ZEC (WZEC) within Ethereum as well as wrapped Ether within Zcash. After that, some yet-to-be-determined bridge architecture will allow Ethereum to benefit from Zcash’s shielded transactions.
Copy link
Member

Choose a reason for hiding this comment

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

I am not fully sure this summary reflects this EIP. This EIP will not cause ZEC to be implemented. This block seems to be make more sense as part of the "Motivation" section.


## Abstract

This EIP introduces a new precompiled contract which implements the BLAKE2b cryptographic hashing algorithm.

## Motivation

BLAKE2b is a useful addition to Ethereum's cryptographic primitives. BLAKE2b is faster and more efficient than the SHA hash functions, making it a good complement or alternative to SHA-3. The BLAKE2b algorithm is highly optimized for 64-bit CPUs, and is faster than MD5 on modern processors. Its inclusion will also improve interoperability between the Zcash blockchain and the EVM, and assist in future integration with IPFS, as they are working on switching their default hash function to BLAKE2b.

One BLAKE2 digest in Solidity, (see https://github.com/tjade273/eth-blake2/blob/optimise_everything/contracts/blake2.sol) currently requires `~480,000 + ~90*INSIZE` gas, and a single verification of an [Equihash](https://www.cryptolux.org/images/b/b9/Equihash.pdf) PoW verification requires 2<sup>5</sup> to 2<sup>7</sup> iterations of the hash function, making use cases such as verification of Zcash block headers prohibitively expensive. However, an efficient implementation of BLAKE2b could allow verification of the Equihash PoW used in Zcash, making a BTC Relay - style SPV client possible on Ethereum.
Copy link
Member

Choose a reason for hiding this comment

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

So what is currently required for Equihash verification? 480000 + 90 * (2**7 * 128) which is ~2M gas?

Copy link

@prestwich prestwich May 24, 2019

Choose a reason for hiding this comment

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

I believe you're misreading. The verification cost for Equihash is 2**k invocations of the hash function (and 2**k XORs), which would make the gas requirement greater than 480,000 * 2 ** k

Copy link
Member

Choose a reason for hiding this comment

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

I'm not sure why are you writing 2**7. The 128 looks much less scary.

Choose a reason for hiding this comment

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

k is a parameter, so we write 2**k. Zcash uses Equihash with k = 9

Copy link
Member

Choose a reason for hiding this comment

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

You really starts annoying me. If ZCash uses k = 9 WHY have you written its from 5 to 7?

Copy link
Member

Choose a reason for hiding this comment

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

Instead of shifts your linked blake2 implementation uses exponentiation which is (extremely) expensive.

Copy link

@PlainsWraith PlainsWraith Jun 17, 2019

Choose a reason for hiding this comment

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

You're talking about Zac Williams .huff implementation here mentioned by @cdetrio here. Can we say Zac's code is the best smart contract implementation with the current EVM we're going to see and use that for @cdetrio's benchmark? Zac got it to 6,821,545 gas with pre-Istanbul EVM.
In Eth-wizards Zac suggested an equihash could get as low as 70k gas with an engine like @chfast's evmone. If James/Matt are saying they can provide a precompile that matches or beats Zac's estimate, that's what we want to see, right?

Copy link
Member

@cdetrio cdetrio Jun 17, 2019

Choose a reason for hiding this comment

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

I want to see James and Matt do an implementation of go-ethereum with the precompile in it and a .sol contract that uses that precompile to show the delta but like, the same way I want a new season of Rick and Morty.

I don't think its an unreasonable ask. This was done for the ECMUL/ECPAIRING precompiles before Byzantium (including an example solidity contract that used the ECPAIRING precompile to verify a snark proof that came from a zcash tx).

Can we say Zac's code is the best smart contract implementation with the current EVM we're going to see and use that for @cdetrio's benchmark? Zac got it to 6,821,545 gas with pre-Istanbul EVM.

Yes, Zac said there probably isn't much room left for optimizing the huff implementation (I believe him). What isn't fully clear (to me) is whether the 6.8 million gas number is sufficient to verify a zcash block. And if it is, why is 245 million cited above instead. What's annoying is to see people going around in circles here and on ACD calls with napkin math. Would be good if some champion could just write the solidity code to verify a zcash block or whatever the usecase for the precompile is (again, like was done for the snark precompiles).

Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think its an unreasonable ask.

We're working on it- our team has focused on the F precompile first considering where that discussion went. I'll have an EIP PR for F out today where we link to our initial implementation, then we'll circle back here

Copy link
Contributor

Choose a reason for hiding this comment

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

Would be good if some champion could just write the solidity code to verify a zcash block or whatever the usecase for the precompile is (again, like was done for the snark precompiles).

Agreed, there will be benchmarks- first take will be for gas estimation of F, then another for blake2b. Full Zcash header verification is a stretch though we'll see what we can do.


Adding a precompile for the BLAKE2b hashing function will make the operation significantly faster and cheaper, improving usability.

## Parameters

* `METROPOLIS_FORK_BLKNUM`: TBD
* `GBLAKEBASE`: 30
* `GBLAKEWORD`: 6

## Specification

Adds a precompiled contract for the blake2b hash function.

Address of `0x9`

Function accepts a variable length input interpreted as:

[OUTSIZE, D_1, D_2, ..., D_INSIZE]

where `INSIZE` is the length in bytes of the input. Throws if `OUTSIZE` is greater than 64. Returns the `OUTSIZE`-byte BLAKE2b digest, as defined in [RFC 7693](https://tools.ietf.org/html/rfc7693).
Copy link
Member

Choose a reason for hiding this comment

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

I had a comment for this in the previous PR: #131

However my general comment is that this section is ambiguous.

Is that array a byte array? Is OUTSIZE a single byte (uint8)? Does that mean INSIZE is the length of input and the first byte of the input is considered as OUTSIZE while the rest is the actual input to hash?

Copy link
Member

@axic axic May 24, 2019

Choose a reason for hiding this comment

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

Can you just clarify this as:

Function accepts a variable length input interpreted as an array of bytes:

[OUTSIZE, D1, D2, ..., DINSIZE]

where INSIZE is the length in bytes of the input. Throws if the value of OUTSIZE is greater than 64.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This also is correct.


### Gas Costs

Gas costs would be equal to `GBLAKEBASE + GBLAKEWORD * floor(INSIZE / 32)`
Copy link
Member

Choose a reason for hiding this comment

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

If INSIZE includes the configuration parameter of output hash size (OUTSIZE) shouldn't this calculation be Gblakebase + Gblakeword + floor((INSIZE - 1) / 32)?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, this correct.

Copy link
Member

Choose a reason for hiding this comment

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

Should gas depend on the value of OUTSIZE?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

We are digging further into this, and we are not sure yet. We found a golang library for blake2b and are going to do some benchmarking on it. I'll update the specification to say TBD based on benchmarking. https://github.com/golang/crypto/tree/master/blake2b


## Rationale

The most frequent concern with EIPs of this type is that the addition of specific functions at the protocol level is a deviation from Ethereum's "featureless" design. It is true that a more elegant solution to the issue is to simply improve the scalability characteristics of the network so as to make calculating functions requiring millions of gas practical for everyday use. In the meantime, however, I believe that certain operations are worth subsidizing via precompiled contracts. There is significant precedent for this change, most notably the inclusion of the SHA256 precompiled contract, which is included largely to allow inter-operation with the Bitcoin blockchain.

Additionally, BLAKE2b is an excellent candidate for precompilation because of the extremely asymmetric efficiency which it exhibits. BLAKE2b is heavily optimized for modern 64-bit CPUs, specifically utilizing 24 and 63-bit rotations to allow parallelism through SIMD instructions and is little-endian. These characteristics provide exceptional speed on native CPUs: 3.08 cycles per byte, or 1 gibibyte per second on an Intel i5.

In contrast, the big-endian 32 byte semantics of the EVM are not conducive to efficient implementation of BLAKE2, and thus the gas cost associated with computing the hash on the EVM is disproportionate to the true cost of computing the function natively.

Note that the function can produce a variable-length digest, up to 64 bytes, which is a feature currently missing from the hash functions included in the EVM.

## Backwards Compatibility

There is very little risk of breaking backwards compatibility with this EIP, the sole issue being if someone were to build a contract relying on the address at `0x9` being empty. The likelihood of this is low, and should specific instances arise, the address could be chosen to be any arbitrary value, with negligible risk of collision.

## Test Cases


## Implementation

The Go implementation is available from [golang.org](https://golang.org/x/crypto/blake2b) as well as [on github](https://github.com/dchest/blake2b).

Other languages:
[Javascript implementation](https://github.com/dcposch/blakejs)
[Java implementation](https://github.com/alphazero/Blake2b)
[Python implementatoin](https://github.com/buggywhip/blake2_py)

## References

* [Gitter Channel](https://gitter.im/EIPshepherding/eip-131)
* [Original Issue](https://github.com/ethereum/EIPs/issues/152)


## Copyright
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).
2 changes: 2 additions & 0 deletions EIPS/eip-1679.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ This meta-EIP specifies the changes included in the Ethereum hardfork named Ista

### Proposed EIPs

- [EIP-131] : Add Precompiled BLAKE2b Contract
axic marked this conversation as resolved.
Show resolved Hide resolved
- [EIP-1057](https://eips.ethereum.org/EIPS/eip-1057): ProgPoW, a Programmatic
Proof-of-Work
- There is a
Expand All @@ -45,6 +46,7 @@ This meta-EIP specifies the changes included in the Ethereum hardfork named Ista
- [EIP-1829](https://eips.ethereum.org/EIPS/eip-1829): Precompile for Elliptic Curve Linear Combinations
- [EIP-1884](https://eips.ethereum.org/EIPS/eip-1884): Repricing for trie-size-dependent opcodes


axic marked this conversation as resolved.
Show resolved Hide resolved
## Timeline

* 2019-05-17 (Fri) hard deadline to accept proposals for "Istanbul"
Expand Down