468 Commits

Author SHA1 Message Date
goldsquid
5461ba5d0e fix 2025-12-12 13:09:24 +07:00
goldsquid
47044e36e5 updates 2025-12-12 12:07:47 +07:00
goldsquid
61c0ac3a78 plume testnet 2025-12-12 12:07:42 +07:00
goldsquid
6abfe26712 update 2025-12-11 07:13:49 +07:00
goldsquid
ce10d304c0 fix 2025-12-07 15:24:36 +07:00
goldsquid
0e699e3bd4 update 2025-12-07 07:04:43 +07:00
goldsquid
70928ab425 fix 2025-12-06 14:38:20 +07:00
goldsquid
4f6aed41d7 betta 2025-12-06 14:35:18 +07:00
goldsquid
40d66741c2 beta 2025-12-06 14:05:26 +07:00
goldsquid
ad54a39126 fix 2025-12-06 14:02:29 +07:00
goldsquid
6569ab8c60 big 2025-12-06 14:01:15 +07:00
goldsquid
ca66310c2e cleanliness incoming 2025-12-06 13:58:11 +07:00
goldsquid
a7b03c6a39 update 2025-12-06 11:50:20 +07:00
goldsquid
2b63352ccb update 2025-12-06 09:12:24 +07:00
goldsquid
dabc284553 update 2025-12-06 09:05:34 +07:00
goldsquid
8d67597789 fix 2025-12-04 21:01:32 +07:00
goldsquid
cc4671bfc7 update 2025-12-04 20:11:50 +07:00
goldsquid
2f24e061d5 update 2025-12-01 13:37:09 +07:00
goldsquid
2a553fefaf update 2025-11-28 13:42:43 +07:00
goldsquid
ebb0be5de0 update 2025-11-27 14:28:59 +07:00
goldsquid
ac354edec5 updates 2025-11-24 14:53:17 +07:00
goldsquid
94de26a009 autoheal sonic 2025-11-24 14:37:18 +07:00
goldsquid
e3b8405a1f reth bsc chapel 2025-11-24 13:04:33 +07:00
goldsquid
6aa46ef0ec hardening 2025-11-23 13:56:33 +07:00
goldsquid
65609ea813 fix 2025-11-23 13:37:34 +07:00
goldsquid
06f9d5f797 fix 2025-11-23 13:30:04 +07:00
goldsquid
98228d9b21 fix 2025-11-23 13:28:49 +07:00
goldsquid
e433d44a93 generalize haqq initialization 2025-11-23 13:24:57 +07:00
goldsquid
0acfbf88fa update 2025-11-21 21:02:15 +07:00
goldsquid
5d8a498e2e downgrade bsc-reth 2025-11-21 13:48:36 +07:00
goldsquid
24a6217cb5 updates 2025-11-21 13:30:14 +07:00
goldsquid
928989ec32 fix ronin test rpc 2025-11-21 13:21:18 +07:00
goldsquid
d5c0eafc4d fix ronin test rpc 2025-11-21 13:17:16 +07:00
goldsquid
7d326fe2fd soneium-reth 2025-11-21 12:58:21 +07:00
goldsquid
2fd8f76502 update 2025-11-20 15:16:22 +07:00
goldsquid
adac66a6d5 messy boot torrents 2025-11-20 15:12:41 +07:00
goldsquid
22ac74508c messy boot torrents 2025-11-20 15:09:24 +07:00
goldsquid
917e8884dc updates 2025-11-20 14:43:40 +07:00
goldsquid
9c0ad6e0af more agressive minimal bsc 2025-11-17 08:23:06 +07:00
goldsquid
a9ab0fb87b fix 2025-11-16 20:26:34 +07:00
goldsquid
9c5ef7a936 downgrade 2025-11-16 18:55:38 +07:00
goldsquid
3402a29dc7 update 2025-11-16 14:57:25 +07:00
goldsquid
723b98b72b update traefik 2025-11-16 12:34:02 +07:00
goldsquid
9ec7ffdbe9 update peers 2025-11-15 14:20:45 +07:00
goldsquid
97a62142d6 fix 2025-11-15 14:11:20 +07:00
goldsquid
81e631e52b now with hoodi 2025-11-15 14:02:51 +07:00
goldsquid
2334846ce6 update 2025-11-15 13:48:31 +07:00
goldsquid
5d46133b2d besu key 2025-11-15 12:11:00 +07:00
goldsquid
0b3cf5eb38 fix 2025-11-15 11:24:52 +07:00
goldsquid
752be20f18 delete nodekeys when restoring 2025-11-15 11:11:50 +07:00
goldsquid
f8141ad062 update refenrece endpoints 2025-11-15 10:57:12 +07:00
goldsquid
d93cc9e180 do not ask for permission 2025-11-15 10:31:08 +07:00
goldsquid
00462e4e98 fix 2025-11-15 10:20:27 +07:00
goldsquid
ac8eb850ec update 2025-11-15 10:17:02 +07:00
goldsquid
047dc313e8 delete the nodekeys 2025-11-15 10:16:09 +07:00
goldsquid
81a7bc8c27 that's probably defunct 2025-11-14 12:25:42 +07:00
goldsquid
a9ca87086a update nimbus 2025-11-14 11:40:44 +07:00
goldsquid
d90d5695a9 add hoodie reth 2025-11-14 11:40:34 +07:00
goldsquid
0426ad632a replace beacon sync endpoint for hoodi 2025-11-14 11:35:52 +07:00
goldsquid
94131eafa9 fix 2025-11-14 11:21:22 +07:00
goldsquid
aad2f1481f update + hoodi 2025-11-14 11:09:50 +07:00
goldsquid
ffaa3ea015 fix 2025-11-14 10:22:10 +07:00
goldsquid
81fa49bbd0 fix 2025-11-14 10:19:40 +07:00
goldsquid
1f0fe14900 fix 2025-11-14 10:14:24 +07:00
goldsquid
351c3e970c remove alfajores 2025-11-14 10:07:26 +07:00
goldsquid
5ae09fed1b new celo 2025-11-14 10:06:42 +07:00
goldsquid
5acf3dfeb6 update 2025-11-14 08:52:03 +07:00
goldsquid
6e10ccdb85 make better default network settings 2025-11-13 11:01:56 +07:00
goldsquid
c5112ce640 betta 2025-11-12 16:11:56 +07:00
goldsquid
1f7435956e update 2025-11-11 13:33:54 +07:00
goldsquid
f65bfb7c59 update traefik 2025-11-11 12:53:36 +07:00
goldsquid
f1d93eca01 update 2025-11-10 17:44:36 +07:00
goldsquid
5c3dffe980 fix 2025-11-10 12:51:39 +07:00
goldsquid
2af99cc1d8 fix 2025-11-10 12:43:27 +07:00
goldsquid
ff3be25ae1 generalize init geth from genesis block 2025-11-10 12:41:38 +07:00
goldsquid
4a1e72152c fixes 2025-11-10 12:15:38 +07:00
goldsquid
566df06116 opbnb needs trust idk why 2025-11-09 14:42:39 +07:00
goldsquid
46b8cbb2ee fix 2025-11-08 21:33:02 +07:00
goldsquid
8cecd86a90 fix 2025-11-08 21:14:36 +07:00
goldsquid
e8109f7cfa opbnb in da ohouse 2025-11-08 21:11:21 +07:00
goldsquid
c57e55080c cleanup 2025-11-08 21:10:50 +07:00
goldsquid
e35a91a253 fix 2025-11-08 06:15:08 +07:00
goldsquid
b6929f52fe fix 2025-11-08 06:00:16 +07:00
goldsquid
bd894ff300 fix 2025-11-08 05:26:39 +07:00
goldsquid
072900d5c3 fix 2025-11-08 05:23:03 +07:00
goldsquid
fbdbeb4670 fix 2025-11-08 05:16:42 +07:00
goldsquid
2fe5cdd242 fix 2025-11-08 05:10:28 +07:00
goldsquid
fe095e1076 fix 2025-11-08 05:06:42 +07:00
goldsquid
9c3c2849c0 xlayer migrated to op-stack 2025-11-08 05:03:09 +07:00
goldsquid
572238029c update 2025-11-07 18:41:56 +07:00
goldsquid
baf906832e downgrade 2025-11-07 17:42:52 +07:00
goldsquid
219aec45f3 update 2025-11-07 10:15:21 +07:00
goldsquid
abc00d0540 fix 2025-11-07 09:49:03 +07:00
goldsquid
f371c7fc1c hello sophon 2025-11-07 09:40:21 +07:00
goldsquid
39eed6c8d0 update 2025-11-06 18:39:00 +07:00
goldsquid
1becf90135 gix 2025-11-06 18:36:11 +07:00
goldsquid
d3025d9688 update 2025-11-06 12:26:13 +07:00
goldsquid
68f1a762ce updates 2025-11-06 12:13:12 +07:00
goldsquid
f9ee270dca bera now with geth 2025-11-06 12:13:07 +07:00
goldsquid
600b67f100 fix 2025-11-05 20:14:13 +07:00
goldsquid
484142ab4e rpc gas imit for avax also for testnet 2025-11-05 20:13:30 +07:00
goldsquid
52d17f5fd3 rpc gas imit for avax 2025-11-05 20:11:25 +07:00
goldsquid
f7fd21dbfb update maru genesis 2025-11-03 19:43:46 +07:00
goldsquid
55b97c0cde update 2025-10-28 15:30:34 +07:00
goldsquid
369827fbf4 update gas price 2025-10-28 13:31:51 +07:00
goldsquid
6dad2a1a14 update 2025-10-27 16:38:48 +07:00
goldsquid
dfb64093d0 new nitro erigon 2025-10-27 16:00:27 +07:00
goldsquid
738c501435 update 2025-10-27 14:52:32 +07:00
goldsquid
fbfb7e3a7a mmh 2025-10-27 14:25:40 +07:00
goldsquid
99ce6fe3ba update 2025-10-26 23:49:01 +07:00
goldsquid
4ba31a8605 fix 2025-10-26 10:03:25 +07:00
goldsquid
ae47b37638 update genesis 2025-10-25 15:53:18 +07:00
goldsquid
352331d780 init erigon datadir every time 2025-10-25 15:40:46 +07:00
goldsquid
b58820e838 update genesis 2025-10-25 15:37:42 +07:00
goldsquid
b657e2a38b fix 2025-10-25 15:33:21 +07:00
goldsquid
d75be6b2e3 fix 2025-10-25 15:29:27 +07:00
goldsquid
b6cf97dbc6 fix 2025-10-25 15:28:40 +07:00
goldsquid
9446c3c841 hardcoded maru in linea-erigon2 2025-10-25 15:27:25 +07:00
goldsquid
db89e1915d update 2025-10-25 14:14:00 +07:00
goldsquid
335b9e3803 fix 2025-10-25 09:18:05 +07:00
goldsquid
720767408a fix]git oush 2025-10-25 09:14:19 +07:00
goldsquid
a2999e128d update 2025-10-25 09:02:20 +07:00
goldsquid
45fddae546 nana 2025-10-24 17:46:55 +07:00
goldsquid
027136d24a update 2025-10-24 16:45:35 +07:00
goldsquid
8d6ceb6794 linea now with maru 2025-10-24 16:32:06 +07:00
goldsquid
78bb1f32a4 updates 2025-10-22 16:36:24 +07:00
goldsquid
aab7dd3d38 fix 2025-10-17 16:22:46 +07:00
goldsquid
e62db7c3ac fix 2025-10-17 16:13:38 +07:00
goldsquid
d531b62abb configure eigenda fallback 2025-10-17 16:01:39 +07:00
goldsquid
edb2bdc699 remove parameter 2025-10-17 15:06:15 +07:00
goldsquid
3a5fe0e8a2 update eigenda 2025-10-16 18:57:30 +07:00
goldsquid
ab3beca238 updates 2025-10-16 08:17:54 +07:00
goldsquid
22ec19fbaa update 2025-10-16 08:08:58 +07:00
goldsquid
59ed9bdd78 fix 2025-10-12 21:26:59 +07:00
goldsquid
f73a6c6cc9 smaller 2025-10-12 20:40:08 +07:00
goldsquid
4427c7ae7c fix image 2025-10-11 12:34:54 +07:00
goldsquid
e7066fcd72 gnosis reth 2025-10-11 12:26:49 +07:00
goldsquid
e573daddad betta 2025-10-11 12:26:29 +07:00
goldsquid
4e7768f85f no more reth.toml for base 2025-10-09 17:54:15 +07:00
goldsquid
9c04d278b0 with history 2025-10-07 16:46:53 +07:00
goldsquid
a1a28a06d4 pruned starknet 2025-10-07 13:57:23 +07:00
goldsquid
9548fbb023 fix 2025-10-07 13:49:19 +07:00
goldsquid
ac194cbe7a fix 2025-10-07 13:47:07 +07:00
goldsquid
11ff167922 fix 2025-10-05 20:03:40 +07:00
goldsquid
925276e1c8 change port 2025-10-05 16:35:48 +07:00
goldsquid
208ac156d8 path for ws 2025-10-05 16:12:25 +07:00
goldsquid
b39d371667 pathfinder 2025-10-05 16:07:41 +07:00
goldsquid
dda3abdbd3 cleanup 2025-10-05 15:39:19 +07:00
goldsquid
1d025c0089 soneium 2025-10-05 09:00:02 +07:00
goldsquid
8a64c46feb initial starknet 2025-10-04 21:52:08 +07:00
goldsquid
3c5b22ba78 update 2025-10-04 14:00:15 +07:00
goldsquid
0ca2a12308 fix 2025-10-03 21:30:19 +07:00
goldsquid
f2118d633d fix 2025-10-03 21:27:48 +07:00
goldsquid
3d09889143 fix 2025-10-03 21:23:36 +07:00
goldsquid
aa515ad157 fix 2025-10-03 21:21:41 +07:00
goldsquid
563bc83234 fix 2025-10-03 21:07:40 +07:00
goldsquid
0323b8f709 fix 2025-10-03 21:03:33 +07:00
goldsquid
d4509f4d15 fix 2025-10-03 21:01:16 +07:00
goldsquid
a09187e07b relay needs no jwtsecret 2025-10-03 20:49:20 +07:00
goldsquid
6e07163fee plume 2025-10-03 20:45:15 +07:00
goldsquid
11a67d32c7 initial plume 2025-10-03 20:32:14 +07:00
goldsquid
8549223fae update 2025-10-03 19:37:12 +07:00
goldsquid
ac327fc35f fix 2025-10-02 20:46:11 +07:00
goldsquid
f54affaf2b update 2025-10-02 20:41:34 +07:00
goldsquid
5c14a9a307 update 2025-10-02 20:19:00 +07:00
goldsquid
b621df03e3 lfg 2025-10-02 13:16:17 +07:00
goldsquid
26f5f93ffa fix 2025-10-01 23:10:11 +07:00
goldsquid
2b19378190 fix 2025-10-01 22:46:46 +07:00
goldsquid
f84a5554e5 fix 2025-10-01 22:44:35 +07:00
goldsquid
342c5a1063 fix 2025-10-01 21:54:20 +07:00
goldsquid
8d47152669 fix 2025-10-01 17:38:40 +07:00
goldsquid
676af5b65b fix 2025-10-01 17:36:22 +07:00
goldsquid
d3ea98851f uypdate 2025-10-01 17:32:17 +07:00
goldsquid
94dab10398 switch out image 2025-10-01 17:22:32 +07:00
goldsquid
25a4650b9e initial commit 2025-10-01 17:19:51 +07:00
goldsquid
b21dc9ddc5 fix 2025-10-01 17:02:27 +07:00
goldsquid
3cabecc2cf maybe 2025-10-01 16:31:20 +07:00
goldsquid
cd9974cb77 fix 2025-10-01 16:10:56 +07:00
goldsquid
a2019f40c5 new network 2025-10-01 16:06:12 +07:00
goldsquid
4aa517c2a0 cool new script now executable 2025-10-01 16:05:58 +07:00
goldsquid
c55094d1db better clone speed 2025-10-01 15:14:04 +07:00
goldsquid
a40ba7f29f better clone speed 2025-10-01 15:10:56 +07:00
goldsquid
84f3752b63 better clone speed 2025-10-01 14:59:49 +07:00
goldsquid
5c07facbb8 no compression less cipher 2025-10-01 14:11:49 +07:00
goldsquid
ad80bc06dd new tool 2025-10-01 14:09:12 +07:00
goldsquid
e708cca8cf do not download receipts 2025-10-01 13:59:50 +07:00
goldsquid
9f27dfd1eb updates 2025-10-01 11:16:52 +07:00
goldsquid
29a1923f90 updates 2025-09-27 11:38:07 +09:00
goldsquid
2ba1988ad9 updates plus bigger respose for abstract 2025-09-25 11:35:24 +09:00
goldsquid
b88fad9de5 fix 2025-09-20 19:27:51 +07:00
goldsquid
bfcaf9d378 fix 2025-09-20 19:22:03 +07:00
goldsquid
8ed605c6ec fix 2025-09-20 19:18:23 +07:00
goldsquid
026dd3fe19 updates plus superseed 2025-09-20 19:07:11 +07:00
goldsquid
18acb97a9c fix 2025-09-18 17:10:45 +07:00
goldsquid
9446a4e3b0 new bera 2025-09-17 18:32:56 +07:00
goldsquid
e2ba9b36ea hemi learnigns 2025-09-17 18:15:19 +07:00
goldsquid
c8df0a0ecb refactored the relay 2025-09-17 13:53:59 +07:00
goldsquid
4e19cc4166 damn it 2025-09-17 12:39:01 +07:00
goldsquid
8f01bc65d1 update 2025-09-17 07:41:53 +07:00
goldsquid
972b40630f avalanche tuning 2025-09-17 07:29:51 +07:00
goldsquid
736fa43bab fix 2025-09-16 20:04:47 +07:00
goldsquid
14fa2f463f fix 2025-09-16 20:03:37 +07:00
goldsquid
a839e48c68 names 2025-09-16 20:02:49 +07:00
goldsquid
437efffa1d boom 2025-09-16 19:52:44 +07:00
goldsquid
7cca5e6e8a renomed 2025-09-16 19:38:16 +07:00
goldsquid
1a730d708d fix 2025-09-16 17:14:45 +07:00
goldsquid
d293255e64 fix 2025-09-16 17:11:38 +07:00
goldsquid
62c944d197 fix 2025-09-16 16:58:45 +07:00
goldsquid
b7679d6297 changes 2025-09-16 16:56:57 +07:00
goldsquid
b4c6e9628c mmh 2025-09-16 16:28:06 +07:00
goldsquid
0f17a89913 update 2025-09-14 22:11:42 +07:00
goldsquid
c174a9b48a update 2025-09-14 16:15:10 +07:00
goldsquid
47b67b8457 fix 2025-09-13 21:07:43 +07:00
goldsquid
1fc9974623 debug 2025-09-13 21:06:12 +07:00
goldsquid
67713ba396 mmh 2025-09-13 20:54:27 +07:00
goldsquid
5d331e5e18 fix 2025-09-13 20:50:29 +07:00
goldsquid
116719f98c fix 2025-09-13 20:49:11 +07:00
goldsquid
3be1ddb0aa fix 2025-09-13 20:36:09 +07:00
goldsquid
94e9659685 fix 2025-09-13 20:26:23 +07:00
goldsquid
8fa22aeba7 update 2025-09-13 20:01:39 +07:00
goldsquid
9ed7b3cb60 initial 2025-09-13 19:50:16 +07:00
goldsquid
e96e8c29dd with nimbus 2025-09-13 05:57:18 +07:00
goldsquid
6131b0e669 updates 2025-09-13 05:47:30 +07:00
goldsquid
f2b5faecb0 downgrade 2025-09-11 14:26:50 +07:00
goldsquid
f3a00a7fdc updates 2025-09-11 14:24:34 +07:00
goldsquid
ee2aaff6ed proper path 2025-09-11 05:02:08 +07:00
goldsquid
7e49678556 hotfix 2025-09-11 04:49:27 +07:00
goldsquid
aa27ecf449 fix 2025-09-10 15:33:50 +07:00
goldsquid
20762bf38d initial hemi 2025-09-10 15:22:13 +07:00
goldsquid
1c78e0d0cd fix 2025-09-10 14:31:57 +07:00
goldsquid
a06ef7134b gnosis beacon chain and sonic testnet added 2025-09-10 13:34:49 +07:00
goldsquid
55eaf6712d update bootnodes 2025-09-10 13:08:50 +07:00
goldsquid
51ad84767e update 2025-09-10 07:00:43 +07:00
goldsquid
a2a9e0e6ad many many updates 2025-09-09 12:25:39 +07:00
goldsquid
b53baac1e3 update 2025-09-08 09:25:58 +07:00
goldsquid
c7f2bbee11 fix 2025-09-08 09:12:38 +07:00
goldsquid
2a28290bbd state sync sei only when chaindata is empty ... takes hours after every restart otherwise 2025-09-07 17:15:51 +07:00
goldsquid
5a3bd61d69 open ws 2025-09-07 17:13:23 +07:00
goldsquid
a53f281edb swoosh 2025-09-07 13:50:03 +07:00
goldsquid
f13afc1b7f initial 0g 2025-09-07 13:31:22 +07:00
goldsquid
0e365389e0 initial 0g 2025-09-07 11:13:53 +07:00
goldsquid
fe5cfb3c67 comment 2025-09-07 11:13:39 +07:00
goldsquid
6ab4f6b69b revert exec 2025-09-06 20:46:46 +07:00
goldsquid
a1beda8723 fix 2025-09-06 20:35:39 +07:00
goldsquid
d57d2bf5e1 update and pruned 2025-09-06 20:12:27 +07:00
goldsquid
5dddb8155f heal by default 2025-09-06 19:59:50 +07:00
goldsquid
5697e7530f fix 2025-09-06 16:04:58 +07:00
goldsquid
0e140d672a wrong 2025-09-06 16:01:56 +07:00
goldsquid
e5280c89c9 fix 2025-09-06 16:01:26 +07:00
goldsquid
ee6d61f35a support mpt snapshot 2025-09-06 15:17:13 +07:00
goldsquid
46c41bbdb6 more ports 2025-09-05 20:17:22 +07:00
goldsquid
23f7047083 new profile for preconf 2025-09-05 20:02:36 +07:00
goldsquid
f0949f4e52 more returndata 2025-09-05 16:50:14 +07:00
goldsquid
695ae7b69f fix 2025-09-05 16:38:17 +07:00
goldsquid
516d9174c6 fix 2025-09-05 16:34:50 +07:00
goldsquid
70fdc31b7a fix 2025-09-05 16:26:31 +07:00
goldsquid
6a6365b1cd fix 2025-09-05 16:15:57 +07:00
goldsquid
3f5366ee26 fix 2025-09-05 16:13:42 +07:00
goldsquid
57f38ae975 fix 2025-09-05 15:55:59 +07:00
goldsquid
3f042b168a fix 2025-09-05 15:55:05 +07:00
goldsquid
0dd7fecc40 lfg 2025-09-05 15:48:27 +07:00
goldsquid
781ce60757 chain fork 2025-09-05 14:30:19 +07:00
goldsquid
13067d50dc update 2025-09-05 14:07:56 +07:00
goldsquid
f83542b0e8 fix 2025-09-05 14:05:23 +07:00
goldsquid
8f88b5030a update 2025-09-05 14:02:42 +07:00
goldsquid
a4f4de6999 caching for nictro 2025-09-05 11:38:46 +07:00
goldsquid
c67a4aea6b update 2025-09-05 05:42:22 +07:00
goldsquid
8556bbcee7 fix 2025-09-04 20:36:25 +07:00
goldsquid
07587e99d6 latest 2025-09-04 20:35:07 +07:00
goldsquid
0f0ff380dc fix 2025-09-04 20:28:41 +07:00
goldsquid
a9d7f428e9 fixes 2025-09-04 20:26:49 +07:00
goldsquid
7a651c6be7 update 2025-09-04 20:16:03 +07:00
goldsquid
17423f64d9 add cache 2025-09-04 12:41:11 +07:00
goldsquid
1b9835745b update 2025-09-04 07:51:06 +07:00
goldsquid
918b7f546a update 2025-09-03 14:12:26 +07:00
goldsquid
d260954486 updates 2025-09-02 12:48:43 +07:00
goldsquid
1b44c6e07c caching for bsc 2025-09-01 11:30:08 +07:00
goldsquid
0a522bcb07 new convdenience script 2025-09-01 10:45:10 +07:00
goldsquid
8fdede234a update 2025-08-31 20:18:27 +07:00
goldsquid
411c1d12a5 new convenience script 2025-08-31 13:48:38 +07:00
goldsquid
8ec2673626 fix 2025-08-31 12:43:11 +07:00
goldsquid
7dff68b46f fix 2025-08-31 12:29:39 +07:00
goldsquid
9d3d5a1444 fix 2025-08-31 12:24:07 +07:00
goldsquid
a90a2df025 update 2025-08-31 11:48:15 +07:00
goldsquid
b56f1d95fd fix 2025-08-30 19:45:19 +07:00
goldsquid
cdea0ea21d delete arbitrum-erigon3 2025-08-30 19:35:39 +07:00
goldsquid
9ecd5ffee8 nitro-erigon 2025-08-30 19:35:06 +07:00
goldsquid
484b096882 do not build the eriogn tools 2025-08-30 14:08:25 +07:00
goldsquid
7485d62095 update arbitrum erigon 2025-08-30 13:36:15 +07:00
goldsquid
51b3696e37 rpc opts 2025-08-28 22:47:45 +07:00
goldsquid
e0b644cf9a update 2025-08-27 16:44:34 +07:00
goldsquid
d1ced15d1d update 2025-08-26 18:35:53 +07:00
goldsquid
1709e0eb12 update 2025-08-26 18:26:34 +07:00
goldsquid
112d8baae8 update 2025-08-21 14:49:45 +07:00
goldsquid
01b630ef6c isthmus on fraxtal 2025-08-21 14:39:26 +07:00
Payne
abda0c9ff7 add temporary nitro erigon yml file 2025-08-13 21:00:42 +03:00
goldsquid
a4e58b10a3 reverse update 2025-08-13 17:04:39 +07:00
goldsquid
cf23aea82e version updates 2025-08-13 16:56:18 +07:00
goldsquid
75d8f2cb94 gas price limit 2025-08-13 15:07:18 +07:00
goldsquid
9d2e5a9444 no congestion treshold for scroll 2025-08-12 18:02:30 +07:00
goldsquid
28b49aceba update the taiko thing for preconfirmations 2025-08-12 17:23:37 +07:00
goldsquid
5588075961 do not build op-reth 2025-08-12 14:18:05 +07:00
goldsquid
a83630ec7e update 2025-08-12 13:51:20 +07:00
goldsquid
0c8e3a10ba fix 2025-08-01 20:56:03 +07:00
goldsquid
b0709ec289 fix 2025-08-01 18:13:57 +07:00
goldsquid
84474286e5 fix 2025-08-01 18:03:31 +07:00
goldsquid
47b531f83f fix 2025-08-01 17:57:52 +07:00
goldsquid
a332445329 fix 2025-08-01 17:55:43 +07:00
goldsquid
68aa5c73f8 fix 2025-08-01 17:49:44 +07:00
goldsquid
9448d5b50e do not toch the ones without flashbots 2025-08-01 17:42:52 +07:00
goldsquid
d35f94db80 build base reth with flashbots 2025-08-01 17:40:35 +07:00
goldsquid
c70dc219c9 update 2025-08-01 17:15:51 +07:00
goldsquid
aa4ce588c4 update3 2025-07-30 22:24:07 +07:00
goldsquid
cd0d26ff40 update 2025-07-17 13:59:22 +07:00
goldsquid
92af861c05 update 2025-07-17 13:52:48 +07:00
goldsquid
bfae1db6b8 update 2025-07-17 13:51:25 +07:00
goldsquid
6c66a4c2f4 update 2025-07-17 12:21:25 +07:00
goldsquid
f885f2f820 update 2025-07-15 13:27:14 +07:00
goldsquid
17ffaa8731 update 2025-07-14 22:03:53 +07:00
goldsquid
2d1ea37364 update 2025-07-14 16:59:42 +07:00
goldsquid
3b8b30a3b9 update 2025-07-14 16:22:16 +07:00
goldsquid
35dec193bb update bsc gas price 2025-07-14 16:17:46 +07:00
goldsquid
39e48fdfd0 update 2025-07-05 12:17:40 +07:00
goldsquid
d1c7bb53fd update 2025-07-03 18:11:05 +07:00
goldsquid
2ed184cb68 update 2025-07-02 15:11:26 +07:00
goldsquid
6abf4b2a00 more stats 2025-06-29 14:26:53 +07:00
goldsquid
c484bbe293 fix 2025-06-29 12:52:24 +07:00
goldsquid
4f70eb18f5 minimal geth 2025-06-29 12:07:34 +07:00
goldsquid
b818df5d03 update 2025-06-28 18:56:27 +07:00
goldsquid
b7589c6d80 fix gnosis 2025-06-27 14:16:08 +07:00
goldsquid
4a90d75098 updates 2025-06-27 13:46:56 +07:00
goldsquid
33b6ada9e5 update 2025-06-26 10:48:03 +07:00
goldsquid
254ee96fa1 update 2025-06-25 17:52:47 +07:00
goldsquid
e0792ea61f no ipfilter 2025-06-25 17:47:24 +07:00
goldsquid
474266a03f fix 2025-06-24 11:04:54 +07:00
goldsquid
c800c8512e update 2025-06-24 11:00:44 +07:00
goldsquid
4da8d4444d update 2025-06-24 08:46:09 +07:00
goldsquid
8161d096d7 update and disable eth_getLogs on pruned erigon3 nodes 2025-06-23 12:51:30 +07:00
goldsquid
9c39f7ac1d no more nginx 2025-06-22 15:08:21 +07:00
goldsquid
04db729cb7 get rid of nginx 2025-06-22 14:47:42 +07:00
goldsquid
b6b09dfc0c no more debug on visor 2025-06-21 02:07:57 +07:00
goldsquid
2c2e3dfe36 poor mans archive nitro 2025-06-20 14:27:19 +07:00
goldsquid
25a66982fc viction fix 2025-06-20 13:54:48 +07:00
goldsquid
0ebe442e3f erigon for arbitrum arrives 2025-06-20 10:56:21 +07:00
goldsquid
5b31086356 update 2025-06-20 03:53:13 +07:00
goldsquid
a8de36eefd update 2025-06-20 03:51:36 +07:00
goldsquid
029ac0e01d don't build that doesn't perfrom as good 2025-06-19 20:35:54 +07:00
goldsquid
abdddf4a50 no pruning for nitro 2025-06-19 17:14:33 +07:00
goldsquid
51ba55d300 add pruning to nitro 2025-06-19 16:29:39 +07:00
goldsquid
2d570187df update and build erigon3 for bsc 2025-06-19 16:01:19 +07:00
goldsquid
fb643e9d33 do not use websockets 2025-06-19 14:39:44 +07:00
goldsquid
253d885f8a make it stop 2025-06-19 13:53:09 +07:00
goldsquid
6771a5144f need correct port 2025-06-19 13:37:23 +07:00
goldsquid
da146cf056 with bootnodes 2025-06-19 12:44:56 +07:00
goldsquid
f54f12fa90 gpg missing 2025-06-19 10:34:18 +07:00
goldsquid
6af3e85ab4 gpg missing 2025-06-19 10:33:08 +07:00
goldsquid
efe7856da0 curl missing 2025-06-19 10:29:20 +07:00
goldsquid
dedaa56772 a new chain is borne 2025-06-19 10:28:11 +07:00
goldsquid
c345ff78db special case for viction 2025-06-18 21:01:32 +07:00
goldsquid
0f5daff12e updates 2025-06-18 18:52:21 +07:00
goldsquid
8d8e8fcb14 update 2025-06-18 13:58:23 +07:00
goldsquid
c493ba0485 optimizoor 2025-06-18 12:57:08 +07:00
goldsquid
09b2b664e9 delete the benachmark shit 2025-06-18 12:46:36 +07:00
Para Dox
b1f1bf0193 no more prysm 2025-06-18 07:32:45 +07:00
Para Dox
6ca1cd32ac publicnode snaps are leveldb 2025-06-17 21:06:29 +07:00
Para Dox
879542665b updates 2025-06-17 20:56:14 +07:00
Para Dox
7f333ff5c6 fix 2025-06-17 16:00:16 +07:00
Para Dox
20487eb941 maybe? 2025-06-17 15:36:57 +07:00
Para Dox
0f5e128466 checkpoint sync lighthouse 2025-06-17 15:00:31 +07:00
Para Dox
df54c73348 checkpoint sync lighthouse 2025-06-17 14:59:23 +07:00
Para Dox
940de9d354 checkpoint sync lighthouse 2025-06-17 14:56:48 +07:00
Para Dox
734ce300d5 use lighthouse for reth 2025-06-17 14:50:56 +07:00
Para Dox
45a5cedca2 need auth 2025-06-17 13:17:40 +07:00
Para Dox
629a75930c fix the image tag 2025-06-17 13:10:53 +07:00
Para Dox
e0c02802ef new eth mainnet 2025-06-17 13:06:04 +07:00
Para Dox
37372f8ebb update + fix 2025-06-17 13:02:04 +07:00
Para Dox
a38f2c68cd fix the beacon upstreams 2025-06-17 11:13:02 +07:00
Para Dox
e843ac2fb7 lets try without cache 2025-06-16 18:38:49 +07:00
Para Dox
5a8ec581b2 higher returndatalimit 2025-06-16 17:52:25 +07:00
Para Dox
e54c417deb besu on eth 2025-06-16 17:27:29 +07:00
Para Dox
6c63b34a20 compress grafana 2025-06-15 20:53:57 +07:00
Para Dox
0f546890ef testnet is networkid 2025-06-15 20:01:06 +07:00
Para Dox
4369e3d96c testnet is networkid 2025-06-15 19:54:50 +07:00
Para Dox
81978d477d don't mess with home 2025-06-15 12:39:33 +07:00
Para Dox
26ce9f952f somehow those options have not been enabled 2025-06-15 12:36:08 +07:00
Para Dox
83be6078c2 node sync enforced 2025-06-15 12:13:23 +07:00
Para Dox
c40dcd4e11 update 2025-06-14 14:41:33 +07:00
Para Dox
a166b5ecfb update 2025-06-14 14:40:30 +07:00
Para Dox
a28d17bcf4 build sonic for real 2025-06-14 14:14:56 +07:00
squidbear
6b89e0318e moar 2025-06-14 08:42:34 +02:00
squidbear
9b619cb611 add monitoring 2025-06-14 08:35:27 +02:00
Para Dox
650924976f allow dshackle to connect to the host 2025-06-14 13:25:48 +07:00
Para Dox
e467904304 patch sonic (properly) 2025-06-14 13:20:29 +07:00
Para Dox
7bbc5eecb9 patch sonic (properly) 2025-06-14 13:14:17 +07:00
Para Dox
8986887888 patch sonic 2025-06-14 13:00:02 +07:00
Para Dox
4b83e6c7ef need to patch sonic 2025-06-14 12:58:22 +07:00
Para Dox
608191b995 fix variable 2025-06-12 20:19:59 +07:00
Para Dox
ec8c059640 fix toml 2025-06-12 15:30:26 +07:00
Para Dox
5ee3d84647 allow prom 2025-06-12 15:20:44 +07:00
Para Dox
35289ed90e remove pruning from config 2025-06-11 19:13:59 +07:00
Para Dox
b06ef4db7b remove pruning from config 2025-06-11 18:56:07 +07:00
Para Dox
cb3c7bc28e update 2025-06-10 13:04:45 +07:00
Para Dox
e18ef7a1ea update 2025-06-08 14:55:07 +07:00
Para Dox
9d7e701a89 update scroll 2025-06-06 15:26:07 +07:00
Para Dox
37721b64d1 updates 2025-06-05 14:31:23 +07:00
Para Dox
747a387ef8 updates 2025-06-05 14:27:00 +07:00
Para Dox
31b175c61a update 2025-06-04 16:32:38 +07:00
Para Dox
577ce53232 lets besu 2025-06-04 11:16:03 +07:00
Para Dox
a0791ccea6 fix 2025-06-03 22:48:20 +07:00
Para Dox
220db93c1c ?? 2025-06-03 20:46:17 +07:00
Para Dox
f28baca470 ?? 2025-06-03 20:42:51 +07:00
Para Dox
48f0ea5c0a ficx 2025-06-03 20:36:55 +07:00
Para Dox
fcd7b58ff8 fix 2025-06-03 20:31:50 +07:00
Para Dox
2531d8d36f fix 2025-06-03 20:29:52 +07:00
Para Dox
429881f3ba fix 2025-06-03 20:28:28 +07:00
Para Dox
c8b36cf375 fix 2025-06-03 20:23:11 +07:00
Para Dox
ce21871e30 fix 2025-06-03 20:17:30 +07:00
Para Dox
25995cbca0 fix 2025-06-03 20:15:06 +07:00
Para Dox
aae606a794 berachain revival 2025-06-03 20:11:35 +07:00
Para Dox
9cdc73b298 feature not bug 2025-06-02 02:02:02 +07:00
Para Dox
a610057600 persistent connections 2025-06-02 01:42:30 +07:00
Para Dox
eb50b33aa3 persistent connections 2025-06-02 01:37:09 +07:00
Para Dox
6f830e77cd measure time so detailed 2025-06-02 01:19:11 +07:00
Para Dox
9b4988d58a measure nanoseconds 2025-06-02 01:04:21 +07:00
Para Dox
8b75dd9bd7 measure nanoseconds 2025-06-02 01:02:19 +07:00
Para Dox
9ef4a1f02d ignore latency mismatches 2025-06-02 00:28:18 +07:00
Para Dox
1d11e27cda sonot duplicate sendTx 2025-06-02 00:26:35 +07:00
Para Dox
3d13e30a5a streaming is back 2025-06-01 22:20:37 +07:00
Para Dox
338eaa3da6 no more streaming 2025-06-01 22:17:28 +07:00
Para Dox
061671bcc3 no more streaming 2025-06-01 22:11:07 +07:00
Para Dox
40d5ad9750 no more streaming 2025-06-01 22:00:33 +07:00
Para Dox
e046526ce9 no more streaming 2025-06-01 21:56:27 +07:00
Para Dox
a454a57ff9 no more streaming 2025-06-01 21:32:56 +07:00
Para Dox
d8659d1040 no more streaming 2025-06-01 21:27:51 +07:00
Para Dox
46ede89ece more debug 2025-06-01 21:23:09 +07:00
Para Dox
f826f6d2c3 more debug 2025-06-01 21:19:48 +07:00
Para Dox
2388b23daa more debug 2025-06-01 21:15:38 +07:00
Para Dox
d07c317d02 more debug 2025-06-01 21:13:34 +07:00
Para Dox
ac4b83fd44 do gzip 2025-06-01 21:08:00 +07:00
Para Dox
cef8eff6f5 tackle client disconnects 2025-06-01 21:03:11 +07:00
Para Dox
8ac43fdbac log primary and secondary responses 2025-06-01 20:59:56 +07:00
Para Dox
fcdee01608 better error handling 2025-06-01 20:54:54 +07:00
Para Dox
c37c53f4f9 better error handling 2025-06-01 20:45:46 +07:00
Para Dox
7f97cfe09a better error handling 2025-06-01 20:32:27 +07:00
Para Dox
55ab8cbd51 better error handling 2025-06-01 20:22:12 +07:00
Para Dox
62928caa7a new toy 2025-06-01 19:45:38 +07:00
Para Dox
367a1890e8 fix the issue 2025-06-01 18:16:47 +07:00
Para Dox
542aa60b23 fix the issue 2025-06-01 18:08:55 +07:00
Para Dox
f6b2aa2206 fix the issue 2025-06-01 18:03:51 +07:00
Para Dox
39eed22e98 fix the issue 2025-06-01 17:51:33 +07:00
Para Dox
6eb5518a2d whitelist methods 2025-06-01 15:42:45 +07:00
Para Dox
6858e94734 tx hash queries to primary 2025-05-31 22:31:28 +07:00
Para Dox
82e094faf8 better logging 2025-05-31 22:03:43 +07:00
Para Dox
6a10227e87 track block hashes 2025-05-31 21:59:47 +07:00
Para Dox
502f01a301 log every erro 2025-05-31 21:41:24 +07:00
Para Dox
7ab01cd5dd op-reth kaputt 2025-05-31 16:37:15 +07:00
Para Dox
f2b2643c5f new target 2025-05-31 00:49:39 +07:00
Para Dox
7f99a93745 do the test at home 2025-05-30 13:44:09 +07:00
Para Dox
22273b1951 base reth toml file 2025-05-30 11:02:19 +07:00
Para Dox
ac39985f03 base reth toml file 2025-05-30 10:58:47 +07:00
Para Dox
91109e7a94 base sync fix 2025-05-30 10:26:20 +07:00
Para Dox
7b129c628b base sync fix 2025-05-30 10:11:31 +07:00
Para Dox
368db703c4 block tags also for getLogs and handing non-standard methods 2025-05-30 09:34:58 +07:00
Para Dox
c02c7468a8 rigid block tag routing 2025-05-30 08:55:42 +07:00
Para Dox
99bc61a018 blub 2025-05-30 00:58:01 +07:00
Para Dox
7aa2439a42 better 2025-05-29 23:41:56 +07:00
Para Dox
24e1a430eb better 2025-05-29 22:18:32 +07:00
Para Dox
382db5bee1 opus fixes this 2025-05-29 21:35:22 +07:00
487 changed files with 96210 additions and 84661 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -29,8 +29,8 @@ x-logging-defaults: &logging-defaults
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' # --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services: services:
abstract-mainnet-archive-client: abstract-mainnet-archive:
image: ${ABSTRACT_EXTERNAL_NODE_IMAGE:-matterlabs/external-node}:${ABSTRACT_MAINNET_EXTERNAL_NODE_VERSION:-v27.5.7} image: ${ABSTRACT_EXTERNAL_NODE_IMAGE:-matterlabs/external-node}:${ABSTRACT_MAINNET_EXTERNAL_NODE_VERSION:-v29.1.2}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -61,7 +61,7 @@ services:
- EN_L1_CHAIN_ID=1 - EN_L1_CHAIN_ID=1
- EN_L2_CHAIN_ID=2741 - EN_L2_CHAIN_ID=2741
- EN_MAIN_NODE_URL=https://api.mainnet.abs.xyz - EN_MAIN_NODE_URL=https://api.mainnet.abs.xyz
- EN_MAX_RESPONSE_BODY_SIZE_MB=30 - EN_MAX_RESPONSE_BODY_SIZE_MB=25
- EN_MAX_RESPONSE_BODY_SIZE_OVERRIDES_MB=eth_getLogs=100,eth_getBlockReceipts=None - EN_MAX_RESPONSE_BODY_SIZE_OVERRIDES_MB=eth_getLogs=100,eth_getBlockReceipts=None
- EN_MERKLE_TREE_PATH=./db/ext-node/lightweight - EN_MERKLE_TREE_PATH=./db/ext-node/lightweight
- EN_PROMETHEUS_PORT=3322 - EN_PROMETHEUS_PORT=3322
@@ -83,35 +83,24 @@ services:
logging: *logging-defaults logging: *logging-defaults
labels: labels:
- prometheus-scrape.enabled=false - prometheus-scrape.enabled=false
abstract-mainnet-archive:
image: nginx
expose:
- '80'
environment:
PROXY_HOST: abstract-mainnet-archive-client
RPC_PATH: ''
RPC_PORT: 8545
WS_PATH: ''
WS_PORT: 8546
restart: unless-stopped
depends_on:
- abstract-mainnet-archive-client
networks:
- chains
volumes:
- ./nginx-proxy:/etc/nginx/templates
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
- traefik.enable=true - traefik.enable=true
- traefik.http.middlewares.abstract-mainnet-external-node-archive-stripprefix.stripprefix.prefixes=/abstract-mainnet-archive - traefik.http.middlewares.abstract-mainnet-external-node-archive-stripprefix.stripprefix.prefixes=/abstract-mainnet-archive
- traefik.http.services.abstract-mainnet-external-node-archive.loadbalancer.server.port=80 - traefik.http.services.abstract-mainnet-external-node-archive.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.abstract-mainnet-external-node-archive.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.abstract-mainnet-external-node-archive.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.abstract-mainnet-external-node-archive.tls.certresolver=myresolver} - ${NO_SSL:-traefik.http.routers.abstract-mainnet-external-node-archive.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.abstract-mainnet-external-node-archive.rule=Host(`$DOMAIN`) && (Path(`/abstract-mainnet-archive`) || Path(`/abstract-mainnet-archive/`))} - ${NO_SSL:-traefik.http.routers.abstract-mainnet-external-node-archive.rule=Host(`$DOMAIN`) && (Path(`/abstract-mainnet-archive`) || Path(`/abstract-mainnet-archive/`))}
- ${NO_SSL:+traefik.http.routers.abstract-mainnet-external-node-archive.rule=Path(`/abstract-mainnet-archive`) || Path(`/abstract-mainnet-archive/`)} - ${NO_SSL:+traefik.http.routers.abstract-mainnet-external-node-archive.rule=Path(`/abstract-mainnet-archive`) || Path(`/abstract-mainnet-archive/`)}
- traefik.http.routers.abstract-mainnet-external-node-archive.middlewares=abstract-mainnet-external-node-archive-stripprefix, ipallowlist - traefik.http.routers.abstract-mainnet-external-node-archive.middlewares=abstract-mainnet-external-node-archive-stripprefix, ipallowlist
- traefik.http.routers.abstract-mainnet-external-node-archive.priority=50 # gets any request that is not GET with UPGRADE header
- traefik.http.routers.abstract-mainnet-external-node-archive-ws.priority=100 # answers GET requests first
- traefik.http.services.abstract-mainnet-external-node-archive-ws.loadbalancer.server.port=8546
- traefik.http.routers.abstract-mainnet-external-node-archive-ws.service=abstract-mainnet-external-node-archive-ws
- traefik.http.routers.abstract-mainnet-external-node-archive.service=abstract-mainnet-external-node-archive
- ${NO_SSL:-traefik.http.routers.abstract-mainnet-external-node-archive-ws.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.abstract-mainnet-external-node-archive-ws.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.abstract-mainnet-external-node-archive-ws.rule=Host(`$DOMAIN`) && (Path(`/abstract-mainnet-archive`) || Path(`/abstract-mainnet-archive/`)) && Headers(`Upgrade`, `websocket`)}
- ${NO_SSL:+traefik.http.routers.abstract-mainnet-external-node-archive-ws.rule=(Path(`/abstract-mainnet-archive`) || Path(`/abstract-mainnet-archive/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.abstract-mainnet-external-node-archive-ws.middlewares=abstract-mainnet-external-node-archive-stripprefix, ipallowlist
abstract-mainnet-archive-db: abstract-mainnet-archive-db:
image: postgres:14 image: postgres:14

View File

@@ -29,8 +29,8 @@ x-logging-defaults: &logging-defaults
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' # --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services: services:
abstract-mainnet-client: abstract-mainnet:
image: ${ABSTRACT_EXTERNAL_NODE_IMAGE:-matterlabs/external-node}:${ABSTRACT_MAINNET_EXTERNAL_NODE_VERSION:-v27.5.7} image: ${ABSTRACT_EXTERNAL_NODE_IMAGE:-matterlabs/external-node}:${ABSTRACT_MAINNET_EXTERNAL_NODE_VERSION:-v29.1.2}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -61,7 +61,7 @@ services:
- EN_L1_CHAIN_ID=1 - EN_L1_CHAIN_ID=1
- EN_L2_CHAIN_ID=2741 - EN_L2_CHAIN_ID=2741
- EN_MAIN_NODE_URL=https://api.mainnet.abs.xyz - EN_MAIN_NODE_URL=https://api.mainnet.abs.xyz
- EN_MAX_RESPONSE_BODY_SIZE_MB=30 - EN_MAX_RESPONSE_BODY_SIZE_MB=25
- EN_MAX_RESPONSE_BODY_SIZE_OVERRIDES_MB=eth_getLogs=100,eth_getBlockReceipts=None - EN_MAX_RESPONSE_BODY_SIZE_OVERRIDES_MB=eth_getLogs=100,eth_getBlockReceipts=None
- EN_MERKLE_TREE_PATH=./db/ext-node/lightweight - EN_MERKLE_TREE_PATH=./db/ext-node/lightweight
- EN_PROMETHEUS_PORT=3322 - EN_PROMETHEUS_PORT=3322
@@ -83,35 +83,24 @@ services:
logging: *logging-defaults logging: *logging-defaults
labels: labels:
- prometheus-scrape.enabled=false - prometheus-scrape.enabled=false
abstract-mainnet:
image: nginx
expose:
- '80'
environment:
PROXY_HOST: abstract-mainnet-client
RPC_PATH: ''
RPC_PORT: 8545
WS_PATH: ''
WS_PORT: 8546
restart: unless-stopped
depends_on:
- abstract-mainnet-client
networks:
- chains
volumes:
- ./nginx-proxy:/etc/nginx/templates
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
- traefik.enable=true - traefik.enable=true
- traefik.http.middlewares.abstract-mainnet-external-node-pruned-stripprefix.stripprefix.prefixes=/abstract-mainnet - traefik.http.middlewares.abstract-mainnet-external-node-pruned-stripprefix.stripprefix.prefixes=/abstract-mainnet
- traefik.http.services.abstract-mainnet-external-node-pruned.loadbalancer.server.port=80 - traefik.http.services.abstract-mainnet-external-node-pruned.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.abstract-mainnet-external-node-pruned.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.abstract-mainnet-external-node-pruned.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.abstract-mainnet-external-node-pruned.tls.certresolver=myresolver} - ${NO_SSL:-traefik.http.routers.abstract-mainnet-external-node-pruned.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.abstract-mainnet-external-node-pruned.rule=Host(`$DOMAIN`) && (Path(`/abstract-mainnet`) || Path(`/abstract-mainnet/`))} - ${NO_SSL:-traefik.http.routers.abstract-mainnet-external-node-pruned.rule=Host(`$DOMAIN`) && (Path(`/abstract-mainnet`) || Path(`/abstract-mainnet/`))}
- ${NO_SSL:+traefik.http.routers.abstract-mainnet-external-node-pruned.rule=Path(`/abstract-mainnet`) || Path(`/abstract-mainnet/`)} - ${NO_SSL:+traefik.http.routers.abstract-mainnet-external-node-pruned.rule=Path(`/abstract-mainnet`) || Path(`/abstract-mainnet/`)}
- traefik.http.routers.abstract-mainnet-external-node-pruned.middlewares=abstract-mainnet-external-node-pruned-stripprefix, ipallowlist - traefik.http.routers.abstract-mainnet-external-node-pruned.middlewares=abstract-mainnet-external-node-pruned-stripprefix, ipallowlist
- traefik.http.routers.abstract-mainnet-external-node-pruned.priority=50 # gets any request that is not GET with UPGRADE header
- traefik.http.routers.abstract-mainnet-external-node-pruned-ws.priority=100 # answers GET requests first
- traefik.http.services.abstract-mainnet-external-node-pruned-ws.loadbalancer.server.port=8546
- traefik.http.routers.abstract-mainnet-external-node-pruned-ws.service=abstract-mainnet-external-node-pruned-ws
- traefik.http.routers.abstract-mainnet-external-node-pruned.service=abstract-mainnet-external-node-pruned
- ${NO_SSL:-traefik.http.routers.abstract-mainnet-external-node-pruned-ws.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.abstract-mainnet-external-node-pruned-ws.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.abstract-mainnet-external-node-pruned-ws.rule=Host(`$DOMAIN`) && (Path(`/abstract-mainnet`) || Path(`/abstract-mainnet/`)) && Headers(`Upgrade`, `websocket`)}
- ${NO_SSL:+traefik.http.routers.abstract-mainnet-external-node-pruned-ws.rule=(Path(`/abstract-mainnet`) || Path(`/abstract-mainnet/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.abstract-mainnet-external-node-pruned-ws.middlewares=abstract-mainnet-external-node-pruned-stripprefix, ipallowlist
abstract-mainnet-db: abstract-mainnet-db:
image: postgres:14 image: postgres:14

View File

@@ -29,8 +29,8 @@ x-logging-defaults: &logging-defaults
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' # --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services: services:
abstract-testnet-archive-client: abstract-testnet-archive:
image: ${ABSTRACT_EXTERNAL_NODE_IMAGE:-matterlabs/external-node}:${ABSTRACT_TESTNET_EXTERNAL_NODE_VERSION:-v28.2.1} image: ${ABSTRACT_EXTERNAL_NODE_IMAGE:-matterlabs/external-node}:${ABSTRACT_TESTNET_EXTERNAL_NODE_VERSION:-v29.1.2}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -61,7 +61,7 @@ services:
- EN_L1_CHAIN_ID=11155111 - EN_L1_CHAIN_ID=11155111
- EN_L2_CHAIN_ID=11124 - EN_L2_CHAIN_ID=11124
- EN_MAIN_NODE_URL=https://api.testnet.abs.xyz - EN_MAIN_NODE_URL=https://api.testnet.abs.xyz
- EN_MAX_RESPONSE_BODY_SIZE_MB=30 - EN_MAX_RESPONSE_BODY_SIZE_MB=25
- EN_MAX_RESPONSE_BODY_SIZE_OVERRIDES_MB=eth_getLogs=100,eth_getBlockReceipts=None - EN_MAX_RESPONSE_BODY_SIZE_OVERRIDES_MB=eth_getLogs=100,eth_getBlockReceipts=None
- EN_MERKLE_TREE_PATH=./db/ext-node/lightweight - EN_MERKLE_TREE_PATH=./db/ext-node/lightweight
- EN_PROMETHEUS_PORT=3322 - EN_PROMETHEUS_PORT=3322
@@ -83,35 +83,24 @@ services:
logging: *logging-defaults logging: *logging-defaults
labels: labels:
- prometheus-scrape.enabled=false - prometheus-scrape.enabled=false
abstract-testnet-archive:
image: nginx
expose:
- '80'
environment:
PROXY_HOST: abstract-testnet-archive-client
RPC_PATH: ''
RPC_PORT: 8545
WS_PATH: ''
WS_PORT: 8546
restart: unless-stopped
depends_on:
- abstract-testnet-archive-client
networks:
- chains
volumes:
- ./nginx-proxy:/etc/nginx/templates
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
- traefik.enable=true - traefik.enable=true
- traefik.http.middlewares.abstract-testnet-external-node-archive-stripprefix.stripprefix.prefixes=/abstract-testnet-archive - traefik.http.middlewares.abstract-testnet-external-node-archive-stripprefix.stripprefix.prefixes=/abstract-testnet-archive
- traefik.http.services.abstract-testnet-external-node-archive.loadbalancer.server.port=80 - traefik.http.services.abstract-testnet-external-node-archive.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.abstract-testnet-external-node-archive.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.abstract-testnet-external-node-archive.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.abstract-testnet-external-node-archive.tls.certresolver=myresolver} - ${NO_SSL:-traefik.http.routers.abstract-testnet-external-node-archive.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.abstract-testnet-external-node-archive.rule=Host(`$DOMAIN`) && (Path(`/abstract-testnet-archive`) || Path(`/abstract-testnet-archive/`))} - ${NO_SSL:-traefik.http.routers.abstract-testnet-external-node-archive.rule=Host(`$DOMAIN`) && (Path(`/abstract-testnet-archive`) || Path(`/abstract-testnet-archive/`))}
- ${NO_SSL:+traefik.http.routers.abstract-testnet-external-node-archive.rule=Path(`/abstract-testnet-archive`) || Path(`/abstract-testnet-archive/`)} - ${NO_SSL:+traefik.http.routers.abstract-testnet-external-node-archive.rule=Path(`/abstract-testnet-archive`) || Path(`/abstract-testnet-archive/`)}
- traefik.http.routers.abstract-testnet-external-node-archive.middlewares=abstract-testnet-external-node-archive-stripprefix, ipallowlist - traefik.http.routers.abstract-testnet-external-node-archive.middlewares=abstract-testnet-external-node-archive-stripprefix, ipallowlist
- traefik.http.routers.abstract-testnet-external-node-archive.priority=50 # gets any request that is not GET with UPGRADE header
- traefik.http.routers.abstract-testnet-external-node-archive-ws.priority=100 # answers GET requests first
- traefik.http.services.abstract-testnet-external-node-archive-ws.loadbalancer.server.port=8546
- traefik.http.routers.abstract-testnet-external-node-archive-ws.service=abstract-testnet-external-node-archive-ws
- traefik.http.routers.abstract-testnet-external-node-archive.service=abstract-testnet-external-node-archive
- ${NO_SSL:-traefik.http.routers.abstract-testnet-external-node-archive-ws.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.abstract-testnet-external-node-archive-ws.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.abstract-testnet-external-node-archive-ws.rule=Host(`$DOMAIN`) && (Path(`/abstract-testnet-archive`) || Path(`/abstract-testnet-archive/`)) && Headers(`Upgrade`, `websocket`)}
- ${NO_SSL:+traefik.http.routers.abstract-testnet-external-node-archive-ws.rule=(Path(`/abstract-testnet-archive`) || Path(`/abstract-testnet-archive/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.abstract-testnet-external-node-archive-ws.middlewares=abstract-testnet-external-node-archive-stripprefix, ipallowlist
abstract-testnet-archive-db: abstract-testnet-archive-db:
image: postgres:14 image: postgres:14

View File

@@ -29,8 +29,8 @@ x-logging-defaults: &logging-defaults
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' # --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services: services:
abstract-testnet-client: abstract-testnet:
image: ${ABSTRACT_EXTERNAL_NODE_IMAGE:-matterlabs/external-node}:${ABSTRACT_TESTNET_EXTERNAL_NODE_VERSION:-v28.2.1} image: ${ABSTRACT_EXTERNAL_NODE_IMAGE:-matterlabs/external-node}:${ABSTRACT_TESTNET_EXTERNAL_NODE_VERSION:-v29.1.2}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -61,7 +61,7 @@ services:
- EN_L1_CHAIN_ID=11155111 - EN_L1_CHAIN_ID=11155111
- EN_L2_CHAIN_ID=11124 - EN_L2_CHAIN_ID=11124
- EN_MAIN_NODE_URL=https://api.testnet.abs.xyz - EN_MAIN_NODE_URL=https://api.testnet.abs.xyz
- EN_MAX_RESPONSE_BODY_SIZE_MB=30 - EN_MAX_RESPONSE_BODY_SIZE_MB=25
- EN_MAX_RESPONSE_BODY_SIZE_OVERRIDES_MB=eth_getLogs=100,eth_getBlockReceipts=None - EN_MAX_RESPONSE_BODY_SIZE_OVERRIDES_MB=eth_getLogs=100,eth_getBlockReceipts=None
- EN_MERKLE_TREE_PATH=./db/ext-node/lightweight - EN_MERKLE_TREE_PATH=./db/ext-node/lightweight
- EN_PROMETHEUS_PORT=3322 - EN_PROMETHEUS_PORT=3322
@@ -83,35 +83,24 @@ services:
logging: *logging-defaults logging: *logging-defaults
labels: labels:
- prometheus-scrape.enabled=false - prometheus-scrape.enabled=false
abstract-testnet:
image: nginx
expose:
- '80'
environment:
PROXY_HOST: abstract-testnet-client
RPC_PATH: ''
RPC_PORT: 8545
WS_PATH: ''
WS_PORT: 8546
restart: unless-stopped
depends_on:
- abstract-testnet-client
networks:
- chains
volumes:
- ./nginx-proxy:/etc/nginx/templates
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
- traefik.enable=true - traefik.enable=true
- traefik.http.middlewares.abstract-testnet-external-node-pruned-stripprefix.stripprefix.prefixes=/abstract-testnet - traefik.http.middlewares.abstract-testnet-external-node-pruned-stripprefix.stripprefix.prefixes=/abstract-testnet
- traefik.http.services.abstract-testnet-external-node-pruned.loadbalancer.server.port=80 - traefik.http.services.abstract-testnet-external-node-pruned.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.abstract-testnet-external-node-pruned.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.abstract-testnet-external-node-pruned.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.abstract-testnet-external-node-pruned.tls.certresolver=myresolver} - ${NO_SSL:-traefik.http.routers.abstract-testnet-external-node-pruned.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.abstract-testnet-external-node-pruned.rule=Host(`$DOMAIN`) && (Path(`/abstract-testnet`) || Path(`/abstract-testnet/`))} - ${NO_SSL:-traefik.http.routers.abstract-testnet-external-node-pruned.rule=Host(`$DOMAIN`) && (Path(`/abstract-testnet`) || Path(`/abstract-testnet/`))}
- ${NO_SSL:+traefik.http.routers.abstract-testnet-external-node-pruned.rule=Path(`/abstract-testnet`) || Path(`/abstract-testnet/`)} - ${NO_SSL:+traefik.http.routers.abstract-testnet-external-node-pruned.rule=Path(`/abstract-testnet`) || Path(`/abstract-testnet/`)}
- traefik.http.routers.abstract-testnet-external-node-pruned.middlewares=abstract-testnet-external-node-pruned-stripprefix, ipallowlist - traefik.http.routers.abstract-testnet-external-node-pruned.middlewares=abstract-testnet-external-node-pruned-stripprefix, ipallowlist
- traefik.http.routers.abstract-testnet-external-node-pruned.priority=50 # gets any request that is not GET with UPGRADE header
- traefik.http.routers.abstract-testnet-external-node-pruned-ws.priority=100 # answers GET requests first
- traefik.http.services.abstract-testnet-external-node-pruned-ws.loadbalancer.server.port=8546
- traefik.http.routers.abstract-testnet-external-node-pruned-ws.service=abstract-testnet-external-node-pruned-ws
- traefik.http.routers.abstract-testnet-external-node-pruned.service=abstract-testnet-external-node-pruned
- ${NO_SSL:-traefik.http.routers.abstract-testnet-external-node-pruned-ws.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.abstract-testnet-external-node-pruned-ws.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.abstract-testnet-external-node-pruned-ws.rule=Host(`$DOMAIN`) && (Path(`/abstract-testnet`) || Path(`/abstract-testnet/`)) && Headers(`Upgrade`, `websocket`)}
- ${NO_SSL:+traefik.http.routers.abstract-testnet-external-node-pruned-ws.rule=(Path(`/abstract-testnet`) || Path(`/abstract-testnet/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.abstract-testnet-external-node-pruned-ws.middlewares=abstract-testnet-external-node-pruned-stripprefix, ipallowlist
abstract-testnet-db: abstract-testnet-db:
image: postgres:14 image: postgres:14

View File

@@ -0,0 +1,166 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# Usage:
#
# mkdir rpc && cd rpc
#
# git init
# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git
# git fetch origin vibe
# git checkout origin/vibe
#
# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret
#
# env
# ...
# IP=$(curl ipinfo.io/ip)
# DOMAIN=${IP}.traefik.me
# COMPOSE_FILE=base.yml:rpc.yml:arb/nitro-erigon/arbitrum-sepolia-nitro-erigon-archive-trace.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/arbitrum-sepolia-nitro-erigon-archive \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
arbitrum-sepolia-nitro-erigon-archive:
image: ${ARBITRUM_NITRO_ERIGON_IMAGE:-erigontech/nitro-erigon}:${ARBITRUM_SEPOLIA_NITRO_ERIGON_VERSION:-main-1a9771c}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
net.core.somaxconn: 32768 # Higher connection queue
# Memory/Connection Management
# net.core.netdev_max_backlog: 50000 # Increase network buffer
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
memlock: -1 # Disable memory locking limits (for in-memory DBs like MDBX)
user: root
ports:
- 11387:11387
- 11387:11387/udp
- 31387:31387
- 31387:31387/udp
- 36387:36387
- 36387:36387/udp
expose:
- 8545
entrypoint: [erigon]
command:
- --chain=arb-sepolia
- --datadir=/root/.local/share/erigon
- --http
- --http.addr=0.0.0.0
- --http.api=eth,erigon,web3,net,debug,trace,txpool,admin,ots
- --http.port=8545
- --http.vhosts=*
- --l2rpc=${ARBITRUM_SEPOLIA_EXECUTION_RPC}
- --maxpeers=50
- --metrics
- --metrics.addr=0.0.0.0
- --metrics.port=6060
- --nat=extip:${IP}
- --p2p.allowed-ports=31387
- --p2p.allowed-ports=36387
- --port=11387
- --prune.mode=archive
- --rpc.evmtimeout=${ARBITRUM_SEPOLIA_NITRO_ERIGON_ARCHIVE_TRACE_EVMTIMEOUT:-5m0s}
- --rpc.gascap=6000000000
- --rpc.overlay.getlogstimeout=${ARBITRUM_SEPOLIA_NITRO_ERIGON_ARCHIVE_TRACE_GETLOGSTIMEOUT:-5m0s}
- --rpc.overlay.replayblocktimeout=${ARBITRUM_SEPOLIA_NITRO_ERIGON_ARCHIVE_TRACE_REPLAYBLOCKTIMEOUT:-10s}
- --rpc.returndata.limit=10000000
- --sync.loop.block.limit=100000
- --torrent.port=26387
- --ws
- --ws.port=8545
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${ARBITRUM_SEPOLIA_NITRO_ERIGON_ARCHIVE_TRACE_DATA:-arbitrum-sepolia-nitro-erigon-archive-trace}:/root/.local/share/erigon
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=6060
- prometheus-scrape.path=/debug/metrics/prometheus
- traefik.enable=true
- traefik.http.middlewares.arbitrum-sepolia-nitro-erigon-archive-trace-stripprefix.stripprefix.prefixes=/arbitrum-sepolia-nitro-erigon-archive
- traefik.http.services.arbitrum-sepolia-nitro-erigon-archive-trace.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.arbitrum-sepolia-nitro-erigon-archive-trace.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.arbitrum-sepolia-nitro-erigon-archive-trace.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.arbitrum-sepolia-nitro-erigon-archive-trace.rule=Host(`$DOMAIN`) && (Path(`/arbitrum-sepolia-nitro-erigon-archive`) || Path(`/arbitrum-sepolia-nitro-erigon-archive/`))}
- ${NO_SSL:+traefik.http.routers.arbitrum-sepolia-nitro-erigon-archive-trace.rule=Path(`/arbitrum-sepolia-nitro-erigon-archive`) || Path(`/arbitrum-sepolia-nitro-erigon-archive/`)}
- traefik.http.routers.arbitrum-sepolia-nitro-erigon-archive-trace.middlewares=arbitrum-sepolia-nitro-erigon-archive-trace-stripprefix, ipallowlist
shm_size: 2gb
volumes:
arbitrum-sepolia-nitro-erigon-archive-trace:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: arbitrum-sepolia
method-groups:
enabled:
- debug
- filter
- trace
methods:
disabled:
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
# standard geth and erigon
- name: debug_accountRange
- name: debug_getModifiedAccountsByNumber
- name: debug_getModifiedAccountsByHash
# non standard geth and erigon
- name: eth_getRawTransactionByHash
- name: eth_getRawTransactionByBlockHashAndIndex
# non standard erigon only
- name: eth_getBlockReceipts
- name: eth_protocolVersion
- name: eth_callMany
- name: eth_callBundle
- name: debug_accountAt
- name: debug_traceCallMany
- name: erigon_getHeaderByHash
- name: erigon_getBlockReceiptsByBlockHash
- name: erigon_getHeaderByNumber
- name: erigon_getLogsByHash
- name: erigon_forks
- name: erigon_getBlockByTimestamp
- name: erigon_BlockNumber
- name: erigon_getLatestLogs
- name: ots_getInternalOperations
- name: ots_hasCode
- name: ots_getTransactionError
- name: ots_traceTransaction
- name: ots_getBlockDetails
- name: ots_getBlockDetailsByHash
- name: ots_getBlockTransactions
- name: ots_searchTransactionsBefore
- name: ots_searchTransactionsAfter
- name: ots_getTransactionBySenderAndNonce
- name: ots_getContractCreator
...

View File

@@ -0,0 +1,167 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# Usage:
#
# mkdir rpc && cd rpc
#
# git init
# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git
# git fetch origin vibe
# git checkout origin/vibe
#
# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret
#
# env
# ...
# IP=$(curl ipinfo.io/ip)
# DOMAIN=${IP}.traefik.me
# COMPOSE_FILE=base.yml:rpc.yml:arb/nitro-erigon/arbitrum-sepolia-nitro-erigon-minimal-trace.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/arbitrum-sepolia-nitro-erigon-minimal \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
arbitrum-sepolia-nitro-erigon-minimal:
image: ${ARBITRUM_NITRO_ERIGON_IMAGE:-erigontech/nitro-erigon}:${ARBITRUM_SEPOLIA_NITRO_ERIGON_VERSION:-main-1a9771c}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
net.core.somaxconn: 32768 # Higher connection queue
# Memory/Connection Management
# net.core.netdev_max_backlog: 50000 # Increase network buffer
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
memlock: -1 # Disable memory locking limits (for in-memory DBs like MDBX)
user: root
ports:
- 12072:12072
- 12072:12072/udp
- 32072:32072
- 32072:32072/udp
- 37072:37072
- 37072:37072/udp
expose:
- 8545
entrypoint: [erigon]
command:
- --chain=arb-sepolia
- --datadir=/root/.local/share/erigon
- --http
- --http.addr=0.0.0.0
- --http.api=eth,erigon,web3,net,debug,trace,txpool,admin,ots
- --http.port=8545
- --http.vhosts=*
- --l2rpc=${ARBITRUM_SEPOLIA_EXECUTION_RPC}
- --maxpeers=50
- --metrics
- --metrics.addr=0.0.0.0
- --metrics.port=6060
- --nat=extip:${IP}
- --p2p.allowed-ports=32072
- --p2p.allowed-ports=37072
- --persist.receipts=false
- --port=12072
- --prune.mode=minimal
- --rpc.evmtimeout=${ARBITRUM_SEPOLIA_NITRO_ERIGON_MINIMAL_TRACE_EVMTIMEOUT:-5m0s}
- --rpc.gascap=6000000000
- --rpc.overlay.getlogstimeout=${ARBITRUM_SEPOLIA_NITRO_ERIGON_MINIMAL_TRACE_GETLOGSTIMEOUT:-5m0s}
- --rpc.overlay.replayblocktimeout=${ARBITRUM_SEPOLIA_NITRO_ERIGON_MINIMAL_TRACE_REPLAYBLOCKTIMEOUT:-10s}
- --rpc.returndata.limit=10000000
- --sync.loop.block.limit=100000
- --torrent.port=27072
- --ws
- --ws.port=8545
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${ARBITRUM_SEPOLIA_NITRO_ERIGON_MINIMAL_TRACE_DATA:-arbitrum-sepolia-nitro-erigon-minimal-trace}:/root/.local/share/erigon
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=6060
- prometheus-scrape.path=/debug/metrics/prometheus
- traefik.enable=true
- traefik.http.middlewares.arbitrum-sepolia-nitro-erigon-minimal-trace-stripprefix.stripprefix.prefixes=/arbitrum-sepolia-nitro-erigon-minimal
- traefik.http.services.arbitrum-sepolia-nitro-erigon-minimal-trace.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.arbitrum-sepolia-nitro-erigon-minimal-trace.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.arbitrum-sepolia-nitro-erigon-minimal-trace.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.arbitrum-sepolia-nitro-erigon-minimal-trace.rule=Host(`$DOMAIN`) && (Path(`/arbitrum-sepolia-nitro-erigon-minimal`) || Path(`/arbitrum-sepolia-nitro-erigon-minimal/`))}
- ${NO_SSL:+traefik.http.routers.arbitrum-sepolia-nitro-erigon-minimal-trace.rule=Path(`/arbitrum-sepolia-nitro-erigon-minimal`) || Path(`/arbitrum-sepolia-nitro-erigon-minimal/`)}
- traefik.http.routers.arbitrum-sepolia-nitro-erigon-minimal-trace.middlewares=arbitrum-sepolia-nitro-erigon-minimal-trace-stripprefix, ipallowlist
shm_size: 2gb
volumes:
arbitrum-sepolia-nitro-erigon-minimal-trace:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: arbitrum-sepolia
method-groups:
enabled:
- debug
- filter
- trace
methods:
disabled:
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
# standard geth and erigon
- name: debug_accountRange
- name: debug_getModifiedAccountsByNumber
- name: debug_getModifiedAccountsByHash
# non standard geth and erigon
- name: eth_getRawTransactionByHash
- name: eth_getRawTransactionByBlockHashAndIndex
# non standard erigon only
- name: eth_getBlockReceipts
- name: eth_protocolVersion
- name: eth_callMany
- name: eth_callBundle
- name: debug_accountAt
- name: debug_traceCallMany
- name: erigon_getHeaderByHash
- name: erigon_getBlockReceiptsByBlockHash
- name: erigon_getHeaderByNumber
- name: erigon_getLogsByHash
- name: erigon_forks
- name: erigon_getBlockByTimestamp
- name: erigon_BlockNumber
- name: erigon_getLatestLogs
- name: ots_getInternalOperations
- name: ots_hasCode
- name: ots_getTransactionError
- name: ots_traceTransaction
- name: ots_getBlockDetails
- name: ots_getBlockDetailsByHash
- name: ots_getBlockTransactions
- name: ots_searchTransactionsBefore
- name: ots_searchTransactionsAfter
- name: ots_getTransactionBySenderAndNonce
- name: ots_getContractCreator
...

View File

@@ -0,0 +1,167 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# Usage:
#
# mkdir rpc && cd rpc
#
# git init
# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git
# git fetch origin vibe
# git checkout origin/vibe
#
# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret
#
# env
# ...
# IP=$(curl ipinfo.io/ip)
# DOMAIN=${IP}.traefik.me
# COMPOSE_FILE=base.yml:rpc.yml:arb/nitro-erigon/arbitrum-sepolia-nitro-erigon-pruned-trace.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/arbitrum-sepolia-nitro-erigon \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
arbitrum-sepolia-nitro-erigon:
image: ${ARBITRUM_NITRO_ERIGON_IMAGE:-erigontech/nitro-erigon}:${ARBITRUM_SEPOLIA_NITRO_ERIGON_VERSION:-main-1a9771c}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
net.core.somaxconn: 32768 # Higher connection queue
# Memory/Connection Management
# net.core.netdev_max_backlog: 50000 # Increase network buffer
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
memlock: -1 # Disable memory locking limits (for in-memory DBs like MDBX)
user: root
ports:
- 13369:13369
- 13369:13369/udp
- 33369:33369
- 33369:33369/udp
- 38369:38369
- 38369:38369/udp
expose:
- 8545
entrypoint: [erigon]
command:
- --chain=arb-sepolia
- --datadir=/root/.local/share/erigon
- --http
- --http.addr=0.0.0.0
- --http.api=eth,erigon,web3,net,debug,trace,txpool,admin,ots
- --http.port=8545
- --http.vhosts=*
- --l2rpc=${ARBITRUM_SEPOLIA_EXECUTION_RPC}
- --maxpeers=50
- --metrics
- --metrics.addr=0.0.0.0
- --metrics.port=6060
- --nat=extip:${IP}
- --p2p.allowed-ports=33369
- --p2p.allowed-ports=38369
- --persist.receipts=false
- --port=13369
- --prune.mode=full
- --rpc.evmtimeout=${ARBITRUM_SEPOLIA_NITRO_ERIGON_PRUNED_TRACE_EVMTIMEOUT:-5m0s}
- --rpc.gascap=6000000000
- --rpc.overlay.getlogstimeout=${ARBITRUM_SEPOLIA_NITRO_ERIGON_PRUNED_TRACE_GETLOGSTIMEOUT:-5m0s}
- --rpc.overlay.replayblocktimeout=${ARBITRUM_SEPOLIA_NITRO_ERIGON_PRUNED_TRACE_REPLAYBLOCKTIMEOUT:-10s}
- --rpc.returndata.limit=10000000
- --sync.loop.block.limit=100000
- --torrent.port=28369
- --ws
- --ws.port=8545
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${ARBITRUM_SEPOLIA_NITRO_ERIGON_PRUNED_TRACE_DATA:-arbitrum-sepolia-nitro-erigon-pruned-trace}:/root/.local/share/erigon
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=6060
- prometheus-scrape.path=/debug/metrics/prometheus
- traefik.enable=true
- traefik.http.middlewares.arbitrum-sepolia-nitro-erigon-pruned-trace-stripprefix.stripprefix.prefixes=/arbitrum-sepolia-nitro-erigon
- traefik.http.services.arbitrum-sepolia-nitro-erigon-pruned-trace.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.arbitrum-sepolia-nitro-erigon-pruned-trace.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.arbitrum-sepolia-nitro-erigon-pruned-trace.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.arbitrum-sepolia-nitro-erigon-pruned-trace.rule=Host(`$DOMAIN`) && (Path(`/arbitrum-sepolia-nitro-erigon`) || Path(`/arbitrum-sepolia-nitro-erigon/`))}
- ${NO_SSL:+traefik.http.routers.arbitrum-sepolia-nitro-erigon-pruned-trace.rule=Path(`/arbitrum-sepolia-nitro-erigon`) || Path(`/arbitrum-sepolia-nitro-erigon/`)}
- traefik.http.routers.arbitrum-sepolia-nitro-erigon-pruned-trace.middlewares=arbitrum-sepolia-nitro-erigon-pruned-trace-stripprefix, ipallowlist
shm_size: 2gb
volumes:
arbitrum-sepolia-nitro-erigon-pruned-trace:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: arbitrum-sepolia
method-groups:
enabled:
- debug
- filter
- trace
methods:
disabled:
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
# standard geth and erigon
- name: debug_accountRange
- name: debug_getModifiedAccountsByNumber
- name: debug_getModifiedAccountsByHash
# non standard geth and erigon
- name: eth_getRawTransactionByHash
- name: eth_getRawTransactionByBlockHashAndIndex
# non standard erigon only
- name: eth_getBlockReceipts
- name: eth_protocolVersion
- name: eth_callMany
- name: eth_callBundle
- name: debug_accountAt
- name: debug_traceCallMany
- name: erigon_getHeaderByHash
- name: erigon_getBlockReceiptsByBlockHash
- name: erigon_getHeaderByNumber
- name: erigon_getLogsByHash
- name: erigon_forks
- name: erigon_getBlockByTimestamp
- name: erigon_BlockNumber
- name: erigon_getLatestLogs
- name: ots_getInternalOperations
- name: ots_hasCode
- name: ots_getTransactionError
- name: ots_traceTransaction
- name: ots_getBlockDetails
- name: ots_getBlockDetailsByHash
- name: ots_getBlockTransactions
- name: ots_searchTransactionsBefore
- name: ots_searchTransactionsAfter
- name: ots_getTransactionBySenderAndNonce
- name: ots_getContractCreator
...

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
alephzero-mainnet-archive: alephzero-mainnet-archive:
image: ${ALEPHZERO_NITRO_IMAGE:-offchainlabs/nitro-node}:${ALEPHZERO_MAINNET_NITRO_VERSION:-v3.6.4-28199cd} image: ${ALEPHZERO_NITRO_IMAGE:-offchainlabs/nitro-node}:${ALEPHZERO_MAINNET_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -50,8 +50,13 @@ services:
command: command:
- --conf.file=/config/baseConfig.json - --conf.file=/config/baseConfig.json
- --execution.caching.archive=true - --execution.caching.archive=true
- --execution.caching.database-cache=${ALEPHZERO_MAINNET_NITRO_ARCHIVE_PEBBLE_HASH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${ALEPHZERO_MAINNET_NITRO_ARCHIVE_PEBBLE_HASH_SNAPSHOT_CACHE:-400}
- --execution.caching.trie-clean-cache=${ALEPHZERO_MAINNET_NITRO_ARCHIVE_PEBBLE_HASH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${ALEPHZERO_MAINNET_NITRO_ARCHIVE_PEBBLE_HASH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://rpc.alephzero.raas.gelato.cloud - --execution.forwarding-target=https://rpc.alephzero.raas.gelato.cloud
- --execution.rpc.gas-cap=600000000 - --execution.rpc.gas-cap=5500000000
- --execution.rpc.log-history=0
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug
@@ -63,6 +68,7 @@ services:
- --metrics-server.addr=0.0.0.0 - --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070 - --metrics-server.port=6070
- --node.batch-poster.enable=false - --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true - --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ETHEREUM_MAINNET_EXECUTION_RPC} - --node.data-availability.parent-chain-node-url=${ETHEREUM_MAINNET_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true - --node.data-availability.rest-aggregator.enable=true

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
alephzero-mainnet: alephzero-mainnet:
image: ${ALEPHZERO_NITRO_IMAGE:-offchainlabs/nitro-node}:${ALEPHZERO_MAINNET_NITRO_VERSION:-v3.6.4-28199cd} image: ${ALEPHZERO_NITRO_IMAGE:-offchainlabs/nitro-node}:${ALEPHZERO_MAINNET_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -49,10 +49,15 @@ services:
- 8545 - 8545
command: command:
- --conf.file=/config/baseConfig.json - --conf.file=/config/baseConfig.json
- --execution.caching.archive=false - --execution.caching.archive=${ALEPHZERO_MAINNET_ARCHIVE_DB:-false}
- --execution.caching.database-cache=${ALEPHZERO_MAINNET_NITRO_PRUNED_PEBBLE_PATH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${ALEPHZERO_MAINNET_NITRO_PRUNED_PEBBLE_PATH_SNAPSHOT_CACHE:-400}
- --execution.caching.state-scheme=path - --execution.caching.state-scheme=path
- --execution.caching.trie-clean-cache=${ALEPHZERO_MAINNET_NITRO_PRUNED_PEBBLE_PATH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${ALEPHZERO_MAINNET_NITRO_PRUNED_PEBBLE_PATH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://rpc.alephzero.raas.gelato.cloud - --execution.forwarding-target=https://rpc.alephzero.raas.gelato.cloud
- --execution.rpc.gas-cap=600000000 - --execution.rpc.gas-cap=5500000000
- --execution.rpc.state-scheme=path
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug
@@ -64,6 +69,7 @@ services:
- --metrics-server.addr=0.0.0.0 - --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070 - --metrics-server.port=6070
- --node.batch-poster.enable=false - --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true - --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ETHEREUM_MAINNET_EXECUTION_RPC} - --node.data-availability.parent-chain-node-url=${ETHEREUM_MAINNET_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true - --node.data-availability.rest-aggregator.enable=true

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
alephzero-sepolia-archive: alephzero-sepolia-archive:
image: ${ALEPHZERO_NITRO_IMAGE:-offchainlabs/nitro-node}:${ALEPHZERO_SEPOLIA_NITRO_VERSION:-v3.6.4-28199cd} image: ${ALEPHZERO_NITRO_IMAGE:-offchainlabs/nitro-node}:${ALEPHZERO_SEPOLIA_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -50,8 +50,13 @@ services:
command: command:
- --conf.file=/config/baseConfig.json - --conf.file=/config/baseConfig.json
- --execution.caching.archive=true - --execution.caching.archive=true
- --execution.caching.database-cache=${ALEPHZERO_SEPOLIA_NITRO_ARCHIVE_PEBBLE_HASH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${ALEPHZERO_SEPOLIA_NITRO_ARCHIVE_PEBBLE_HASH_SNAPSHOT_CACHE:-400}
- --execution.caching.trie-clean-cache=${ALEPHZERO_SEPOLIA_NITRO_ARCHIVE_PEBBLE_HASH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${ALEPHZERO_SEPOLIA_NITRO_ARCHIVE_PEBBLE_HASH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://rpc.alephzero-testnet.gelato.digital - --execution.forwarding-target=https://rpc.alephzero-testnet.gelato.digital
- --execution.rpc.gas-cap=600000000 - --execution.rpc.gas-cap=5500000000
- --execution.rpc.log-history=0
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug
@@ -63,6 +68,7 @@ services:
- --metrics-server.addr=0.0.0.0 - --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070 - --metrics-server.port=6070
- --node.batch-poster.enable=false - --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true - --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ETHEREUM_SEPOLIA_EXECUTION_RPC} - --node.data-availability.parent-chain-node-url=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true - --node.data-availability.rest-aggregator.enable=true

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
alephzero-sepolia: alephzero-sepolia:
image: ${ALEPHZERO_NITRO_IMAGE:-offchainlabs/nitro-node}:${ALEPHZERO_SEPOLIA_NITRO_VERSION:-v3.6.4-28199cd} image: ${ALEPHZERO_NITRO_IMAGE:-offchainlabs/nitro-node}:${ALEPHZERO_SEPOLIA_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -49,10 +49,15 @@ services:
- 8545 - 8545
command: command:
- --conf.file=/config/baseConfig.json - --conf.file=/config/baseConfig.json
- --execution.caching.archive=false - --execution.caching.archive=${ALEPHZERO_SEPOLIA_ARCHIVE_DB:-false}
- --execution.caching.database-cache=${ALEPHZERO_SEPOLIA_NITRO_PRUNED_PEBBLE_PATH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${ALEPHZERO_SEPOLIA_NITRO_PRUNED_PEBBLE_PATH_SNAPSHOT_CACHE:-400}
- --execution.caching.state-scheme=path - --execution.caching.state-scheme=path
- --execution.caching.trie-clean-cache=${ALEPHZERO_SEPOLIA_NITRO_PRUNED_PEBBLE_PATH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${ALEPHZERO_SEPOLIA_NITRO_PRUNED_PEBBLE_PATH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://rpc.alephzero-testnet.gelato.digital - --execution.forwarding-target=https://rpc.alephzero-testnet.gelato.digital
- --execution.rpc.gas-cap=600000000 - --execution.rpc.gas-cap=5500000000
- --execution.rpc.state-scheme=path
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug
@@ -64,6 +69,7 @@ services:
- --metrics-server.addr=0.0.0.0 - --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070 - --metrics-server.port=6070
- --node.batch-poster.enable=false - --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true - --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ETHEREUM_SEPOLIA_EXECUTION_RPC} - --node.data-availability.parent-chain-node-url=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true - --node.data-availability.rest-aggregator.enable=true

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
arbitrum-nova-archive: arbitrum-nova-archive:
image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_NOVA_NITRO_VERSION:-v3.6.4-28199cd} image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_NOVA_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -50,7 +50,12 @@ services:
command: command:
- --chain.id=42170 - --chain.id=42170
- --execution.caching.archive=true - --execution.caching.archive=true
- --execution.rpc.gas-cap=600000000 - --execution.caching.database-cache=${ARBITRUM_NOVA_NITRO_ARCHIVE_LEVELDB_HASH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${ARBITRUM_NOVA_NITRO_ARCHIVE_LEVELDB_HASH_SNAPSHOT_CACHE:-400}
- --execution.caching.trie-clean-cache=${ARBITRUM_NOVA_NITRO_ARCHIVE_LEVELDB_HASH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${ARBITRUM_NOVA_NITRO_ARCHIVE_LEVELDB_HASH_TRIE_DIRTY_CACHE:-1024}
- --execution.rpc.gas-cap=5500000000
- --execution.rpc.log-history=0
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
arbitrum-nova: arbitrum-nova:
image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_NOVA_NITRO_VERSION:-v3.6.4-28199cd} image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_NOVA_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -49,8 +49,13 @@ services:
- 8545 - 8545
command: command:
- --chain.id=42170 - --chain.id=42170
- --execution.caching.archive=false - --execution.caching.archive=${ARBITRUM_NOVA_ARCHIVE_DB:-false}
- --execution.rpc.gas-cap=600000000 - --execution.caching.database-cache=${ARBITRUM_NOVA_NITRO_PRUNED_PEBBLE_HASH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${ARBITRUM_NOVA_NITRO_PRUNED_PEBBLE_HASH_SNAPSHOT_CACHE:-400}
- --execution.caching.trie-clean-cache=${ARBITRUM_NOVA_NITRO_PRUNED_PEBBLE_HASH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${ARBITRUM_NOVA_NITRO_PRUNED_PEBBLE_HASH_TRIE_DIRTY_CACHE:-1024}
- --execution.rpc.gas-cap=5500000000
- --execution.rpc.log-history=0
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug

View File

@@ -0,0 +1,181 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# Usage:
#
# mkdir rpc && cd rpc
#
# git init
# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git
# git fetch origin vibe
# git checkout origin/vibe
#
# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret
#
# env
# ...
# IP=$(curl ipinfo.io/ip)
# DOMAIN=${IP}.traefik.me
# COMPOSE_FILE=base.yml:rpc.yml:arb/nitro/arbitrum-one-nitro-archive-erigon.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/arbitrum-one-nitro-archive-erigon \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
arbitrum-one-archive-erigon:
image: ${ARBITRUM_NITRO_IMAGE:-erigontech/nitro-erigon}:${ARBITRUM_ONE_NITRO_VERSION:-main-de68b93}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
net.core.somaxconn: 32768 # Higher connection queue
# Memory/Connection Management
# net.core.netdev_max_backlog: 50000 # Increase network buffer
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
memlock: -1 # Disable memory locking limits (for in-memory DBs like MDBX)
user: root
ports:
- 21789:21789
- 21789:21789/udp
- 27891:27891
- 27891:27891/udp
- 38917:38917
- 38917:38917/udp
- 43123:43123
- 43123:43123/udp
- 49231:49231
- 49231:49231/udp
expose:
- 8545
- 5555
entrypoint: [erigon]
command:
- --datadir=/root/.local/share/erigon
- --http
- --http.addr=0.0.0.0
- --http.api=eth,erigon,web3,net,debug,trace,txpool,admin,ots
- --http.port=8545
- --http.vhosts=*
- --maxpeers=50
- --metrics
- --metrics.addr=0.0.0.0
- --metrics.port=6060
- --nat=extip:${IP}
- --p2p.allowed-ports=43123
- --p2p.allowed-ports=49231
- --port=21789
- --prune.mode=archive
- --l2rpc="http://arbitrum-one-archive:8545"
- --torrent.download.rate=${ARBITRUM_ONE_NITRO_ARCHIVE_ERIGON_MAX_DOWNLOAD_RATE:-1000mb}
- --torrent.port=38917
- --ws
- --ws.port=8545
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${ARBITRUM_ONE_NITRO_ARCHIVE_ERIGON_DATA:-arbitrum-one-nitro-archive-erigon}:/root/.local/share/erigon
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=6060
- prometheus-scrape.path=/debug/metrics/prometheus
- traefik.enable=true
- traefik.http.middlewares.arbitrum-one-nitro-archive-erigon-stripprefix.stripprefix.prefixes=/arbitrum-one-nitro-archive-erigon
- traefik.http.services.arbitrum-one-nitro-archive-erigon.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-archive-erigon.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-archive-erigon.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-archive-erigon.rule=Host(`$DOMAIN`) && (Path(`/arbitrum-one-nitro-archive-erigon`) || Path(`/arbitrum-one-nitro-archive-erigon/`))}
- ${NO_SSL:+traefik.http.routers.arbitrum-one-nitro-archive-erigon.rule=Path(`/arbitrum-one-nitro-archive-erigon`) || Path(`/arbitrum-one-nitro-archive-erigon/`)}
- traefik.http.routers.arbitrum-one-nitro-archive-erigon.middlewares=arbitrum-one-nitro-archive-erigon-stripprefix, ipallowlist
- traefik.http.routers.arbitrum-one-nitro-archive-erigon.service=arbitrum-one-nitro-archive-erigon
- traefik.http.routers.arbitrum-one-nitro-archive-erigon-node.service=arbitrum-one-nitro-archive-erigon-node
- traefik.http.services.arbitrum-one-nitro-archive-erigon-node.loadbalancer.server.port=5555
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-archive-erigon-node.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-archive-erigon-node.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-archive-erigon-node.rule=Host(`$DOMAIN`) && PathPrefix(`/arbitrum-one-nitro-archive-erigon/eth`)}
- ${NO_SSL:+traefik.http.routers.arbitrum-one-nitro-archive-erigon-node.rule=PathPrefix(`/arbitrum-one-nitro-archive-erigon/eth`)}
- traefik.http.routers.arbitrum-one-nitro-archive-erigon-node.middlewares=arbitrum-one-nitro-archive-erigon-stripprefix, ipallowlist
shm_size: 2gb
volumes:
arbitrum-one-nitro-archive-erigon:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: arbitrum-one
method-groups:
enabled:
- debug
- filter
- trace
methods:
disabled:
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
# standard geth and erigon
- name: debug_accountRange
- name: debug_getModifiedAccountsByNumber
- name: debug_getModifiedAccountsByHash
# non standard geth and erigon
- name: eth_getRawTransactionByHash
- name: eth_getRawTransactionByBlockHashAndIndex
# non standard erigon only
- name: eth_getBlockReceipts
- name: eth_protocolVersion
- name: eth_callMany
- name: eth_callBundle
- name: debug_accountAt
- name: debug_traceCallMany
- name: erigon_getHeaderByHash
- name: erigon_getBlockReceiptsByBlockHash
- name: erigon_getHeaderByNumber
- name: erigon_getLogsByHash
- name: erigon_forks
- name: erigon_getBlockByTimestamp
- name: erigon_BlockNumber
- name: erigon_getLatestLogs
- name: ots_getInternalOperations
- name: ots_hasCode
- name: ots_getTransactionError
- name: ots_traceTransaction
- name: ots_getBlockDetails
- name: ots_getBlockDetailsByHash
- name: ots_getBlockTransactions
- name: ots_searchTransactionsBefore
- name: ots_searchTransactionsAfter
- name: ots_getTransactionBySenderAndNonce
- name: ots_getContractCreator
- id: $${ID}-beacon-chain
chain: eth-beacon-chain
labels:
provider: $${PROVIDER}-beacon-chain
connection:
generic:
rpc:
url: $${RPC_URL}
...

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
arbitrum-one-archive: arbitrum-one-archive:
image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_ONE_NITRO_VERSION:-v3.6.4-28199cd} image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_ONE_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -50,8 +50,13 @@ services:
command: command:
- --chain.id=42161 - --chain.id=42161
- --execution.caching.archive=true - --execution.caching.archive=true
- --execution.caching.database-cache=${ARBITRUM_ONE_NITRO_ARCHIVE_LEVELDB_HASH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${ARBITRUM_ONE_NITRO_ARCHIVE_LEVELDB_HASH_SNAPSHOT_CACHE:-400}
- --execution.caching.trie-clean-cache=${ARBITRUM_ONE_NITRO_ARCHIVE_LEVELDB_HASH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${ARBITRUM_ONE_NITRO_ARCHIVE_LEVELDB_HASH_TRIE_DIRTY_CACHE:-1024}
- --execution.rpc.classic-redirect=http://arbitrum-one-arbnode-archive:8545 - --execution.rpc.classic-redirect=http://arbitrum-one-arbnode-archive:8545
- --execution.rpc.gas-cap=600000000 - --execution.rpc.gas-cap=5500000000
- --execution.rpc.log-history=0
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
arbitrum-one-archive: arbitrum-one-archive:
image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_ONE_NITRO_VERSION:-v3.6.4-28199cd} image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_ONE_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -50,8 +50,13 @@ services:
command: command:
- --chain.id=42161 - --chain.id=42161
- --execution.caching.archive=true - --execution.caching.archive=true
- --execution.caching.database-cache=${ARBITRUM_ONE_NITRO_ARCHIVE_PEBBLE_HASH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${ARBITRUM_ONE_NITRO_ARCHIVE_PEBBLE_HASH_SNAPSHOT_CACHE:-400}
- --execution.caching.trie-clean-cache=${ARBITRUM_ONE_NITRO_ARCHIVE_PEBBLE_HASH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${ARBITRUM_ONE_NITRO_ARCHIVE_PEBBLE_HASH_TRIE_DIRTY_CACHE:-1024}
- --execution.rpc.classic-redirect=http://arbitrum-one-arbnode-archive:8545 - --execution.rpc.classic-redirect=http://arbitrum-one-arbnode-archive:8545
- --execution.rpc.gas-cap=600000000 - --execution.rpc.gas-cap=5500000000
- --execution.rpc.log-history=0
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
arbitrum-one: arbitrum-one:
image: ${ARBITRUM_FIREETH_IMAGE:-ghcr.io/streamingfast/firehose-ethereum}:${ARBITRUM_ONE_FIREETH_VERSION:-v2.11.7-nitro-nitro-v3.5.5-fh3.0} image: ${ARBITRUM_FIREETH_IMAGE:-ghcr.io/streamingfast/go-ethereum}:${ARBITRUM_ONE_FIREETH_VERSION:-v2.12.4-nitro-nitro-v3.6.7-fh3.0}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -50,8 +50,13 @@ services:
entrypoint: [sh, -c, exec fireeth start reader-node --log-to-file=false --reader-node-arguments "$*", _] entrypoint: [sh, -c, exec fireeth start reader-node --log-to-file=false --reader-node-arguments "$*", _]
command: command:
- --chain.id=42161 - --chain.id=42161
- --execution.caching.archive=false - --execution.caching.archive=${ARBITRUM_ONE_ARCHIVE_DB:-false}
- --execution.rpc.gas-cap=600000000 - --execution.caching.database-cache=${ARBITRUM_ONE_NITRO_PRUNED_PEBBLE_HASH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${ARBITRUM_ONE_NITRO_PRUNED_PEBBLE_HASH_SNAPSHOT_CACHE:-400}
- --execution.caching.trie-clean-cache=${ARBITRUM_ONE_NITRO_PRUNED_PEBBLE_HASH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${ARBITRUM_ONE_NITRO_PRUNED_PEBBLE_HASH_TRIE_DIRTY_CACHE:-1024}
- --execution.rpc.gas-cap=5500000000
- --execution.rpc.log-history=0
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug
@@ -97,7 +102,7 @@ services:
- traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash.middlewares=arbitrum-one-nitro-pruned-pebble-hash-stripprefix, ipallowlist - traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash.middlewares=arbitrum-one-nitro-pruned-pebble-hash-stripprefix, ipallowlist
arbitrum-one-firehose: arbitrum-one-firehose:
image: ${ARBITRUM_FIREETH_IMAGE:-ghcr.io/streamingfast/firehose-ethereum}:${ARBITRUM_ONE_FIREETH_VERSION:-v2.11.7-nitro-nitro-v3.5.5-fh3.0} image: ${ARBITRUM_FIREETH_IMAGE:-ghcr.io/streamingfast/go-ethereum}:${ARBITRUM_ONE_FIREETH_VERSION:-v2.12.4-nitro-nitro-v3.6.7-fh3.0}
expose: expose:
- 10015 - 10015
- 10014 - 10014
@@ -129,7 +134,7 @@ services:
- traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash-firehose.middlewares=ipallowlist - traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash-firehose.middlewares=ipallowlist
arbitrum-one-events: arbitrum-one-events:
image: ${ARBITRUM_FIREETH_IMAGE:-ghcr.io/streamingfast/firehose-ethereum}:${ARBITRUM_ONE_FIREETH_VERSION:-v2.11.7-nitro-nitro-v3.5.5-fh3.0} image: ${ARBITRUM_FIREETH_IMAGE:-ghcr.io/streamingfast/go-ethereum}:${ARBITRUM_ONE_FIREETH_VERSION:-v2.12.4-nitro-nitro-v3.6.7-fh3.0}
expose: expose:
- 10016 - 10016
entrypoint: [sh, -c, exec fireeth --config-file="" --log-to-file=false start substreams-tier1 substreams-tier2 $@, _] entrypoint: [sh, -c, exec fireeth --config-file="" --log-to-file=false start substreams-tier1 substreams-tier2 $@, _]

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
arbitrum-one: arbitrum-one:
image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_ONE_NITRO_VERSION:-v3.6.4-28199cd} image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_ONE_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -49,8 +49,13 @@ services:
- 8545 - 8545
command: command:
- --chain.id=42161 - --chain.id=42161
- --execution.caching.archive=false - --execution.caching.archive=${ARBITRUM_ONE_ARCHIVE_DB:-false}
- --execution.rpc.gas-cap=600000000 - --execution.caching.database-cache=${ARBITRUM_ONE_NITRO_PRUNED_PEBBLE_HASH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${ARBITRUM_ONE_NITRO_PRUNED_PEBBLE_HASH_SNAPSHOT_CACHE:-400}
- --execution.caching.trie-clean-cache=${ARBITRUM_ONE_NITRO_PRUNED_PEBBLE_HASH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${ARBITRUM_ONE_NITRO_PRUNED_PEBBLE_HASH_TRIE_DIRTY_CACHE:-1024}
- --execution.rpc.gas-cap=5500000000
- --execution.rpc.log-history=0
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
arbitrum-sepolia-archive: arbitrum-sepolia-archive:
image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_SEPOLIA_NITRO_VERSION:-v3.6.4-28199cd} image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_SEPOLIA_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -50,7 +50,12 @@ services:
command: command:
- --chain.id=421614 - --chain.id=421614
- --execution.caching.archive=true - --execution.caching.archive=true
- --execution.rpc.gas-cap=600000000 - --execution.caching.database-cache=${ARBITRUM_SEPOLIA_NITRO_ARCHIVE_PEBBLE_HASH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${ARBITRUM_SEPOLIA_NITRO_ARCHIVE_PEBBLE_HASH_SNAPSHOT_CACHE:-400}
- --execution.caching.trie-clean-cache=${ARBITRUM_SEPOLIA_NITRO_ARCHIVE_PEBBLE_HASH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${ARBITRUM_SEPOLIA_NITRO_ARCHIVE_PEBBLE_HASH_TRIE_DIRTY_CACHE:-1024}
- --execution.rpc.gas-cap=5500000000
- --execution.rpc.log-history=0
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
arbitrum-sepolia: arbitrum-sepolia:
image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_SEPOLIA_NITRO_VERSION:-v3.6.4-28199cd} image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_SEPOLIA_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -49,8 +49,13 @@ services:
- 8545 - 8545
command: command:
- --chain.id=421614 - --chain.id=421614
- --execution.caching.archive=false - --execution.caching.archive=${ARBITRUM_SEPOLIA_ARCHIVE_DB:-false}
- --execution.rpc.gas-cap=600000000 - --execution.caching.database-cache=${ARBITRUM_SEPOLIA_NITRO_PRUNED_PEBBLE_HASH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${ARBITRUM_SEPOLIA_NITRO_PRUNED_PEBBLE_HASH_SNAPSHOT_CACHE:-400}
- --execution.caching.trie-clean-cache=${ARBITRUM_SEPOLIA_NITRO_PRUNED_PEBBLE_HASH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${ARBITRUM_SEPOLIA_NITRO_PRUNED_PEBBLE_HASH_TRIE_DIRTY_CACHE:-1024}
- --execution.rpc.gas-cap=5500000000
- --execution.rpc.log-history=0
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
connext-sepolia-archive: connext-sepolia-archive:
image: ${CONNEXT_NITRO_IMAGE:-offchainlabs/nitro-node}:${CONNEXT_SEPOLIA_NITRO_VERSION:-v3.6.4-28199cd} image: ${CONNEXT_NITRO_IMAGE:-offchainlabs/nitro-node}:${CONNEXT_SEPOLIA_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -50,8 +50,13 @@ services:
command: command:
- --conf.file=/config/baseConfig.json - --conf.file=/config/baseConfig.json
- --execution.caching.archive=true - --execution.caching.archive=true
- --execution.caching.database-cache=${CONNEXT_SEPOLIA_NITRO_ARCHIVE_LEVELDB_HASH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${CONNEXT_SEPOLIA_NITRO_ARCHIVE_LEVELDB_HASH_SNAPSHOT_CACHE:-400}
- --execution.caching.trie-clean-cache=${CONNEXT_SEPOLIA_NITRO_ARCHIVE_LEVELDB_HASH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${CONNEXT_SEPOLIA_NITRO_ARCHIVE_LEVELDB_HASH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://rpc.connext-sepolia.gelato.digital - --execution.forwarding-target=https://rpc.connext-sepolia.gelato.digital
- --execution.rpc.gas-cap=600000000 - --execution.rpc.gas-cap=5500000000
- --execution.rpc.log-history=0
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug
@@ -63,6 +68,7 @@ services:
- --metrics-server.addr=0.0.0.0 - --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070 - --metrics-server.port=6070
- --node.batch-poster.enable=false - --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true - --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ETHEREUM_SEPOLIA_EXECUTION_RPC} - --node.data-availability.parent-chain-node-url=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true - --node.data-availability.rest-aggregator.enable=true

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
connext-sepolia: connext-sepolia:
image: ${CONNEXT_NITRO_IMAGE:-offchainlabs/nitro-node}:${CONNEXT_SEPOLIA_NITRO_VERSION:-v3.6.4-28199cd} image: ${CONNEXT_NITRO_IMAGE:-offchainlabs/nitro-node}:${CONNEXT_SEPOLIA_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -49,10 +49,15 @@ services:
- 8545 - 8545
command: command:
- --conf.file=/config/baseConfig.json - --conf.file=/config/baseConfig.json
- --execution.caching.archive=false - --execution.caching.archive=${CONNEXT_SEPOLIA_ARCHIVE_DB:-false}
- --execution.caching.database-cache=${CONNEXT_SEPOLIA_NITRO_PRUNED_PEBBLE_PATH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${CONNEXT_SEPOLIA_NITRO_PRUNED_PEBBLE_PATH_SNAPSHOT_CACHE:-400}
- --execution.caching.state-scheme=path - --execution.caching.state-scheme=path
- --execution.caching.trie-clean-cache=${CONNEXT_SEPOLIA_NITRO_PRUNED_PEBBLE_PATH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${CONNEXT_SEPOLIA_NITRO_PRUNED_PEBBLE_PATH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://rpc.connext-sepolia.gelato.digital - --execution.forwarding-target=https://rpc.connext-sepolia.gelato.digital
- --execution.rpc.gas-cap=600000000 - --execution.rpc.gas-cap=5500000000
- --execution.rpc.state-scheme=path
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug
@@ -64,6 +69,7 @@ services:
- --metrics-server.addr=0.0.0.0 - --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070 - --metrics-server.port=6070
- --node.batch-poster.enable=false - --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true - --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ETHEREUM_SEPOLIA_EXECUTION_RPC} - --node.data-availability.parent-chain-node-url=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true - --node.data-availability.rest-aggregator.enable=true

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
everclear-mainnet-archive: everclear-mainnet-archive:
image: ${EVERCLEAR_NITRO_IMAGE:-offchainlabs/nitro-node}:${EVERCLEAR_MAINNET_NITRO_VERSION:-v3.6.4-28199cd} image: ${EVERCLEAR_NITRO_IMAGE:-offchainlabs/nitro-node}:${EVERCLEAR_MAINNET_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -50,8 +50,13 @@ services:
command: command:
- --conf.file=/config/baseConfig.json - --conf.file=/config/baseConfig.json
- --execution.caching.archive=true - --execution.caching.archive=true
- --execution.caching.database-cache=${EVERCLEAR_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${EVERCLEAR_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_SNAPSHOT_CACHE:-400}
- --execution.caching.trie-clean-cache=${EVERCLEAR_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${EVERCLEAR_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://rpc.everclear.raas.gelato.cloud - --execution.forwarding-target=https://rpc.everclear.raas.gelato.cloud
- --execution.rpc.gas-cap=600000000 - --execution.rpc.gas-cap=5500000000
- --execution.rpc.log-history=0
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug
@@ -63,6 +68,7 @@ services:
- --metrics-server.addr=0.0.0.0 - --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070 - --metrics-server.port=6070
- --node.batch-poster.enable=false - --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true - --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ETHEREUM_MAINNET_EXECUTION_RPC} - --node.data-availability.parent-chain-node-url=${ETHEREUM_MAINNET_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true - --node.data-availability.rest-aggregator.enable=true

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
everclear-mainnet: everclear-mainnet:
image: ${EVERCLEAR_NITRO_IMAGE:-offchainlabs/nitro-node}:${EVERCLEAR_MAINNET_NITRO_VERSION:-v3.6.4-28199cd} image: ${EVERCLEAR_NITRO_IMAGE:-offchainlabs/nitro-node}:${EVERCLEAR_MAINNET_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -49,10 +49,15 @@ services:
- 8545 - 8545
command: command:
- --conf.file=/config/baseConfig.json - --conf.file=/config/baseConfig.json
- --execution.caching.archive=false - --execution.caching.archive=${EVERCLEAR_MAINNET_ARCHIVE_DB:-false}
- --execution.caching.database-cache=${EVERCLEAR_MAINNET_NITRO_PRUNED_PEBBLE_PATH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${EVERCLEAR_MAINNET_NITRO_PRUNED_PEBBLE_PATH_SNAPSHOT_CACHE:-400}
- --execution.caching.state-scheme=path - --execution.caching.state-scheme=path
- --execution.caching.trie-clean-cache=${EVERCLEAR_MAINNET_NITRO_PRUNED_PEBBLE_PATH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${EVERCLEAR_MAINNET_NITRO_PRUNED_PEBBLE_PATH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://rpc.everclear.raas.gelato.cloud - --execution.forwarding-target=https://rpc.everclear.raas.gelato.cloud
- --execution.rpc.gas-cap=600000000 - --execution.rpc.gas-cap=5500000000
- --execution.rpc.state-scheme=path
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug
@@ -64,6 +69,7 @@ services:
- --metrics-server.addr=0.0.0.0 - --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070 - --metrics-server.port=6070
- --node.batch-poster.enable=false - --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true - --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ETHEREUM_MAINNET_EXECUTION_RPC} - --node.data-availability.parent-chain-node-url=${ETHEREUM_MAINNET_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true - --node.data-availability.rest-aggregator.enable=true

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
opencampuscodex-sepolia-archive: opencampuscodex-sepolia-archive:
image: ${OPENCAMPUSCODEX_NITRO_IMAGE:-offchainlabs/nitro-node}:${OPENCAMPUSCODEX_SEPOLIA_NITRO_VERSION:-v3.6.4-28199cd} image: ${OPENCAMPUSCODEX_NITRO_IMAGE:-offchainlabs/nitro-node}:${OPENCAMPUSCODEX_SEPOLIA_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -50,8 +50,13 @@ services:
command: command:
- --conf.file=/config/baseConfig.json - --conf.file=/config/baseConfig.json
- --execution.caching.archive=true - --execution.caching.archive=true
- --execution.caching.database-cache=${OPENCAMPUSCODEX_SEPOLIA_NITRO_ARCHIVE_LEVELDB_HASH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${OPENCAMPUSCODEX_SEPOLIA_NITRO_ARCHIVE_LEVELDB_HASH_SNAPSHOT_CACHE:-400}
- --execution.caching.trie-clean-cache=${OPENCAMPUSCODEX_SEPOLIA_NITRO_ARCHIVE_LEVELDB_HASH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${OPENCAMPUSCODEX_SEPOLIA_NITRO_ARCHIVE_LEVELDB_HASH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://rpc.open-campus-codex.gelato.digital - --execution.forwarding-target=https://rpc.open-campus-codex.gelato.digital
- --execution.rpc.gas-cap=600000000 - --execution.rpc.gas-cap=5500000000
- --execution.rpc.log-history=0
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug
@@ -63,6 +68,7 @@ services:
- --metrics-server.addr=0.0.0.0 - --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070 - --metrics-server.port=6070
- --node.batch-poster.enable=false - --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true - --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ARBITRUM_SEPOLIA_EXECUTION_RPC} - --node.data-availability.parent-chain-node-url=${ARBITRUM_SEPOLIA_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true - --node.data-availability.rest-aggregator.enable=true

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
opencampuscodex-sepolia: opencampuscodex-sepolia:
image: ${OPENCAMPUSCODEX_NITRO_IMAGE:-offchainlabs/nitro-node}:${OPENCAMPUSCODEX_SEPOLIA_NITRO_VERSION:-v3.6.4-28199cd} image: ${OPENCAMPUSCODEX_NITRO_IMAGE:-offchainlabs/nitro-node}:${OPENCAMPUSCODEX_SEPOLIA_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -49,10 +49,15 @@ services:
- 8545 - 8545
command: command:
- --conf.file=/config/baseConfig.json - --conf.file=/config/baseConfig.json
- --execution.caching.archive=false - --execution.caching.archive=${OPENCAMPUSCODEX_SEPOLIA_ARCHIVE_DB:-false}
- --execution.caching.database-cache=${OPENCAMPUSCODEX_SEPOLIA_NITRO_PRUNED_PEBBLE_PATH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${OPENCAMPUSCODEX_SEPOLIA_NITRO_PRUNED_PEBBLE_PATH_SNAPSHOT_CACHE:-400}
- --execution.caching.state-scheme=path - --execution.caching.state-scheme=path
- --execution.caching.trie-clean-cache=${OPENCAMPUSCODEX_SEPOLIA_NITRO_PRUNED_PEBBLE_PATH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${OPENCAMPUSCODEX_SEPOLIA_NITRO_PRUNED_PEBBLE_PATH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://rpc.open-campus-codex.gelato.digital - --execution.forwarding-target=https://rpc.open-campus-codex.gelato.digital
- --execution.rpc.gas-cap=600000000 - --execution.rpc.gas-cap=5500000000
- --execution.rpc.state-scheme=path
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug
@@ -64,6 +69,7 @@ services:
- --metrics-server.addr=0.0.0.0 - --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070 - --metrics-server.port=6070
- --node.batch-poster.enable=false - --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true - --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ARBITRUM_SEPOLIA_EXECUTION_RPC} - --node.data-availability.parent-chain-node-url=${ARBITRUM_SEPOLIA_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true - --node.data-availability.rest-aggregator.enable=true

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
playblock-mainnet-archive: playblock-mainnet-archive:
image: ${PLAYBLOCK_NITRO_IMAGE:-offchainlabs/nitro-node}:${PLAYBLOCK_MAINNET_NITRO_VERSION:-v3.6.4-28199cd} image: ${PLAYBLOCK_NITRO_IMAGE:-offchainlabs/nitro-node}:${PLAYBLOCK_MAINNET_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -50,8 +50,13 @@ services:
command: command:
- --conf.file=/config/baseConfig.json - --conf.file=/config/baseConfig.json
- --execution.caching.archive=true - --execution.caching.archive=true
- --execution.caching.database-cache=${PLAYBLOCK_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${PLAYBLOCK_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_SNAPSHOT_CACHE:-400}
- --execution.caching.trie-clean-cache=${PLAYBLOCK_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${PLAYBLOCK_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://rpc.playblock.io - --execution.forwarding-target=https://rpc.playblock.io
- --execution.rpc.gas-cap=600000000 - --execution.rpc.gas-cap=5500000000
- --execution.rpc.log-history=0
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug
@@ -63,6 +68,7 @@ services:
- --metrics-server.addr=0.0.0.0 - --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070 - --metrics-server.port=6070
- --node.batch-poster.enable=false - --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true - --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ARBITRUM_NOVA_EXECUTION_RPC} - --node.data-availability.parent-chain-node-url=${ARBITRUM_NOVA_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true - --node.data-availability.rest-aggregator.enable=true

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
playblock-mainnet: playblock-mainnet:
image: ${PLAYBLOCK_NITRO_IMAGE:-offchainlabs/nitro-node}:${PLAYBLOCK_MAINNET_NITRO_VERSION:-v3.6.4-28199cd} image: ${PLAYBLOCK_NITRO_IMAGE:-offchainlabs/nitro-node}:${PLAYBLOCK_MAINNET_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -49,10 +49,15 @@ services:
- 8545 - 8545
command: command:
- --conf.file=/config/baseConfig.json - --conf.file=/config/baseConfig.json
- --execution.caching.archive=false - --execution.caching.archive=${PLAYBLOCK_MAINNET_ARCHIVE_DB:-false}
- --execution.caching.database-cache=${PLAYBLOCK_MAINNET_NITRO_PRUNED_PEBBLE_PATH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${PLAYBLOCK_MAINNET_NITRO_PRUNED_PEBBLE_PATH_SNAPSHOT_CACHE:-400}
- --execution.caching.state-scheme=path - --execution.caching.state-scheme=path
- --execution.caching.trie-clean-cache=${PLAYBLOCK_MAINNET_NITRO_PRUNED_PEBBLE_PATH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${PLAYBLOCK_MAINNET_NITRO_PRUNED_PEBBLE_PATH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://rpc.playblock.io - --execution.forwarding-target=https://rpc.playblock.io
- --execution.rpc.gas-cap=600000000 - --execution.rpc.gas-cap=5500000000
- --execution.rpc.state-scheme=path
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug
@@ -64,6 +69,7 @@ services:
- --metrics-server.addr=0.0.0.0 - --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070 - --metrics-server.port=6070
- --node.batch-poster.enable=false - --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true - --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ARBITRUM_NOVA_EXECUTION_RPC} - --node.data-availability.parent-chain-node-url=${ARBITRUM_NOVA_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true - --node.data-availability.rest-aggregator.enable=true

View File

@@ -20,17 +20,17 @@ x-logging-defaults: &logging-defaults
# ... # ...
# IP=$(curl ipinfo.io/ip) # IP=$(curl ipinfo.io/ip)
# DOMAIN=${IP}.traefik.me # DOMAIN=${IP}.traefik.me
# COMPOSE_FILE=base.yml:rpc.yml:arb/nitro/arbitrum-one-nitro-pruned-pebble-hash--benchmark.yml # COMPOSE_FILE=base.yml:rpc.yml:arb/nitro/plume-mainnet-nitro-archive-leveldb-hash.yml
# #
# docker compose up -d # docker compose up -d
# #
# curl -X POST https://${IP}.traefik.me/arbitrum-one \ # curl -X POST https://${IP}.traefik.me/plume-mainnet-archive \
# -H "Content-Type: application/json" \ # -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' # --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services: services:
arbitrum-one: plume-mainnet-archive:
image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_ONE_NITRO_VERSION:-v3.6.4-28199cd} image: ${PLUME_NITRO_IMAGE:-offchainlabs/nitro-node}:${PLUME_MAINNET_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -48,9 +48,15 @@ services:
expose: expose:
- 8545 - 8545
command: command:
- --chain.id=42161 - --conf.file=/config/baseConfig.json
- --execution.caching.archive=false - --execution.caching.archive=true
- --execution.rpc.gas-cap=600000000 - --execution.caching.database-cache=${PLUME_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${PLUME_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_SNAPSHOT_CACHE:-400}
- --execution.caching.trie-clean-cache=${PLUME_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${PLUME_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://rpc.plume.org
- --execution.rpc.gas-cap=5500000000
- --execution.rpc.log-history=0
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug
@@ -58,17 +64,22 @@ services:
- --http.port=8545 - --http.port=8545
- --http.vhosts=* - --http.vhosts=*
- --init.download-path=/tmp - --init.download-path=/tmp
- --init.latest=pruned
- --metrics - --metrics
- --metrics-server.addr=0.0.0.0 - --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070 - --metrics-server.port=6070
- --node.batch-poster.enable=false - --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ETHEREUM_MAINNET_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true
- --node.data-availability.rest-aggregator.urls=https://das-plume-mainnet-1.t.conduit.xyz
- --node.data-availability.sequencer-inbox-address=0x85eC1b9138a8b9659A51e2b51bb0861901040b59
- --node.feed.input.url=wss://relay-plume-mainnet-1.t.conduit.xyz
- --node.sequencer=false - --node.sequencer=false
- --node.staker.enable=false - --node.staker.enable=false
- --parent-chain.blob-client.beacon-url=${ETHEREUM_MAINNET_BEACON_REST} - --parent-chain.blob-client.beacon-url=${ETHEREUM_MAINNET_BEACON_REST}
- --parent-chain.connection.url=${ETHEREUM_MAINNET_EXECUTION_RPC} - --parent-chain.connection.url=${ETHEREUM_MAINNET_EXECUTION_RPC}
- --persistent.chain=/root/.arbitrum/arbitrum-one - --persistent.chain=/root/.arbitrum/plume-mainnet-archive
- --persistent.db-engine=pebble
- --ws.addr=0.0.0.0 - --ws.addr=0.0.0.0
- --ws.origins=* - --ws.origins=*
- --ws.port=8545 - --ws.port=8545
@@ -77,45 +88,25 @@ services:
networks: networks:
- chains - chains
volumes: volumes:
- ${ARBITRUM_ONE_NITRO_PRUNED_PEBBLE_HASH_DATA:-arbitrum-one-nitro-pruned-pebble-hash}:/root/.arbitrum - ${PLUME_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_DATA:-plume-mainnet-nitro-archive-leveldb-hash}:/root/.arbitrum
- ./tmp/arbitrum-one:/tmp - ./arb/plume/mainnet:/config
- /slowdisk:/slowdisk - /slowdisk:/slowdisk
logging: *logging-defaults logging: *logging-defaults
labels: labels:
- prometheus-scrape.enabled=true - prometheus-scrape.enabled=true
- prometheus-scrape.port=6070 - prometheus-scrape.port=6070
- prometheus-scrape.path=/debug/metrics/prometheus - prometheus-scrape.path=/debug/metrics/prometheus
arbitrum-one-benchmark:
build:
context: ./benchmark-proxy
dockerfile: Dockerfile
expose:
- '8545'
environment:
- ENABLE_DETAILED_LOGS=${BENCHMARK_PROXY_VERBOSE:-false}
- LISTEN_ADDR=:8545
- PRIMARY_BACKEND=http://arbitrum-one:8545
- SUMMARY_INTERVAL=60
restart: unless-stopped
depends_on:
- arbitrum-one
networks:
- chains
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
- traefik.enable=true - traefik.enable=true
- traefik.http.middlewares.arbitrum-one-nitro-pruned-pebble-hash-stripprefix.stripprefix.prefixes=/arbitrum-one - traefik.http.middlewares.plume-mainnet-nitro-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/plume-mainnet-archive
- traefik.http.services.arbitrum-one-nitro-pruned-pebble-hash.loadbalancer.server.port=8545 - traefik.http.services.plume-mainnet-nitro-archive-leveldb-hash.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.plume-mainnet-nitro-archive-leveldb-hash.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash.tls.certresolver=myresolver} - ${NO_SSL:-traefik.http.routers.plume-mainnet-nitro-archive-leveldb-hash.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash.rule=Host(`$DOMAIN`) && (Path(`/arbitrum-one`) || Path(`/arbitrum-one/`))} - ${NO_SSL:-traefik.http.routers.plume-mainnet-nitro-archive-leveldb-hash.rule=Host(`$DOMAIN`) && (Path(`/plume-mainnet-archive`) || Path(`/plume-mainnet-archive/`))}
- ${NO_SSL:+traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash.rule=Path(`/arbitrum-one`) || Path(`/arbitrum-one/`)} - ${NO_SSL:+traefik.http.routers.plume-mainnet-nitro-archive-leveldb-hash.rule=Path(`/plume-mainnet-archive`) || Path(`/plume-mainnet-archive/`)}
- traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash.middlewares=arbitrum-one-nitro-pruned-pebble-hash-stripprefix, ipallowlist - traefik.http.routers.plume-mainnet-nitro-archive-leveldb-hash.middlewares=plume-mainnet-nitro-archive-leveldb-hash-stripprefix, ipallowlist
volumes: volumes:
arbitrum-one-nitro-pruned-pebble-hash: plume-mainnet-nitro-archive-leveldb-hash:
x-upstreams: x-upstreams:
- id: $${ID} - id: $${ID}
@@ -129,7 +120,7 @@ x-upstreams:
frameSize: 20Mb frameSize: 20Mb
msgSize: 50Mb msgSize: 50Mb
url: $${WS_URL} url: $${WS_URL}
chain: arbitrum chain: plume
method-groups: method-groups:
enabled: enabled:
- debug - debug

View File

@@ -0,0 +1,152 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# Usage:
#
# mkdir rpc && cd rpc
#
# git init
# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git
# git fetch origin vibe
# git checkout origin/vibe
#
# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret
#
# env
# ...
# IP=$(curl ipinfo.io/ip)
# DOMAIN=${IP}.traefik.me
# COMPOSE_FILE=base.yml:rpc.yml:arb/nitro/plume-mainnet-nitro-pruned-pebble-path.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/plume-mainnet \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
plume-mainnet:
image: ${PLUME_NITRO_IMAGE:-offchainlabs/nitro-node}:${PLUME_MAINNET_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
net.core.somaxconn: 32768 # Higher connection queue
# Memory/Connection Management
# net.core.netdev_max_backlog: 50000 # Increase network buffer
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
user: root
expose:
- 8545
command:
- --conf.file=/config/baseConfig.json
- --execution.caching.archive=${PLUME_MAINNET_ARCHIVE_DB:-false}
- --execution.caching.database-cache=${PLUME_MAINNET_NITRO_PRUNED_PEBBLE_PATH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${PLUME_MAINNET_NITRO_PRUNED_PEBBLE_PATH_SNAPSHOT_CACHE:-400}
- --execution.caching.state-scheme=path
- --execution.caching.trie-clean-cache=${PLUME_MAINNET_NITRO_PRUNED_PEBBLE_PATH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${PLUME_MAINNET_NITRO_PRUNED_PEBBLE_PATH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://rpc.plume.org
- --execution.rpc.gas-cap=5500000000
- --execution.rpc.state-scheme=path
- --execution.sequencer.enable=false
- --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug
- --http.corsdomain=*
- --http.port=8545
- --http.vhosts=*
- --init.download-path=/tmp
- --metrics
- --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070
- --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ETHEREUM_MAINNET_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true
- --node.data-availability.rest-aggregator.urls=https://das-plume-mainnet-1.t.conduit.xyz
- --node.data-availability.sequencer-inbox-address=0x85eC1b9138a8b9659A51e2b51bb0861901040b59
- --node.feed.input.url=wss://relay-plume-mainnet-1.t.conduit.xyz
- --node.sequencer=false
- --node.staker.enable=false
- --parent-chain.blob-client.beacon-url=${ETHEREUM_MAINNET_BEACON_REST}
- --parent-chain.connection.url=${ETHEREUM_MAINNET_EXECUTION_RPC}
- --persistent.chain=/root/.arbitrum/plume-mainnet
- --persistent.db-engine=pebble
- --ws.addr=0.0.0.0
- --ws.origins=*
- --ws.port=8545
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${PLUME_MAINNET_NITRO_PRUNED_PEBBLE_PATH_DATA:-plume-mainnet-nitro-pruned-pebble-path}:/root/.arbitrum
- ./arb/plume/mainnet:/config
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=6070
- prometheus-scrape.path=/debug/metrics/prometheus
- traefik.enable=true
- traefik.http.middlewares.plume-mainnet-nitro-pruned-pebble-path-stripprefix.stripprefix.prefixes=/plume-mainnet
- traefik.http.services.plume-mainnet-nitro-pruned-pebble-path.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.plume-mainnet-nitro-pruned-pebble-path.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.plume-mainnet-nitro-pruned-pebble-path.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.plume-mainnet-nitro-pruned-pebble-path.rule=Host(`$DOMAIN`) && (Path(`/plume-mainnet`) || Path(`/plume-mainnet/`))}
- ${NO_SSL:+traefik.http.routers.plume-mainnet-nitro-pruned-pebble-path.rule=Path(`/plume-mainnet`) || Path(`/plume-mainnet/`)}
- traefik.http.routers.plume-mainnet-nitro-pruned-pebble-path.middlewares=plume-mainnet-nitro-pruned-pebble-path-stripprefix, ipallowlist
volumes:
plume-mainnet-nitro-pruned-pebble-path:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: plume
method-groups:
enabled:
- debug
- filter
methods:
disabled:
# not compatible with path state scheme
- name: debug_traceBlockByHash
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
# standard geth only
- name: debug_getRawBlock
- name: debug_getRawTransaction
- name: debug_getRawReceipts
- name: debug_getRawHeader
- name: debug_getBadBlocks
# non standard geth only slightly dangerous
- name: debug_intermediateRoots
- name: debug_dumpBlock
# standard geth and erigon
- name: debug_accountRange
- name: debug_getModifiedAccountsByNumber
- name: debug_getModifiedAccountsByHash
# non standard geth and erigon
- name: eth_getRawTransactionByHash
- name: eth_getRawTransactionByBlockHashAndIndex
...

View File

@@ -0,0 +1,148 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# Usage:
#
# mkdir rpc && cd rpc
#
# git init
# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git
# git fetch origin vibe
# git checkout origin/vibe
#
# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret
#
# env
# ...
# IP=$(curl ipinfo.io/ip)
# DOMAIN=${IP}.traefik.me
# COMPOSE_FILE=base.yml:rpc.yml:arb/nitro/plume-testnet-nitro-archive-leveldb-hash.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/plume-testnet-archive \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
plume-testnet-archive:
image: ${PLUME_NITRO_IMAGE:-offchainlabs/nitro-node}:${PLUME_TESTNET_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
net.core.somaxconn: 32768 # Higher connection queue
# Memory/Connection Management
# net.core.netdev_max_backlog: 50000 # Increase network buffer
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
user: root
expose:
- 8545
command:
- --conf.file=/config/baseConfig.json
- --execution.caching.archive=true
- --execution.caching.database-cache=${PLUME_TESTNET_NITRO_ARCHIVE_LEVELDB_HASH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${PLUME_TESTNET_NITRO_ARCHIVE_LEVELDB_HASH_SNAPSHOT_CACHE:-400}
- --execution.caching.trie-clean-cache=${PLUME_TESTNET_NITRO_ARCHIVE_LEVELDB_HASH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${PLUME_TESTNET_NITRO_ARCHIVE_LEVELDB_HASH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://testnet-rpc.plume.org
- --execution.rpc.gas-cap=5500000000
- --execution.rpc.log-history=0
- --execution.sequencer.enable=false
- --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug
- --http.corsdomain=*
- --http.port=8545
- --http.vhosts=*
- --init.download-path=/tmp
- --metrics
- --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070
- --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true
- --node.data-availability.rest-aggregator.urls=https://das-plume-testnet-1.t.conduit.xyz
- --node.data-availability.sequencer-inbox-address=0xbCa991f1831bE1F1E7e5576d5F84A645e70F3E4d
- --node.feed.input.url=wss://relay-plume-testnet-1.t.conduit.xyz
- --node.sequencer=false
- --node.staker.enable=false
- --parent-chain.blob-client.beacon-url=${ETHEREUM_SEPOLIA_BEACON_REST}
- --parent-chain.connection.url=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
- --persistent.chain=/root/.arbitrum/plume-testnet-archive
- --ws.addr=0.0.0.0
- --ws.origins=*
- --ws.port=8545
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${PLUME_TESTNET_NITRO_ARCHIVE_LEVELDB_HASH_DATA:-plume-testnet-nitro-archive-leveldb-hash}:/root/.arbitrum
- ./arb/plume/testnet:/config
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=6070
- prometheus-scrape.path=/debug/metrics/prometheus
- traefik.enable=true
- traefik.http.middlewares.plume-testnet-nitro-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/plume-testnet-archive
- traefik.http.services.plume-testnet-nitro-archive-leveldb-hash.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.plume-testnet-nitro-archive-leveldb-hash.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.plume-testnet-nitro-archive-leveldb-hash.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.plume-testnet-nitro-archive-leveldb-hash.rule=Host(`$DOMAIN`) && (Path(`/plume-testnet-archive`) || Path(`/plume-testnet-archive/`))}
- ${NO_SSL:+traefik.http.routers.plume-testnet-nitro-archive-leveldb-hash.rule=Path(`/plume-testnet-archive`) || Path(`/plume-testnet-archive/`)}
- traefik.http.routers.plume-testnet-nitro-archive-leveldb-hash.middlewares=plume-testnet-nitro-archive-leveldb-hash-stripprefix, ipallowlist
volumes:
plume-testnet-nitro-archive-leveldb-hash:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: plume-testnet
method-groups:
enabled:
- debug
- filter
methods:
disabled:
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
# standard geth only
- name: debug_getRawBlock
- name: debug_getRawTransaction
- name: debug_getRawReceipts
- name: debug_getRawHeader
- name: debug_getBadBlocks
# non standard geth only slightly dangerous
- name: debug_intermediateRoots
- name: debug_dumpBlock
# standard geth and erigon
- name: debug_accountRange
- name: debug_getModifiedAccountsByNumber
- name: debug_getModifiedAccountsByHash
# non standard geth and erigon
- name: eth_getRawTransactionByHash
- name: eth_getRawTransactionByBlockHashAndIndex
...

View File

@@ -0,0 +1,152 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# Usage:
#
# mkdir rpc && cd rpc
#
# git init
# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git
# git fetch origin vibe
# git checkout origin/vibe
#
# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret
#
# env
# ...
# IP=$(curl ipinfo.io/ip)
# DOMAIN=${IP}.traefik.me
# COMPOSE_FILE=base.yml:rpc.yml:arb/nitro/plume-testnet-nitro-pruned-pebble-path.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/plume-testnet \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
plume-testnet:
image: ${PLUME_NITRO_IMAGE:-offchainlabs/nitro-node}:${PLUME_TESTNET_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
net.core.somaxconn: 32768 # Higher connection queue
# Memory/Connection Management
# net.core.netdev_max_backlog: 50000 # Increase network buffer
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
user: root
expose:
- 8545
command:
- --conf.file=/config/baseConfig.json
- --execution.caching.archive=${PLUME_TESTNET_ARCHIVE_DB:-false}
- --execution.caching.database-cache=${PLUME_TESTNET_NITRO_PRUNED_PEBBLE_PATH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${PLUME_TESTNET_NITRO_PRUNED_PEBBLE_PATH_SNAPSHOT_CACHE:-400}
- --execution.caching.state-scheme=path
- --execution.caching.trie-clean-cache=${PLUME_TESTNET_NITRO_PRUNED_PEBBLE_PATH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${PLUME_TESTNET_NITRO_PRUNED_PEBBLE_PATH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://testnet-rpc.plume.org
- --execution.rpc.gas-cap=5500000000
- --execution.rpc.state-scheme=path
- --execution.sequencer.enable=false
- --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug
- --http.corsdomain=*
- --http.port=8545
- --http.vhosts=*
- --init.download-path=/tmp
- --metrics
- --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070
- --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true
- --node.data-availability.rest-aggregator.urls=https://das-plume-testnet-1.t.conduit.xyz
- --node.data-availability.sequencer-inbox-address=0xbCa991f1831bE1F1E7e5576d5F84A645e70F3E4d
- --node.feed.input.url=wss://relay-plume-testnet-1.t.conduit.xyz
- --node.sequencer=false
- --node.staker.enable=false
- --parent-chain.blob-client.beacon-url=${ETHEREUM_SEPOLIA_BEACON_REST}
- --parent-chain.connection.url=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
- --persistent.chain=/root/.arbitrum/plume-testnet
- --persistent.db-engine=pebble
- --ws.addr=0.0.0.0
- --ws.origins=*
- --ws.port=8545
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${PLUME_TESTNET_NITRO_PRUNED_PEBBLE_PATH_DATA:-plume-testnet-nitro-pruned-pebble-path}:/root/.arbitrum
- ./arb/plume/testnet:/config
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=6070
- prometheus-scrape.path=/debug/metrics/prometheus
- traefik.enable=true
- traefik.http.middlewares.plume-testnet-nitro-pruned-pebble-path-stripprefix.stripprefix.prefixes=/plume-testnet
- traefik.http.services.plume-testnet-nitro-pruned-pebble-path.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.plume-testnet-nitro-pruned-pebble-path.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.plume-testnet-nitro-pruned-pebble-path.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.plume-testnet-nitro-pruned-pebble-path.rule=Host(`$DOMAIN`) && (Path(`/plume-testnet`) || Path(`/plume-testnet/`))}
- ${NO_SSL:+traefik.http.routers.plume-testnet-nitro-pruned-pebble-path.rule=Path(`/plume-testnet`) || Path(`/plume-testnet/`)}
- traefik.http.routers.plume-testnet-nitro-pruned-pebble-path.middlewares=plume-testnet-nitro-pruned-pebble-path-stripprefix, ipallowlist
volumes:
plume-testnet-nitro-pruned-pebble-path:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: plume-testnet
method-groups:
enabled:
- debug
- filter
methods:
disabled:
# not compatible with path state scheme
- name: debug_traceBlockByHash
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
# standard geth only
- name: debug_getRawBlock
- name: debug_getRawTransaction
- name: debug_getRawReceipts
- name: debug_getRawHeader
- name: debug_getBadBlocks
# non standard geth only slightly dangerous
- name: debug_intermediateRoots
- name: debug_dumpBlock
# standard geth and erigon
- name: debug_accountRange
- name: debug_getModifiedAccountsByNumber
- name: debug_getModifiedAccountsByHash
# non standard geth and erigon
- name: eth_getRawTransactionByHash
- name: eth_getRawTransactionByBlockHashAndIndex
...

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
real-mainnet-archive: real-mainnet-archive:
image: ${REAL_NITRO_IMAGE:-offchainlabs/nitro-node}:${REAL_MAINNET_NITRO_VERSION:-v3.6.4-28199cd} image: ${REAL_NITRO_IMAGE:-offchainlabs/nitro-node}:${REAL_MAINNET_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -50,8 +50,13 @@ services:
command: command:
- --conf.file=/config/baseConfig.json - --conf.file=/config/baseConfig.json
- --execution.caching.archive=true - --execution.caching.archive=true
- --execution.caching.database-cache=${REAL_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${REAL_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_SNAPSHOT_CACHE:-400}
- --execution.caching.trie-clean-cache=${REAL_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${REAL_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://rpc.realforreal.gelato.digital - --execution.forwarding-target=https://rpc.realforreal.gelato.digital
- --execution.rpc.gas-cap=600000000 - --execution.rpc.gas-cap=5500000000
- --execution.rpc.log-history=0
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug
@@ -63,6 +68,7 @@ services:
- --metrics-server.addr=0.0.0.0 - --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070 - --metrics-server.port=6070
- --node.batch-poster.enable=false - --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true - --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ETHEREUM_MAINNET_EXECUTION_RPC} - --node.data-availability.parent-chain-node-url=${ETHEREUM_MAINNET_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true - --node.data-availability.rest-aggregator.enable=true

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
real-mainnet-archive: real-mainnet-archive:
image: ${REAL_NITRO_IMAGE:-offchainlabs/nitro-node}:${REAL_MAINNET_NITRO_VERSION:-v3.6.4-28199cd} image: ${REAL_NITRO_IMAGE:-offchainlabs/nitro-node}:${REAL_MAINNET_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -50,8 +50,13 @@ services:
command: command:
- --conf.file=/config/baseConfig.json - --conf.file=/config/baseConfig.json
- --execution.caching.archive=true - --execution.caching.archive=true
- --execution.caching.database-cache=${REAL_MAINNET_NITRO_ARCHIVE_PEBBLE_HASH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${REAL_MAINNET_NITRO_ARCHIVE_PEBBLE_HASH_SNAPSHOT_CACHE:-400}
- --execution.caching.trie-clean-cache=${REAL_MAINNET_NITRO_ARCHIVE_PEBBLE_HASH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${REAL_MAINNET_NITRO_ARCHIVE_PEBBLE_HASH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://rpc.realforreal.gelato.digital - --execution.forwarding-target=https://rpc.realforreal.gelato.digital
- --execution.rpc.gas-cap=600000000 - --execution.rpc.gas-cap=5500000000
- --execution.rpc.log-history=0
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug
@@ -63,6 +68,7 @@ services:
- --metrics-server.addr=0.0.0.0 - --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070 - --metrics-server.port=6070
- --node.batch-poster.enable=false - --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true - --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ETHEREUM_MAINNET_EXECUTION_RPC} - --node.data-availability.parent-chain-node-url=${ETHEREUM_MAINNET_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true - --node.data-availability.rest-aggregator.enable=true

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
real-mainnet: real-mainnet:
image: ${REAL_NITRO_IMAGE:-offchainlabs/nitro-node}:${REAL_MAINNET_NITRO_VERSION:-v3.6.4-28199cd} image: ${REAL_NITRO_IMAGE:-offchainlabs/nitro-node}:${REAL_MAINNET_NITRO_VERSION:-v3.9.4-rc.2-7f582c3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -49,10 +49,15 @@ services:
- 8545 - 8545
command: command:
- --conf.file=/config/baseConfig.json - --conf.file=/config/baseConfig.json
- --execution.caching.archive=false - --execution.caching.archive=${REAL_MAINNET_ARCHIVE_DB:-false}
- --execution.caching.database-cache=${REAL_MAINNET_NITRO_PRUNED_PEBBLE_PATH_DATABASE_CACHE:-2048}
- --execution.caching.snapshot-cache=${REAL_MAINNET_NITRO_PRUNED_PEBBLE_PATH_SNAPSHOT_CACHE:-400}
- --execution.caching.state-scheme=path - --execution.caching.state-scheme=path
- --execution.caching.trie-clean-cache=${REAL_MAINNET_NITRO_PRUNED_PEBBLE_PATH_TRIE_CLEAN_CACHE:-600}
- --execution.caching.trie-dirty-cache=${REAL_MAINNET_NITRO_PRUNED_PEBBLE_PATH_TRIE_DIRTY_CACHE:-1024}
- --execution.forwarding-target=https://rpc.realforreal.gelato.digital - --execution.forwarding-target=https://rpc.realforreal.gelato.digital
- --execution.rpc.gas-cap=600000000 - --execution.rpc.gas-cap=5500000000
- --execution.rpc.state-scheme=path
- --execution.sequencer.enable=false - --execution.sequencer.enable=false
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,arb,txpool,debug - --http.api=eth,net,web3,arb,txpool,debug
@@ -64,6 +69,7 @@ services:
- --metrics-server.addr=0.0.0.0 - --metrics-server.addr=0.0.0.0
- --metrics-server.port=6070 - --metrics-server.port=6070
- --node.batch-poster.enable=false - --node.batch-poster.enable=false
- --node.da-provider.enable=false
- --node.data-availability.enable=true - --node.data-availability.enable=true
- --node.data-availability.parent-chain-node-url=${ETHEREUM_MAINNET_EXECUTION_RPC} - --node.data-availability.parent-chain-node-url=${ETHEREUM_MAINNET_EXECUTION_RPC}
- --node.data-availability.rest-aggregator.enable=true - --node.data-availability.rest-aggregator.enable=true

View File

@@ -0,0 +1,5 @@
{
"chain": {
"info-json": "[{\"chain-id\":98866,\"parent-chain-id\":1,\"chain-name\":\"conduit-orbit-deployer\",\"chain-config\":{\"chainId\":98866,\"homesteadBlock\":0,\"daoForkBlock\":null,\"daoForkSupport\":true,\"eip150Block\":0,\"eip150Hash\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"eip155Block\":0,\"eip158Block\":0,\"byzantiumBlock\":0,\"constantinopleBlock\":0,\"petersburgBlock\":0,\"istanbulBlock\":0,\"muirGlacierBlock\":0,\"berlinBlock\":0,\"londonBlock\":0,\"clique\":{\"period\":0,\"epoch\":0},\"arbitrum\":{\"EnableArbOS\":true,\"AllowDebugPrecompiles\":false,\"DataAvailabilityCommittee\":true,\"InitialArbOSVersion\":32,\"InitialChainOwner\":\"0x5Ec32984332eaB190cA431545664320259D755d8\",\"GenesisBlockNum\":0}},\"rollup\":{\"bridge\":\"0x35381f63091926750F43b2A7401B083263aDEF83\",\"inbox\":\"0x943fc691242291B74B105e8D19bd9E5DC2fcBa1D\",\"sequencer-inbox\":\"0x85eC1b9138a8b9659A51e2b51bb0861901040b59\",\"rollup\":\"0x35c60Cc77b0A8bf6F938B11bd3E9D319a876c2aC\",\"validator-utils\":\"0x84eA2523b271029FFAeB58fc6E6F1435a280db44\",\"validator-wallet-creator\":\"0x0A5eC2286bB15893d5b8f320aAbc823B2186BA09\",\"deployed-at\":21887008}}]"
}
}

View File

@@ -1,4 +0,0 @@
{
"state-sync-enabled": false,
"pruning-enabled": false
}

View File

@@ -1,43 +0,0 @@
{
"snowman-api-enabled": false,
"coreth-admin-api-enabled": false,
"coreth-admin-api-dir": "",
"eth-apis": [
"public-eth",
"public-eth-filter",
"net",
"web3",
"internal-public-eth",
"internal-public-blockchain",
"internal-public-transaction-pool",
"internal-public-account"
],
"continuous-profiler-dir": "",
"continuous-profiler-frequency": 900000000000,
"continuous-profiler-max-files": 5,
"rpc-gas-cap": 50000000,
"rpc-tx-fee-cap": 100,
"preimages-enabled": false,
"pruning-enabled": true,
"snapshot-async": true,
"snapshot-verification-enabled": false,
"metrics-enabled": false,
"metrics-expensive-enabled": false,
"local-txs-enabled": false,
"api-max-duration": 0,
"ws-cpu-refill-rate": 0,
"ws-cpu-max-stored": 0,
"api-max-blocks-per-request": 0,
"allow-unfinalized-queries": false,
"allow-unprotected-txs": false,
"keystore-directory": "",
"keystore-external-signer": "",
"keystore-insecure-unlock-allowed": false,
"remote-tx-gossip-only-enabled": false,
"tx-regossip-frequency": 60000000000,
"tx-regossip-max-size": 15,
"log-level": "debug",
"offline-pruning-enabled": false,
"offline-pruning-bloom-filter-size": 512,
"offline-pruning-data-directory": ""
}

View File

@@ -1,6 +0,0 @@
{
"state-sync-enabled": true,
"pruning-enabled": true,
"offline-pruning-enabled": true,
"offline-pruning-data-directory": "/root/.avalanchego/offline-pruning"
}

View File

@@ -1,7 +0,0 @@
{
"state-sync-enabled": true,
"pruning-enabled": true,
"offline-pruning-enabled": false,
"offline-pruning-data-directory": "/root/.avalanchego/offline-pruning",
"rpc-gas-cap": 600000000
}

View File

@@ -1,4 +1,6 @@
{ {
"state-sync-enabled": false, "state-sync-enabled": false,
"pruning-enabled": false "pruning-enabled": false,
"rpc-gas-cap": 2500000000,
"eth-rpc-gas-limit": 2500000000
} }

View File

@@ -0,0 +1,4 @@
{
"rpc-gas-cap": 2500000000,
"eth-rpc-gas-limit": 2500000000
}

View File

@@ -29,8 +29,8 @@ x-logging-defaults: &logging-defaults
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' # --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services: services:
avalanche-fuji-archive-client: avalanche-fuji-archive:
image: ${AVALANCHE_GO_IMAGE:-avaplatform/avalanchego}:${AVALANCHE_FUJI_GO_VERSION:-v1.13.0-fuji} image: ${AVALANCHE_GO_IMAGE:-avaplatform/avalanchego}:${AVALANCHE_FUJI_GO_VERSION:-v1.14.0}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -50,7 +50,6 @@ services:
- 10046:10046/udp - 10046:10046/udp
expose: expose:
- 9650 - 9650
- 9650
entrypoint: [/avalanchego/build/avalanchego] entrypoint: [/avalanchego/build/avalanchego]
command: command:
- --chain-config-dir=/config/archive - --chain-config-dir=/config/archive
@@ -71,35 +70,26 @@ services:
logging: *logging-defaults logging: *logging-defaults
labels: labels:
- prometheus-scrape.enabled=false - prometheus-scrape.enabled=false
avalanche-fuji-archive:
image: nginx
expose:
- '80'
environment:
PROXY_HOST: avalanche-fuji-archive-client
RPC_PATH: /ext/bc/C/rpc
RPC_PORT: 9650
WS_PATH: /ext/bc/C/ws
WS_PORT: 9650
restart: unless-stopped
depends_on:
- avalanche-fuji-archive-client
networks:
- chains
volumes:
- ./nginx-proxy:/etc/nginx/templates
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
- traefik.enable=true - traefik.enable=true
- traefik.http.middlewares.avalanche-fuji-go-archive-leveldb-set-path.replacepath.path=/ext/bc/C/rpc
- traefik.http.middlewares.avalanche-fuji-go-archive-leveldb-stripprefix.stripprefix.prefixes=/avalanche-fuji-archive - traefik.http.middlewares.avalanche-fuji-go-archive-leveldb-stripprefix.stripprefix.prefixes=/avalanche-fuji-archive
- traefik.http.services.avalanche-fuji-go-archive-leveldb.loadbalancer.server.port=80 - traefik.http.services.avalanche-fuji-go-archive-leveldb.loadbalancer.server.port=9650
- ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-archive-leveldb.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-archive-leveldb.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-archive-leveldb.tls.certresolver=myresolver} - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-archive-leveldb.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-archive-leveldb.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji-archive`) || Path(`/avalanche-fuji-archive/`))} - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-archive-leveldb.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji-archive`) || Path(`/avalanche-fuji-archive/`))}
- ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-archive-leveldb.rule=Path(`/avalanche-fuji-archive`) || Path(`/avalanche-fuji-archive/`)} - ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-archive-leveldb.rule=Path(`/avalanche-fuji-archive`) || Path(`/avalanche-fuji-archive/`)}
- traefik.http.routers.avalanche-fuji-go-archive-leveldb.middlewares=avalanche-fuji-go-archive-leveldb-stripprefix, ipallowlist - traefik.http.routers.avalanche-fuji-go-archive-leveldb.middlewares=avalanche-fuji-go-archive-leveldb-stripprefix, avalanche-fuji-go-archive-leveldb-set-path, ipallowlist
- traefik.http.routers.avalanche-fuji-go-archive-leveldb.priority=50 # gets any request that is not GET with UPGRADE header
- traefik.http.routers.avalanche-fuji-go-archive-leveldb-ws.priority=100 # answers GET requests first
- traefik.http.middlewares.avalanche-fuji-go-archive-leveldb-set-ws-path.replacepath.path=/ext/bc/C/ws
- traefik.http.services.avalanche-fuji-go-archive-leveldb-ws.loadbalancer.server.port=9650
- traefik.http.routers.avalanche-fuji-go-archive-leveldb-ws.service=avalanche-fuji-go-archive-leveldb-ws
- traefik.http.routers.avalanche-fuji-go-archive-leveldb.service=avalanche-fuji-go-archive-leveldb
- ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-archive-leveldb-ws.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-archive-leveldb-ws.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-archive-leveldb-ws.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji-archive`) || Path(`/avalanche-fuji-archive/`)) && Headers(`Upgrade`, `websocket`)}
- ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-archive-leveldb-ws.rule=(Path(`/avalanche-fuji-archive`) || Path(`/avalanche-fuji-archive/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.avalanche-fuji-go-archive-leveldb-ws.middlewares=avalanche-fuji-go-archive-leveldb-stripprefix, avalanche-fuji-go-archive-leveldb-set-ws-path, ipallowlist
volumes: volumes:
avalanche-fuji-go-archive-leveldb: avalanche-fuji-go-archive-leveldb:

View File

@@ -0,0 +1,118 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# Usage:
#
# mkdir rpc && cd rpc
#
# git init
# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git
# git fetch origin vibe
# git checkout origin/vibe
#
# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret
#
# env
# ...
# IP=$(curl ipinfo.io/ip)
# DOMAIN=${IP}.traefik.me
# COMPOSE_FILE=base.yml:rpc.yml:avalanche/go/avalanche-fuji-go-pruned-leveldb.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/avalanche-fuji \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
avalanche-fuji:
image: ${AVALANCHE_GO_IMAGE:-avaplatform/avalanchego}:${AVALANCHE_FUJI_GO_VERSION:-v1.14.0}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
net.core.somaxconn: 32768 # Higher connection queue
# Memory/Connection Management
# net.core.netdev_max_backlog: 50000 # Increase network buffer
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
user: root
ports:
- 12059:12059
- 12059:12059/udp
expose:
- 9650
entrypoint: [/avalanchego/build/avalanchego]
command:
- --chain-config-dir=/config/pruned
- --db-type=leveldb
- --http-allowed-hosts=*
- --http-host=
- --network-id=fuji
- --public-ip=${IP}
- --staking-port=12059
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${AVALANCHE_FUJI_GO_PRUNED_LEVELDB_DATA:-avalanche-fuji-go-pruned-leveldb}:/root/.avalanchego
- ./avalanche/fuji:/config
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
- traefik.enable=true
- traefik.http.middlewares.avalanche-fuji-go-pruned-leveldb-set-path.replacepath.path=/ext/bc/C/rpc
- traefik.http.middlewares.avalanche-fuji-go-pruned-leveldb-stripprefix.stripprefix.prefixes=/avalanche-fuji
- traefik.http.services.avalanche-fuji-go-pruned-leveldb.loadbalancer.server.port=9650
- ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-leveldb.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-leveldb.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-leveldb.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`))}
- ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-pruned-leveldb.rule=Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)}
- traefik.http.routers.avalanche-fuji-go-pruned-leveldb.middlewares=avalanche-fuji-go-pruned-leveldb-stripprefix, avalanche-fuji-go-pruned-leveldb-set-path, ipallowlist
- traefik.http.routers.avalanche-fuji-go-pruned-leveldb.priority=50 # gets any request that is not GET with UPGRADE header
- traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.priority=100 # answers GET requests first
- traefik.http.middlewares.avalanche-fuji-go-pruned-leveldb-set-ws-path.replacepath.path=/ext/bc/C/ws
- traefik.http.services.avalanche-fuji-go-pruned-leveldb-ws.loadbalancer.server.port=9650
- traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.service=avalanche-fuji-go-pruned-leveldb-ws
- traefik.http.routers.avalanche-fuji-go-pruned-leveldb.service=avalanche-fuji-go-pruned-leveldb
- ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)) && Headers(`Upgrade`, `websocket`)}
- ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.rule=(Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.avalanche-fuji-go-pruned-leveldb-ws.middlewares=avalanche-fuji-go-pruned-leveldb-stripprefix, avalanche-fuji-go-pruned-leveldb-set-ws-path, ipallowlist
volumes:
avalanche-fuji-go-pruned-leveldb:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: avalanche
method-groups:
enabled:
- debug
- filter
methods:
disabled:
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
...

View File

@@ -29,8 +29,8 @@ x-logging-defaults: &logging-defaults
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' # --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services: services:
avalanche-fuji-client: avalanche-fuji:
image: ${AVALANCHE_GO_IMAGE:-avaplatform/avalanchego}:${AVALANCHE_FUJI_GO_VERSION:-v1.13.0-fuji} image: ${AVALANCHE_GO_IMAGE:-avaplatform/avalanchego}:${AVALANCHE_FUJI_GO_VERSION:-v1.14.0}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -50,7 +50,6 @@ services:
- 10350:10350/udp - 10350:10350/udp
expose: expose:
- 9650 - 9650
- 9650
entrypoint: [/avalanchego/build/avalanchego] entrypoint: [/avalanchego/build/avalanchego]
command: command:
- --chain-config-dir=/config/pruned - --chain-config-dir=/config/pruned
@@ -71,35 +70,26 @@ services:
logging: *logging-defaults logging: *logging-defaults
labels: labels:
- prometheus-scrape.enabled=false - prometheus-scrape.enabled=false
avalanche-fuji:
image: nginx
expose:
- '80'
environment:
PROXY_HOST: avalanche-fuji-client
RPC_PATH: /ext/bc/C/rpc
RPC_PORT: 9650
WS_PATH: /ext/bc/C/ws
WS_PORT: 9650
restart: unless-stopped
depends_on:
- avalanche-fuji-client
networks:
- chains
volumes:
- ./nginx-proxy:/etc/nginx/templates
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
- traefik.enable=true - traefik.enable=true
- traefik.http.middlewares.avalanche-fuji-go-pruned-pebbledb-set-path.replacepath.path=/ext/bc/C/rpc
- traefik.http.middlewares.avalanche-fuji-go-pruned-pebbledb-stripprefix.stripprefix.prefixes=/avalanche-fuji - traefik.http.middlewares.avalanche-fuji-go-pruned-pebbledb-stripprefix.stripprefix.prefixes=/avalanche-fuji
- traefik.http.services.avalanche-fuji-go-pruned-pebbledb.loadbalancer.server.port=80 - traefik.http.services.avalanche-fuji-go-pruned-pebbledb.loadbalancer.server.port=9650
- ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.tls.certresolver=myresolver} - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`))} - ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`))}
- ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.rule=Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)} - ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.rule=Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)}
- traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.middlewares=avalanche-fuji-go-pruned-pebbledb-stripprefix, ipallowlist - traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.middlewares=avalanche-fuji-go-pruned-pebbledb-stripprefix, avalanche-fuji-go-pruned-pebbledb-set-path, ipallowlist
- traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.priority=50 # gets any request that is not GET with UPGRADE header
- traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.priority=100 # answers GET requests first
- traefik.http.middlewares.avalanche-fuji-go-pruned-pebbledb-set-ws-path.replacepath.path=/ext/bc/C/ws
- traefik.http.services.avalanche-fuji-go-pruned-pebbledb-ws.loadbalancer.server.port=9650
- traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.service=avalanche-fuji-go-pruned-pebbledb-ws
- traefik.http.routers.avalanche-fuji-go-pruned-pebbledb.service=avalanche-fuji-go-pruned-pebbledb
- ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.rule=Host(`$DOMAIN`) && (Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)) && Headers(`Upgrade`, `websocket`)}
- ${NO_SSL:+traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.rule=(Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.avalanche-fuji-go-pruned-pebbledb-ws.middlewares=avalanche-fuji-go-pruned-pebbledb-stripprefix, avalanche-fuji-go-pruned-pebbledb-set-ws-path, ipallowlist
volumes: volumes:
avalanche-fuji-go-pruned-pebbledb: avalanche-fuji-go-pruned-pebbledb:

View File

@@ -29,8 +29,8 @@ x-logging-defaults: &logging-defaults
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' # --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services: services:
avalanche-mainnet-archive-client: avalanche-mainnet-archive:
image: ${AVALANCHE_GO_IMAGE:-avaplatform/avalanchego}:${AVALANCHE_MAINNET_GO_VERSION:-v1.13.0} image: ${AVALANCHE_GO_IMAGE:-avaplatform/avalanchego}:${AVALANCHE_MAINNET_GO_VERSION:-v1.14.0}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -50,7 +50,6 @@ services:
- 12934:12934/udp - 12934:12934/udp
expose: expose:
- 9650 - 9650
- 9650
entrypoint: [/avalanchego/build/avalanchego] entrypoint: [/avalanchego/build/avalanchego]
command: command:
- --chain-config-dir=/config/archive - --chain-config-dir=/config/archive
@@ -71,35 +70,26 @@ services:
logging: *logging-defaults logging: *logging-defaults
labels: labels:
- prometheus-scrape.enabled=false - prometheus-scrape.enabled=false
avalanche-mainnet-archive:
image: nginx
expose:
- '80'
environment:
PROXY_HOST: avalanche-mainnet-archive-client
RPC_PATH: /ext/bc/C/rpc
RPC_PORT: 9650
WS_PATH: /ext/bc/C/ws
WS_PORT: 9650
restart: unless-stopped
depends_on:
- avalanche-mainnet-archive-client
networks:
- chains
volumes:
- ./nginx-proxy:/etc/nginx/templates
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
- traefik.enable=true - traefik.enable=true
- traefik.http.middlewares.avalanche-mainnet-go-archive-leveldb-set-path.replacepath.path=/ext/bc/C/rpc
- traefik.http.middlewares.avalanche-mainnet-go-archive-leveldb-stripprefix.stripprefix.prefixes=/avalanche-mainnet-archive - traefik.http.middlewares.avalanche-mainnet-go-archive-leveldb-stripprefix.stripprefix.prefixes=/avalanche-mainnet-archive
- traefik.http.services.avalanche-mainnet-go-archive-leveldb.loadbalancer.server.port=80 - traefik.http.services.avalanche-mainnet-go-archive-leveldb.loadbalancer.server.port=9650
- ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-archive-leveldb.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-archive-leveldb.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-archive-leveldb.tls.certresolver=myresolver} - ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-archive-leveldb.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-archive-leveldb.rule=Host(`$DOMAIN`) && (Path(`/avalanche-mainnet-archive`) || Path(`/avalanche-mainnet-archive/`))} - ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-archive-leveldb.rule=Host(`$DOMAIN`) && (Path(`/avalanche-mainnet-archive`) || Path(`/avalanche-mainnet-archive/`))}
- ${NO_SSL:+traefik.http.routers.avalanche-mainnet-go-archive-leveldb.rule=Path(`/avalanche-mainnet-archive`) || Path(`/avalanche-mainnet-archive/`)} - ${NO_SSL:+traefik.http.routers.avalanche-mainnet-go-archive-leveldb.rule=Path(`/avalanche-mainnet-archive`) || Path(`/avalanche-mainnet-archive/`)}
- traefik.http.routers.avalanche-mainnet-go-archive-leveldb.middlewares=avalanche-mainnet-go-archive-leveldb-stripprefix, ipallowlist - traefik.http.routers.avalanche-mainnet-go-archive-leveldb.middlewares=avalanche-mainnet-go-archive-leveldb-stripprefix, avalanche-mainnet-go-archive-leveldb-set-path, ipallowlist
- traefik.http.routers.avalanche-mainnet-go-archive-leveldb.priority=50 # gets any request that is not GET with UPGRADE header
- traefik.http.routers.avalanche-mainnet-go-archive-leveldb-ws.priority=100 # answers GET requests first
- traefik.http.middlewares.avalanche-mainnet-go-archive-leveldb-set-ws-path.replacepath.path=/ext/bc/C/ws
- traefik.http.services.avalanche-mainnet-go-archive-leveldb-ws.loadbalancer.server.port=9650
- traefik.http.routers.avalanche-mainnet-go-archive-leveldb-ws.service=avalanche-mainnet-go-archive-leveldb-ws
- traefik.http.routers.avalanche-mainnet-go-archive-leveldb.service=avalanche-mainnet-go-archive-leveldb
- ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-archive-leveldb-ws.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-archive-leveldb-ws.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-archive-leveldb-ws.rule=Host(`$DOMAIN`) && (Path(`/avalanche-mainnet-archive`) || Path(`/avalanche-mainnet-archive/`)) && Headers(`Upgrade`, `websocket`)}
- ${NO_SSL:+traefik.http.routers.avalanche-mainnet-go-archive-leveldb-ws.rule=(Path(`/avalanche-mainnet-archive`) || Path(`/avalanche-mainnet-archive/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.avalanche-mainnet-go-archive-leveldb-ws.middlewares=avalanche-mainnet-go-archive-leveldb-stripprefix, avalanche-mainnet-go-archive-leveldb-set-ws-path, ipallowlist
volumes: volumes:
avalanche-mainnet-go-archive-leveldb: avalanche-mainnet-go-archive-leveldb:

View File

@@ -0,0 +1,118 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# Usage:
#
# mkdir rpc && cd rpc
#
# git init
# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git
# git fetch origin vibe
# git checkout origin/vibe
#
# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret
#
# env
# ...
# IP=$(curl ipinfo.io/ip)
# DOMAIN=${IP}.traefik.me
# COMPOSE_FILE=base.yml:rpc.yml:avalanche/go/avalanche-mainnet-go-pruned-leveldb.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/avalanche-mainnet \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
avalanche-mainnet:
image: ${AVALANCHE_GO_IMAGE:-avaplatform/avalanchego}:${AVALANCHE_MAINNET_GO_VERSION:-v1.14.0}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
net.core.somaxconn: 32768 # Higher connection queue
# Memory/Connection Management
# net.core.netdev_max_backlog: 50000 # Increase network buffer
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
user: root
ports:
- 12757:12757
- 12757:12757/udp
expose:
- 9650
entrypoint: [/avalanchego/build/avalanchego]
command:
- --chain-config-dir=/config/pruned
- --db-type=leveldb
- --http-allowed-hosts=*
- --http-host=
- --network-id=mainnet
- --public-ip=${IP}
- --staking-port=12757
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${AVALANCHE_MAINNET_GO_PRUNED_LEVELDB_DATA:-avalanche-mainnet-go-pruned-leveldb}:/root/.avalanchego
- ./avalanche/mainnet:/config
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
- traefik.enable=true
- traefik.http.middlewares.avalanche-mainnet-go-pruned-leveldb-set-path.replacepath.path=/ext/bc/C/rpc
- traefik.http.middlewares.avalanche-mainnet-go-pruned-leveldb-stripprefix.stripprefix.prefixes=/avalanche-mainnet
- traefik.http.services.avalanche-mainnet-go-pruned-leveldb.loadbalancer.server.port=9650
- ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-pruned-leveldb.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-pruned-leveldb.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-pruned-leveldb.rule=Host(`$DOMAIN`) && (Path(`/avalanche-mainnet`) || Path(`/avalanche-mainnet/`))}
- ${NO_SSL:+traefik.http.routers.avalanche-mainnet-go-pruned-leveldb.rule=Path(`/avalanche-mainnet`) || Path(`/avalanche-mainnet/`)}
- traefik.http.routers.avalanche-mainnet-go-pruned-leveldb.middlewares=avalanche-mainnet-go-pruned-leveldb-stripprefix, avalanche-mainnet-go-pruned-leveldb-set-path, ipallowlist
- traefik.http.routers.avalanche-mainnet-go-pruned-leveldb.priority=50 # gets any request that is not GET with UPGRADE header
- traefik.http.routers.avalanche-mainnet-go-pruned-leveldb-ws.priority=100 # answers GET requests first
- traefik.http.middlewares.avalanche-mainnet-go-pruned-leveldb-set-ws-path.replacepath.path=/ext/bc/C/ws
- traefik.http.services.avalanche-mainnet-go-pruned-leveldb-ws.loadbalancer.server.port=9650
- traefik.http.routers.avalanche-mainnet-go-pruned-leveldb-ws.service=avalanche-mainnet-go-pruned-leveldb-ws
- traefik.http.routers.avalanche-mainnet-go-pruned-leveldb.service=avalanche-mainnet-go-pruned-leveldb
- ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-pruned-leveldb-ws.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-pruned-leveldb-ws.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-pruned-leveldb-ws.rule=Host(`$DOMAIN`) && (Path(`/avalanche-mainnet`) || Path(`/avalanche-mainnet/`)) && Headers(`Upgrade`, `websocket`)}
- ${NO_SSL:+traefik.http.routers.avalanche-mainnet-go-pruned-leveldb-ws.rule=(Path(`/avalanche-mainnet`) || Path(`/avalanche-mainnet/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.avalanche-mainnet-go-pruned-leveldb-ws.middlewares=avalanche-mainnet-go-pruned-leveldb-stripprefix, avalanche-mainnet-go-pruned-leveldb-set-ws-path, ipallowlist
volumes:
avalanche-mainnet-go-pruned-leveldb:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: avalanche
method-groups:
enabled:
- debug
- filter
methods:
disabled:
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
...

View File

@@ -29,8 +29,8 @@ x-logging-defaults: &logging-defaults
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' # --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services: services:
avalanche-mainnet-client: avalanche-mainnet:
image: ${AVALANCHE_GO_IMAGE:-avaplatform/avalanchego}:${AVALANCHE_MAINNET_GO_VERSION:-v1.13.0} image: ${AVALANCHE_GO_IMAGE:-avaplatform/avalanchego}:${AVALANCHE_MAINNET_GO_VERSION:-v1.14.0}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -50,7 +50,6 @@ services:
- 11929:11929/udp - 11929:11929/udp
expose: expose:
- 9650 - 9650
- 9650
entrypoint: [/avalanchego/build/avalanchego] entrypoint: [/avalanchego/build/avalanchego]
command: command:
- --chain-config-dir=/config/pruned - --chain-config-dir=/config/pruned
@@ -71,35 +70,26 @@ services:
logging: *logging-defaults logging: *logging-defaults
labels: labels:
- prometheus-scrape.enabled=false - prometheus-scrape.enabled=false
avalanche-mainnet:
image: nginx
expose:
- '80'
environment:
PROXY_HOST: avalanche-mainnet-client
RPC_PATH: /ext/bc/C/rpc
RPC_PORT: 9650
WS_PATH: /ext/bc/C/ws
WS_PORT: 9650
restart: unless-stopped
depends_on:
- avalanche-mainnet-client
networks:
- chains
volumes:
- ./nginx-proxy:/etc/nginx/templates
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
- traefik.enable=true - traefik.enable=true
- traefik.http.middlewares.avalanche-mainnet-go-pruned-pebbledb-set-path.replacepath.path=/ext/bc/C/rpc
- traefik.http.middlewares.avalanche-mainnet-go-pruned-pebbledb-stripprefix.stripprefix.prefixes=/avalanche-mainnet - traefik.http.middlewares.avalanche-mainnet-go-pruned-pebbledb-stripprefix.stripprefix.prefixes=/avalanche-mainnet
- traefik.http.services.avalanche-mainnet-go-pruned-pebbledb.loadbalancer.server.port=80 - traefik.http.services.avalanche-mainnet-go-pruned-pebbledb.loadbalancer.server.port=9650
- ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb.tls.certresolver=myresolver} - ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb.rule=Host(`$DOMAIN`) && (Path(`/avalanche-mainnet`) || Path(`/avalanche-mainnet/`))} - ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb.rule=Host(`$DOMAIN`) && (Path(`/avalanche-mainnet`) || Path(`/avalanche-mainnet/`))}
- ${NO_SSL:+traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb.rule=Path(`/avalanche-mainnet`) || Path(`/avalanche-mainnet/`)} - ${NO_SSL:+traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb.rule=Path(`/avalanche-mainnet`) || Path(`/avalanche-mainnet/`)}
- traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb.middlewares=avalanche-mainnet-go-pruned-pebbledb-stripprefix, ipallowlist - traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb.middlewares=avalanche-mainnet-go-pruned-pebbledb-stripprefix, avalanche-mainnet-go-pruned-pebbledb-set-path, ipallowlist
- traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb.priority=50 # gets any request that is not GET with UPGRADE header
- traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb-ws.priority=100 # answers GET requests first
- traefik.http.middlewares.avalanche-mainnet-go-pruned-pebbledb-set-ws-path.replacepath.path=/ext/bc/C/ws
- traefik.http.services.avalanche-mainnet-go-pruned-pebbledb-ws.loadbalancer.server.port=9650
- traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb-ws.service=avalanche-mainnet-go-pruned-pebbledb-ws
- traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb.service=avalanche-mainnet-go-pruned-pebbledb
- ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb-ws.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb-ws.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb-ws.rule=Host(`$DOMAIN`) && (Path(`/avalanche-mainnet`) || Path(`/avalanche-mainnet/`)) && Headers(`Upgrade`, `websocket`)}
- ${NO_SSL:+traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb-ws.rule=(Path(`/avalanche-mainnet`) || Path(`/avalanche-mainnet/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.avalanche-mainnet-go-pruned-pebbledb-ws.middlewares=avalanche-mainnet-go-pruned-pebbledb-stripprefix, avalanche-mainnet-go-pruned-pebbledb-set-ws-path, ipallowlist
volumes: volumes:
avalanche-mainnet-go-pruned-pebbledb: avalanche-mainnet-go-pruned-pebbledb:

View File

@@ -0,0 +1,21 @@
{
"snowman-api-enabled": false,
"coreth-admin-api-enabled": false,
"net-api-enabled": true,
"rpc-gas-cap": 2500000000,
"rpc-tx-fee-cap": 100,
"eth-rpc-gas-limit": 2500000000,
"eth-api-enabled": true,
"personal-api-enabled": false,
"tx-pool-api-enabled": false,
"debug-api-enabled": false,
"web3-api-enabled": true,
"local-txs-enabled": false,
"pruning-enabled": true,
"api-max-duration": 0,
"api-max-blocks-per-request": 0,
"allow-unfinalized-queries": false,
"log-level": "info",
"state-sync-enabled": false,
"state-sync-skip-resume": true
}

View File

@@ -1,27 +0,0 @@
# Build stage
FROM golang:1.21-alpine AS builder
WORKDIR /app
# Initialize Go modules if not already done
RUN go mod init benchmark-proxy
# Add the dependency before building
RUN go get github.com/gorilla/websocket
# Copy source code
COPY . .
# Build the application with CGO disabled for a static binary
RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o benchmark-proxy main.go
# Runtime stage (if you're using a multi-stage build)
FROM alpine:latest
WORKDIR /app
# Copy the binary from the build stage
COPY --from=builder /app/benchmark-proxy .
# Run the application
ENTRYPOINT ["./benchmark-proxy"]

View File

@@ -1,7 +0,0 @@
module benchmark-proxy
go 1.21
require github.com/gorilla/websocket v1.5.1
require golang.org/x/net v0.17.0 // indirect

View File

@@ -1,4 +0,0 @@
github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY=
github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY=
golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,185 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# Usage:
#
# mkdir rpc && cd rpc
#
# git init
# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git
# git fetch origin vibe
# git checkout origin/vibe
#
# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret
#
# env
# ...
# IP=$(curl ipinfo.io/ip)
# DOMAIN=${IP}.traefik.me
# COMPOSE_FILE=base.yml:rpc.yml:berachain/geth/berachain-bepolia-geth-pruned-pebble-path.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/berachain-bepolia-geth \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
berachain-bepolia-geth:
image: ${BERACHAIN_GETH_IMAGE:-ghcr.io/berachain/bera-geth}:${BERACHAIN_BEPOLIA_GETH_VERSION:-v1.011607.0}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
net.core.somaxconn: 32768 # Higher connection queue
# Memory/Connection Management
# net.core.netdev_max_backlog: 50000 # Increase network buffer
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
user: root
ports:
- 14888:14888
- 14888:14888/udp
expose:
- 8545
- 6060
- 8551
environment:
- CHAINID=80069
- CHAINNAME=bepolia
- CHAIN_SPEC=testnet
- GETH_BOOTNODES=enode://879752877fe08e483eba228b7544ff2de4a90e8ddaa59f122dfbc5c3689ea3030a0bfe4532d6a411a936dadce84e7a89086dca39dc39b9119603d87469010d9e@34.152.29.103:30303,enode://11f28864a15162c66b4b23d20b91fe08fda1d541df778d8db33be72558e80489a785d3fcc870926d10b7a6b848c7c6319bc215481319e527ce54ac139c2f44dc@34.118.159.247:30303,enode://47f41b9ab5a45e880a78330d2ae3f95a61f5cb41f203bbc9c9ff0e37778fc6c7fd46a6ee103e65ac36df8c024075a33f535a03cd8d800800c27fa2699fa0182b@34.47.28.251:30303,enode://fe6d2429b582de7daf387c6e5436f05d9185965267b72b8b6b4924125b50afdad765a820213d73d2afbfe64a721160a1a94750b4874ed97ccbe97c51443d1c42@34.95.21.165:30303,enode://1273d68cb5a884630aff8c35a30f643ad739461a5f7c8d2d691dc65547d5ad023829e1b6bf128edddd032047cb5c13e9dcd0f93a5de4aa5b958cef5970541863@34.159.207.112:30303,enode://fac9c2a0f719ec0ebc9021e88ad32eb7c05f4f351993dab6e4c86ae3ef5a47cade21749281263221c2b5583437893f957ac282858fd8a00f75f9a495eb53ae4e@34.141.54.42:30303,enode://5c0d582c19ea9f19928cfd6b7e156372d051b5720f67a444c38b671b8119bb097abfd1e4b868a389ab4a65bb9b405ef837df0ae195c0f32a33c61c39ca54e8ab@34.107.71.151:30303,enode://59aec227e87f4cd7c0a24c6cb0f870ef77abcc0c6d640f5a536c597a206b3505f7963f6459c265952b7bed3c3f260edf8a1412bbdb05f0e59d6bd612dc4bf077@34.141.48.88:30303,enode://281e3927839de398cb571279b324b6251d92c8de79263648f24dd4e451499a7fb336354bd4b7dc616e439f804cdd518fe49789f20b060c6426020de2c1cb285a@35.240.139.2:30303,enode://ae3f2e3f2caffc82aa0a5f5c6036def3d0be046b9245651b61567b4743c3c4937c08cb075d4ac543b163045942028384f3ef93bb25f7d500b644a2aab78f6b46@34.87.140.47:30303,enode://59e79f22bbf1645c60666ba6c17c54845080473df80711807fb3a4fbefc26278f78c43fa44ea6e52db38c57f1fccf6caa2de7589ca6cce8e161c3120e7a8d0d8@35.198.214.183:30303,enode://91d6e1878f5ab434a36625ac9017b792179324d42f4650a8dcc38774578d7ffb68882ec56861155e738eb62a7365b8463bd26886523f60edcfbf6137b43b9b65@35.240.234.137:30303,enode://f55dc8bac635b9c3b9fad688e3200c6b0744e2930d8d8a8e91d1effc0cd91b0547da3eac6d8d1431f0dd130ccc20f3c856fc90e32002bfc1e27d3286eef8c570@34.47.125.153:30303,enode://13da5e4ff1ab3481966f8d83309d8bd898ef5fa56355da57e683bdcc26b4c205be40341c87236934610d0c0bdddf11f6cef495966bba0092465839b8942bc54c@34.47.93.104:30303,enode://c2d43cba3380df975e78befc7294fe07a042eab1c2b743bdf436274b884bcdd0ef218821ff24732ff2106bf796964ada13dbeb42e27756f2491710be402fce59@34.64.123.223:30303,enode://f5b93e79932028a30bacb1b1cd7e7d42b30fe69640c0081bb51e29483bfe715c698dfcf50a309f208743c0ef07884afa39d0c96c6e56a8e58ce7ff1181fdffa0@34.22.89.170:30303
command:
- --bootnodes=enode://879752877fe08e483eba228b7544ff2de4a90e8ddaa59f122dfbc5c3689ea3030a0bfe4532d6a411a936dadce84e7a89086dca39dc39b9119603d87469010d9e@34.152.29.103:30303,enode://11f28864a15162c66b4b23d20b91fe08fda1d541df778d8db33be72558e80489a785d3fcc870926d10b7a6b848c7c6319bc215481319e527ce54ac139c2f44dc@34.118.159.247:30303,enode://47f41b9ab5a45e880a78330d2ae3f95a61f5cb41f203bbc9c9ff0e37778fc6c7fd46a6ee103e65ac36df8c024075a33f535a03cd8d800800c27fa2699fa0182b@34.47.28.251:30303,enode://fe6d2429b582de7daf387c6e5436f05d9185965267b72b8b6b4924125b50afdad765a820213d73d2afbfe64a721160a1a94750b4874ed97ccbe97c51443d1c42@34.95.21.165:30303,enode://1273d68cb5a884630aff8c35a30f643ad739461a5f7c8d2d691dc65547d5ad023829e1b6bf128edddd032047cb5c13e9dcd0f93a5de4aa5b958cef5970541863@34.159.207.112:30303,enode://fac9c2a0f719ec0ebc9021e88ad32eb7c05f4f351993dab6e4c86ae3ef5a47cade21749281263221c2b5583437893f957ac282858fd8a00f75f9a495eb53ae4e@34.141.54.42:30303,enode://5c0d582c19ea9f19928cfd6b7e156372d051b5720f67a444c38b671b8119bb097abfd1e4b868a389ab4a65bb9b405ef837df0ae195c0f32a33c61c39ca54e8ab@34.107.71.151:30303,enode://59aec227e87f4cd7c0a24c6cb0f870ef77abcc0c6d640f5a536c597a206b3505f7963f6459c265952b7bed3c3f260edf8a1412bbdb05f0e59d6bd612dc4bf077@34.141.48.88:30303,enode://281e3927839de398cb571279b324b6251d92c8de79263648f24dd4e451499a7fb336354bd4b7dc616e439f804cdd518fe49789f20b060c6426020de2c1cb285a@35.240.139.2:30303,enode://ae3f2e3f2caffc82aa0a5f5c6036def3d0be046b9245651b61567b4743c3c4937c08cb075d4ac543b163045942028384f3ef93bb25f7d500b644a2aab78f6b46@34.87.140.47:30303,enode://59e79f22bbf1645c60666ba6c17c54845080473df80711807fb3a4fbefc26278f78c43fa44ea6e52db38c57f1fccf6caa2de7589ca6cce8e161c3120e7a8d0d8@35.198.214.183:30303,enode://91d6e1878f5ab434a36625ac9017b792179324d42f4650a8dcc38774578d7ffb68882ec56861155e738eb62a7365b8463bd26886523f60edcfbf6137b43b9b65@35.240.234.137:30303,enode://f55dc8bac635b9c3b9fad688e3200c6b0744e2930d8d8a8e91d1effc0cd91b0547da3eac6d8d1431f0dd130ccc20f3c856fc90e32002bfc1e27d3286eef8c570@34.47.125.153:30303,enode://13da5e4ff1ab3481966f8d83309d8bd898ef5fa56355da57e683bdcc26b4c205be40341c87236934610d0c0bdddf11f6cef495966bba0092465839b8942bc54c@34.47.93.104:30303,enode://c2d43cba3380df975e78befc7294fe07a042eab1c2b743bdf436274b884bcdd0ef218821ff24732ff2106bf796964ada13dbeb42e27756f2491710be402fce59@34.64.123.223:30303,enode://f5b93e79932028a30bacb1b1cd7e7d42b30fe69640c0081bb51e29483bfe715c698dfcf50a309f208743c0ef07884afa39d0c96c6e56a8e58ce7ff1181fdffa0@34.22.89.170:30303
- --datadir=/root/.ethereum
- --db.engine=pebble
- --gcmode=full
- --maxpeers=50
- --metrics
- --metrics.addr=0.0.0.0
- --metrics.port=6060
- --nat=extip:${IP}
- --port=14888
- --rpc.gascap=600000000
- --rpc.txfeecap=0
- --state.scheme=path
- --syncmode=snap
- --http
- --http.addr=0.0.0.0
- --http.api=eth,net,web3,debug,admin,txpool,engine
- --http.port=8545
- --http.vhosts=*
- --ws
- --ws.addr=0.0.0.0
- --ws.api=eth,net,web3,debug,admin,txpool,engine
- --ws.origins=*
- --ws.port=8545
- --authrpc.addr=0.0.0.0
- --authrpc.jwtsecret=/jwtsecret
- --authrpc.vhosts=*
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${BERACHAIN_BEPOLIA_GETH_PRUNED_PEBBLE_PATH_DATA:-berachain-bepolia-geth-pruned-pebble-path}:/root/.ethereum
- .jwtsecret:/jwtsecret:ro
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=6060
- prometheus-scrape.path=/debug/metrics/prometheus
- traefik.enable=true
- traefik.http.middlewares.berachain-bepolia-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/berachain-bepolia-geth
- traefik.http.services.berachain-bepolia-geth-pruned-pebble-path.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.berachain-bepolia-geth-pruned-pebble-path.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.berachain-bepolia-geth-pruned-pebble-path.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.berachain-bepolia-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && (Path(`/berachain-bepolia-geth`) || Path(`/berachain-bepolia-geth/`))}
- ${NO_SSL:+traefik.http.routers.berachain-bepolia-geth-pruned-pebble-path.rule=Path(`/berachain-bepolia-geth`) || Path(`/berachain-bepolia-geth/`)}
- traefik.http.routers.berachain-bepolia-geth-pruned-pebble-path.middlewares=berachain-bepolia-geth-pruned-pebble-path-stripprefix, ipallowlist
berachain-bepolia-geth-node:
build:
context: ./berachain
dockerfile: beacon-kit.Dockerfile
args:
BEACONKIT_VERSION: ${BERACHAIN_BEPOLIA_BEACON_KIT_VERSION:-v1.3.4}
BEACONKIT_IMAGE: ${BERACHAIN_BEPOLIA_BEACON_KIT_IMAGE:-ghcr.io/berachain/beacon-kit}
ports:
- 19888:19888
- 19888:19888/udp
environment:
- AUTH_RPC=http://berachain-bepolia-geth:8551
- CHAINID=80069
- CHAINNAME=bepolia
- CHAIN_SPEC=testnet
- IP=${IP}
- MONIKER=d${DOMAIN:-local}
- P2P_PORT=19888
- PERSISTENT_PEERS=${BERACHAIN_BEPOLIA_BEACON_KIT_PEERS:-6d3a988ad84e02c37249b78628dbaf344784ea1a@108.129.86.179:30175,73ab55f52534c394f769b3a89d22eb349f053f3b@54.155.2.82:26656,7c4df69bc100d0eff84eefcf294f91c7aadebfd2@150.136.10.166:26656,b74208a6bcd76b6d06d4f308f1dd6c7b6d0a9f29@129.213.43.186:26656,233133cf27dd844af9b78e89625f001864bcfc92@57.129.73.89:32001,3d254fc9ed08346aedb71ccdf90bea67f7cbd00b@144.217.189.120:26656,e726816f42831689eab9378d5d577f1d06d25716@134.65.195.117:36656,f14545716ceeafba11f6ecd64d8d77aaf16d40c0@150.136.41.96:26656,737a435f2cb00c1e7b945cc52d7864eb7b70b992@185.242.112.107:16347,7724febbb335af74669fd8d8a88d37401c657386@129.213.27.223:26656,8bac4ade15a1d2f8665b62c71bf9d27112dbbbd6@40.160.22.31:26656,a3f5727fa125cdcd247b893f267f406c3f7d44a5@15.204.104.159:26656,79dee163a6ddedf2cb1edd0cbcbb26722c0e7f86@148.113.216.106:26656,d1251c410183c5357161a4a1812f35144e9db560@150.136.211.15:26656,a5ccf1b754651ec080dabc7e065d078ab2bc83bb@34.152.4.236:26656,0f3c31b2cef708275ad846fce4f30a8e0fbceecc@150.136.220.194:26656,a5f001d5e032caf46b81bf5d067b190ebf519f28@150.136.149.242:26656,55747a55410a3dbda9479d4cbb0a57016e1a4587@34.126.82.251:26656,5bb0cf7aab12a40ca920f84eddb9485b9d9284e1@23.227.222.185:37557,33b7a034787d7dbe95044ec140a34bba691b7310@3.252.67.180:30175,986f47732f3297c746d995696bb632a8735e2f30@82.197.183.13:26656,83983b76ba834110c4fe03b63d59f317b9c837c2@34.159.191.94:26656,76c1693781b9070d96f8cd640bc46d29e694fef5@74.15.24.112:21001,9805ae8ca90374c4cc3a0b1ba1d32a541e5da0c6@87.246.108.86:30715,068d83eb15836cd1777b06442e3c52d5e9bd3a99@164.152.161.131:37557,8a5908219e7a566acb7fbad157b37c32f2ff7e92@217.22.153.180:26656,e2f056e84cad629dfb7e7b0ca82060f0f5d45363@38.18.230.23:16347,e82aa9e1c41397cfc92f9af24a0cf5b3f1839dcd@91.198.59.11:27756,b82d334d16385c16148c6852ed956abcdae03b5e@38.114.121.59:16347,6da7d1e06161238fe5855eea0710dcd71ef00535@40.160.22.37:26656,e5f97876c7a3d39013b2eef291ca5670ef595b30@66.70.164.133:26656,c8ac56bc9045c720a4dbc541598e5b1a76ec7e6e@134.65.194.144:37557,b8c2dc40585e32c28c69d8c14818c9828d76709a@65.108.98.89:26656,e1b058e5cfa2b836ddaa496b10911da62dcf182e@169.155.168.156:36656,e93fbb087acb7c0f8ca850a796310bb745b510b6@23.227.222.131:36656,9989f4bb3e3b6975f7d056aaf150e7f10f046344@34.47.86.5:26656,6ea643a1bdf026460769f3e89e2bd213d610281f@44.246.151.147:26656,b442414dda8fa23e893b8ea703ebf01ce0655e14@162.19.240.10:26656}
- SEEDS=${BERACHAIN_BEPOLIA_BEACON_KIT_SEEDS:-9aa463497679e18a8a6ddc5e8503071255ce3844@34.47.83.64:26656,52b8bfb58c1d60774dd55310b24740569587ef5e@34.64.49.76:26656,1c8aa4af80684c29904a09044ffafba2e1814a30@34.64.211.6:26656,9989f4bb3e3b6975f7d056aaf150e7f10f046344@34.64.76.252:26656,30ebf8be0523a060b6b2baca1095abc92cca5caa@34.124.255.167:26656,55747a55410a3dbda9479d4cbb0a57016e1a4587@34.143.242.236:26656,f833e6317680a4dec3e2c6a11c8f4361bcff0c89@34.142.137.107:26656,65d3fb4f953532a9cc1f3a9417831419a7847ad8@34.143.221.131:26656,27d1edaed99a711a3f2862cc95c6361bc8c08cb9@34.159.202.238:26656,e56e965bd53832d47cf2f7cc2b7118c20c0c5b19@34.89.234.189:26656,f0f1a94a45f894be013ba16ebac09426aeadfe3b@34.159.175.241:26656,58b349f2d3f2206798aae4f8d87141f095095503@34.159.220.160:26656,d095b955e4ee6e48d6ed821179d8de87725f2ed7@35.203.95.212:26656,9499000274a522d85f91dbdac26945bbe2a144ba@35.234.244.49:26656,33ad9c7b2fa9cf0c5425d26af9a2af9d75600a9c@35.203.75.59:26656,a5ccf1b754651ec080dabc7e065d078ab2bc83bb@34.95.45.160:26656}
restart: unless-stopped
networks:
- chains
volumes:
- ${BERACHAIN_BEPOLIA_GETH_PRUNED_PEBBLE_PATH__BEACON_KIT_DATA:-berachain-bepolia-geth-pruned-pebble-path_beacon-kit}:/root/.beacond/data
- .jwtsecret:/jwtsecret:ro
- berachain-bepolia-geth-pruned-pebble-path_config:/root/.beacond/config
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
volumes:
berachain-bepolia-geth-pruned-pebble-path:
berachain-bepolia-geth-pruned-pebble-path_beacon-kit:
berachain-bepolia-geth-pruned-pebble-path_config:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: berachain-bepolia
method-groups:
enabled:
- debug
- filter
methods:
disabled:
# not compatible with path state scheme
- name: debug_traceBlockByHash
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
# standard geth only
- name: debug_getRawBlock
- name: debug_getRawTransaction
- name: debug_getRawReceipts
- name: debug_getRawHeader
- name: debug_getBadBlocks
# non standard geth only slightly dangerous
- name: debug_intermediateRoots
- name: debug_dumpBlock
# standard geth and erigon
- name: debug_accountRange
- name: debug_getModifiedAccountsByNumber
- name: debug_getModifiedAccountsByHash
# non standard geth and erigon
- name: eth_getRawTransactionByHash
- name: eth_getRawTransactionByBlockHashAndIndex
...

View File

@@ -0,0 +1,183 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# Usage:
#
# mkdir rpc && cd rpc
#
# git init
# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git
# git fetch origin vibe
# git checkout origin/vibe
#
# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret
#
# env
# ...
# IP=$(curl ipinfo.io/ip)
# DOMAIN=${IP}.traefik.me
# COMPOSE_FILE=base.yml:rpc.yml:berachain/geth/berachain-mainnet-geth-pruned-pebble-path.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/berachain-mainnet-geth \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
berachain-mainnet-geth:
image: ${BERACHAIN_GETH_IMAGE:-ghcr.io/berachain/bera-geth}:${BERACHAIN_MAINNET_GETH_VERSION:-v1.011607.0}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
net.core.somaxconn: 32768 # Higher connection queue
# Memory/Connection Management
# net.core.netdev_max_backlog: 50000 # Increase network buffer
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
user: root
ports:
- 11562:11562
- 11562:11562/udp
expose:
- 8545
- 6060
- 8551
environment:
- CHAINID=80094
- CHAINNAME=mainnet
- CHAIN_SPEC=mainnet
- GETH_BOOTNODES=enode://0c5a4a3c0e81fce2974e4d317d88df783731183d534325e32e0fdf8f4b119d7889fa254d3a38890606ec300d744e2aa9c87099a4a032f5c94efe53f3fcdfecfe@34.64.176.79:30303,enode://b6a3137d3a36ef37c4d31843775a9dc293f41bcbde33b6309c80b1771b6634827cd188285136a57474427bd8845adc2f6fe2e0b106bd58d14795b08910b9c326@34.64.181.70:30303,enode://0b6633300614bc2b9749aee0cace7a091ec5348762aee7b1d195f7616d03a9409019d9bef336624bab72e0d069cd4cf0b0de6fbbf53f04f6b6e4c5b39c6bdca6@34.64.39.31:30303,enode://552b001abebb5805fcd734ad367cd05d9078d18f23ec598d7165460fadcfc51116ad95c418f7ea9a141aa8cbc496c8bea3322b67a5de0d3380f11aab1a797513@34.64.183.158:30303,enode://5b037f66099d5ded86eb7e1619f6d06ceb15609e8cc345ced22a4772b06178004e1490a3cd32fd1222789de4c6e4021c2d648a3d750f6d5323e64b771bbd8de7@34.87.142.180:30303,enode://846db253c53753d3ea1197aec296306dc84c25f3afdf142b65cb0fe0f984de55072daa3bbf05a9aea046a38a2292403137b6eafefd5646fcf62120b74e3b898d@34.142.170.110:30303,enode://64b7f6ee9bcd942ad4949c70f2077627f078a057dfd930e6e904e12643d8952f5ae87c91e24559765393f244a72c9d5c011d7d5176e59191d38f315db85a20f5@34.126.161.16:30303,enode://cf4d19bfb8ec507427ec882bac0bac85a0c8c9ddaa0ec91b773bb614e5e09d107cd9fbe323b96f62f31c493f8f42cc5495c18b87c08560c5dea1dfd25256dcf6@35.247.162.2:30303,enode://bb7e44178543431feac8f0ee3827056b7b84d8235b802a8bdbbcd4939dab7f7dd2579ff577a38b002bb0139792af67abd2dd5c9f4f85b8da6e914fa76dca82bc@35.198.150.35:30303,enode://8fef1f5df45e7b31be00a21e1da5665d5a5f5bf4c379086b843f03eade941bdd157f08c95b31880c492577edb9a9b185df7191eaebf54ab06d5bd683b289f3af@34.107.7.241:30303,enode://ce9c87cfe089f6811d26c96913fa3ec10b938d9017fc6246684c74a33679ee34ceca9447180fb509e37bf2b706c2877a82085d34bfd83b5b520ee1288b0fc32f@35.198.109.49:30303,enode://713657eb6a53feadcbc47e634ad557326a51eb6818a3e19a00a8111492f50a666ccbf2f5d334d247ecf941e68d242ef5c3b812b63c44d381ef11f79c2cdb45c7@34.141.15.100:30303,enode://d071fa740e063ce1bb9cdc2b7937baeff6dc4000f91588d730a731c38a6ff0d4015814812c160fab8695e46f74b9b618735368ea2f16db4d785f16d29b3fb7b0@35.203.2.210:30303,enode://ffc452fe451a2e5f89fe634744aea334d92dcd30d881b76209d2db7dbf4b7ee047e7c69a5bb1633764d987a7441d9c4bc57ccdbfd6442a2f860bf953bc89a9b9@34.152.50.224:30303,enode://da94328302a1d1422209d1916744e90b6095a48b2340dcec39b22002c098bb4d58a880dab98eb26edf03fa4705d1b62f99a8c5c14e6666e4726b6d3066d8a4d7@34.95.61.106:30303,enode://19c7671a4844699b481e81a5bcfe7bafc7fefa953c16ebbe1951b1046371e73839e9058de6b7d3c934318fe7e7233dde3621c1c1018eb8b294ea3d4516147150@35.203.82.137:30303
command:
- --bootnodes=enode://0c5a4a3c0e81fce2974e4d317d88df783731183d534325e32e0fdf8f4b119d7889fa254d3a38890606ec300d744e2aa9c87099a4a032f5c94efe53f3fcdfecfe@34.64.176.79:30303,enode://b6a3137d3a36ef37c4d31843775a9dc293f41bcbde33b6309c80b1771b6634827cd188285136a57474427bd8845adc2f6fe2e0b106bd58d14795b08910b9c326@34.64.181.70:30303,enode://0b6633300614bc2b9749aee0cace7a091ec5348762aee7b1d195f7616d03a9409019d9bef336624bab72e0d069cd4cf0b0de6fbbf53f04f6b6e4c5b39c6bdca6@34.64.39.31:30303,enode://552b001abebb5805fcd734ad367cd05d9078d18f23ec598d7165460fadcfc51116ad95c418f7ea9a141aa8cbc496c8bea3322b67a5de0d3380f11aab1a797513@34.64.183.158:30303,enode://5b037f66099d5ded86eb7e1619f6d06ceb15609e8cc345ced22a4772b06178004e1490a3cd32fd1222789de4c6e4021c2d648a3d750f6d5323e64b771bbd8de7@34.87.142.180:30303,enode://846db253c53753d3ea1197aec296306dc84c25f3afdf142b65cb0fe0f984de55072daa3bbf05a9aea046a38a2292403137b6eafefd5646fcf62120b74e3b898d@34.142.170.110:30303,enode://64b7f6ee9bcd942ad4949c70f2077627f078a057dfd930e6e904e12643d8952f5ae87c91e24559765393f244a72c9d5c011d7d5176e59191d38f315db85a20f5@34.126.161.16:30303,enode://cf4d19bfb8ec507427ec882bac0bac85a0c8c9ddaa0ec91b773bb614e5e09d107cd9fbe323b96f62f31c493f8f42cc5495c18b87c08560c5dea1dfd25256dcf6@35.247.162.2:30303,enode://bb7e44178543431feac8f0ee3827056b7b84d8235b802a8bdbbcd4939dab7f7dd2579ff577a38b002bb0139792af67abd2dd5c9f4f85b8da6e914fa76dca82bc@35.198.150.35:30303,enode://8fef1f5df45e7b31be00a21e1da5665d5a5f5bf4c379086b843f03eade941bdd157f08c95b31880c492577edb9a9b185df7191eaebf54ab06d5bd683b289f3af@34.107.7.241:30303,enode://ce9c87cfe089f6811d26c96913fa3ec10b938d9017fc6246684c74a33679ee34ceca9447180fb509e37bf2b706c2877a82085d34bfd83b5b520ee1288b0fc32f@35.198.109.49:30303,enode://713657eb6a53feadcbc47e634ad557326a51eb6818a3e19a00a8111492f50a666ccbf2f5d334d247ecf941e68d242ef5c3b812b63c44d381ef11f79c2cdb45c7@34.141.15.100:30303,enode://d071fa740e063ce1bb9cdc2b7937baeff6dc4000f91588d730a731c38a6ff0d4015814812c160fab8695e46f74b9b618735368ea2f16db4d785f16d29b3fb7b0@35.203.2.210:30303,enode://ffc452fe451a2e5f89fe634744aea334d92dcd30d881b76209d2db7dbf4b7ee047e7c69a5bb1633764d987a7441d9c4bc57ccdbfd6442a2f860bf953bc89a9b9@34.152.50.224:30303,enode://da94328302a1d1422209d1916744e90b6095a48b2340dcec39b22002c098bb4d58a880dab98eb26edf03fa4705d1b62f99a8c5c14e6666e4726b6d3066d8a4d7@34.95.61.106:30303,enode://19c7671a4844699b481e81a5bcfe7bafc7fefa953c16ebbe1951b1046371e73839e9058de6b7d3c934318fe7e7233dde3621c1c1018eb8b294ea3d4516147150@35.203.82.137:30303
- --datadir=/root/.ethereum
- --db.engine=pebble
- --gcmode=full
- --maxpeers=50
- --metrics
- --metrics.addr=0.0.0.0
- --metrics.port=6060
- --nat=extip:${IP}
- --port=11562
- --rpc.gascap=600000000
- --rpc.txfeecap=0
- --state.scheme=path
- --syncmode=snap
- --http
- --http.addr=0.0.0.0
- --http.api=eth,net,web3,debug,admin,txpool,engine
- --http.port=8545
- --http.vhosts=*
- --ws
- --ws.addr=0.0.0.0
- --ws.api=eth,net,web3,debug,admin,txpool,engine
- --ws.origins=*
- --ws.port=8545
- --authrpc.addr=0.0.0.0
- --authrpc.jwtsecret=/jwtsecret
- --authrpc.vhosts=*
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${BERACHAIN_MAINNET_GETH_PRUNED_PEBBLE_PATH_DATA:-berachain-mainnet-geth-pruned-pebble-path}:/root/.ethereum
- .jwtsecret:/jwtsecret:ro
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=6060
- prometheus-scrape.path=/debug/metrics/prometheus
- traefik.enable=true
- traefik.http.middlewares.berachain-mainnet-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/berachain-mainnet-geth
- traefik.http.services.berachain-mainnet-geth-pruned-pebble-path.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.berachain-mainnet-geth-pruned-pebble-path.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.berachain-mainnet-geth-pruned-pebble-path.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.berachain-mainnet-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && (Path(`/berachain-mainnet-geth`) || Path(`/berachain-mainnet-geth/`))}
- ${NO_SSL:+traefik.http.routers.berachain-mainnet-geth-pruned-pebble-path.rule=Path(`/berachain-mainnet-geth`) || Path(`/berachain-mainnet-geth/`)}
- traefik.http.routers.berachain-mainnet-geth-pruned-pebble-path.middlewares=berachain-mainnet-geth-pruned-pebble-path-stripprefix, ipallowlist
berachain-mainnet-geth-node:
build:
context: ./berachain
dockerfile: beacon-kit.Dockerfile
args:
BEACONKIT_VERSION: ${BERACHAIN_MAINNET_BEACON_KIT_VERSION:-v1.3.4}
BEACONKIT_IMAGE: ${BERACHAIN_MAINNET_BEACON_KIT_IMAGE:-ghcr.io/berachain/beacon-kit}
ports:
- 16562:16562
- 16562:16562/udp
environment:
- AUTH_RPC=http://berachain-mainnet-geth:8551
- CHAINID=80094
- CHAINNAME=mainnet
- CHAIN_SPEC=mainnet
- IP=${IP}
- MONIKER=d${DOMAIN:-local}
- P2P_PORT=16562
restart: unless-stopped
networks:
- chains
volumes:
- ${BERACHAIN_MAINNET_GETH_PRUNED_PEBBLE_PATH__BEACON_KIT_DATA:-berachain-mainnet-geth-pruned-pebble-path_beacon-kit}:/root/.beacond/data
- .jwtsecret:/jwtsecret:ro
- berachain-mainnet-geth-pruned-pebble-path_config:/root/.beacond/config
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
volumes:
berachain-mainnet-geth-pruned-pebble-path:
berachain-mainnet-geth-pruned-pebble-path_beacon-kit:
berachain-mainnet-geth-pruned-pebble-path_config:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: berachain
method-groups:
enabled:
- debug
- filter
methods:
disabled:
# not compatible with path state scheme
- name: debug_traceBlockByHash
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
# standard geth only
- name: debug_getRawBlock
- name: debug_getRawTransaction
- name: debug_getRawReceipts
- name: debug_getRawHeader
- name: debug_getBadBlocks
# non standard geth only slightly dangerous
- name: debug_intermediateRoots
- name: debug_dumpBlock
# standard geth and erigon
- name: debug_accountRange
- name: debug_getModifiedAccountsByNumber
- name: debug_getModifiedAccountsByHash
# non standard geth and erigon
- name: eth_getRawTransactionByHash
- name: eth_getRawTransactionByBlockHashAndIndex
...

View File

@@ -14,6 +14,27 @@ x-logging-defaults: &logging-defaults
# if that file is found then the init script will merge them into any configured seeds from the environment variable. # if that file is found then the init script will merge them into any configured seeds from the environment variable.
# If the environment variable is empty and the file is found then the init script will use the seeds from the config.toml file that was # If the environment variable is empty and the file is found then the init script will use the seeds from the config.toml file that was
# downloaded in initialization from the repo above. # downloaded in initialization from the repo above.
#
# something wild that appeared to me was that I had to delete /var/lib/docker/volumes/rpc_berachain-bepolia-reth-archive-trace_config/_data/genesis.json
# after a fork of the chain to trigger a redownload of the genesis.json file and init of the node datadir.
#
# also it may be necessary to update the static peers and bootnodes from the repository to get it going again.
#
# frequently reth complains about never seeing a beacon client pushing for new blocks to sync to while the beacon client
# complains about reth being synching and it can't push new block hashes. force-recreate helps.
#
# this is honestly the most flaky constructs of all of the chains in this repository. they expect you to run their refrence setup
# and git pull to update and if something doesn't work to get a new chaindata snapshot.
#
# sometimes the genesis has to be updated and is a parameter to the reth node
# force-recreate on chain fork would do the trick I guess...
#
# don't forget to docker compose build from time to time...
#
# ETH_GENESIS_URL="https://raw.githubusercontent.com/berachain/beacon-kit/main/testing/networks/$CHAINID/eth-genesis.json"
# curl -sL "$ETH_GENESIS_URL" -o "$CONFIG_DIR/eth-genesis.json"
#
# something like this needs to be done sometimes when there is a fork of the chain somehow. may or may not be automated.
# Usage: # Usage:
# #
@@ -40,7 +61,7 @@ x-logging-defaults: &logging-defaults
services: services:
berachain-bartio-reth: berachain-bartio-reth:
image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/paradigmxyz/reth}:${BERACHAIN_BARTIO_RETH_VERSION:-v1.4.3} image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/berachain/bera-reth}:${BERACHAIN_BARTIO_RETH_VERSION:-v1.3.1}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -68,13 +89,16 @@ services:
- CHAINID=80084 - CHAINID=80084
- CHAINNAME=bartio - CHAINNAME=bartio
- CHAIN_SPEC=testnet - CHAIN_SPEC=testnet
entrypoint: [/bin/bash, -c, "trap 'exit 0' SIGTERM; while [ ! -f /config/eth-genesis.json ] && [ ! -f /tmp/stop ]; do sleep 1 & wait $!; done; exec reth node \"$@\"", --] entrypoint: [/bin/bash, -c, "trap 'exit 0' SIGTERM; while [ ! -f /config/eth-genesis.json ] && [ ! -f /tmp/stop ]; do sleep 1 & wait $!; done; exec bera-reth node \"$@\"", --]
command: command:
- --bootnodes=enode://0401e494dbd0c84c5c0f72adac5985d2f2525e08b68d448958aae218f5ac8198a80d1498e0ebec2ce38b1b18d6750f6e61a56b4614c5a6c6cf0981c39aed47dc@34.159.32.127:30303,enode://9b6c1eb143c9e3af0c7283262a9a38fe8bf844114b1f304673c2ac1c23e6bccfdaa8f4e9cb8c460bded495933fd92eeff30e6ab2e0538b56e249beea2c512906@35.234.88.149:30303,enode://e9675164b5e17b9d9edf0cc2bd79e6b6f487200c74d1331c220abb5b8ee80c2eefbf18213989585e9d0960683e819542e11d4eefb5f2b4019e1e49f9fd8fff18@berav2-bootnode.staketab.org:30303,enode://16e21c20f670d9e88570b8d3c580c7ef54f3515bffab864f1f3047c4125c3e7d98e782b990165808363a1b54ddca51c9dafaca9d6cd7ecca93e2e809ba522cae@berachain-testnet-v2.enode.l0vd.com:30304,enode://e31aa249638083d34817eed2b499ccd4b0718a332f0ea530e3062e13f624cb03a7d6b6e0460193ee87b5fc12e73a726070a3126ef53492ffbdc5e6c102f6dfb3@34.64.198.56:30303,enode://3f2f85e2e711f198fb7324b74fab6a0599b2534774f3aa26241dbbabe870b650574324da01aa98ee24ce97c8d76362a2db03034a6ddff43119ccfdc269663cbf@34.47.79.13:30303,enode://7a2f67d22b12e10c6ba9cd951866dda6471604be5fbd5102217dbad1cc56e590befd2009ecc99958a468a5b8e0dc28e14d9b6822491719c93199be6aa0319077@34.124.220.31:30303,enode://a96aac0b81c7e75fecc2ae613eaf13b27b2aaf3d46a90db904f94797d1746aa31e6593ae4cd476f81d5c6d1d2228ca60c885727978c369586c38871c63a330ee@35.240.182.27:30303,enode://dc44744074ac2dd76db0e0f9d95eb86cd558f6ba75e4a4af1303f2259624c8ce041198f976862a284165253b6dc6b2fa91b995cbca3ef2683879b6247e05e553@34.95.61.239:30303,enode://bf5364e1cf7ecd11646ccaea5c06b56622c04d52200d9cd141e01db9c9661237ceebecde1616e66e390a968ffd1c07e027531cad23044517b7bf36caa8b97f5f@34.152.41.26:30303,enode://f61e51c18fdb6ddf5e520209c53a0e60b2864d168eb0d3c02541050de9fee003b61818c7f70b32b61adee082280e7de4811fd3da47d87c87b3d17bf44e3bb76c@beacond-testnet.blacknodes.net:30303,enode://f24b54da77cf604e92aeb5ee5e79401fd3e66111563ca630e72330ccab6f385ccbbde5eba4577ee7bfb5e83347263d0e4cad042fd4c10468d0e38906fc82ba31@bera-testnet-seeds.nodeinfra.com:30303,enode://2e44e8e12b4666632dd2d4d555cfca5ceac4ca6cf6f45c46fc0ba27d1f9f7578dd598c74ae8b4189430a85b15d103c215a63cdbeafd41895fee1405a094fa77a@135.125.188.10:30303 - --bootnodes=enode://0401e494dbd0c84c5c0f72adac5985d2f2525e08b68d448958aae218f5ac8198a80d1498e0ebec2ce38b1b18d6750f6e61a56b4614c5a6c6cf0981c39aed47dc@34.159.32.127:30303,enode://9b6c1eb143c9e3af0c7283262a9a38fe8bf844114b1f304673c2ac1c23e6bccfdaa8f4e9cb8c460bded495933fd92eeff30e6ab2e0538b56e249beea2c512906@35.234.88.149:30303,enode://e9675164b5e17b9d9edf0cc2bd79e6b6f487200c74d1331c220abb5b8ee80c2eefbf18213989585e9d0960683e819542e11d4eefb5f2b4019e1e49f9fd8fff18@berav2-bootnode.staketab.org:30303,enode://16e21c20f670d9e88570b8d3c580c7ef54f3515bffab864f1f3047c4125c3e7d98e782b990165808363a1b54ddca51c9dafaca9d6cd7ecca93e2e809ba522cae@berachain-testnet-v2.enode.l0vd.com:30304,enode://e31aa249638083d34817eed2b499ccd4b0718a332f0ea530e3062e13f624cb03a7d6b6e0460193ee87b5fc12e73a726070a3126ef53492ffbdc5e6c102f6dfb3@34.64.198.56:30303,enode://3f2f85e2e711f198fb7324b74fab6a0599b2534774f3aa26241dbbabe870b650574324da01aa98ee24ce97c8d76362a2db03034a6ddff43119ccfdc269663cbf@34.47.79.13:30303,enode://7a2f67d22b12e10c6ba9cd951866dda6471604be5fbd5102217dbad1cc56e590befd2009ecc99958a468a5b8e0dc28e14d9b6822491719c93199be6aa0319077@34.124.220.31:30303,enode://a96aac0b81c7e75fecc2ae613eaf13b27b2aaf3d46a90db904f94797d1746aa31e6593ae4cd476f81d5c6d1d2228ca60c885727978c369586c38871c63a330ee@35.240.182.27:30303,enode://dc44744074ac2dd76db0e0f9d95eb86cd558f6ba75e4a4af1303f2259624c8ce041198f976862a284165253b6dc6b2fa91b995cbca3ef2683879b6247e05e553@34.95.61.239:30303,enode://bf5364e1cf7ecd11646ccaea5c06b56622c04d52200d9cd141e01db9c9661237ceebecde1616e66e390a968ffd1c07e027531cad23044517b7bf36caa8b97f5f@34.152.41.26:30303,enode://f61e51c18fdb6ddf5e520209c53a0e60b2864d168eb0d3c02541050de9fee003b61818c7f70b32b61adee082280e7de4811fd3da47d87c87b3d17bf44e3bb76c@beacond-testnet.blacknodes.net:30303,enode://f24b54da77cf604e92aeb5ee5e79401fd3e66111563ca630e72330ccab6f385ccbbde5eba4577ee7bfb5e83347263d0e4cad042fd4c10468d0e38906fc82ba31@bera-testnet-seeds.nodeinfra.com:30303,enode://2e44e8e12b4666632dd2d4d555cfca5ceac4ca6cf6f45c46fc0ba27d1f9f7578dd598c74ae8b4189430a85b15d103c215a63cdbeafd41895fee1405a094fa77a@135.125.188.10:30303
- --chain=/config/eth-genesis.json - --chain=/config/eth-genesis.json
- --datadir=/root/.local/share/reth - --datadir=/root/.local/share/reth
- --discovery.port=10527 - --discovery.port=10527
- --engine.always-process-payload-attributes-on-canonical-head
- --engine.cross-block-cache-size=${BERACHAIN_BARTIO_RETH_STATE_CACHE:-4096} - --engine.cross-block-cache-size=${BERACHAIN_BARTIO_RETH_STATE_CACHE:-4096}
- --engine.memory-block-buffer-target=0
- --engine.persistence-threshold=0
- --max-inbound-peers=50 - --max-inbound-peers=50
- --max-outbound-peers=50 - --max-outbound-peers=50
- --metrics=0.0.0.0:9001 - --metrics=0.0.0.0:9001
@@ -127,7 +151,7 @@ services:
context: ./berachain context: ./berachain
dockerfile: beacon-kit.Dockerfile dockerfile: beacon-kit.Dockerfile
args: args:
BEACONKIT_VERSION: ${BERACHAIN_BARTIO_BEACON_KIT_VERSION:-v1.1.3} BEACONKIT_VERSION: ${BERACHAIN_BARTIO_BEACON_KIT_VERSION:-v1.3.4}
BEACONKIT_IMAGE: ${BERACHAIN_BARTIO_BEACON_KIT_IMAGE:-ghcr.io/berachain/beacon-kit} BEACONKIT_IMAGE: ${BERACHAIN_BARTIO_BEACON_KIT_IMAGE:-ghcr.io/berachain/beacon-kit}
ports: ports:
- 15527:15527 - 15527:15527
@@ -144,6 +168,7 @@ services:
networks: networks:
- chains - chains
volumes: volumes:
- ${BERACHAIN_BARTIO_RETH_ARCHIVE_TRACE__BEACON_KIT_DATA:-berachain-bartio-reth-archive-trace_beacon-kit}:/root/.beacond/data
- .jwtsecret:/jwtsecret:ro - .jwtsecret:/jwtsecret:ro
- berachain-bartio-reth-archive-trace_config:/root/.beacond/config - berachain-bartio-reth-archive-trace_config:/root/.beacond/config
logging: *logging-defaults logging: *logging-defaults

View File

@@ -14,6 +14,27 @@ x-logging-defaults: &logging-defaults
# if that file is found then the init script will merge them into any configured seeds from the environment variable. # if that file is found then the init script will merge them into any configured seeds from the environment variable.
# If the environment variable is empty and the file is found then the init script will use the seeds from the config.toml file that was # If the environment variable is empty and the file is found then the init script will use the seeds from the config.toml file that was
# downloaded in initialization from the repo above. # downloaded in initialization from the repo above.
#
# something wild that appeared to me was that I had to delete /var/lib/docker/volumes/rpc_berachain-bepolia-reth-archive-trace_config/_data/genesis.json
# after a fork of the chain to trigger a redownload of the genesis.json file and init of the node datadir.
#
# also it may be necessary to update the static peers and bootnodes from the repository to get it going again.
#
# frequently reth complains about never seeing a beacon client pushing for new blocks to sync to while the beacon client
# complains about reth being synching and it can't push new block hashes. force-recreate helps.
#
# this is honestly the most flaky constructs of all of the chains in this repository. they expect you to run their refrence setup
# and git pull to update and if something doesn't work to get a new chaindata snapshot.
#
# sometimes the genesis has to be updated and is a parameter to the reth node
# force-recreate on chain fork would do the trick I guess...
#
# don't forget to docker compose build from time to time...
#
# ETH_GENESIS_URL="https://raw.githubusercontent.com/berachain/beacon-kit/main/testing/networks/$CHAINID/eth-genesis.json"
# curl -sL "$ETH_GENESIS_URL" -o "$CONFIG_DIR/eth-genesis.json"
#
# something like this needs to be done sometimes when there is a fork of the chain somehow. may or may not be automated.
# Usage: # Usage:
# #
@@ -40,7 +61,7 @@ x-logging-defaults: &logging-defaults
services: services:
berachain-bartio-reth-pruned: berachain-bartio-reth-pruned:
image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/paradigmxyz/reth}:${BERACHAIN_BARTIO_RETH_VERSION:-v1.4.3} image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/berachain/bera-reth}:${BERACHAIN_BARTIO_RETH_VERSION:-v1.3.1}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -68,13 +89,16 @@ services:
- CHAINID=80084 - CHAINID=80084
- CHAINNAME=bartio - CHAINNAME=bartio
- CHAIN_SPEC=testnet - CHAIN_SPEC=testnet
entrypoint: [/bin/bash, -c, "trap 'exit 0' SIGTERM; while [ ! -f /config/eth-genesis.json ] && [ ! -f /tmp/stop ]; do sleep 1 & wait $!; done; exec reth node \"$@\"", --] entrypoint: [/bin/bash, -c, "trap 'exit 0' SIGTERM; while [ ! -f /config/eth-genesis.json ] && [ ! -f /tmp/stop ]; do sleep 1 & wait $!; done; exec bera-reth node \"$@\"", --]
command: command:
- --bootnodes=enode://0401e494dbd0c84c5c0f72adac5985d2f2525e08b68d448958aae218f5ac8198a80d1498e0ebec2ce38b1b18d6750f6e61a56b4614c5a6c6cf0981c39aed47dc@34.159.32.127:30303,enode://9b6c1eb143c9e3af0c7283262a9a38fe8bf844114b1f304673c2ac1c23e6bccfdaa8f4e9cb8c460bded495933fd92eeff30e6ab2e0538b56e249beea2c512906@35.234.88.149:30303,enode://e9675164b5e17b9d9edf0cc2bd79e6b6f487200c74d1331c220abb5b8ee80c2eefbf18213989585e9d0960683e819542e11d4eefb5f2b4019e1e49f9fd8fff18@berav2-bootnode.staketab.org:30303,enode://16e21c20f670d9e88570b8d3c580c7ef54f3515bffab864f1f3047c4125c3e7d98e782b990165808363a1b54ddca51c9dafaca9d6cd7ecca93e2e809ba522cae@berachain-testnet-v2.enode.l0vd.com:30304,enode://e31aa249638083d34817eed2b499ccd4b0718a332f0ea530e3062e13f624cb03a7d6b6e0460193ee87b5fc12e73a726070a3126ef53492ffbdc5e6c102f6dfb3@34.64.198.56:30303,enode://3f2f85e2e711f198fb7324b74fab6a0599b2534774f3aa26241dbbabe870b650574324da01aa98ee24ce97c8d76362a2db03034a6ddff43119ccfdc269663cbf@34.47.79.13:30303,enode://7a2f67d22b12e10c6ba9cd951866dda6471604be5fbd5102217dbad1cc56e590befd2009ecc99958a468a5b8e0dc28e14d9b6822491719c93199be6aa0319077@34.124.220.31:30303,enode://a96aac0b81c7e75fecc2ae613eaf13b27b2aaf3d46a90db904f94797d1746aa31e6593ae4cd476f81d5c6d1d2228ca60c885727978c369586c38871c63a330ee@35.240.182.27:30303,enode://dc44744074ac2dd76db0e0f9d95eb86cd558f6ba75e4a4af1303f2259624c8ce041198f976862a284165253b6dc6b2fa91b995cbca3ef2683879b6247e05e553@34.95.61.239:30303,enode://bf5364e1cf7ecd11646ccaea5c06b56622c04d52200d9cd141e01db9c9661237ceebecde1616e66e390a968ffd1c07e027531cad23044517b7bf36caa8b97f5f@34.152.41.26:30303,enode://f61e51c18fdb6ddf5e520209c53a0e60b2864d168eb0d3c02541050de9fee003b61818c7f70b32b61adee082280e7de4811fd3da47d87c87b3d17bf44e3bb76c@beacond-testnet.blacknodes.net:30303,enode://f24b54da77cf604e92aeb5ee5e79401fd3e66111563ca630e72330ccab6f385ccbbde5eba4577ee7bfb5e83347263d0e4cad042fd4c10468d0e38906fc82ba31@bera-testnet-seeds.nodeinfra.com:30303,enode://2e44e8e12b4666632dd2d4d555cfca5ceac4ca6cf6f45c46fc0ba27d1f9f7578dd598c74ae8b4189430a85b15d103c215a63cdbeafd41895fee1405a094fa77a@135.125.188.10:30303 - --bootnodes=enode://0401e494dbd0c84c5c0f72adac5985d2f2525e08b68d448958aae218f5ac8198a80d1498e0ebec2ce38b1b18d6750f6e61a56b4614c5a6c6cf0981c39aed47dc@34.159.32.127:30303,enode://9b6c1eb143c9e3af0c7283262a9a38fe8bf844114b1f304673c2ac1c23e6bccfdaa8f4e9cb8c460bded495933fd92eeff30e6ab2e0538b56e249beea2c512906@35.234.88.149:30303,enode://e9675164b5e17b9d9edf0cc2bd79e6b6f487200c74d1331c220abb5b8ee80c2eefbf18213989585e9d0960683e819542e11d4eefb5f2b4019e1e49f9fd8fff18@berav2-bootnode.staketab.org:30303,enode://16e21c20f670d9e88570b8d3c580c7ef54f3515bffab864f1f3047c4125c3e7d98e782b990165808363a1b54ddca51c9dafaca9d6cd7ecca93e2e809ba522cae@berachain-testnet-v2.enode.l0vd.com:30304,enode://e31aa249638083d34817eed2b499ccd4b0718a332f0ea530e3062e13f624cb03a7d6b6e0460193ee87b5fc12e73a726070a3126ef53492ffbdc5e6c102f6dfb3@34.64.198.56:30303,enode://3f2f85e2e711f198fb7324b74fab6a0599b2534774f3aa26241dbbabe870b650574324da01aa98ee24ce97c8d76362a2db03034a6ddff43119ccfdc269663cbf@34.47.79.13:30303,enode://7a2f67d22b12e10c6ba9cd951866dda6471604be5fbd5102217dbad1cc56e590befd2009ecc99958a468a5b8e0dc28e14d9b6822491719c93199be6aa0319077@34.124.220.31:30303,enode://a96aac0b81c7e75fecc2ae613eaf13b27b2aaf3d46a90db904f94797d1746aa31e6593ae4cd476f81d5c6d1d2228ca60c885727978c369586c38871c63a330ee@35.240.182.27:30303,enode://dc44744074ac2dd76db0e0f9d95eb86cd558f6ba75e4a4af1303f2259624c8ce041198f976862a284165253b6dc6b2fa91b995cbca3ef2683879b6247e05e553@34.95.61.239:30303,enode://bf5364e1cf7ecd11646ccaea5c06b56622c04d52200d9cd141e01db9c9661237ceebecde1616e66e390a968ffd1c07e027531cad23044517b7bf36caa8b97f5f@34.152.41.26:30303,enode://f61e51c18fdb6ddf5e520209c53a0e60b2864d168eb0d3c02541050de9fee003b61818c7f70b32b61adee082280e7de4811fd3da47d87c87b3d17bf44e3bb76c@beacond-testnet.blacknodes.net:30303,enode://f24b54da77cf604e92aeb5ee5e79401fd3e66111563ca630e72330ccab6f385ccbbde5eba4577ee7bfb5e83347263d0e4cad042fd4c10468d0e38906fc82ba31@bera-testnet-seeds.nodeinfra.com:30303,enode://2e44e8e12b4666632dd2d4d555cfca5ceac4ca6cf6f45c46fc0ba27d1f9f7578dd598c74ae8b4189430a85b15d103c215a63cdbeafd41895fee1405a094fa77a@135.125.188.10:30303
- --chain=/config/eth-genesis.json - --chain=/config/eth-genesis.json
- --datadir=/root/.local/share/reth - --datadir=/root/.local/share/reth
- --discovery.port=14467 - --discovery.port=14467
- --engine.always-process-payload-attributes-on-canonical-head
- --engine.cross-block-cache-size=${BERACHAIN_BARTIO_RETH_STATE_CACHE:-4096} - --engine.cross-block-cache-size=${BERACHAIN_BARTIO_RETH_STATE_CACHE:-4096}
- --engine.memory-block-buffer-target=0
- --engine.persistence-threshold=0
- --full - --full
- --max-inbound-peers=50 - --max-inbound-peers=50
- --max-outbound-peers=50 - --max-outbound-peers=50
@@ -128,7 +152,7 @@ services:
context: ./berachain context: ./berachain
dockerfile: beacon-kit.Dockerfile dockerfile: beacon-kit.Dockerfile
args: args:
BEACONKIT_VERSION: ${BERACHAIN_BARTIO_BEACON_KIT_VERSION:-v1.1.3} BEACONKIT_VERSION: ${BERACHAIN_BARTIO_BEACON_KIT_VERSION:-v1.3.4}
BEACONKIT_IMAGE: ${BERACHAIN_BARTIO_BEACON_KIT_IMAGE:-ghcr.io/berachain/beacon-kit} BEACONKIT_IMAGE: ${BERACHAIN_BARTIO_BEACON_KIT_IMAGE:-ghcr.io/berachain/beacon-kit}
ports: ports:
- 19467:19467 - 19467:19467
@@ -145,6 +169,7 @@ services:
networks: networks:
- chains - chains
volumes: volumes:
- ${BERACHAIN_BARTIO_RETH_PRUNED_TRACE__BEACON_KIT_DATA:-berachain-bartio-reth-pruned-trace_beacon-kit}:/root/.beacond/data
- .jwtsecret:/jwtsecret:ro - .jwtsecret:/jwtsecret:ro
- berachain-bartio-reth-pruned-trace_config:/root/.beacond/config - berachain-bartio-reth-pruned-trace_config:/root/.beacond/config
logging: *logging-defaults logging: *logging-defaults

View File

@@ -14,6 +14,27 @@ x-logging-defaults: &logging-defaults
# if that file is found then the init script will merge them into any configured seeds from the environment variable. # if that file is found then the init script will merge them into any configured seeds from the environment variable.
# If the environment variable is empty and the file is found then the init script will use the seeds from the config.toml file that was # If the environment variable is empty and the file is found then the init script will use the seeds from the config.toml file that was
# downloaded in initialization from the repo above. # downloaded in initialization from the repo above.
#
# something wild that appeared to me was that I had to delete /var/lib/docker/volumes/rpc_berachain-bepolia-reth-archive-trace_config/_data/genesis.json
# after a fork of the chain to trigger a redownload of the genesis.json file and init of the node datadir.
#
# also it may be necessary to update the static peers and bootnodes from the repository to get it going again.
#
# frequently reth complains about never seeing a beacon client pushing for new blocks to sync to while the beacon client
# complains about reth being synching and it can't push new block hashes. force-recreate helps.
#
# this is honestly the most flaky constructs of all of the chains in this repository. they expect you to run their refrence setup
# and git pull to update and if something doesn't work to get a new chaindata snapshot.
#
# sometimes the genesis has to be updated and is a parameter to the reth node
# force-recreate on chain fork would do the trick I guess...
#
# don't forget to docker compose build from time to time...
#
# ETH_GENESIS_URL="https://raw.githubusercontent.com/berachain/beacon-kit/main/testing/networks/$CHAINID/eth-genesis.json"
# curl -sL "$ETH_GENESIS_URL" -o "$CONFIG_DIR/eth-genesis.json"
#
# something like this needs to be done sometimes when there is a fork of the chain somehow. may or may not be automated.
# Usage: # Usage:
# #
@@ -40,7 +61,7 @@ x-logging-defaults: &logging-defaults
services: services:
berachain-bepolia-reth: berachain-bepolia-reth:
image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/paradigmxyz/reth}:${BERACHAIN_BEPOLIA_RETH_VERSION:-v1.4.3} image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/berachain/bera-reth}:${BERACHAIN_BEPOLIA_RETH_VERSION:-v1.3.1}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -68,13 +89,16 @@ services:
- CHAINID=80069 - CHAINID=80069
- CHAINNAME=bepolia - CHAINNAME=bepolia
- CHAIN_SPEC=testnet - CHAIN_SPEC=testnet
entrypoint: [/bin/bash, -c, "trap 'exit 0' SIGTERM; while [ ! -f /config/eth-genesis.json ] && [ ! -f /tmp/stop ]; do sleep 1 & wait $!; done; exec reth node \"$@\"", --] entrypoint: [/bin/bash, -c, "trap 'exit 0' SIGTERM; while [ ! -f /config/eth-genesis.json ] && [ ! -f /tmp/stop ]; do sleep 1 & wait $!; done; exec bera-reth node \"$@\"", --]
command: command:
- --bootnodes=enode://879752877fe08e483eba228b7544ff2de4a90e8ddaa59f122dfbc5c3689ea3030a0bfe4532d6a411a936dadce84e7a89086dca39dc39b9119603d87469010d9e@34.152.29.103:30303,enode://11f28864a15162c66b4b23d20b91fe08fda1d541df778d8db33be72558e80489a785d3fcc870926d10b7a6b848c7c6319bc215481319e527ce54ac139c2f44dc@34.118.159.247:30303,enode://47f41b9ab5a45e880a78330d2ae3f95a61f5cb41f203bbc9c9ff0e37778fc6c7fd46a6ee103e65ac36df8c024075a33f535a03cd8d800800c27fa2699fa0182b@34.47.28.251:30303,enode://fe6d2429b582de7daf387c6e5436f05d9185965267b72b8b6b4924125b50afdad765a820213d73d2afbfe64a721160a1a94750b4874ed97ccbe97c51443d1c42@34.95.21.165:30303,enode://1273d68cb5a884630aff8c35a30f643ad739461a5f7c8d2d691dc65547d5ad023829e1b6bf128edddd032047cb5c13e9dcd0f93a5de4aa5b958cef5970541863@34.159.207.112:30303,enode://fac9c2a0f719ec0ebc9021e88ad32eb7c05f4f351993dab6e4c86ae3ef5a47cade21749281263221c2b5583437893f957ac282858fd8a00f75f9a495eb53ae4e@34.141.54.42:30303,enode://5c0d582c19ea9f19928cfd6b7e156372d051b5720f67a444c38b671b8119bb097abfd1e4b868a389ab4a65bb9b405ef837df0ae195c0f32a33c61c39ca54e8ab@34.107.71.151:30303,enode://59aec227e87f4cd7c0a24c6cb0f870ef77abcc0c6d640f5a536c597a206b3505f7963f6459c265952b7bed3c3f260edf8a1412bbdb05f0e59d6bd612dc4bf077@34.141.48.88:30303,enode://281e3927839de398cb571279b324b6251d92c8de79263648f24dd4e451499a7fb336354bd4b7dc616e439f804cdd518fe49789f20b060c6426020de2c1cb285a@35.240.139.2:30303,enode://ae3f2e3f2caffc82aa0a5f5c6036def3d0be046b9245651b61567b4743c3c4937c08cb075d4ac543b163045942028384f3ef93bb25f7d500b644a2aab78f6b46@34.87.140.47:30303,enode://59e79f22bbf1645c60666ba6c17c54845080473df80711807fb3a4fbefc26278f78c43fa44ea6e52db38c57f1fccf6caa2de7589ca6cce8e161c3120e7a8d0d8@35.198.214.183:30303,enode://91d6e1878f5ab434a36625ac9017b792179324d42f4650a8dcc38774578d7ffb68882ec56861155e738eb62a7365b8463bd26886523f60edcfbf6137b43b9b65@35.240.234.137:30303,enode://f55dc8bac635b9c3b9fad688e3200c6b0744e2930d8d8a8e91d1effc0cd91b0547da3eac6d8d1431f0dd130ccc20f3c856fc90e32002bfc1e27d3286eef8c570@34.47.125.153:30303,enode://13da5e4ff1ab3481966f8d83309d8bd898ef5fa56355da57e683bdcc26b4c205be40341c87236934610d0c0bdddf11f6cef495966bba0092465839b8942bc54c@34.47.93.104:30303,enode://c2d43cba3380df975e78befc7294fe07a042eab1c2b743bdf436274b884bcdd0ef218821ff24732ff2106bf796964ada13dbeb42e27756f2491710be402fce59@34.64.123.223:30303,enode://f5b93e79932028a30bacb1b1cd7e7d42b30fe69640c0081bb51e29483bfe715c698dfcf50a309f208743c0ef07884afa39d0c96c6e56a8e58ce7ff1181fdffa0@34.22.89.170:30303 - --bootnodes=enode://879752877fe08e483eba228b7544ff2de4a90e8ddaa59f122dfbc5c3689ea3030a0bfe4532d6a411a936dadce84e7a89086dca39dc39b9119603d87469010d9e@34.152.29.103:30303,enode://11f28864a15162c66b4b23d20b91fe08fda1d541df778d8db33be72558e80489a785d3fcc870926d10b7a6b848c7c6319bc215481319e527ce54ac139c2f44dc@34.118.159.247:30303,enode://47f41b9ab5a45e880a78330d2ae3f95a61f5cb41f203bbc9c9ff0e37778fc6c7fd46a6ee103e65ac36df8c024075a33f535a03cd8d800800c27fa2699fa0182b@34.47.28.251:30303,enode://fe6d2429b582de7daf387c6e5436f05d9185965267b72b8b6b4924125b50afdad765a820213d73d2afbfe64a721160a1a94750b4874ed97ccbe97c51443d1c42@34.95.21.165:30303,enode://1273d68cb5a884630aff8c35a30f643ad739461a5f7c8d2d691dc65547d5ad023829e1b6bf128edddd032047cb5c13e9dcd0f93a5de4aa5b958cef5970541863@34.159.207.112:30303,enode://fac9c2a0f719ec0ebc9021e88ad32eb7c05f4f351993dab6e4c86ae3ef5a47cade21749281263221c2b5583437893f957ac282858fd8a00f75f9a495eb53ae4e@34.141.54.42:30303,enode://5c0d582c19ea9f19928cfd6b7e156372d051b5720f67a444c38b671b8119bb097abfd1e4b868a389ab4a65bb9b405ef837df0ae195c0f32a33c61c39ca54e8ab@34.107.71.151:30303,enode://59aec227e87f4cd7c0a24c6cb0f870ef77abcc0c6d640f5a536c597a206b3505f7963f6459c265952b7bed3c3f260edf8a1412bbdb05f0e59d6bd612dc4bf077@34.141.48.88:30303,enode://281e3927839de398cb571279b324b6251d92c8de79263648f24dd4e451499a7fb336354bd4b7dc616e439f804cdd518fe49789f20b060c6426020de2c1cb285a@35.240.139.2:30303,enode://ae3f2e3f2caffc82aa0a5f5c6036def3d0be046b9245651b61567b4743c3c4937c08cb075d4ac543b163045942028384f3ef93bb25f7d500b644a2aab78f6b46@34.87.140.47:30303,enode://59e79f22bbf1645c60666ba6c17c54845080473df80711807fb3a4fbefc26278f78c43fa44ea6e52db38c57f1fccf6caa2de7589ca6cce8e161c3120e7a8d0d8@35.198.214.183:30303,enode://91d6e1878f5ab434a36625ac9017b792179324d42f4650a8dcc38774578d7ffb68882ec56861155e738eb62a7365b8463bd26886523f60edcfbf6137b43b9b65@35.240.234.137:30303,enode://f55dc8bac635b9c3b9fad688e3200c6b0744e2930d8d8a8e91d1effc0cd91b0547da3eac6d8d1431f0dd130ccc20f3c856fc90e32002bfc1e27d3286eef8c570@34.47.125.153:30303,enode://13da5e4ff1ab3481966f8d83309d8bd898ef5fa56355da57e683bdcc26b4c205be40341c87236934610d0c0bdddf11f6cef495966bba0092465839b8942bc54c@34.47.93.104:30303,enode://c2d43cba3380df975e78befc7294fe07a042eab1c2b743bdf436274b884bcdd0ef218821ff24732ff2106bf796964ada13dbeb42e27756f2491710be402fce59@34.64.123.223:30303,enode://f5b93e79932028a30bacb1b1cd7e7d42b30fe69640c0081bb51e29483bfe715c698dfcf50a309f208743c0ef07884afa39d0c96c6e56a8e58ce7ff1181fdffa0@34.22.89.170:30303
- --chain=/config/eth-genesis.json - --chain=/config/eth-genesis.json
- --datadir=/root/.local/share/reth - --datadir=/root/.local/share/reth
- --discovery.port=11347 - --discovery.port=11347
- --engine.always-process-payload-attributes-on-canonical-head
- --engine.cross-block-cache-size=${BERACHAIN_BEPOLIA_RETH_STATE_CACHE:-4096} - --engine.cross-block-cache-size=${BERACHAIN_BEPOLIA_RETH_STATE_CACHE:-4096}
- --engine.memory-block-buffer-target=0
- --engine.persistence-threshold=0
- --max-inbound-peers=50 - --max-inbound-peers=50
- --max-outbound-peers=50 - --max-outbound-peers=50
- --metrics=0.0.0.0:9001 - --metrics=0.0.0.0:9001
@@ -128,7 +152,7 @@ services:
context: ./berachain context: ./berachain
dockerfile: beacon-kit.Dockerfile dockerfile: beacon-kit.Dockerfile
args: args:
BEACONKIT_VERSION: ${BERACHAIN_BEPOLIA_BEACON_KIT_VERSION:-v1.2.0.rc2} BEACONKIT_VERSION: ${BERACHAIN_BEPOLIA_BEACON_KIT_VERSION:-v1.3.4}
BEACONKIT_IMAGE: ${BERACHAIN_BEPOLIA_BEACON_KIT_IMAGE:-ghcr.io/berachain/beacon-kit} BEACONKIT_IMAGE: ${BERACHAIN_BEPOLIA_BEACON_KIT_IMAGE:-ghcr.io/berachain/beacon-kit}
ports: ports:
- 16347:16347 - 16347:16347
@@ -147,6 +171,7 @@ services:
networks: networks:
- chains - chains
volumes: volumes:
- ${BERACHAIN_BEPOLIA_RETH_ARCHIVE_TRACE__BEACON_KIT_DATA:-berachain-bepolia-reth-archive-trace_beacon-kit}:/root/.beacond/data
- .jwtsecret:/jwtsecret:ro - .jwtsecret:/jwtsecret:ro
- berachain-bepolia-reth-archive-trace_config:/root/.beacond/config - berachain-bepolia-reth-archive-trace_config:/root/.beacond/config
logging: *logging-defaults logging: *logging-defaults

View File

@@ -14,6 +14,27 @@ x-logging-defaults: &logging-defaults
# if that file is found then the init script will merge them into any configured seeds from the environment variable. # if that file is found then the init script will merge them into any configured seeds from the environment variable.
# If the environment variable is empty and the file is found then the init script will use the seeds from the config.toml file that was # If the environment variable is empty and the file is found then the init script will use the seeds from the config.toml file that was
# downloaded in initialization from the repo above. # downloaded in initialization from the repo above.
#
# something wild that appeared to me was that I had to delete /var/lib/docker/volumes/rpc_berachain-bepolia-reth-archive-trace_config/_data/genesis.json
# after a fork of the chain to trigger a redownload of the genesis.json file and init of the node datadir.
#
# also it may be necessary to update the static peers and bootnodes from the repository to get it going again.
#
# frequently reth complains about never seeing a beacon client pushing for new blocks to sync to while the beacon client
# complains about reth being synching and it can't push new block hashes. force-recreate helps.
#
# this is honestly the most flaky constructs of all of the chains in this repository. they expect you to run their refrence setup
# and git pull to update and if something doesn't work to get a new chaindata snapshot.
#
# sometimes the genesis has to be updated and is a parameter to the reth node
# force-recreate on chain fork would do the trick I guess...
#
# don't forget to docker compose build from time to time...
#
# ETH_GENESIS_URL="https://raw.githubusercontent.com/berachain/beacon-kit/main/testing/networks/$CHAINID/eth-genesis.json"
# curl -sL "$ETH_GENESIS_URL" -o "$CONFIG_DIR/eth-genesis.json"
#
# something like this needs to be done sometimes when there is a fork of the chain somehow. may or may not be automated.
# Usage: # Usage:
# #
@@ -40,7 +61,7 @@ x-logging-defaults: &logging-defaults
services: services:
berachain-bepolia-reth-pruned: berachain-bepolia-reth-pruned:
image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/paradigmxyz/reth}:${BERACHAIN_BEPOLIA_RETH_VERSION:-v1.4.3} image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/berachain/bera-reth}:${BERACHAIN_BEPOLIA_RETH_VERSION:-v1.3.1}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -68,13 +89,16 @@ services:
- CHAINID=80069 - CHAINID=80069
- CHAINNAME=bepolia - CHAINNAME=bepolia
- CHAIN_SPEC=testnet - CHAIN_SPEC=testnet
entrypoint: [/bin/bash, -c, "trap 'exit 0' SIGTERM; while [ ! -f /config/eth-genesis.json ] && [ ! -f /tmp/stop ]; do sleep 1 & wait $!; done; exec reth node \"$@\"", --] entrypoint: [/bin/bash, -c, "trap 'exit 0' SIGTERM; while [ ! -f /config/eth-genesis.json ] && [ ! -f /tmp/stop ]; do sleep 1 & wait $!; done; exec bera-reth node \"$@\"", --]
command: command:
- --bootnodes=enode://879752877fe08e483eba228b7544ff2de4a90e8ddaa59f122dfbc5c3689ea3030a0bfe4532d6a411a936dadce84e7a89086dca39dc39b9119603d87469010d9e@34.152.29.103:30303,enode://11f28864a15162c66b4b23d20b91fe08fda1d541df778d8db33be72558e80489a785d3fcc870926d10b7a6b848c7c6319bc215481319e527ce54ac139c2f44dc@34.118.159.247:30303,enode://47f41b9ab5a45e880a78330d2ae3f95a61f5cb41f203bbc9c9ff0e37778fc6c7fd46a6ee103e65ac36df8c024075a33f535a03cd8d800800c27fa2699fa0182b@34.47.28.251:30303,enode://fe6d2429b582de7daf387c6e5436f05d9185965267b72b8b6b4924125b50afdad765a820213d73d2afbfe64a721160a1a94750b4874ed97ccbe97c51443d1c42@34.95.21.165:30303,enode://1273d68cb5a884630aff8c35a30f643ad739461a5f7c8d2d691dc65547d5ad023829e1b6bf128edddd032047cb5c13e9dcd0f93a5de4aa5b958cef5970541863@34.159.207.112:30303,enode://fac9c2a0f719ec0ebc9021e88ad32eb7c05f4f351993dab6e4c86ae3ef5a47cade21749281263221c2b5583437893f957ac282858fd8a00f75f9a495eb53ae4e@34.141.54.42:30303,enode://5c0d582c19ea9f19928cfd6b7e156372d051b5720f67a444c38b671b8119bb097abfd1e4b868a389ab4a65bb9b405ef837df0ae195c0f32a33c61c39ca54e8ab@34.107.71.151:30303,enode://59aec227e87f4cd7c0a24c6cb0f870ef77abcc0c6d640f5a536c597a206b3505f7963f6459c265952b7bed3c3f260edf8a1412bbdb05f0e59d6bd612dc4bf077@34.141.48.88:30303,enode://281e3927839de398cb571279b324b6251d92c8de79263648f24dd4e451499a7fb336354bd4b7dc616e439f804cdd518fe49789f20b060c6426020de2c1cb285a@35.240.139.2:30303,enode://ae3f2e3f2caffc82aa0a5f5c6036def3d0be046b9245651b61567b4743c3c4937c08cb075d4ac543b163045942028384f3ef93bb25f7d500b644a2aab78f6b46@34.87.140.47:30303,enode://59e79f22bbf1645c60666ba6c17c54845080473df80711807fb3a4fbefc26278f78c43fa44ea6e52db38c57f1fccf6caa2de7589ca6cce8e161c3120e7a8d0d8@35.198.214.183:30303,enode://91d6e1878f5ab434a36625ac9017b792179324d42f4650a8dcc38774578d7ffb68882ec56861155e738eb62a7365b8463bd26886523f60edcfbf6137b43b9b65@35.240.234.137:30303,enode://f55dc8bac635b9c3b9fad688e3200c6b0744e2930d8d8a8e91d1effc0cd91b0547da3eac6d8d1431f0dd130ccc20f3c856fc90e32002bfc1e27d3286eef8c570@34.47.125.153:30303,enode://13da5e4ff1ab3481966f8d83309d8bd898ef5fa56355da57e683bdcc26b4c205be40341c87236934610d0c0bdddf11f6cef495966bba0092465839b8942bc54c@34.47.93.104:30303,enode://c2d43cba3380df975e78befc7294fe07a042eab1c2b743bdf436274b884bcdd0ef218821ff24732ff2106bf796964ada13dbeb42e27756f2491710be402fce59@34.64.123.223:30303,enode://f5b93e79932028a30bacb1b1cd7e7d42b30fe69640c0081bb51e29483bfe715c698dfcf50a309f208743c0ef07884afa39d0c96c6e56a8e58ce7ff1181fdffa0@34.22.89.170:30303 - --bootnodes=enode://879752877fe08e483eba228b7544ff2de4a90e8ddaa59f122dfbc5c3689ea3030a0bfe4532d6a411a936dadce84e7a89086dca39dc39b9119603d87469010d9e@34.152.29.103:30303,enode://11f28864a15162c66b4b23d20b91fe08fda1d541df778d8db33be72558e80489a785d3fcc870926d10b7a6b848c7c6319bc215481319e527ce54ac139c2f44dc@34.118.159.247:30303,enode://47f41b9ab5a45e880a78330d2ae3f95a61f5cb41f203bbc9c9ff0e37778fc6c7fd46a6ee103e65ac36df8c024075a33f535a03cd8d800800c27fa2699fa0182b@34.47.28.251:30303,enode://fe6d2429b582de7daf387c6e5436f05d9185965267b72b8b6b4924125b50afdad765a820213d73d2afbfe64a721160a1a94750b4874ed97ccbe97c51443d1c42@34.95.21.165:30303,enode://1273d68cb5a884630aff8c35a30f643ad739461a5f7c8d2d691dc65547d5ad023829e1b6bf128edddd032047cb5c13e9dcd0f93a5de4aa5b958cef5970541863@34.159.207.112:30303,enode://fac9c2a0f719ec0ebc9021e88ad32eb7c05f4f351993dab6e4c86ae3ef5a47cade21749281263221c2b5583437893f957ac282858fd8a00f75f9a495eb53ae4e@34.141.54.42:30303,enode://5c0d582c19ea9f19928cfd6b7e156372d051b5720f67a444c38b671b8119bb097abfd1e4b868a389ab4a65bb9b405ef837df0ae195c0f32a33c61c39ca54e8ab@34.107.71.151:30303,enode://59aec227e87f4cd7c0a24c6cb0f870ef77abcc0c6d640f5a536c597a206b3505f7963f6459c265952b7bed3c3f260edf8a1412bbdb05f0e59d6bd612dc4bf077@34.141.48.88:30303,enode://281e3927839de398cb571279b324b6251d92c8de79263648f24dd4e451499a7fb336354bd4b7dc616e439f804cdd518fe49789f20b060c6426020de2c1cb285a@35.240.139.2:30303,enode://ae3f2e3f2caffc82aa0a5f5c6036def3d0be046b9245651b61567b4743c3c4937c08cb075d4ac543b163045942028384f3ef93bb25f7d500b644a2aab78f6b46@34.87.140.47:30303,enode://59e79f22bbf1645c60666ba6c17c54845080473df80711807fb3a4fbefc26278f78c43fa44ea6e52db38c57f1fccf6caa2de7589ca6cce8e161c3120e7a8d0d8@35.198.214.183:30303,enode://91d6e1878f5ab434a36625ac9017b792179324d42f4650a8dcc38774578d7ffb68882ec56861155e738eb62a7365b8463bd26886523f60edcfbf6137b43b9b65@35.240.234.137:30303,enode://f55dc8bac635b9c3b9fad688e3200c6b0744e2930d8d8a8e91d1effc0cd91b0547da3eac6d8d1431f0dd130ccc20f3c856fc90e32002bfc1e27d3286eef8c570@34.47.125.153:30303,enode://13da5e4ff1ab3481966f8d83309d8bd898ef5fa56355da57e683bdcc26b4c205be40341c87236934610d0c0bdddf11f6cef495966bba0092465839b8942bc54c@34.47.93.104:30303,enode://c2d43cba3380df975e78befc7294fe07a042eab1c2b743bdf436274b884bcdd0ef218821ff24732ff2106bf796964ada13dbeb42e27756f2491710be402fce59@34.64.123.223:30303,enode://f5b93e79932028a30bacb1b1cd7e7d42b30fe69640c0081bb51e29483bfe715c698dfcf50a309f208743c0ef07884afa39d0c96c6e56a8e58ce7ff1181fdffa0@34.22.89.170:30303
- --chain=/config/eth-genesis.json - --chain=/config/eth-genesis.json
- --datadir=/root/.local/share/reth - --datadir=/root/.local/share/reth
- --discovery.port=12274 - --discovery.port=12274
- --engine.always-process-payload-attributes-on-canonical-head
- --engine.cross-block-cache-size=${BERACHAIN_BEPOLIA_RETH_STATE_CACHE:-4096} - --engine.cross-block-cache-size=${BERACHAIN_BEPOLIA_RETH_STATE_CACHE:-4096}
- --engine.memory-block-buffer-target=0
- --engine.persistence-threshold=0
- --full - --full
- --max-inbound-peers=50 - --max-inbound-peers=50
- --max-outbound-peers=50 - --max-outbound-peers=50
@@ -129,7 +153,7 @@ services:
context: ./berachain context: ./berachain
dockerfile: beacon-kit.Dockerfile dockerfile: beacon-kit.Dockerfile
args: args:
BEACONKIT_VERSION: ${BERACHAIN_BEPOLIA_BEACON_KIT_VERSION:-v1.2.0.rc2} BEACONKIT_VERSION: ${BERACHAIN_BEPOLIA_BEACON_KIT_VERSION:-v1.3.4}
BEACONKIT_IMAGE: ${BERACHAIN_BEPOLIA_BEACON_KIT_IMAGE:-ghcr.io/berachain/beacon-kit} BEACONKIT_IMAGE: ${BERACHAIN_BEPOLIA_BEACON_KIT_IMAGE:-ghcr.io/berachain/beacon-kit}
ports: ports:
- 17274:17274 - 17274:17274
@@ -148,6 +172,7 @@ services:
networks: networks:
- chains - chains
volumes: volumes:
- ${BERACHAIN_BEPOLIA_RETH_PRUNED_TRACE__BEACON_KIT_DATA:-berachain-bepolia-reth-pruned-trace_beacon-kit}:/root/.beacond/data
- .jwtsecret:/jwtsecret:ro - .jwtsecret:/jwtsecret:ro
- berachain-bepolia-reth-pruned-trace_config:/root/.beacond/config - berachain-bepolia-reth-pruned-trace_config:/root/.beacond/config
logging: *logging-defaults logging: *logging-defaults

View File

@@ -14,6 +14,27 @@ x-logging-defaults: &logging-defaults
# if that file is found then the init script will merge them into any configured seeds from the environment variable. # if that file is found then the init script will merge them into any configured seeds from the environment variable.
# If the environment variable is empty and the file is found then the init script will use the seeds from the config.toml file that was # If the environment variable is empty and the file is found then the init script will use the seeds from the config.toml file that was
# downloaded in initialization from the repo above. # downloaded in initialization from the repo above.
#
# something wild that appeared to me was that I had to delete /var/lib/docker/volumes/rpc_berachain-bepolia-reth-archive-trace_config/_data/genesis.json
# after a fork of the chain to trigger a redownload of the genesis.json file and init of the node datadir.
#
# also it may be necessary to update the static peers and bootnodes from the repository to get it going again.
#
# frequently reth complains about never seeing a beacon client pushing for new blocks to sync to while the beacon client
# complains about reth being synching and it can't push new block hashes. force-recreate helps.
#
# this is honestly the most flaky constructs of all of the chains in this repository. they expect you to run their refrence setup
# and git pull to update and if something doesn't work to get a new chaindata snapshot.
#
# sometimes the genesis has to be updated and is a parameter to the reth node
# force-recreate on chain fork would do the trick I guess...
#
# don't forget to docker compose build from time to time...
#
# ETH_GENESIS_URL="https://raw.githubusercontent.com/berachain/beacon-kit/main/testing/networks/$CHAINID/eth-genesis.json"
# curl -sL "$ETH_GENESIS_URL" -o "$CONFIG_DIR/eth-genesis.json"
#
# something like this needs to be done sometimes when there is a fork of the chain somehow. may or may not be automated.
# Usage: # Usage:
# #
@@ -40,7 +61,7 @@ x-logging-defaults: &logging-defaults
services: services:
berachain-mainnet-reth: berachain-mainnet-reth:
image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/paradigmxyz/reth}:${BERACHAIN_MAINNET_RETH_VERSION:-v1.4.3} image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/berachain/bera-reth}:${BERACHAIN_MAINNET_RETH_VERSION:-v1.3.1}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -64,17 +85,20 @@ services:
- 9001 - 9001
- 8551 - 8551
environment: environment:
- BOOTNODES=enode://0c5a4a3c0e81fce2974e4d317d88df783731183d534325e32e0fdf8f4b119d7889fa254d3a38890606ec300d744e2aa9c87099a4a032f5c94efe53f3fcdfecfe@34.22.104.177:30303,enode://b6a3137d3a36ef37c4d31843775a9dc293f41bcbde33b6309c80b1771b6634827cd188285136a57474427bd8845adc2f6fe2e0b106bd58d14795b08910b9c326@34.64.247.85:30303,enode://0b6633300614bc2b9749aee0cace7a091ec5348762aee7b1d195f7616d03a9409019d9bef336624bab72e0d069cd4cf0b0de6fbbf53f04f6b6e4c5b39c6bdca6@34.22.73.21:30303,enode://552b001abebb5805fcd734ad367cd05d9078d18f23ec598d7165460fadcfc51116ad95c418f7ea9a141aa8cbc496c8bea3322b67a5de0d3380f11aab1a797513@34.64.37.55:30303,enode://5b037f66099d5ded86eb7e1619f6d06ceb15609e8cc345ced22a4772b06178004e1490a3cd32fd1222789de4c6e4021c2d648a3d750f6d5323e64b771bbd8de7@35.247.182.34:30303,enode://846db253c53753d3ea1197aec296306dc84c25f3afdf142b65cb0fe0f984de55072daa3bbf05a9aea046a38a2292403137b6eafefd5646fcf62120b74e3b898d@34.87.9.231:30303,enode://64b7f6ee9bcd942ad4949c70f2077627f078a057dfd930e6e904e12643d8952f5ae87c91e24559765393f244a72c9d5c011d7d5176e59191d38f315db85a20f5@34.126.78.49:30303,enode://cf4d19bfb8ec507427ec882bac0bac85a0c8c9ddaa0ec91b773bb614e5e09d107cd9fbe323b96f62f31c493f8f42cc5495c18b87c08560c5dea1dfd25256dcf6@35.240.200.36:30303,enode://bb7e44178543431feac8f0ee3827056b7b84d8235b802a8bdbbcd4939dab7f7dd2579ff577a38b002bb0139792af67abd2dd5c9f4f85b8da6e914fa76dca82bc@34.40.14.50:30303,enode://8fef1f5df45e7b31be00a21e1da5665d5a5f5bf4c379086b843f03eade941bdd157f08c95b31880c492577edb9a9b185df7191eaebf54ab06d5bd683b289f3af@35.246.168.217:30303,enode://ce9c87cfe089f6811d26c96913fa3ec10b938d9017fc6246684c74a33679ee34ceca9447180fb509e37bf2b706c2877a82085d34bfd83b5b520ee1288b0fc32f@34.40.28.159:30303,enode://713657eb6a53feadcbc47e634ad557326a51eb6818a3e19a00a8111492f50a666ccbf2f5d334d247ecf941e68d242ef5c3b812b63c44d381ef11f79c2cdb45c7@35.234.82.236:30303,enode://d071fa740e063ce1bb9cdc2b7937baeff6dc4000f91588d730a731c38a6ff0d4015814812c160fab8695e46f74b9b618735368ea2f16db4d785f16d29b3fb7b0@35.203.86.197:30303,enode://ffc452fe451a2e5f89fe634744aea334d92dcd30d881b76209d2db7dbf4b7ee047e7c69a5bb1633764d987a7441d9c4bc57ccdbfd6442a2f860bf953bc89a9b9@34.118.187.161:30303,enode://da94328302a1d1422209d1916744e90b6095a48b2340dcec39b22002c098bb4d58a880dab98eb26edf03fa4705d1b62f99a8c5c14e6666e4726b6d3066d8a4d7@34.95.30.190:30303,enode://19c7671a4844699b481e81a5bcfe7bafc7fefa953c16ebbe1951b1046371e73839e9058de6b7d3c934318fe7e7233dde3621c1c1018eb8b294ea3d4516147150@34.47.60.196:30303 - BOOTNODES=enode://0c5a4a3c0e81fce2974e4d317d88df783731183d534325e32e0fdf8f4b119d7889fa254d3a38890606ec300d744e2aa9c87099a4a032f5c94efe53f3fcdfecfe@34.64.176.79:30303,enode://b6a3137d3a36ef37c4d31843775a9dc293f41bcbde33b6309c80b1771b6634827cd188285136a57474427bd8845adc2f6fe2e0b106bd58d14795b08910b9c326@34.64.181.70:30303,enode://0b6633300614bc2b9749aee0cace7a091ec5348762aee7b1d195f7616d03a9409019d9bef336624bab72e0d069cd4cf0b0de6fbbf53f04f6b6e4c5b39c6bdca6@34.64.39.31:30303,enode://552b001abebb5805fcd734ad367cd05d9078d18f23ec598d7165460fadcfc51116ad95c418f7ea9a141aa8cbc496c8bea3322b67a5de0d3380f11aab1a797513@34.64.183.158:30303,enode://5b037f66099d5ded86eb7e1619f6d06ceb15609e8cc345ced22a4772b06178004e1490a3cd32fd1222789de4c6e4021c2d648a3d750f6d5323e64b771bbd8de7@34.87.142.180:30303,enode://846db253c53753d3ea1197aec296306dc84c25f3afdf142b65cb0fe0f984de55072daa3bbf05a9aea046a38a2292403137b6eafefd5646fcf62120b74e3b898d@34.142.170.110:30303,enode://64b7f6ee9bcd942ad4949c70f2077627f078a057dfd930e6e904e12643d8952f5ae87c91e24559765393f244a72c9d5c011d7d5176e59191d38f315db85a20f5@34.126.161.16:30303,enode://cf4d19bfb8ec507427ec882bac0bac85a0c8c9ddaa0ec91b773bb614e5e09d107cd9fbe323b96f62f31c493f8f42cc5495c18b87c08560c5dea1dfd25256dcf6@35.247.162.2:30303,enode://bb7e44178543431feac8f0ee3827056b7b84d8235b802a8bdbbcd4939dab7f7dd2579ff577a38b002bb0139792af67abd2dd5c9f4f85b8da6e914fa76dca82bc@35.198.150.35:30303,enode://8fef1f5df45e7b31be00a21e1da5665d5a5f5bf4c379086b843f03eade941bdd157f08c95b31880c492577edb9a9b185df7191eaebf54ab06d5bd683b289f3af@34.107.7.241:30303,enode://ce9c87cfe089f6811d26c96913fa3ec10b938d9017fc6246684c74a33679ee34ceca9447180fb509e37bf2b706c2877a82085d34bfd83b5b520ee1288b0fc32f@35.198.109.49:30303,enode://713657eb6a53feadcbc47e634ad557326a51eb6818a3e19a00a8111492f50a666ccbf2f5d334d247ecf941e68d242ef5c3b812b63c44d381ef11f79c2cdb45c7@34.141.15.100:30303,enode://d071fa740e063ce1bb9cdc2b7937baeff6dc4000f91588d730a731c38a6ff0d4015814812c160fab8695e46f74b9b618735368ea2f16db4d785f16d29b3fb7b0@35.203.2.210:30303,enode://ffc452fe451a2e5f89fe634744aea334d92dcd30d881b76209d2db7dbf4b7ee047e7c69a5bb1633764d987a7441d9c4bc57ccdbfd6442a2f860bf953bc89a9b9@34.152.50.224:30303,enode://da94328302a1d1422209d1916744e90b6095a48b2340dcec39b22002c098bb4d58a880dab98eb26edf03fa4705d1b62f99a8c5c14e6666e4726b6d3066d8a4d7@34.95.61.106:30303,enode://19c7671a4844699b481e81a5bcfe7bafc7fefa953c16ebbe1951b1046371e73839e9058de6b7d3c934318fe7e7233dde3621c1c1018eb8b294ea3d4516147150@35.203.82.137:30303
- CHAINID=80094 - CHAINID=80094
- CHAINNAME=mainnet - CHAINNAME=mainnet
- CHAIN_SPEC=mainnet - CHAIN_SPEC=mainnet
entrypoint: [/bin/bash, -c, "trap 'exit 0' SIGTERM; while [ ! -f /config/eth-genesis.json ] && [ ! -f /tmp/stop ]; do sleep 1 & wait $!; done; exec reth node \"$@\"", --] entrypoint: [/bin/bash, -c, "trap 'exit 0' SIGTERM; while [ ! -f /config/eth-genesis.json ] && [ ! -f /tmp/stop ]; do sleep 1 & wait $!; done; exec bera-reth node \"$@\"", --]
command: command:
- --bootnodes=enode://0c5a4a3c0e81fce2974e4d317d88df783731183d534325e32e0fdf8f4b119d7889fa254d3a38890606ec300d744e2aa9c87099a4a032f5c94efe53f3fcdfecfe@34.22.104.177:30303,enode://b6a3137d3a36ef37c4d31843775a9dc293f41bcbde33b6309c80b1771b6634827cd188285136a57474427bd8845adc2f6fe2e0b106bd58d14795b08910b9c326@34.64.247.85:30303,enode://0b6633300614bc2b9749aee0cace7a091ec5348762aee7b1d195f7616d03a9409019d9bef336624bab72e0d069cd4cf0b0de6fbbf53f04f6b6e4c5b39c6bdca6@34.22.73.21:30303,enode://552b001abebb5805fcd734ad367cd05d9078d18f23ec598d7165460fadcfc51116ad95c418f7ea9a141aa8cbc496c8bea3322b67a5de0d3380f11aab1a797513@34.64.37.55:30303,enode://5b037f66099d5ded86eb7e1619f6d06ceb15609e8cc345ced22a4772b06178004e1490a3cd32fd1222789de4c6e4021c2d648a3d750f6d5323e64b771bbd8de7@35.247.182.34:30303,enode://846db253c53753d3ea1197aec296306dc84c25f3afdf142b65cb0fe0f984de55072daa3bbf05a9aea046a38a2292403137b6eafefd5646fcf62120b74e3b898d@34.87.9.231:30303,enode://64b7f6ee9bcd942ad4949c70f2077627f078a057dfd930e6e904e12643d8952f5ae87c91e24559765393f244a72c9d5c011d7d5176e59191d38f315db85a20f5@34.126.78.49:30303,enode://cf4d19bfb8ec507427ec882bac0bac85a0c8c9ddaa0ec91b773bb614e5e09d107cd9fbe323b96f62f31c493f8f42cc5495c18b87c08560c5dea1dfd25256dcf6@35.240.200.36:30303,enode://bb7e44178543431feac8f0ee3827056b7b84d8235b802a8bdbbcd4939dab7f7dd2579ff577a38b002bb0139792af67abd2dd5c9f4f85b8da6e914fa76dca82bc@34.40.14.50:30303,enode://8fef1f5df45e7b31be00a21e1da5665d5a5f5bf4c379086b843f03eade941bdd157f08c95b31880c492577edb9a9b185df7191eaebf54ab06d5bd683b289f3af@35.246.168.217:30303,enode://ce9c87cfe089f6811d26c96913fa3ec10b938d9017fc6246684c74a33679ee34ceca9447180fb509e37bf2b706c2877a82085d34bfd83b5b520ee1288b0fc32f@34.40.28.159:30303,enode://713657eb6a53feadcbc47e634ad557326a51eb6818a3e19a00a8111492f50a666ccbf2f5d334d247ecf941e68d242ef5c3b812b63c44d381ef11f79c2cdb45c7@35.234.82.236:30303,enode://d071fa740e063ce1bb9cdc2b7937baeff6dc4000f91588d730a731c38a6ff0d4015814812c160fab8695e46f74b9b618735368ea2f16db4d785f16d29b3fb7b0@35.203.86.197:30303,enode://ffc452fe451a2e5f89fe634744aea334d92dcd30d881b76209d2db7dbf4b7ee047e7c69a5bb1633764d987a7441d9c4bc57ccdbfd6442a2f860bf953bc89a9b9@34.118.187.161:30303,enode://da94328302a1d1422209d1916744e90b6095a48b2340dcec39b22002c098bb4d58a880dab98eb26edf03fa4705d1b62f99a8c5c14e6666e4726b6d3066d8a4d7@34.95.30.190:30303,enode://19c7671a4844699b481e81a5bcfe7bafc7fefa953c16ebbe1951b1046371e73839e9058de6b7d3c934318fe7e7233dde3621c1c1018eb8b294ea3d4516147150@34.47.60.196:30303 - --bootnodes=enode://0c5a4a3c0e81fce2974e4d317d88df783731183d534325e32e0fdf8f4b119d7889fa254d3a38890606ec300d744e2aa9c87099a4a032f5c94efe53f3fcdfecfe@34.64.176.79:30303,enode://b6a3137d3a36ef37c4d31843775a9dc293f41bcbde33b6309c80b1771b6634827cd188285136a57474427bd8845adc2f6fe2e0b106bd58d14795b08910b9c326@34.64.181.70:30303,enode://0b6633300614bc2b9749aee0cace7a091ec5348762aee7b1d195f7616d03a9409019d9bef336624bab72e0d069cd4cf0b0de6fbbf53f04f6b6e4c5b39c6bdca6@34.64.39.31:30303,enode://552b001abebb5805fcd734ad367cd05d9078d18f23ec598d7165460fadcfc51116ad95c418f7ea9a141aa8cbc496c8bea3322b67a5de0d3380f11aab1a797513@34.64.183.158:30303,enode://5b037f66099d5ded86eb7e1619f6d06ceb15609e8cc345ced22a4772b06178004e1490a3cd32fd1222789de4c6e4021c2d648a3d750f6d5323e64b771bbd8de7@34.87.142.180:30303,enode://846db253c53753d3ea1197aec296306dc84c25f3afdf142b65cb0fe0f984de55072daa3bbf05a9aea046a38a2292403137b6eafefd5646fcf62120b74e3b898d@34.142.170.110:30303,enode://64b7f6ee9bcd942ad4949c70f2077627f078a057dfd930e6e904e12643d8952f5ae87c91e24559765393f244a72c9d5c011d7d5176e59191d38f315db85a20f5@34.126.161.16:30303,enode://cf4d19bfb8ec507427ec882bac0bac85a0c8c9ddaa0ec91b773bb614e5e09d107cd9fbe323b96f62f31c493f8f42cc5495c18b87c08560c5dea1dfd25256dcf6@35.247.162.2:30303,enode://bb7e44178543431feac8f0ee3827056b7b84d8235b802a8bdbbcd4939dab7f7dd2579ff577a38b002bb0139792af67abd2dd5c9f4f85b8da6e914fa76dca82bc@35.198.150.35:30303,enode://8fef1f5df45e7b31be00a21e1da5665d5a5f5bf4c379086b843f03eade941bdd157f08c95b31880c492577edb9a9b185df7191eaebf54ab06d5bd683b289f3af@34.107.7.241:30303,enode://ce9c87cfe089f6811d26c96913fa3ec10b938d9017fc6246684c74a33679ee34ceca9447180fb509e37bf2b706c2877a82085d34bfd83b5b520ee1288b0fc32f@35.198.109.49:30303,enode://713657eb6a53feadcbc47e634ad557326a51eb6818a3e19a00a8111492f50a666ccbf2f5d334d247ecf941e68d242ef5c3b812b63c44d381ef11f79c2cdb45c7@34.141.15.100:30303,enode://d071fa740e063ce1bb9cdc2b7937baeff6dc4000f91588d730a731c38a6ff0d4015814812c160fab8695e46f74b9b618735368ea2f16db4d785f16d29b3fb7b0@35.203.2.210:30303,enode://ffc452fe451a2e5f89fe634744aea334d92dcd30d881b76209d2db7dbf4b7ee047e7c69a5bb1633764d987a7441d9c4bc57ccdbfd6442a2f860bf953bc89a9b9@34.152.50.224:30303,enode://da94328302a1d1422209d1916744e90b6095a48b2340dcec39b22002c098bb4d58a880dab98eb26edf03fa4705d1b62f99a8c5c14e6666e4726b6d3066d8a4d7@34.95.61.106:30303,enode://19c7671a4844699b481e81a5bcfe7bafc7fefa953c16ebbe1951b1046371e73839e9058de6b7d3c934318fe7e7233dde3621c1c1018eb8b294ea3d4516147150@35.203.82.137:30303
- --chain=/config/eth-genesis.json - --chain=/config/eth-genesis.json
- --datadir=/root/.local/share/reth - --datadir=/root/.local/share/reth
- --discovery.port=12881 - --discovery.port=12881
- --engine.always-process-payload-attributes-on-canonical-head
- --engine.cross-block-cache-size=${BERACHAIN_MAINNET_RETH_STATE_CACHE:-4096} - --engine.cross-block-cache-size=${BERACHAIN_MAINNET_RETH_STATE_CACHE:-4096}
- --engine.memory-block-buffer-target=0
- --engine.persistence-threshold=0
- --max-inbound-peers=50 - --max-inbound-peers=50
- --max-outbound-peers=50 - --max-outbound-peers=50
- --metrics=0.0.0.0:9001 - --metrics=0.0.0.0:9001
@@ -128,7 +152,7 @@ services:
context: ./berachain context: ./berachain
dockerfile: beacon-kit.Dockerfile dockerfile: beacon-kit.Dockerfile
args: args:
BEACONKIT_VERSION: ${BERACHAIN_MAINNET_BEACON_KIT_VERSION:-v1.1.3} BEACONKIT_VERSION: ${BERACHAIN_MAINNET_BEACON_KIT_VERSION:-v1.3.4}
BEACONKIT_IMAGE: ${BERACHAIN_MAINNET_BEACON_KIT_IMAGE:-ghcr.io/berachain/beacon-kit} BEACONKIT_IMAGE: ${BERACHAIN_MAINNET_BEACON_KIT_IMAGE:-ghcr.io/berachain/beacon-kit}
ports: ports:
- 17881:17881 - 17881:17881
@@ -145,6 +169,7 @@ services:
networks: networks:
- chains - chains
volumes: volumes:
- ${BERACHAIN_MAINNET_RETH_ARCHIVE_TRACE__BEACON_KIT_DATA:-berachain-mainnet-reth-archive-trace_beacon-kit}:/root/.beacond/data
- .jwtsecret:/jwtsecret:ro - .jwtsecret:/jwtsecret:ro
- berachain-mainnet-reth-archive-trace_config:/root/.beacond/config - berachain-mainnet-reth-archive-trace_config:/root/.beacond/config
logging: *logging-defaults logging: *logging-defaults

View File

@@ -14,6 +14,27 @@ x-logging-defaults: &logging-defaults
# if that file is found then the init script will merge them into any configured seeds from the environment variable. # if that file is found then the init script will merge them into any configured seeds from the environment variable.
# If the environment variable is empty and the file is found then the init script will use the seeds from the config.toml file that was # If the environment variable is empty and the file is found then the init script will use the seeds from the config.toml file that was
# downloaded in initialization from the repo above. # downloaded in initialization from the repo above.
#
# something wild that appeared to me was that I had to delete /var/lib/docker/volumes/rpc_berachain-bepolia-reth-archive-trace_config/_data/genesis.json
# after a fork of the chain to trigger a redownload of the genesis.json file and init of the node datadir.
#
# also it may be necessary to update the static peers and bootnodes from the repository to get it going again.
#
# frequently reth complains about never seeing a beacon client pushing for new blocks to sync to while the beacon client
# complains about reth being synching and it can't push new block hashes. force-recreate helps.
#
# this is honestly the most flaky constructs of all of the chains in this repository. they expect you to run their refrence setup
# and git pull to update and if something doesn't work to get a new chaindata snapshot.
#
# sometimes the genesis has to be updated and is a parameter to the reth node
# force-recreate on chain fork would do the trick I guess...
#
# don't forget to docker compose build from time to time...
#
# ETH_GENESIS_URL="https://raw.githubusercontent.com/berachain/beacon-kit/main/testing/networks/$CHAINID/eth-genesis.json"
# curl -sL "$ETH_GENESIS_URL" -o "$CONFIG_DIR/eth-genesis.json"
#
# something like this needs to be done sometimes when there is a fork of the chain somehow. may or may not be automated.
# Usage: # Usage:
# #
@@ -40,7 +61,7 @@ x-logging-defaults: &logging-defaults
services: services:
berachain-mainnet-reth-pruned: berachain-mainnet-reth-pruned:
image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/paradigmxyz/reth}:${BERACHAIN_MAINNET_RETH_VERSION:-v1.4.3} image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/berachain/bera-reth}:${BERACHAIN_MAINNET_RETH_VERSION:-v1.3.1}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -64,17 +85,20 @@ services:
- 9001 - 9001
- 8551 - 8551
environment: environment:
- BOOTNODES=enode://0c5a4a3c0e81fce2974e4d317d88df783731183d534325e32e0fdf8f4b119d7889fa254d3a38890606ec300d744e2aa9c87099a4a032f5c94efe53f3fcdfecfe@34.22.104.177:30303,enode://b6a3137d3a36ef37c4d31843775a9dc293f41bcbde33b6309c80b1771b6634827cd188285136a57474427bd8845adc2f6fe2e0b106bd58d14795b08910b9c326@34.64.247.85:30303,enode://0b6633300614bc2b9749aee0cace7a091ec5348762aee7b1d195f7616d03a9409019d9bef336624bab72e0d069cd4cf0b0de6fbbf53f04f6b6e4c5b39c6bdca6@34.22.73.21:30303,enode://552b001abebb5805fcd734ad367cd05d9078d18f23ec598d7165460fadcfc51116ad95c418f7ea9a141aa8cbc496c8bea3322b67a5de0d3380f11aab1a797513@34.64.37.55:30303,enode://5b037f66099d5ded86eb7e1619f6d06ceb15609e8cc345ced22a4772b06178004e1490a3cd32fd1222789de4c6e4021c2d648a3d750f6d5323e64b771bbd8de7@35.247.182.34:30303,enode://846db253c53753d3ea1197aec296306dc84c25f3afdf142b65cb0fe0f984de55072daa3bbf05a9aea046a38a2292403137b6eafefd5646fcf62120b74e3b898d@34.87.9.231:30303,enode://64b7f6ee9bcd942ad4949c70f2077627f078a057dfd930e6e904e12643d8952f5ae87c91e24559765393f244a72c9d5c011d7d5176e59191d38f315db85a20f5@34.126.78.49:30303,enode://cf4d19bfb8ec507427ec882bac0bac85a0c8c9ddaa0ec91b773bb614e5e09d107cd9fbe323b96f62f31c493f8f42cc5495c18b87c08560c5dea1dfd25256dcf6@35.240.200.36:30303,enode://bb7e44178543431feac8f0ee3827056b7b84d8235b802a8bdbbcd4939dab7f7dd2579ff577a38b002bb0139792af67abd2dd5c9f4f85b8da6e914fa76dca82bc@34.40.14.50:30303,enode://8fef1f5df45e7b31be00a21e1da5665d5a5f5bf4c379086b843f03eade941bdd157f08c95b31880c492577edb9a9b185df7191eaebf54ab06d5bd683b289f3af@35.246.168.217:30303,enode://ce9c87cfe089f6811d26c96913fa3ec10b938d9017fc6246684c74a33679ee34ceca9447180fb509e37bf2b706c2877a82085d34bfd83b5b520ee1288b0fc32f@34.40.28.159:30303,enode://713657eb6a53feadcbc47e634ad557326a51eb6818a3e19a00a8111492f50a666ccbf2f5d334d247ecf941e68d242ef5c3b812b63c44d381ef11f79c2cdb45c7@35.234.82.236:30303,enode://d071fa740e063ce1bb9cdc2b7937baeff6dc4000f91588d730a731c38a6ff0d4015814812c160fab8695e46f74b9b618735368ea2f16db4d785f16d29b3fb7b0@35.203.86.197:30303,enode://ffc452fe451a2e5f89fe634744aea334d92dcd30d881b76209d2db7dbf4b7ee047e7c69a5bb1633764d987a7441d9c4bc57ccdbfd6442a2f860bf953bc89a9b9@34.118.187.161:30303,enode://da94328302a1d1422209d1916744e90b6095a48b2340dcec39b22002c098bb4d58a880dab98eb26edf03fa4705d1b62f99a8c5c14e6666e4726b6d3066d8a4d7@34.95.30.190:30303,enode://19c7671a4844699b481e81a5bcfe7bafc7fefa953c16ebbe1951b1046371e73839e9058de6b7d3c934318fe7e7233dde3621c1c1018eb8b294ea3d4516147150@34.47.60.196:30303 - BOOTNODES=enode://0c5a4a3c0e81fce2974e4d317d88df783731183d534325e32e0fdf8f4b119d7889fa254d3a38890606ec300d744e2aa9c87099a4a032f5c94efe53f3fcdfecfe@34.64.176.79:30303,enode://b6a3137d3a36ef37c4d31843775a9dc293f41bcbde33b6309c80b1771b6634827cd188285136a57474427bd8845adc2f6fe2e0b106bd58d14795b08910b9c326@34.64.181.70:30303,enode://0b6633300614bc2b9749aee0cace7a091ec5348762aee7b1d195f7616d03a9409019d9bef336624bab72e0d069cd4cf0b0de6fbbf53f04f6b6e4c5b39c6bdca6@34.64.39.31:30303,enode://552b001abebb5805fcd734ad367cd05d9078d18f23ec598d7165460fadcfc51116ad95c418f7ea9a141aa8cbc496c8bea3322b67a5de0d3380f11aab1a797513@34.64.183.158:30303,enode://5b037f66099d5ded86eb7e1619f6d06ceb15609e8cc345ced22a4772b06178004e1490a3cd32fd1222789de4c6e4021c2d648a3d750f6d5323e64b771bbd8de7@34.87.142.180:30303,enode://846db253c53753d3ea1197aec296306dc84c25f3afdf142b65cb0fe0f984de55072daa3bbf05a9aea046a38a2292403137b6eafefd5646fcf62120b74e3b898d@34.142.170.110:30303,enode://64b7f6ee9bcd942ad4949c70f2077627f078a057dfd930e6e904e12643d8952f5ae87c91e24559765393f244a72c9d5c011d7d5176e59191d38f315db85a20f5@34.126.161.16:30303,enode://cf4d19bfb8ec507427ec882bac0bac85a0c8c9ddaa0ec91b773bb614e5e09d107cd9fbe323b96f62f31c493f8f42cc5495c18b87c08560c5dea1dfd25256dcf6@35.247.162.2:30303,enode://bb7e44178543431feac8f0ee3827056b7b84d8235b802a8bdbbcd4939dab7f7dd2579ff577a38b002bb0139792af67abd2dd5c9f4f85b8da6e914fa76dca82bc@35.198.150.35:30303,enode://8fef1f5df45e7b31be00a21e1da5665d5a5f5bf4c379086b843f03eade941bdd157f08c95b31880c492577edb9a9b185df7191eaebf54ab06d5bd683b289f3af@34.107.7.241:30303,enode://ce9c87cfe089f6811d26c96913fa3ec10b938d9017fc6246684c74a33679ee34ceca9447180fb509e37bf2b706c2877a82085d34bfd83b5b520ee1288b0fc32f@35.198.109.49:30303,enode://713657eb6a53feadcbc47e634ad557326a51eb6818a3e19a00a8111492f50a666ccbf2f5d334d247ecf941e68d242ef5c3b812b63c44d381ef11f79c2cdb45c7@34.141.15.100:30303,enode://d071fa740e063ce1bb9cdc2b7937baeff6dc4000f91588d730a731c38a6ff0d4015814812c160fab8695e46f74b9b618735368ea2f16db4d785f16d29b3fb7b0@35.203.2.210:30303,enode://ffc452fe451a2e5f89fe634744aea334d92dcd30d881b76209d2db7dbf4b7ee047e7c69a5bb1633764d987a7441d9c4bc57ccdbfd6442a2f860bf953bc89a9b9@34.152.50.224:30303,enode://da94328302a1d1422209d1916744e90b6095a48b2340dcec39b22002c098bb4d58a880dab98eb26edf03fa4705d1b62f99a8c5c14e6666e4726b6d3066d8a4d7@34.95.61.106:30303,enode://19c7671a4844699b481e81a5bcfe7bafc7fefa953c16ebbe1951b1046371e73839e9058de6b7d3c934318fe7e7233dde3621c1c1018eb8b294ea3d4516147150@35.203.82.137:30303
- CHAINID=80094 - CHAINID=80094
- CHAINNAME=mainnet - CHAINNAME=mainnet
- CHAIN_SPEC=mainnet - CHAIN_SPEC=mainnet
entrypoint: [/bin/bash, -c, "trap 'exit 0' SIGTERM; while [ ! -f /config/eth-genesis.json ] && [ ! -f /tmp/stop ]; do sleep 1 & wait $!; done; exec reth node \"$@\"", --] entrypoint: [/bin/bash, -c, "trap 'exit 0' SIGTERM; while [ ! -f /config/eth-genesis.json ] && [ ! -f /tmp/stop ]; do sleep 1 & wait $!; done; exec bera-reth node \"$@\"", --]
command: command:
- --bootnodes=enode://0c5a4a3c0e81fce2974e4d317d88df783731183d534325e32e0fdf8f4b119d7889fa254d3a38890606ec300d744e2aa9c87099a4a032f5c94efe53f3fcdfecfe@34.22.104.177:30303,enode://b6a3137d3a36ef37c4d31843775a9dc293f41bcbde33b6309c80b1771b6634827cd188285136a57474427bd8845adc2f6fe2e0b106bd58d14795b08910b9c326@34.64.247.85:30303,enode://0b6633300614bc2b9749aee0cace7a091ec5348762aee7b1d195f7616d03a9409019d9bef336624bab72e0d069cd4cf0b0de6fbbf53f04f6b6e4c5b39c6bdca6@34.22.73.21:30303,enode://552b001abebb5805fcd734ad367cd05d9078d18f23ec598d7165460fadcfc51116ad95c418f7ea9a141aa8cbc496c8bea3322b67a5de0d3380f11aab1a797513@34.64.37.55:30303,enode://5b037f66099d5ded86eb7e1619f6d06ceb15609e8cc345ced22a4772b06178004e1490a3cd32fd1222789de4c6e4021c2d648a3d750f6d5323e64b771bbd8de7@35.247.182.34:30303,enode://846db253c53753d3ea1197aec296306dc84c25f3afdf142b65cb0fe0f984de55072daa3bbf05a9aea046a38a2292403137b6eafefd5646fcf62120b74e3b898d@34.87.9.231:30303,enode://64b7f6ee9bcd942ad4949c70f2077627f078a057dfd930e6e904e12643d8952f5ae87c91e24559765393f244a72c9d5c011d7d5176e59191d38f315db85a20f5@34.126.78.49:30303,enode://cf4d19bfb8ec507427ec882bac0bac85a0c8c9ddaa0ec91b773bb614e5e09d107cd9fbe323b96f62f31c493f8f42cc5495c18b87c08560c5dea1dfd25256dcf6@35.240.200.36:30303,enode://bb7e44178543431feac8f0ee3827056b7b84d8235b802a8bdbbcd4939dab7f7dd2579ff577a38b002bb0139792af67abd2dd5c9f4f85b8da6e914fa76dca82bc@34.40.14.50:30303,enode://8fef1f5df45e7b31be00a21e1da5665d5a5f5bf4c379086b843f03eade941bdd157f08c95b31880c492577edb9a9b185df7191eaebf54ab06d5bd683b289f3af@35.246.168.217:30303,enode://ce9c87cfe089f6811d26c96913fa3ec10b938d9017fc6246684c74a33679ee34ceca9447180fb509e37bf2b706c2877a82085d34bfd83b5b520ee1288b0fc32f@34.40.28.159:30303,enode://713657eb6a53feadcbc47e634ad557326a51eb6818a3e19a00a8111492f50a666ccbf2f5d334d247ecf941e68d242ef5c3b812b63c44d381ef11f79c2cdb45c7@35.234.82.236:30303,enode://d071fa740e063ce1bb9cdc2b7937baeff6dc4000f91588d730a731c38a6ff0d4015814812c160fab8695e46f74b9b618735368ea2f16db4d785f16d29b3fb7b0@35.203.86.197:30303,enode://ffc452fe451a2e5f89fe634744aea334d92dcd30d881b76209d2db7dbf4b7ee047e7c69a5bb1633764d987a7441d9c4bc57ccdbfd6442a2f860bf953bc89a9b9@34.118.187.161:30303,enode://da94328302a1d1422209d1916744e90b6095a48b2340dcec39b22002c098bb4d58a880dab98eb26edf03fa4705d1b62f99a8c5c14e6666e4726b6d3066d8a4d7@34.95.30.190:30303,enode://19c7671a4844699b481e81a5bcfe7bafc7fefa953c16ebbe1951b1046371e73839e9058de6b7d3c934318fe7e7233dde3621c1c1018eb8b294ea3d4516147150@34.47.60.196:30303 - --bootnodes=enode://0c5a4a3c0e81fce2974e4d317d88df783731183d534325e32e0fdf8f4b119d7889fa254d3a38890606ec300d744e2aa9c87099a4a032f5c94efe53f3fcdfecfe@34.64.176.79:30303,enode://b6a3137d3a36ef37c4d31843775a9dc293f41bcbde33b6309c80b1771b6634827cd188285136a57474427bd8845adc2f6fe2e0b106bd58d14795b08910b9c326@34.64.181.70:30303,enode://0b6633300614bc2b9749aee0cace7a091ec5348762aee7b1d195f7616d03a9409019d9bef336624bab72e0d069cd4cf0b0de6fbbf53f04f6b6e4c5b39c6bdca6@34.64.39.31:30303,enode://552b001abebb5805fcd734ad367cd05d9078d18f23ec598d7165460fadcfc51116ad95c418f7ea9a141aa8cbc496c8bea3322b67a5de0d3380f11aab1a797513@34.64.183.158:30303,enode://5b037f66099d5ded86eb7e1619f6d06ceb15609e8cc345ced22a4772b06178004e1490a3cd32fd1222789de4c6e4021c2d648a3d750f6d5323e64b771bbd8de7@34.87.142.180:30303,enode://846db253c53753d3ea1197aec296306dc84c25f3afdf142b65cb0fe0f984de55072daa3bbf05a9aea046a38a2292403137b6eafefd5646fcf62120b74e3b898d@34.142.170.110:30303,enode://64b7f6ee9bcd942ad4949c70f2077627f078a057dfd930e6e904e12643d8952f5ae87c91e24559765393f244a72c9d5c011d7d5176e59191d38f315db85a20f5@34.126.161.16:30303,enode://cf4d19bfb8ec507427ec882bac0bac85a0c8c9ddaa0ec91b773bb614e5e09d107cd9fbe323b96f62f31c493f8f42cc5495c18b87c08560c5dea1dfd25256dcf6@35.247.162.2:30303,enode://bb7e44178543431feac8f0ee3827056b7b84d8235b802a8bdbbcd4939dab7f7dd2579ff577a38b002bb0139792af67abd2dd5c9f4f85b8da6e914fa76dca82bc@35.198.150.35:30303,enode://8fef1f5df45e7b31be00a21e1da5665d5a5f5bf4c379086b843f03eade941bdd157f08c95b31880c492577edb9a9b185df7191eaebf54ab06d5bd683b289f3af@34.107.7.241:30303,enode://ce9c87cfe089f6811d26c96913fa3ec10b938d9017fc6246684c74a33679ee34ceca9447180fb509e37bf2b706c2877a82085d34bfd83b5b520ee1288b0fc32f@35.198.109.49:30303,enode://713657eb6a53feadcbc47e634ad557326a51eb6818a3e19a00a8111492f50a666ccbf2f5d334d247ecf941e68d242ef5c3b812b63c44d381ef11f79c2cdb45c7@34.141.15.100:30303,enode://d071fa740e063ce1bb9cdc2b7937baeff6dc4000f91588d730a731c38a6ff0d4015814812c160fab8695e46f74b9b618735368ea2f16db4d785f16d29b3fb7b0@35.203.2.210:30303,enode://ffc452fe451a2e5f89fe634744aea334d92dcd30d881b76209d2db7dbf4b7ee047e7c69a5bb1633764d987a7441d9c4bc57ccdbfd6442a2f860bf953bc89a9b9@34.152.50.224:30303,enode://da94328302a1d1422209d1916744e90b6095a48b2340dcec39b22002c098bb4d58a880dab98eb26edf03fa4705d1b62f99a8c5c14e6666e4726b6d3066d8a4d7@34.95.61.106:30303,enode://19c7671a4844699b481e81a5bcfe7bafc7fefa953c16ebbe1951b1046371e73839e9058de6b7d3c934318fe7e7233dde3621c1c1018eb8b294ea3d4516147150@35.203.82.137:30303
- --chain=/config/eth-genesis.json - --chain=/config/eth-genesis.json
- --datadir=/root/.local/share/reth - --datadir=/root/.local/share/reth
- --discovery.port=10900 - --discovery.port=10900
- --engine.always-process-payload-attributes-on-canonical-head
- --engine.cross-block-cache-size=${BERACHAIN_MAINNET_RETH_STATE_CACHE:-4096} - --engine.cross-block-cache-size=${BERACHAIN_MAINNET_RETH_STATE_CACHE:-4096}
- --engine.memory-block-buffer-target=0
- --engine.persistence-threshold=0
- --full - --full
- --max-inbound-peers=50 - --max-inbound-peers=50
- --max-outbound-peers=50 - --max-outbound-peers=50
@@ -129,7 +153,7 @@ services:
context: ./berachain context: ./berachain
dockerfile: beacon-kit.Dockerfile dockerfile: beacon-kit.Dockerfile
args: args:
BEACONKIT_VERSION: ${BERACHAIN_MAINNET_BEACON_KIT_VERSION:-v1.1.3} BEACONKIT_VERSION: ${BERACHAIN_MAINNET_BEACON_KIT_VERSION:-v1.3.4}
BEACONKIT_IMAGE: ${BERACHAIN_MAINNET_BEACON_KIT_IMAGE:-ghcr.io/berachain/beacon-kit} BEACONKIT_IMAGE: ${BERACHAIN_MAINNET_BEACON_KIT_IMAGE:-ghcr.io/berachain/beacon-kit}
ports: ports:
- 15900:15900 - 15900:15900
@@ -146,6 +170,7 @@ services:
networks: networks:
- chains - chains
volumes: volumes:
- ${BERACHAIN_MAINNET_RETH_PRUNED_TRACE__BEACON_KIT_DATA:-berachain-mainnet-reth-pruned-trace_beacon-kit}:/root/.beacond/data
- .jwtsecret:/jwtsecret:ro - .jwtsecret:/jwtsecret:ro
- berachain-mainnet-reth-pruned-trace_config:/root/.beacond/config - berachain-mainnet-reth-pruned-trace_config:/root/.beacond/config
logging: *logging-defaults logging: *logging-defaults

View File

@@ -35,18 +35,22 @@ env
apk add curl apk add curl
if [ $? -ne 0 ]; then exit 1; fi if [ $? -ne 0 ]; then exit 1; fi
# sometimes the genesis has to be updated and is a parameter to the reth node
# because of the following force-recreate on chain fork would do the trick I guess...
ETH_GENESIS_URL="https://raw.githubusercontent.com/berachain/beacon-kit/main/testing/networks/$CHAINID/eth-genesis.json"
curl -sL "$ETH_GENESIS_URL" -o "$CONFIG_DIR/eth-genesis.json"
if $BEACOND init ${MONIKER} --beacon-kit.chain-spec ${CHAIN_SPEC:-mainnet} --chain-id ${CHAINNAME}-beacon-${CHAINID} --home /root/.beacond/; then if $BEACOND init ${MONIKER} --beacon-kit.chain-spec ${CHAIN_SPEC:-mainnet} --chain-id ${CHAINNAME}-beacon-${CHAINID} --home /root/.beacond/; then
# Define variables # Define variables
CONFIG_TOML_URL="https://raw.githubusercontent.com/berachain/beacon-kit/main/testing/networks/$CHAINID/config.toml" CONFIG_TOML_URL="https://raw.githubusercontent.com/berachain/beacon-kit/main/testing/networks/$CHAINID/config.toml"
APP_TOML_URL="https://raw.githubusercontent.com/berachain/beacon-kit/main/testing/networks/$CHAINID/app.toml" APP_TOML_URL="https://raw.githubusercontent.com/berachain/beacon-kit/main/testing/networks/$CHAINID/app.toml"
# SEEDS_URL="https://raw.githubusercontent.com/berachain/beacon-kit/main/testing/networks/$CHAINID/cl-seeds.txt" # SEEDS_URL="https://raw.githubusercontent.com/berachain/beacon-kit/main/testing/networks/$CHAINID/cl-seeds.txt"
KZG_URL="https://raw.githubusercontent.com/berachain/beacon-kit/main/testing/networks/$CHAINID/kzg-trusted-setup.json" KZG_URL="https://raw.githubusercontent.com/berachain/beacon-kit/main/testing/networks/$CHAINID/kzg-trusted-setup.json"
ETH_GENESIS_URL="https://raw.githubusercontent.com/berachain/beacon-kit/main/testing/networks/$CHAINID/eth-genesis.json"
GENESIS_URL="https://raw.githubusercontent.com/berachain/beacon-kit/main/testing/networks/$CHAINID/genesis.json" GENESIS_URL="https://raw.githubusercontent.com/berachain/beacon-kit/main/testing/networks/$CHAINID/genesis.json"
# Download config files # Download config files
curl -sL "$GENESIS_URL" -o "$CONFIG_DIR/genesis.json" curl -sL "$GENESIS_URL" -o "$CONFIG_DIR/genesis.json"
curl -sL "$ETH_GENESIS_URL" -o "$CONFIG_DIR/eth-genesis.json"
curl -sL "$KZG_URL" -o "$CONFIG_DIR/kzg-trusted-setup.json" curl -sL "$KZG_URL" -o "$CONFIG_DIR/kzg-trusted-setup.json"
curl -sL "$CONFIG_TOML_URL" -o "$CONFIG_DIR/config.toml" curl -sL "$CONFIG_TOML_URL" -o "$CONFIG_DIR/config.toml"
curl -sL "$APP_TOML_URL" -o "$CONFIG_DIR/app.toml" curl -sL "$APP_TOML_URL" -o "$CONFIG_DIR/app.toml"
@@ -98,6 +102,11 @@ if [ -n "$MONIKER" ] && [ -f "$CONFIG_DIR/config.toml" ]; then
sed -i "s/^moniker = \".*\"/moniker = \"$MONIKER\"/" "$CONFIG_DIR/config.toml" sed -i "s/^moniker = \".*\"/moniker = \"$MONIKER\"/" "$CONFIG_DIR/config.toml"
fi fi
if [ -e /root/.beacond/config/priv_validator_state.json ]; then
if [ ! -e /root/.beacond/data/priv_validator_state.json ]; then
cp /root/.beacond/config/priv_validator_state.json /root/.beacond/data/priv_validator_state.json
fi
fi
#echo "$CONFIG_DIR/jwt.hex: $(cat $CONFIG_DIR/jwt.hex)" #echo "$CONFIG_DIR/jwt.hex: $(cat $CONFIG_DIR/jwt.hex)"
@@ -108,9 +117,9 @@ fi
if [ "$CHAIN_SPEC" = "testnet" ]; then if [ "$CHAIN_SPEC" = "testnet" ]; then
exec $BEACOND start --beacon-kit.chain-spec testnet --home /root/.beacond $@ exec $BEACOND start --beacon-kit.chain-spec testnet --home /root/.beacond --db_dir /root/.beacond/data --beacon-kit.engine.jwt-secret-path /root/.beacond/config/jwt.hex --beacon-kit.kzg.trusted-setup-path /root/.beacond/config/kzg-trusted-setup.json $@
else else
exec $BEACOND start --home /root/.beacond $@ exec $BEACOND start --beacon-kit.chain-spec mainnet --home /root/.beacond --db_dir /root/.beacond/data --beacon-kit.engine.jwt-secret-path /root/.beacond/config/jwt.hex --beacon-kit.kzg.trusted-setup-path /root/.beacond/config/kzg-trusted-setup.json $@
fi fi
# --beacon-kit.engine.jwt-secret-path $CONFIG_DIR/jwt.hex --beacon-kit.kzg.trusted-setup-path $CONFIG_DIR/kzg-trusted-setup.json --home /root/.beacond # --beacon-kit.engine.jwt-secret-path $CONFIG_DIR/jwt.hex --beacon-kit.kzg.trusted-setup-path $CONFIG_DIR/kzg-trusted-setup.json --home /root/.beacond
#--minimum-gas-prices 0atom #--minimum-gas-prices 0atom

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
bitcoin-cash-mainnet: bitcoin-cash-mainnet:
image: ${BITCOIN_CASH_BITCOIND_IMAGE:-bitcoinabc/bitcoin-abc}:${BITCOIN_CASH_MAINNET_BITCOIND_VERSION:-0.31.4} image: ${BITCOIN_CASH_BITCOIND_IMAGE:-bitcoinabc/bitcoin-abc}:${BITCOIN_CASH_MAINNET_BITCOIND_VERSION:-0.32.4}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
bitcoin-cash-testnet: bitcoin-cash-testnet:
image: ${BITCOIN_CASH_BITCOIND_IMAGE:-bitcoinabc/bitcoin-abc}:${BITCOIN_CASH_TESTNET_BITCOIND_VERSION:-0.31.4} image: ${BITCOIN_CASH_BITCOIND_IMAGE:-bitcoinabc/bitcoin-abc}:${BITCOIN_CASH_TESTNET_BITCOIND_VERSION:-0.32.4}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
bsc-chapel: bsc-chapel:
image: ${BSC_BSC_IMAGE:-ghcr.io/bnb-chain/bsc}:${BSC_CHAPEL_BSC_VERSION:-1.5.13} image: ${BSC_BSC_IMAGE:-ghcr.io/bnb-chain/bsc}:${BSC_CHAPEL_BSC_VERSION:-1.6.4}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -53,6 +53,11 @@ services:
- 6060 - 6060
entrypoint: [geth] entrypoint: [geth]
command: command:
- --cache.database=${BSC_CHAPEL_BSC_PRUNED_PEBBLE_PATH_CACHE_DB:-40}
- --cache.gc=${BSC_CHAPEL_BSC_PRUNED_PEBBLE_PATH_CACHE_GC:-25}
- --cache.snapshot=${BSC_CHAPEL_BSC_PRUNED_PEBBLE_PATH_CACHE_SNAPSHOT:-20}
- --cache.trie=${BSC_CHAPEL_BSC_PRUNED_PEBBLE_PATH_CACHE_TRIE:-15}
- --cache=${BSC_CHAPEL_BSC_PRUNED_PEBBLE_PATH_CACHE:-1024}
- --chapel - --chapel
- --config=/config/config.toml - --config=/config/config.toml
- --datadir=/bsc/.ethereum - --datadir=/bsc/.ethereum

View File

@@ -0,0 +1,158 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# Snapshot for minial datadir here
# https://github.com/48Club/bsc-snapshots?tab=readme-ov-file
# Usage:
#
# mkdir rpc && cd rpc
#
# git init
# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git
# git fetch origin vibe
# git checkout origin/vibe
#
# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret
#
# env
# ...
# IP=$(curl ipinfo.io/ip)
# DOMAIN=${IP}.traefik.me
# COMPOSE_FILE=base.yml:rpc.yml:bsc/bsc/bsc-mainnet-bsc-minimal-pebble-path.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/bsc-mainnet-minimal \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
bsc-mainnet-minimal:
image: ${BSC_BSC_IMAGE:-ghcr.io/bnb-chain/bsc}:${BSC_MAINNET_BSC_VERSION:-1.6.4}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
net.core.somaxconn: 32768 # Higher connection queue
# Memory/Connection Management
# net.core.netdev_max_backlog: 50000 # Increase network buffer
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
user: root
ports:
- 14596:14596
- 14596:14596/udp
expose:
- 8545
- 6060
entrypoint: [geth]
command:
- --cache.database=${BSC_MAINNET_BSC_MINIMAL_PEBBLE_PATH_CACHE_DB:-40}
- --cache.gc=${BSC_MAINNET_BSC_MINIMAL_PEBBLE_PATH_CACHE_GC:-25}
- --cache.snapshot=${BSC_MAINNET_BSC_MINIMAL_PEBBLE_PATH_CACHE_SNAPSHOT:-20}
- --cache.trie=${BSC_MAINNET_BSC_MINIMAL_PEBBLE_PATH_CACHE_TRIE:-15}
- --cache=${BSC_MAINNET_BSC_MINIMAL_PEBBLE_PATH_CACHE:-1024}
- --config=/config/config.toml
- --datadir=/bsc/.ethereum
- --db.engine=pebble
- --gcmode=full
- --history.blocks=1024
- --history.logs.disable=true
- --history.state=1024
- --history.transactions=1024
- --http
- --http.addr=0.0.0.0
- --http.api=eth,net,web3,txpool,debug,admin,parlia
- --http.port=8545
- --http.vhosts=*
- --mainnet
- --maxpeers=50
- --metrics
- --metrics.addr=0.0.0.0
- --metrics.port=6060
- --multidatabase=true
- --nat=extip:${IP}
- --port=14596
- --rpc.gascap=600000000
- --rpc.txfeecap=0
- --state.scheme=path
- --syncmode=snap
- --tries-verify-mode=none
- --ws
- --ws.addr=0.0.0.0
- --ws.api=eth,net,web3,txpool,debug,admin,parlia
- --ws.origins=*
- --ws.port=8545
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${BSC_MAINNET_BSC_MINIMAL_PEBBLE_PATH_DATA:-bsc-mainnet-bsc-minimal-pebble-path}:/bsc/.ethereum
- ./bsc/mainnet:/config
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=6060
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.bsc-mainnet-bsc-minimal-pebble-path-stripprefix.stripprefix.prefixes=/bsc-mainnet-minimal
- traefik.http.services.bsc-mainnet-bsc-minimal-pebble-path.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.bsc-mainnet-bsc-minimal-pebble-path.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.bsc-mainnet-bsc-minimal-pebble-path.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.bsc-mainnet-bsc-minimal-pebble-path.rule=Host(`$DOMAIN`) && (Path(`/bsc-mainnet-minimal`) || Path(`/bsc-mainnet-minimal/`))}
- ${NO_SSL:+traefik.http.routers.bsc-mainnet-bsc-minimal-pebble-path.rule=Path(`/bsc-mainnet-minimal`) || Path(`/bsc-mainnet-minimal/`)}
- traefik.http.routers.bsc-mainnet-bsc-minimal-pebble-path.middlewares=bsc-mainnet-bsc-minimal-pebble-path-stripprefix, ipallowlist
volumes:
bsc-mainnet-bsc-minimal-pebble-path:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: bsc
method-groups:
enabled:
- debug
- filter
methods:
disabled:
# not compatible with path state scheme
- name: debug_traceBlockByHash
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
# standard geth only
- name: debug_getRawBlock
- name: debug_getRawTransaction
- name: debug_getRawReceipts
- name: debug_getRawHeader
- name: debug_getBadBlocks
# non standard geth only slightly dangerous
- name: debug_intermediateRoots
- name: debug_dumpBlock
# standard geth and erigon
- name: debug_accountRange
- name: debug_getModifiedAccountsByNumber
- name: debug_getModifiedAccountsByHash
# non standard geth and erigon
- name: eth_getRawTransactionByHash
- name: eth_getRawTransactionByBlockHashAndIndex
...

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
bsc-mainnet: bsc-mainnet:
image: ${BSC_FIREETH_IMAGE:-ghcr.io/streamingfast/firehose-ethereum}:${BSC_MAINNET_FIREETH_VERSION:-v2.11.9-bnb} image: ${BSC_FIREETH_IMAGE:-ghcr.io/streamingfast/go-ethereum}:${BSC_MAINNET_FIREETH_VERSION:-v2.12.4-bnb-v1.5.19-fh3.0}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -54,6 +54,11 @@ services:
- 10010 - 10010
entrypoint: [sh, -c, exec fireeth --config-file="" --log-to-file=false start reader-node --log-to-file=false --reader-node-arguments "$*", _] entrypoint: [sh, -c, exec fireeth --config-file="" --log-to-file=false start reader-node --log-to-file=false --reader-node-arguments "$*", _]
command: command:
- --cache.database=${BSC_MAINNET_BSC_PRUNED_PEBBLE_PATH_CACHE_DB:-40}
- --cache.gc=${BSC_MAINNET_BSC_PRUNED_PEBBLE_PATH_CACHE_GC:-25}
- --cache.snapshot=${BSC_MAINNET_BSC_PRUNED_PEBBLE_PATH_CACHE_SNAPSHOT:-20}
- --cache.trie=${BSC_MAINNET_BSC_PRUNED_PEBBLE_PATH_CACHE_TRIE:-15}
- --cache=${BSC_MAINNET_BSC_PRUNED_PEBBLE_PATH_CACHE:-1024}
- --config=/config/config.toml - --config=/config/config.toml
- --datadir=/bsc/.ethereum - --datadir=/bsc/.ethereum
- --db.engine=pebble - --db.engine=pebble
@@ -104,7 +109,7 @@ services:
- traefik.http.routers.bsc-mainnet-bsc-pruned-pebble-path.middlewares=bsc-mainnet-bsc-pruned-pebble-path-stripprefix, ipallowlist - traefik.http.routers.bsc-mainnet-bsc-pruned-pebble-path.middlewares=bsc-mainnet-bsc-pruned-pebble-path-stripprefix, ipallowlist
bsc-mainnet-firehose: bsc-mainnet-firehose:
image: ${BSC_FIREETH_IMAGE:-ghcr.io/streamingfast/firehose-ethereum}:${BSC_MAINNET_FIREETH_VERSION:-v2.11.9-bnb} image: ${BSC_FIREETH_IMAGE:-ghcr.io/streamingfast/go-ethereum}:${BSC_MAINNET_FIREETH_VERSION:-v2.12.4-bnb-v1.5.19-fh3.0}
expose: expose:
- 10015 - 10015
- 10014 - 10014
@@ -136,7 +141,7 @@ services:
- traefik.http.routers.bsc-mainnet-bsc-pruned-pebble-path-firehose.middlewares=ipallowlist - traefik.http.routers.bsc-mainnet-bsc-pruned-pebble-path-firehose.middlewares=ipallowlist
bsc-mainnet-events: bsc-mainnet-events:
image: ${BSC_FIREETH_IMAGE:-ghcr.io/streamingfast/firehose-ethereum}:${BSC_MAINNET_FIREETH_VERSION:-v2.11.9-bnb} image: ${BSC_FIREETH_IMAGE:-ghcr.io/streamingfast/go-ethereum}:${BSC_MAINNET_FIREETH_VERSION:-v2.12.4-bnb-v1.5.19-fh3.0}
expose: expose:
- 10016 - 10016
entrypoint: [sh, -c, exec fireeth --config-file="" --log-to-file=false start substreams-tier1 substreams-tier2 $@, _] entrypoint: [sh, -c, exec fireeth --config-file="" --log-to-file=false start substreams-tier1 substreams-tier2 $@, _]

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
bsc-mainnet: bsc-mainnet:
image: ${BSC_BSC_IMAGE:-ghcr.io/bnb-chain/bsc}:${BSC_MAINNET_BSC_VERSION:-1.5.13} image: ${BSC_BSC_IMAGE:-ghcr.io/bnb-chain/bsc}:${BSC_MAINNET_BSC_VERSION:-1.6.4}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -53,6 +53,11 @@ services:
- 6060 - 6060
entrypoint: [geth] entrypoint: [geth]
command: command:
- --cache.database=${BSC_MAINNET_BSC_PRUNED_PEBBLE_PATH_CACHE_DB:-40}
- --cache.gc=${BSC_MAINNET_BSC_PRUNED_PEBBLE_PATH_CACHE_GC:-25}
- --cache.snapshot=${BSC_MAINNET_BSC_PRUNED_PEBBLE_PATH_CACHE_SNAPSHOT:-20}
- --cache.trie=${BSC_MAINNET_BSC_PRUNED_PEBBLE_PATH_CACHE_TRIE:-15}
- --cache=${BSC_MAINNET_BSC_PRUNED_PEBBLE_PATH_CACHE:-1024}
- --config=/config/config.toml - --config=/config/config.toml
- --datadir=/bsc/.ethereum - --datadir=/bsc/.ethereum
- --db.engine=pebble - --db.engine=pebble

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
bsc-chapel-erigon3-archive: bsc-chapel-erigon3-archive:
image: ${BSC_ERIGON3_IMAGE:-ghcr.io/node-real/bsc-erigon}:${BSC_CHAPEL_ERIGON3_VERSION:-v1.3.8} image: ${BSC_ERIGON3_IMAGE:-ghcr.io/node-real/bsc-erigon}:${BSC_CHAPEL_ERIGON3_VERSION:-v1.4.3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -73,8 +73,13 @@ services:
- --p2p.allowed-ports=37810 - --p2p.allowed-ports=37810
- --port=12810 - --port=12810
- --prune.mode=archive - --prune.mode=archive
- --rpc.evmtimeout=${BSC_CHAPEL_ERIGON3_ARCHIVE_TRACE_EVMTIMEOUT:-5m0s}
- --rpc.gascap=6000000000 - --rpc.gascap=6000000000
- --rpc.returndata.limit=1100000 - --rpc.overlay.getlogstimeout=${BSC_CHAPEL_ERIGON3_ARCHIVE_TRACE_GETLOGSTIMEOUT:-5m0s}
- --rpc.overlay.replayblocktimeout=${BSC_CHAPEL_ERIGON3_ARCHIVE_TRACE_REPLAYBLOCKTIMEOUT:-10s}
- --rpc.returndata.limit=10000000
- --sync.loop.block.limit=10000
- --torrent.download.rate=${BSC_CHAPEL_ERIGON3_ARCHIVE_TRACE_MAX_DOWNLOAD_RATE:-1000mb}
- --ws - --ws
- --ws.port=8545 - --ws.port=8545
restart: unless-stopped restart: unless-stopped

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
bsc-chapel-erigon3-minimal: bsc-chapel-erigon3-minimal:
image: ${BSC_ERIGON3_IMAGE:-ghcr.io/node-real/bsc-erigon}:${BSC_CHAPEL_ERIGON3_VERSION:-v1.3.8} image: ${BSC_ERIGON3_IMAGE:-ghcr.io/node-real/bsc-erigon}:${BSC_CHAPEL_ERIGON3_VERSION:-v1.4.3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -71,10 +71,16 @@ services:
- --nat=extip:${IP} - --nat=extip:${IP}
- --p2p.allowed-ports=31017 - --p2p.allowed-ports=31017
- --p2p.allowed-ports=36017 - --p2p.allowed-ports=36017
- --persist.receipts=false
- --port=11017 - --port=11017
- --prune.mode=minimal - --prune.mode=minimal
- --rpc.evmtimeout=${BSC_CHAPEL_ERIGON3_MINIMAL_TRACE_EVMTIMEOUT:-5m0s}
- --rpc.gascap=6000000000 - --rpc.gascap=6000000000
- --rpc.returndata.limit=1100000 - --rpc.overlay.getlogstimeout=${BSC_CHAPEL_ERIGON3_MINIMAL_TRACE_GETLOGSTIMEOUT:-5m0s}
- --rpc.overlay.replayblocktimeout=${BSC_CHAPEL_ERIGON3_MINIMAL_TRACE_REPLAYBLOCKTIMEOUT:-10s}
- --rpc.returndata.limit=10000000
- --sync.loop.block.limit=10000
- --torrent.download.rate=${BSC_CHAPEL_ERIGON3_MINIMAL_TRACE_MAX_DOWNLOAD_RATE:-1000mb}
- --ws - --ws
- --ws.port=8545 - --ws.port=8545
restart: unless-stopped restart: unless-stopped
@@ -123,6 +129,7 @@ x-upstreams:
- trace - trace
methods: methods:
disabled: disabled:
- name: eth_getLogs # this returns result [] on ethereum mainnet when it shouldn't so it's probably buggy on al networks
enabled: enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes - name: txpool_content # TODO: should be disabled for rollup nodes
# standard geth and erigon # standard geth and erigon

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
bsc-chapel-erigon3: bsc-chapel-erigon3:
image: ${BSC_ERIGON3_IMAGE:-ghcr.io/node-real/bsc-erigon}:${BSC_CHAPEL_ERIGON3_VERSION:-v1.3.8} image: ${BSC_ERIGON3_IMAGE:-ghcr.io/node-real/bsc-erigon}:${BSC_CHAPEL_ERIGON3_VERSION:-v1.4.3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -71,10 +71,16 @@ services:
- --nat=extip:${IP} - --nat=extip:${IP}
- --p2p.allowed-ports=30589 - --p2p.allowed-ports=30589
- --p2p.allowed-ports=35589 - --p2p.allowed-ports=35589
- --persist.receipts=false
- --port=10589 - --port=10589
- --prune.mode=full - --prune.mode=full
- --rpc.evmtimeout=${BSC_CHAPEL_ERIGON3_PRUNED_TRACE_EVMTIMEOUT:-5m0s}
- --rpc.gascap=6000000000 - --rpc.gascap=6000000000
- --rpc.returndata.limit=1100000 - --rpc.overlay.getlogstimeout=${BSC_CHAPEL_ERIGON3_PRUNED_TRACE_GETLOGSTIMEOUT:-5m0s}
- --rpc.overlay.replayblocktimeout=${BSC_CHAPEL_ERIGON3_PRUNED_TRACE_REPLAYBLOCKTIMEOUT:-10s}
- --rpc.returndata.limit=10000000
- --sync.loop.block.limit=10000
- --torrent.download.rate=${BSC_CHAPEL_ERIGON3_PRUNED_TRACE_MAX_DOWNLOAD_RATE:-1000mb}
- --ws - --ws
- --ws.port=8545 - --ws.port=8545
restart: unless-stopped restart: unless-stopped
@@ -123,6 +129,7 @@ x-upstreams:
- trace - trace
methods: methods:
disabled: disabled:
- name: eth_getLogs # this returns result [] on ethereum mainnet when it shouldn't so it's probably buggy on al networks
enabled: enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes - name: txpool_content # TODO: should be disabled for rollup nodes
# standard geth and erigon # standard geth and erigon

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
bsc-mainnet-erigon3-archive: bsc-mainnet-erigon3-archive:
image: ${BSC_ERIGON3_IMAGE:-ghcr.io/node-real/bsc-erigon}:${BSC_MAINNET_ERIGON3_VERSION:-v1.3.8} image: ${BSC_ERIGON3_IMAGE:-ghcr.io/node-real/bsc-erigon}:${BSC_MAINNET_ERIGON3_VERSION:-v1.4.3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -73,8 +73,13 @@ services:
- --p2p.allowed-ports=36327 - --p2p.allowed-ports=36327
- --port=11327 - --port=11327
- --prune.mode=archive - --prune.mode=archive
- --rpc.evmtimeout=${BSC_MAINNET_ERIGON3_ARCHIVE_TRACE_EVMTIMEOUT:-5m0s}
- --rpc.gascap=6000000000 - --rpc.gascap=6000000000
- --rpc.returndata.limit=1100000 - --rpc.overlay.getlogstimeout=${BSC_MAINNET_ERIGON3_ARCHIVE_TRACE_GETLOGSTIMEOUT:-5m0s}
- --rpc.overlay.replayblocktimeout=${BSC_MAINNET_ERIGON3_ARCHIVE_TRACE_REPLAYBLOCKTIMEOUT:-10s}
- --rpc.returndata.limit=10000000
- --sync.loop.block.limit=10000
- --torrent.download.rate=${BSC_MAINNET_ERIGON3_ARCHIVE_TRACE_MAX_DOWNLOAD_RATE:-1000mb}
- --ws - --ws
- --ws.port=8545 - --ws.port=8545
restart: unless-stopped restart: unless-stopped

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
bsc-mainnet-erigon3-minimal: bsc-mainnet-erigon3-minimal:
image: ${BSC_ERIGON3_IMAGE:-ghcr.io/node-real/bsc-erigon}:${BSC_MAINNET_ERIGON3_VERSION:-v1.3.8} image: ${BSC_ERIGON3_IMAGE:-ghcr.io/node-real/bsc-erigon}:${BSC_MAINNET_ERIGON3_VERSION:-v1.3.9}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
bsc-mainnet-erigon3-minimal: bsc-mainnet-erigon3-minimal:
image: ${BSC_ERIGON3_IMAGE:-ghcr.io/node-real/bsc-erigon}:${BSC_MAINNET_ERIGON3_VERSION:-v1.3.8} image: ${BSC_ERIGON3_IMAGE:-ghcr.io/node-real/bsc-erigon}:${BSC_MAINNET_ERIGON3_VERSION:-v1.4.3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -71,10 +71,16 @@ services:
- --nat=extip:${IP} - --nat=extip:${IP}
- --p2p.allowed-ports=30987 - --p2p.allowed-ports=30987
- --p2p.allowed-ports=35987 - --p2p.allowed-ports=35987
- --persist.receipts=false
- --port=10987 - --port=10987
- --prune.mode=minimal - --prune.mode=minimal
- --rpc.evmtimeout=${BSC_MAINNET_ERIGON3_MINIMAL_TRACE_EVMTIMEOUT:-5m0s}
- --rpc.gascap=6000000000 - --rpc.gascap=6000000000
- --rpc.returndata.limit=1100000 - --rpc.overlay.getlogstimeout=${BSC_MAINNET_ERIGON3_MINIMAL_TRACE_GETLOGSTIMEOUT:-5m0s}
- --rpc.overlay.replayblocktimeout=${BSC_MAINNET_ERIGON3_MINIMAL_TRACE_REPLAYBLOCKTIMEOUT:-10s}
- --rpc.returndata.limit=10000000
- --sync.loop.block.limit=10000
- --torrent.download.rate=${BSC_MAINNET_ERIGON3_MINIMAL_TRACE_MAX_DOWNLOAD_RATE:-1000mb}
- --ws - --ws
- --ws.port=8545 - --ws.port=8545
restart: unless-stopped restart: unless-stopped
@@ -123,6 +129,7 @@ x-upstreams:
- trace - trace
methods: methods:
disabled: disabled:
- name: eth_getLogs # this returns result [] on ethereum mainnet when it shouldn't so it's probably buggy on al networks
enabled: enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes - name: txpool_content # TODO: should be disabled for rollup nodes
# standard geth and erigon # standard geth and erigon

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
bsc-mainnet-erigon3: bsc-mainnet-erigon3:
image: ${BSC_ERIGON3_IMAGE:-ghcr.io/node-real/bsc-erigon}:${BSC_MAINNET_ERIGON3_VERSION:-v1.3.8} image: ${BSC_ERIGON3_IMAGE:-ghcr.io/node-real/bsc-erigon}:${BSC_MAINNET_ERIGON3_VERSION:-v1.4.3}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -71,10 +71,16 @@ services:
- --nat=extip:${IP} - --nat=extip:${IP}
- --p2p.allowed-ports=30265 - --p2p.allowed-ports=30265
- --p2p.allowed-ports=35265 - --p2p.allowed-ports=35265
- --persist.receipts=false
- --port=10265 - --port=10265
- --prune.mode=full - --prune.mode=full
- --rpc.evmtimeout=${BSC_MAINNET_ERIGON3_PRUNED_TRACE_EVMTIMEOUT:-5m0s}
- --rpc.gascap=6000000000 - --rpc.gascap=6000000000
- --rpc.returndata.limit=1100000 - --rpc.overlay.getlogstimeout=${BSC_MAINNET_ERIGON3_PRUNED_TRACE_GETLOGSTIMEOUT:-5m0s}
- --rpc.overlay.replayblocktimeout=${BSC_MAINNET_ERIGON3_PRUNED_TRACE_REPLAYBLOCKTIMEOUT:-10s}
- --rpc.returndata.limit=10000000
- --sync.loop.block.limit=10000
- --torrent.download.rate=${BSC_MAINNET_ERIGON3_PRUNED_TRACE_MAX_DOWNLOAD_RATE:-1000mb}
- --ws - --ws
- --ws.port=8545 - --ws.port=8545
restart: unless-stopped restart: unless-stopped
@@ -123,6 +129,7 @@ x-upstreams:
- trace - trace
methods: methods:
disabled: disabled:
- name: eth_getLogs # this returns result [] on ethereum mainnet when it shouldn't so it's probably buggy on al networks
enabled: enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes - name: txpool_content # TODO: should be disabled for rollup nodes
# standard geth and erigon # standard geth and erigon

View File

@@ -5,7 +5,7 @@ TrieTimeout = 150000000000
[Eth.Miner] [Eth.Miner]
GasCeil = 140000000 GasCeil = 140000000
GasPrice = 1000000000 GasPrice = 50000000
Recommit = 10000000000 Recommit = 10000000000
[Eth.TxPool] [Eth.TxPool]
@@ -13,7 +13,7 @@ Locals = []
NoLocals = true NoLocals = true
Journal = "transactions.rlp" Journal = "transactions.rlp"
Rejournal = 3600000000000 Rejournal = 3600000000000
PriceLimit = 1000000000 PriceLimit = 100000000
PriceBump = 10 PriceBump = 10
AccountSlots = 200 AccountSlots = 200
GlobalSlots = 8000 GlobalSlots = 8000

View File

@@ -0,0 +1,157 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# This node is built from source with architecture-specific optimizations
# Build command: docker compose build --build-arg ARCH_TARGET=${ARCH_TARGET:-native} bsc-chapel-reth
#
# IMPORTANT: Cache optimization considerations
# If running multiple nodes on the same machine, be aware that:
# - L3 cache is shared across all cores, causing cache contention
# - Multiple nodes compete for cache space, reducing optimization effectiveness
# - Consider CPU pinning to minimize cache conflicts:
# docker run --cpuset-cpus="0-7" bsc-chapel-reth # Pin to specific cores
# - For AMD X3D CPUs, CCD0 (cores 0-7) has the 3D V-Cache
# - For multi-node setups, generic builds may perform better than cache-optimized ones
# Usage:
#
# mkdir rpc && cd rpc
#
# git init
# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git
# git fetch origin vibe
# git checkout origin/vibe
#
# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret
#
# env
# ...
# IP=$(curl ipinfo.io/ip)
# DOMAIN=${IP}.traefik.me
# COMPOSE_FILE=base.yml:rpc.yml:bsc/reth/bsc-chapel-reth-archive-trace.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/bsc-chapel-reth \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
bsc-chapel-reth:
build:
context: ./
dockerfile: reth.Dockerfile
args:
LLVM_IMAGE: ${LLVM_IMAGE:-snowstep/llvm}
LLVM_VERSION: ${LLVM_VERSION:-20250912105042}
RETH_VERSION: ${BSC_CHAPEL_RETH_VERSION:-v0.0.4-archivenode-alpha}
RETH_REPO: ${BSC_CHAPEL_RETH_REPO:-https://github.com/bnb-chain/reth-bsc.git}
ARCH_TARGET: ${ARCH_TARGET:-native}
PROFILE: ${RETH_BUILD_PROFILE:-maxperf}
BUILD_BSC_RETH: true
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
net.core.somaxconn: 32768 # Higher connection queue
# Memory/Connection Management
# net.core.netdev_max_backlog: 50000 # Increase network buffer
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
memlock: -1 # Disable memory locking limits (for in-memory DBs like MDBX)
user: root
ports:
- 13115:13115
- 13115:13115/udp
expose:
- 8545
- 9001
entrypoint: [reth, node]
command:
- --chain=bsc-testnet
- --datadir=/root/.local/share/reth
- --discovery.port=13115
- --engine.cross-block-cache-size=${BSC_CHAPEL_RETH_STATE_CACHE:-4096}
- --engine.memory-block-buffer-target=128
- --engine.parallel-sparse-trie
- --gpo.maxprice=1000000
- --http
- --http.addr=0.0.0.0
- --http.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --http.corsdomain=*
- --http.port=8545
- --max-inbound-peers=50
- --max-outbound-peers=50
- --metrics=0.0.0.0:9001
- --nat=extip:${IP}
- --pooled-tx-response-soft-limit=20971520
- --port=13115
- --rpc-cache.max-blocks=10000
- --rpc-cache.max-concurrent-db-requests=2048
- --rpc.gascap=600000000
- --rpc.max-blocks-per-filter=0
- --rpc.max-connections=50000
- --rpc.max-logs-per-response=0
- --ws
- --ws.addr=0.0.0.0
- --ws.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --ws.origins=*
- --ws.port=8545
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${BSC_CHAPEL_RETH_ARCHIVE_TRACE_DATA:-bsc-chapel-reth-archive-trace}:/root/.local/share/reth
- ./bsc/chapel:/config
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=9001
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.bsc-chapel-reth-archive-trace-stripprefix.stripprefix.prefixes=/bsc-chapel-reth
- traefik.http.services.bsc-chapel-reth-archive-trace.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.bsc-chapel-reth-archive-trace.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.bsc-chapel-reth-archive-trace.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.bsc-chapel-reth-archive-trace.rule=Host(`$DOMAIN`) && (Path(`/bsc-chapel-reth`) || Path(`/bsc-chapel-reth/`))}
- ${NO_SSL:+traefik.http.routers.bsc-chapel-reth-archive-trace.rule=Path(`/bsc-chapel-reth`) || Path(`/bsc-chapel-reth/`)}
- traefik.http.routers.bsc-chapel-reth-archive-trace.middlewares=bsc-chapel-reth-archive-trace-stripprefix, ipallowlist
shm_size: 2gb
volumes:
bsc-chapel-reth-archive-trace:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: bsc-testnet
method-groups:
enabled:
- debug
- filter
- trace
methods:
disabled:
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
...

View File

@@ -0,0 +1,158 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# This node is built from source with architecture-specific optimizations
# Build command: docker compose build --build-arg ARCH_TARGET=${ARCH_TARGET:-native} bsc-chapel-reth-pruned
#
# IMPORTANT: Cache optimization considerations
# If running multiple nodes on the same machine, be aware that:
# - L3 cache is shared across all cores, causing cache contention
# - Multiple nodes compete for cache space, reducing optimization effectiveness
# - Consider CPU pinning to minimize cache conflicts:
# docker run --cpuset-cpus="0-7" bsc-chapel-reth-pruned # Pin to specific cores
# - For AMD X3D CPUs, CCD0 (cores 0-7) has the 3D V-Cache
# - For multi-node setups, generic builds may perform better than cache-optimized ones
# Usage:
#
# mkdir rpc && cd rpc
#
# git init
# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git
# git fetch origin vibe
# git checkout origin/vibe
#
# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret
#
# env
# ...
# IP=$(curl ipinfo.io/ip)
# DOMAIN=${IP}.traefik.me
# COMPOSE_FILE=base.yml:rpc.yml:bsc/reth/bsc-chapel-reth-pruned-trace.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/bsc-chapel-reth-pruned \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
bsc-chapel-reth-pruned:
build:
context: ./
dockerfile: reth.Dockerfile
args:
LLVM_IMAGE: ${LLVM_IMAGE:-snowstep/llvm}
LLVM_VERSION: ${LLVM_VERSION:-20250912105042}
RETH_VERSION: ${BSC_CHAPEL_RETH_VERSION:-v0.0.4-archivenode-alpha}
RETH_REPO: ${BSC_CHAPEL_RETH_REPO:-https://github.com/bnb-chain/reth-bsc.git}
ARCH_TARGET: ${ARCH_TARGET:-native}
PROFILE: ${RETH_BUILD_PROFILE:-maxperf}
BUILD_BSC_RETH: true
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
net.core.somaxconn: 32768 # Higher connection queue
# Memory/Connection Management
# net.core.netdev_max_backlog: 50000 # Increase network buffer
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
memlock: -1 # Disable memory locking limits (for in-memory DBs like MDBX)
user: root
ports:
- 12525:12525
- 12525:12525/udp
expose:
- 8545
- 9001
entrypoint: [reth, node]
command:
- --chain=bsc-testnet
- --datadir=/root/.local/share/reth
- --discovery.port=12525
- --engine.cross-block-cache-size=${BSC_CHAPEL_RETH_STATE_CACHE:-4096}
- --engine.memory-block-buffer-target=128
- --engine.parallel-sparse-trie
- --full
- --gpo.maxprice=1000000
- --http
- --http.addr=0.0.0.0
- --http.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --http.corsdomain=*
- --http.port=8545
- --max-inbound-peers=50
- --max-outbound-peers=50
- --metrics=0.0.0.0:9001
- --nat=extip:${IP}
- --pooled-tx-response-soft-limit=20971520
- --port=12525
- --rpc-cache.max-blocks=10000
- --rpc-cache.max-concurrent-db-requests=2048
- --rpc.gascap=600000000
- --rpc.max-blocks-per-filter=0
- --rpc.max-connections=50000
- --rpc.max-logs-per-response=0
- --ws
- --ws.addr=0.0.0.0
- --ws.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --ws.origins=*
- --ws.port=8545
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${BSC_CHAPEL_RETH_PRUNED_TRACE_DATA:-bsc-chapel-reth-pruned-trace}:/root/.local/share/reth
- ./bsc/chapel:/config
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=9001
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.bsc-chapel-reth-pruned-trace-stripprefix.stripprefix.prefixes=/bsc-chapel-reth-pruned
- traefik.http.services.bsc-chapel-reth-pruned-trace.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.bsc-chapel-reth-pruned-trace.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.bsc-chapel-reth-pruned-trace.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.bsc-chapel-reth-pruned-trace.rule=Host(`$DOMAIN`) && (Path(`/bsc-chapel-reth-pruned`) || Path(`/bsc-chapel-reth-pruned/`))}
- ${NO_SSL:+traefik.http.routers.bsc-chapel-reth-pruned-trace.rule=Path(`/bsc-chapel-reth-pruned`) || Path(`/bsc-chapel-reth-pruned/`)}
- traefik.http.routers.bsc-chapel-reth-pruned-trace.middlewares=bsc-chapel-reth-pruned-trace-stripprefix, ipallowlist
shm_size: 2gb
volumes:
bsc-chapel-reth-pruned-trace:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: bsc-testnet
method-groups:
enabled:
- debug
- filter
- trace
methods:
disabled:
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
...

View File

@@ -0,0 +1,158 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# This node is built from source with architecture-specific optimizations
# Build command: docker compose build --build-arg ARCH_TARGET=${ARCH_TARGET:-native} bsc-mainnet-reth
#
# IMPORTANT: Cache optimization considerations
# If running multiple nodes on the same machine, be aware that:
# - L3 cache is shared across all cores, causing cache contention
# - Multiple nodes compete for cache space, reducing optimization effectiveness
# - Consider CPU pinning to minimize cache conflicts:
# docker run --cpuset-cpus="0-7" bsc-mainnet-reth # Pin to specific cores
# - For AMD X3D CPUs, CCD0 (cores 0-7) has the 3D V-Cache
# - For multi-node setups, generic builds may perform better than cache-optimized ones
# Usage:
#
# mkdir rpc && cd rpc
#
# git init
# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git
# git fetch origin vibe
# git checkout origin/vibe
#
# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret
#
# env
# ...
# IP=$(curl ipinfo.io/ip)
# DOMAIN=${IP}.traefik.me
# COMPOSE_FILE=base.yml:rpc.yml:bsc/reth/bsc-mainnet-reth-archive-trace.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/bsc-mainnet-reth \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
bsc-mainnet-reth:
build:
context: ./
dockerfile: reth.Dockerfile
args:
LLVM_IMAGE: ${LLVM_IMAGE:-snowstep/llvm}
LLVM_VERSION: ${LLVM_VERSION:-20250912105042}
RETH_VERSION: ${BSC_MAINNET_RETH_VERSION:-v0.0.4-archivenode-alpha}
RETH_REPO: ${BSC_MAINNET_RETH_REPO:-https://github.com/bnb-chain/reth-bsc.git}
ARCH_TARGET: ${ARCH_TARGET:-native}
PROFILE: ${RETH_BUILD_PROFILE:-maxperf}
BUILD_BSC_RETH: true
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
net.core.somaxconn: 32768 # Higher connection queue
# Memory/Connection Management
# net.core.netdev_max_backlog: 50000 # Increase network buffer
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
memlock: -1 # Disable memory locking limits (for in-memory DBs like MDBX)
user: root
ports:
- 13454:13454
- 13454:13454/udp
expose:
- 8545
- 9001
entrypoint: [reth, node]
command:
- --chain=bsc
- --datadir=/root/.local/share/reth
- --db.max-size=8TB
- --discovery.port=13454
- --engine.cross-block-cache-size=${BSC_MAINNET_RETH_STATE_CACHE:-4096}
- --engine.memory-block-buffer-target=128
- --engine.parallel-sparse-trie
- --gpo.maxprice=1000000
- --http
- --http.addr=0.0.0.0
- --http.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --http.corsdomain=*
- --http.port=8545
- --max-inbound-peers=50
- --max-outbound-peers=50
- --metrics=0.0.0.0:9001
- --nat=extip:${IP}
- --pooled-tx-response-soft-limit=20971520
- --port=13454
- --rpc-cache.max-blocks=10000
- --rpc-cache.max-concurrent-db-requests=2048
- --rpc.gascap=600000000
- --rpc.max-blocks-per-filter=0
- --rpc.max-connections=50000
- --rpc.max-logs-per-response=0
- --ws
- --ws.addr=0.0.0.0
- --ws.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --ws.origins=*
- --ws.port=8545
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${BSC_MAINNET_RETH_ARCHIVE_TRACE_DATA:-bsc-mainnet-reth-archive-trace}:/root/.local/share/reth
- ./bsc/mainnet:/config
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=9001
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.bsc-mainnet-reth-archive-trace-stripprefix.stripprefix.prefixes=/bsc-mainnet-reth
- traefik.http.services.bsc-mainnet-reth-archive-trace.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.bsc-mainnet-reth-archive-trace.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.bsc-mainnet-reth-archive-trace.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.bsc-mainnet-reth-archive-trace.rule=Host(`$DOMAIN`) && (Path(`/bsc-mainnet-reth`) || Path(`/bsc-mainnet-reth/`))}
- ${NO_SSL:+traefik.http.routers.bsc-mainnet-reth-archive-trace.rule=Path(`/bsc-mainnet-reth`) || Path(`/bsc-mainnet-reth/`)}
- traefik.http.routers.bsc-mainnet-reth-archive-trace.middlewares=bsc-mainnet-reth-archive-trace-stripprefix, ipallowlist
shm_size: 2gb
volumes:
bsc-mainnet-reth-archive-trace:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: bsc
method-groups:
enabled:
- debug
- filter
- trace
methods:
disabled:
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
...

View File

@@ -0,0 +1,158 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# This node is built from source with architecture-specific optimizations
# Build command: docker compose build --build-arg ARCH_TARGET=${ARCH_TARGET:-native} bsc-mainnet-reth-pruned
#
# IMPORTANT: Cache optimization considerations
# If running multiple nodes on the same machine, be aware that:
# - L3 cache is shared across all cores, causing cache contention
# - Multiple nodes compete for cache space, reducing optimization effectiveness
# - Consider CPU pinning to minimize cache conflicts:
# docker run --cpuset-cpus="0-7" bsc-mainnet-reth-pruned # Pin to specific cores
# - For AMD X3D CPUs, CCD0 (cores 0-7) has the 3D V-Cache
# - For multi-node setups, generic builds may perform better than cache-optimized ones
# Usage:
#
# mkdir rpc && cd rpc
#
# git init
# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git
# git fetch origin vibe
# git checkout origin/vibe
#
# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret
#
# env
# ...
# IP=$(curl ipinfo.io/ip)
# DOMAIN=${IP}.traefik.me
# COMPOSE_FILE=base.yml:rpc.yml:bsc/reth/bsc-mainnet-reth-pruned-trace.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/bsc-mainnet-reth-pruned \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
bsc-mainnet-reth-pruned:
build:
context: ./
dockerfile: reth.Dockerfile
args:
LLVM_IMAGE: ${LLVM_IMAGE:-snowstep/llvm}
LLVM_VERSION: ${LLVM_VERSION:-20250912105042}
RETH_VERSION: ${BSC_MAINNET_RETH_VERSION:-v0.0.4-archivenode-alpha}
RETH_REPO: ${BSC_MAINNET_RETH_REPO:-https://github.com/bnb-chain/reth-bsc.git}
ARCH_TARGET: ${ARCH_TARGET:-native}
PROFILE: ${RETH_BUILD_PROFILE:-maxperf}
BUILD_BSC_RETH: true
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
net.core.somaxconn: 32768 # Higher connection queue
# Memory/Connection Management
# net.core.netdev_max_backlog: 50000 # Increase network buffer
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
memlock: -1 # Disable memory locking limits (for in-memory DBs like MDBX)
user: root
ports:
- 12863:12863
- 12863:12863/udp
expose:
- 8545
- 9001
entrypoint: [reth, node]
command:
- --chain=bsc
- --datadir=/root/.local/share/reth
- --discovery.port=12863
- --engine.cross-block-cache-size=${BSC_MAINNET_RETH_STATE_CACHE:-4096}
- --engine.memory-block-buffer-target=128
- --engine.parallel-sparse-trie
- --full
- --gpo.maxprice=1000000
- --http
- --http.addr=0.0.0.0
- --http.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --http.corsdomain=*
- --http.port=8545
- --max-inbound-peers=50
- --max-outbound-peers=50
- --metrics=0.0.0.0:9001
- --nat=extip:${IP}
- --pooled-tx-response-soft-limit=20971520
- --port=12863
- --rpc-cache.max-blocks=10000
- --rpc-cache.max-concurrent-db-requests=2048
- --rpc.gascap=600000000
- --rpc.max-blocks-per-filter=0
- --rpc.max-connections=50000
- --rpc.max-logs-per-response=0
- --ws
- --ws.addr=0.0.0.0
- --ws.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --ws.origins=*
- --ws.port=8545
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${BSC_MAINNET_RETH_PRUNED_TRACE_DATA:-bsc-mainnet-reth-pruned-trace}:/root/.local/share/reth
- ./bsc/mainnet:/config
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=9001
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.bsc-mainnet-reth-pruned-trace-stripprefix.stripprefix.prefixes=/bsc-mainnet-reth-pruned
- traefik.http.services.bsc-mainnet-reth-pruned-trace.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.bsc-mainnet-reth-pruned-trace.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.bsc-mainnet-reth-pruned-trace.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.bsc-mainnet-reth-pruned-trace.rule=Host(`$DOMAIN`) && (Path(`/bsc-mainnet-reth-pruned`) || Path(`/bsc-mainnet-reth-pruned/`))}
- ${NO_SSL:+traefik.http.routers.bsc-mainnet-reth-pruned-trace.rule=Path(`/bsc-mainnet-reth-pruned`) || Path(`/bsc-mainnet-reth-pruned/`)}
- traefik.http.routers.bsc-mainnet-reth-pruned-trace.middlewares=bsc-mainnet-reth-pruned-trace-stripprefix, ipallowlist
shm_size: 2gb
volumes:
bsc-mainnet-reth-pruned-trace:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: bsc
method-groups:
enabled:
- debug
- filter
- trace
methods:
disabled:
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
...

398
clone-node.sh Executable file
View File

@@ -0,0 +1,398 @@
#!/bin/bash
# Fixed version that handles missing netstat
if [[ -n $2 ]]; then
DEST_HOST="$2.stakesquid.eu"
echo "Setting up optimized transfer to $DEST_HOST"
else
echo "Error: No destination provided"
exit 1
fi
# Configuration
BASE_PORT=9000
PORT_RANGE_START=9000
PORT_RANGE_END=9100
# Global array to track used ports
declare -a USED_PORTS=()
# Setup SSH multiplexing
setup_ssh_multiplex() {
echo "Setting up SSH control connection..."
ssh -nNf -o ControlMaster=yes \
-o StrictHostKeyChecking=no \
-o ControlPath=/tmp/ssh-mux-%h-%p-%r \
-o ControlPersist=600 \
-o Compression=no \
"$DEST_HOST" 2>/dev/null
if [[ $? -eq 0 ]]; then
echo "SSH control connection established"
export SSH_CMD="ssh -o StrictHostKeyChecking=no -o ControlPath=/tmp/ssh-mux-%h-%p-%r"
else
echo "Failed to setup SSH multiplexing, using direct SSH"
export SSH_CMD="ssh -o StrictHostKeyChecking=no"
fi
}
# Check if port is listening using various methods
check_port_listening() {
local port=$1
# Try different methods to check if port is listening
$SSH_CMD "$DEST_HOST" "
if command -v ss >/dev/null 2>&1; then
ss -tln | grep -q ':$port '
elif command -v netstat >/dev/null 2>&1; then
netstat -tln | grep -q ':$port '
elif command -v lsof >/dev/null 2>&1; then
lsof -i :$port >/dev/null 2>&1
else
# If no tools available, just try to connect to the port
timeout 1 bash -c 'cat < /dev/null > /dev/tcp/localhost/$port' 2>/dev/null
fi
"
return $?
}
# Find an available port in the range
find_available_port() {
local port=$PORT_RANGE_START
while [[ $port -le $PORT_RANGE_END ]]; do
# Check if port is already used by this script
local already_used=false
for used_port in "${USED_PORTS[@]}"; do
if [[ $port -eq $used_port ]]; then
already_used=true
break
fi
done
# Check if port is listening on remote host
if [[ "$already_used" == "false" ]] && ! check_port_listening $port; then
# Add to used ports array
USED_PORTS+=($port)
echo $port
return 0
fi
port=$((port + 1))
done
echo "Error: No available ports in range $PORT_RANGE_START-$PORT_RANGE_END" >&2
return 1
}
# Remove port from used ports array
release_port() {
local port=$1
local new_array=()
for used_port in "${USED_PORTS[@]}"; do
if [[ $used_port -ne $port ]]; then
new_array+=($used_port)
fi
done
USED_PORTS=("${new_array[@]}")
}
# Cleanup all used ports on exit
cleanup_all_ports() {
echo "Cleaning up all used ports..."
for port in "${USED_PORTS[@]}"; do
echo "Releasing port $port"
$SSH_CMD "$DEST_HOST" "
# Kill any processes on this port
lsof -i :$port 2>/dev/null | grep LISTEN | awk '{print \$2}' | xargs -r kill 2>/dev/null
" 2>/dev/null
done
USED_PORTS=()
}
# Transfer using screen method with better error handling
transfer_volume() {
local key=$1
local source_folder="/var/lib/docker/volumes/rpc_${key}/_data"
if [[ ! -d "$source_folder" ]]; then
echo "Warning: $source_folder does not exist, skipping"
return 1
fi
local folder_size=$(du -sb "$source_folder" 2>/dev/null | awk '{print $1}')
# Find an available port
local port=$(find_available_port)
if [[ $? -ne 0 ]]; then
echo "Error: Could not find available port for $key"
return 1
fi
echo "Transferring volume $key (size: $((folder_size / 1048576))MB) on port $port"
# Clean up any existing transfer for this specific key only
$SSH_CMD "$DEST_HOST" "
# Kill any existing screen session for this specific transfer
screen -S transfer_${key} -X quit 2>/dev/null
# Clean up old files for this specific transfer
rm -f /tmp/transfer_${key}.* 2>/dev/null
"
# Check if screen is available
if $SSH_CMD "$DEST_HOST" "which screen" >/dev/null 2>&1; then
echo "Starting screen listener on port $port..."
# Start listener in screen session with proper escaping
$SSH_CMD "$DEST_HOST" "
screen -dmS transfer_${key} bash -c '
nc -l -p $port | zstd -d | tar -xf - -C / 2>/tmp/transfer_${key}.err
echo \$? > /tmp/transfer_${key}.done
'
"
# Give it time to start
sleep 2
# Check if screen session is running
if ! $SSH_CMD "$DEST_HOST" "screen -list | grep -q transfer_${key}"; then
echo "Error: Screen session failed to start"
return 1
fi
else
echo "Screen not available, using nohup method..."
# Use nohup with proper backgrounding
$SSH_CMD "$DEST_HOST" "
nohup bash -c '
nc -l -p $port | zstd -d | tar -xf - -C / 2>/tmp/transfer_${key}.err
echo \$? > /tmp/transfer_${key}.done
' > /tmp/transfer_${key}.log 2>&1 < /dev/null &
echo \$! > /tmp/transfer_${key}.pid
"
sleep 2
# Verify process is running
if ! $SSH_CMD "$DEST_HOST" "[[ -f /tmp/transfer_${key}.pid ]] && kill -0 \$(cat /tmp/transfer_${key}.pid) 2>/dev/null"; then
echo "Error: Listener process failed to start"
return 1
fi
fi
# Optional: Check if port is listening (may fail if tools aren't available)
echo "Checking if port $port is ready..."
if check_port_listening $port; then
echo "Port $port is listening, starting transfer..."
else
echo "Cannot verify port status, proceeding with transfer anyway..."
fi
# Send the data
echo "Sending data to ${DEST_HOST}:${port}..."
tar -cf - --dereference "$source_folder" 2>/dev/null | \
pv -pterb -s "$folder_size" -N "$key" | \
zstd -3 -T0 | \
nc -w 60 "$DEST_HOST" "$port"
local transfer_status=$?
if [[ $transfer_status -eq 0 ]]; then
echo "Transfer complete, waiting for extraction to finish..."
# Wait for done flag with timeout
local attempts=0
local max_attempts=60 # Wait up to 2 minutes
while [[ $attempts -lt $max_attempts ]]; do
if $SSH_CMD "$DEST_HOST" "[[ -f /tmp/transfer_${key}.done ]]" 2>/dev/null; then
local remote_status=$($SSH_CMD "$DEST_HOST" "cat /tmp/transfer_${key}.done 2>/dev/null || echo 1")
if [[ "$remote_status" == "0" ]]; then
echo "✓ Volume $key transferred and extracted successfully"
# Cleanup - only for this specific transfer
$SSH_CMD "$DEST_HOST" "
rm -f /tmp/transfer_${key}.* 2>/dev/null
screen -S transfer_${key} -X quit 2>/dev/null
[[ -f /tmp/transfer_${key}.pid ]] && kill \$(cat /tmp/transfer_${key}.pid) 2>/dev/null
"
# Release the port for reuse
release_port $port
return 0
else
echo "✗ Extraction failed with status $remote_status"
echo "Error log:"
$SSH_CMD "$DEST_HOST" "cat /tmp/transfer_${key}.err 2>/dev/null || echo 'No error log'"
# Release the port even on failure
release_port $port
return 1
fi
fi
# Show progress
if [[ $((attempts % 5)) -eq 0 ]]; then
echo "Still waiting for extraction to complete... ($attempts/$max_attempts)"
fi
sleep 2
attempts=$((attempts + 1))
done
echo "⚠ Timeout waiting for extraction to complete"
# Release the port on timeout
release_port $port
return 1
else
echo "✗ Transfer failed with status $transfer_status"
# Release the port on transfer failure
release_port $port
return 1
fi
}
# Fallback: Direct SSH pipe
transfer_volume_ssh() {
local key=$1
local source_folder="/var/lib/docker/volumes/rpc_${key}/_data"
if [[ ! -d "$source_folder" ]]; then
echo "Warning: $source_folder does not exist, skipping"
return 1
fi
local folder_size=$(du -sb "$source_folder" 2>/dev/null | awk '{print $1}')
echo "Using direct SSH transfer for $key (size: $((folder_size / 1048576))MB)"
tar -cf - --dereference "$source_folder" 2>/dev/null | \
pv -pterb -s "$folder_size" -N "$key" | \
zstd -3 -T0 | \
$SSH_CMD -c chacha20-poly1305@openssh.com "$DEST_HOST" \
"zstd -d | tar -xf - -C /"
if [[ $? -eq 0 ]]; then
echo "✓ Volume $key transferred successfully"
return 0
else
echo "✗ Transfer failed"
return 1
fi
}
# Main execution
main() {
# Set up cleanup trap
trap cleanup_all_ports EXIT INT TERM
setup_ssh_multiplex
# the following sysctls are critical for high-latency networks
# they are not persistent and should not influence low latency connections.
# but what do I know its what the bot told me...
# the issue was that on high bandwidth connections with high latency the buffers
# where so small that a roundtrip to confirm the packet was necessary every few ms.
# so that the theoretical bandwidth was limited to 200 MBit/s
# also it seems to be important to match the remote buffers to the local buffers.
# feel free to remove the whole section. maybe it does nothing really.
ssh "$DEST_HOST" "
sudo sysctl -w net.core.rmem_max=67108864
sudo sysctl -w net.core.wmem_max=67108864
sudo sysctl -w net.ipv4.tcp_rmem='4096 87380 67108864'
sudo sysctl -w net.ipv4.tcp_wmem='4096 87380 67108864'
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr
sudo sysctl -w net.core.default_qdisc=fq
"
sudo sysctl -w net.ipv4.tcp_slow_start_after_idle=0
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr
sudo sysctl -w net.core.default_qdisc=fq
sudo sysctl -w net.ipv4.tcp_window_scaling=1
sudo sysctl -w net.ipv4.tcp_syncookies=1
# CRITICAL CHANGES - Increase buffers for 154ms RTT
# Need at least 20MB for 1Gbps at 154ms, using 64MB for headroom
sudo sysctl -w net.core.rmem_max=67108864 # Was 8MB, now 64MB
sudo sysctl -w net.core.wmem_max=67108864 # Was 8MB, now 64MB
sudo sysctl -w net.ipv4.tcp_rmem='4096 87380 67108864' # Was 8MB max, now 64MB
sudo sysctl -w net.ipv4.tcp_wmem='4096 87380 67108864' # Was 8MB max, now 64MB
# Optional but helpful for high-latency
sudo sysctl -w net.ipv4.tcp_mtu_probing=1
sudo sysctl -w net.ipv4.tcp_no_metrics_save=1
echo "Reading volume configuration from $1.yml..."
keys=$(cat /root/rpc/$1.yml | yaml2json - | jq '.volumes' | jq -r 'keys[]')
if [[ -z "$keys" ]]; then
echo "Error: No volumes found in configuration"
exit 1
fi
volume_count=$(echo "$keys" | wc -l)
echo "Found $volume_count volumes to transfer"
echo "----------------------------------------"
success_count=0
failed_volumes=""
for key in $keys; do
# Try nc method first
transfer_volume "$key"
if [[ $? -ne 0 ]]; then
echo "NC transfer failed, trying direct SSH..."
transfer_volume_ssh "$key"
if [[ $? -eq 0 ]]; then
success_count=$((success_count + 1))
else
failed_volumes="$failed_volumes $key"
fi
else
success_count=$((success_count + 1))
fi
echo "----------------------------------------"
done
echo ""
echo "Transfer Summary:"
echo " Successful: $success_count/$volume_count"
[[ -n "$failed_volumes" ]] && echo " Failed:$failed_volumes"
# Restore Network buffer and congestion control settings.
# These are better for your 0.2-1.4ms environment
ssh "$DEST_HOST" "
# These are better for your 0.2-1.4ms environment
sudo sysctl -w net.core.rmem_max=2097152 # 2MB
sudo sysctl -w net.core.wmem_max=2097152
sudo sysctl -w net.ipv4.tcp_rmem='4096 87380 2097152'
sudo sysctl -w net.ipv4.tcp_wmem='4096 87380 2097152'
sudo sysctl -w net.ipv4.tcp_congestion_control=cubic
sudo sysctl -w net.core.default_qdisc=fq_codel
sudo sysctl -w net.ipv4.tcp_slow_start_after_idle=0
sudo sysctl -w net.ipv4.tcp_tw_reuse=1
"
sudo sysctl -w net.core.rmem_max=2097152 # 2MB
sudo sysctl -w net.core.wmem_max=2097152
sudo sysctl -w net.ipv4.tcp_rmem='4096 87380 2097152'
sudo sysctl -w net.ipv4.tcp_wmem='4096 87380 2097152'
sudo sysctl -w net.ipv4.tcp_congestion_control=cubic
sudo sysctl -w net.core.default_qdisc=fq_codel
sudo sysctl -w net.ipv4.tcp_slow_start_after_idle=0
sudo sysctl -w net.ipv4.tcp_tw_reuse=1
$SSH_CMD -O exit "$DEST_HOST" 2>/dev/null
# Exit with appropriate status (cleanup will be handled by trap)
[[ $success_count -eq $volume_count ]] && exit 0 || exit 1
}
main "$@"

6932
compose_registry.json Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
core-buffalo: core-buffalo:
image: ${CORE_CORE_IMAGE:-ghcr.io/coredao-org/core-chain}:${CORE_BUFFALO_CORE_VERSION:-1.0.15} image: ${CORE_CORE_IMAGE:-ghcr.io/coredao-org/core-chain}:${CORE_BUFFALO_CORE_VERSION:-1.0.22}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -53,6 +53,11 @@ services:
entrypoint: [geth] entrypoint: [geth]
command: command:
- --buffalo - --buffalo
- --cache.database=${CORE_BUFFALO_CORE_PRUNED_PEBBLE_PATH_CACHE_DB:-40}
- --cache.gc=${CORE_BUFFALO_CORE_PRUNED_PEBBLE_PATH_CACHE_GC:-25}
- --cache.snapshot=${CORE_BUFFALO_CORE_PRUNED_PEBBLE_PATH_CACHE_SNAPSHOT:-20}
- --cache.trie=${CORE_BUFFALO_CORE_PRUNED_PEBBLE_PATH_CACHE_TRIE:-15}
- --cache=${CORE_BUFFALO_CORE_PRUNED_PEBBLE_PATH_CACHE:-1024}
- --config=/config/config.toml - --config=/config/config.toml
- --datadir=/core/.ethereum - --datadir=/core/.ethereum
- --db.engine=pebble - --db.engine=pebble

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
core-mainnet-archive: core-mainnet-archive:
image: ${CORE_CORE_IMAGE:-ghcr.io/coredao-org/core-chain}:${CORE_MAINNET_CORE_VERSION:-1.0.15} image: ${CORE_CORE_IMAGE:-ghcr.io/coredao-org/core-chain}:${CORE_MAINNET_CORE_VERSION:-1.0.22}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -52,6 +52,11 @@ services:
- 8545 - 8545
entrypoint: [geth] entrypoint: [geth]
command: command:
- --cache.database=${CORE_MAINNET_CORE_ARCHIVE_LEVELDB_HASH_CACHE_DB:-40}
- --cache.gc=${CORE_MAINNET_CORE_ARCHIVE_LEVELDB_HASH_CACHE_GC:-25}
- --cache.snapshot=${CORE_MAINNET_CORE_ARCHIVE_LEVELDB_HASH_CACHE_SNAPSHOT:-20}
- --cache.trie=${CORE_MAINNET_CORE_ARCHIVE_LEVELDB_HASH_CACHE_TRIE:-15}
- --cache=${CORE_MAINNET_CORE_ARCHIVE_LEVELDB_HASH_CACHE:-1024}
- --config=/config/config.toml - --config=/config/config.toml
- --datadir=/core/.ethereum - --datadir=/core/.ethereum
- --db.engine=leveldb - --db.engine=leveldb

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
core-mainnet: core-mainnet:
image: ${CORE_CORE_IMAGE:-ghcr.io/coredao-org/core-chain}:${CORE_MAINNET_CORE_VERSION:-1.0.15} image: ${CORE_CORE_IMAGE:-ghcr.io/coredao-org/core-chain}:${CORE_MAINNET_CORE_VERSION:-1.0.22}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -52,6 +52,11 @@ services:
- 8545 - 8545
entrypoint: [geth] entrypoint: [geth]
command: command:
- --cache.database=${CORE_MAINNET_CORE_PRUNED_LEVELDB_HASH_CACHE_DB:-40}
- --cache.gc=${CORE_MAINNET_CORE_PRUNED_LEVELDB_HASH_CACHE_GC:-25}
- --cache.snapshot=${CORE_MAINNET_CORE_PRUNED_LEVELDB_HASH_CACHE_SNAPSHOT:-20}
- --cache.trie=${CORE_MAINNET_CORE_PRUNED_LEVELDB_HASH_CACHE_TRIE:-15}
- --cache=${CORE_MAINNET_CORE_PRUNED_LEVELDB_HASH_CACHE:-1024}
- --config=/config/config.toml - --config=/config/config.toml
- --datadir=/core/.ethereum - --datadir=/core/.ethereum
- --db.engine=leveldb - --db.engine=leveldb
@@ -68,7 +73,7 @@ services:
- --rpc.gascap=600000000 - --rpc.gascap=600000000
- --rpc.txfeecap=0 - --rpc.txfeecap=0
- --state.scheme=hash - --state.scheme=hash
- --syncmode=snap - --syncmode=full
- --ws - --ws
- --ws.addr=0.0.0.0 - --ws.addr=0.0.0.0
- --ws.api=eth,net,web3,txpool,debug,admin,satoshi - --ws.api=eth,net,web3,txpool,debug,admin,satoshi

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services: services:
core-pigeon: core-pigeon:
image: ${CORE_CORE_IMAGE:-ghcr.io/coredao-org/core-chain}:${CORE_PIGEON_CORE_VERSION:-1.0.15} image: ${CORE_CORE_IMAGE:-ghcr.io/coredao-org/core-chain}:${CORE_PIGEON_CORE_VERSION:-1.0.22}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -52,6 +52,11 @@ services:
- 8545 - 8545
entrypoint: [geth] entrypoint: [geth]
command: command:
- --cache.database=${CORE_PIGEON_CORE_PRUNED_PEBBLE_PATH_CACHE_DB:-40}
- --cache.gc=${CORE_PIGEON_CORE_PRUNED_PEBBLE_PATH_CACHE_GC:-25}
- --cache.snapshot=${CORE_PIGEON_CORE_PRUNED_PEBBLE_PATH_CACHE_SNAPSHOT:-20}
- --cache.trie=${CORE_PIGEON_CORE_PRUNED_PEBBLE_PATH_CACHE_TRIE:-15}
- --cache=${CORE_PIGEON_CORE_PRUNED_PEBBLE_PATH_CACHE:-1024}
- --config=/config/config.toml - --config=/config/config.toml
- --datadir=/core/.ethereum - --datadir=/core/.ethereum
- --db.engine=pebble - --db.engine=pebble

View File

@@ -45,12 +45,11 @@ WSModules = ["eth", "net", "web3", "txpool", "debug", "satoshi"]
[Node.P2P] [Node.P2P]
MaxPeers = 30 MaxPeers = 30
NoDiscovery = false NoDiscovery = false
BootstrapNodes = ["enode://6334cdde2728b17486e4930c29e85128694faf118c23f559c7502e1cb42dd90a54f785c80c6a493d7d6f5ed23f3c9cf75e0392b024e45f7eadc81a84544a45ff@seed4.coredao.org:0?discport=35022","enode://20b605d5ee978c22bfb9ed208a40f2876d3dfafb1c60a6427c4db28e516520ee610cbc2a1c0ee05dd08578a041dc9070d92cf888422ed0869d0666b5103292b4@seed2.coredao.org:0?discport=35022","enode://04ffc724b82e2c52df47e2439a30ca4c0f7aca5ce270f6c6bcdf539581ce2ae4965afd5c5fe19106cd528ed6f379c68687a41310054ee751a73880b2c73e85d8@seed3.coredao.org:0?discport=35022","enode://e9a218f70debcb6a423d68f287c972c717606a70bfed278c2f7a876493d37bc535b05127abddeeca21941fc61497a6ca13387466c75a070050862ca6da11b0ca@seed1.coredao.org:0?discport=35022"] BootstrapNodes = ["enode://6334cdde2728b17486e4930c29e85128694faf118c23f559c7502e1cb42dd90a54f785c80c6a493d7d6f5ed23f3c9cf75e0392b024e45f7eadc81a84544a45ff@15.228.88.78:0?discport=35022","enode://20b605d5ee978c22bfb9ed208a40f2876d3dfafb1c60a6427c4db28e516520ee610cbc2a1c0ee05dd08578a041dc9070d92cf888422ed0869d0666b5103292b4@35.180.228.179:0?discport=35022","enode://04ffc724b82e2c52df47e2439a30ca4c0f7aca5ce270f6c6bcdf539581ce2ae4965afd5c5fe19106cd528ed6f379c68687a41310054ee751a73880b2c73e85d8@52.194.224.47:0?discport=35022","enode://e9a218f70debcb6a423d68f287c972c717606a70bfed278c2f7a876493d37bc535b05127abddeeca21941fc61497a6ca13387466c75a070050862ca6da11b0ca@13.228.168.166:0?discport=35022"]
StaticNodes = ["enode://8c60a7445dfff047051aa686d621e8ff3fad4623ebd60aea3b8a9b5285945ff0bb05540cc215bcb0ae3fb07b6c368605ddeebeb23b282ffb2ae777d8a73155ec@18.230.84.232:35021","enode://af5bb3eb4278885d98dfdb994a283cd1eafec7f3cf53b13325a484a71e02613a2d724314a2d5bf2ea3b33adb0d1ad7d1c5b9e23c8d2959453a55bde5f02c762f@35.72.191.164:35021","enode://40811f3281241c68555179e40654971ec01b1849899e296c0852e5dfed70f3d17f776e90dced50e94cc71699e2b010eec58047ce91d07fa7a3520220cf3ce22b@13.39.140.139:35021","enode://ee253be3c7c2ccdd4611d16975733ceb2f41f61a04672756fa4850a0b85419ca5e07ceb5a6f1ac43318b136c8995b9160e6de0c6b4bc2c9325797c11275888e6@18.221.135.3:35021","enode://71f4b875a8cec01fe9f01974a682ef846ab8cbe0c23518b2a94e38eef0db829488502122b19c94d595521364bc4550639b58c0332d3942447dfd65707fc80bc0@13.214.98.126:35021"] StaticNodes = ["enode://8c60a7445dfff047051aa686d621e8ff3fad4623ebd60aea3b8a9b5285945ff0bb05540cc215bcb0ae3fb07b6c368605ddeebeb23b282ffb2ae777d8a73155ec@18.230.84.232:35021","enode://af5bb3eb4278885d98dfdb994a283cd1eafec7f3cf53b13325a484a71e02613a2d724314a2d5bf2ea3b33adb0d1ad7d1c5b9e23c8d2959453a55bde5f02c762f@35.72.191.164:35021","enode://40811f3281241c68555179e40654971ec01b1849899e296c0852e5dfed70f3d17f776e90dced50e94cc71699e2b010eec58047ce91d07fa7a3520220cf3ce22b@13.39.140.139:35021","enode://ee253be3c7c2ccdd4611d16975733ceb2f41f61a04672756fa4850a0b85419ca5e07ceb5a6f1ac43318b136c8995b9160e6de0c6b4bc2c9325797c11275888e6@18.221.135.3:35021","enode://71f4b875a8cec01fe9f01974a682ef846ab8cbe0c23518b2a94e38eef0db829488502122b19c94d595521364bc4550639b58c0332d3942447dfd65707fc80bc0@13.214.98.126:35021"]
EnableMsgEvents = false EnableMsgEvents = false
[Node.HTTPTimeouts] [Node.HTTPTimeouts]
ReadTimeout = 30000000000 ReadTimeout = 30000000000
WriteTimeout = 30000000000 WriteTimeout = 30000000000
IdleTimeout = 120000000000 IdleTimeout = 120000000000

View File

@@ -42,7 +42,7 @@ WSModules = ["eth", "net", "web3", "txpool", "satoshi"]
MaxPeers = 30 MaxPeers = 30
NoDiscovery = false NoDiscovery = false
BootstrapNodes = ["enode://b2cbb9436c77dd99a396e0189449e98ee949090dc476522bc05def61d8d79d50078205199955045feaf673b5f27de39535578206032c45d3f9699b21e07df53d@3.144.36.216:0?discport=35011","enode://9db91c96446559506f7553b6ce9de33d1179d111ce8e7214cfe804a29251ba5cba240686685ba17df12b5b0d818f28572ea06e5d998ce6a649cb81dfa4456a6f@54.183.212.218:0?discport=35011","enode://f93b5c1c4ccfe432c69e46dedaf79f3870c229fa488f0c4d01791513bdff523d327af3bf7ae8eb15f01e02961af1c22071b1209f5e36c28a6261cbb4434139de@54.186.160.177:0?discport=35011"] BootstrapNodes = ["enode://b2cbb9436c77dd99a396e0189449e98ee949090dc476522bc05def61d8d79d50078205199955045feaf673b5f27de39535578206032c45d3f9699b21e07df53d@3.144.36.216:0?discport=35011","enode://9db91c96446559506f7553b6ce9de33d1179d111ce8e7214cfe804a29251ba5cba240686685ba17df12b5b0d818f28572ea06e5d998ce6a649cb81dfa4456a6f@54.183.212.218:0?discport=35011","enode://f93b5c1c4ccfe432c69e46dedaf79f3870c229fa488f0c4d01791513bdff523d327af3bf7ae8eb15f01e02961af1c22071b1209f5e36c28a6261cbb4434139de@54.186.160.177:0?discport=35011"]
StaticNodes = ["enode://db9cfe124a86f7248c19996b7f9dd9e95c6b70ac895f9726da8e7e30158b93410632395994f1e5b7a1dd3e55901a10d4f069d67f8d77dc4ecced84ea55cf5cb0@13.59.107.172:35012", "enode://a9900831a1b9871c37b9ab069ecf1d43b355ed79f3ea291967e32e02715ffc94776aada18decc37a8bc7ce4970cb27cdce7337817b58d984ad3ce2007e35698e@18.217.102.208:35012"] StaticNodes = ["enode://7cee31d7409a2226232df2c494d631bb40fe078b5dc39537d0a6fd9e845b94628c0e0d49bc0ba448ae458abbbaa51ddfe887feb319e7f427395cd1bd219979f3@35.159.232.15:35012","enode://db9cfe124a86f7248c19996b7f9dd9e95c6b70ac895f9726da8e7e30158b93410632395994f1e5b7a1dd3e55901a10d4f069d67f8d77dc4ecced84ea55cf5cb0@13.59.107.172:35012", "enode://a9900831a1b9871c37b9ab069ecf1d43b355ed79f3ea291967e32e02715ffc94776aada18decc37a8bc7ce4970cb27cdce7337817b58d984ad3ce2007e35698e@18.217.102.208:35012"]
EnableMsgEvents = false EnableMsgEvents = false
[Node.HTTPTimeouts] [Node.HTTPTimeouts]

View File

@@ -32,8 +32,8 @@ x-logging-defaults: &logging-defaults
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' # --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services: services:
cronos-zkevm-mainnet-archive-client: cronos-zkevm-mainnet-archive:
image: ${CRONOS_ZKEVM_EXTERNAL_NODE_IMAGE:-ghcr.io/cronos-labs/external-node}:${CRONOS_ZKEVM_MAINNET_EXTERNAL_NODE_VERSION:-v27.5.3-patch} image: ${CRONOS_ZKEVM_EXTERNAL_NODE_IMAGE:-ghcr.io/cronos-labs/external-node}:${CRONOS_ZKEVM_MAINNET_EXTERNAL_NODE_VERSION:-v29.6.0}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -87,35 +87,24 @@ services:
logging: *logging-defaults logging: *logging-defaults
labels: labels:
- prometheus-scrape.enabled=false - prometheus-scrape.enabled=false
cronos-zkevm-mainnet-archive:
image: nginx
expose:
- '80'
environment:
PROXY_HOST: cronos-zkevm-mainnet-archive-client
RPC_PATH: ''
RPC_PORT: 8545
WS_PATH: ''
WS_PORT: 8546
restart: unless-stopped
depends_on:
- cronos-zkevm-mainnet-archive-client
networks:
- chains
volumes:
- ./nginx-proxy:/etc/nginx/templates
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
- traefik.enable=true - traefik.enable=true
- traefik.http.middlewares.cronos-zkevm-mainnet-external-node-archive-stripprefix.stripprefix.prefixes=/cronos-zkevm-mainnet-archive - traefik.http.middlewares.cronos-zkevm-mainnet-external-node-archive-stripprefix.stripprefix.prefixes=/cronos-zkevm-mainnet-archive
- traefik.http.services.cronos-zkevm-mainnet-external-node-archive.loadbalancer.server.port=80 - traefik.http.services.cronos-zkevm-mainnet-external-node-archive.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-mainnet-external-node-archive.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.cronos-zkevm-mainnet-external-node-archive.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-mainnet-external-node-archive.tls.certresolver=myresolver} - ${NO_SSL:-traefik.http.routers.cronos-zkevm-mainnet-external-node-archive.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-mainnet-external-node-archive.rule=Host(`$DOMAIN`) && (Path(`/cronos-zkevm-mainnet-archive`) || Path(`/cronos-zkevm-mainnet-archive/`))} - ${NO_SSL:-traefik.http.routers.cronos-zkevm-mainnet-external-node-archive.rule=Host(`$DOMAIN`) && (Path(`/cronos-zkevm-mainnet-archive`) || Path(`/cronos-zkevm-mainnet-archive/`))}
- ${NO_SSL:+traefik.http.routers.cronos-zkevm-mainnet-external-node-archive.rule=Path(`/cronos-zkevm-mainnet-archive`) || Path(`/cronos-zkevm-mainnet-archive/`)} - ${NO_SSL:+traefik.http.routers.cronos-zkevm-mainnet-external-node-archive.rule=Path(`/cronos-zkevm-mainnet-archive`) || Path(`/cronos-zkevm-mainnet-archive/`)}
- traefik.http.routers.cronos-zkevm-mainnet-external-node-archive.middlewares=cronos-zkevm-mainnet-external-node-archive-stripprefix, ipallowlist - traefik.http.routers.cronos-zkevm-mainnet-external-node-archive.middlewares=cronos-zkevm-mainnet-external-node-archive-stripprefix, ipallowlist
- traefik.http.routers.cronos-zkevm-mainnet-external-node-archive.priority=50 # gets any request that is not GET with UPGRADE header
- traefik.http.routers.cronos-zkevm-mainnet-external-node-archive-ws.priority=100 # answers GET requests first
- traefik.http.services.cronos-zkevm-mainnet-external-node-archive-ws.loadbalancer.server.port=8546
- traefik.http.routers.cronos-zkevm-mainnet-external-node-archive-ws.service=cronos-zkevm-mainnet-external-node-archive-ws
- traefik.http.routers.cronos-zkevm-mainnet-external-node-archive.service=cronos-zkevm-mainnet-external-node-archive
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-mainnet-external-node-archive-ws.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-mainnet-external-node-archive-ws.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-mainnet-external-node-archive-ws.rule=Host(`$DOMAIN`) && (Path(`/cronos-zkevm-mainnet-archive`) || Path(`/cronos-zkevm-mainnet-archive/`)) && Headers(`Upgrade`, `websocket`)}
- ${NO_SSL:+traefik.http.routers.cronos-zkevm-mainnet-external-node-archive-ws.rule=(Path(`/cronos-zkevm-mainnet-archive`) || Path(`/cronos-zkevm-mainnet-archive/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.cronos-zkevm-mainnet-external-node-archive-ws.middlewares=cronos-zkevm-mainnet-external-node-archive-stripprefix, ipallowlist
cronos-zkevm-mainnet-archive-db: cronos-zkevm-mainnet-archive-db:
image: postgres:14 image: postgres:14

View File

@@ -32,8 +32,8 @@ x-logging-defaults: &logging-defaults
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' # --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services: services:
cronos-zkevm-mainnet-client: cronos-zkevm-mainnet:
image: ${CRONOS_ZKEVM_EXTERNAL_NODE_IMAGE:-ghcr.io/cronos-labs/external-node}:${CRONOS_ZKEVM_MAINNET_EXTERNAL_NODE_VERSION:-v27.5.3-patch} image: ${CRONOS_ZKEVM_EXTERNAL_NODE_IMAGE:-ghcr.io/cronos-labs/external-node}:${CRONOS_ZKEVM_MAINNET_EXTERNAL_NODE_VERSION:-v29.6.0}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -87,35 +87,24 @@ services:
logging: *logging-defaults logging: *logging-defaults
labels: labels:
- prometheus-scrape.enabled=false - prometheus-scrape.enabled=false
cronos-zkevm-mainnet:
image: nginx
expose:
- '80'
environment:
PROXY_HOST: cronos-zkevm-mainnet-client
RPC_PATH: ''
RPC_PORT: 8545
WS_PATH: ''
WS_PORT: 8546
restart: unless-stopped
depends_on:
- cronos-zkevm-mainnet-client
networks:
- chains
volumes:
- ./nginx-proxy:/etc/nginx/templates
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
- traefik.enable=true - traefik.enable=true
- traefik.http.middlewares.cronos-zkevm-mainnet-external-node-pruned-stripprefix.stripprefix.prefixes=/cronos-zkevm-mainnet - traefik.http.middlewares.cronos-zkevm-mainnet-external-node-pruned-stripprefix.stripprefix.prefixes=/cronos-zkevm-mainnet
- traefik.http.services.cronos-zkevm-mainnet-external-node-pruned.loadbalancer.server.port=80 - traefik.http.services.cronos-zkevm-mainnet-external-node-pruned.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned.tls.certresolver=myresolver} - ${NO_SSL:-traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned.rule=Host(`$DOMAIN`) && (Path(`/cronos-zkevm-mainnet`) || Path(`/cronos-zkevm-mainnet/`))} - ${NO_SSL:-traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned.rule=Host(`$DOMAIN`) && (Path(`/cronos-zkevm-mainnet`) || Path(`/cronos-zkevm-mainnet/`))}
- ${NO_SSL:+traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned.rule=Path(`/cronos-zkevm-mainnet`) || Path(`/cronos-zkevm-mainnet/`)} - ${NO_SSL:+traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned.rule=Path(`/cronos-zkevm-mainnet`) || Path(`/cronos-zkevm-mainnet/`)}
- traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned.middlewares=cronos-zkevm-mainnet-external-node-pruned-stripprefix, ipallowlist - traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned.middlewares=cronos-zkevm-mainnet-external-node-pruned-stripprefix, ipallowlist
- traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned.priority=50 # gets any request that is not GET with UPGRADE header
- traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned-ws.priority=100 # answers GET requests first
- traefik.http.services.cronos-zkevm-mainnet-external-node-pruned-ws.loadbalancer.server.port=8546
- traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned-ws.service=cronos-zkevm-mainnet-external-node-pruned-ws
- traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned.service=cronos-zkevm-mainnet-external-node-pruned
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned-ws.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned-ws.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned-ws.rule=Host(`$DOMAIN`) && (Path(`/cronos-zkevm-mainnet`) || Path(`/cronos-zkevm-mainnet/`)) && Headers(`Upgrade`, `websocket`)}
- ${NO_SSL:+traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned-ws.rule=(Path(`/cronos-zkevm-mainnet`) || Path(`/cronos-zkevm-mainnet/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.cronos-zkevm-mainnet-external-node-pruned-ws.middlewares=cronos-zkevm-mainnet-external-node-pruned-stripprefix, ipallowlist
cronos-zkevm-mainnet-db: cronos-zkevm-mainnet-db:
image: postgres:14 image: postgres:14

View File

@@ -32,8 +32,8 @@ x-logging-defaults: &logging-defaults
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' # --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services: services:
cronos-zkevm-testnet-archive-client: cronos-zkevm-testnet-archive:
image: ${CRONOS_ZKEVM_EXTERNAL_NODE_IMAGE:-ghcr.io/cronos-labs/external-node}:${CRONOS_ZKEVM_TESTNET_EXTERNAL_NODE_VERSION:-v27.5.3-patch} image: ${CRONOS_ZKEVM_EXTERNAL_NODE_IMAGE:-ghcr.io/cronos-labs/external-node}:${CRONOS_ZKEVM_TESTNET_EXTERNAL_NODE_VERSION:-v29.6.0}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -87,35 +87,24 @@ services:
logging: *logging-defaults logging: *logging-defaults
labels: labels:
- prometheus-scrape.enabled=false - prometheus-scrape.enabled=false
cronos-zkevm-testnet-archive:
image: nginx
expose:
- '80'
environment:
PROXY_HOST: cronos-zkevm-testnet-archive-client
RPC_PATH: ''
RPC_PORT: 8545
WS_PATH: ''
WS_PORT: 8546
restart: unless-stopped
depends_on:
- cronos-zkevm-testnet-archive-client
networks:
- chains
volumes:
- ./nginx-proxy:/etc/nginx/templates
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
- traefik.enable=true - traefik.enable=true
- traefik.http.middlewares.cronos-zkevm-testnet-external-node-archive-stripprefix.stripprefix.prefixes=/cronos-zkevm-testnet-archive - traefik.http.middlewares.cronos-zkevm-testnet-external-node-archive-stripprefix.stripprefix.prefixes=/cronos-zkevm-testnet-archive
- traefik.http.services.cronos-zkevm-testnet-external-node-archive.loadbalancer.server.port=80 - traefik.http.services.cronos-zkevm-testnet-external-node-archive.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-testnet-external-node-archive.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.cronos-zkevm-testnet-external-node-archive.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-testnet-external-node-archive.tls.certresolver=myresolver} - ${NO_SSL:-traefik.http.routers.cronos-zkevm-testnet-external-node-archive.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-testnet-external-node-archive.rule=Host(`$DOMAIN`) && (Path(`/cronos-zkevm-testnet-archive`) || Path(`/cronos-zkevm-testnet-archive/`))} - ${NO_SSL:-traefik.http.routers.cronos-zkevm-testnet-external-node-archive.rule=Host(`$DOMAIN`) && (Path(`/cronos-zkevm-testnet-archive`) || Path(`/cronos-zkevm-testnet-archive/`))}
- ${NO_SSL:+traefik.http.routers.cronos-zkevm-testnet-external-node-archive.rule=Path(`/cronos-zkevm-testnet-archive`) || Path(`/cronos-zkevm-testnet-archive/`)} - ${NO_SSL:+traefik.http.routers.cronos-zkevm-testnet-external-node-archive.rule=Path(`/cronos-zkevm-testnet-archive`) || Path(`/cronos-zkevm-testnet-archive/`)}
- traefik.http.routers.cronos-zkevm-testnet-external-node-archive.middlewares=cronos-zkevm-testnet-external-node-archive-stripprefix, ipallowlist - traefik.http.routers.cronos-zkevm-testnet-external-node-archive.middlewares=cronos-zkevm-testnet-external-node-archive-stripprefix, ipallowlist
- traefik.http.routers.cronos-zkevm-testnet-external-node-archive.priority=50 # gets any request that is not GET with UPGRADE header
- traefik.http.routers.cronos-zkevm-testnet-external-node-archive-ws.priority=100 # answers GET requests first
- traefik.http.services.cronos-zkevm-testnet-external-node-archive-ws.loadbalancer.server.port=8546
- traefik.http.routers.cronos-zkevm-testnet-external-node-archive-ws.service=cronos-zkevm-testnet-external-node-archive-ws
- traefik.http.routers.cronos-zkevm-testnet-external-node-archive.service=cronos-zkevm-testnet-external-node-archive
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-testnet-external-node-archive-ws.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-testnet-external-node-archive-ws.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-testnet-external-node-archive-ws.rule=Host(`$DOMAIN`) && (Path(`/cronos-zkevm-testnet-archive`) || Path(`/cronos-zkevm-testnet-archive/`)) && Headers(`Upgrade`, `websocket`)}
- ${NO_SSL:+traefik.http.routers.cronos-zkevm-testnet-external-node-archive-ws.rule=(Path(`/cronos-zkevm-testnet-archive`) || Path(`/cronos-zkevm-testnet-archive/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.cronos-zkevm-testnet-external-node-archive-ws.middlewares=cronos-zkevm-testnet-external-node-archive-stripprefix, ipallowlist
cronos-zkevm-testnet-archive-db: cronos-zkevm-testnet-archive-db:
image: postgres:14 image: postgres:14

View File

@@ -32,8 +32,8 @@ x-logging-defaults: &logging-defaults
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' # --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services: services:
cronos-zkevm-testnet-client: cronos-zkevm-testnet:
image: ${CRONOS_ZKEVM_EXTERNAL_NODE_IMAGE:-ghcr.io/cronos-labs/external-node}:${CRONOS_ZKEVM_TESTNET_EXTERNAL_NODE_VERSION:-v27.5.3-patch} image: ${CRONOS_ZKEVM_EXTERNAL_NODE_IMAGE:-ghcr.io/cronos-labs/external-node}:${CRONOS_ZKEVM_TESTNET_EXTERNAL_NODE_VERSION:-v29.6.0}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -87,35 +87,24 @@ services:
logging: *logging-defaults logging: *logging-defaults
labels: labels:
- prometheus-scrape.enabled=false - prometheus-scrape.enabled=false
cronos-zkevm-testnet:
image: nginx
expose:
- '80'
environment:
PROXY_HOST: cronos-zkevm-testnet-client
RPC_PATH: ''
RPC_PORT: 8545
WS_PATH: ''
WS_PORT: 8546
restart: unless-stopped
depends_on:
- cronos-zkevm-testnet-client
networks:
- chains
volumes:
- ./nginx-proxy:/etc/nginx/templates
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
- traefik.enable=true - traefik.enable=true
- traefik.http.middlewares.cronos-zkevm-testnet-external-node-pruned-stripprefix.stripprefix.prefixes=/cronos-zkevm-testnet - traefik.http.middlewares.cronos-zkevm-testnet-external-node-pruned-stripprefix.stripprefix.prefixes=/cronos-zkevm-testnet
- traefik.http.services.cronos-zkevm-testnet-external-node-pruned.loadbalancer.server.port=80 - traefik.http.services.cronos-zkevm-testnet-external-node-pruned.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-testnet-external-node-pruned.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.cronos-zkevm-testnet-external-node-pruned.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-testnet-external-node-pruned.tls.certresolver=myresolver} - ${NO_SSL:-traefik.http.routers.cronos-zkevm-testnet-external-node-pruned.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-testnet-external-node-pruned.rule=Host(`$DOMAIN`) && (Path(`/cronos-zkevm-testnet`) || Path(`/cronos-zkevm-testnet/`))} - ${NO_SSL:-traefik.http.routers.cronos-zkevm-testnet-external-node-pruned.rule=Host(`$DOMAIN`) && (Path(`/cronos-zkevm-testnet`) || Path(`/cronos-zkevm-testnet/`))}
- ${NO_SSL:+traefik.http.routers.cronos-zkevm-testnet-external-node-pruned.rule=Path(`/cronos-zkevm-testnet`) || Path(`/cronos-zkevm-testnet/`)} - ${NO_SSL:+traefik.http.routers.cronos-zkevm-testnet-external-node-pruned.rule=Path(`/cronos-zkevm-testnet`) || Path(`/cronos-zkevm-testnet/`)}
- traefik.http.routers.cronos-zkevm-testnet-external-node-pruned.middlewares=cronos-zkevm-testnet-external-node-pruned-stripprefix, ipallowlist - traefik.http.routers.cronos-zkevm-testnet-external-node-pruned.middlewares=cronos-zkevm-testnet-external-node-pruned-stripprefix, ipallowlist
- traefik.http.routers.cronos-zkevm-testnet-external-node-pruned.priority=50 # gets any request that is not GET with UPGRADE header
- traefik.http.routers.cronos-zkevm-testnet-external-node-pruned-ws.priority=100 # answers GET requests first
- traefik.http.services.cronos-zkevm-testnet-external-node-pruned-ws.loadbalancer.server.port=8546
- traefik.http.routers.cronos-zkevm-testnet-external-node-pruned-ws.service=cronos-zkevm-testnet-external-node-pruned-ws
- traefik.http.routers.cronos-zkevm-testnet-external-node-pruned.service=cronos-zkevm-testnet-external-node-pruned
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-testnet-external-node-pruned-ws.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-testnet-external-node-pruned-ws.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.cronos-zkevm-testnet-external-node-pruned-ws.rule=Host(`$DOMAIN`) && (Path(`/cronos-zkevm-testnet`) || Path(`/cronos-zkevm-testnet/`)) && Headers(`Upgrade`, `websocket`)}
- ${NO_SSL:+traefik.http.routers.cronos-zkevm-testnet-external-node-pruned-ws.rule=(Path(`/cronos-zkevm-testnet`) || Path(`/cronos-zkevm-testnet/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.cronos-zkevm-testnet-external-node-pruned-ws.middlewares=cronos-zkevm-testnet-external-node-pruned-stripprefix, ipallowlist
cronos-zkevm-testnet-db: cronos-zkevm-testnet-db:
image: postgres:14 image: postgres:14

109
delete-node-keys.sh Executable file
View File

@@ -0,0 +1,109 @@
#!/bin/bash
# Script to delete node key files from volumes based on glob patterns
# Usage: ./delete-node-keys.sh <config-file> [globs-file]
# config-file: YAML config file (e.g., ethereum-mainnet.yml)
# globs-file: File containing glob patterns (default: node-key-globs.txt)
if [[ -z "$1" ]]; then
echo "Error: No configuration file provided"
echo "Usage: $0 <config-file> [globs-file]"
exit 1
fi
CONFIG_FILE="$1.yml"
GLOBS_FILE="${2:-node-key-globs.txt}"
# Check if config file exists
if [[ ! -f "/root/rpc/$CONFIG_FILE" ]]; then
echo "Error: Configuration file /root/rpc/$CONFIG_FILE does not exist"
exit 1
fi
# Check if globs file exists
if [[ ! -f "$(dirname "$0")/$GLOBS_FILE" ]]; then
echo "Error: Globs file $(dirname "$0")/$GLOBS_FILE does not exist"
exit 1
fi
# Read volume keys from config file
echo "Reading volume configuration from $CONFIG_FILE..."
keys=$(cat /root/rpc/$CONFIG_FILE | yaml2json - | jq '.volumes' | jq -r 'keys[]')
if [[ -z "$keys" ]]; then
echo "Error: No volumes found in configuration"
exit 1
fi
# Read glob patterns from file (skip empty lines and comments)
globs=()
while IFS= read -r line || [[ -n "$line" ]]; do
# Skip empty lines and comments (lines starting with #)
if [[ -n "$line" && ! "$line" =~ ^[[:space:]]*# ]]; then
globs+=("$line")
fi
done < "$(dirname "$0")/$GLOBS_FILE"
if [[ ${#globs[@]} -eq 0 ]]; then
echo "Error: No glob patterns found in $GLOBS_FILE"
exit 1
fi
volume_count=$(echo "$keys" | wc -l)
echo "Found $volume_count volumes to process"
echo "Using ${#globs[@]} glob pattern(s) from $GLOBS_FILE"
echo "----------------------------------------"
deleted_count=0
processed_count=0
for key in $keys; do
volume_path="/var/lib/docker/volumes/rpc_${key}/_data"
if [[ ! -d "$volume_path" ]]; then
echo "Warning: $volume_path does not exist, skipping"
continue
fi
echo "Processing volume: $key"
volume_deleted=0
# For each glob pattern, find and delete matching files
# Use subshell to safely change directory and enable globstar
for glob in "${globs[@]}"; do
# Process in subshell to avoid affecting parent shell state
while IFS= read -r file; do
if [[ -n "$file" && -f "$file" ]]; then
echo " Deleting: $file"
rm -f "$file"
((volume_deleted++))
((deleted_count++))
fi
done < <(
# Enable extended globbing and globstar for recursive patterns
shopt -s globstar nullglob
cd "$volume_path" || exit 1
# Expand glob pattern and output full paths
for f in $glob; do
if [[ -f "$f" ]]; then
echo "$volume_path/$f"
fi
done
)
done
if [[ $volume_deleted -eq 0 ]]; then
echo " No matching files found"
else
echo " Deleted $volume_deleted file(s)"
fi
((processed_count++))
echo "----------------------------------------"
done
echo ""
echo "Summary:"
echo " Processed: $processed_count/$volume_count volumes"
echo " Total files deleted: $deleted_count"

View File

@@ -1,6 +1,6 @@
services: services:
dshackle-free: dshackle-free:
image: drpcorg/dshackle:0.65.13 image: drpcorg/dshackle:0.71.10
restart: unless-stopped restart: unless-stopped
volumes: volumes:
- ./free_configs:/etc/dshackle - ./free_configs:/etc/dshackle
@@ -18,6 +18,8 @@ services:
- "traefik.http.routers.drpc-free.entrypoints=grpc" - "traefik.http.routers.drpc-free.entrypoints=grpc"
- "traefik.http.routers.drpc-free.tls.certresolver=myresolver" - "traefik.http.routers.drpc-free.tls.certresolver=myresolver"
- "traefik.http.routers.drpc-free.rule=Host(`$GW_FREE_DOMAIN`)" - "traefik.http.routers.drpc-free.rule=Host(`$GW_FREE_DOMAIN`)"
extra_hosts:
- "host.docker.internal:host-gateway"
networks: networks:
- chains - chains
logging: logging:

View File

@@ -1,11 +1,12 @@
services: services:
dshackle: dshackle:
image: drpcorg/dshackle:0.65.13 image: drpcorg/dshackle:0.71.10
restart: unless-stopped restart: unless-stopped
volumes: volumes:
- ./main_configs:/etc/dshackle - ./main_configs:/etc/dshackle
expose: expose:
- 8080 - 8080
- 8081
- 25703 - 25703
#ports: #ports:
# - "2449:2449" # - "2449:2449"
@@ -31,7 +32,8 @@ services:
- "traefik.http.routers.dshackle.rule=Host(`$GW_DOMAIN`)" - "traefik.http.routers.dshackle.rule=Host(`$GW_DOMAIN`)"
- "${GW_ALLOW_LIST:+traefik.http.middlewares.gwallowlist.ipallowlist.sourcerange=$GW_ALLOW_LIST}" - "${GW_ALLOW_LIST:+traefik.http.middlewares.gwallowlist.ipallowlist.sourcerange=$GW_ALLOW_LIST}"
- "${GW_ALLOW_LIST:+traefik.http.routers.dshackle.middlewares=gwallowlist}" - "${GW_ALLOW_LIST:+traefik.http.routers.dshackle.middlewares=gwallowlist}"
extra_hosts:
- "host.docker.internal:host-gateway"
networks: networks:
- chains - chains
logging: logging:

102
erigon3.Dockerfile Normal file
View File

@@ -0,0 +1,102 @@
# syntax = docker/dockerfile:1.2
ARG REPO=https://github.com/erigontech/erigon.git
ARG VERSION=v3.0.7
ARG COMMIT=${COMMIT:-${VERSION}}
FROM docker.io/library/golang:1.24.1-alpine3.20 AS builder
ARG REPO
ARG COMMIT
RUN apk --no-cache add build-base linux-headers git bash ca-certificates libstdc++
WORKDIR /app
RUN git clone --recursive ${REPO} . && \
git checkout ${COMMIT}
RUN go mod download
RUN --mount=type=cache,target=/root/.cache \
--mount=type=cache,target=/tmp/go-build \
--mount=type=cache,target=/go/pkg/mod \
make BUILD_TAGS=nosqlite,noboltdb,nosilkworm all
# FROM docker.io/library/golang:1.24.1-alpine3.20 AS tools-builder
# ARG REPO
# ARG COMMIT
# RUN apk --no-cache add build-base linux-headers git bash ca-certificates libstdc++
# WORKDIR /app
# RUN git clone --recursive ${REPO} . && \
# git checkout ${COMMIT}
# RUN mkdir -p /app/build/bin
# RUN --mount=type=cache,target=/root/.cache \
# --mount=type=cache,target=/tmp/go-build \
# --mount=type=cache,target=/go/pkg/mod \
# make db-tools
FROM docker.io/library/alpine:3.19
RUN apk add --no-cache ca-certificates libstdc++ tzdata
RUN apk add --no-cache curl jq bind-tools
ARG UID=1000
ARG GID=1000
RUN adduser -D -u $UID -g $GID erigon
USER erigon
RUN mkdir -p ~/.local/share/erigon
# Copy MDBX tools
# COPY --from=tools-builder /app/build/bin/mdbx_* /usr/local/bin/
# Copy Erigon binaries
COPY --from=builder /app/build/bin/devnet /usr/local/bin/devnet
COPY --from=builder /app/build/bin/downloader /usr/local/bin/downloader
COPY --from=builder /app/build/bin/erigon /usr/local/bin/erigon
COPY --from=builder /app/build/bin/evm /usr/local/bin/evm
COPY --from=builder /app/build/bin/hack /usr/local/bin/hack
COPY --from=builder /app/build/bin/integration /usr/local/bin/integration
COPY --from=builder /app/build/bin/observer /usr/local/bin/observer
COPY --from=builder /app/build/bin/pics /usr/local/bin/pics
COPY --from=builder /app/build/bin/rpcdaemon /usr/local/bin/rpcdaemon
COPY --from=builder /app/build/bin/rpctest /usr/local/bin/rpctest
COPY --from=builder /app/build/bin/sentinel /usr/local/bin/sentinel
COPY --from=builder /app/build/bin/sentry /usr/local/bin/sentry
COPY --from=builder /app/build/bin/state /usr/local/bin/state
COPY --from=builder /app/build/bin/txpool /usr/local/bin/txpool
COPY --from=builder /app/build/bin/verkle /usr/local/bin/verkle
COPY --from=builder /app/build/bin/caplin /usr/local/bin/caplin
EXPOSE 8545 \
8551 \
8546 \
30303 \
30303/udp \
42069 \
42069/udp \
8080 \
9090 \
6060
ARG BUILD_DATE
ARG VCS_REF
ARG VERSION
LABEL org.label-schema.build-date=$BUILD_DATE \
org.label-schema.description="Erigon Ethereum Client" \
org.label-schema.name="Erigon" \
org.label-schema.schema-version="1.0" \
org.label-schema.url="https://torquem.ch" \
org.label-schema.vcs-ref=$VCS_REF \
org.label-schema.vcs-url=$REPO \
org.label-schema.vendor="Torquem" \
org.label-schema.version=$VERSION
ENTRYPOINT ["erigon"]

View File

@@ -29,8 +29,8 @@ x-logging-defaults: &logging-defaults
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' # --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services: services:
ethereum-classic-besu-client: ethereum-classic-besu:
image: ${ETHEREUM_BESU_IMAGE:-hyperledger/besu}:${ETHEREUM_CLASSIC_BESU_VERSION:-25.5.0} image: ${ETHEREUM_BESU_IMAGE:-hyperledger/besu}:${ETHEREUM_CLASSIC_BESU_VERSION:-25.11.0}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -86,35 +86,24 @@ services:
- prometheus-scrape.enabled=true - prometheus-scrape.enabled=true
- prometheus-scrape.port=9545 - prometheus-scrape.port=9545
- prometheus-scrape.path=/metrics - prometheus-scrape.path=/metrics
ethereum-classic-besu:
image: nginx
expose:
- '80'
environment:
PROXY_HOST: ethereum-classic-besu-client
RPC_PATH: ''
RPC_PORT: 8545
WS_PATH: ''
WS_PORT: 8546
restart: unless-stopped
depends_on:
- ethereum-classic-besu-client
networks:
- chains
volumes:
- ./nginx-proxy:/etc/nginx/templates
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
- traefik.enable=true - traefik.enable=true
- traefik.http.middlewares.ethereum-classic-besu-pruned-bonsai-stripprefix.stripprefix.prefixes=/ethereum-classic-besu - traefik.http.middlewares.ethereum-classic-besu-pruned-bonsai-stripprefix.stripprefix.prefixes=/ethereum-classic-besu
- traefik.http.services.ethereum-classic-besu-pruned-bonsai.loadbalancer.server.port=80 - traefik.http.services.ethereum-classic-besu-pruned-bonsai.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.ethereum-classic-besu-pruned-bonsai.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.ethereum-classic-besu-pruned-bonsai.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.ethereum-classic-besu-pruned-bonsai.tls.certresolver=myresolver} - ${NO_SSL:-traefik.http.routers.ethereum-classic-besu-pruned-bonsai.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.ethereum-classic-besu-pruned-bonsai.rule=Host(`$DOMAIN`) && (Path(`/ethereum-classic-besu`) || Path(`/ethereum-classic-besu/`))} - ${NO_SSL:-traefik.http.routers.ethereum-classic-besu-pruned-bonsai.rule=Host(`$DOMAIN`) && (Path(`/ethereum-classic-besu`) || Path(`/ethereum-classic-besu/`))}
- ${NO_SSL:+traefik.http.routers.ethereum-classic-besu-pruned-bonsai.rule=Path(`/ethereum-classic-besu`) || Path(`/ethereum-classic-besu/`)} - ${NO_SSL:+traefik.http.routers.ethereum-classic-besu-pruned-bonsai.rule=Path(`/ethereum-classic-besu`) || Path(`/ethereum-classic-besu/`)}
- traefik.http.routers.ethereum-classic-besu-pruned-bonsai.middlewares=ethereum-classic-besu-pruned-bonsai-stripprefix, ipallowlist - traefik.http.routers.ethereum-classic-besu-pruned-bonsai.middlewares=ethereum-classic-besu-pruned-bonsai-stripprefix, ipallowlist
- traefik.http.routers.ethereum-classic-besu-pruned-bonsai.priority=50 # gets any request that is not GET with UPGRADE header
- traefik.http.routers.ethereum-classic-besu-pruned-bonsai-ws.priority=100 # answers GET requests first
- traefik.http.services.ethereum-classic-besu-pruned-bonsai-ws.loadbalancer.server.port=8546
- traefik.http.routers.ethereum-classic-besu-pruned-bonsai-ws.service=ethereum-classic-besu-pruned-bonsai-ws
- traefik.http.routers.ethereum-classic-besu-pruned-bonsai.service=ethereum-classic-besu-pruned-bonsai
- ${NO_SSL:-traefik.http.routers.ethereum-classic-besu-pruned-bonsai-ws.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.ethereum-classic-besu-pruned-bonsai-ws.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.ethereum-classic-besu-pruned-bonsai-ws.rule=Host(`$DOMAIN`) && (Path(`/ethereum-classic-besu`) || Path(`/ethereum-classic-besu/`)) && Headers(`Upgrade`, `websocket`)}
- ${NO_SSL:+traefik.http.routers.ethereum-classic-besu-pruned-bonsai-ws.rule=(Path(`/ethereum-classic-besu`) || Path(`/ethereum-classic-besu/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.ethereum-classic-besu-pruned-bonsai-ws.middlewares=ethereum-classic-besu-pruned-bonsai-stripprefix, ipallowlist
volumes: volumes:
ethereum-classic-besu-pruned-bonsai: ethereum-classic-besu-pruned-bonsai:

View File

@@ -0,0 +1,190 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# Usage:
#
# mkdir rpc && cd rpc
#
# git init
# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git
# git fetch origin vibe
# git checkout origin/vibe
#
# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret
#
# env
# ...
# IP=$(curl ipinfo.io/ip)
# DOMAIN=${IP}.traefik.me
# COMPOSE_FILE=base.yml:rpc.yml:ethereum/besu/ethereum-mainnet-besu-pruned-bonsai--nimbus.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/ethereum-mainnet-besu \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
ethereum-mainnet-besu:
image: ${ETHEREUM_BESU_IMAGE:-hyperledger/besu}:${ETHEREUM_MAINNET_BESU_VERSION:-25.11.0}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
net.core.somaxconn: 32768 # Higher connection queue
# Memory/Connection Management
# net.core.netdev_max_backlog: 50000 # Increase network buffer
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
user: root
ports:
- 13205:13205
- 13205:13205/udp
expose:
- 8545
- 8546
- 9545
command:
- --Xbonsai-full-flat-db-enabled=true
- --data-path=/opt/besu/database
- --data-storage-format=BONSAI
- --engine-host-allowlist=*
- --engine-jwt-secret=/jwtsecret
- --engine-rpc-enabled=true
- --engine-rpc-port=8551
- --fast-sync-min-peers=1
- --host-allowlist=*
- --metrics-enabled=true
- --metrics-host=0.0.0.0
- --metrics-port=9545
- --network=mainnet
- --p2p-host=${IP}
- --p2p-port=13205
- --rpc-http-api=ETH,NET,WEB3,DEBUG,ADMIN,TXPOOL
- --rpc-http-enabled=true
- --rpc-http-host=0.0.0.0
- --rpc-http-max-active-connections=20000
- --rpc-http-port=8545
- --rpc-ws-api=ETH,NET,WEB3,DEBUG,ADMIN,TXPOOL
- --rpc-ws-enabled=true
- --rpc-ws-host=0.0.0.0
- --rpc-ws-port=8546
- --sync-mode=SNAP
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${ETHEREUM_MAINNET_BESU_PRUNED_BONSAI_DATA:-ethereum-mainnet-besu-pruned-bonsai}:/opt/besu/database
- .jwtsecret:/jwtsecret:ro
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=9545
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.ethereum-mainnet-besu-pruned-bonsai-stripprefix.stripprefix.prefixes=/ethereum-mainnet-besu
- traefik.http.services.ethereum-mainnet-besu-pruned-bonsai.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai.rule=Host(`$DOMAIN`) && (Path(`/ethereum-mainnet-besu`) || Path(`/ethereum-mainnet-besu/`))}
- ${NO_SSL:+traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai.rule=Path(`/ethereum-mainnet-besu`) || Path(`/ethereum-mainnet-besu/`)}
- traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai.middlewares=ethereum-mainnet-besu-pruned-bonsai-stripprefix, ipallowlist
- traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai.priority=50 # gets any request that is not GET with UPGRADE header
- traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai-ws.priority=100 # answers GET requests first
- traefik.http.services.ethereum-mainnet-besu-pruned-bonsai-ws.loadbalancer.server.port=8546
- traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai-ws.service=ethereum-mainnet-besu-pruned-bonsai-ws
- traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai.service=ethereum-mainnet-besu-pruned-bonsai
- ${NO_SSL:-traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai-ws.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai-ws.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai-ws.rule=Host(`$DOMAIN`) && (Path(`/ethereum-mainnet-besu`) || Path(`/ethereum-mainnet-besu/`)) && Headers(`Upgrade`, `websocket`)}
- ${NO_SSL:+traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai-ws.rule=(Path(`/ethereum-mainnet-besu`) || Path(`/ethereum-mainnet-besu/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai-ws.middlewares=ethereum-mainnet-besu-pruned-bonsai-stripprefix, ipallowlist
ethereum-mainnet-besu-node:
image: ${ETHEREUM_NIMBUS_IMAGE:-statusim/nimbus-eth2}:${ETHEREUM_MAINNET_NIMBUS_VERSION:-multiarch-v25.11.1}
user: root
ports:
- 18205:18205
- 18205:18205/udp
expose:
- 3500
entrypoint: /bin/sh -c '/home/user/nimbus-eth2/build/nimbus_beacon_node trustedNodeSync --network=mainnet --trusted-node-url=https://mainnet.beaconstate.info --backfill=false; exec /home/user/nimbus-eth2/build/nimbus_beacon_node "$@"' --
command:
- --history=prune
- --jwt-secret=/jwtsecret
- --metrics-address=0.0.0.0
- --metrics-port=8008
- --nat=extip:${IP}
- --network=mainnet
- --rest
- --rest-address=0.0.0.0
- --rest-port=3500
- --tcp-port=18205
- --udp-port=18205
- --web3-url=http://ethereum-mainnet-besu:8551
restart: unless-stopped
depends_on:
- ethereum-mainnet-besu
networks:
- chains
volumes:
- ${ETHEREUM_MAINNET_BESU_PRUNED_BONSAI__NIMBUS_DATA:-ethereum-mainnet-besu-pruned-bonsai_nimbus}:/root/.cache/nimbus/BeaconNode
- .jwtsecret:/jwtsecret:ro
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=8008
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.ethereum-mainnet-besu-pruned-bonsai-node-stripprefix.stripprefix.prefixes=/ethereum-mainnet-besu
- traefik.http.services.ethereum-mainnet-besu-pruned-bonsai-node.loadbalancer.server.port=3500
- ${NO_SSL:-traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai-node.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai-node.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai-node.rule=Host(`$DOMAIN`) && PathPrefix(`/ethereum-mainnet-besu/eth`)}
- ${NO_SSL:+traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai-node.rule=PathPrefix(`/ethereum-mainnet-besu/eth`)}
- traefik.http.routers.ethereum-mainnet-besu-pruned-bonsai-node.middlewares=ethereum-mainnet-besu-pruned-bonsai-node-stripprefix, ipallowlist
volumes:
ethereum-mainnet-besu-pruned-bonsai:
ethereum-mainnet-besu-pruned-bonsai_nimbus:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: ethereum
method-groups:
enabled:
- debug
- filter
methods:
disabled:
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
- id: $${ID}-beacon-chain
chain: eth-beacon-chain
labels:
provider: $${PROVIDER}-beacon-chain
connection:
generic:
rpc:
url: $${RPC_URL}
...

Some files were not shown because too many files have changed in this diff Show More