Commit Graph

330 Commits

Author SHA1 Message Date
Mark Holt
79ed8cad35
E2 snapshot uploading (#9056)
This change introduces additional processes to manage snapshot uploading
for E2 snapshots:

## erigon snapshots upload

The `snapshots uploader` command starts a version of erigon customized
for uploading snapshot files to
a remote location.  

It breaks the stage execution process after the senders stage and then
uses the snapshot stage to send
uploaded headers, bodies and (in the case of polygon) bor spans and
events to snapshot files. Because
this process avoids execution in run signifigantly faster than a
standard erigon configuration.

The uploader uses rclone to send seedable (100K or 500K blocks) to a
remote storage location specified
in the rclone config file.

The **uploader** is configured to minimize disk usage by doing the
following:

* It removes snapshots once they are loaded
* It aggressively prunes the database once entities are transferred to
snapshots

in addition to this it has the following performance related features:

* maximizes the workers allocated to snapshot processing to improve
throughput
* Can be started from scratch by downloading the latest snapshots from
the remote location to seed processing

## snapshots command

Is a stand alone command for managing remote snapshots it has the
following sub commands

* **cmp** - compare snapshots
* **copy** - copy snapshots
* **verify** - verify snapshots
* **manifest** - manage the manifest file in the root of remote snapshot
locations
* **torrent** - manage snapshot torrent files
2023-12-27 22:05:09 +00:00
battlmonstr
ce57b8f54f
silkworm: make install (#8985)
We've got a report from a user that erigon fails to run with this error:

```
/opt/erigon/releases/latest/bin/erigon: error while loading shared libraries: libsilkworm_capi.so: cannot open shared object file: No such file or directory
```

On this system erigon is executed using a service-account user which has
no permission to access the build user's $HOME where the
libsilkworm_capi.so resides (inside $GOPATH/pkg/mod).

This adds a support to silkworm-go to look for the library relative to
the executable path on Linux:

d4ec8a8bce

and a new `make DIST=<path> install` command which copies both the
library and erigon binary to any destination.
2023-12-14 21:45:18 +07:00
Alex Sharov
34d93fbe18
makefile: unquote silkworm build tag - to make it concatenatable (#8948)
`--tags "a,b,nosilkworm",integration` doesn't work
2023-12-11 09:18:07 +01:00
battlmonstr
d78cbfeceb
silkworm: disable on incompatible Linux versions (#8893)
Silkworm built on Ubuntu 22 depends on glibc 2.34. In order to run on an
older OS, Silkworm needs to be built and linked with an older glibc, but
to build on an older OS we need a compatible compiler. Silkworm requires
gcc 11+ that is not available on Ubuntu 20 or Debian 11.

To simplify the deployment disable Silkworm support on versions before
Ubuntu 22, Debian 12, and glibc prior to 2.34. The check for Ubuntu and
Debian is explicit, because some Ubuntu 16 installations report glibc
2.35 with ldd, but `go build` still uses an older system one and fails.
2023-12-06 16:01:44 +01:00
battlmonstr
96bb5ddb81
silkworm: macOS Intel library (#8891)
61782fa8d0

435dee4642
2023-12-06 11:02:54 +07:00
Giulio rebuffo
274f84598c
Automation tool to automatically upload caplin's snapshot files to R2 (#8747)
Upload beacon snapshots to R2 every week by default
2023-11-16 20:59:43 +01:00
battlmonstr
35696afca1
tests: test that erigon can be used as a library (#8494) 2023-11-01 11:44:01 +01:00
Alex Sharov
f36d090f39
make db-tools: suspend enum-int linter error (#8598)
```
 error: conflicting types for ‘mdbx_get_datacmp’ due to enum/integer mismatch; have ‘int (*(unsigned int))(const MDBX_val *, const MDBX_val *)’ {aka ‘int (*(unsigned int))(const struct iovec *, const struct iovec *)’} [-Werror=enum-int-mismatch]
26609 | __cold MDBX_cmp_func *mdbx_get_datacmp(unsigned flags) {
      |                       ^~~~~~~~~~~~~~~~
mdbx.h:4932:1: note: previous declaration of ‘mdbx_get_datacmp’ with type ‘int (*(MDBX_db_flags_t))(const MDBX_val *, const MDBX_val *)’ {aka ‘int (*(MDBX_db_flags_t))(const struct iovec *, const struct iovec *)’}
```
can't upgrade mdbx version for now
2023-10-27 11:01:11 +07:00
felddoteth
e8c0ce33eb
Update Makefile (#8544)
Allow overriding go binary

On FreeBSD go binaries are installed as go118, go119, go120, etc.

This fixes the ability to build erigon with a command like:

GO=go120 gmake
2023-10-21 10:24:04 +07:00
Giulio rebuffo
684ca4c030
keep caplin data (#8518) 2023-10-19 00:53:03 +02:00
battlmonstr
911da43128
go.mod: minimal go version 1.20 (#8495)
Because 1.19 is not working anymore.
2023-10-17 06:52:28 +07:00
Giulio rebuffo
9e42b705ce
Caplin: under the hood block downloading (#8459) 2023-10-16 15:35:26 +02:00
Giulio rebuffo
57cc5ccc6d
Use buffered channel (#8403) 2023-10-08 19:26:54 +02:00
Giulio rebuffo
d90572b786
Hopefully an even faster version of mocked sentry (#8402) 2023-10-07 22:30:10 +02:00
Giulio rebuffo
1775c40f78
Even higher timeout with tests (#8394) 2023-10-06 23:43:29 +02:00
Alex Sharov
87778fd0be
increase integration tests timeout (#8389) 2023-10-06 15:42:00 +07:00
Alex Sharov
e94f4d8199
mdbx: less warn (#8325) 2023-09-29 10:40:32 +07:00
battlmonstr
80d40ef898
ci: go mod tidy check (#8263) 2023-09-22 14:04:25 +07:00
battlmonstr
a4d29a6412
make: refactor erigon-lib make tasks (#8249) 2023-09-21 13:50:59 +02:00
Alex Sharov
1c4eb4f280
fix macos user homedir in makefile (#8133) 2023-09-06 09:49:08 +07:00
alex.sharov
ed960d3133 up linter version 2023-09-01 10:59:28 +07:00
alex.sharov
66d93f2489 rename torquem-ch project 2023-08-24 18:12:22 +07:00
alex.sharov
c6899ab0a9 rename torquem-ch project 2023-08-24 18:08:54 +07:00
Alex Sharov
d2bde8c096
Recsplit: cancelable build (#7994) 2023-08-11 11:54:59 +06:00
Giulio rebuffo
e3a59ed902
Better caplin logging and logic (#7992) 2023-08-10 22:34:58 +02:00
Giulio rebuffo
84f31c873e
Separation of Engine from Ethbackend (#7821)
This PR separates ENGINE from Ethbackend. It makes it so:

1) EthBackend not a god class
2) We can abstract away engine API so that we can make it CL-like and
enable Consensus-Execution driven design
3) Objective is Json-RPC -> Engine Consensus Module -> Execution module.
2023-07-06 18:09:52 +02:00
Alex Sharov
0b97728862
mdbx bug in DeleteCurrentDuplicates() workaround (#7850) 2023-07-06 11:08:23 +07:00
Alex Sharov
5dd6b77e40
Up grpc version (#7791) 2023-06-23 13:40:04 +07:00
Alex Sharov
eae2d9a79c
Disable ci tests on another servers: step 2 (#7752) 2023-06-17 10:27:58 +07:00
Alex Sharov
f4d8bd84b3
Crypto lib up (#7730) 2023-06-14 10:43:29 +07:00
Alex Sharov
78d9e0077b
sys lib version up (#7722) 2023-06-13 14:29:51 +07:00
Alex Sharov
1546a79771
lru lib version up (#7695) 2023-06-09 13:46:58 +07:00
Alex Sharov
ddfe93b5c9
e3: enable ci (#7694) 2023-06-09 11:26:26 +07:00
Giulio rebuffo
07e2100510
Added Regeression testing for Caplin (#7679) 2023-06-07 20:01:32 +02:00
Alex Sharov
bf9f5067f3
fix integration tests run (#7672) 2023-06-06 13:49:01 +07:00
Alex Sharov
f70ceefe2c
linter version up (#7654) 2023-06-04 10:32:16 +07:00
a
cda14447ad
[caplin] pkg refactor (#7507)
Co-authored-by: Giulio <giulio.rebuffo@gmail.com>
2023-05-13 23:44:07 +02:00
a
30430d585a
begin refactor of beacon state (#7433)
this first major move separates the transient beacon state cache from
the underlying tree.

leaf updates are enforced in the setters, which should make programming
easier.

all exported methods of the raw.BeaconState should be safe to call
(without disrupting internal state)

changes many functions to consume *raw.BeaconState in perparation for
interface


beyond refactor it also:

adds a pool for the leaves of the validator ssz hash 

adds a pool for the snappy writers
  
removed the parallel hash experiment (high memory use)
2023-05-04 15:18:42 +02:00
Alex Sharov
fe30cf8c6f
up urwafe and docker version (#7435) 2023-05-04 10:48:43 +07:00
Alex Sharov
6a7824c469
remove netgo tag on win (#7421) 2023-05-02 08:34:35 +07:00
Giulio rebuffo
515aedda7b
Added Caplin Phase 1 (#7290)
* Introduces full beacon validation
* Removes light client
* NOTE: slow on purpose, I want everything to be BLS verified for now.
2023-04-17 18:06:50 +00:00
Alex Sharov
62d1e8a66c
e3: in-general merge must not see "overlaps/deleted" files, but merge of history need access to corresponding index files (even if they marked as deleted or already merged - before kill -9) (#7321) 2023-04-17 05:54:29 +00:00
Maxim Andreev
caadb16b42
make: fix db-tools target error when it's first command after cloning (#7285)
**Reproducer:**
```sh
$ git clone --depth 1 https://github.com/ledgerwatch/erigon
$ cd erigon
$ make db-tools
...
  CC+LD mdbx_load
  CC+LD mdbx_chk
  CC+LD mdbx_drop
make[2]: Leaving directory '/home/user/devel/er/erigon/vendor/github.com/torquem-ch/mdbx-go/mdbxdist'
make[1]: Leaving directory '/home/user/devel/er/erigon/vendor/github.com/torquem-ch/mdbx-go'
cd vendor/github.com/torquem-ch/mdbx-go/mdbxdist && cp mdbx_chk /home/user/devel/er/erigon/build/bin && cp mdbx_copy /home/user/devel/er/erigon/build/bin && cp mdbx_dump /home/user/devel/er/erigon/build/bin && cp mdbx_drop /home/user/devel/er/erigon/build/bin && cp mdbx_load /home/user/devel/er/erigon/build/bin && cp mdbx_stat /home/user/devel/er/erigon/build/bin
cp: cannot create regular file '/home/user/devel/er/erigon/build/bin': No such file or directory
make: *** [Makefile:138: db-tools] Error 1
```

**Fix:**
create `$(GOBIN)` directory if it's not exists
2023-04-10 01:44:03 +00:00
Alex Sharov
527f1da283
hashtree dep up (#7235)
gohashtree to support go1.20
https://github.com/prysmaticlabs/gohashtree/pull/8
2023-04-02 14:13:54 +00:00
alex.sharov
bc1b142dec add netgo tag 2023-03-28 09:48:14 +07:00
alex.sharov
eb93217ccb linter up 2023-03-23 10:34:44 +07:00
Alex Sharov
09154c5be0
Go 1.18 drop (#7159) 2023-03-23 03:19:07 +00:00
Alex Sharov
b685407175
attempt to fix TestGolangBindings (#7041) 2023-03-07 06:14:35 +00:00
Alex Sharov
78aa8652d2
e3: native map instead of btree where can (because e2 experience shows - it's faster) (#7010) 2023-03-07 02:34:30 +00:00
Anshal Shukla
c4ba26107e
Rpc get code (#6899)
This in conjuction with
[PR#893](https://github.com/ledgerwatch/erigon-lib/pull/893) fixes the
eth_getCode RPC call.
2023-03-02 14:12:16 +00:00