552 Commits

Author SHA1 Message Date
web3-developer
060c759b01
Use vendor RocksDb dll on Windows. (#2341)
* Bump rocksdb version and update Makefile.

* Update readme.
2024-06-13 10:10:53 +08:00
Jacek Sieka
54f793f946
Apply some basic rocksdb options (#2339)
These options, inspired by Nethermind and general internet wisdom, bring
the database size down to 2/3 without affecting throughput. In theory,
they should also bring down memory usage and/or make more efficient use
of whatever memory is already assigned to rocksdb but this needs
verification in a longer test at synced-mainnet sizes.

In the meantime, they make testing easier by removing some noise that
the profiler says are bad, such as excessive SkipList access (countered
by bloom filters).
2024-06-12 14:52:27 +02:00
Jacek Sieka
eb041abba7
avoid unnecessary memory allocations and lookups (#2334)
* use `withValue` instead of `hasKey` + `[]`
* avoid `@` et al
* parse database data inside `onData` instead of making seq then parsing
2024-06-11 11:38:58 +02:00
Jacek Sieka
02c655fe32
use correct nim-eth commit 2024-06-10 10:13:10 +02:00
Jacek Sieka
359f7ada65
eth: avoid sink (#2331)
* eth: avoid sink

* bump

* fix extra transactions

from #2330
2024-06-10 14:16:22 +07:00
Jacek Sieka
0b32078c4b
Consolidate block type for block processing (#2325)
This PR consolidates the split header-body sequences into a single EthBlock
sequence and cleans up the fallout from that which significantly reduces
block processing overhead during import thanks to less garbage collection
and fewer copies of things all around.

Notably, since the number of headers must always match the number of bodies,
we also get rid of a pointless degree of freedom that in the future could
introduce unnecessary bugs.

* only read header and body from era file
* avoid several unnecessary copies along the block processing way
* simplify signatures, cleaning up unused arguemnts and returns
* use `stew/assign2` in a few strategic places where the generated
  nim assignent is slow and add a few `move` to work around poor
  analysis in nim 1.6 (will need to be revisited for 2.0)

```
stats-20240607_2223-a814aa0b.csv vs stats-20240608_0714-21c1d0a9.csv
                       bps_x     bps_y     tps_x        tps_y    bpsd    tpsd    timed
block_number
(498305, 713245]    1,540.52  1,809.73  2,361.58  2775.340189  17.63%  17.63%  -14.92%
(713245, 928185]      730.36    865.26  1,715.90  2028.973852  18.01%  18.01%  -15.21%
(928185, 1143126]     663.03    789.10  2,529.26  3032.490771  19.79%  19.79%  -16.28%
(1143126, 1358066]    393.46    508.05  2,152.50  2777.578119  29.13%  29.13%  -22.50%
(1358066, 1573007]    370.88    440.72  2,351.31  2791.896052  18.81%  18.81%  -15.80%
(1573007, 1787947]    283.65    335.11  2,068.93  2441.373402  17.60%  17.60%  -14.91%
(1787947, 2002888]    287.29    342.11  2,078.39  2474.179448  18.99%  18.99%  -15.91%
(2002888, 2217828]    293.38    343.16  2,208.83   2584.77457  17.16%  17.16%  -14.61%
(2217828, 2432769]    140.09    167.86  1,081.87  1296.336926  18.82%  18.82%  -15.80%

blocks: 1934464, baseline: 3h13m1s, contender: 2h43m47s
bpsd (mean): 19.55%
tpsd (mean): 19.55%
Time (total): -29m13s, -15.14%
```
2024-06-09 16:32:20 +02:00
Jacek Sieka
32c51b14a4
keccak: improve perf a little (#2321)
* avoid `burnMem`
* avoid zeroing buffers
* work around `when nimvm` issue
2024-06-07 16:48:27 +00:00
Jacek Sieka
c5b3081828
eth: bump (#2308)
* eth: bump

Speed up basic operations like hashing and creating RLP:s - up to 25%
improvement in certain block ranges!

```
876729c.csv /data/nimbus_stats/stats-20240605_2204-ed4f6221.csv
stats-20240605_2000-c876729c.csv vs stats-20240605_2204-ed4f6221.csv
                       bps_x   bps_y     tps_x        tps_y    bpsd    tpsd    timed
block_number
(500001, 888889]    1,017.72  996.07  1,784.96  1742.438676  -2.72%  -2.72%    3.31%
(888889, 1277778]     528.00  536.30  2,159.79  2198.781046   1.69%   1.69%   -1.44%
(1277778, 1666667]    324.29  317.78  2,064.48  2008.106377  -2.82%  -2.82%    3.33%
(1666667, 2055556]    253.87  258.74  1,840.94  1872.935273   1.67%   1.67%   -1.39%
(2055556, 2444445]    175.79  178.66  1,340.61  1363.248939   0.93%   0.93%   -0.74%
(2444445, 2833334]    137.27  159.74    958.75  1113.323757  14.24%  14.24%  -10.69%
(2833334, 3222223]    170.48  228.63  1,272.70  1704.047195  34.41%  34.41%  -25.17%
(3222223, 3611112]    127.49  125.48  1,572.39  1548.835791  -1.19%  -1.19%    1.47%
(3611112, 4000001]     37.25   40.42  1,100.65  1184.740493   9.58%   9.58%   -7.04%

blocks: 3501696, baseline: 11h59m40s, contender: 11h21m38s
bpsd (mean): 6.18%
tpsd (mean): 6.18%
Time (sum): -38m1s, -4.26%

bpsd = blocks per sec diff (+), tpsd = txs per sec diff, timed = time to process diff (-)
+ = more is better, - = less is better
```

* ignore gitignore
2024-06-06 23:39:09 +00:00
Jacek Sieka
95a4adc1e8
use statically linked rocksdb on linux/mac, dll on windows (#2291)
The `rocksdb` version shipped with distributions is typically old and
therefore often lacks features we use - it also doesn't match the one
assumed by nim-rocksdb leading to ABI mismatch risks.

Instead of depending on the system rocksdb, we'll now use the rocksdb
version assumed by nim-rocksdb and locked in its vendor folder by always
building it together with nimbus.

This avoids the problem of unknown rocksdb versions at a (small) cost to
build time.

CI caching and full windows support for building from source [remains
TODO](https://github.com/status-im/nim-rocksdb/issues/44).
2024-06-04 18:15:33 +02:00
Jacek Sieka
c339bf4a99
bumps (#2261)
Maintenance bumps for most submodules
2024-05-31 16:27:14 +07:00
Jacek Sieka
919242c98e
results: use canonical import (#2248) 2024-05-30 14:54:03 +02:00
andri lim
74cc3b6127
Implement engine_getClientVersionV1 (#2233)
* Implement engine_getClientVersionV1

* full git revision string

* Limit GitRevisionString to 8 chars

* Fixes

* Debug windows CI

* debug windows ci

* produce git revision using -C

* try not to delete .git folder in windows ci

* Harden GitRevision procuration

* Add double quotes to git -C param

* Escape sourcePath

* Remove double quotes from git -C param
2024-05-29 09:20:50 +02:00
Jacek Sieka
a649e633ae
eth: bump (#2225)
* new rlp code
* binary sparse tries removed
2024-05-26 10:56:17 +02:00
andri lim
9c3dfc93a7
Bump nim-web3 to 46b4b4c8bc42013196a6290ee53029131f97931a (#2224)
* Bump nim-web3 to 46b4b4c8bc42013196a6290ee53029131f97931a

* Fix beacon_lc_bridge and nimbus_verified_proxy
2024-05-26 14:13:59 +07:00
andri lim
e6d5a791f5
Bump nim-stint to 9d2b382c5dc34f0d6bbd93b2a5d65dde85067e0f (#2223) 2024-05-26 10:48:59 +07:00
andri lim
d4866d5003
Bump nim-json-serialization to 4d0b0662ed960ab2c5a1ddbd08f77048bac13ae7 (#2222) 2024-05-26 10:48:45 +07:00
Kim De Mey
72912626a2
Several spec fixes for HistoricalSummaries + add test-vector test (#2217) 2024-05-24 23:15:04 +02:00
Kim De Mey
95089f103a
Bump portal-spec-tests for additional header validation tests (#2208) 2024-05-22 19:23:18 +02:00
web3-developer
047f8ec4b2
Bump portal spec tests and update state validation tests to use state roots in test vectors. (#2193)
* Bump portal spec tests to version a549242

* Update state validation tests to use state roots in portal spec test vectors.
2024-05-17 23:20:57 +08:00
Etan Kissling
c4c37302b1
Introduce wrapper type for EIP-4844 transactions (#2177)
* Introduce wrapper type for EIP-4844 transactions

EIP-4844 blob sidecars are a concept that only exists in the mempool.
After inclusion of a transaction into an execution block, only the
versioned hash within the transaction remains. To improve type safety,
replace the `Transaction.networkPayload` member with a wrapper type
`PooledTransaction` that is used in contexts where blob sidecars exist.

* Bump nimbus-eth2 to 87605d08a7f9cfc3b223bd32143e93a6cdf351ac

* IPv6 'listen-address' in `nimbus_verified_proxy`

* Bump nim-libp2p to 21cbe3a91a70811522554e89e6a791172cebfef2

* Fix beacon_lc_bridge payload conversion and conf.listenAddress type

* Change nimbus_verified_proxy.asExecutionData param to SomeExecutionPayload

* Rerun nph to fix asExecutionData style format

* nimbus_verified_proxy listenAddress

* Use PooledTransaction in nimbus-eth1 tests

---------

Co-authored-by: jangko <jangko128@gmail.com>
2024-05-15 10:07:59 +07:00
Etan Kissling
766823cd49
Bump nim-chronos to 8a306763cec8105fa83574b56734b0f66823f844 (#2183)
Co-authored-by: jangko <jangko128@gmail.com>
2024-05-14 12:58:32 +07:00
jangko
37e7e52944
Bump nim-graphql to 54dcec7f6f01a2f1e0d5115b7352a1e16182a655 2024-05-14 09:23:09 +07:00
jangko
47a86f0df6
Bump nim-web3 to de87f860874be944cdc3dfd08765c687fff736c4 2024-05-13 10:07:48 +07:00
Kim De Mey
3be298f58f
Add tests for beacon block proofs Capella and onwards (#2161) 2024-05-10 22:51:24 +02:00
jangko
d1f21f39c1
Bump nim-kzg4844 to bd372ec8e673c928ed2ad5ca887b696aab58b0b3 2024-05-07 10:28:40 +07:00
Jordan Hrycaj
b9187e0493
Aristo selective read cashing for rocksdb backend (#2145)
* Aristo+Kvt: Better RocksDB profiling

why:
  Providing more detailed information, mainly for `Aristo`

* Aristo: Renamed journal `stats()` to `capacity()`

why:
  `Stats()` was a misnomer

* Aristo: Provide backend read caches for key and vertex IDs

why:
  Dedicated LRU caching for particular types gives a throughput advantage.
  The sizes of the LRU queues used for caching are currently constant
  but might be adjusted at a later time.

* Fix copyright year
2024-04-22 19:02:22 +00:00
Jordan Hrycaj
d6a4205324
Aristo update rocksdb backend drivers (#2135)
* Aristo+RocksDB: Update backend drivers

why:
  RocksDB update allows use some of the newly provided methods which
  were previously implemented by using the very C backend (for the lack
  of NIM methods.)

* Aristo+RocksDB: Simplify drivers wrapper

* Kvt: Update backend drivers and wrappers similar to `Aristo`

* Aristo+Kvm: Use column families for RocksDB

* Aristo+MemoryDB: Code cosmetics

* Aristo: Provide guest column family for export

why:
  So `Kvt` can piggyback on `Aristo` so there avoiding to run a second
  DBMS system in parallel.

* Kvt: Provide import mechanism for RoksDB guest column family

why:
  So `Kvt` can piggyback on `Aristo` so there avoiding to run a second
   DBMS system in parallel.

* CoreDb+Aristo: Run persistent `Kvt` DB piggybacked on `Aristo`

why:
  Avoiding to run two DBMS systems in parallel.

* Fix copyright year

* Ditto
2024-04-16 20:39:11 +00:00
andri lim
e713f3c287
Implement eth_feeHistory (#2130)
* Implement eth_feeHistory

* Fix copyright year
2024-04-16 08:02:42 +07:00
andri lim
b6f8a000b9
Bump nim-web3 to a31bc63448d8259255a00c130af68d6e558c60f5 (#2126) 2024-04-04 15:23:25 +07:00
web3-developer
c17966d585
Update nim-rocksdb version. (#2120)
Update nim-rocksdb version to latest.
2024-03-30 00:35:56 +08:00
Kim De Mey
095bcae8b7
Use yaml versions of the portal beacon lc test vectors (#2117) 2024-03-29 17:12:23 +01:00
andri lim
ea6701a68f
Bump ssz-serialization to 248f2bdca2d65ff920920c72b764d0622d522596 (#2118) 2024-03-29 11:21:02 +07:00
andri lim
fd9bb28b20
Bump nim-web3 to 9e370474fb16039860d074535dd1649f1c2307b2 (#2112) 2024-03-28 14:16:40 +07:00
andri lim
be74ea83f9
Bump nim-evmc to 86d22a026b0aa07c07b3afd7d91ca475e0eae12a (#2113) 2024-03-28 13:47:02 +07:00
andri lim
64fe19a590
Bump nim-kzg4844 to 4fbcfbe4c452313bd440936318a87ed708987d8b (#2111) 2024-03-28 09:16:02 +07:00
web3-developer
0c0141817c
Static link rocksdb with Nimbus. (#2084)
* Static link rocksdb into Nimbus.

* Link in additional compression libraries.

* Support static linking for MacOS.

* Add flag to support disabling rocksdb static linking.

* Static linking is disabled by default. Build nimbus with static linking using: make nimbus_rocksdb_static

* Update nim-rocksdb to latest.
2024-03-28 09:55:12 +08:00
andri lim
32f631534d
Bump nim-web3 to 4d80530dd54af2c3285496317eddb2b7a82b10ad (#2105) 2024-03-26 09:31:10 +07:00
Kim De Mey
f3de770c14
Bump nimbus-eth2 module (#2104) 2024-03-25 13:40:57 +01:00
Kim De Mey
1379e05db1
Add bellatrix block proof test using new test vectors (#2099) 2024-03-22 13:05:06 +01:00
Kim De Mey
d3a706c229
Replace status-im/portal-spec-tests with ethereum fork version (#2097)
- The fluffy test vector repo got forked (well, copied rather) to
become the official one under ethereum github org, so we change
to that repo now and archive ours.
- Our repo also stored accumulator / historical_roots, replace
that with a new repo which is only for network configs.
- Several changes needed to be made due to test vectors that got
updated + some of them got changed to / are yaml format instead of
json.
2024-03-22 11:28:44 +01:00
andri lim
30277be1f3
Bump nim-web3 to 285d97c2b05bbe2a13dab4b52ea878157fb1a1a1 (#2088)
* Bump nim-web3 to 285d97c2b05bbe2a13dab4b52ea878157fb1a1a1

Unify EthCall/EthSend into TransactionArgs (#138)

* bump ssz-serialization

* Fix BlockNumber conversion

* Bump ssz-serialization: Restrict toSszType usage to non SszType in readSszBytes (#81)
2024-03-21 08:05:22 +07:00
Kim De Mey
49a199dbc3
Add beacon state historical_roots to fluffy (#2085)
- Add historical_roots in the binary for proof verification
pre-capella
- Add command to export historical_roots to file in
eth_data_exporter tool
2024-03-19 16:45:32 +01:00
andri lim
90622c0915
Bump libtommath to f96ffdf38803218fe74079738c9ff888bc9ab48c (#2069) 2024-03-15 20:52:41 +07:00
Kim De Mey
bfa756c36b
Bump json-rpc and web3 and remove unneeded errors import/export (#2078) 2024-03-15 11:44:18 +01:00
web3-developer
799acf301d
Added support for namespaces to RocksDb kvstore. (#2066)
* Add new RocksNamespaceRef type and remove backups and readonly support from RocksDb KvStore.

* Bump nim-rocksdb to fc2ba4a836b6b47ae1b17d1c45801c7e06585e19

* Fix tests.

* Fix copyright notice.
2024-03-12 11:04:46 +08:00
Kim De Mey
88a93beb26
Provide a specific error in JSON-RPC API when content is not found (#2059) 2024-03-06 08:57:09 +01:00
web3-developer
11691c33e9
Update Nimbus codebase to use the new nim-rocksdb API. (#2054)
* Bump nim-rocksdb.

* Update codebase to use latest nim-rocksdb API.

* Update copyright notices.

* Fix memory leak due to allocCStringArray without deallocCStringArray.

* Improve kvstore_rocksdb code.

* Refactor and cleanup RocksStoreRef.

* Update nim-rocksdb submodule to latest.
2024-03-05 12:54:42 +08:00
andri lim
7079c7b305
Bump nim-web3 to 747001250a27278e0f0f1706fe1dec88ad3ede8d (#2057)
Remove error field from AccessListResult
Add optional yParity field to TransactionObject
2024-02-29 22:02:38 +07:00
andri lim
a32a6200b6
Bump json-serialization to 7516a92eb8339f8fc1de7dd16cfa3d77bce87cd2 (#2056)
- avoid XDeclaredButNotUsed when no field isnot JsonVoid (#87)
- Fix JsonValueRef.Object comparison
2024-02-29 20:16:36 +07:00
andri lim
66c0f92cc6
Bump nim-stint to 7bb0ccc7842577243edc3b8d61f75bf498551a7a (#2053)
Make decimal string parser raise ValueError instead of RangeDefect. (#148)
Upgrade github actions to v4 (#149)
2024-02-29 07:38:31 +07:00