cui
88922d2bf5
crypto/bn256: refactor to use bitutil.TestBytes ( #32435 )
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
2025-08-15 15:12:22 +08:00
cui
e798e26c69
crypto/secp256k1: use ReadBits from common/math ( #32430 )
2025-08-14 14:32:45 +02:00
cui
dfde155541
crypto/kzg4844: use reflect.TypeFor ( #32319 )
2025-08-07 14:22:11 +02:00
Felix Lange
b3131f00a3
core/vm: implement EIP-7951 - precompile for secp256r1 ( #31991 )
...
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
https://github.com/ethereum/EIPs/pull/9833
Based on #27540 , #30043
---------
Co-authored-by: Ulaş Erdoğan <uerdogan2001@hotmail.com>
2025-07-07 20:59:45 +02:00
Antonio Sanso
f26b5653e8
crypto/bn256: add documentation on subgroup checks for G2 ( #32066 )
...
This PR improves the IsOnCurve methods for BN254 G2 points by:
* Clarifying its behavior the docstring, making it explicit that it
verifies both the point being on the curve and in the correct subgroup.
* Adding an in-line comment explaining the subgroup membership check
(c.Mul(Order)).
* Minor wording adjustments for readability and consistency.
2025-06-20 13:18:20 +02:00
Marius van der Wijden
6723388b01
crypto/bn256/gnark: align marshaling behavior ( #32065 )
...
Aligns the marshaling behavior of gnark to google and cloudflare
Co-authored-by: kevaundray <kevtheappdev@gmail.com>
2025-06-20 12:47:48 +02:00
Stephen Buttolph
0ce13346ce
crypto/bn256/cloudflare: pull in upstream fix for R27 and R29 usage ( #32057 )
...
/ Linux Build (arm) (push) Waiting to run
/ Linux Build (push) Waiting to run
/ Docker Image (push) Waiting to run
Pulls in https://github.com/cloudflare/bn256/pull/48 to remove usage of
R27 and R29 [which are reserved](https://go.dev/doc/asm#arm64 ).
2025-06-18 14:17:30 +02:00
nthumann
cc1293b8f1
all: reuse the global hash buffer ( #31839 )
...
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Docker Image (push) Waiting to run
As https://github.com/ethereum/go-ethereum/pull/31769 defined a global
hash pool, so we can reuse it, and also remove the unnecessary
KeccakState buffering
---------
Co-authored-by: Gary Rong <garyrong0905@gmail.com>
2025-06-18 15:29:14 +08:00
Marius van der Wijden
6bba9d42a5
tests/fuzzers: added bn marshaling fuzzers ( #32053 )
...
Adds marshaling fuzzing for G1 and G2 to oss-fuzz.
Also aligns the behavior of the google library to that of gnark and
cloudflare, which only ever read the first 64 / 128 bytes of the input,
regardless of how long the input is
2025-06-17 23:02:36 +02:00
kevaundray
190b236966
crypto/bn256: fix gnark deserialisation ( #32055 )
...
fixes the gnark deserialisation
---------
Co-authored-by: Felix Lange <fjl@twurst.com>
2025-06-17 21:58:31 +02:00
Felix Lange
65d77c5129
Revert "crypto/bn256: default to gnark ( #32024 )"
...
/ Linux Build (arm) (push) Waiting to run
/ Linux Build (push) Waiting to run
/ Docker Image (push) Waiting to run
This reverts commit e0cf89ecfa .
2025-06-17 00:42:07 +02:00
kevaundray
e0cf89ecfa
crypto/bn256: default to gnark ( #32024 )
2025-06-16 13:10:14 +02:00
Marius van der Wijden
5605f9d7ad
crypto/kzg4844: remove kzg initialization ( #32017 )
...
This fixes a regression in the state tests where we always initialized
the KZG library. This was added to test some stuff in #31791
2025-06-12 17:53:16 +08:00
Marius van der Wijden
c7e6c08e54
eth/catalyst: implement getBlobsV2 ( #31791 )
...
Implements `engine_getBlobsV2` which is needed for PeerDAS.
---------
Co-authored-by: Felix Lange <fjl@twurst.com>
2025-06-09 11:34:24 +02:00
Ömer Faruk Irmak
d675721276
crypto/kzg4844: avoid copying blobs for marshaling ( #31911 )
...
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Docker Image (push) Waiting to run
LLVM is not able to handle large arrays on stack
2025-06-04 20:52:27 +02:00
Ömer Faruk Irmak
a53fdf1fe6
crypto: use pure Go signature implementation in tinygo ( #31878 )
...
tinygo is having problems compiling the C implementation
2025-05-23 11:14:40 +02:00
wellna
2cd5f22037
crypto/kzg4844: use package github.com/crate-crypto/go-eth-kzg ( #31806 )
...
I saw in https://github.com/ethereum/go-ethereum/pull/31378 introduced
github.com/crate-crypto/go-eth-kzg to calculate the kzg hash, and
github.com/crate-crypto/go-kzg-4844 was only used in the test files, so
propose to drop it with go-eth-kzg instead
2025-05-13 14:11:27 +02:00
Marius van der Wijden
0eb2eeea90
all: create global hasher pool ( #31769 )
...
This PR creates a global hasher pool that can be used by all packages.
It also removes a bunch of the package local pools.
It also updates a few locations to use available hashers or the global
hashing pool to reduce allocations all over the codebase.
This change should reduce global allocation count by ~1%
---------
Co-authored-by: Gary Rong <garyrong0905@gmail.com>
2025-05-09 13:52:40 +08:00
Marius van der Wijden
947fd3a834
crypto/kzg4844: add ComputeCells functionality ( #31378 )
...
For PeerDAS, we need to compute cell proofs. Both ckzg and gokzg support
computing these cell proofs.
This PR does the following:
- Update the go-kzg library from "github.com/crate-crypto/go-kzg-4844"
to "github.com/crate-crypto/go-eth-kzg" which will be the new upstream
for go-kzg moving forward
- Update ckzg from v1.0.0 to v2.0.1 and switch to /v2
- Updates the trusted setup to contain the g1 points both in lagrange
and monomial form
- Expose `ComputeCells` to compute the cell proofs
2025-04-29 14:42:17 +02:00
Marius van der Wijden
5606cbc710
crypto/secp256k1: update libsecp256k1 ( #31242 )
...
Updates the libsecp256k1 dependency to commit:
c0d9480fbbf8eccbd4be23ed27f6f2af6f3b211e
PR:
```
BenchmarkSign-24 57756 21214 ns/op 164 B/op 3 allocs/op
BenchmarkRecover-24 37156 33044 ns/op 80 B/op 1 allocs/op
BenchmarkEcrecoverSignature-24 36889 32935 ns/op 80 B/op 1 allocs/op
BenchmarkVerifySignature-24 41163 29207 ns/op 0 B/op 0 allocs/op
BenchmarkDecompressPubkey-24 318624 4062 ns/op 304 B/op 6 allocs/op
```
Master:
```
BenchmarkSign-24 34509 35330 ns/op 164 B/op 3 allocs/op
BenchmarkRecover-24 25418 47725 ns/op 80 B/op 1 allocs/op
BenchmarkEcrecoverSignature-24 25735 47591 ns/op 80 B/op 1 allocs/op
BenchmarkVerifySignature-24 29108 41097 ns/op 0 B/op 0 allocs/op
BenchmarkDecompressPubkey-24 294747 4143 ns/op 304 B/op 6 allocs/op
```
Performance seems to be improved significantly:
```
Sign-24 34.86µ ± 3% 21.66µ ± 2% -37.86% (p=0.000 n=10)
Recover-24 46.14µ ± 3% 33.24µ ± 2% -27.95% (p=0.000 n=10)
```
2025-03-12 12:21:50 +01:00
Marius van der Wijden
fbe0005070
crypto: add comment to FromECDSAPub ( #31241 )
...
closes https://github.com/ethereum/go-ethereum/issues/26240
2025-02-24 12:23:25 +01:00
levisyin
d103f179b9
build: replace tenv linter with usetesting ( #31172 )
2025-02-21 13:36:18 +01:00
Ryan Tinianov
9b9e7ccacf
all: add build tags for wasip1 ( #31090 )
2025-01-30 16:58:53 +01:00
Felix Lange
fa9a2ff868
crypto: add IsOnCurve check ( #31100 )
2025-01-30 14:10:36 +01:00
georgehao
1843f27766
all: fix some typos in comments and names ( #31023 )
2025-01-14 14:16:15 +01:00
gitglorythegreat
0feb999d3f
crypto/bn256: fix MulScalar ( #30974 )
...
The `a` parameter should be used in the `MulScalar` function. The
upstream cloudflare and google repos have already merged fixes.
Reference:
*
8d7daa0c54
* https://github.com/cloudflare/bn256/pull/33
2025-01-02 14:04:06 +01:00
kevaundray
74461aecf6
crypto, tests/fuzzers: add gnark bn254 precompile methods for fuzzing ( #30585 )
...
Makes the gnark precompile methods more amenable to fuzzing
2024-10-23 08:11:25 +02:00
Alex Gartner
30ce17386b
crypto: use decred secp256k1 directly ( #30595 )
...
Use `github.com/decred/dcrd/dcrec/secp256k1/v4` directly rather than
`github.com/btcsuite/btcd/btcec/v2` which is just a wrapper around the
underlying decred library. Inspired by
https://github.com/cosmos/cosmos-sdk/pull/15018
`github.com/btcsuite/btcd/btcec/v2` has a very annoying breaking change
when upgrading from `v2.3.3` to `v2.3.4`. The easiest way to workaround
this is to just remove the wrapper.
Would be very nice if you could backport this to the release branches.
References:
- https://github.com/btcsuite/btcd/issues/2221
- https://github.com/cometbft/cometbft/pull/4294
- https://github.com/cometbft/cometbft/pull/3728
- https://github.com/zeta-chain/node/pull/2934
2024-10-15 11:49:08 +03:00
Alexander Mint
df3f0a81a7
go.mod: upgrade to btcsuite/btcd/btcec v2.3.4 ( #30181 )
2024-07-18 12:38:42 +02:00
zhiqiangxu
c4b4d05e69
crypto: remove hardcoded value for secp256k1.N ( #30126 )
2024-07-09 13:19:25 +02:00
SuiYuan
2262bf3415
crypto/secp256k1: change receiver variable name to lowercase ( #29889 )
2024-05-30 16:24:16 +02:00
persmor
0a51028819
all: fix various typos ( #29542 )
...
* core/rawdb: fix typos
* accounts/abi: fix typos
* metrics: fix typo
* beacon: fix typo
* crypto: fix typo
* rpc: fix typo
* rpc: fix typo
2024-04-16 15:44:00 +03:00
Marius van der Wijden
f437307877
core/vm: update gascosts for BLS12-381 + use gnark instead of kilic ( #29441 )
...
This PR updates the bls contracts from our internal implementation which is an unmaintained fork of the kilic library to the gnark-crypto library that is actively maintained by consensys.
It also updates the gas-costs according to the EIP
2024-04-16 10:53:43 +02:00
Abirdcfly
b179b7b8e7
all: remove duplicate word in comments ( #29531 )
...
This change removes some duplicate words in in comments
2024-04-15 08:34:31 +02:00
guangwu
8bd0334168
crypto/signify: close tmp key file in test ( #29444 )
2024-04-04 12:20:54 +02:00
Aaron Chen
723b1e36ad
all: fix mismatched names in comments ( #29348 )
...
* all: fix mismatched names in comments
* metrics: fix mismatched name in UpdateIfGt
2024-03-26 21:01:28 +01:00
George Ma
38eb8b3e20
all: fix docstrings ( #29311 )
2024-03-22 20:29:12 +08:00
Martin HS
14eb8967be
all: use min/max/clear from go1.21 ( #29307 )
2024-03-21 13:50:13 +01:00
Martin HS
ab49f228ad
all: update to go version 1.22.1 ( #28946 )
...
Since Go 1.22 has deprecated certain elliptic curve operations, this PR removes
references to the affected functions and replaces them with a custom implementation
in package crypto. This causes backwards-incompatible changes in some places.
---------
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
Co-authored-by: Felix Lange <fjl@twurst.com>
2024-03-18 17:36:50 +01:00
Martin HS
d5bacfa4de
crypto/kz4844: pass blobs by ref ( #29050 )
...
This change makes use of the following underlying changes to the kzg-libraries in order to avoid passing large things on the stack:
- c-kzg: https://github.com/ethereum/c-kzg-4844/pull/393 and
- go-kzg: https://github.com/crate-crypto/go-kzg-4844/pull/63
2024-03-13 07:51:46 +01:00
San Ye
4e1116f9c5
crypto/bn256/cloudflare: fix noescape-directive ( #29222 )
2024-03-12 09:49:53 +01:00
hyhnet
cd490608e3
all: fix typos in comments ( #29186 )
2024-03-07 22:56:19 +01:00
Sina Mahmoodi
ac5aa672d3
internal/ethapi: add support for blobs in eth_fillTransaction ( #28839 )
...
This change adds support for blob-transaction in certain API-endpoints, e.g. eth_fillTransaction. A follow-up PR will add support for signing such transactions.
2024-02-08 19:53:32 +01:00
zoereco
2ab365f6d8
all: fix docstring names ( #28923 )
...
* fix wrong comment
* reviewers input
* Update log/handler_glog.go
---------
Co-authored-by: Martin HS <martin@swende.se>
2024-02-07 21:10:49 +01:00
Dimitris Apostolou
8fd43c8013
all: fix typos in comments ( #28881 )
2024-02-05 22:16:32 +01:00
Felix Lange
0e93da3197
crypto/kzg4844: add helpers for versioned blob hashes ( #28827 )
...
The code to compute a versioned hash was duplicated a couple times, and also had a small
issue: if we ever change params.BlobTxHashVersion, it will most likely also cause changes
to the actual hash computation. So it's a bit useless to have this constant in params.
2024-01-19 11:41:17 +01:00
Guillaume Ballet
34dcd74935
crypto/secp256k1: fix 32-bit tests when CGO_ENABLED=0 ( #28602 )
2023-11-28 19:16:50 +01:00
kevaundray
a6a0ae45b6
crypto/kzg4844: use the new trusted setup file and format ( #28383 )
...
Changes the trusted_setup to the one created during the kzg-ceremony. The trusted setup file can be found in the consensus specs: https://github.com/ethereum/consensus-specs/blob/dev/presets/mainnet/trusted_setups/trusted_setup_4096.json
---------
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
2023-10-22 16:05:04 +02:00
Marius van der Wijden
cd29535672
crypto/blake2b: put architecture-dependent features behind build-tag ( #28381 )
...
This change to fixes a compilation-flaw on master, by putting architecture-specific functions behind corresponding build tags.
2023-10-19 14:04:26 +02:00
Marius van der Wijden
d10a2f6ab7
tests/fuzzers: update fuzzers to be based on go-native fuzzing ( #28352 )
...
This change modifies the fuzzers to use the native golang fuzzing framework instead of go-fuzz
2023-10-18 15:01:16 +02:00