Compare commits
3645 Commits
erigon-pol
...
5461ba5d0e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5461ba5d0e | ||
|
|
47044e36e5 | ||
|
|
61c0ac3a78 | ||
|
|
6abfe26712 | ||
|
|
ce10d304c0 | ||
|
|
0e699e3bd4 | ||
|
|
70928ab425 | ||
|
|
4f6aed41d7 | ||
|
|
40d66741c2 | ||
|
|
ad54a39126 | ||
|
|
6569ab8c60 | ||
|
|
ca66310c2e | ||
|
|
a7b03c6a39 | ||
|
|
2b63352ccb | ||
|
|
dabc284553 | ||
|
|
8d67597789 | ||
|
|
cc4671bfc7 | ||
|
|
2f24e061d5 | ||
|
|
2a553fefaf | ||
|
|
ebb0be5de0 | ||
|
|
ac354edec5 | ||
|
|
94de26a009 | ||
|
|
e3b8405a1f | ||
|
|
6aa46ef0ec | ||
|
|
65609ea813 | ||
|
|
06f9d5f797 | ||
|
|
98228d9b21 | ||
|
|
e433d44a93 | ||
|
|
0acfbf88fa | ||
|
|
5d8a498e2e | ||
|
|
24a6217cb5 | ||
|
|
928989ec32 | ||
|
|
d5c0eafc4d | ||
|
|
7d326fe2fd | ||
|
|
2fd8f76502 | ||
|
|
adac66a6d5 | ||
|
|
22ac74508c | ||
|
|
917e8884dc | ||
|
|
9c0ad6e0af | ||
|
|
a9ab0fb87b | ||
|
|
9c5ef7a936 | ||
|
|
3402a29dc7 | ||
|
|
723b98b72b | ||
|
|
9ec7ffdbe9 | ||
|
|
97a62142d6 | ||
|
|
81e631e52b | ||
|
|
2334846ce6 | ||
|
|
5d46133b2d | ||
|
|
0b3cf5eb38 | ||
|
|
752be20f18 | ||
|
|
f8141ad062 | ||
|
|
d93cc9e180 | ||
|
|
00462e4e98 | ||
|
|
ac8eb850ec | ||
|
|
047dc313e8 | ||
|
|
81a7bc8c27 | ||
|
|
a9ca87086a | ||
|
|
d90d5695a9 | ||
|
|
0426ad632a | ||
|
|
94131eafa9 | ||
|
|
aad2f1481f | ||
|
|
ffaa3ea015 | ||
|
|
81fa49bbd0 | ||
|
|
1f0fe14900 | ||
|
|
351c3e970c | ||
|
|
5ae09fed1b | ||
|
|
5acf3dfeb6 | ||
|
|
6e10ccdb85 | ||
|
|
c5112ce640 | ||
|
|
1f7435956e | ||
|
|
f65bfb7c59 | ||
|
|
f1d93eca01 | ||
|
|
5c3dffe980 | ||
|
|
2af99cc1d8 | ||
|
|
ff3be25ae1 | ||
|
|
4a1e72152c | ||
|
|
566df06116 | ||
|
|
46b8cbb2ee | ||
|
|
8cecd86a90 | ||
|
|
e8109f7cfa | ||
|
|
c57e55080c | ||
|
|
e35a91a253 | ||
|
|
b6929f52fe | ||
|
|
bd894ff300 | ||
|
|
072900d5c3 | ||
|
|
fbdbeb4670 | ||
|
|
2fe5cdd242 | ||
|
|
fe095e1076 | ||
|
|
9c3c2849c0 | ||
|
|
572238029c | ||
|
|
baf906832e | ||
|
|
219aec45f3 | ||
|
|
abc00d0540 | ||
|
|
f371c7fc1c | ||
|
|
39eed6c8d0 | ||
|
|
1becf90135 | ||
|
|
d3025d9688 | ||
|
|
68f1a762ce | ||
|
|
f9ee270dca | ||
|
|
600b67f100 | ||
|
|
484142ab4e | ||
|
|
52d17f5fd3 | ||
|
|
f7fd21dbfb | ||
|
|
55b97c0cde | ||
|
|
369827fbf4 | ||
|
|
6dad2a1a14 | ||
|
|
dfb64093d0 | ||
|
|
738c501435 | ||
|
|
fbfb7e3a7a | ||
|
|
99ce6fe3ba | ||
|
|
4ba31a8605 | ||
|
|
ae47b37638 | ||
|
|
352331d780 | ||
|
|
b58820e838 | ||
|
|
b657e2a38b | ||
|
|
d75be6b2e3 | ||
|
|
b6cf97dbc6 | ||
|
|
9446c3c841 | ||
|
|
db89e1915d | ||
|
|
335b9e3803 | ||
|
|
720767408a | ||
|
|
a2999e128d | ||
|
|
45fddae546 | ||
|
|
027136d24a | ||
|
|
8d6ceb6794 | ||
|
|
78bb1f32a4 | ||
|
|
aab7dd3d38 | ||
|
|
e62db7c3ac | ||
|
|
d531b62abb | ||
|
|
edb2bdc699 | ||
|
|
3a5fe0e8a2 | ||
|
|
ab3beca238 | ||
|
|
22ec19fbaa | ||
|
|
59ed9bdd78 | ||
|
|
f73a6c6cc9 | ||
|
|
4427c7ae7c | ||
|
|
e7066fcd72 | ||
|
|
e573daddad | ||
|
|
4e7768f85f | ||
|
|
9c04d278b0 | ||
|
|
a1a28a06d4 | ||
|
|
9548fbb023 | ||
|
|
ac194cbe7a | ||
|
|
11ff167922 | ||
|
|
925276e1c8 | ||
|
|
208ac156d8 | ||
|
|
b39d371667 | ||
|
|
dda3abdbd3 | ||
|
|
1d025c0089 | ||
|
|
8a64c46feb | ||
|
|
3c5b22ba78 | ||
|
|
0ca2a12308 | ||
|
|
f2118d633d | ||
|
|
3d09889143 | ||
|
|
aa515ad157 | ||
|
|
563bc83234 | ||
|
|
0323b8f709 | ||
|
|
d4509f4d15 | ||
|
|
a09187e07b | ||
|
|
6e07163fee | ||
|
|
11a67d32c7 | ||
|
|
8549223fae | ||
|
|
ac327fc35f | ||
|
|
f54affaf2b | ||
|
|
5c14a9a307 | ||
|
|
b621df03e3 | ||
|
|
26f5f93ffa | ||
|
|
2b19378190 | ||
|
|
f84a5554e5 | ||
|
|
342c5a1063 | ||
|
|
8d47152669 | ||
|
|
676af5b65b | ||
|
|
d3ea98851f | ||
|
|
94dab10398 | ||
|
|
25a4650b9e | ||
|
|
b21dc9ddc5 | ||
|
|
3cabecc2cf | ||
|
|
cd9974cb77 | ||
|
|
a2019f40c5 | ||
|
|
4aa517c2a0 | ||
|
|
c55094d1db | ||
|
|
a40ba7f29f | ||
|
|
84f3752b63 | ||
|
|
5c07facbb8 | ||
|
|
ad80bc06dd | ||
|
|
e708cca8cf | ||
|
|
9f27dfd1eb | ||
|
|
29a1923f90 | ||
|
|
2ba1988ad9 | ||
|
|
b88fad9de5 | ||
|
|
bfcaf9d378 | ||
|
|
8ed605c6ec | ||
|
|
026dd3fe19 | ||
|
|
18acb97a9c | ||
|
|
9446a4e3b0 | ||
|
|
e2ba9b36ea | ||
|
|
c8df0a0ecb | ||
|
|
4e19cc4166 | ||
|
|
8f01bc65d1 | ||
|
|
972b40630f | ||
|
|
736fa43bab | ||
|
|
14fa2f463f | ||
|
|
a839e48c68 | ||
|
|
437efffa1d | ||
|
|
7cca5e6e8a | ||
|
|
1a730d708d | ||
|
|
d293255e64 | ||
|
|
62c944d197 | ||
|
|
b7679d6297 | ||
|
|
b4c6e9628c | ||
|
|
0f17a89913 | ||
|
|
c174a9b48a | ||
|
|
47b67b8457 | ||
|
|
1fc9974623 | ||
|
|
67713ba396 | ||
|
|
5d331e5e18 | ||
|
|
116719f98c | ||
|
|
3be1ddb0aa | ||
|
|
94e9659685 | ||
|
|
8fa22aeba7 | ||
|
|
9ed7b3cb60 | ||
|
|
e96e8c29dd | ||
|
|
6131b0e669 | ||
|
|
f2b5faecb0 | ||
|
|
f3a00a7fdc | ||
|
|
ee2aaff6ed | ||
|
|
7e49678556 | ||
|
|
aa27ecf449 | ||
|
|
20762bf38d | ||
|
|
1c78e0d0cd | ||
|
|
a06ef7134b | ||
|
|
55eaf6712d | ||
|
|
51ad84767e | ||
|
|
a2a9e0e6ad | ||
|
|
b53baac1e3 | ||
|
|
c7f2bbee11 | ||
|
|
2a28290bbd | ||
|
|
5a3bd61d69 | ||
|
|
a53f281edb | ||
|
|
f13afc1b7f | ||
|
|
0e365389e0 | ||
|
|
fe5cfb3c67 | ||
|
|
6ab4f6b69b | ||
|
|
a1beda8723 | ||
|
|
d57d2bf5e1 | ||
|
|
5dddb8155f | ||
|
|
5697e7530f | ||
|
|
0e140d672a | ||
|
|
e5280c89c9 | ||
|
|
ee6d61f35a | ||
|
|
46c41bbdb6 | ||
|
|
23f7047083 | ||
|
|
f0949f4e52 | ||
|
|
695ae7b69f | ||
|
|
516d9174c6 | ||
|
|
70fdc31b7a | ||
|
|
6a6365b1cd | ||
|
|
3f5366ee26 | ||
|
|
57f38ae975 | ||
|
|
3f042b168a | ||
|
|
0dd7fecc40 | ||
|
|
781ce60757 | ||
|
|
13067d50dc | ||
|
|
f83542b0e8 | ||
|
|
8f88b5030a | ||
|
|
a4f4de6999 | ||
|
|
c67a4aea6b | ||
|
|
8556bbcee7 | ||
|
|
07587e99d6 | ||
|
|
0f0ff380dc | ||
|
|
a9d7f428e9 | ||
|
|
7a651c6be7 | ||
|
|
17423f64d9 | ||
|
|
1b9835745b | ||
|
|
918b7f546a | ||
|
|
d260954486 | ||
|
|
1b44c6e07c | ||
|
|
0a522bcb07 | ||
|
|
8fdede234a | ||
|
|
411c1d12a5 | ||
|
|
8ec2673626 | ||
|
|
7dff68b46f | ||
|
|
9d3d5a1444 | ||
|
|
a90a2df025 | ||
|
|
b56f1d95fd | ||
|
|
cdea0ea21d | ||
|
|
9ecd5ffee8 | ||
|
|
484b096882 | ||
|
|
7485d62095 | ||
|
|
51b3696e37 | ||
|
|
e0b644cf9a | ||
|
|
d1ced15d1d | ||
|
|
1709e0eb12 | ||
|
|
112d8baae8 | ||
|
|
01b630ef6c | ||
|
|
abda0c9ff7 | ||
|
|
a4e58b10a3 | ||
|
|
cf23aea82e | ||
|
|
75d8f2cb94 | ||
|
|
9d2e5a9444 | ||
|
|
28b49aceba | ||
|
|
5588075961 | ||
|
|
a83630ec7e | ||
|
|
0c8e3a10ba | ||
|
|
b0709ec289 | ||
|
|
84474286e5 | ||
|
|
47b531f83f | ||
|
|
a332445329 | ||
|
|
68aa5c73f8 | ||
|
|
9448d5b50e | ||
|
|
d35f94db80 | ||
|
|
c70dc219c9 | ||
|
|
aa4ce588c4 | ||
|
|
cd0d26ff40 | ||
|
|
92af861c05 | ||
|
|
bfae1db6b8 | ||
|
|
6c66a4c2f4 | ||
|
|
f885f2f820 | ||
|
|
17ffaa8731 | ||
|
|
2d1ea37364 | ||
|
|
3b8b30a3b9 | ||
|
|
35dec193bb | ||
|
|
39e48fdfd0 | ||
|
|
d1c7bb53fd | ||
|
|
2ed184cb68 | ||
|
|
6abf4b2a00 | ||
|
|
c484bbe293 | ||
|
|
4f70eb18f5 | ||
|
|
b818df5d03 | ||
|
|
b7589c6d80 | ||
|
|
4a90d75098 | ||
|
|
33b6ada9e5 | ||
|
|
254ee96fa1 | ||
|
|
e0792ea61f | ||
|
|
474266a03f | ||
|
|
c800c8512e | ||
|
|
4da8d4444d | ||
|
|
8161d096d7 | ||
|
|
9c39f7ac1d | ||
|
|
04db729cb7 | ||
|
|
b6b09dfc0c | ||
|
|
2c2e3dfe36 | ||
|
|
25a66982fc | ||
|
|
0ebe442e3f | ||
|
|
5b31086356 | ||
|
|
a8de36eefd | ||
|
|
029ac0e01d | ||
|
|
abdddf4a50 | ||
|
|
51ba55d300 | ||
|
|
2d570187df | ||
|
|
fb643e9d33 | ||
|
|
253d885f8a | ||
|
|
6771a5144f | ||
|
|
da146cf056 | ||
|
|
f54f12fa90 | ||
|
|
6af3e85ab4 | ||
|
|
efe7856da0 | ||
|
|
dedaa56772 | ||
|
|
c345ff78db | ||
|
|
0f5daff12e | ||
|
|
8d8e8fcb14 | ||
|
|
c493ba0485 | ||
|
|
09b2b664e9 | ||
|
|
b1f1bf0193 | ||
|
|
6ca1cd32ac | ||
|
|
879542665b | ||
|
|
7f333ff5c6 | ||
|
|
20487eb941 | ||
|
|
0f5e128466 | ||
|
|
df54c73348 | ||
|
|
940de9d354 | ||
|
|
734ce300d5 | ||
|
|
45a5cedca2 | ||
|
|
629a75930c | ||
|
|
e0c02802ef | ||
|
|
37372f8ebb | ||
|
|
a38f2c68cd | ||
|
|
e843ac2fb7 | ||
|
|
5a8ec581b2 | ||
|
|
e54c417deb | ||
|
|
6c63b34a20 | ||
|
|
0f546890ef | ||
|
|
4369e3d96c | ||
|
|
81978d477d | ||
|
|
26ce9f952f | ||
|
|
83be6078c2 | ||
|
|
c40dcd4e11 | ||
|
|
a166b5ecfb | ||
|
|
a28d17bcf4 | ||
|
|
6b89e0318e | ||
|
|
9b619cb611 | ||
|
|
650924976f | ||
|
|
e467904304 | ||
|
|
7bbc5eecb9 | ||
|
|
8986887888 | ||
|
|
4b83e6c7ef | ||
|
|
608191b995 | ||
|
|
ec8c059640 | ||
|
|
5ee3d84647 | ||
|
|
35289ed90e | ||
|
|
b06ef4db7b | ||
|
|
cb3c7bc28e | ||
|
|
e18ef7a1ea | ||
|
|
9d7e701a89 | ||
|
|
37721b64d1 | ||
|
|
747a387ef8 | ||
|
|
31b175c61a | ||
|
|
577ce53232 | ||
|
|
a0791ccea6 | ||
|
|
220db93c1c | ||
|
|
f28baca470 | ||
|
|
48f0ea5c0a | ||
|
|
fcd7b58ff8 | ||
|
|
2531d8d36f | ||
|
|
429881f3ba | ||
|
|
c8b36cf375 | ||
|
|
ce21871e30 | ||
|
|
25995cbca0 | ||
|
|
aae606a794 | ||
|
|
9cdc73b298 | ||
|
|
a610057600 | ||
|
|
eb50b33aa3 | ||
|
|
6f830e77cd | ||
|
|
9b4988d58a | ||
|
|
8b75dd9bd7 | ||
|
|
9ef4a1f02d | ||
|
|
1d11e27cda | ||
|
|
3d13e30a5a | ||
|
|
338eaa3da6 | ||
|
|
061671bcc3 | ||
|
|
40d5ad9750 | ||
|
|
e046526ce9 | ||
|
|
a454a57ff9 | ||
|
|
d8659d1040 | ||
|
|
46ede89ece | ||
|
|
f826f6d2c3 | ||
|
|
2388b23daa | ||
|
|
d07c317d02 | ||
|
|
ac4b83fd44 | ||
|
|
cef8eff6f5 | ||
|
|
8ac43fdbac | ||
|
|
fcdee01608 | ||
|
|
c37c53f4f9 | ||
|
|
7f97cfe09a | ||
|
|
55ab8cbd51 | ||
|
|
62928caa7a | ||
|
|
367a1890e8 | ||
|
|
542aa60b23 | ||
|
|
f6b2aa2206 | ||
|
|
39eed22e98 | ||
|
|
6eb5518a2d | ||
|
|
6858e94734 | ||
|
|
82e094faf8 | ||
|
|
6a10227e87 | ||
|
|
502f01a301 | ||
|
|
7ab01cd5dd | ||
|
|
f2b2643c5f | ||
|
|
7f99a93745 | ||
|
|
22273b1951 | ||
|
|
ac39985f03 | ||
|
|
91109e7a94 | ||
|
|
7b129c628b | ||
|
|
368db703c4 | ||
|
|
c02c7468a8 | ||
|
|
99bc61a018 | ||
|
|
7aa2439a42 | ||
|
|
24e1a430eb | ||
|
|
382db5bee1 | ||
|
|
6d46471536 | ||
|
|
779a2e76f9 | ||
|
|
c5710c33b1 | ||
|
|
97cf8fd6fa | ||
|
|
57cfa421b4 | ||
|
|
b70e0f4afb | ||
|
|
dea6cf315e | ||
|
|
c08a43eb02 | ||
|
|
3b43c15074 | ||
|
|
596dba9ad9 | ||
|
|
73f70555d2 | ||
|
|
0c06f20666 | ||
|
|
431b159146 | ||
|
|
d78f41e521 | ||
|
|
23bf18eb83 | ||
|
|
b22dfd6d10 | ||
|
|
46c320ef52 | ||
|
|
2daa7560de | ||
|
|
90e8af4644 | ||
|
|
f6161e575d | ||
|
|
1c14c8a861 | ||
|
|
5a557f574f | ||
|
|
36cc615903 | ||
|
|
6055d17a4d | ||
|
|
f18cd800dc | ||
|
|
e136521e26 | ||
|
|
04fdcaccfe | ||
|
|
0ab7a45d64 | ||
|
|
07871d8efc | ||
|
|
f2b91ac1c0 | ||
|
|
e2218f499c | ||
|
|
a048e4c292 | ||
|
|
8a74e4e149 | ||
|
|
19b079da16 | ||
|
|
355f538d8b | ||
|
|
1856f17848 | ||
|
|
5688b0b8c4 | ||
|
|
1ceeae7bea | ||
|
|
ce41dc7fb3 | ||
|
|
cc8c1a3c81 | ||
|
|
a70284eec1 | ||
|
|
edb6e7518b | ||
|
|
b71851d43f | ||
|
|
39323d19eb | ||
|
|
1feac516b4 | ||
|
|
3d10d7b32b | ||
|
|
2706436d16 | ||
|
|
03735aeed6 | ||
|
|
5aeb68cfb6 | ||
|
|
78b0f0669d | ||
|
|
0cfacad7e6 | ||
|
|
a7be4c90d6 | ||
|
|
15a2cd6ac0 | ||
|
|
1575dadaca | ||
|
|
af80ad8d74 | ||
|
|
e29ea29547 | ||
|
|
25b2310699 | ||
|
|
d246befaea | ||
|
|
b82fb47f00 | ||
|
|
6d0a5d9d6d | ||
|
|
b0fc62b701 | ||
|
|
87e9ba6b9e | ||
|
|
5cc07f93a7 | ||
|
|
edf8d469fb | ||
|
|
9e634508c7 | ||
|
|
1495a49144 | ||
|
|
dd662dfdd0 | ||
|
|
c8ae2e4f91 | ||
|
|
61d95baef9 | ||
|
|
958432e343 | ||
|
|
0f5d7e9651 | ||
|
|
2a987f64a2 | ||
|
|
2d8c58f13e | ||
|
|
5978ad47da | ||
|
|
af15054bf5 | ||
|
|
58a3233ffd | ||
|
|
ff729a2f44 | ||
|
|
a600aabfab | ||
|
|
16e30d2b48 | ||
|
|
84bf18d6e4 | ||
|
|
e57fdad3fe | ||
|
|
860921b712 | ||
|
|
6c7ceaab90 | ||
|
|
5135a30790 | ||
|
|
5492883a2c | ||
|
|
4f7fe9a256 | ||
|
|
bbd93c0ffb | ||
|
|
295135dc8d | ||
|
|
6173215cdc | ||
|
|
0edd43dc56 | ||
|
|
aa79b3128d | ||
|
|
a8354bebbe | ||
|
|
a1eedd6d01 | ||
|
|
72876114c3 | ||
|
|
7ee7456752 | ||
|
|
27576f3cb4 | ||
|
|
b9fb679727 | ||
|
|
e97864a989 | ||
|
|
f51ad3db00 | ||
|
|
f073412959 | ||
|
|
bc12f3d42c | ||
|
|
1dc50366cb | ||
|
|
86ae0c4545 | ||
|
|
29a55e7e6f | ||
|
|
7661d8c7db | ||
|
|
a6bd111ce6 | ||
|
|
16090503d4 | ||
|
|
2a13b59aae | ||
|
|
85a5862f90 | ||
|
|
8b6133287e | ||
|
|
c648d1304a | ||
|
|
62fde28752 | ||
|
|
c5671b50c3 | ||
|
|
5a04784b1c | ||
|
|
39e3b4a9d6 | ||
|
|
fb964d86a1 | ||
|
|
2eda458a23 | ||
|
|
747e8077a0 | ||
|
|
4baf955ce2 | ||
|
|
9c32719987 | ||
|
|
59e1608b67 | ||
|
|
b13e48e897 | ||
|
|
5a38f4960b | ||
|
|
646def7d2b | ||
|
|
84e66e2697 | ||
|
|
b21f82fc17 | ||
|
|
017f5e9bec | ||
|
|
228fb63f02 | ||
|
|
1818ead761 | ||
|
|
6a9ab07495 | ||
|
|
cd6ad78d11 | ||
|
|
b2f6d8ef45 | ||
|
|
22a7b3ea1b | ||
|
|
88140231ce | ||
|
|
ca84033a14 | ||
|
|
9afe08dff2 | ||
|
|
6e477bd5f0 | ||
|
|
5a1c0bf495 | ||
|
|
70d727d7ad | ||
|
|
6f0e5ac218 | ||
|
|
aa2b598b32 | ||
|
|
3587d82931 | ||
|
|
0d902eb69b | ||
|
|
af0c8cd7e2 | ||
|
|
98abb33fc8 | ||
|
|
f2855d3a2c | ||
|
|
44461bffcd | ||
|
|
d5598f5446 | ||
|
|
07bbfb22cc | ||
|
|
ddf85ee8f9 | ||
|
|
22ce16f065 | ||
|
|
bfccfdbadc | ||
|
|
8c654c70d1 | ||
|
|
f43859c298 | ||
|
|
0396014baf | ||
|
|
cd0adc475b | ||
|
|
eb5197aca3 | ||
|
|
b69db72c80 | ||
|
|
34c1c62a7d | ||
|
|
4a4dfbda1d | ||
|
|
648db38954 | ||
|
|
1b489f5a94 | ||
|
|
c9188fa6c7 | ||
|
|
f92b61c228 | ||
|
|
3d98079a2a | ||
|
|
c83ed6d7d3 | ||
|
|
0b139fed3d | ||
|
|
1ba136a4f8 | ||
|
|
8e2243616b | ||
|
|
3fbde2d791 | ||
|
|
781e6535b6 | ||
|
|
85ee5afd87 | ||
|
|
be54827b7d | ||
|
|
30ae1caff4 | ||
|
|
4eedfa81e0 | ||
|
|
12c72587e6 | ||
|
|
88c9eb7a2c | ||
|
|
b3893280b8 | ||
|
|
4718d739a8 | ||
|
|
211bd2684b | ||
|
|
b56880f5a2 | ||
|
|
d6350bfde1 | ||
|
|
ea255de1cd | ||
|
|
f2b642c20d | ||
|
|
25502ae1a1 | ||
|
|
ae1cbd0493 | ||
|
|
83ce10ec3d | ||
|
|
232748632a | ||
|
|
f171abb333 | ||
|
|
4722460091 | ||
|
|
f15132a8d1 | ||
|
|
4d199f81bb | ||
|
|
104f2d8e1c | ||
|
|
b930803d21 | ||
|
|
362f6bd577 | ||
|
|
fca23f8205 | ||
|
|
1241776349 | ||
|
|
a6d574c9a9 | ||
|
|
d28181236c | ||
|
|
94bc176586 | ||
|
|
002b2fa99c | ||
|
|
1f13edad78 | ||
|
|
fd2abeb162 | ||
|
|
079aefb865 | ||
|
|
639d8b60c8 | ||
|
|
8c104531b4 | ||
|
|
8ff330d38b | ||
|
|
06faa1d9f4 | ||
|
|
740dbd59de | ||
|
|
e8b5cce384 | ||
|
|
4ffde02488 | ||
|
|
e61b97ff4e | ||
|
|
9d22af0d73 | ||
|
|
7c66e91f2c | ||
|
|
f23b099659 | ||
|
|
15f9691b37 | ||
|
|
3b90a9bbde | ||
|
|
8b1cb957d1 | ||
|
|
fe505dd239 | ||
|
|
7086278d67 | ||
|
|
ba1f06506d | ||
|
|
c7d8a6e534 | ||
|
|
e618db0aea | ||
|
|
9650e2f978 | ||
|
|
41027d8aa3 | ||
|
|
071eff21ee | ||
|
|
e109dc0e35 | ||
|
|
ef725c1768 | ||
|
|
2684dec118 | ||
|
|
191fd11d93 | ||
|
|
0a6c5e9fb5 | ||
|
|
7c28a5d536 | ||
|
|
7a82a4dbf4 | ||
|
|
5af24a34af | ||
|
|
9ba491ab8b | ||
|
|
e7657a133c | ||
|
|
088f42cb11 | ||
|
|
125452c7d4 | ||
|
|
153abf5805 | ||
|
|
5c63c62859 | ||
|
|
cbfe770a1a | ||
|
|
12579f612f | ||
|
|
1d16a45496 | ||
|
|
fa05b914a6 | ||
|
|
ab10340dca | ||
|
|
d18aa9ca72 | ||
|
|
dca2a0ef60 | ||
|
|
d69a8cb0de | ||
|
|
a44ea07293 | ||
|
|
d935624364 | ||
|
|
5a080c522c | ||
|
|
1eb8a58fb2 | ||
|
|
4331a5ac4a | ||
|
|
bfd8392e41 | ||
|
|
ca59cb50eb | ||
|
|
c3d5534520 | ||
|
|
ba2103d7c0 | ||
|
|
9f3710ddaa | ||
|
|
4b17d54280 | ||
|
|
b12409b2f6 | ||
|
|
90e26f3523 | ||
|
|
33d0bfe2c3 | ||
|
|
1d85c22974 | ||
|
|
ed2cf87989 | ||
|
|
cca3d8e7e1 | ||
|
|
037a01b7c2 | ||
|
|
08b27a4a3b | ||
|
|
e1985a117f | ||
|
|
a1fc35b87f | ||
|
|
938bf33053 | ||
|
|
9c40ab7451 | ||
|
|
339af89892 | ||
|
|
b6f5c17a9f | ||
|
|
5524999d55 | ||
|
|
053b1aa97b | ||
|
|
4ed74e9c75 | ||
|
|
f7b7934dd1 | ||
|
|
8a74589cfb | ||
|
|
04c5e41ae9 | ||
|
|
762011a809 | ||
|
|
93baaace61 | ||
|
|
c7259dad75 | ||
|
|
1ded879d2d | ||
|
|
a379057318 | ||
|
|
e6529fcb7c | ||
|
|
d960ca7acd | ||
|
|
e44909c46d | ||
|
|
12fd383dd8 | ||
|
|
2cbe0c3986 | ||
|
|
88deee2125 | ||
|
|
fa1876de72 | ||
|
|
056e59248d | ||
|
|
0dd9af2905 | ||
|
|
eae44c31e7 | ||
|
|
ef5ce7fa1d | ||
|
|
8f598d464c | ||
|
|
2da52e423b | ||
|
|
37c16701f2 | ||
|
|
54d3e75710 | ||
|
|
c4b032577e | ||
|
|
a1f3fd7109 | ||
|
|
221a0629e0 | ||
|
|
e4d3bfb019 | ||
|
|
04145934f2 | ||
|
|
0fe081bbce | ||
|
|
d38e7b675e | ||
|
|
821d75d3ea | ||
|
|
87bc69108c | ||
|
|
4f12b8d0ed | ||
|
|
efa0a7c56d | ||
|
|
98eb25f7b5 | ||
|
|
464ba456b8 | ||
|
|
a3bacf5347 | ||
|
|
3f06f3f1b1 | ||
|
|
6a0823a64d | ||
|
|
4e8f6dbe58 | ||
|
|
81d3d0bf41 | ||
|
|
f7acaa9c85 | ||
|
|
3303bd1d6d | ||
|
|
8ff2f5a2ba | ||
|
|
066af74c86 | ||
|
|
15baa3183a | ||
|
|
0605685825 | ||
|
|
2116f29f2b | ||
|
|
78148783c8 | ||
|
|
45ea204eea | ||
|
|
3fbd7432e6 | ||
|
|
40ecc82a94 | ||
|
|
3167e1e80d | ||
|
|
e6c7869c83 | ||
|
|
8ade443259 | ||
|
|
064199f312 | ||
|
|
809d2857a6 | ||
|
|
9193cf91ab | ||
|
|
d4ddf5bd52 | ||
|
|
9f1450597f | ||
|
|
3d12f51a75 | ||
|
|
bc6f08e6d9 | ||
|
|
58e992ba1d | ||
|
|
35840e9cce | ||
|
|
1813c7f354 | ||
|
|
cc47c8a543 | ||
|
|
b65b02ad75 | ||
|
|
21fabe3e68 | ||
|
|
55659ed6f0 | ||
|
|
4206a48d04 | ||
|
|
92caabd3a9 | ||
|
|
9d016c8c9e | ||
|
|
355f1d32ed | ||
|
|
9bd49dd1d2 | ||
|
|
73e144a92a | ||
|
|
08ae2bc826 | ||
|
|
fdca7f7762 | ||
|
|
1b7a44e4d5 | ||
|
|
333a21b528 | ||
|
|
e5ef332e0e | ||
|
|
d6c1eb0211 | ||
|
|
2c4a031c2b | ||
|
|
2e2842bd83 | ||
|
|
77963a6021 | ||
|
|
40cd48af0d | ||
|
|
1b93862b79 | ||
|
|
c898f72e71 | ||
|
|
4206e6ee66 | ||
|
|
e1b256de74 | ||
|
|
3177bc5a0b | ||
|
|
55f544fc92 | ||
|
|
ce7f425339 | ||
|
|
3d3b59e13a | ||
|
|
7102146c1d | ||
|
|
9334c6c9e9 | ||
|
|
47eb68d99a | ||
|
|
6e6390f8be | ||
|
|
62d44aa62c | ||
|
|
c2230b8f33 | ||
|
|
8ea3f5b7d5 | ||
|
|
22180bcf2d | ||
|
|
81b368c9ed | ||
|
|
03fa670d1a | ||
|
|
18c410d6ac | ||
|
|
10367e06fb | ||
|
|
0359d06d65 | ||
|
|
c0379e2994 | ||
|
|
19cc4caa89 | ||
|
|
d6fa540b64 | ||
|
|
31c48eaf3c | ||
|
|
697265c2b0 | ||
|
|
a248b01e9e | ||
|
|
e9b473bddc | ||
|
|
7cf48f7061 | ||
|
|
eef099ef47 | ||
|
|
7029b7392d | ||
|
|
0a69a6bb44 | ||
|
|
77e71635c6 | ||
|
|
6e321ca221 | ||
|
|
e439ade5ab | ||
|
|
1948c22eba | ||
|
|
95d64d3d9c | ||
|
|
b3b73b2cad | ||
|
|
73c76e28b3 | ||
|
|
45da1d7bda | ||
|
|
3aeefd6fa5 | ||
|
|
86641804a7 | ||
|
|
7bfcc128c4 | ||
|
|
e26ff24d4a | ||
|
|
bf1c587253 | ||
|
|
c36b14229e | ||
|
|
2a3f74bd0d | ||
|
|
f5de048804 | ||
|
|
058517a20d | ||
|
|
80d2faa98f | ||
|
|
96d9081230 | ||
|
|
f99b715f77 | ||
|
|
61a583441a | ||
|
|
4a71b12a2c | ||
|
|
e1649ab259 | ||
|
|
f9245415fd | ||
|
|
9719ceb420 | ||
|
|
dcc2cb9b65 | ||
|
|
8f1ecf48ae | ||
|
|
3decde68d7 | ||
|
|
a90397b2e9 | ||
|
|
8fb39d33fb | ||
|
|
ab919e76ef | ||
|
|
b7c7080167 | ||
|
|
1f974f0b85 | ||
|
|
b2e3fe185f | ||
|
|
165aeb6866 | ||
|
|
d1b3f02248 | ||
|
|
91bb9d55da | ||
|
|
7358814ebd | ||
|
|
3a1406bc55 | ||
|
|
2aa0a2d5a8 | ||
|
|
8bd6cde31f | ||
|
|
869b14fc38 | ||
|
|
d2ad1f1428 | ||
|
|
40f6648de1 | ||
|
|
4db3ef3562 | ||
|
|
144d3c3650 | ||
|
|
6b9d512003 | ||
|
|
a2db3cefdb | ||
|
|
73a2a804da | ||
|
|
02caf42380 | ||
|
|
876de679ae | ||
|
|
5790c21c32 | ||
|
|
6c54fdb6bd | ||
|
|
ef812230f3 | ||
|
|
7d55b39c3a | ||
|
|
f9cdd75cf8 | ||
|
|
61764ef61e | ||
|
|
2659865064 | ||
|
|
52a49b45c4 | ||
|
|
1351a225b6 | ||
|
|
dd4725930e | ||
|
|
24191ba4f0 | ||
|
|
6080bb144b | ||
|
|
02cf2b32b1 | ||
|
|
e98fc0072a | ||
|
|
1c5b0c2f0f | ||
|
|
f5c4c0507a | ||
|
|
3568b58816 | ||
|
|
a907c000d3 | ||
|
|
dc758a8c7d | ||
|
|
537d7406a3 | ||
|
|
81c04e3f23 | ||
|
|
21c50072c3 | ||
|
|
49a2d601c5 | ||
|
|
a524b0b7cd | ||
|
|
56e165ebfb | ||
|
|
f1bcd0aef2 | ||
|
|
a2679d1d0b | ||
|
|
aa7ebb8454 | ||
|
|
7bc2c6857e | ||
|
|
23fa663cdd | ||
|
|
7d6ceb74d8 | ||
|
|
1829f2394e | ||
|
|
fa2c706daa | ||
|
|
cd75b35ce7 | ||
|
|
38ba497057 | ||
|
|
7e2ea8baaf | ||
|
|
de873b0a60 | ||
|
|
310b48b1fb | ||
|
|
2f046b49dd | ||
|
|
b653ad153c | ||
|
|
6db2d5df50 | ||
|
|
fda35b3792 | ||
|
|
8d0cbfc483 | ||
|
|
96f33135b1 | ||
|
|
8ba07ac2cf | ||
|
|
a919bcdbbc | ||
|
|
ca7dceae80 | ||
|
|
85e2ef4c3f | ||
|
|
a74d493743 | ||
|
|
42c9ebc55f | ||
|
|
64619a5037 | ||
|
|
3354f15bef | ||
|
|
cfd1031962 | ||
|
|
e259c428bd | ||
|
|
ad3f353c8b | ||
|
|
2a86ab6270 | ||
|
|
76618c9c31 | ||
|
|
d71084ce32 | ||
|
|
8240f4ca74 | ||
|
|
e94d9f80e6 | ||
|
|
ddec133f2a | ||
|
|
d842d0101d | ||
|
|
3517530076 | ||
|
|
43500c2405 | ||
|
|
bb687505de | ||
|
|
23499ad176 | ||
|
|
dff30fed8b | ||
|
|
6df1ca59d5 | ||
|
|
4b14f4b589 | ||
|
|
a3739d0d6b | ||
|
|
65ab9eec06 | ||
|
|
ccbb06dc05 | ||
|
|
790d6807f5 | ||
|
|
0b673534c5 | ||
|
|
358e014ad7 | ||
|
|
a6279455cd | ||
|
|
e422b415d0 | ||
|
|
5dc086ddeb | ||
|
|
0533c3c905 | ||
|
|
09d8656e33 | ||
|
|
912cc9388b | ||
|
|
6b0036ef5d | ||
|
|
592e1ba957 | ||
|
|
5a9f310e13 | ||
|
|
4384e527c7 | ||
|
|
d782c70c75 | ||
|
|
3df500c911 | ||
|
|
e04c199ca4 | ||
|
|
c7eef48e07 | ||
|
|
7c4220f2b5 | ||
|
|
c4ae3e8850 | ||
|
|
2e45eade58 | ||
|
|
fba5ba7a1d | ||
|
|
b12c5fd113 | ||
|
|
a665373b50 | ||
|
|
5bbe1a5565 | ||
|
|
412e130d46 | ||
|
|
5bcd9f5469 | ||
|
|
c78a336884 | ||
|
|
d54ae62ab1 | ||
|
|
e3781d0b36 | ||
|
|
447882395e | ||
|
|
39bbbd6494 | ||
|
|
9f62aa2d2f | ||
|
|
59b2f0f24d | ||
|
|
1a2e99ddc3 | ||
|
|
b6c60eea6b | ||
|
|
6c21f202fa | ||
|
|
18b1ddcfc3 | ||
|
|
11641209d0 | ||
|
|
6a5815bc5b | ||
|
|
cb77ca59de | ||
|
|
9f02efc4a3 | ||
|
|
b6418a495a | ||
|
|
fccfbd6515 | ||
|
|
9930a53f6d | ||
|
|
fbf8d20f62 | ||
|
|
596324a554 | ||
|
|
160761f632 | ||
|
|
889d64c1c0 | ||
|
|
09d6593e85 | ||
|
|
1b40e92de2 | ||
|
|
360b4effb8 | ||
|
|
a549aadb5b | ||
|
|
4001b9ab79 | ||
|
|
aa86d6fcd2 | ||
|
|
beed4d2637 | ||
|
|
7e2206ae18 | ||
|
|
c241595dfd | ||
|
|
b3c69ea511 | ||
|
|
d837b89d4a | ||
|
|
14625b13a7 | ||
|
|
360a37e673 | ||
|
|
52b2227df1 | ||
|
|
6220b2bc24 | ||
|
|
8a0e84a90f | ||
|
|
ce28c61601 | ||
|
|
bb1b5105cd | ||
|
|
a300c5be58 | ||
|
|
2f3319cd11 | ||
|
|
738a34f786 | ||
|
|
e8f8f8b0b2 | ||
|
|
4cd47f1d04 | ||
|
|
81a6e765d4 | ||
|
|
75cf385648 | ||
|
|
c812ac1dea | ||
|
|
b857dd7068 | ||
|
|
d315bef269 | ||
|
|
a4560ca392 | ||
|
|
613a536432 | ||
|
|
9afff9d756 | ||
|
|
8c3647c887 | ||
|
|
edda4f89f4 | ||
|
|
fa8e38da57 | ||
|
|
fdd9ae8bca | ||
|
|
e92198da88 | ||
|
|
187144f72d | ||
|
|
d2f95ab832 | ||
|
|
2c4a591d38 | ||
|
|
d5cc45bb24 | ||
|
|
428938f5b2 | ||
|
|
785983ee7e | ||
|
|
a5d3b5d213 | ||
|
|
3fa5cc4900 | ||
|
|
6b8108b470 | ||
|
|
5b87c35356 | ||
|
|
1529bf3bfc | ||
|
|
2869855f04 | ||
|
|
4c0dda7425 | ||
|
|
5eacd839e8 | ||
|
|
cb350ce446 | ||
|
|
4616a4b0bf | ||
|
|
31b33d533a | ||
|
|
6070b6ec4c | ||
|
|
6abcf9a126 | ||
|
|
e4296a117c | ||
|
|
00997f8bc0 | ||
|
|
0f89b5ddf6 | ||
|
|
20e9d26d44 | ||
|
|
5ce47e35dd | ||
|
|
e2f9b2f634 | ||
|
|
57434f06a6 | ||
|
|
d2ec1b1d23 | ||
|
|
673e4cd0a5 | ||
|
|
9fa87ecc59 | ||
|
|
b8e9114c8a | ||
|
|
2bd682d0d6 | ||
|
|
3bd4679c52 | ||
|
|
1d937a07ab | ||
|
|
fcdb322d2f | ||
|
|
abd303aba8 | ||
|
|
71df3fee70 | ||
|
|
eeb94ff99a | ||
|
|
4e7f1ce6ca | ||
|
|
c8e765d134 | ||
|
|
ba6eb35830 | ||
|
|
dd8b92ddc6 | ||
|
|
42a8ed5761 | ||
|
|
6283e3fa1a | ||
|
|
6ec304e4d6 | ||
|
|
15b5008c6c | ||
|
|
71382469cb | ||
|
|
bf76ae4efe | ||
|
|
57a2dae63e | ||
|
|
0122689aaf | ||
|
|
5c89c5ab65 | ||
|
|
48729847a4 | ||
|
|
acafbe4406 | ||
|
|
32ebc7ca2b | ||
|
|
e4c9778db7 | ||
|
|
21acc360b4 | ||
|
|
fec5a956cd | ||
|
|
24f12d7b94 | ||
|
|
0a1c490e87 | ||
|
|
86e08f54a9 | ||
|
|
f7502178eb | ||
|
|
7b187639b1 | ||
|
|
cd673e89e2 | ||
|
|
1a68c43f79 | ||
|
|
a8ac15094c | ||
|
|
74161fdf89 | ||
|
|
2a5def2334 | ||
|
|
5da176d58a | ||
|
|
7c34e72fe1 | ||
|
|
021f8bddf6 | ||
|
|
8f4feae8ef | ||
|
|
22ca91a61e | ||
|
|
ecc9a7f709 | ||
|
|
5947402c38 | ||
|
|
8a04e82516 | ||
|
|
846385627c | ||
|
|
fbf0fef203 | ||
|
|
150e721d9f | ||
|
|
1f913f7505 | ||
|
|
021a6ebc83 | ||
|
|
661b6c1315 | ||
|
|
5a0915d68c | ||
|
|
6ba821f721 | ||
|
|
afdadf8f8b | ||
|
|
1600e04fef | ||
|
|
4c7560053d | ||
|
|
69454c7e27 | ||
|
|
9804628c8b | ||
|
|
d69d91e46f | ||
|
|
fd6991a6ab | ||
|
|
04f23897b4 | ||
|
|
95c74c917d | ||
|
|
098991a688 | ||
|
|
55ce0f9653 | ||
|
|
04d13fa4ea | ||
|
|
bf867d6b1a | ||
|
|
0dad48e9bd | ||
|
|
6d1f2ff816 | ||
|
|
8b16461f83 | ||
|
|
bede49b624 | ||
|
|
91f4c21573 | ||
|
|
c33a1acd5f | ||
|
|
8da8e5af3c | ||
|
|
6751e15468 | ||
|
|
ddfb8ad99d | ||
|
|
ffc62a3130 | ||
|
|
052125a4bf | ||
|
|
a6dc64aff8 | ||
|
|
de39ebe07f | ||
|
|
f33a72b6ff | ||
|
|
1306b400cf | ||
|
|
ca692fbdd9 | ||
|
|
674e559d5a | ||
|
|
398a9a916f | ||
|
|
0f4bb6a7ea | ||
|
|
37a484af18 | ||
|
|
81dbfa8a1c | ||
|
|
c1ae806ef0 | ||
|
|
d6fc0261ab | ||
|
|
9829b7427b | ||
|
|
a862f5fc10 | ||
|
|
c6e2708689 | ||
|
|
fa0b08a6cb | ||
|
|
e0ea45a5e5 | ||
|
|
da8fcd51bd | ||
|
|
fc3808716b | ||
|
|
d6e7ac9ab8 | ||
|
|
298e6b9636 | ||
|
|
afcefe4c6f | ||
|
|
f533d6bba6 | ||
|
|
1e25c4f52a | ||
|
|
67e5aeb77d | ||
|
|
4cc066551a | ||
|
|
d3517085fa | ||
|
|
c64a90d92e | ||
|
|
f39a5763d6 | ||
|
|
5038b0f721 | ||
|
|
177455c2ed | ||
|
|
fe6048e1aa | ||
|
|
7e37f1d012 | ||
|
|
77fe6e0c60 | ||
|
|
4d431ad75d | ||
|
|
bf98fd35ff | ||
|
|
86e4ed49f2 | ||
|
|
13b3db2327 | ||
|
|
acde267881 | ||
|
|
eb2e27ca54 | ||
|
|
6eb96a4531 | ||
|
|
a4ba04b1d1 | ||
|
|
d8e634a725 | ||
|
|
df4b44b838 | ||
|
|
42feb2166a | ||
|
|
f1c791685c | ||
|
|
f4745d7484 | ||
|
|
231009dade | ||
|
|
85ed047d60 | ||
|
|
f1c2ee776d | ||
|
|
1ff6e59982 | ||
|
|
549390fe06 | ||
|
|
b95cd28983 | ||
|
|
20081d0d53 | ||
|
|
5bcfcdab1a | ||
|
|
5c49ea6fca | ||
|
|
108e37fd6d | ||
|
|
339a09c1b8 | ||
|
|
60aaf6b194 | ||
|
|
19d631fdc6 | ||
|
|
74db467697 | ||
|
|
50fd75c33e | ||
|
|
e80a076f71 | ||
|
|
0c52bbd9d0 | ||
|
|
c3e4e91c1b | ||
|
|
feacfbfc29 | ||
|
|
75b3720a17 | ||
|
|
6895fae601 | ||
|
|
04e1fc542c | ||
|
|
436d82f759 | ||
|
|
6326cca752 | ||
|
|
1476e2032f | ||
|
|
2b82a11bcf | ||
|
|
3ca021b6c8 | ||
|
|
ab83982bf3 | ||
|
|
5aa26694b2 | ||
|
|
47e3ddad12 | ||
|
|
48ad1fa0d5 | ||
|
|
97384d28db | ||
|
|
d767ea905d | ||
|
|
934cbbd16d | ||
|
|
1661c82394 | ||
|
|
a077068316 | ||
|
|
c991c5a333 | ||
|
|
62c7af241a | ||
|
|
3f9e0ff860 | ||
|
|
286941154d | ||
|
|
54b50584f4 | ||
|
|
8fcedfeddf | ||
|
|
e00ef5b0c3 | ||
|
|
8f62df644f | ||
|
|
9699235a63 | ||
|
|
16c89b550b | ||
|
|
d7755a1519 | ||
|
|
117ecfd7c1 | ||
|
|
877edb5bb1 | ||
|
|
8175d9e1de | ||
|
|
f1e4953ace | ||
|
|
7aaa67d886 | ||
|
|
82a3c4b5e1 | ||
|
|
2d5989d4fc | ||
|
|
7459c22470 | ||
|
|
a2dab10c4f | ||
|
|
34f6c45146 | ||
|
|
f7795d916c | ||
|
|
b10e94a8d6 | ||
|
|
b955f5f1bf | ||
|
|
072beff0e4 | ||
|
|
475fdc5bb6 | ||
|
|
1a8bd4aeb5 | ||
|
|
681c8390b3 | ||
|
|
c44b27e4ea | ||
|
|
67445fffe2 | ||
|
|
e05d094ea0 | ||
|
|
a1c80e521c | ||
|
|
9e4c34922b | ||
|
|
7e168203d3 | ||
|
|
a5f1736211 | ||
|
|
e9c866d85b | ||
|
|
e8ce9793e2 | ||
|
|
13d7cf8fd3 | ||
|
|
5ab6790148 | ||
|
|
ed6ed26de4 | ||
|
|
2f2e0547f5 | ||
|
|
b20a8c119a | ||
|
|
ce1db6ccec | ||
|
|
fb850fc53d | ||
|
|
0dc6cb2088 | ||
|
|
16811b0629 | ||
|
|
03dba4352e | ||
|
|
6b61a3ed9b | ||
|
|
5c8aad323e | ||
|
|
e28442f146 | ||
|
|
7cb7a8c04e | ||
|
|
c9b9598f1c | ||
|
|
778a41982c | ||
|
|
78ef14f92f | ||
|
|
22b5237d49 | ||
|
|
d714869c57 | ||
|
|
3f74d2c880 | ||
|
|
1ae26e3b39 | ||
|
|
7dbadfcee8 | ||
|
|
27065430bc | ||
|
|
a52bf9ff7b | ||
|
|
0459b4a0c5 | ||
|
|
71a8d9b66b | ||
|
|
daa5b43c12 | ||
|
|
cdc7bd301f | ||
|
|
93c074c216 | ||
|
|
b6c1823ccf | ||
|
|
3dc980afd9 | ||
|
|
370f73e2fc | ||
|
|
5fc967bc14 | ||
|
|
bf21b8d301 | ||
|
|
972d31f892 | ||
|
|
3b51820e95 | ||
|
|
526879337f | ||
|
|
4b54a6b074 | ||
|
|
8ba371176d | ||
|
|
9dfff441e2 | ||
|
|
e86636a52f | ||
|
|
c1565e2adf | ||
|
|
538c48e61d | ||
|
|
ce86a91f21 | ||
|
|
9b0f1dfc77 | ||
|
|
de5c886808 | ||
|
|
f59838c36d | ||
|
|
ecd591ada3 | ||
|
|
7183070ed4 | ||
|
|
425e7266f2 | ||
|
|
5af4c7c904 | ||
|
|
67e12023a0 | ||
|
|
575a33f6a9 | ||
|
|
b2319be6cc | ||
|
|
eb1c955705 | ||
|
|
a6c94940df | ||
|
|
870d099f0d | ||
|
|
873c11f09d | ||
|
|
352dd07e26 | ||
|
|
8fffa07a64 | ||
|
|
7f6a7d2030 | ||
|
|
b83f8a9780 | ||
|
|
e31302fc4c | ||
|
|
c73acf342a | ||
|
|
4704817f65 | ||
|
|
868a84443f | ||
|
|
4e9b032d42 | ||
|
|
36c7178bb6 | ||
|
|
7748ce0cd8 | ||
|
|
a9a293ce7b | ||
|
|
d0b7e1edd7 | ||
|
|
01d4c85fdc | ||
|
|
6323da5d0e | ||
|
|
26e70a4238 | ||
|
|
bcd7b26ef4 | ||
|
|
8ef9d90959 | ||
|
|
a58f520072 | ||
|
|
54ae0a397b | ||
|
|
3f4f6256ba | ||
|
|
68ed55b321 | ||
|
|
8db2c30d72 | ||
|
|
29b522ab3a | ||
|
|
217ea08c4b | ||
|
|
656bef202d | ||
|
|
3c3b84f729 | ||
|
|
482bc07e7e | ||
|
|
3b064da000 | ||
|
|
211b4526d9 | ||
|
|
f0032665e3 | ||
|
|
d189b8d1d0 | ||
|
|
118b6a5a0e | ||
|
|
8468327236 | ||
|
|
b70ed9b791 | ||
|
|
5f76152f33 | ||
|
|
b5083c71d9 | ||
|
|
1056feab7e | ||
|
|
b6d3e39df6 | ||
|
|
3265446bd9 | ||
|
|
1b9860885b | ||
|
|
2eee8e9c47 | ||
|
|
f2af5b3254 | ||
|
|
939d22ecb0 | ||
|
|
5970d0f953 | ||
|
|
9e41f705a1 | ||
|
|
a5983f9cb9 | ||
|
|
a5d3afe086 | ||
|
|
3b8e27149d | ||
|
|
37729e1110 | ||
|
|
c0df43119d | ||
|
|
eb23591f5b | ||
|
|
1f941ca26c | ||
|
|
68a3179e6c | ||
|
|
de597f9985 | ||
|
|
b8ce5f1319 | ||
|
|
cdb36e8b82 | ||
|
|
a6ea97e2d1 | ||
|
|
95ae8c109d | ||
|
|
8954702640 | ||
|
|
97604b92b8 | ||
|
|
57eecf611f | ||
|
|
71f1930023 | ||
|
|
9049a88672 | ||
|
|
b4cd75587e | ||
|
|
81888e7f1d | ||
|
|
38f0db07b5 | ||
|
|
df80758e55 | ||
|
|
77e24c9401 | ||
|
|
3b7a425edd | ||
|
|
0e85af9526 | ||
|
|
271d9041ce | ||
|
|
e5824ffcea | ||
|
|
33c57189f4 | ||
|
|
7acdb81fff | ||
|
|
c72b36e523 | ||
|
|
d91779dd3c | ||
|
|
eb8d6f2acf | ||
|
|
dbf8f690bf | ||
|
|
a22e11f355 | ||
|
|
fbd4f822f1 | ||
|
|
3dd35a500e | ||
|
|
663f90b6d1 | ||
|
|
769525d3f5 | ||
|
|
8ea5fac889 | ||
|
|
1b9cca5a7c | ||
|
|
2165a688b9 | ||
|
|
557337206b | ||
|
|
15c7d5daa9 | ||
|
|
552ad8c83c | ||
|
|
2d3452c97e | ||
|
|
03347cea73 | ||
|
|
8c0119ee99 | ||
|
|
ab684cdf14 | ||
|
|
8d5afcb191 | ||
|
|
7a90ef6427 | ||
|
|
6b08ee0ae8 | ||
|
|
6699a7bd92 | ||
|
|
a736583d3c | ||
|
|
d60630178e | ||
|
|
37b3e49b15 | ||
|
|
64dd0ab387 | ||
|
|
8fc0e6ab9b | ||
|
|
3f329001ff | ||
|
|
09f2cc01d3 | ||
|
|
cfdc71f001 | ||
|
|
6b56d96ba5 | ||
|
|
8afc132b68 | ||
|
|
8b9e26a8c6 | ||
|
|
003bcc7e7b | ||
|
|
d9c65cb01a | ||
|
|
907c90297d | ||
|
|
a412965c27 | ||
|
|
42835e3e2c | ||
|
|
abdfab5d95 | ||
|
|
aca2301a2c | ||
|
|
0c4c456610 | ||
|
|
3b4f46da64 | ||
|
|
fbd00a2314 | ||
|
|
a3c6df3a7b | ||
|
|
75005e0c2c | ||
|
|
a1df3cd1bc | ||
|
|
0188c40405 | ||
|
|
5e66c3f215 | ||
|
|
28d7e8894c | ||
|
|
9de26aab82 | ||
|
|
c64022bd8b | ||
|
|
ba4e65c06a | ||
|
|
035706fa12 | ||
|
|
aa5e92a5df | ||
|
|
56d8cba406 | ||
|
|
cc4d8fafe8 | ||
|
|
5c864d34bd | ||
|
|
1f085da99f | ||
|
|
ba97af0a0f | ||
|
|
9c7c057300 | ||
|
|
fcfb960215 | ||
|
|
975442bcc0 | ||
|
|
453c1bc9c2 | ||
|
|
9960f6144a | ||
|
|
1ff954ca5e | ||
|
|
6b32697954 | ||
|
|
9c0e2ad482 | ||
|
|
52b4629f1a | ||
|
|
c46767b0a6 | ||
|
|
46d3918a6b | ||
|
|
4c56c42bb0 | ||
|
|
b9fd88cdcb | ||
|
|
92730d49a7 | ||
|
|
8a3ba3d1b3 | ||
|
|
68ba9d07fd | ||
|
|
eb696ccd39 | ||
|
|
2d4e870b53 | ||
|
|
11efd1bc38 | ||
|
|
6bbba05710 | ||
|
|
48efc4fc65 | ||
|
|
e4484b1712 | ||
|
|
97f0148e42 | ||
|
|
2832ca186a | ||
|
|
1ef4598ca0 | ||
|
|
e50dc2deee | ||
|
|
c139630997 | ||
|
|
d887840138 | ||
|
|
70036ec47b | ||
|
|
97c3396af0 | ||
|
|
525879052a | ||
|
|
693959699c | ||
|
|
5e20ed40ca | ||
|
|
65e17d8009 | ||
|
|
9a07aafabb | ||
|
|
a98d858591 | ||
|
|
2f731d6828 | ||
|
|
5449adc8f8 | ||
|
|
2c3afa42cd | ||
|
|
0e6287cd95 | ||
|
|
979e0d3a8d | ||
|
|
87bbb1f003 | ||
|
|
7790dc1daa | ||
|
|
74d5fb09af | ||
|
|
8af40dba2b | ||
|
|
4807aa4a0f | ||
|
|
e8a5eb4bbf | ||
|
|
1cfcd14b20 | ||
|
|
48558da40a | ||
|
|
78fb3dc32f | ||
|
|
86ec93ce53 | ||
|
|
dadca852fd | ||
|
|
527a8760cb | ||
|
|
f07a57f4b3 | ||
|
|
b3bb447baa | ||
|
|
5f52d93478 | ||
|
|
5159490e75 | ||
|
|
1ac9afbd19 | ||
|
|
22f9372a83 | ||
|
|
86b1007e05 | ||
|
|
2eaa8f99e4 | ||
|
|
228d527af3 | ||
|
|
57f5091dcd | ||
|
|
dd8c5f6aa5 | ||
|
|
fa4a9a43bd | ||
|
|
a1b3d48f1f | ||
|
|
4e17308d86 | ||
|
|
910d32c05d | ||
|
|
a0c850fb3b | ||
|
|
0f52619c36 | ||
|
|
62b049b2e1 | ||
|
|
247d64bed5 | ||
|
|
bb94e499e5 | ||
|
|
dc1f1183ab | ||
|
|
6072a158d2 | ||
|
|
429993aee7 | ||
|
|
b8e56c770e | ||
|
|
13cd30d24b | ||
|
|
242e2804b8 | ||
|
|
bc8ef71083 | ||
|
|
e7cf69dd9d | ||
|
|
c025dac861 | ||
|
|
d9521aac6b | ||
|
|
4ae0790ce6 | ||
|
|
7d0f71ef48 | ||
|
|
33b50a34b2 | ||
|
|
6278827e52 | ||
|
|
8cda78738e | ||
|
|
38997477ca | ||
|
|
55edc8efcf | ||
|
|
7e905ba31e | ||
|
|
fe910a6bbe | ||
|
|
52238722a3 | ||
|
|
442d3a463e | ||
|
|
f7c36e18c9 | ||
|
|
24252922ee | ||
|
|
bf437081df | ||
|
|
7117a1102b | ||
|
|
7dcebb7a8e | ||
|
|
232dd8698e | ||
|
|
31dcc6fdd0 | ||
|
|
6f64867a27 | ||
|
|
9427ddf511 | ||
|
|
767129bb16 | ||
|
|
c9ac737987 | ||
|
|
5226085db4 | ||
|
|
5433c9a8cd | ||
|
|
27b2fb4b44 | ||
|
|
297eaf6860 | ||
|
|
0f08614981 | ||
|
|
15f59e61c4 | ||
|
|
a71e239cf8 | ||
|
|
08da99d3c7 | ||
|
|
b5b375e983 | ||
|
|
209af925bd | ||
|
|
347795ea5c | ||
|
|
fff0810a36 | ||
|
|
45c1bdf475 | ||
|
|
e564e13631 | ||
|
|
517f44d8e1 | ||
|
|
33975e7a6e | ||
|
|
ce91a0e350 | ||
|
|
bfee6a7653 | ||
|
|
45bf4723f8 | ||
|
|
2badd3463b | ||
|
|
36047f8b70 | ||
|
|
ded4785699 | ||
|
|
2397fbcb78 | ||
|
|
12f5895284 | ||
|
|
cc5a644d7e | ||
|
|
519d11a607 | ||
|
|
a05561d01f | ||
|
|
161a14934c | ||
|
|
02dff8aa69 | ||
|
|
76d4382462 | ||
|
|
217f139f38 | ||
|
|
e3ed2c6f09 | ||
|
|
1ccb674599 | ||
|
|
e1744657a4 | ||
|
|
0cbe9e4656 | ||
|
|
9ceece41c5 | ||
|
|
d6801912e7 | ||
|
|
ff61dd22dc | ||
|
|
c5c6942151 | ||
|
|
f79919776b | ||
|
|
6277c1ad1c | ||
|
|
4fb24d8d0d | ||
|
|
7bcabb9ffd | ||
|
|
110a31e52b | ||
|
|
4c6bf353ae | ||
|
|
8656b63553 | ||
|
|
487aca2851 | ||
|
|
f708f65cfc | ||
|
|
05f6f36eb4 | ||
|
|
4d23b18a16 | ||
|
|
1c373bc8bc | ||
|
|
6173017749 | ||
|
|
2af51f57d5 | ||
|
|
a95bbd1345 | ||
|
|
21f06357b6 | ||
|
|
d39739f8ad | ||
|
|
8e0a995b36 | ||
|
|
ca4423065a | ||
|
|
62188450c1 | ||
|
|
70c765ae34 | ||
|
|
ada3984c2f | ||
|
|
066c10713e | ||
|
|
2c7311c970 | ||
|
|
b07e7499c7 | ||
|
|
c7cad346c8 | ||
|
|
7c648002fe | ||
|
|
d2a49a88c6 | ||
|
|
2a838c99fe | ||
|
|
507cf0370e | ||
|
|
4f268fe59a | ||
|
|
227c1d83cd | ||
|
|
6c4da93d15 | ||
|
|
2a9d504fa9 | ||
|
|
fc809a95c7 | ||
|
|
363b2a444f | ||
|
|
35a7169a72 | ||
|
|
2782ab84e0 | ||
|
|
e7cd7ef208 | ||
|
|
2be3932f3d | ||
|
|
75a73652df | ||
|
|
e4b652c13b | ||
|
|
a62971623f | ||
|
|
b1cd72c194 | ||
|
|
5a445fb562 | ||
|
|
3b78a06496 | ||
|
|
16c2da133d | ||
|
|
845c4c85d8 | ||
|
|
fe404c0bcb | ||
|
|
2434eb63f1 | ||
|
|
b8be36373b | ||
|
|
ee263139a0 | ||
|
|
c3c306cb6e | ||
|
|
c0aebe0d86 | ||
|
|
966cc2a620 | ||
|
|
ea8aed4d96 | ||
|
|
6d0d874b69 | ||
|
|
208db1b64f | ||
|
|
8d273928c9 | ||
|
|
c5bf946201 | ||
|
|
e8e3476b10 | ||
|
|
6b6f3482f1 | ||
|
|
5de61a1082 | ||
|
|
2f826806c2 | ||
|
|
7c8ffd3347 | ||
|
|
6526a10ea0 | ||
|
|
75aae4a826 | ||
|
|
be024a7625 | ||
|
|
c0f077d531 | ||
|
|
a782ec3d7e | ||
|
|
c40a0b2b4a | ||
|
|
dece12e555 | ||
|
|
54a0d4e5f6 | ||
|
|
d0cf554463 | ||
|
|
67dcdbe57f | ||
|
|
6f1c6c5bce | ||
|
|
78554cb066 | ||
|
|
e3fdb3fab6 | ||
|
|
0cebb54c00 | ||
|
|
b9a6178238 | ||
|
|
35e241e0ce | ||
|
|
81d57c75e4 | ||
|
|
059ec0fee5 | ||
|
|
0659f70f5d | ||
|
|
890610a510 | ||
|
|
ce77d4202b | ||
|
|
7040a86f30 | ||
|
|
0461aa4943 | ||
|
|
a543cdf5f3 | ||
|
|
8232798521 | ||
|
|
8f7fd7f0a4 | ||
|
|
186d855bc1 | ||
|
|
18c879b224 | ||
|
|
abf39a84c4 | ||
|
|
546acbbc35 | ||
|
|
39a3dc4c0e | ||
|
|
9d069638ff | ||
|
|
034a53f563 | ||
|
|
fd50ee4b30 | ||
|
|
9d35619362 | ||
|
|
4c075d6749 | ||
|
|
0a87672269 | ||
|
|
4a11ba6bf4 | ||
|
|
9af2fbfb14 | ||
|
|
fb469e00b1 | ||
|
|
041bc7760c | ||
|
|
42466c6e91 | ||
|
|
f20bc90b24 | ||
|
|
e496c64f6a | ||
|
|
342a390704 | ||
|
|
86f870fe91 | ||
|
|
73e72904d3 | ||
|
|
1b0f87d565 | ||
|
|
04062f675a | ||
|
|
1b7ddcbb50 | ||
|
|
9d491cbc9e | ||
|
|
cf5ef9b5ca | ||
|
|
144644fc26 | ||
|
|
c24c890227 | ||
|
|
116e0c5584 | ||
|
|
4922d40c4a | ||
|
|
e656142601 | ||
|
|
5a12c6a61d | ||
|
|
1f0b59a538 | ||
|
|
4744ad38d3 | ||
|
|
8c69893c8a | ||
|
|
58fe579555 | ||
|
|
f621a0c152 | ||
|
|
d192edfe50 | ||
|
|
8a13d4abb1 | ||
|
|
f99b0bf172 | ||
|
|
99028e4c42 | ||
|
|
ebec3de353 | ||
|
|
12b2732ddf | ||
|
|
c82b5819c3 | ||
|
|
694abee654 | ||
|
|
3324ae5d7f | ||
|
|
498705a5a8 | ||
|
|
07c2a00a37 | ||
|
|
740311896c | ||
|
|
c8aafee5f1 | ||
|
|
d8a10e6c82 | ||
|
|
74e85c0698 | ||
|
|
78bab70a05 | ||
|
|
a4b01ba358 | ||
|
|
95c48c3d6f | ||
|
|
2b6b6fd107 | ||
|
|
1af7f87567 | ||
|
|
b8db21b3d4 | ||
|
|
37d5a5caea | ||
|
|
4033f1c09d | ||
|
|
b937a8a8ad | ||
|
|
e5d1027763 | ||
|
|
68460dfe4f | ||
|
|
18754a0c8f | ||
|
|
b2a86290c6 | ||
|
|
8d04a393f4 | ||
|
|
ec00eb49c2 | ||
|
|
6117123c4a | ||
|
|
f3ed6f2a1c | ||
|
|
737a271e26 | ||
|
|
7f6af4cd5e | ||
|
|
bc74fd1414 | ||
|
|
3c5c76382f | ||
|
|
dc4710ef18 | ||
|
|
3c7d537898 | ||
|
|
603349518a | ||
|
|
166575953e | ||
|
|
3aa725102a | ||
|
|
249cffdee7 | ||
|
|
bb95f8adce | ||
|
|
2ee9222251 | ||
|
|
8776b382e7 | ||
|
|
421e8e6052 | ||
|
|
449606eb1d | ||
|
|
915ae99711 | ||
|
|
27bea18931 | ||
|
|
ae23308523 | ||
|
|
ba36be78d8 | ||
|
|
c2c0cb5a2f | ||
|
|
e38d778899 | ||
|
|
10c0063295 | ||
|
|
ba91e8c024 | ||
|
|
fa2153dd4a | ||
|
|
39ad0d25b5 | ||
|
|
c3198d4b3c | ||
|
|
eaea6796b7 | ||
|
|
eaf29a931a | ||
|
|
699a454bbd | ||
|
|
1420117854 | ||
|
|
cd490b43ee | ||
|
|
9dd87cc73c | ||
|
|
4a07c61cfa | ||
|
|
5ac00a77b3 | ||
|
|
5169fe0751 | ||
|
|
d3ccc28d2c | ||
|
|
92fb5d3c2a | ||
|
|
f7451b6d2c | ||
|
|
0c82ef1f83 | ||
|
|
ca2c3861a1 | ||
|
|
e7bc0a56f0 | ||
|
|
d78e615869 | ||
|
|
8a0657669d | ||
|
|
4f3d904594 | ||
|
|
2d97c54741 | ||
|
|
90a4d3ce55 | ||
|
|
658e64a67b | ||
|
|
3ad79dced3 | ||
|
|
df7c4b12af | ||
|
|
f788e75947 | ||
|
|
31941a7446 | ||
|
|
05c87006ac | ||
|
|
7291c047ad | ||
|
|
e0887aff53 | ||
|
|
592e317e82 | ||
|
|
bb0fb37fd7 | ||
|
|
a81c05cd5d | ||
|
|
0c955dbeb1 | ||
|
|
d85e5bdc96 | ||
|
|
7db695a94b | ||
|
|
bbaeff524e | ||
|
|
15453f264c | ||
|
|
e77335f84f | ||
|
|
72cf47d0f1 | ||
|
|
4b1012c0e0 | ||
|
|
0dfe49484f | ||
|
|
2d7b84544b | ||
|
|
00dbee6696 | ||
|
|
08b1ef0df2 | ||
|
|
925ccbadb9 | ||
|
|
f9cde96de0 | ||
|
|
d308602cb6 | ||
|
|
a3547fd432 | ||
|
|
759045035c | ||
|
|
72ed5de513 | ||
|
|
c415429b31 | ||
|
|
99ad467449 | ||
|
|
7881123910 | ||
|
|
27ce017de2 | ||
|
|
27faab2b9b | ||
|
|
eaf7ed9b4f | ||
|
|
94ccec871e | ||
|
|
e469731eeb | ||
|
|
1027470287 | ||
|
|
b3ead4ab76 | ||
|
|
22c7ed8d56 | ||
|
|
9ae6963441 | ||
|
|
168f3bae0d | ||
|
|
182b36114a | ||
|
|
9e962018ca | ||
|
|
620d1ab696 | ||
|
|
168d0d04a1 | ||
|
|
f0989bff07 | ||
|
|
e55802af54 | ||
|
|
b091448b98 | ||
|
|
bad75e211b | ||
|
|
56a90cd688 | ||
|
|
5e01eb445e | ||
|
|
c2dfaf6192 | ||
|
|
881d2e3c6c | ||
|
|
c6da52d9d6 | ||
|
|
aea68dc422 | ||
|
|
12858a4388 | ||
|
|
e75b544788 | ||
|
|
95819e9884 | ||
|
|
09c94f55e6 | ||
|
|
c61b1964af | ||
|
|
2a16f5b3a1 | ||
|
|
c299275992 | ||
|
|
422a4d0f5a | ||
|
|
c4ad96701f | ||
|
|
e69ca8805c | ||
|
|
3a3845decf | ||
|
|
3dca497c52 | ||
|
|
039f902065 | ||
|
|
7a2c5699aa | ||
|
|
455b633f87 | ||
|
|
cad4819cc5 | ||
|
|
aaae21a747 | ||
|
|
86203e4c74 | ||
|
|
a2431070a5 | ||
|
|
4352e5e37b | ||
|
|
d41f231705 | ||
|
|
1fdde3bc8c | ||
|
|
e62e204cac | ||
|
|
381159a0d7 | ||
|
|
7793a32a0d | ||
|
|
00cd9aafb8 | ||
|
|
55ba3ebcaa | ||
|
|
16a8d82ea8 | ||
|
|
8ac87b7c28 | ||
|
|
ef94c32e50 | ||
|
|
98a7faa0b5 | ||
|
|
3238af6086 | ||
|
|
e4055a6ffa | ||
|
|
bf91065d8c | ||
|
|
bb7e4eb9b3 | ||
|
|
f5860f9b3d | ||
|
|
68572a6285 | ||
|
|
58bd2bd587 | ||
|
|
a51df66b4b | ||
|
|
6a16a0e4fc | ||
|
|
c65f279074 | ||
|
|
777956191b | ||
|
|
89f199bcd2 | ||
|
|
68f0f98cc6 | ||
|
|
c5f3952c42 | ||
|
|
14df6ea00a | ||
|
|
c36667850b | ||
|
|
e1a2dec38a | ||
|
|
94a4547b0e | ||
|
|
4dbfb26767 | ||
|
|
1f45610cbb | ||
|
|
e0bad01cf0 | ||
|
|
65788673d8 | ||
|
|
670b8bce16 | ||
|
|
42ec54e512 | ||
|
|
9dd151af58 | ||
|
|
d5aab68175 | ||
|
|
3586424217 | ||
|
|
764a987395 | ||
|
|
84e1236582 | ||
|
|
9b09e08daf | ||
|
|
e7b3d2b998 | ||
|
|
3c56a0b8cb | ||
|
|
488b729004 | ||
|
|
bfcbe68c35 | ||
|
|
d9d96fc1ad | ||
|
|
9fc832022e | ||
|
|
6c2e2e1b02 | ||
|
|
0b85297d76 | ||
|
|
03b8ce32d9 | ||
|
|
ddcebe4744 | ||
|
|
a827cab203 | ||
|
|
573da345ce | ||
|
|
1bbfe1ee10 | ||
|
|
121acebe3b | ||
|
|
ff0ef06f08 | ||
|
|
c74423ce03 | ||
|
|
81e7f6e50d | ||
|
|
26dd8f118b | ||
|
|
fb7ff43a61 | ||
|
|
9a7bfac022 | ||
|
|
2e34b1734b | ||
|
|
512594a4c2 | ||
|
|
36bae6707d | ||
|
|
635c5407a8 | ||
|
|
4abbf293f8 | ||
|
|
dcbd9d2e81 | ||
|
|
4449dc0444 | ||
|
|
4abfa497be | ||
|
|
5005597969 | ||
|
|
38cd0baf87 | ||
|
|
d952e5c0f4 | ||
|
|
221aa34077 | ||
|
|
09718ce61e | ||
|
|
9abacb22cc | ||
|
|
54c2da9a3c | ||
|
|
b809bcab8a | ||
|
|
3468d97747 | ||
|
|
97827e00c2 | ||
|
|
6e63a06707 | ||
|
|
92c205d896 | ||
|
|
006f34d40c | ||
|
|
fb4b769814 | ||
|
|
bd2ef46f9b | ||
|
|
bc2f40994f | ||
|
|
d34f0d2c2e | ||
|
|
ac50b97a5a | ||
|
|
2c2a09878c | ||
|
|
4ae5c77f2d | ||
|
|
97439ad751 | ||
|
|
12cdf6a9cb | ||
|
|
acea00d0f4 | ||
|
|
3cb23ff2b1 | ||
|
|
6f5709463c | ||
|
|
ecc3f97892 | ||
|
|
d3130f0ea2 | ||
|
|
8aa9af34e7 | ||
|
|
5435c59eec | ||
|
|
af46f41578 | ||
|
|
53e287ce79 | ||
|
|
fb0665c141 | ||
|
|
94c443dbac | ||
|
|
41ad2761fc | ||
|
|
e97d947294 | ||
|
|
a756d45cb2 | ||
|
|
ddeba389c8 | ||
|
|
26eb9f430f | ||
|
|
89b7b1607f | ||
|
|
46ff876a04 | ||
|
|
d0887fd183 | ||
|
|
0284e260e2 | ||
|
|
b4cac40a24 | ||
|
|
273abcea31 | ||
|
|
4a6c4b7cc6 | ||
|
|
610a152446 | ||
|
|
108f126c1f | ||
|
|
283040ace0 | ||
|
|
375856bd13 | ||
|
|
8ed7698702 | ||
|
|
202555f320 | ||
|
|
4a84f6e149 | ||
|
|
2c14893d16 | ||
|
|
28e89bcf16 | ||
|
|
b165482ed9 | ||
|
|
ba35ff8a6d | ||
|
|
cc3538a407 | ||
|
|
3d2026421c | ||
|
|
51f400fe59 | ||
|
|
664cc8ccb2 | ||
|
|
05e7216a09 | ||
|
|
24cdf0b4e6 | ||
|
|
0592b7b9b6 | ||
|
|
6752469c8d | ||
|
|
63a47db15c | ||
|
|
86642de9ca | ||
|
|
ebb804e9b8 | ||
|
|
2e40528e33 | ||
|
|
b7fbf030ae | ||
|
|
1882de3f16 | ||
|
|
808082a7c2 | ||
|
|
2375550c7c | ||
|
|
10cbf262c2 | ||
|
|
7c7cc48fba | ||
|
|
9a802e1252 | ||
|
|
5db8749420 | ||
|
|
ac697688f0 | ||
|
|
a5c4cc0aca | ||
|
|
d08713822e | ||
|
|
61ff75b36e | ||
|
|
1ddebffc49 | ||
|
|
2bc376f8e8 | ||
|
|
ad4887659a | ||
|
|
2531c6eab7 | ||
|
|
bb1b563d76 | ||
|
|
f8b6adb95e | ||
|
|
eefa603b38 | ||
|
|
9bf6a91048 | ||
|
|
0c36a6488c | ||
|
|
e7e25aeb43 | ||
|
|
e2e2d2704d | ||
|
|
325abbed2c | ||
|
|
e081e1d220 | ||
|
|
24ade40556 | ||
|
|
e37c67bbb9 | ||
|
|
7ffba3114f | ||
|
|
0c56968419 | ||
|
|
6f9bb930a5 | ||
|
|
cda4598863 | ||
|
|
95bd317d56 | ||
|
|
f29ef5a236 | ||
|
|
18aa6600e7 | ||
|
|
d4287dd205 | ||
|
|
ea140229ae | ||
|
|
5bd28a4878 | ||
|
|
933c5174fd | ||
|
|
0f31d7fd46 | ||
|
|
05bc981714 | ||
|
|
2c1622b52b | ||
|
|
407b7ffd0a | ||
|
|
8e80fd6c8a | ||
|
|
62fca8931f | ||
|
|
4af8d3a65e | ||
|
|
fb6ebad7bf | ||
|
|
d52ce39184 | ||
|
|
6636b47344 | ||
|
|
107cdd9983 | ||
|
|
e69b6e6fc2 | ||
|
|
aa8c4a93e6 | ||
|
|
7643078aa2 | ||
|
|
51129f590f | ||
|
|
82cffd4953 | ||
|
|
3a8bc7ec2f | ||
|
|
6163377682 | ||
|
|
82f08a87d1 | ||
|
|
1700537df1 | ||
|
|
d23e06e321 | ||
|
|
1e4623a4f0 | ||
|
|
18532b349b | ||
|
|
0efdc2e71a | ||
|
|
f5b25b0da5 | ||
|
|
33c98457ca | ||
|
|
e0478f5774 | ||
|
|
34d3fb4925 | ||
|
|
01883fca09 | ||
|
|
a5e0200878 | ||
|
|
014cc3fc51 | ||
|
|
6a79b839df | ||
|
|
8242f85f4c | ||
|
|
901a96f511 | ||
|
|
803786263c | ||
|
|
9ac56cc9a7 | ||
|
|
43bd3903d6 | ||
|
|
bf49142a59 | ||
|
|
33de7762fb | ||
|
|
9547a26193 | ||
|
|
75d39e10e5 | ||
|
|
9bf038343e | ||
|
|
21963b6b3d | ||
|
|
b8dc48866c | ||
|
|
3e1135c458 | ||
|
|
216e33af86 | ||
|
|
4a8a350710 | ||
|
|
7994cf7d0e | ||
|
|
1ce52e8e57 | ||
|
|
d2fa8cb535 | ||
|
|
c9421b6947 | ||
|
|
926728a29d | ||
|
|
3ac96e6121 | ||
|
|
3d9f645a3c | ||
|
|
d7da405614 | ||
|
|
fd2519a0fc | ||
|
|
ea8912fff3 | ||
|
|
f5a73b7ff0 | ||
|
|
6220c2eb2c | ||
|
|
f44a091ec4 | ||
|
|
4de425066e | ||
|
|
956a8f0b01 | ||
|
|
d69f2ce122 | ||
|
|
0ca6a9e52d | ||
|
|
115ec3cd06 | ||
|
|
7b0df6cbf8 | ||
|
|
75d06ef967 | ||
|
|
7f9d5200ef | ||
|
|
e7d371cd2f | ||
|
|
57fce1908b | ||
|
|
9e91f100d9 | ||
|
|
8777dd736b | ||
|
|
3b16fb7243 | ||
|
|
40ebc8f7c5 | ||
|
|
9654c88357 | ||
|
|
f9aaa67a51 | ||
|
|
94ca54ff0d | ||
|
|
ff35adf9ae | ||
|
|
4a1dde629e | ||
|
|
328ac28244 | ||
|
|
908c5bc93e | ||
|
|
d945358d25 | ||
|
|
3e77cde88c | ||
|
|
90075c746b | ||
|
|
e15c0bf9c0 | ||
|
|
ecd51a45ee | ||
|
|
b352b58afb | ||
|
|
5f098bf14f | ||
|
|
a7c1bac157 | ||
|
|
474cd78e03 | ||
|
|
5bd851283c | ||
|
|
a6a4811230 | ||
|
|
b4d826b247 | ||
|
|
b37b71e4ec | ||
|
|
7158dfa838 | ||
|
|
1bfcb8c512 | ||
|
|
e2131027d5 | ||
|
|
e26290121c | ||
|
|
832a4f09fa | ||
|
|
56fed20b4e | ||
|
|
42ad013dd1 | ||
|
|
5b9a94c808 | ||
|
|
33294cbea0 | ||
|
|
6af917da86 | ||
|
|
fbe02e26a2 | ||
|
|
3f0f433faa | ||
|
|
c799568aa6 | ||
|
|
dcd09ea5aa | ||
|
|
acf47cc2e1 | ||
|
|
837c35d3ba | ||
|
|
52838f1cf5 | ||
|
|
ae7045b607 | ||
|
|
a3a428b0e5 | ||
|
|
9257179d2d | ||
|
|
3e1e0ff9ab | ||
|
|
f4a663db24 | ||
|
|
a91ae0ddd0 | ||
|
|
9fcd4f9a6b | ||
|
|
88ec7cbd31 | ||
|
|
4603a04c3b | ||
|
|
afa19bb887 | ||
|
|
9134e3d21f | ||
|
|
11f737c75f | ||
|
|
b0f12276c8 | ||
|
|
68b2e612ba | ||
|
|
3f9ab7adf3 | ||
|
|
c00cf4486e | ||
|
|
bac273fa23 | ||
|
|
2435ce388b | ||
|
|
a299f72036 | ||
|
|
6b9c423c32 | ||
|
|
d930c640ba | ||
|
|
a66e72528f | ||
|
|
0d792d5088 | ||
|
|
59b132ee62 | ||
|
|
a12c17bada | ||
|
|
d601f3aa33 | ||
|
|
271a39d176 | ||
|
|
9e8036186d | ||
|
|
5ad15b9823 | ||
|
|
70fd7e0346 | ||
|
|
5cb026697a | ||
|
|
6cf158fe36 | ||
|
|
d37ac5dd93 | ||
|
|
03eeb4737f | ||
|
|
2bb25ffef7 | ||
|
|
7c37f5dcce | ||
|
|
fc8b64f82b | ||
|
|
a3c9c0e0ac | ||
|
|
0a935a9bd3 | ||
|
|
321c3c6f18 | ||
|
|
088ab82e51 | ||
|
|
9c09a7a4e3 | ||
|
|
ec90cb9a54 | ||
|
|
b14ed827bb | ||
|
|
70c72dcdca | ||
|
|
cf05d1eeb2 | ||
|
|
f62e1ce178 | ||
|
|
6038bb8c9c | ||
|
|
357799e3c7 | ||
|
|
786bcbb9fd | ||
|
|
d78ab74a66 | ||
|
|
2705057a2a | ||
|
|
d54e3f3ac9 | ||
|
|
0e2bf75e05 | ||
|
|
6e9c1ddcaa | ||
|
|
e4ad028a5f | ||
|
|
34d3488a2c | ||
|
|
ef1d9f0cfc | ||
|
|
39dd51c282 | ||
|
|
13b3ade46b | ||
|
|
1640630d4d | ||
|
|
8a55588c21 | ||
|
|
d3526dbac9 | ||
|
|
8cfbf4c268 | ||
|
|
3c14f627fe | ||
|
|
3842460115 | ||
|
|
590c21013b | ||
|
|
e1bf532680 | ||
|
|
f55b51d47f | ||
|
|
42cab51487 | ||
|
|
1bcd168590 | ||
|
|
a1e8474193 | ||
|
|
c1daf236dc | ||
|
|
0df30b5087 | ||
|
|
7ccb694f79 | ||
|
|
54050b4825 | ||
|
|
4f07ef0291 | ||
|
|
e2f9c6b340 | ||
|
|
c65d2653d1 | ||
|
|
b879e23407 | ||
|
|
2ab53a937a | ||
|
|
31ca3b5482 | ||
|
|
86347fd849 | ||
|
|
90eca50f2b | ||
|
|
2f2794905e | ||
|
|
ca90b62324 | ||
|
|
ddb37f5b54 | ||
|
|
f82245a946 | ||
|
|
3b50b7523e | ||
|
|
ff843759db | ||
|
|
137e776118 | ||
|
|
aa81a19a04 | ||
|
|
e5e16f0dcc | ||
|
|
1ac35d7eeb | ||
|
|
eca977ca2d | ||
|
|
69d097f488 | ||
|
|
739a19f63c | ||
|
|
fdab516df6 | ||
|
|
6559dfec99 | ||
|
|
ba798c659a | ||
|
|
99c19a64c5 | ||
|
|
43f5856b2e | ||
|
|
c575bd727a | ||
|
|
af89b63ef0 | ||
|
|
c6a90a3a43 | ||
|
|
3af587dd70 | ||
|
|
e1f8c9b4a3 | ||
|
|
5da8fb507d | ||
|
|
87ea6162e8 | ||
|
|
427def01bf | ||
|
|
8e541f55d5 | ||
|
|
666e70cc66 | ||
|
|
7dafb9e4e2 | ||
|
|
71a205d8bb | ||
|
|
025bf91980 | ||
|
|
195bc67947 | ||
|
|
9b600ee651 | ||
|
|
a8f2ae8d56 | ||
|
|
61aeb6380d | ||
|
|
9d2d6304f9 | ||
|
|
0b2633add8 | ||
|
|
4cceb4a9dd | ||
|
|
9f758da034 | ||
|
|
f51a2d742d | ||
|
|
f4cd56a842 | ||
|
|
d9256870a3 | ||
|
|
64ac80246f | ||
|
|
1c765c4fec | ||
|
|
e2d2915dc6 | ||
|
|
55808d71cf | ||
|
|
0ce8327aec | ||
|
|
f48b86aff6 | ||
|
|
60f54ac1a2 | ||
|
|
1d9b382656 | ||
|
|
c4367ebf83 | ||
|
|
c6478c42f4 | ||
|
|
a56168a9f4 | ||
|
|
bd77c974d4 | ||
|
|
0ccd9bbb10 | ||
|
|
e91e24e915 | ||
|
|
06e8e94b81 | ||
|
|
2857257cdf | ||
|
|
eed2aebc9f | ||
|
|
b3c7040e85 | ||
|
|
27aac1a258 | ||
|
|
384f60408a | ||
|
|
bdffbd3052 | ||
|
|
9abd904bde | ||
|
|
48f1ecf7fc | ||
|
|
5ee15f3367 | ||
|
|
5598734467 | ||
|
|
622e04314a | ||
|
|
8751079128 | ||
|
|
5d76b86d0c | ||
|
|
f553c9964d | ||
|
|
62c652ca23 | ||
|
|
d88835bce4 | ||
|
|
41e92b4d70 | ||
|
|
a4e4fb6157 | ||
|
|
0b54f3568d | ||
|
|
0c22a58ddd | ||
|
|
07cbefa8a4 | ||
|
|
f5c771a36c | ||
|
|
c02fae6be8 | ||
|
|
494fcf53b5 | ||
|
|
c706027a21 | ||
|
|
d9ff90cb7a | ||
|
|
47922feefb | ||
|
|
d0fedcd243 | ||
|
|
669b6107f9 | ||
|
|
9f5f8e8cca | ||
|
|
b89aa58260 | ||
|
|
48f3e109d8 | ||
|
|
e6bf392f25 | ||
|
|
662c8308ad | ||
|
|
4a209279be | ||
|
|
cf97a3ebf7 | ||
|
|
852c53bd49 | ||
|
|
9f34021ba5 | ||
|
|
cdc3057520 | ||
|
|
6756b4b24b | ||
|
|
cab02417d8 | ||
|
|
3c56a30c98 | ||
|
|
5f46dcc097 | ||
|
|
7c47667d19 | ||
|
|
6693e07e10 | ||
|
|
0d6453086d | ||
|
|
e30a1e8795 | ||
|
|
5dabc44699 | ||
|
|
4447e49f0c | ||
|
|
ff4d45482d | ||
|
|
e7803b1d68 | ||
|
|
bb995ccb1a | ||
|
|
f97e28f939 | ||
|
|
3821af347d | ||
|
|
25c16b2c81 | ||
|
|
f546981377 | ||
|
|
7d35dba31f | ||
|
|
5ee332aba5 | ||
|
|
80a8c1f0a5 | ||
|
|
939300f84a | ||
|
|
cdd85770c5 | ||
|
|
4db32f4dff | ||
|
|
ab3b0631c0 | ||
|
|
bbcbc7c599 | ||
|
|
6f02c0453d | ||
|
|
4eb09c6662 | ||
|
|
b0af5c86e3 | ||
|
|
dc05b1b571 | ||
|
|
60f97b4807 | ||
|
|
0a46467bb8 | ||
|
|
20c4e8f003 | ||
|
|
8c02e70f79 | ||
|
|
08a292f3ff | ||
|
|
965cd0c9f8 | ||
|
|
fa020e88a5 | ||
|
|
f71e45b8e5 | ||
|
|
dfa1e8238c | ||
|
|
83d54888d8 | ||
|
|
5809ac3670 | ||
|
|
ba3dde63dd | ||
|
|
fcccb06b7c | ||
|
|
a1ceec81dc | ||
|
|
bfba840f98 | ||
|
|
7a1563915d | ||
|
|
ab7f9b9cec | ||
|
|
270ff15621 | ||
|
|
ef05004508 | ||
|
|
57d8d0d582 | ||
|
|
69a92cab71 | ||
|
|
37de16d3ce | ||
|
|
d3cc2de14d | ||
|
|
2a133511da | ||
|
|
7daef1d46d | ||
|
|
c1edf978d0 | ||
|
|
773b04eb46 | ||
|
|
6538716288 | ||
|
|
db60b243e5 | ||
|
|
1757657d84 | ||
|
|
915a8e58c4 | ||
|
|
dd60cd3970 | ||
|
|
c86e0adcf3 | ||
|
|
fb0edb9186 | ||
|
|
42297439a5 | ||
|
|
dcafde3a1c | ||
|
|
49b4c82480 | ||
|
|
0b8ea35893 | ||
|
|
c057ea791a | ||
|
|
a66a66490b | ||
|
|
4395ed71ff | ||
|
|
7731f31eb0 | ||
|
|
5496e4a1e5 | ||
|
|
62f35c5a56 | ||
|
|
9b23529483 | ||
|
|
c1ec1471d4 | ||
|
|
25e4470c7b | ||
|
|
a0f7896228 | ||
|
|
b1f2f9b250 | ||
|
|
53402c490b | ||
|
|
b8f2bfc238 | ||
|
|
e18e6f5fcd | ||
|
|
a3bd1b0b2e | ||
|
|
9cb5d9f95a | ||
|
|
322c62152d | ||
|
|
32de12c179 | ||
|
|
34a0ba0647 | ||
|
|
6743b05ab3 | ||
|
|
684152643b | ||
|
|
b00a13498c | ||
|
|
4d5d488a88 | ||
|
|
72f5d52852 | ||
|
|
124b95b5a4 | ||
|
|
d34580f230 | ||
|
|
eb1df3ecaf | ||
|
|
3c57c18293 | ||
|
|
1d5e13bc2b | ||
|
|
c8eac8eb17 | ||
|
|
92d702e050 | ||
|
|
3e2699dd4e | ||
|
|
d76f1ff61f | ||
|
|
a34419f14e | ||
|
|
33da00c46d | ||
|
|
c2c2094e36 | ||
|
|
e33706abf5 | ||
|
|
c101c360a2 | ||
|
|
1357e85f6d | ||
|
|
a0b7159ebe | ||
|
|
de59e7c233 | ||
|
|
0034c942a8 | ||
|
|
30bd1befd4 | ||
|
|
71e8e8987c | ||
|
|
e4f5be87e4 | ||
|
|
ae1728ff9d | ||
|
|
bd32edc758 | ||
|
|
f27e6827c7 | ||
|
|
b7e5c61ca4 | ||
|
|
6896c3a907 | ||
|
|
2b31c4c495 | ||
|
|
3dbe874a97 | ||
|
|
c77d05968c | ||
|
|
15c06809ed | ||
|
|
ff5ee8934b | ||
|
|
0b180f9472 | ||
|
|
062213a0b1 | ||
|
|
78b1874cc3 | ||
|
|
6afb72c47d | ||
|
|
d7fbdfb28e | ||
|
|
de11c1c953 | ||
|
|
af92f58b74 | ||
|
|
fdc8191914 | ||
|
|
4fb0044224 | ||
|
|
3f8281e3c0 | ||
|
|
eab6ef2a9b | ||
|
|
04ef2d887f | ||
|
|
21dcb803fe | ||
|
|
59b4a85412 | ||
|
|
b199af7242 | ||
|
|
8081e7215e | ||
|
|
32745d9f18 | ||
|
|
a013a92b55 | ||
|
|
0535bc8541 | ||
|
|
22b06275a4 | ||
|
|
507196e185 | ||
|
|
5f06ad9453 | ||
|
|
f3206e3eaa | ||
|
|
c9c6c6f5ac | ||
|
|
216b64136f | ||
|
|
36346d9e6e | ||
|
|
9f4472491d | ||
|
|
bf193f0918 | ||
|
|
ad9ce66bcb | ||
|
|
3736563397 | ||
|
|
17703cf0d4 | ||
|
|
99f89aa93f | ||
|
|
52aae5b4eb | ||
|
|
e9d56711d6 | ||
|
|
4d48c17e3f | ||
|
|
729a09d780 | ||
|
|
6d6ffeeae8 | ||
|
|
5df69f4d5e | ||
|
|
32481783ab | ||
|
|
0a0fe40e57 | ||
|
|
0dbf1cf5c7 | ||
|
|
2abfe53d42 | ||
|
|
2183d7c593 | ||
|
|
4856d70345 | ||
|
|
80c9a9c5f2 | ||
|
|
ebdfeda20a | ||
|
|
bd8e0db743 | ||
|
|
8608417cf5 | ||
|
|
ec57f36345 | ||
|
|
0afa8b872d | ||
|
|
87671e1ebb | ||
|
|
00d92ca50b | ||
|
|
c86a06bc52 | ||
|
|
b0da99c5dd | ||
|
|
676c58fd9a | ||
|
|
62a3925551 | ||
|
|
20d70ee317 | ||
|
|
960a361347 | ||
|
|
d4e1b2ec20 | ||
|
|
46f15f6755 | ||
|
|
b6ae195cb7 | ||
|
|
c22973f322 | ||
|
|
a7d00f119b | ||
|
|
a1b841a94d | ||
|
|
667bf4b036 | ||
|
|
1986e29f15 | ||
|
|
33fd941711 | ||
|
|
1813f500c1 | ||
|
|
020c83dfc9 | ||
|
|
6a52d26462 | ||
|
|
17566e8c7f | ||
|
|
856585d16e | ||
|
|
2e96e51102 | ||
|
|
31f2a0f954 | ||
|
|
050505d1d4 | ||
|
|
c975435c72 | ||
|
|
12e2ab46aa | ||
|
|
314a8148c3 | ||
|
|
3e4ce0354a | ||
|
|
5771bbef02 | ||
|
|
217c89f340 | ||
|
|
f3a95fbf7d | ||
|
|
afb3d9716c | ||
|
|
8cad973636 | ||
|
|
41060f4d72 | ||
|
|
fd48ccb46c | ||
|
|
624812ee3e | ||
|
|
43a06887b7 | ||
|
|
6bb50e5a3f | ||
|
|
6181be12c0 | ||
|
|
be9798262a | ||
|
|
d5d3efb549 | ||
|
|
a490423b3f | ||
|
|
7d7ce9549e | ||
|
|
eab8289c77 | ||
|
|
9e90373317 | ||
|
|
6e896b53ff | ||
|
|
46b855b838 | ||
|
|
f083fa2494 | ||
|
|
b4d46b5669 | ||
|
|
852c77088d | ||
|
|
4448cac071 | ||
|
|
8d47554a47 | ||
|
|
e3aceb3c4c | ||
|
|
1d2c6adde6 | ||
|
|
0232b5124c | ||
|
|
c3825e5cbc | ||
|
|
b34d70dae9 | ||
|
|
4090708b38 | ||
|
|
f6a1ad4185 | ||
|
|
4a006efd6e | ||
|
|
44df9e433d | ||
|
|
bd0ae44938 | ||
|
|
083a636247 | ||
|
|
1827e25bb9 | ||
|
|
6192204ba3 | ||
|
|
5f9a84ba40 | ||
|
|
9b06ce40b6 | ||
|
|
de4d0d8fbe | ||
|
|
eec6153ede | ||
|
|
5cd9eeb651 | ||
|
|
d28a327cf7 | ||
|
|
8333da6004 | ||
|
|
fa8f120dae | ||
|
|
905aead44e | ||
|
|
c58177e230 | ||
|
|
05f03ed192 | ||
|
|
f792ee7af5 | ||
|
|
cb3fb44da1 | ||
|
|
361237acca | ||
|
|
778799ed7b | ||
|
|
a09578be06 | ||
|
|
1545aab55a | ||
|
|
86cb0d912b | ||
|
|
6593ddd9e3 | ||
|
|
c87832d1e3 | ||
|
|
0245930c89 | ||
|
|
7d876e8137 | ||
|
|
a8255c218e | ||
|
|
f79e76dd30 | ||
|
|
f5e76ebab3 | ||
|
|
8f36a32da6 | ||
|
|
11fbd6d797 | ||
|
|
e2999f4bbb | ||
|
|
dce2f81a3b | ||
|
|
4d24791dd1 | ||
|
|
a8c286f820 | ||
|
|
29efdbd346 | ||
|
|
23c21c9ec3 | ||
|
|
95587dbc4e | ||
|
|
e670df8768 | ||
|
|
b1bb37aaee | ||
|
|
8b4b080abe | ||
|
|
035fac71b2 | ||
|
|
8ae7e25e02 | ||
|
|
7be3ca6a8e | ||
|
|
dd37d4c409 | ||
|
|
630e27623f | ||
|
|
87305d6f23 | ||
|
|
2d5d3db3f5 | ||
|
|
f25661fed3 | ||
|
|
e9af2773ac | ||
|
|
aff7a47966 | ||
|
|
68d190f6c9 | ||
|
|
6a9e8f8db6 | ||
|
|
c68a913b15 | ||
|
|
62c374ec72 | ||
|
|
0f23f7c0cd | ||
|
|
de360ef9c2 | ||
|
|
f2149b1d28 | ||
|
|
4a357f3685 | ||
|
|
399381ddab | ||
|
|
6016184417 | ||
|
|
f38b0ed2f8 | ||
|
|
479fbf499b | ||
|
|
cc54e2f21e | ||
|
|
0aa7c955c4 | ||
|
|
2125053663 | ||
|
|
0a0e30cf61 | ||
|
|
01e805b484 | ||
|
|
157da49e8c | ||
|
|
6187f57b41 | ||
|
|
f249198169 | ||
|
|
99bb5f9de5 | ||
|
|
f1ee7c2583 | ||
|
|
008c729f42 | ||
|
|
fa0cfa8ce1 | ||
|
|
c58e094ff7 | ||
|
|
0e7817184e | ||
|
|
e923ceb384 | ||
|
|
4aaebe16d0 | ||
|
|
de22d5a38a | ||
|
|
bd67e2fefe | ||
|
|
01296611cc | ||
|
|
d90a39593e | ||
|
|
f11615832d | ||
|
|
7731aad4f1 | ||
|
|
45f2900250 | ||
|
|
bb41d17047 | ||
|
|
fc980407c2 | ||
|
|
03cd9ae1d0 | ||
|
|
da3526a50b | ||
|
|
e1bca8337f | ||
|
|
89e99a9319 | ||
|
|
f7cb92e1ec | ||
|
|
90e66b78e6 | ||
|
|
3def8cc77b | ||
|
|
34878cf527 | ||
|
|
dacd6f2d65 | ||
|
|
5848581890 | ||
|
|
543d499f2e | ||
|
|
e25b8a57c0 | ||
|
|
dd1db5ef13 | ||
|
|
7cba27f732 | ||
|
|
4c752f6157 | ||
|
|
07b07b2208 | ||
|
|
d455725f74 | ||
|
|
da991ae504 | ||
|
|
c34b370ad5 | ||
|
|
3bc546f701 | ||
|
|
df992a70ea | ||
|
|
8afe4606fc | ||
|
|
e5cbff1b92 | ||
|
|
b1782a5541 | ||
|
|
9bcc185102 | ||
|
|
2cecef5511 | ||
|
|
508b4999af | ||
|
|
38db9c1750 | ||
|
|
5a23f0bf21 | ||
|
|
68b6c69723 | ||
|
|
99bc757497 | ||
|
|
638234e97c | ||
|
|
53f4ee80e2 | ||
|
|
faad14993b | ||
|
|
c82464ac83 | ||
|
|
12e5776bcf | ||
|
|
249b9b2b14 | ||
|
|
1dde92c74f | ||
|
|
c9fdf48c43 | ||
|
|
15a49f32c3 | ||
|
|
e6fab97249 | ||
|
|
09b5c80f88 | ||
|
|
a01638ae01 | ||
|
|
bda22f8328 | ||
|
|
f1759a000d | ||
|
|
8b7808d61d | ||
|
|
2c276de976 | ||
|
|
4f130a3f52 | ||
|
|
b78256c025 | ||
|
|
7e10f4cf9e | ||
|
|
e61541c4a9 | ||
|
|
487899b8b6 | ||
|
|
235596c306 | ||
|
|
3d5df1af3e | ||
|
|
8736fe2844 | ||
|
|
17d89995a4 | ||
|
|
17fba3bb43 | ||
|
|
5024d5a1c5 | ||
|
|
6d83f14045 | ||
|
|
9f54e37239 | ||
|
|
7c252a1d7c | ||
|
|
6134250100 | ||
|
|
4821fb094b | ||
|
|
364272f9ca | ||
|
|
c4db864982 | ||
|
|
4c7d911bf3 | ||
|
|
b9e436c4a5 | ||
|
|
65a1b21f91 | ||
|
|
96fbdba5f5 | ||
|
|
59e0bd8c6b | ||
|
|
4913a7eb83 | ||
|
|
4863317fab | ||
|
|
397d82493f | ||
|
|
c2d1c0d148 | ||
|
|
2f204507c2 | ||
|
|
9ac98eea0f | ||
|
|
f44aa5541f | ||
|
|
a2566076c8 | ||
|
|
475fcb4c21 | ||
|
|
0e34199386 | ||
|
|
43e4d02c35 | ||
|
|
f8e1f0ccf4 | ||
|
|
bcae174cb0 | ||
|
|
92d4e2e2f8 | ||
|
|
abbb294c4a | ||
|
|
16637d2b60 | ||
|
|
09001707be | ||
|
|
1c20ed878a | ||
|
|
994f440672 | ||
|
|
2b2c7572b2 | ||
|
|
9c209cfcc1 | ||
|
|
77d93454a2 | ||
|
|
0dd2b510ac | ||
|
|
1ed6b40d7c | ||
|
|
e3571d0444 | ||
|
|
253f5bebf9 | ||
|
|
07a808f6ad | ||
|
|
61c2025345 | ||
|
|
2f4bc11408 | ||
|
|
ff6f4c1e87 | ||
|
|
adccfb06fd | ||
|
|
9d42c2defb | ||
|
|
57549f3cc3 | ||
|
|
a97aa7238b | ||
|
|
fa09bd4748 | ||
|
|
61fe5ecf87 | ||
|
|
cd76603996 | ||
|
|
26de04f61f | ||
|
|
7efe727024 | ||
|
|
51f4d22ab0 | ||
|
|
b21228fedb | ||
|
|
de7affedf0 | ||
|
|
25eb746d45 | ||
|
|
c14e8a41ff | ||
|
|
a41f223cb9 | ||
|
|
f749a9564b | ||
|
|
ce8167f0dd | ||
|
|
fccedcc532 | ||
|
|
83fb9ddfb8 | ||
|
|
1506401dc1 | ||
|
|
a9572b720c | ||
|
|
00052dfa44 | ||
|
|
125e9717eb | ||
|
|
74f6aabb0e | ||
|
|
8bcd9697bc | ||
|
|
99eaf640f3 | ||
|
|
27783acb28 | ||
|
|
8d4ffaac96 | ||
|
|
c703088370 | ||
|
|
00da516923 | ||
|
|
d644f7f02b | ||
|
|
9858c98c78 | ||
|
|
f3e6c9f991 | ||
|
|
0217450f33 | ||
|
|
a2bd7ca7ca | ||
|
|
c26d2003c0 | ||
|
|
bae06a4681 | ||
|
|
366bb8e5e5 | ||
|
|
9f4ac2d8b2 | ||
|
|
d27693b1e5 | ||
|
|
8db5c30f8f | ||
|
|
ed96d394dd | ||
|
|
81afd8274a | ||
|
|
a6ceb5c758 | ||
|
|
60d3d5681e | ||
|
|
68d1ab5495 | ||
|
|
24595bdb57 | ||
|
|
27ebd2136a | ||
|
|
d4449d445e | ||
|
|
ce0ca0234b | ||
|
|
2c38f6bbb2 | ||
|
|
648c4d63c5 | ||
|
|
e6f6807110 | ||
|
|
d8e572165d | ||
|
|
ecef80d8c2 | ||
|
|
962d3c788a | ||
|
|
8d0950cbb4 | ||
|
|
a65e3cc7ed | ||
|
|
dab409f649 | ||
|
|
468718327d | ||
|
|
3dd1d66eb5 | ||
|
|
012379b56c | ||
|
|
f6901a6501 | ||
|
|
2d920ab392 | ||
|
|
f6bf087a27 | ||
|
|
eb93e9e7e8 | ||
|
|
0d5c197058 | ||
|
|
10a51943dc | ||
|
|
3f22d9f7b9 | ||
|
|
f44f172625 | ||
|
|
a250046807 | ||
|
|
c4b7b527d7 | ||
|
|
624ad08374 | ||
|
|
034ec13009 | ||
|
|
b90aefdce5 | ||
|
|
9d518791eb | ||
|
|
31458cd045 | ||
|
|
ba57f74fdf | ||
|
|
0612986875 | ||
|
|
496ce8ebf1 | ||
|
|
daaf8bb221 | ||
|
|
f34e7ce667 | ||
|
|
b0f40e2ac6 | ||
|
|
21dd0c95ef | ||
|
|
fba825626f | ||
|
|
f69081ec4e | ||
|
|
dca9138c1b | ||
|
|
90995f8e6c | ||
|
|
16a03cd9ea | ||
|
|
9d414b123b | ||
|
|
c83fd35b80 | ||
|
|
59a0369f8a | ||
|
|
dab6283658 | ||
|
|
48c1360554 | ||
|
|
8da3e98c83 | ||
|
|
3c32852fd9 | ||
|
|
367f9928ab | ||
|
|
70b15f804b | ||
|
|
40a7d93801 | ||
|
|
0d72a7d0a7 | ||
|
|
bbb3cd28b3 | ||
|
|
fa64d26843 | ||
|
|
cf257870e3 | ||
|
|
6d18778286 | ||
|
|
eb12637cc3 | ||
|
|
d873bb263a | ||
|
|
cb2aaef19e | ||
|
|
0e608d282b | ||
|
|
80a2c9c0e5 | ||
|
|
583652a276 | ||
|
|
7305512c72 | ||
|
|
84e2c0f4a4 | ||
|
|
5a347724fe | ||
|
|
1d059d0bb8 | ||
|
|
b720d2c74e | ||
|
|
d67a169626 | ||
|
|
0dbf236167 | ||
|
|
4c73bc0492 | ||
|
|
ce7c32da47 | ||
|
|
08109790e6 | ||
|
|
db1b22ae5e | ||
|
|
8ae5f5d570 | ||
|
|
ef09e3dda1 | ||
|
|
f0abac5047 | ||
|
|
ee040d7ca2 | ||
|
|
ee0cd975ec | ||
|
|
a7eaff414e | ||
|
|
ca9c451885 | ||
|
|
18f9936238 | ||
|
|
c6d793bcb7 | ||
|
|
8e34db7740 | ||
|
|
cf61b549b3 | ||
|
|
2ddacc43b5 | ||
|
|
43e9cc1d23 | ||
|
|
dda64f1291 | ||
|
|
4e59addb33 | ||
|
|
29ef71b33c | ||
|
|
7500c65647 | ||
|
|
fde7d45171 | ||
|
|
a7df497245 | ||
|
|
51d2959d3c | ||
|
|
f3f93f6dda | ||
|
|
964c49d016 | ||
|
|
cabe143e45 | ||
|
|
efa7dda32f | ||
|
|
a3458f7ee0 | ||
|
|
9f7f6c479c | ||
|
|
70699d59b8 | ||
|
|
58354128ff | ||
|
|
14781b1b33 | ||
|
|
f34cc18025 | ||
|
|
e60eaa48ad | ||
|
|
486cc6f799 | ||
|
|
6bb6d270b6 | ||
|
|
994a4a4d8f | ||
|
|
cbdbc4de0c | ||
|
|
5a83083009 | ||
|
|
903d2b419d | ||
|
|
07f5134dee | ||
|
|
9e07c51727 | ||
|
|
ac21386665 | ||
|
|
2209c9acb1 | ||
|
|
628cc5b3a0 | ||
|
|
02efe6d649 | ||
|
|
a631fcfafc | ||
|
|
3269de9cbf | ||
|
|
40374f6823 | ||
|
|
cedbbdc470 | ||
|
|
458eb8081f | ||
|
|
0cc2954725 | ||
|
|
26dff9a849 | ||
|
|
448aa7d022 | ||
|
|
b265526ce7 | ||
|
|
3a4ff87005 | ||
|
|
252b378e4b | ||
|
|
56a9951fee | ||
|
|
b35fe4d4f7 | ||
|
|
8db61343cf | ||
|
|
ee28a9dcd7 | ||
|
|
c6b36c3c0b | ||
|
|
61b819dda3 | ||
|
|
e2e17e21b8 | ||
|
|
43928c2810 | ||
|
|
9198bc3709 | ||
|
|
084089958a | ||
|
|
c40207a536 | ||
|
|
1f1fa2e643 | ||
|
|
6735bafec4 | ||
|
|
1ffb7a4f50 | ||
|
|
b450cec1af | ||
|
|
3be1851090 | ||
|
|
5d5ff900e5 | ||
|
|
2c9a893ed7 | ||
|
|
5fcd9571a4 | ||
|
|
78b1a2d8f9 | ||
|
|
d776277986 | ||
|
|
fc737d9e7e | ||
|
|
484749bdd7 | ||
|
|
6227d97e48 | ||
|
|
e05fa83aa6 | ||
|
|
848a3334df | ||
|
|
8b8334f2ed | ||
|
|
15eb8a3442 | ||
|
|
f4f58cf430 | ||
|
|
b2080926c5 | ||
|
|
dd44f904d9 | ||
|
|
0568929aa6 | ||
|
|
714c5cb1c8 | ||
|
|
68b0449fc7 | ||
|
|
b18bbcfb86 | ||
|
|
6ca8a95dcd | ||
|
|
f4c2af0618 | ||
|
|
a3cb98d2c0 | ||
|
|
3d43be95aa | ||
|
|
29e2a7fda9 | ||
|
|
54ecb3577a | ||
|
|
d72622208f | ||
|
|
f43e09c9f8 | ||
|
|
e86ca7ad1c | ||
|
|
f33a3de62f | ||
|
|
467c5469f1 | ||
|
|
85d5b4bb63 | ||
|
|
6369d2fc61 | ||
|
|
be541d9ec1 | ||
|
|
53c01989b9 | ||
|
|
a9f5ee4532 | ||
|
|
10907ab3b9 | ||
|
|
9041549d65 | ||
|
|
79371a9e5f | ||
|
|
41fc5d96bd | ||
|
|
c7c91b33f1 | ||
|
|
512d884b04 | ||
|
|
e8a7c440fd | ||
|
|
402ad21df0 | ||
|
|
c2cc346052 | ||
|
|
debdc13be7 | ||
|
|
74512caa56 | ||
|
|
2d8f241b21 | ||
|
|
32c99c6b80 | ||
|
|
1c94561b74 | ||
|
|
159abfcb3a | ||
|
|
4920756db1 | ||
|
|
6470297efd | ||
|
|
531deb1596 | ||
|
|
5785de265a | ||
|
|
3f86a152e6 | ||
|
|
d75e3fb6e5 | ||
|
|
de2906b353 | ||
|
|
456cb03faf | ||
|
|
f164e29116 | ||
|
|
22ebeff495 | ||
|
|
eaa84807d5 | ||
|
|
bc627a5160 | ||
|
|
a1e41d8c01 | ||
|
|
22dcd5d826 | ||
|
|
72180aff88 | ||
|
|
d009a36e23 | ||
|
|
dbfa00bac1 | ||
|
|
595aa08c6e | ||
|
|
f8b9f7a17d | ||
|
|
8f74627a4a | ||
|
|
bf62ff8a32 | ||
|
|
ed353ca490 | ||
|
|
7817fe2fda | ||
|
|
8e2b639b75 | ||
|
|
28867d5532 | ||
|
|
7e61e4ea45 | ||
|
|
3f2e96997e | ||
|
|
cab000cc97 | ||
|
|
5c949e86d8 | ||
|
|
58f7db98d6 | ||
|
|
78421c3a6b | ||
|
|
9b8e2ab154 | ||
|
|
852d67a828 | ||
|
|
11eb3107cf | ||
|
|
e84fa6b643 | ||
|
|
dd644e0910 | ||
|
|
b2ef62295f | ||
|
|
debd7e56da | ||
|
|
cefe892917 | ||
|
|
e5e064687d | ||
|
|
fc5f43f4b7 | ||
|
|
cdcef4942f | ||
|
|
d97f52dd08 | ||
|
|
531531993a | ||
|
|
f283dc17cd | ||
|
|
51cfb62b09 | ||
|
|
dc1279f075 | ||
|
|
f6fa297fcf | ||
|
|
1a02518fd4 | ||
|
|
a9d366a6ca | ||
|
|
34c595a213 | ||
|
|
9ba6364fad | ||
|
|
563c672b56 | ||
|
|
7ff25d5f73 | ||
|
|
2a8102f67c | ||
|
|
70ef2101ea | ||
|
|
bb5f444c6b | ||
|
|
30a776186b | ||
|
|
ad744e07da | ||
|
|
992b541464 | ||
|
|
7901f5ee7b | ||
|
|
3e0aad6b0c | ||
|
|
de2472b659 | ||
|
|
c70034d091 | ||
|
|
be5d9526dc | ||
|
|
7884feba5b | ||
|
|
ed3e943a6c | ||
|
|
92d81faa7a | ||
|
|
8777f3a424 | ||
|
|
1e522241ee | ||
|
|
fc70c0b5a0 | ||
|
|
e150f73a50 | ||
|
|
88887ce059 | ||
|
|
cada9fa30d | ||
|
|
f555984da3 | ||
|
|
dce7b8b832 | ||
|
|
6969049fce | ||
|
|
81b1cdb80f | ||
|
|
57d23d4ca6 | ||
|
|
de9d7dd33c | ||
|
|
b2537534df | ||
|
|
6d691107f2 | ||
|
|
dbe45ca6b3 | ||
|
|
b6b12b7271 | ||
|
|
e62a8fef0a | ||
|
|
ff2e21ddd3 | ||
|
|
2b99d2e1e9 | ||
|
|
a3674c42db | ||
|
|
00364fd11e | ||
|
|
a6b5599d29 | ||
|
|
61751657da | ||
|
|
40a496124c | ||
|
|
0c414cc90e | ||
|
|
ee2fd76691 | ||
|
|
805bc249d4 | ||
|
|
bdc48da5ba | ||
|
|
fe08e56d63 | ||
|
|
1a6464dc18 | ||
|
|
08957600c1 | ||
|
|
b551288b95 | ||
|
|
cfbab12cf6 | ||
|
|
d574602f2b | ||
|
|
dd50a9ff66 | ||
|
|
442ad89abe | ||
|
|
006f680e13 | ||
|
|
0f78e2e308 | ||
|
|
8f598bde9f | ||
|
|
9829b55dcb | ||
|
|
3195ddd044 | ||
|
|
4a519edc4d | ||
|
|
e9a941d76a | ||
|
|
31bbe2fef9 | ||
|
|
0ac1b07419 | ||
|
|
aeb5811ba1 | ||
|
|
998a98cbdd | ||
|
|
b8ede65b1c | ||
|
|
615640f3e0 | ||
|
|
28f817f9d9 | ||
|
|
3a1238ee6e | ||
|
|
556eadd088 | ||
|
|
4a17e3a74a | ||
|
|
68376144ab | ||
|
|
38680d3e6f | ||
|
|
e66c2066bf | ||
|
|
b9e41669c4 | ||
|
|
307ba72fa9 | ||
|
|
e7cbf5830e | ||
|
|
56ea6b861f | ||
|
|
d7a96d50a3 | ||
|
|
da0793dc53 | ||
|
|
eb2eb3b8fe | ||
|
|
9e0804123a | ||
|
|
9197d0b3dc | ||
|
|
8e34cba621 | ||
|
|
c44b76f747 | ||
|
|
b777e5a0ed | ||
|
|
caf7df7b0c | ||
|
|
3538395bed | ||
|
|
357ca6e9ca | ||
|
|
b7c2cffb13 | ||
|
|
e54050b60b | ||
|
|
78c5ec9bea | ||
|
|
4808637b2e | ||
|
|
90219ab8da | ||
|
|
3303bf960f | ||
|
|
2b633e5aa8 | ||
|
|
38dbebf7d5 | ||
|
|
ca0128b0dc | ||
|
|
859a7f1373 | ||
|
|
3562a7df32 | ||
|
|
cfd51c2627 | ||
|
|
f53fcb3bbc | ||
|
|
5d537571ae | ||
|
|
e84519646e | ||
|
|
818db4a42e | ||
|
|
760ebc8347 | ||
|
|
882e313516 | ||
|
|
1c047dd3cf | ||
|
|
8f349a0f09 | ||
|
|
8327e0d1fa | ||
|
|
bf3cdb855f | ||
|
|
f331090f16 | ||
|
|
8b1602130b | ||
|
|
39ad932274 | ||
|
|
6dcb0fafc0 | ||
|
|
208ab56d0e | ||
|
|
07f867ad6d | ||
|
|
50fde8f9bf | ||
|
|
ff6b2c4e32 | ||
|
|
6a468a25ad | ||
|
|
7c30323708 | ||
|
|
8ce16c67e8 | ||
|
|
7e1c1b8a7d | ||
|
|
f21320e667 | ||
|
|
dbc1de12e1 | ||
|
|
f01d7f1535 | ||
|
|
7b1e3cddcc | ||
|
|
886fb42c5e | ||
|
|
cbb587c043 | ||
|
|
e1bf52860e | ||
|
|
8e62c18e16 | ||
|
|
9047693b1f | ||
|
|
d6bcc68bae | ||
|
|
97b0383924 | ||
|
|
e40152acae | ||
|
|
a68650ca56 | ||
|
|
06c1c55b59 | ||
|
|
920911d833 | ||
|
|
80c1faed7a | ||
|
|
6a5334d1d2 | ||
|
|
66a4fc138e | ||
|
|
aa6cd65d37 | ||
|
|
9d459c294d | ||
|
|
b08e95f2ec | ||
|
|
bbb68ff7c4 | ||
|
|
90951b9802 | ||
|
|
0541554986 | ||
|
|
198567c10e | ||
|
|
097cf904f1 | ||
|
|
7cd3c5a8af | ||
|
|
2452bb56a7 | ||
|
|
2e6127811c | ||
|
|
e09547feab | ||
|
|
9e5f1eb2d7 | ||
|
|
90b94119f2 | ||
|
|
a2865f1586 | ||
|
|
d436a5d9b8 | ||
|
|
e0c238206c | ||
|
|
a7e1232fb4 | ||
|
|
6f0e9c7256 | ||
|
|
9891cf33f1 | ||
|
|
85464ece1b | ||
|
|
cd6f6b06cd | ||
|
|
39291859ec | ||
|
|
37cb3bdc77 | ||
|
|
0d59d95b5b | ||
|
|
e23f645442 | ||
|
|
e626ceb6f3 | ||
|
|
2e656a5d05 | ||
|
|
6777cffbd4 | ||
|
|
8bf0200220 | ||
|
|
45c64dcabf | ||
|
|
d00c7a5d65 | ||
|
|
4529a19763 | ||
|
|
d57d405e1b | ||
|
|
e5e71aca37 | ||
|
|
8bb341f696 | ||
|
|
cb6dfcbd0d | ||
|
|
6ca3aa2d4b | ||
|
|
1d956f2ffb | ||
|
|
52dce3bde7 | ||
|
|
078a4efdc5 | ||
|
|
3c5121e423 | ||
|
|
25bf469b57 | ||
|
|
549676bb1b | ||
|
|
4a2ae8a1f7 | ||
|
|
08c7858450 | ||
|
|
f67c8c6604 | ||
|
|
2bfa6bc650 | ||
|
|
c9230c75f8 | ||
|
|
bb90df86f3 | ||
|
|
76e9833b1c | ||
|
|
21ce573416 | ||
|
|
0be8adb641 | ||
|
|
42a70603a8 | ||
|
|
1fc8f8c3f8 | ||
|
|
a4508906c9 | ||
|
|
203c955ab1 | ||
|
|
1d01601abf | ||
|
|
5d15eacbd0 | ||
|
|
b9558bdaf7 | ||
|
|
a14c53ced8 | ||
|
|
f1dd692a10 | ||
|
|
709fbb3aea | ||
|
|
c77879a0aa | ||
|
|
41f05f4f4f | ||
|
|
7b7f02cbbb | ||
|
|
124d2ed057 | ||
|
|
eb194fa0f3 | ||
|
|
eb0f7ed1dc | ||
|
|
07519f677b | ||
|
|
8e4c7ca951 | ||
|
|
358e7b8f73 | ||
|
|
f29b2d7a5a | ||
|
|
ec858e0e2e | ||
|
|
e9a33706cf | ||
|
|
ffc37ede08 | ||
|
|
b7248a04ff | ||
|
|
782c121628 | ||
|
|
7c8932030a | ||
|
|
c91bd27a0d | ||
|
|
a5341f715d | ||
|
|
f2c41be269 | ||
|
|
67b4a181f1 | ||
|
|
b18778f96b | ||
|
|
869c523461 | ||
|
|
ac2452449e | ||
|
|
74be6c515d | ||
|
|
e87d403a87 | ||
|
|
3d5e600195 | ||
|
|
4e227c17b8 | ||
|
|
cdd298d34e | ||
|
|
f710a2904c | ||
|
|
0edf9c3e5b | ||
|
|
205a873549 | ||
|
|
2ea644076a | ||
|
|
0511e7ed10 | ||
|
|
4363ad2d1c | ||
|
|
1a30703b5a | ||
|
|
d9c69f0384 | ||
|
|
9a91da6e4f | ||
|
|
bc88334121 | ||
|
|
ec95880ac3 | ||
|
|
f2315059e8 | ||
|
|
91cb6b4d5f | ||
|
|
8a85201ae7 | ||
|
|
ef91590602 | ||
|
|
a114c5d4b6 | ||
|
|
03488dbd76 | ||
|
|
e961effb51 | ||
|
|
ab8dd5f7af | ||
|
|
bed939da0c | ||
|
|
8369a4d6b3 | ||
|
|
22e8613d08 | ||
|
|
12a64b10ee | ||
|
|
b43fed1d39 | ||
|
|
0528ab823d | ||
|
|
ba26b78674 | ||
|
|
d0f99b6adf | ||
|
|
382467b1c5 | ||
|
|
d94fde42b5 | ||
|
|
32ad2865bd | ||
|
|
0dc8ec6dcf | ||
|
|
4991108e18 | ||
|
|
3ee77d44ad | ||
|
|
f2777d6c3b | ||
|
|
a269a2d8af | ||
|
|
6d7e8422ac | ||
|
|
6482321617 | ||
|
|
9db8810c7f | ||
|
|
d9c68992f1 | ||
|
|
e20cdede10 | ||
|
|
156525003c | ||
|
|
3023c102b3 | ||
|
|
3b9873b91d | ||
|
|
2f28084d9c | ||
|
|
84adad7cfd | ||
|
|
cab1f355da | ||
|
|
523c3bb413 | ||
|
|
f1401a7693 | ||
|
|
f51601d77d | ||
|
|
74d315519b | ||
|
|
cb1afd5aab | ||
|
|
0031407fff | ||
|
|
b410a3123a | ||
|
|
4eed5f219f | ||
|
|
37b1d8bb84 | ||
|
|
11ee4ee9c4 | ||
|
|
09b616fe7f | ||
|
|
e9f49878e0 | ||
|
|
3a4a1e73ec | ||
|
|
7ccaab0a6d | ||
|
|
dd2fe64355 | ||
|
|
5353f48c17 | ||
|
|
6648247d0a | ||
|
|
8fbc473992 | ||
|
|
4a0d23d8a1 | ||
|
|
2d2c0c2393 | ||
|
|
d7f9122983 | ||
|
|
bbae1bd48a | ||
|
|
11a0c5a766 | ||
|
|
e33c22e61c | ||
|
|
473d9738de | ||
|
|
0e009632ff | ||
|
|
d870e0a7f8 | ||
|
|
72e3f18531 | ||
|
|
d3a91e951d | ||
|
|
2ab9331b1f | ||
|
|
f631dca7ab | ||
|
|
87571b6099 | ||
|
|
e3bbd2b4d2 | ||
|
|
55b56670ae | ||
|
|
c5eeb2c136 | ||
|
|
69ad058c39 | ||
|
|
5a4e908c2f | ||
|
|
ff74f89bbc | ||
|
|
54b2ab3d12 | ||
|
|
2cb0ccebfb | ||
|
|
e6816215f5 | ||
|
|
1aeae9f9d8 | ||
|
|
18ecd2efbd | ||
|
|
d2ff66e529 | ||
|
|
852cb95ca6 | ||
|
|
319964a0b9 | ||
|
|
e23c563dc1 | ||
|
|
32391d5069 | ||
|
|
c45031f24b | ||
|
|
d224282d73 | ||
|
|
8570011973 | ||
|
|
d5b26e80b5 | ||
|
|
7898e5691a | ||
|
|
f93474073a | ||
|
|
831acfa75c | ||
|
|
3465d8b944 | ||
|
|
b22c3d41d2 | ||
|
|
a2bf1d1870 | ||
|
|
a83755b6e3 | ||
|
|
753b3ba30b | ||
|
|
158dbc8235 | ||
|
|
fa0c77004b | ||
|
|
52dfafb7f5 | ||
|
|
d2ac90a484 | ||
|
|
1e18e4e052 | ||
|
|
09e3ecde8e | ||
|
|
3f970cef35 | ||
|
|
e060eeca87 | ||
|
|
b64344d306 | ||
|
|
380d95e7a5 | ||
|
|
74d61b95a3 | ||
|
|
151c767b35 | ||
|
|
2b4f41c4eb | ||
|
|
542ea0d46e | ||
|
|
ab3ac54566 | ||
|
|
8e1e8460a5 | ||
|
|
0b87a3e429 | ||
|
|
e361e60f93 | ||
|
|
676971bfa9 | ||
|
|
0df8656abd | ||
|
|
dbb51b6f40 | ||
|
|
87db0f1b7c | ||
|
|
c22b8b7e01 | ||
|
|
810843a592 | ||
|
|
d264f843ac | ||
|
|
b4f72adad4 | ||
|
|
95cfb4e62c | ||
|
|
18a4e27315 | ||
|
|
bebec472d3 | ||
|
|
885cd2945e | ||
|
|
10c3a8e6e6 | ||
|
|
9973ac5dbd | ||
|
|
43b2d916ae | ||
|
|
90bd2338bf | ||
|
|
7b770239cd | ||
|
|
4cf497314b | ||
|
|
3ce59b84ff | ||
|
|
8c893cd195 | ||
|
|
8ac4fd47e1 | ||
|
|
4aee4737a9 | ||
|
|
e86aa844c5 | ||
|
|
2528fb58fb | ||
|
|
b47b03a945 | ||
|
|
52cc47a3b4 | ||
|
|
1d29e1ef73 | ||
|
|
93310f3aba | ||
|
|
526bb3d006 | ||
|
|
faf41b2e2c | ||
|
|
1eca59ad15 | ||
|
|
e8741ef0da | ||
|
|
d8b2f0bfa2 | ||
|
|
9b31fa08f2 | ||
|
|
bffb6242df | ||
|
|
3671aa635f | ||
|
|
6f762782e8 | ||
|
|
e16fa85294 | ||
|
|
a8e22c635f | ||
|
|
da0b5f1673 | ||
|
|
8fdfa5dc77 | ||
|
|
25e93d9a27 | ||
|
|
28d7accdf5 | ||
|
|
c4d2d958f9 | ||
|
|
ef2d87e7f8 | ||
|
|
030d67afb5 | ||
|
|
4fea049c2d | ||
|
|
5252dc47bb | ||
|
|
ba8e95775d | ||
|
|
afde8777b1 | ||
|
|
2b5bf8c307 | ||
|
|
002bf6dab5 | ||
|
|
d9d1195552 | ||
|
|
4b01ff192b | ||
|
|
6d5cf07f3a | ||
|
|
24a7539bcc | ||
|
|
b11596c20d | ||
|
|
5baffa724f | ||
|
|
f60fa60d0d | ||
|
|
143a2f10ae | ||
|
|
bde2220783 | ||
|
|
0df4b867fa | ||
|
|
c1e61042a4 | ||
|
|
53ca285d5a | ||
|
|
7e48b287a0 | ||
|
|
4f383b8009 | ||
|
|
00295ba8ae | ||
|
|
751bb532e5 | ||
|
|
a2758c9ff1 | ||
|
|
fe2deea1b0 | ||
|
|
cbe2b1c903 | ||
|
|
d8fbd33ec4 | ||
|
|
8a4a9dd56e | ||
|
|
0ef3dfa1f3 | ||
|
|
4aa326cdec | ||
|
|
cc49b98e8f | ||
|
|
98d25c91b4 | ||
|
|
7fbc5e1567 | ||
|
|
9bafbe7c3b | ||
|
|
2cc27e2c3f | ||
|
|
aaf4a31edc | ||
|
|
12d62ac932 | ||
|
|
24ea8cdbdb | ||
|
|
1fe1ebd142 | ||
|
|
7201d3fb4e | ||
|
|
916dc87412 | ||
|
|
bc5cb84b7d | ||
|
|
163774c8fa | ||
|
|
34807b3b6a | ||
|
|
cabe11b8bb | ||
|
|
a716b82931 | ||
|
|
ee66c24e6e | ||
|
|
fafc0fa051 | ||
|
|
213d972132 | ||
|
|
1fba148e1a | ||
|
|
a297ef6f7a | ||
|
|
4741d6cb39 | ||
|
|
bafbacf33e | ||
|
|
1ba6073bcf | ||
|
|
b2b12a3b39 | ||
|
|
f9e6ab6990 | ||
|
|
dd585b8afb | ||
|
|
60912c1ab7 | ||
|
|
94b654ec8b | ||
|
|
3ed5dba101 | ||
|
|
a52023aa5c | ||
|
|
6d8324ded8 | ||
|
|
c8552100f8 | ||
|
|
80ecafdb0b | ||
|
|
c220f5cb84 | ||
|
|
a58c45afcb | ||
|
|
baf5f3cdd8 | ||
|
|
e31b548633 | ||
|
|
c1c0e54c21 | ||
|
|
d5313803dd | ||
|
|
f0ee4c3038 | ||
|
|
f2f6b83979 | ||
|
|
a30706db18 | ||
|
|
426232b477 | ||
|
|
cc3d064256 | ||
|
|
f7126a4620 | ||
|
|
ee43c5990a | ||
|
|
3a3815564d | ||
|
|
5cc1583360 | ||
|
|
145b92b4e0 | ||
|
|
8624205ac3 | ||
|
|
5e532f3fdb | ||
|
|
7354b17b08 | ||
|
|
6bd35eae88 | ||
|
|
14fbeb86ee | ||
|
|
5d5a1c8146 | ||
|
|
82cb2bdbde | ||
|
|
b82c3d8415 | ||
|
|
632f9e9157 | ||
|
|
e0d684a014 | ||
|
|
fd1bb7ddff | ||
|
|
7611d4583c | ||
|
|
63c0c63427 | ||
|
|
60b12ef154 | ||
|
|
16970cd980 | ||
|
|
58e7b7a014 | ||
|
|
7b654f5523 | ||
|
|
fcd1b669c2 | ||
|
|
24bd04fee2 | ||
|
|
68c716b7a9 | ||
|
|
6451e6bab8 | ||
|
|
894e464af8 | ||
|
|
bac89dcd18 | ||
|
|
5c68b48267 | ||
|
|
12625e82b0 | ||
|
|
d5049475cd | ||
|
|
e1edc72d4e | ||
|
|
8e5368e211 | ||
|
|
8063a81d4d | ||
|
|
564d265a91 | ||
|
|
fce36dc430 | ||
|
|
91dcdc706b | ||
|
|
e9195f2c1a | ||
|
|
ee1707bf0f | ||
|
|
c9ae74831e | ||
|
|
b81e637fcf | ||
|
|
4d4b9060c6 | ||
|
|
03ce92bfc1 | ||
|
|
b2de047014 | ||
|
|
2b6e1020aa | ||
|
|
208fcfbf53 | ||
|
|
4f282a205a | ||
|
|
8f5a05c6a9 | ||
|
|
015670c2ce | ||
|
|
ff8791e6fc | ||
|
|
e4056bc0c3 | ||
|
|
c7656c6fd8 | ||
|
|
a6bc330a97 | ||
|
|
e8267ff402 | ||
|
|
078b88cd16 | ||
|
|
1b228c0c35 | ||
|
|
6db5e213eb | ||
|
|
6011dac0ce | ||
|
|
edb8d2bfc5 | ||
|
|
e33d3a5d85 | ||
|
|
c894badf77 | ||
|
|
971e5ee6f9 | ||
|
|
6211f15994 | ||
|
|
eba55b0098 | ||
|
|
97f3bb4644 | ||
|
|
ac25454915 | ||
|
|
a59dbb66dc | ||
|
|
80cc6ce977 | ||
|
|
5e3263dec3 | ||
|
|
aab7c74474 | ||
|
|
a12453aa1d | ||
|
|
adfff835d1 | ||
|
|
4fdba5f39a | ||
|
|
5a89240a61 | ||
|
|
4b40259c93 | ||
|
|
79e58187f1 | ||
|
|
cca28c35a7 |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.env
|
||||
355
README.md
355
README.md
@@ -1,8 +1,353 @@
|
||||
### Docs
|
||||
# Blockchain Node Configurations
|
||||
|
||||
TODO:
|
||||
This directory contains Docker Compose configurations for various blockchain networks and node implementations.
|
||||
|
||||
auto-generate .jwtsecret for beacon-execution connection
|
||||
Fix wireguard chains network for pocket-frontends
|
||||
## Directory Structure
|
||||
|
||||
[Pocket Validator](README_POKT.md) </br>
|
||||
- Root level YAML files (e.g. `ethereum-mainnet.yml`, `arbitrum-one.yml`) - Main Docker Compose configurations for specific networks
|
||||
- Network-specific subdirectories - Contain additional configurations, genesis files, and client-specific implementations
|
||||
- Utility scripts (e.g. `show-networks.sh`, `logs.sh`) - Helper scripts for managing and monitoring nodes
|
||||
|
||||
## Node Types
|
||||
|
||||
This repository supports multiple node types for various blockchain networks:
|
||||
|
||||
- **Ethereum networks**: Mainnet, Sepolia, Holesky
|
||||
- **Layer 2 networks**: Arbitrum, Optimism, Base, Scroll, ZKSync Era, etc.
|
||||
- **Alternative L1 networks**: Avalanche, BSC, Fantom, Polygon, etc.
|
||||
|
||||
Most networks have both archive and pruned node configurations available, with support for different client implementations (Geth, Erigon, Reth, etc.).
|
||||
|
||||
## Quick Start
|
||||
|
||||
1. Create a `.env` file in this directory (see example below)
|
||||
2. Select which node configurations you want to run by adding them to the `COMPOSE_FILE` variable
|
||||
3. Run `docker compose up -d`
|
||||
4. Access your RPC endpoints at `https://yourdomain.tld/path` or `http://localhost:port`
|
||||
|
||||
### Example .env File
|
||||
|
||||
```bash
|
||||
# Domain settings
|
||||
DOMAIN=203-0-113-42.traefik.me # Use your PUBLIC IP with dots replaced by hyphens
|
||||
MAIL=your-email@example.com # Required for Let's Encrypt SSL
|
||||
WHITELIST=0.0.0.0/0 # IP whitelist for access (0.0.0.0/0 allows all)
|
||||
|
||||
# Public IP (required for many chains)
|
||||
IP=203.0.113.42 # Your PUBLIC IP (get it with: curl ipinfo.io/ip)
|
||||
|
||||
# Network settings
|
||||
CHAINS_SUBNET=192.168.0.0/26
|
||||
|
||||
# RPC provider endpoints (fallback/bootstrap nodes)
|
||||
ETHEREUM_MAINNET_EXECUTION_RPC=https://ethereum-rpc.publicnode.com
|
||||
ETHEREUM_MAINNET_EXECUTION_WS=wss://ethereum-rpc.publicnode.com
|
||||
ETHEREUM_MAINNET_BEACON_REST=https://ethereum-beacon-api.publicnode.com
|
||||
|
||||
ETHEREUM_SEPOLIA_EXECUTION_RPC=https://ethereum-sepolia-rpc.publicnode.com
|
||||
ETHEREUM_SEPOLIA_EXECUTION_WS=wss://ethereum-sepolia-rpc.publicnode.com
|
||||
ETHEREUM_SEPOLIA_BEACON_REST=https://ethereum-sepolia-beacon-api.publicnode.com
|
||||
|
||||
ARBITRUM_SEPOLIA_EXECUTION_RPC=https://arbitrum-sepolia-rpc.publicnode.com
|
||||
ARBITRUM_SEPOLIA_EXECUTION_WS=wss://arbitrum-sepolia-rpc.publicnode.com
|
||||
|
||||
# SSL settings (set NO_SSL=true to disable SSL)
|
||||
# NO_SSL=true
|
||||
|
||||
# Docker Compose configuration
|
||||
# Always include base.yml and rpc.yml, then add the networks you want
|
||||
COMPOSE_FILE=base.yml:rpc.yml:ethereum-mainnet.yml
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
To start nodes defined in your `.env` file:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
### Ports
|
||||
|
||||
The default ports are defined in the templates. They are randomised to avoid conflicts. Some configurations can require 7 ports to be opened for P2P discovery. Docker will override any UFW firewall rule that you define on the host. You should prevent the containers to try to reach out to other nodes on local IP ranges.
|
||||
|
||||
You can use the following service definition as a starting point. Replace the {{ chains_subnet }} with the subnet of your network. Default is 192.168.0.0/26.
|
||||
|
||||
```
|
||||
[Unit]
|
||||
Description= iptables firewall docker fix
|
||||
After=docker.service
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/local/bin/iptables-firewall.sh start
|
||||
RemainAfterExit=true
|
||||
StandardOutput=journal
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
PATH="/sbin:/usr/sbin:/bin:/usr/bin"
|
||||
|
||||
# Flush existing rules in the DOCKER-USER chain
|
||||
# this is potentially dangerous if other scripts write in that chain too but for now this should be the only one
|
||||
iptables -F DOCKER-USER
|
||||
|
||||
# block heise.de to test it's working. ./ping.sh heise.de will ping from a container in the subnet.
|
||||
iptables -I DOCKER-USER -s {{ chains_subnet }} -d 193.99.144.80/32 -j REJECT
|
||||
|
||||
# block local networks
|
||||
iptables -I DOCKER-USER -s {{ chains_subnet }} -d 192.168.0.0/16 -j REJECT
|
||||
iptables -I DOCKER-USER -s {{ chains_subnet }} -d 172.16.0.0/12 -j REJECT
|
||||
iptables -I DOCKER-USER -s {{ chains_subnet }} -d 10.0.0.0/8 -j REJECT
|
||||
|
||||
# accept the subnet so containers can reach each other.
|
||||
iptables -I DOCKER-USER -s {{ chains_subnet }} -d {{ chains_subnet }} -j ACCEPT
|
||||
|
||||
# I don't know why that is
|
||||
iptables -I DOCKER-USER -s {{ chains_subnet }} -d 10.13.13.0/24 -j ACCEPT
|
||||
```
|
||||
|
||||
|
||||
### Node Structure
|
||||
|
||||
In general Nodes can have one or all of the following components:
|
||||
|
||||
- a client (execution layer)
|
||||
- a node (for consensus)
|
||||
- a relay (for data availability access)
|
||||
- a database (external to the client mostly zk rollups, can have mulitple databases)
|
||||
- a proxy (to map http access and websockets to the same endpoint)
|
||||
|
||||
The simplest examples have only a client. The compose files define one entrypoint to query the node. usually it's the client otherwise it's the proxy. some clients have multiple entrypoints because they allow to query the consensus layer and the execution layer.
|
||||
|
||||
In the root folder of this repository you can find convenience yml files which are symlinks to specific compose files. The naming for the symlinks follow the principle {network_name}-{chain_name}.yml which leaves the client and bd type unspecified so they are defaults.
|
||||
|
||||
|
||||
### Syncing
|
||||
|
||||
The configurations aim to work standalone restoring state as much as possible from public sources. Using snapshots can help syncing faster. For some configurations it's not reasonably possible to maintain a version that can be bootstrapped from scratch using only the compose file.
|
||||
|
||||
|
||||
### Naming conventions
|
||||
|
||||
- default client is the default client for the network. Usually it's geth or op-geth.
|
||||
- default sync mode is pruned. If available clients are snap synced.
|
||||
- default node is op-node or prysm or whatever is the default for the network (e.g. beacon-kit for berachain, goat for goat, etc.)
|
||||
- default sync mode for nodes is pruned
|
||||
- default client for archive nodes is (op-)erigon or (op-)reth
|
||||
- default sync mode for (op-)reth and (op-)erigon is archive-trace.
|
||||
- default sync mode for erigon3 is pruned-trace.
|
||||
- default db is postgres
|
||||
- default proxy is nginx
|
||||
|
||||
#### Node features
|
||||
|
||||
The idea is to assume a default node configuration that is able to drive the execution client. In case the beacon node database has special features then the file name would include the features after a double hyphen. e.g. `ethereum-mainnet-geth-pruned-pebble-hash--lighthouse-pruned-blobs.yml` would be a node that has a pruned execution client and a pruned beacon node database with a complete blob history.
|
||||
|
||||
#### Container names
|
||||
|
||||
The docker containers are generally named using the base name and the component suffix. The base name is generally the network name and the chain name and the sync mode archive in case of archive nodes. The rationale is that it doesn't make sense to run 2 pruned nodes for the same chain on the same machine as well as 2 archive nodes for the same chain. The volumes that are created in /var/lib/docker/volumes are using the full name of the node including the sync mode and database features. This is to allow switching out the implementation of parts of the configuration and not causing conflicts, e.g. exchanging prysm for nimbus as node implementation but keep using the same exection client. Environment variables are also using the full name of the component that they are defined for.
|
||||
|
||||
|
||||
## Utility Scripts
|
||||
|
||||
This directory includes several useful scripts to help you manage and monitor your nodes:
|
||||
|
||||
### Status and Monitoring
|
||||
|
||||
- `show-status.sh [config-name]` - Check sync status of all configured nodes (or specific config if provided)
|
||||
- `show-db-size.sh` - Display disk usage of all Docker volumes, sorted by size
|
||||
- `show-networks.sh` - List all available network configurations
|
||||
- `show-running.sh` - List currently running containers
|
||||
- `sync-status.sh <config-name>` - Check synchronization status of a specific configuration
|
||||
- `logs.sh <config-name>` - View logs of all containers for a specific configuration
|
||||
- `latest.sh <config-name>` - Get the latest block number and hash of a local node
|
||||
- `ping.sh <container-name>` - Test connectivity to a container from inside the Docker network
|
||||
|
||||
### Node Management
|
||||
|
||||
- `stop.sh <config-name>` - Stop all containers for a specific configuration
|
||||
- `force-recreate.sh <config-name>` - Force recreate all containers for a specific configuration
|
||||
- `backup-node.sh <config-name> [webdav_url]` - Backup Docker volumes for a configuration (locally or to WebDAV)
|
||||
- `restore-volumes.sh <config-name> [http_url]` - Restore Docker volumes from backup (local or HTTP source)
|
||||
- `cleanup-backups.sh` - Clean up old backup files
|
||||
- `list-backups.sh` - List available backup files
|
||||
- `op-wheel.sh` - Tool for Optimism rollup maintenance, including rewinding to a specific block
|
||||
|
||||
|
||||
Note: `<config-name>` refers to the compose file name without the .yml extension (e.g., `ethereum-mainnet` for ethereum-mainnet.yml)
|
||||
|
||||
|
||||
#### Nuclear option to recreate a node
|
||||
|
||||
```bash
|
||||
./stop.sh <config-name> && ./rm.sh <config-name> && ./delete-volumes.sh <config-name> && ./force-recreate.sh <config-name> && ./logs.sh <config-name>
|
||||
```
|
||||
|
||||
#### Debugging tips
|
||||
|
||||
To get the configuration name for one of the commands use `./show-status.sh` which lists all the configrations and their status to copy paste for further inspection with e.g. `./catchup.sh <config-name>` or repeated use of `./latest.sh <config-name>` which will give you and idea if the sync is actually progressing and if it is on the canonical chain.
|
||||
Note: some configurations use staged sync which means that there is no measurable progress on the RPC in between bacthes of processed blocks. In any case `./logs.sh <config-name>` will give you insights into problems, potentially filtered by a LLM to spot common errors. It could be that clients are syncing slower than the chain progresses.
|
||||
|
||||
#### Further automation
|
||||
|
||||
You can chain `./success-if-almost-synced.sh <config-name> <age-of-last-block-in-seconds-to-be-considered-almost-synced>` with other scripts to create more complex automation, e.g. notify you once a node synced up to chainhead or adding the node to the dshackle configuration or taking a backup to clone the node to a different server.
|
||||
|
||||
#### OP Wheel Usage Example
|
||||
|
||||
Be aware that this is dangerous because you skip every check for your rollups op-geth execution client database to be consistent.
|
||||
|
||||
```bash
|
||||
# Rewind an Optimism rollup to a specific block
|
||||
./op-wheel.sh engine set-forkchoice --unsafe=0x111AC7F --safe=0x111AC7F --finalized=0x111AC7F \
|
||||
--engine=http://op-lisk-sepolia:8551/ --engine.open=http://op-lisk-sepolia:8545 \
|
||||
--engine.jwt-secret-path=/jwtsecret
|
||||
```
|
||||
|
||||
Nuclear option:
|
||||
```bash
|
||||
# Finalize the latest locally available block of an Optimism rollup
|
||||
./op-wheel-finalize-latest-block.sh <client_service_name> (<node_service_name>)
|
||||
```
|
||||
|
||||
Where `<client_service_name>` is the name of the client service in the compose file and `<node_service_name>` is the name of the node service in the compose file which defaults to `<client_service_name>-node`.
|
||||
|
||||
## SSL Certificates and IP Configuration
|
||||
|
||||
### Public IP Configuration
|
||||
|
||||
Many blockchain nodes require your public IP address to function properly:
|
||||
|
||||
1. Get your public IP address:
|
||||
```bash
|
||||
curl ipinfo.io/ip
|
||||
```
|
||||
|
||||
2. Add this IP to your `.env` file:
|
||||
```bash
|
||||
IP=203.0.113.42 # Your actual public IP
|
||||
```
|
||||
|
||||
3. This IP is used by several chains for P2P discovery and network communication
|
||||
|
||||
### SSL Certificates with Traefik
|
||||
|
||||
This system uses Traefik as a reverse proxy for SSL certificates:
|
||||
|
||||
1. By default, certificates are obtained from Let's Encrypt
|
||||
2. Use your **public** IP address with traefik.me by replacing dots with hyphens
|
||||
```
|
||||
# If your public IP is 203.0.113.42
|
||||
DOMAIN=203-0-113-42.traefik.me
|
||||
```
|
||||
3. Traefik.me automatically generates valid SSL certificates for this domain
|
||||
4. For production, use your own domain and set MAIL for Let's Encrypt notifications
|
||||
5. To disable SSL, set `NO_SSL=true` in your .env file
|
||||
|
||||
## Configuration
|
||||
|
||||
Each network configuration includes:
|
||||
|
||||
- Node client software (Geth, Erigon, etc.)
|
||||
- Synchronization type (archive or pruned)
|
||||
- Database backend and configuration
|
||||
- Network-specific parameters
|
||||
|
||||
## Accessing RPC Endpoints
|
||||
|
||||
Once your nodes are running, you can access the RPC endpoints at:
|
||||
|
||||
- HTTPS: `https://yourdomain.tld/ethereum` (or other network paths)
|
||||
- HTTP: `http://yourdomain.tld/ethereum` (or other network paths)
|
||||
- WebSocket: `wss://yourdomain.tld/ethereum` (same URL as HTTP/HTTPS)
|
||||
|
||||
All services use standard ports (80 for HTTP, 443 for HTTPS), so no port specification is required in the URL.
|
||||
|
||||
## Resource Requirements
|
||||
|
||||
Different node types have different hardware requirements:
|
||||
|
||||
- Pruned Ethereum node: ~500GB disk, 8GB RAM
|
||||
- Archive Ethereum node: ~2TB disk, 16GB RAM
|
||||
- L2 nodes typically require less resources than L1 nodes
|
||||
- Consider using SSD or NVMe storage for better performance
|
||||
|
||||
## DRPC Integration
|
||||
|
||||
This system includes support for DRPC (Decentralized RPC) integration, allowing you to monetize your RPC nodes by selling excess capacity:
|
||||
|
||||
### Setting Up DRPC
|
||||
|
||||
1. Add `drpc.yml` to your `COMPOSE_FILE` variable in `.env`
|
||||
2. Configure the following variables in your `.env` file:
|
||||
```
|
||||
GW_DOMAIN=your-gateway-domain.com
|
||||
GW_REDIS_RAM=2gb # Memory allocation for Redis
|
||||
DRPC_VERSION=0.64.16 # Or latest version
|
||||
```
|
||||
3. Generate the upstream configurations for dshackle:
|
||||
```bash
|
||||
# Using domain URLs (default)
|
||||
./upstreams.sh
|
||||
|
||||
```
|
||||
|
||||
The `upstreams.sh` script automatically detects all running nodes on your machine and generates the appropriate configuration for the dshackle load balancer. This allows you to connect your nodes to drpc.org and sell RPC capacity.
|
||||
|
||||
For more information about DRPC, visit [drpc.org](https://drpc.org/).
|
||||
|
||||
## Supported Networks
|
||||
|
||||
This repository supports a comprehensive range of blockchain networks:
|
||||
|
||||
### Layer 1 Networks
|
||||
- **Major Networks**: Ethereum (Mainnet, Sepolia, Holesky), BSC, Polygon, Avalanche, Gnosis
|
||||
- **Alternative L1s**: Fantom, Core, Berachain, Ronin, Viction, Fuse, Tron, ThunderCore
|
||||
- **Emerging L1s**: Goat, AlephZero, Haqq, Taiko, Rootstock
|
||||
|
||||
### Layer 2 Networks
|
||||
- **OP Stack**: Optimism, Base, Zora, Mode, Blast, Fraxtal, Bob, Boba, Worldchain, Metal, Ink, Lisk, SNAX, Celo
|
||||
- **Arbitrum Ecosystem**: Arbitrum One, Arbitrum Nova, Everclear, Playblock, Real, Connext, OpenCampusCodex
|
||||
- **Other L2s**: Linea, Scroll, zkSync Era, Metis, Moonbeam
|
||||
|
||||
Most networks support multiple node implementations (Geth, Erigon, Reth) and environments (mainnet, testnet).
|
||||
|
||||
## Backup and Restore System
|
||||
|
||||
This repository includes a comprehensive backup and restore system for Docker volumes:
|
||||
|
||||
### Local Backups
|
||||
|
||||
- `backup-node.sh <config-name>` - Create a backup of all volumes for a configuration to the `/backup` directory
|
||||
- `restore-volumes.sh <config-name>` - Restore volumes from the latest backup in the `/backup` directory
|
||||
|
||||
### Remote Backups
|
||||
|
||||
To serve backups via HTTP and WebDAV:
|
||||
|
||||
1. Add `backup-http.yml` to your `COMPOSE_FILE` variable in `.env`
|
||||
2. This exposes:
|
||||
- HTTP access to backups at `https://yourdomain.tld/backup`
|
||||
- WebDAV access at `https://yourdomain.tld/dav`
|
||||
|
||||
### Cross-Server Backup and Restore
|
||||
|
||||
For multi-server setups:
|
||||
|
||||
1. On server A: Include `backup-http.yml` in `COMPOSE_FILE` to serve backups
|
||||
2. On server B: Use restore from server A's backups:
|
||||
```bash
|
||||
# Restore directly from server A
|
||||
./restore-volumes.sh ethereum-mainnet https://serverA.domain.tld/backup/
|
||||
```
|
||||
|
||||
3. Create backups on server B and send to server A via WebDAV:
|
||||
```bash
|
||||
# Backup to server A's WebDAV
|
||||
./backup-node.sh ethereum-mainnet https://serverA.domain.tld/dav
|
||||
```
|
||||
|
||||
This allows for efficient volume transfers between servers without needing SSH access.
|
||||
@@ -1,76 +0,0 @@
|
||||
Tested on Ubuntu 20.04.3 LTS
|
||||
|
||||
#### Prerequisites:
|
||||
docker <br />
|
||||
docker-compose <br />
|
||||
DNS A-Record pointing to your server <br />
|
||||
Wireguard-Server: Paste wireguard wg0.conf from wireguard-server to wireguard/config/wg0.conf <br />
|
||||
.env File inside POKT-DOKT with secrets <br />
|
||||
|
||||
#### Usage
|
||||
|
||||
```
|
||||
git clone https://github.com/cventastic/POKT_DOKT.git
|
||||
cd POKT_DOKT
|
||||
git reset --hard origin/main && git pull && ./util/prepare.sh
|
||||
```
|
||||
|
||||
# EXAMPLES
|
||||
|
||||
Start POKT in relay mode:
|
||||
```
|
||||
command: pocket start --simulateRelay
|
||||
```
|
||||
If you want to activly relay. You also have to Stake! <br />
|
||||
Testnet-Faucet: (https://faucet.pokt.network/) <br />
|
||||
How to stake: https://docs.pokt.network/home/paths/node-runner#stake-the-validator <br />
|
||||
|
||||
POKT QUERY for simulate-relay mode:
|
||||
```
|
||||
Pockt-Testnet:
|
||||
curl -X POST --data '{"relay_network_id":"0002","payload":{"data":"{}","method":"POST","path":"v1/query/height","headers":{}}}' http://localhost:8082/v1/client/sim
|
||||
Pocket-Mainnet:
|
||||
curl -X POST --data '{"relay_network_id":"0001","payload":{"data":"{}","method":"POST","path":"v1/query/height","headers":{}}}' http://localhost:8081/v1/client/sim
|
||||
```
|
||||
|
||||
GETH QUERY (from whitelisted servers e.g pokt-test) for simulate-relay mode:
|
||||
```
|
||||
Pocket-Testnet:
|
||||
curl -X POST --data '{"relay_network_id":"0020","payload":{"data":"{\"jsonrpc\":\"2.0\",\"method\":\"eth_getBalance\",\"params\":[\"0x1a8c807a6E4F624fCab01FEBf76a541d31B8345A\", \"latest\"],\"id\":1}","method":"POST","path":"","headers":{}}}' http://127.0.0.1:8082/v1/client/sim
|
||||
curl -v -X POST --data '{"relay_network_id":"0020","payload":{"data":"{\"jsonrpc\":\"2.0\",\"method\":\"eth_syncing\",\"params\":[],\"id\":1}","method":"POST","path":"","headers":{}}}' http://127.0.0.1:8082/v1/client/sim
|
||||
Pocket-Mainnet:
|
||||
curl -X POST --data '{"relay_network_id":"0021","payload":{"data":"{\"jsonrpc\":\"2.0\",\"method\":\"eth_getBalance\",\"params\":[\"0x1a8c807a6E4F624fCab01FEBf76a541d31B8345A\", \"latest\"],\"id\":1}","method":"POST","path":"","headers":{}}}' http://127.0.0.1:8081/v1/client/sim
|
||||
curl -v -X POST --data '{"relay_network_id":"0021","payload":{"data":"{\"jsonrpc\":\"2.0\",\"method\":\"eth_syncing\",\"params\":[],\"id\":1}","method":"POST","path":"","headers":{}}}' http://127.0.0.1:8081/v1/client/sim
|
||||
```
|
||||
|
||||
STANDARD GETH QUERY (from whitelistet server)
|
||||
```
|
||||
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' https://$RPCNODE/goerli
|
||||
```
|
||||
|
||||
# SSL
|
||||
I you want to test SSL comment in:
|
||||
```
|
||||
# - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
|
||||
```
|
||||
Check if there is a file here /traefic/letsencrypt/acme.json if yes, you have to delete it. <br />
|
||||
Otherwise traefik will not issue the certificate for an existing domain. <br />
|
||||
|
||||
#### TODO !!!!
|
||||
Bootstrapping from Snapshots <br />
|
||||
Link-Timezone into containers.
|
||||
|
||||
AVALANCHE:
|
||||
- Archive?
|
||||
- Monitoring https://docs.avax.network/build/tools/dashboards/README
|
||||
|
||||
### Notes
|
||||
#### Monitoring
|
||||
Telegram get group ids the bot is in:
|
||||
```curl -X POST https://api.telegram.org/bot$TELEGRAM_API_TOKEN/getUpdates```
|
||||
There has to be an event in the channel for the bot to get updates
|
||||
|
||||
### neue NODE
|
||||
.env
|
||||
rpc-timeout
|
||||
whitelist
|
||||
1
abstract-mainnet.yml
Symbolic link
1
abstract-mainnet.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
abstract/external-node/abstract-mainnet-external-node-pruned.yml
|
||||
1
abstract-testnet.yml
Symbolic link
1
abstract-testnet.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
abstract/external-node/abstract-testnet-external-node-pruned.yml
|
||||
@@ -0,0 +1,161 @@
|
||||
---
|
||||
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:abstract/external-node/abstract-mainnet-external-node-archive.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/abstract-mainnet-archive \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
abstract-mainnet-archive:
|
||||
image: ${ABSTRACT_EXTERNAL_NODE_IMAGE:-matterlabs/external-node}:${ABSTRACT_MAINNET_EXTERNAL_NODE_VERSION:-v29.1.2}
|
||||
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:
|
||||
- 12612:12612
|
||||
- 12612:12612/udp
|
||||
expose:
|
||||
- 8545
|
||||
- 8546
|
||||
environment:
|
||||
- DATABASE_POOL_SIZE=50
|
||||
- DATABASE_URL=postgres://postgres:notsecurepassword@abstract-mainnet-archive-db:5430/zksync_local_ext_node
|
||||
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
|
||||
- EN_ETH_CLIENT_URL=${ETHEREUM_MAINNET_EXECUTION_RPC}
|
||||
- EN_HEALTHCHECK_PORT=3081
|
||||
- EN_HTTP_PORT=8545
|
||||
- EN_L1_CHAIN_ID=1
|
||||
- EN_L2_CHAIN_ID=2741
|
||||
- EN_MAIN_NODE_URL=https://api.mainnet.abs.xyz
|
||||
- EN_MAX_RESPONSE_BODY_SIZE_MB=25
|
||||
- EN_MAX_RESPONSE_BODY_SIZE_OVERRIDES_MB=eth_getLogs=100,eth_getBlockReceipts=None
|
||||
- EN_MERKLE_TREE_PATH=./db/ext-node/lightweight
|
||||
- EN_PROMETHEUS_PORT=3322
|
||||
- EN_PRUNING_ENABLED=false
|
||||
- EN_REQ_ENTITIES_LIMIT=100000
|
||||
- EN_SNAPSHOTS_OBJECT_STORE_BUCKET_BASE_URL=raas-abstract-mainnet-external-node-snapshots
|
||||
- EN_SNAPSHOTS_OBJECT_STORE_MODE=GCSAnonymousReadOnly
|
||||
- EN_SNAPSHOTS_RECOVERY_ENABLED=true
|
||||
- EN_STATE_CACHE_PATH=./db/ext-node/state_keeper
|
||||
- EN_WS_PORT=8546
|
||||
- RUST_LOG=warn,zksync=info,zksync_core::metadata_calculator=debug,zksync_state=info,zksync_utils=info,zksync_web3_decl::client=error
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${ABSTRACT_MAINNET_EXTERNAL_NODE_ARCHIVE_DATA:-abstract-mainnet-external-node-archive}:/db
|
||||
- /slowdisk:/slowdisk
|
||||
logging: *logging-defaults
|
||||
labels:
|
||||
- prometheus-scrape.enabled=false
|
||||
- traefik.enable=true
|
||||
- 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=8545
|
||||
- ${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.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/`)}
|
||||
- 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:
|
||||
image: postgres:14
|
||||
expose:
|
||||
- 5430
|
||||
environment:
|
||||
- PGPORT=5430
|
||||
- POSTGRES_PASSWORD=notsecurepassword
|
||||
command: >
|
||||
postgres
|
||||
-c max_connections=200
|
||||
-c log_error_verbosity=terse
|
||||
-c shared_buffers=2GB
|
||||
-c effective_cache_size=4GB
|
||||
-c maintenance_work_mem=1GB
|
||||
-c checkpoint_completion_target=0.9
|
||||
-c random_page_cost=1.1
|
||||
-c effective_io_concurrency=200
|
||||
-c min_wal_size=4GB
|
||||
-c max_wal_size=16GB
|
||||
-c max_worker_processes=16
|
||||
-c checkpoint_timeout=1800
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${ABSTRACT_MAINNET_EXTERNAL_NODE_ARCHIVE__DB_DATA:-abstract-mainnet-external-node-archive_db}:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
interval: 1s
|
||||
timeout: 3s
|
||||
test: [CMD-SHELL, psql -U postgres -c "select exists (select * from pg_stat_activity where datname = '' and application_name = 'pg_restore')" | grep -e ".f$$"]
|
||||
logging: *logging-defaults
|
||||
|
||||
volumes:
|
||||
abstract-mainnet-external-node-archive:
|
||||
abstract-mainnet-external-node-archive_db:
|
||||
|
||||
x-upstreams:
|
||||
- id: $${ID}
|
||||
labels:
|
||||
provider: $${PROVIDER}
|
||||
connection:
|
||||
generic:
|
||||
rpc:
|
||||
url: $${RPC_URL}
|
||||
ws:
|
||||
frameSize: 20Mb
|
||||
msgSize: 50Mb
|
||||
url: $${WS_URL}
|
||||
chain: abstract
|
||||
method-groups:
|
||||
enabled:
|
||||
- debug
|
||||
- filter
|
||||
methods:
|
||||
disabled:
|
||||
enabled:
|
||||
- name: txpool_content # TODO: should be disabled for rollup nodes
|
||||
...
|
||||
161
abstract/external-node/abstract-mainnet-external-node-pruned.yml
Normal file
161
abstract/external-node/abstract-mainnet-external-node-pruned.yml
Normal file
@@ -0,0 +1,161 @@
|
||||
---
|
||||
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:abstract/external-node/abstract-mainnet-external-node-pruned.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/abstract-mainnet \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
abstract-mainnet:
|
||||
image: ${ABSTRACT_EXTERNAL_NODE_IMAGE:-matterlabs/external-node}:${ABSTRACT_MAINNET_EXTERNAL_NODE_VERSION:-v29.1.2}
|
||||
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:
|
||||
- 14370:14370
|
||||
- 14370:14370/udp
|
||||
expose:
|
||||
- 8545
|
||||
- 8546
|
||||
environment:
|
||||
- DATABASE_POOL_SIZE=50
|
||||
- DATABASE_URL=postgres://postgres:notsecurepassword@abstract-mainnet-db:5430/zksync_local_ext_node
|
||||
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
|
||||
- EN_ETH_CLIENT_URL=${ETHEREUM_MAINNET_EXECUTION_RPC}
|
||||
- EN_HEALTHCHECK_PORT=3081
|
||||
- EN_HTTP_PORT=8545
|
||||
- EN_L1_CHAIN_ID=1
|
||||
- EN_L2_CHAIN_ID=2741
|
||||
- EN_MAIN_NODE_URL=https://api.mainnet.abs.xyz
|
||||
- EN_MAX_RESPONSE_BODY_SIZE_MB=25
|
||||
- EN_MAX_RESPONSE_BODY_SIZE_OVERRIDES_MB=eth_getLogs=100,eth_getBlockReceipts=None
|
||||
- EN_MERKLE_TREE_PATH=./db/ext-node/lightweight
|
||||
- EN_PROMETHEUS_PORT=3322
|
||||
- EN_PRUNING_ENABLED=true
|
||||
- EN_REQ_ENTITIES_LIMIT=100000
|
||||
- EN_SNAPSHOTS_OBJECT_STORE_BUCKET_BASE_URL=raas-abstract-mainnet-external-node-snapshots
|
||||
- EN_SNAPSHOTS_OBJECT_STORE_MODE=GCSAnonymousReadOnly
|
||||
- EN_SNAPSHOTS_RECOVERY_ENABLED=true
|
||||
- EN_STATE_CACHE_PATH=./db/ext-node/state_keeper
|
||||
- EN_WS_PORT=8546
|
||||
- RUST_LOG=warn,zksync=info,zksync_core::metadata_calculator=debug,zksync_state=info,zksync_utils=info,zksync_web3_decl::client=error
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${ABSTRACT_MAINNET_EXTERNAL_NODE_PRUNED_DATA:-abstract-mainnet-external-node-pruned}:/db
|
||||
- /slowdisk:/slowdisk
|
||||
logging: *logging-defaults
|
||||
labels:
|
||||
- prometheus-scrape.enabled=false
|
||||
- traefik.enable=true
|
||||
- traefik.http.middlewares.abstract-mainnet-external-node-pruned-stripprefix.stripprefix.prefixes=/abstract-mainnet
|
||||
- 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.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=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.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:
|
||||
image: postgres:14
|
||||
expose:
|
||||
- 5430
|
||||
environment:
|
||||
- PGPORT=5430
|
||||
- POSTGRES_PASSWORD=notsecurepassword
|
||||
command: >
|
||||
postgres
|
||||
-c max_connections=200
|
||||
-c log_error_verbosity=terse
|
||||
-c shared_buffers=2GB
|
||||
-c effective_cache_size=4GB
|
||||
-c maintenance_work_mem=1GB
|
||||
-c checkpoint_completion_target=0.9
|
||||
-c random_page_cost=1.1
|
||||
-c effective_io_concurrency=200
|
||||
-c min_wal_size=4GB
|
||||
-c max_wal_size=16GB
|
||||
-c max_worker_processes=16
|
||||
-c checkpoint_timeout=1800
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${ABSTRACT_MAINNET_EXTERNAL_NODE_PRUNED__DB_DATA:-abstract-mainnet-external-node-pruned_db}:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
interval: 1s
|
||||
timeout: 3s
|
||||
test: [CMD-SHELL, psql -U postgres -c "select exists (select * from pg_stat_activity where datname = '' and application_name = 'pg_restore')" | grep -e ".f$$"]
|
||||
logging: *logging-defaults
|
||||
|
||||
volumes:
|
||||
abstract-mainnet-external-node-pruned:
|
||||
abstract-mainnet-external-node-pruned_db:
|
||||
|
||||
x-upstreams:
|
||||
- id: $${ID}
|
||||
labels:
|
||||
provider: $${PROVIDER}
|
||||
connection:
|
||||
generic:
|
||||
rpc:
|
||||
url: $${RPC_URL}
|
||||
ws:
|
||||
frameSize: 20Mb
|
||||
msgSize: 50Mb
|
||||
url: $${WS_URL}
|
||||
chain: abstract
|
||||
method-groups:
|
||||
enabled:
|
||||
- debug
|
||||
- filter
|
||||
methods:
|
||||
disabled:
|
||||
enabled:
|
||||
- name: txpool_content # TODO: should be disabled for rollup nodes
|
||||
...
|
||||
@@ -0,0 +1,161 @@
|
||||
---
|
||||
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:abstract/external-node/abstract-testnet-external-node-archive.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/abstract-testnet-archive \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
abstract-testnet-archive:
|
||||
image: ${ABSTRACT_EXTERNAL_NODE_IMAGE:-matterlabs/external-node}:${ABSTRACT_TESTNET_EXTERNAL_NODE_VERSION:-v29.1.2}
|
||||
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:
|
||||
- 14028:14028
|
||||
- 14028:14028/udp
|
||||
expose:
|
||||
- 8545
|
||||
- 8546
|
||||
environment:
|
||||
- DATABASE_POOL_SIZE=50
|
||||
- DATABASE_URL=postgres://postgres:notsecurepassword@abstract-testnet-archive-db:5430/zksync_local_ext_node
|
||||
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
|
||||
- EN_ETH_CLIENT_URL=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
|
||||
- EN_HEALTHCHECK_PORT=3081
|
||||
- EN_HTTP_PORT=8545
|
||||
- EN_L1_CHAIN_ID=11155111
|
||||
- EN_L2_CHAIN_ID=11124
|
||||
- EN_MAIN_NODE_URL=https://api.testnet.abs.xyz
|
||||
- EN_MAX_RESPONSE_BODY_SIZE_MB=25
|
||||
- EN_MAX_RESPONSE_BODY_SIZE_OVERRIDES_MB=eth_getLogs=100,eth_getBlockReceipts=None
|
||||
- EN_MERKLE_TREE_PATH=./db/ext-node/lightweight
|
||||
- EN_PROMETHEUS_PORT=3322
|
||||
- EN_PRUNING_ENABLED=false
|
||||
- EN_REQ_ENTITIES_LIMIT=100000
|
||||
- EN_SNAPSHOTS_OBJECT_STORE_BUCKET_BASE_URL=abstract-testnet-external-node-snapshots
|
||||
- EN_SNAPSHOTS_OBJECT_STORE_MODE=GCSAnonymousReadOnly
|
||||
- EN_SNAPSHOTS_RECOVERY_ENABLED=true
|
||||
- EN_STATE_CACHE_PATH=./db/ext-node/state_keeper
|
||||
- EN_WS_PORT=8546
|
||||
- RUST_LOG=warn,zksync=info,zksync_core::metadata_calculator=debug,zksync_state=info,zksync_utils=info,zksync_web3_decl::client=error
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${ABSTRACT_TESTNET_EXTERNAL_NODE_ARCHIVE_DATA:-abstract-testnet-external-node-archive}:/db
|
||||
- /slowdisk:/slowdisk
|
||||
logging: *logging-defaults
|
||||
labels:
|
||||
- prometheus-scrape.enabled=false
|
||||
- traefik.enable=true
|
||||
- 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=8545
|
||||
- ${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.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/`)}
|
||||
- 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:
|
||||
image: postgres:14
|
||||
expose:
|
||||
- 5430
|
||||
environment:
|
||||
- PGPORT=5430
|
||||
- POSTGRES_PASSWORD=notsecurepassword
|
||||
command: >
|
||||
postgres
|
||||
-c max_connections=200
|
||||
-c log_error_verbosity=terse
|
||||
-c shared_buffers=2GB
|
||||
-c effective_cache_size=4GB
|
||||
-c maintenance_work_mem=1GB
|
||||
-c checkpoint_completion_target=0.9
|
||||
-c random_page_cost=1.1
|
||||
-c effective_io_concurrency=200
|
||||
-c min_wal_size=4GB
|
||||
-c max_wal_size=16GB
|
||||
-c max_worker_processes=16
|
||||
-c checkpoint_timeout=1800
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${ABSTRACT_TESTNET_EXTERNAL_NODE_ARCHIVE__DB_DATA:-abstract-testnet-external-node-archive_db}:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
interval: 1s
|
||||
timeout: 3s
|
||||
test: [CMD-SHELL, psql -U postgres -c "select exists (select * from pg_stat_activity where datname = '' and application_name = 'pg_restore')" | grep -e ".f$$"]
|
||||
logging: *logging-defaults
|
||||
|
||||
volumes:
|
||||
abstract-testnet-external-node-archive:
|
||||
abstract-testnet-external-node-archive_db:
|
||||
|
||||
x-upstreams:
|
||||
- id: $${ID}
|
||||
labels:
|
||||
provider: $${PROVIDER}
|
||||
connection:
|
||||
generic:
|
||||
rpc:
|
||||
url: $${RPC_URL}
|
||||
ws:
|
||||
frameSize: 20Mb
|
||||
msgSize: 50Mb
|
||||
url: $${WS_URL}
|
||||
chain: abstract-sepolia
|
||||
method-groups:
|
||||
enabled:
|
||||
- debug
|
||||
- filter
|
||||
methods:
|
||||
disabled:
|
||||
enabled:
|
||||
- name: txpool_content # TODO: should be disabled for rollup nodes
|
||||
...
|
||||
161
abstract/external-node/abstract-testnet-external-node-pruned.yml
Normal file
161
abstract/external-node/abstract-testnet-external-node-pruned.yml
Normal file
@@ -0,0 +1,161 @@
|
||||
---
|
||||
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:abstract/external-node/abstract-testnet-external-node-pruned.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/abstract-testnet \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
abstract-testnet:
|
||||
image: ${ABSTRACT_EXTERNAL_NODE_IMAGE:-matterlabs/external-node}:${ABSTRACT_TESTNET_EXTERNAL_NODE_VERSION:-v29.1.2}
|
||||
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:
|
||||
- 12157:12157
|
||||
- 12157:12157/udp
|
||||
expose:
|
||||
- 8545
|
||||
- 8546
|
||||
environment:
|
||||
- DATABASE_POOL_SIZE=50
|
||||
- DATABASE_URL=postgres://postgres:notsecurepassword@abstract-testnet-db:5430/zksync_local_ext_node
|
||||
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
|
||||
- EN_ETH_CLIENT_URL=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
|
||||
- EN_HEALTHCHECK_PORT=3081
|
||||
- EN_HTTP_PORT=8545
|
||||
- EN_L1_CHAIN_ID=11155111
|
||||
- EN_L2_CHAIN_ID=11124
|
||||
- EN_MAIN_NODE_URL=https://api.testnet.abs.xyz
|
||||
- EN_MAX_RESPONSE_BODY_SIZE_MB=25
|
||||
- EN_MAX_RESPONSE_BODY_SIZE_OVERRIDES_MB=eth_getLogs=100,eth_getBlockReceipts=None
|
||||
- EN_MERKLE_TREE_PATH=./db/ext-node/lightweight
|
||||
- EN_PROMETHEUS_PORT=3322
|
||||
- EN_PRUNING_ENABLED=true
|
||||
- EN_REQ_ENTITIES_LIMIT=100000
|
||||
- EN_SNAPSHOTS_OBJECT_STORE_BUCKET_BASE_URL=abstract-testnet-external-node-snapshots
|
||||
- EN_SNAPSHOTS_OBJECT_STORE_MODE=GCSAnonymousReadOnly
|
||||
- EN_SNAPSHOTS_RECOVERY_ENABLED=true
|
||||
- EN_STATE_CACHE_PATH=./db/ext-node/state_keeper
|
||||
- EN_WS_PORT=8546
|
||||
- RUST_LOG=warn,zksync=info,zksync_core::metadata_calculator=debug,zksync_state=info,zksync_utils=info,zksync_web3_decl::client=error
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${ABSTRACT_TESTNET_EXTERNAL_NODE_PRUNED_DATA:-abstract-testnet-external-node-pruned}:/db
|
||||
- /slowdisk:/slowdisk
|
||||
logging: *logging-defaults
|
||||
labels:
|
||||
- prometheus-scrape.enabled=false
|
||||
- traefik.enable=true
|
||||
- traefik.http.middlewares.abstract-testnet-external-node-pruned-stripprefix.stripprefix.prefixes=/abstract-testnet
|
||||
- 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.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=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.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:
|
||||
image: postgres:14
|
||||
expose:
|
||||
- 5430
|
||||
environment:
|
||||
- PGPORT=5430
|
||||
- POSTGRES_PASSWORD=notsecurepassword
|
||||
command: >
|
||||
postgres
|
||||
-c max_connections=200
|
||||
-c log_error_verbosity=terse
|
||||
-c shared_buffers=2GB
|
||||
-c effective_cache_size=4GB
|
||||
-c maintenance_work_mem=1GB
|
||||
-c checkpoint_completion_target=0.9
|
||||
-c random_page_cost=1.1
|
||||
-c effective_io_concurrency=200
|
||||
-c min_wal_size=4GB
|
||||
-c max_wal_size=16GB
|
||||
-c max_worker_processes=16
|
||||
-c checkpoint_timeout=1800
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${ABSTRACT_TESTNET_EXTERNAL_NODE_PRUNED__DB_DATA:-abstract-testnet-external-node-pruned_db}:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
interval: 1s
|
||||
timeout: 3s
|
||||
test: [CMD-SHELL, psql -U postgres -c "select exists (select * from pg_stat_activity where datname = '' and application_name = 'pg_restore')" | grep -e ".f$$"]
|
||||
logging: *logging-defaults
|
||||
|
||||
volumes:
|
||||
abstract-testnet-external-node-pruned:
|
||||
abstract-testnet-external-node-pruned_db:
|
||||
|
||||
x-upstreams:
|
||||
- id: $${ID}
|
||||
labels:
|
||||
provider: $${PROVIDER}
|
||||
connection:
|
||||
generic:
|
||||
rpc:
|
||||
url: $${RPC_URL}
|
||||
ws:
|
||||
frameSize: 20Mb
|
||||
msgSize: 50Mb
|
||||
url: $${WS_URL}
|
||||
chain: abstract-sepolia
|
||||
method-groups:
|
||||
enabled:
|
||||
- debug
|
||||
- filter
|
||||
methods:
|
||||
disabled:
|
||||
enabled:
|
||||
- name: txpool_content # TODO: should be disabled for rollup nodes
|
||||
...
|
||||
1
alephzero-mainnet-archive.yml
Symbolic link
1
alephzero-mainnet-archive.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
arb/nitro/alephzero-mainnet-nitro-archive-pebble-hash.yml
|
||||
1
alephzero-mainnet.yml
Symbolic link
1
alephzero-mainnet.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
arb/nitro/alephzero-mainnet-nitro-pruned-pebble-path.yml
|
||||
1
alephzero-sepolia-archive.yml
Symbolic link
1
alephzero-sepolia-archive.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
arb/nitro/alephzero-sepolia-nitro-archive-leveldb-hash.yml
|
||||
1
alephzero-sepolia.yml
Symbolic link
1
alephzero-sepolia.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
arb/nitro/alephzero-sepolia-nitro-pruned-pebble-path.yml
|
||||
5
arb/alephzero/mainnet/baseConfig.json
Normal file
5
arb/alephzero/mainnet/baseConfig.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"chain": {
|
||||
"info-json": "[{\"chain-id\":41455,\"parent-chain-id\":1,\"parent-chain-is-arbitrum\":false,\"chain-config\":{\"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\":20,\"GenesisBlockNum\":0,\"MaxCodeSize\":98304,\"MaxInitCodeSize\":49152,\"InitialChainOwner\":\"0x257812604076712675ae9788F5Bd738173CA3CE0\"},\"chainId\":41455},\"rollup\":{\"bridge\":\"0x41Ec9456AB918f2aBA81F38c03Eb0B93b78E84d9\",\"inbox\":\"0x56D8EC76a421063e1907503aDd3794c395256AEb\",\"sequencer-inbox\":\"0xF75206c49c1694594E3e69252E519434f1579876\",\"rollup\":\"0x1CA12290D954CFe022323b6A6Df92113ed6b1C98\",\"validator-utils\":\"0x2b0E04Dc90e3fA58165CB41E2834B44A56E766aF\",\"validator-wallet-creator\":\"0x9CAd81628aB7D8e239F1A5B497313341578c5F71\",\"deployed-at\":20412468}}]"
|
||||
}
|
||||
}
|
||||
6
arb/alephzero/sepolia/baseConfig.json
Normal file
6
arb/alephzero/sepolia/baseConfig.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"chain": {
|
||||
"info-json": "[{\"chain-id\":2039,\"parent-chain-id\":11155111,\"parent-chain-is-arbitrum\":false,\"chain-name\":\"Aleph Zero EVM testnet\",\"chain-config\":{\"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\":20,\"GenesisBlockNum\":0,\"MaxCodeSize\":98304,\"MaxInitCodeSize\":49152,\"InitialChainOwner\":\"0x4c6dfF3e40e82a1fB599e062051726a9f7808a18\"},\"chainId\":2039},\"rollup\":{\"bridge\":\"0xCB5c0B38C45Fad0C20591E26b0b3C3809123994A\",\"inbox\":\"0xb27fd27987a71a6B77Fb8705bFb6010C411083EB\",\"sequencer-inbox\":\"0x16Ef70c48EF4BaaCfdaa4AfdD37F69332832a0bD\",\"rollup\":\"0xC8C08A4DbbF3367c8441151591c3d935947CB42F\",\"validator-utils\":\"0xb33Dca7b17c72CFC311D68C543cd4178E0d7ce55\",\"validator-wallet-creator\":\"0x75500812ADC9E51b721BEa31Df322EEc66967DDF\",\"deployed-at\":5827184}}]",
|
||||
"name": "Aleph Zero EVM testnet"
|
||||
}
|
||||
}
|
||||
113
arb/arbnode/arbitrum-one-arbnode-archive-leveldb-hash.yml
Normal file
113
arb/arbnode/arbitrum-one-arbnode-archive-leveldb-hash.yml
Normal file
@@ -0,0 +1,113 @@
|
||||
---
|
||||
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/arbnode/arbitrum-one-arbnode-archive-leveldb-hash.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/arbitrum-one-arbnode-archive \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
arbitrum-one-arbnode-archive:
|
||||
image: ${ARBITRUM_ARBNODE_IMAGE:-offchainlabs/arb-node}:${ARBITRUM_ONE_ARBNODE_VERSION:-v1.4.5-e97c1a4}
|
||||
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
|
||||
- 8546
|
||||
entrypoint: [/home/user/go/bin/arb-node]
|
||||
command:
|
||||
- --core.checkpoint-gas-frequency=156250000
|
||||
- --l1.url=${ETHEREUM_MAINNET_EXECUTION_RPC}
|
||||
- --l2.disable-upstream
|
||||
- --metrics
|
||||
- --metrics-server.addr=0.0.0.0
|
||||
- --metrics-server.port=7070
|
||||
- --node.cache.allow-slow-lookup
|
||||
- --node.chain-id=42161
|
||||
- --node.rpc.addr=0.0.0.0
|
||||
- --node.rpc.enable-l1-calls
|
||||
- --node.rpc.port=8545
|
||||
- --node.rpc.tracing.enable
|
||||
- --node.rpc.tracing.namespace=trace
|
||||
- --node.ws.addr=0.0.0.0
|
||||
- --node.ws.port=8546
|
||||
- --persistent.chain=/data/datadir/
|
||||
- --persistent.global-config=/data/
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${ARBITRUM_ONE_ARBNODE_ARCHIVE_LEVELDB_HASH_DATA:-arbitrum-one-arbnode-archive-leveldb-hash}:/data
|
||||
- /slowdisk:/slowdisk
|
||||
logging: *logging-defaults
|
||||
labels:
|
||||
- prometheus-scrape.enabled=false
|
||||
- traefik.enable=true
|
||||
- traefik.http.middlewares.arbitrum-one-arbnode-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/arbitrum-one-arbnode-archive
|
||||
- traefik.http.services.arbitrum-one-arbnode-archive-leveldb-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-arbnode-archive-leveldb-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-arbnode-archive-leveldb-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-arbnode-archive-leveldb-hash.rule=Host(`$DOMAIN`) && (Path(`/arbitrum-one-arbnode-archive`) || Path(`/arbitrum-one-arbnode-archive/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.arbitrum-one-arbnode-archive-leveldb-hash.rule=Path(`/arbitrum-one-arbnode-archive`) || Path(`/arbitrum-one-arbnode-archive/`)}
|
||||
- traefik.http.routers.arbitrum-one-arbnode-archive-leveldb-hash.middlewares=arbitrum-one-arbnode-archive-leveldb-hash-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
arbitrum-one-arbnode-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: arbitrum
|
||||
method-groups:
|
||||
enabled:
|
||||
- debug
|
||||
- filter
|
||||
methods:
|
||||
disabled:
|
||||
enabled:
|
||||
- name: txpool_content # TODO: should be disabled for rollup nodes
|
||||
...
|
||||
6
arb/connext/sepolia/baseConfig.json
Normal file
6
arb/connext/sepolia/baseConfig.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"chain": {
|
||||
"info-json": "[{\"chain-id\":6398,\"parent-chain-id\":11155111,\"parent-chain-is-arbitrum\":false,\"chain-name\":\"Connext Sepolia\",\"chain-config\":{\"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\":20,\"GenesisBlockNum\":0,\"MaxCodeSize\":24576,\"MaxInitCodeSize\":49152,\"InitialChainOwner\":\"0x8ECD393576Ca37a7e5095f31bdfE21F606FF5F75\"},\"chainId\":6398},\"rollup\":{\"bridge\":\"0xf0b58FA876005898798a66A04EE09159C199CB7A\",\"inbox\":\"0x7bc7DAF843bf57c54D41D912F8221A2eE830c320\",\"sequencer-inbox\":\"0x7f5C1a58014E9DE69663CAc441bfa4C5d94b7E64\",\"rollup\":\"0xE6D7bf11A6264BACa59e8fAD7f6985FaC8f62e60\",\"validator-utils\":\"0xb33Dca7b17c72CFC311D68C543cd4178E0d7ce55\",\"validator-wallet-creator\":\"0x75500812ADC9E51b721BEa31Df322EEc66967DDF\",\"deployed-at\":5780509}}]",
|
||||
"name": "Connext Sepolia"
|
||||
}
|
||||
}
|
||||
6
arb/everclear/mainnet/baseConfig.json
Normal file
6
arb/everclear/mainnet/baseConfig.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"chain": {
|
||||
"name": "Everclear Mainnet",
|
||||
"info-json": "[{\"chain-id\":25327,\"parent-chain-id\":1,\"parent-chain-is-arbitrum\":false,\"chain-name\":\"Everclear Mainnet\",\"chain-config\":{\"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\":20,\"GenesisBlockNum\":0,\"MaxCodeSize\":24576,\"MaxInitCodeSize\":49152,\"InitialChainOwner\":\"0x98a426C8ED821cAaef1b4BF7D29b514dcef970C0\"},\"chainId\":25327},\"rollup\":{\"bridge\":\"0x4eb4fB614e1aa3634513319F4Ec7334bC4321356\",\"inbox\":\"0x97FdC935c5E25613AA13a054C7Aa71cf751DB495\",\"sequencer-inbox\":\"0x7B0517E0104dB60198f9d573C0aB8d480207827E\",\"rollup\":\"0xc6CAd31D83E33Fc8fBc855f36ef9Cb2fCE070f5C\",\"validator-utils\":\"0x2b0E04Dc90e3fA58165CB41E2834B44A56E766aF\",\"validator-wallet-creator\":\"0x9CAd81628aB7D8e239F1A5B497313341578c5F71\",\"deployed-at\":20684364}}]"
|
||||
}
|
||||
}
|
||||
145
arb/fireeth/arbitrum-one-fireeth-pruned-pebble-hash.yml
Normal file
145
arb/fireeth/arbitrum-one-fireeth-pruned-pebble-hash.yml
Normal file
@@ -0,0 +1,145 @@
|
||||
---
|
||||
|
||||
# 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/fireeth/arbitrum-one-fireeth-pruned-pebble-hash.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/arbitrum-one \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
x-logging-defaults: &logging-defaults
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 10m
|
||||
max-file: '3'
|
||||
|
||||
services:
|
||||
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}
|
||||
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
|
||||
environment:
|
||||
- ${ARBITRUM_ONE_FIREETH_PRUNED_PEBBLE_HASH_S3_BLOCKS_STORE:-/firehose-data/storage/merged-blocks}
|
||||
entrypoint: [sh, -c, 'exec fireeth -c /config/firehose.yml start --substreams-rpc-endpoints "${ ARBITRUM_ONE_EXECUTION_RPC}" --reader-node-arguments "$*"', _]
|
||||
command:
|
||||
- --execution.caching.archive=false
|
||||
- --execution.caching.state-scheme=hash
|
||||
- --execution.rpc.gas-cap=600000000
|
||||
- --execution.sequencer.enable=false
|
||||
- --firehose-enabled
|
||||
- --http.addr=0.0.0.0
|
||||
- --http.api=eth,net,web3,debug,admin,txpool,engine
|
||||
- --http.corsdomain=*
|
||||
- --http.port=8545
|
||||
- --http.vhosts=*
|
||||
- --init.download-path=/tmp
|
||||
- --init.latest=pruned
|
||||
- --persistent.chain=/firehose-data/reader/data/arbitrum-one
|
||||
- --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:
|
||||
- ${ARBITRUM_ONE_FIREETH_PRUNED_PEBBLE_HASH_DATA:-arbitrum-one-fireeth-pruned-pebble-hash}:/firehose-data
|
||||
- ${ARBITRUM_ONE_FIREETH_PRUNED_PEBBLE_HASH_MERGED_BLOCKS_DATA:-arbitrum-one-fireeth-pruned-pebble-hash-blocks}:/firehose-data/storage/merged-blocks
|
||||
- /slowdisk:/slowdisk
|
||||
logging: *logging-defaults
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.middlewares.arbitrum-one-fireeth-pruned-pebble-hash-stripprefix.stripprefix.prefixes=/arbitrum-one
|
||||
- traefik.http.services.arbitrum-one-fireeth-pruned-pebble-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-fireeth-pruned-pebble-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-fireeth-pruned-pebble-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-fireeth-pruned-pebble-hash.rule=Host(`$DOMAIN`) && (Path(`/arbitrum-one`) || Path(`/arbitrum-one/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.arbitrum-one-fireeth-pruned-pebble-hash.rule=Path(`/arbitrum-one`) || Path(`/arbitrum-one/`)}
|
||||
- traefik.http.routers.arbitrum-one-fireeth-pruned-pebble-hash.middlewares=arbitrum-one-fireeth-pruned-pebble-hash-stripprefix, ipallowlist
|
||||
- traefik.http.services.arbitrum-one-fireeth-pruned-pebble-hash-firehose.loadbalancer.server.scheme=h2c
|
||||
- traefik.http.routers.arbitrum-one-fireeth-pruned-pebble-hash-firehose.service=arbitrum-one-fireeth-pruned-pebble-hash-firehose
|
||||
- traefik.http.services.arbitrum-one-fireeth-pruned-pebble-hash-firehose.loadbalancer.server.port=10015
|
||||
- traefik.http.routers.arbitrum-one-fireeth-pruned-pebble-hash-firehose.entrypoints=grpc
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-fireeth-pruned-pebble-hash-firehose.tls.certresolver=myresolver}
|
||||
- traefik.http.routers.arbitrum-one-fireeth-pruned-pebble-hash-firehose.rule=Host(`arbitrum-one.${DOMAIN}`)
|
||||
- traefik.http.routers.arbitrum-one-fireeth-pruned-pebble-hash-firehose.middlewares=ipallowlist
|
||||
- traefik.http.services.arbitrum-one-fireeth-pruned-pebble-hash-substreams.loadbalancer.server.scheme=h2c
|
||||
- traefik.http.routers.arbitrum-one-fireeth-pruned-pebble-hash-substreams.service=arbitrum-one-fireeth-pruned-pebble-hash-substreams
|
||||
- traefik.http.services.arbitrum-one-fireeth-pruned-pebble-hash-substreams.loadbalancer.server.port=10016
|
||||
- traefik.http.routers.arbitrum-one-fireeth-pruned-pebble-hash-substreams.entrypoints=grpc
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-fireeth-pruned-pebble-hash-substreams.tls.certresolver=myresolver}
|
||||
- traefik.http.routers.arbitrum-one-fireeth-pruned-pebble-hash-substreams.rule=Host(`arbitrum-one-substreams.${DOMAIN}`)
|
||||
- traefik.http.routers.arbitrum-one-fireeth-pruned-pebble-hash-substreams.middlewares=ipallowlist
|
||||
|
||||
volumes:
|
||||
arbitrum-one-fireeth-pruned-pebble-hash:
|
||||
arbitrum-one-fireeth-pruned-pebble-hash-blocks:
|
||||
|
||||
x-upstreams:
|
||||
- id: $${ID}
|
||||
labels:
|
||||
provider: $${PROVIDER}
|
||||
connection:
|
||||
generic:
|
||||
rpc:
|
||||
url: $${RPC_URL}
|
||||
ws:
|
||||
frameSize: 20Mb
|
||||
msgSize: 50Mb
|
||||
url: $${WS_URL}
|
||||
chain: arbitrum
|
||||
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
|
||||
...
|
||||
166
arb/nitro-erigon/arbitrum-sepolia-nitro-erigon-archive-trace.yml
Normal file
166
arb/nitro-erigon/arbitrum-sepolia-nitro-erigon-archive-trace.yml
Normal 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
|
||||
...
|
||||
167
arb/nitro-erigon/arbitrum-sepolia-nitro-erigon-minimal-trace.yml
Normal file
167
arb/nitro-erigon/arbitrum-sepolia-nitro-erigon-minimal-trace.yml
Normal 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
|
||||
...
|
||||
167
arb/nitro-erigon/arbitrum-sepolia-nitro-erigon-pruned-trace.yml
Normal file
167
arb/nitro-erigon/arbitrum-sepolia-nitro-erigon-pruned-trace.yml
Normal 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
|
||||
...
|
||||
100
arb/nitro/alephzero-mainnet-nitro-archive-leveldb-hash.yml
Normal file
100
arb/nitro/alephzero-mainnet-nitro-archive-leveldb-hash.yml
Normal file
@@ -0,0 +1,100 @@
|
||||
---
|
||||
|
||||
services:
|
||||
alephzero-mainnet-archive:
|
||||
image: ${ALEPHZERO_NITRO_IMAGE:-offchainlabs/nitro-node}:${ALEPHZERO_MAINNET_NITRO_VERSION:-v3.5.3-0a9c975}
|
||||
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.state-scheme=hash
|
||||
- --execution.forwarding-target=https://rpc.alephzero.raas.gelato.cloud
|
||||
- --execution.rpc.gas-cap=600000000
|
||||
- --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=*
|
||||
- --node.batch-poster.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.alephzero.raas.gelato.cloud
|
||||
- --node.data-availability.sequencer-inbox-address=0x1411949971076304187394088912578077660717096867958
|
||||
- --node.feed.input.url=wss://feed.alephzero.raas.gelato.cloud
|
||||
- --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/alephzero-mainnet-archive
|
||||
- --persistent.db-engine=leveldb
|
||||
- --ws.addr=0.0.0.0
|
||||
- --ws.origins=*
|
||||
- --ws.port=8545
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${ALEPHZERO_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_DATA:-alephzero-mainnet-nitro-archive-leveldb-hash}:/root/.arbitrum
|
||||
- ./arb/alephzero/mainnet:/config
|
||||
- /slowdisk:/slowdisk
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.middlewares.alephzero-mainnet-nitro-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/alephzero-mainnet-archive
|
||||
- traefik.http.services.alephzero-mainnet-nitro-archive-leveldb-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.alephzero-mainnet-nitro-archive-leveldb-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.alephzero-mainnet-nitro-archive-leveldb-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.alephzero-mainnet-nitro-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/alephzero-mainnet-archive`)}
|
||||
- ${NO_SSL:+traefik.http.routers.alephzero-mainnet-nitro-archive-leveldb-hash.rule=PathPrefix(`/alephzero-mainnet-archive`)}
|
||||
- traefik.http.routers.alephzero-mainnet-nitro-archive-leveldb-hash.middlewares=alephzero-mainnet-nitro-archive-leveldb-hash-stripprefix, ipwhitelist
|
||||
|
||||
volumes:
|
||||
alephzero-mainnet-nitro-archive-leveldb-hash:
|
||||
|
||||
x-upstreams:
|
||||
- id: $${ID}
|
||||
labels:
|
||||
provider: $${PROVIDER}
|
||||
chain: alephzero
|
||||
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
|
||||
...
|
||||
149
arb/nitro/alephzero-mainnet-nitro-archive-pebble-hash.yml
Normal file
149
arb/nitro/alephzero-mainnet-nitro-archive-pebble-hash.yml
Normal file
@@ -0,0 +1,149 @@
|
||||
---
|
||||
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/alephzero-mainnet-nitro-archive-pebble-hash.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/alephzero-mainnet-archive \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
alephzero-mainnet-archive:
|
||||
image: ${ALEPHZERO_NITRO_IMAGE:-offchainlabs/nitro-node}:${ALEPHZERO_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=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.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_MAINNET_EXECUTION_RPC}
|
||||
- --node.data-availability.rest-aggregator.enable=true
|
||||
- --node.data-availability.rest-aggregator.urls=https://das.alephzero.raas.gelato.cloud
|
||||
- --node.data-availability.sequencer-inbox-address=0x1411949971076304187394088912578077660717096867958
|
||||
- --node.feed.input.url=wss://feed.alephzero.raas.gelato.cloud
|
||||
- --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/alephzero-mainnet-archive
|
||||
- --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:
|
||||
- ${ALEPHZERO_MAINNET_NITRO_ARCHIVE_PEBBLE_HASH_DATA:-alephzero-mainnet-nitro-archive-pebble-hash}:/root/.arbitrum
|
||||
- ./arb/alephzero/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.alephzero-mainnet-nitro-archive-pebble-hash-stripprefix.stripprefix.prefixes=/alephzero-mainnet-archive
|
||||
- traefik.http.services.alephzero-mainnet-nitro-archive-pebble-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.alephzero-mainnet-nitro-archive-pebble-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.alephzero-mainnet-nitro-archive-pebble-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.alephzero-mainnet-nitro-archive-pebble-hash.rule=Host(`$DOMAIN`) && (Path(`/alephzero-mainnet-archive`) || Path(`/alephzero-mainnet-archive/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.alephzero-mainnet-nitro-archive-pebble-hash.rule=Path(`/alephzero-mainnet-archive`) || Path(`/alephzero-mainnet-archive/`)}
|
||||
- traefik.http.routers.alephzero-mainnet-nitro-archive-pebble-hash.middlewares=alephzero-mainnet-nitro-archive-pebble-hash-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
alephzero-mainnet-nitro-archive-pebble-hash:
|
||||
|
||||
x-upstreams:
|
||||
- id: $${ID}
|
||||
labels:
|
||||
provider: $${PROVIDER}
|
||||
connection:
|
||||
generic:
|
||||
rpc:
|
||||
url: $${RPC_URL}
|
||||
ws:
|
||||
frameSize: 20Mb
|
||||
msgSize: 50Mb
|
||||
url: $${WS_URL}
|
||||
chain: alephzero
|
||||
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
|
||||
...
|
||||
152
arb/nitro/alephzero-mainnet-nitro-pruned-pebble-path.yml
Normal file
152
arb/nitro/alephzero-mainnet-nitro-pruned-pebble-path.yml
Normal 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/alephzero-mainnet-nitro-pruned-pebble-path.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/alephzero-mainnet \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
alephzero-mainnet:
|
||||
image: ${ALEPHZERO_NITRO_IMAGE:-offchainlabs/nitro-node}:${ALEPHZERO_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=${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.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.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.alephzero.raas.gelato.cloud
|
||||
- --node.data-availability.sequencer-inbox-address=0x1411949971076304187394088912578077660717096867958
|
||||
- --node.feed.input.url=wss://feed.alephzero.raas.gelato.cloud
|
||||
- --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/alephzero-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:
|
||||
- ${ALEPHZERO_MAINNET_NITRO_PRUNED_PEBBLE_PATH_DATA:-alephzero-mainnet-nitro-pruned-pebble-path}:/root/.arbitrum
|
||||
- ./arb/alephzero/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.alephzero-mainnet-nitro-pruned-pebble-path-stripprefix.stripprefix.prefixes=/alephzero-mainnet
|
||||
- traefik.http.services.alephzero-mainnet-nitro-pruned-pebble-path.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.alephzero-mainnet-nitro-pruned-pebble-path.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.alephzero-mainnet-nitro-pruned-pebble-path.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.alephzero-mainnet-nitro-pruned-pebble-path.rule=Host(`$DOMAIN`) && (Path(`/alephzero-mainnet`) || Path(`/alephzero-mainnet/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.alephzero-mainnet-nitro-pruned-pebble-path.rule=Path(`/alephzero-mainnet`) || Path(`/alephzero-mainnet/`)}
|
||||
- traefik.http.routers.alephzero-mainnet-nitro-pruned-pebble-path.middlewares=alephzero-mainnet-nitro-pruned-pebble-path-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
alephzero-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: alephzero
|
||||
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
|
||||
...
|
||||
100
arb/nitro/alephzero-sepolia-nitro-archive-leveldb-hash.yml
Normal file
100
arb/nitro/alephzero-sepolia-nitro-archive-leveldb-hash.yml
Normal file
@@ -0,0 +1,100 @@
|
||||
---
|
||||
|
||||
services:
|
||||
alephzero-sepolia-archive:
|
||||
image: ${ALEPHZERO_NITRO_IMAGE:-offchainlabs/nitro-node}:${ALEPHZERO_SEPOLIA_NITRO_VERSION:-v3.5.3-0a9c975}
|
||||
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.state-scheme=hash
|
||||
- --execution.forwarding-target=https://rpc.alephzero-testnet.gelato.digital
|
||||
- --execution.rpc.gas-cap=600000000
|
||||
- --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=*
|
||||
- --node.batch-poster.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.alephzero-testnet.gelato.digital
|
||||
- --node.data-availability.sequencer-inbox-address=0x130937498521962644184395825246273622310592356541
|
||||
- --node.feed.input.url=wss://feed.alephzero-testnet.gelato.digital
|
||||
- --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/alephzero-sepolia-archive
|
||||
- --persistent.db-engine=leveldb
|
||||
- --ws.addr=0.0.0.0
|
||||
- --ws.origins=*
|
||||
- --ws.port=8545
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${ALEPHZERO_SEPOLIA_NITRO_ARCHIVE_LEVELDB_HASH_DATA:-alephzero-sepolia-nitro-archive-leveldb-hash}:/root/.arbitrum
|
||||
- ./arb/alephzero/sepolia:/config
|
||||
- /slowdisk:/slowdisk
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.middlewares.alephzero-sepolia-nitro-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/alephzero-sepolia-archive
|
||||
- traefik.http.services.alephzero-sepolia-nitro-archive-leveldb-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.alephzero-sepolia-nitro-archive-leveldb-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.alephzero-sepolia-nitro-archive-leveldb-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.alephzero-sepolia-nitro-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/alephzero-sepolia-archive`)}
|
||||
- ${NO_SSL:+traefik.http.routers.alephzero-sepolia-nitro-archive-leveldb-hash.rule=PathPrefix(`/alephzero-sepolia-archive`)}
|
||||
- traefik.http.routers.alephzero-sepolia-nitro-archive-leveldb-hash.middlewares=alephzero-sepolia-nitro-archive-leveldb-hash-stripprefix, ipwhitelist
|
||||
|
||||
volumes:
|
||||
alephzero-sepolia-nitro-archive-leveldb-hash:
|
||||
|
||||
x-upstreams:
|
||||
- id: $${ID}
|
||||
labels:
|
||||
provider: $${PROVIDER}
|
||||
chain: alephzero-sepolia
|
||||
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
|
||||
...
|
||||
149
arb/nitro/alephzero-sepolia-nitro-archive-pebble-hash.yml
Normal file
149
arb/nitro/alephzero-sepolia-nitro-archive-pebble-hash.yml
Normal file
@@ -0,0 +1,149 @@
|
||||
---
|
||||
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/alephzero-sepolia-nitro-archive-pebble-hash.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/alephzero-sepolia-archive \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
alephzero-sepolia-archive:
|
||||
image: ${ALEPHZERO_NITRO_IMAGE:-offchainlabs/nitro-node}:${ALEPHZERO_SEPOLIA_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=${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.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.alephzero-testnet.gelato.digital
|
||||
- --node.data-availability.sequencer-inbox-address=0x130937498521962644184395825246273622310592356541
|
||||
- --node.feed.input.url=wss://feed.alephzero-testnet.gelato.digital
|
||||
- --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/alephzero-sepolia-archive
|
||||
- --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:
|
||||
- ${ALEPHZERO_SEPOLIA_NITRO_ARCHIVE_PEBBLE_HASH_DATA:-alephzero-sepolia-nitro-archive-pebble-hash}:/root/.arbitrum
|
||||
- ./arb/alephzero/sepolia:/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.alephzero-sepolia-nitro-archive-pebble-hash-stripprefix.stripprefix.prefixes=/alephzero-sepolia-archive
|
||||
- traefik.http.services.alephzero-sepolia-nitro-archive-pebble-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.alephzero-sepolia-nitro-archive-pebble-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.alephzero-sepolia-nitro-archive-pebble-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.alephzero-sepolia-nitro-archive-pebble-hash.rule=Host(`$DOMAIN`) && (Path(`/alephzero-sepolia-archive`) || Path(`/alephzero-sepolia-archive/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.alephzero-sepolia-nitro-archive-pebble-hash.rule=Path(`/alephzero-sepolia-archive`) || Path(`/alephzero-sepolia-archive/`)}
|
||||
- traefik.http.routers.alephzero-sepolia-nitro-archive-pebble-hash.middlewares=alephzero-sepolia-nitro-archive-pebble-hash-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
alephzero-sepolia-nitro-archive-pebble-hash:
|
||||
|
||||
x-upstreams:
|
||||
- id: $${ID}
|
||||
labels:
|
||||
provider: $${PROVIDER}
|
||||
connection:
|
||||
generic:
|
||||
rpc:
|
||||
url: $${RPC_URL}
|
||||
ws:
|
||||
frameSize: 20Mb
|
||||
msgSize: 50Mb
|
||||
url: $${WS_URL}
|
||||
chain: alephzero-sepolia
|
||||
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
|
||||
...
|
||||
152
arb/nitro/alephzero-sepolia-nitro-pruned-pebble-path.yml
Normal file
152
arb/nitro/alephzero-sepolia-nitro-pruned-pebble-path.yml
Normal 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/alephzero-sepolia-nitro-pruned-pebble-path.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/alephzero-sepolia \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
alephzero-sepolia:
|
||||
image: ${ALEPHZERO_NITRO_IMAGE:-offchainlabs/nitro-node}:${ALEPHZERO_SEPOLIA_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=${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.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.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.alephzero-testnet.gelato.digital
|
||||
- --node.data-availability.sequencer-inbox-address=0x130937498521962644184395825246273622310592356541
|
||||
- --node.feed.input.url=wss://feed.alephzero-testnet.gelato.digital
|
||||
- --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/alephzero-sepolia
|
||||
- --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:
|
||||
- ${ALEPHZERO_SEPOLIA_NITRO_PRUNED_PEBBLE_PATH_DATA:-alephzero-sepolia-nitro-pruned-pebble-path}:/root/.arbitrum
|
||||
- ./arb/alephzero/sepolia:/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.alephzero-sepolia-nitro-pruned-pebble-path-stripprefix.stripprefix.prefixes=/alephzero-sepolia
|
||||
- traefik.http.services.alephzero-sepolia-nitro-pruned-pebble-path.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.alephzero-sepolia-nitro-pruned-pebble-path.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.alephzero-sepolia-nitro-pruned-pebble-path.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.alephzero-sepolia-nitro-pruned-pebble-path.rule=Host(`$DOMAIN`) && (Path(`/alephzero-sepolia`) || Path(`/alephzero-sepolia/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.alephzero-sepolia-nitro-pruned-pebble-path.rule=Path(`/alephzero-sepolia`) || Path(`/alephzero-sepolia/`)}
|
||||
- traefik.http.routers.alephzero-sepolia-nitro-pruned-pebble-path.middlewares=alephzero-sepolia-nitro-pruned-pebble-path-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
alephzero-sepolia-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: alephzero-sepolia
|
||||
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
|
||||
...
|
||||
141
arb/nitro/arbitrum-nova-nitro-archive-leveldb-hash.yml
Normal file
141
arb/nitro/arbitrum-nova-nitro-archive-leveldb-hash.yml
Normal file
@@ -0,0 +1,141 @@
|
||||
---
|
||||
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-nova-nitro-archive-leveldb-hash.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/arbitrum-nova-archive \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
arbitrum-nova-archive:
|
||||
image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_NOVA_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:
|
||||
- --chain.id=42170
|
||||
- --execution.caching.archive=true
|
||||
- --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
|
||||
- --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
|
||||
- --init.latest=archive
|
||||
- --metrics
|
||||
- --metrics-server.addr=0.0.0.0
|
||||
- --metrics-server.port=6070
|
||||
- --node.batch-poster.enable=false
|
||||
- --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/arbitrum-nova-archive
|
||||
- --ws.addr=0.0.0.0
|
||||
- --ws.origins=*
|
||||
- --ws.port=8545
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${ARBITRUM_NOVA_NITRO_ARCHIVE_LEVELDB_HASH_DATA:-arbitrum-nova-nitro-archive-leveldb-hash}:/root/.arbitrum
|
||||
- ./tmp/arbitrum-nova-archive:/tmp
|
||||
- /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.arbitrum-nova-nitro-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/arbitrum-nova-archive
|
||||
- traefik.http.services.arbitrum-nova-nitro-archive-leveldb-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-nova-nitro-archive-leveldb-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-nova-nitro-archive-leveldb-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-nova-nitro-archive-leveldb-hash.rule=Host(`$DOMAIN`) && (Path(`/arbitrum-nova-archive`) || Path(`/arbitrum-nova-archive/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.arbitrum-nova-nitro-archive-leveldb-hash.rule=Path(`/arbitrum-nova-archive`) || Path(`/arbitrum-nova-archive/`)}
|
||||
- traefik.http.routers.arbitrum-nova-nitro-archive-leveldb-hash.middlewares=arbitrum-nova-nitro-archive-leveldb-hash-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
arbitrum-nova-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: arbitrum-nova
|
||||
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
|
||||
...
|
||||
142
arb/nitro/arbitrum-nova-nitro-pruned-pebble-hash.yml
Normal file
142
arb/nitro/arbitrum-nova-nitro-pruned-pebble-hash.yml
Normal file
@@ -0,0 +1,142 @@
|
||||
---
|
||||
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-nova-nitro-pruned-pebble-hash.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/arbitrum-nova \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
arbitrum-nova:
|
||||
image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_NOVA_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:
|
||||
- --chain.id=42170
|
||||
- --execution.caching.archive=${ARBITRUM_NOVA_ARCHIVE_DB:-false}
|
||||
- --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
|
||||
- --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
|
||||
- --init.latest=pruned
|
||||
- --metrics
|
||||
- --metrics-server.addr=0.0.0.0
|
||||
- --metrics-server.port=6070
|
||||
- --node.batch-poster.enable=false
|
||||
- --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/arbitrum-nova
|
||||
- --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:
|
||||
- ${ARBITRUM_NOVA_NITRO_PRUNED_PEBBLE_HASH_DATA:-arbitrum-nova-nitro-pruned-pebble-hash}:/root/.arbitrum
|
||||
- ./tmp/arbitrum-nova:/tmp
|
||||
- /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.arbitrum-nova-nitro-pruned-pebble-hash-stripprefix.stripprefix.prefixes=/arbitrum-nova
|
||||
- traefik.http.services.arbitrum-nova-nitro-pruned-pebble-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-nova-nitro-pruned-pebble-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-nova-nitro-pruned-pebble-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-nova-nitro-pruned-pebble-hash.rule=Host(`$DOMAIN`) && (Path(`/arbitrum-nova`) || Path(`/arbitrum-nova/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.arbitrum-nova-nitro-pruned-pebble-hash.rule=Path(`/arbitrum-nova`) || Path(`/arbitrum-nova/`)}
|
||||
- traefik.http.routers.arbitrum-nova-nitro-pruned-pebble-hash.middlewares=arbitrum-nova-nitro-pruned-pebble-hash-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
arbitrum-nova-nitro-pruned-pebble-hash:
|
||||
|
||||
x-upstreams:
|
||||
- id: $${ID}
|
||||
labels:
|
||||
provider: $${PROVIDER}
|
||||
connection:
|
||||
generic:
|
||||
rpc:
|
||||
url: $${RPC_URL}
|
||||
ws:
|
||||
frameSize: 20Mb
|
||||
msgSize: 50Mb
|
||||
url: $${WS_URL}
|
||||
chain: arbitrum-nova
|
||||
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
|
||||
...
|
||||
181
arb/nitro/arbitrum-one-nitro-archive-erigon.yml
Normal file
181
arb/nitro/arbitrum-one-nitro-archive-erigon.yml
Normal 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}
|
||||
...
|
||||
212
arb/nitro/arbitrum-one-nitro-archive-leveldb-hash.yml
Normal file
212
arb/nitro/arbitrum-one-nitro-archive-leveldb-hash.yml
Normal file
@@ -0,0 +1,212 @@
|
||||
---
|
||||
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-leveldb-hash.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/arbitrum-one-archive \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
arbitrum-one-archive:
|
||||
image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_ONE_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:
|
||||
- --chain.id=42161
|
||||
- --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.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
|
||||
- --init.latest=archive
|
||||
- --metrics
|
||||
- --metrics-server.addr=0.0.0.0
|
||||
- --metrics-server.port=6070
|
||||
- --node.batch-poster.enable=false
|
||||
- --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/arbitrum-one-archive
|
||||
- --ws.addr=0.0.0.0
|
||||
- --ws.origins=*
|
||||
- --ws.port=8545
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${ARBITRUM_ONE_NITRO_ARCHIVE_LEVELDB_HASH_DATA:-arbitrum-one-nitro-archive-leveldb-hash}:/root/.arbitrum
|
||||
- ./tmp/arbitrum-one-archive:/tmp
|
||||
- /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.arbitrum-one-nitro-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/arbitrum-one-archive
|
||||
- traefik.http.services.arbitrum-one-nitro-archive-leveldb-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-archive-leveldb-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-archive-leveldb-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-archive-leveldb-hash.rule=Host(`$DOMAIN`) && (Path(`/arbitrum-one-archive`) || Path(`/arbitrum-one-archive/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.arbitrum-one-nitro-archive-leveldb-hash.rule=Path(`/arbitrum-one-archive`) || Path(`/arbitrum-one-archive/`)}
|
||||
- traefik.http.routers.arbitrum-one-nitro-archive-leveldb-hash.middlewares=arbitrum-one-nitro-archive-leveldb-hash-stripprefix, ipallowlist
|
||||
|
||||
arbitrum-one-arbnode-archive:
|
||||
image: ${ARBITRUM_ARBNODE_IMAGE:-offchainlabs/arb-node}:${ARBITRUM_ONE_ARBNODE_VERSION:-v1.4.5-e97c1a4}
|
||||
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
|
||||
- 8546
|
||||
entrypoint: [/home/user/go/bin/arb-node]
|
||||
command:
|
||||
- --core.checkpoint-gas-frequency=156250000
|
||||
- --l1.url=${ETHEREUM_MAINNET_EXECUTION_RPC}
|
||||
- --l2.disable-upstream
|
||||
- --metrics
|
||||
- --metrics-server.addr=0.0.0.0
|
||||
- --metrics-server.port=7070
|
||||
- --node.cache.allow-slow-lookup
|
||||
- --node.chain-id=42161
|
||||
- --node.rpc.addr=0.0.0.0
|
||||
- --node.rpc.enable-l1-calls
|
||||
- --node.rpc.port=8545
|
||||
- --node.rpc.tracing.enable
|
||||
- --node.rpc.tracing.namespace=trace
|
||||
- --node.ws.addr=0.0.0.0
|
||||
- --node.ws.port=8546
|
||||
- --persistent.chain=/data/datadir/
|
||||
- --persistent.global-config=/data/
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${ARBITRUM_ONE_ARBNODE_ARCHIVE_LEVELDB_HASH_DATA:-arbitrum-one-arbnode-archive-leveldb-hash}:/data
|
||||
- /slowdisk:/slowdisk
|
||||
logging: *logging-defaults
|
||||
labels:
|
||||
- prometheus-scrape.enabled=false
|
||||
|
||||
volumes:
|
||||
arbitrum-one-arbnode-archive-leveldb-hash:
|
||||
arbitrum-one-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: arbitrum
|
||||
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
|
||||
- id: $${ID}
|
||||
labels:
|
||||
provider: $${PROVIDER}
|
||||
connection:
|
||||
generic:
|
||||
rpc:
|
||||
url: $${RPC_URL}
|
||||
ws:
|
||||
frameSize: 20Mb
|
||||
msgSize: 50Mb
|
||||
url: $${WS_URL}
|
||||
chain: arbitrum
|
||||
method-groups:
|
||||
enabled:
|
||||
- debug
|
||||
- filter
|
||||
methods:
|
||||
disabled:
|
||||
enabled:
|
||||
- name: txpool_content # TODO: should be disabled for rollup nodes
|
||||
...
|
||||
213
arb/nitro/arbitrum-one-nitro-archive-pebble-hash.yml
Normal file
213
arb/nitro/arbitrum-one-nitro-archive-pebble-hash.yml
Normal file
@@ -0,0 +1,213 @@
|
||||
---
|
||||
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-pebble-hash.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/arbitrum-one-archive \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
arbitrum-one-archive:
|
||||
image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_ONE_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:
|
||||
- --chain.id=42161
|
||||
- --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.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
|
||||
- --init.latest=archive
|
||||
- --metrics
|
||||
- --metrics-server.addr=0.0.0.0
|
||||
- --metrics-server.port=6070
|
||||
- --node.batch-poster.enable=false
|
||||
- --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/arbitrum-one-archive
|
||||
- --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:
|
||||
- ${ARBITRUM_ONE_NITRO_ARCHIVE_PEBBLE_HASH_DATA:-arbitrum-one-nitro-archive-pebble-hash}:/root/.arbitrum
|
||||
- ./tmp/arbitrum-one-archive:/tmp
|
||||
- /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.arbitrum-one-nitro-archive-pebble-hash-stripprefix.stripprefix.prefixes=/arbitrum-one-archive
|
||||
- traefik.http.services.arbitrum-one-nitro-archive-pebble-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-archive-pebble-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-archive-pebble-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-archive-pebble-hash.rule=Host(`$DOMAIN`) && (Path(`/arbitrum-one-archive`) || Path(`/arbitrum-one-archive/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.arbitrum-one-nitro-archive-pebble-hash.rule=Path(`/arbitrum-one-archive`) || Path(`/arbitrum-one-archive/`)}
|
||||
- traefik.http.routers.arbitrum-one-nitro-archive-pebble-hash.middlewares=arbitrum-one-nitro-archive-pebble-hash-stripprefix, ipallowlist
|
||||
|
||||
arbitrum-one-arbnode-archive:
|
||||
image: ${ARBITRUM_ARBNODE_IMAGE:-offchainlabs/arb-node}:${ARBITRUM_ONE_ARBNODE_VERSION:-v1.4.5-e97c1a4}
|
||||
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
|
||||
- 8546
|
||||
entrypoint: [/home/user/go/bin/arb-node]
|
||||
command:
|
||||
- --core.checkpoint-gas-frequency=156250000
|
||||
- --l1.url=${ETHEREUM_MAINNET_EXECUTION_RPC}
|
||||
- --l2.disable-upstream
|
||||
- --metrics
|
||||
- --metrics-server.addr=0.0.0.0
|
||||
- --metrics-server.port=7070
|
||||
- --node.cache.allow-slow-lookup
|
||||
- --node.chain-id=42161
|
||||
- --node.rpc.addr=0.0.0.0
|
||||
- --node.rpc.enable-l1-calls
|
||||
- --node.rpc.port=8545
|
||||
- --node.rpc.tracing.enable
|
||||
- --node.rpc.tracing.namespace=trace
|
||||
- --node.ws.addr=0.0.0.0
|
||||
- --node.ws.port=8546
|
||||
- --persistent.chain=/data/datadir/
|
||||
- --persistent.global-config=/data/
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${ARBITRUM_ONE_ARBNODE_ARCHIVE_LEVELDB_HASH_DATA:-arbitrum-one-arbnode-archive-leveldb-hash}:/data
|
||||
- /slowdisk:/slowdisk
|
||||
logging: *logging-defaults
|
||||
labels:
|
||||
- prometheus-scrape.enabled=false
|
||||
|
||||
volumes:
|
||||
arbitrum-one-arbnode-archive-leveldb-hash:
|
||||
arbitrum-one-nitro-archive-pebble-hash:
|
||||
|
||||
x-upstreams:
|
||||
- id: $${ID}
|
||||
labels:
|
||||
provider: $${PROVIDER}
|
||||
connection:
|
||||
generic:
|
||||
rpc:
|
||||
url: $${RPC_URL}
|
||||
ws:
|
||||
frameSize: 20Mb
|
||||
msgSize: 50Mb
|
||||
url: $${WS_URL}
|
||||
chain: arbitrum
|
||||
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
|
||||
- id: $${ID}
|
||||
labels:
|
||||
provider: $${PROVIDER}
|
||||
connection:
|
||||
generic:
|
||||
rpc:
|
||||
url: $${RPC_URL}
|
||||
ws:
|
||||
frameSize: 20Mb
|
||||
msgSize: 50Mb
|
||||
url: $${WS_URL}
|
||||
chain: arbitrum
|
||||
method-groups:
|
||||
enabled:
|
||||
- debug
|
||||
- filter
|
||||
methods:
|
||||
disabled:
|
||||
enabled:
|
||||
- name: txpool_content # TODO: should be disabled for rollup nodes
|
||||
...
|
||||
206
arb/nitro/arbitrum-one-nitro-pruned-pebble-hash--fireeth.yml
Normal file
206
arb/nitro/arbitrum-one-nitro-pruned-pebble-hash--fireeth.yml
Normal file
@@ -0,0 +1,206 @@
|
||||
---
|
||||
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-pruned-pebble-hash--fireeth.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/arbitrum-one \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
arbitrum-one:
|
||||
image: ${ARBITRUM_FIREETH_IMAGE:-ghcr.io/streamingfast/go-ethereum}:${ARBITRUM_ONE_FIREETH_VERSION:-v2.12.4-nitro-nitro-v3.6.7-fh3.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
|
||||
expose:
|
||||
- 8545
|
||||
entrypoint: [sh, -c, exec fireeth start reader-node --log-to-file=false --reader-node-arguments "$*", _]
|
||||
command:
|
||||
- --chain.id=42161
|
||||
- --execution.caching.archive=${ARBITRUM_ONE_ARCHIVE_DB:-false}
|
||||
- --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
|
||||
- --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
|
||||
- --init.latest=pruned
|
||||
- --metrics
|
||||
- --metrics-server.addr=0.0.0.0
|
||||
- --metrics-server.port=6070
|
||||
- --node.batch-poster.enable=false
|
||||
- --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/arbitrum-one
|
||||
- --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:
|
||||
- ${ARBITRUM_ONE_FIREETH_DATA:-arbitrum-one-fireeth}:/app/firehose-data
|
||||
- ${ARBITRUM_ONE_NITRO_PRUNED_PEBBLE_HASH_DATA:-arbitrum-one-nitro-pruned-pebble-hash}:/root/.arbitrum
|
||||
- ./tmp/arbitrum-one:/tmp
|
||||
- /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.arbitrum-one-nitro-pruned-pebble-hash-stripprefix.stripprefix.prefixes=/arbitrum-one
|
||||
- traefik.http.services.arbitrum-one-nitro-pruned-pebble-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-pruned-pebble-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.arbitrum-one-nitro-pruned-pebble-hash.rule=Path(`/arbitrum-one`) || Path(`/arbitrum-one/`)}
|
||||
- traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash.middlewares=arbitrum-one-nitro-pruned-pebble-hash-stripprefix, ipallowlist
|
||||
|
||||
arbitrum-one-firehose:
|
||||
image: ${ARBITRUM_FIREETH_IMAGE:-ghcr.io/streamingfast/go-ethereum}:${ARBITRUM_ONE_FIREETH_VERSION:-v2.12.4-nitro-nitro-v3.6.7-fh3.0}
|
||||
expose:
|
||||
- 10015
|
||||
- 10014
|
||||
environment:
|
||||
- ${ARBITRUM_ONE_FIREETH_BLOCKS_STORE:-/app/firehose-data/storage/merged-blocks}
|
||||
entrypoint: [sh, -c, exec fireeth --config-file="" --log-to-file=false start firehose index-builder relayer merger $@, _]
|
||||
command:
|
||||
- --firehose-rate-limit-bucket-fill-rate=${ARBITRUM_ONE_FIREHOSE_RATE_LIMIT_BUCKET_FILL_RATE:-1s}
|
||||
- --firehose-rate-limit-bucket-size=${ARBITRUM_ONE_FIREHOSE_RATE_LIMIT_BUCKET_SIZE:-200}
|
||||
- --log-to-file=false
|
||||
- --relayer-source=arbitrum-one:10010
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- arbitrum-one
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${ARBITRUM_ONE_FIREETH_DATA:-arbitrum-one-fireeth}:/app/firehose-data
|
||||
logging: *logging-defaults
|
||||
labels:
|
||||
- prometheus-scrape.enabled=false
|
||||
- traefik.enable=true
|
||||
- traefik.http.services.arbitrum-one-nitro-pruned-pebble-hash-firehose.loadbalancer.server.scheme=h2c
|
||||
- traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash-firehose.service=arbitrum-one-nitro-pruned-pebble-hash-firehose
|
||||
- traefik.http.services.arbitrum-one-nitro-pruned-pebble-hash-firehose.loadbalancer.server.port=10015
|
||||
- traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash-firehose.entrypoints=grpc
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash-firehose.tls.certresolver=myresolver}
|
||||
- traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash-firehose.rule=Host(`arbitrum-one-firehose.${DOMAIN}`)
|
||||
- traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash-firehose.middlewares=ipallowlist
|
||||
|
||||
arbitrum-one-events:
|
||||
image: ${ARBITRUM_FIREETH_IMAGE:-ghcr.io/streamingfast/go-ethereum}:${ARBITRUM_ONE_FIREETH_VERSION:-v2.12.4-nitro-nitro-v3.6.7-fh3.0}
|
||||
expose:
|
||||
- 10016
|
||||
entrypoint: [sh, -c, exec fireeth --config-file="" --log-to-file=false start substreams-tier1 substreams-tier2 $@, _]
|
||||
command:
|
||||
- --common-live-blocks-addr=arbitrum-one-firehose:10014
|
||||
- --log-to-file=false
|
||||
- --substreams-block-execution-timeout=${ARBITRUM_ONE_SUBSTREAMS_BLOCK_EXECUTION_TIMEOUT:-3m0s}
|
||||
- --substreams-rpc-endpoints=${ARBITRUM_ONE_EXECUTION_ARCHIVE_RPC}
|
||||
- --substreams-tier1-max-subrequests=${ARBITRUM_ONE_SUBSTREAMS_TIER1_MAX_SUBREQUESTS:-4}
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- arbitrum-one
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${ARBITRUM_ONE_FIREETH_DATA:-arbitrum-one-fireeth}:/app/firehose-data
|
||||
logging: *logging-defaults
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.services.arbitrum-one-nitro-pruned-pebble-hash-events.loadbalancer.server.scheme=h2c
|
||||
- traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash-events.service=arbitrum-one-nitro-pruned-pebble-hash-events
|
||||
- traefik.http.services.arbitrum-one-nitro-pruned-pebble-hash-events.loadbalancer.server.port=10016
|
||||
- traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash-events.entrypoints=grpc
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash-events.tls.certresolver=myresolver}
|
||||
- traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash-events.rule=Host(`arbitrum-one-events.${DOMAIN}`)
|
||||
- traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash-events.middlewares=ipallowlist
|
||||
|
||||
volumes:
|
||||
arbitrum-one-nitro-pruned-pebble-hash:
|
||||
arbitrum-one-nitro-pruned-pebble-hash_fireeth:
|
||||
|
||||
x-upstreams:
|
||||
- id: $${ID}
|
||||
labels:
|
||||
provider: $${PROVIDER}
|
||||
connection:
|
||||
generic:
|
||||
rpc:
|
||||
url: $${RPC_URL}
|
||||
ws:
|
||||
frameSize: 20Mb
|
||||
msgSize: 50Mb
|
||||
url: $${WS_URL}
|
||||
chain: arbitrum
|
||||
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
|
||||
...
|
||||
142
arb/nitro/arbitrum-one-nitro-pruned-pebble-hash.yml
Normal file
142
arb/nitro/arbitrum-one-nitro-pruned-pebble-hash.yml
Normal file
@@ -0,0 +1,142 @@
|
||||
---
|
||||
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-pruned-pebble-hash.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/arbitrum-one \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
arbitrum-one:
|
||||
image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_ONE_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:
|
||||
- --chain.id=42161
|
||||
- --execution.caching.archive=${ARBITRUM_ONE_ARCHIVE_DB:-false}
|
||||
- --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
|
||||
- --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
|
||||
- --init.latest=pruned
|
||||
- --metrics
|
||||
- --metrics-server.addr=0.0.0.0
|
||||
- --metrics-server.port=6070
|
||||
- --node.batch-poster.enable=false
|
||||
- --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/arbitrum-one
|
||||
- --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:
|
||||
- ${ARBITRUM_ONE_NITRO_PRUNED_PEBBLE_HASH_DATA:-arbitrum-one-nitro-pruned-pebble-hash}:/root/.arbitrum
|
||||
- ./tmp/arbitrum-one:/tmp
|
||||
- /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.arbitrum-one-nitro-pruned-pebble-hash-stripprefix.stripprefix.prefixes=/arbitrum-one
|
||||
- traefik.http.services.arbitrum-one-nitro-pruned-pebble-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-one-nitro-pruned-pebble-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.arbitrum-one-nitro-pruned-pebble-hash.rule=Path(`/arbitrum-one`) || Path(`/arbitrum-one/`)}
|
||||
- traefik.http.routers.arbitrum-one-nitro-pruned-pebble-hash.middlewares=arbitrum-one-nitro-pruned-pebble-hash-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
arbitrum-one-nitro-pruned-pebble-hash:
|
||||
|
||||
x-upstreams:
|
||||
- id: $${ID}
|
||||
labels:
|
||||
provider: $${PROVIDER}
|
||||
connection:
|
||||
generic:
|
||||
rpc:
|
||||
url: $${RPC_URL}
|
||||
ws:
|
||||
frameSize: 20Mb
|
||||
msgSize: 50Mb
|
||||
url: $${WS_URL}
|
||||
chain: arbitrum
|
||||
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
|
||||
...
|
||||
142
arb/nitro/arbitrum-sepolia-nitro-archive-pebble-hash.yml
Normal file
142
arb/nitro/arbitrum-sepolia-nitro-archive-pebble-hash.yml
Normal file
@@ -0,0 +1,142 @@
|
||||
---
|
||||
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-sepolia-nitro-archive-pebble-hash.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/arbitrum-sepolia-archive \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
arbitrum-sepolia-archive:
|
||||
image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_SEPOLIA_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:
|
||||
- --chain.id=421614
|
||||
- --execution.caching.archive=true
|
||||
- --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
|
||||
- --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
|
||||
- --init.latest=archive
|
||||
- --metrics
|
||||
- --metrics-server.addr=0.0.0.0
|
||||
- --metrics-server.port=6070
|
||||
- --node.batch-poster.enable=false
|
||||
- --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/arbitrum-sepolia-archive
|
||||
- --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:
|
||||
- ${ARBITRUM_SEPOLIA_NITRO_ARCHIVE_PEBBLE_HASH_DATA:-arbitrum-sepolia-nitro-archive-pebble-hash}:/root/.arbitrum
|
||||
- ./tmp/arbitrum-sepolia-archive:/tmp
|
||||
- /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.arbitrum-sepolia-nitro-archive-pebble-hash-stripprefix.stripprefix.prefixes=/arbitrum-sepolia-archive
|
||||
- traefik.http.services.arbitrum-sepolia-nitro-archive-pebble-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-sepolia-nitro-archive-pebble-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-sepolia-nitro-archive-pebble-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-sepolia-nitro-archive-pebble-hash.rule=Host(`$DOMAIN`) && (Path(`/arbitrum-sepolia-archive`) || Path(`/arbitrum-sepolia-archive/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.arbitrum-sepolia-nitro-archive-pebble-hash.rule=Path(`/arbitrum-sepolia-archive`) || Path(`/arbitrum-sepolia-archive/`)}
|
||||
- traefik.http.routers.arbitrum-sepolia-nitro-archive-pebble-hash.middlewares=arbitrum-sepolia-nitro-archive-pebble-hash-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
arbitrum-sepolia-nitro-archive-pebble-hash:
|
||||
|
||||
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
|
||||
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
|
||||
...
|
||||
142
arb/nitro/arbitrum-sepolia-nitro-pruned-pebble-hash.yml
Normal file
142
arb/nitro/arbitrum-sepolia-nitro-pruned-pebble-hash.yml
Normal file
@@ -0,0 +1,142 @@
|
||||
---
|
||||
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-sepolia-nitro-pruned-pebble-hash.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/arbitrum-sepolia \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
arbitrum-sepolia:
|
||||
image: ${ARBITRUM_NITRO_IMAGE:-offchainlabs/nitro-node}:${ARBITRUM_SEPOLIA_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:
|
||||
- --chain.id=421614
|
||||
- --execution.caching.archive=${ARBITRUM_SEPOLIA_ARCHIVE_DB:-false}
|
||||
- --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
|
||||
- --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
|
||||
- --init.latest=pruned
|
||||
- --metrics
|
||||
- --metrics-server.addr=0.0.0.0
|
||||
- --metrics-server.port=6070
|
||||
- --node.batch-poster.enable=false
|
||||
- --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/arbitrum-sepolia
|
||||
- --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:
|
||||
- ${ARBITRUM_SEPOLIA_NITRO_PRUNED_PEBBLE_HASH_DATA:-arbitrum-sepolia-nitro-pruned-pebble-hash}:/root/.arbitrum
|
||||
- ./tmp/arbitrum-sepolia:/tmp
|
||||
- /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.arbitrum-sepolia-nitro-pruned-pebble-hash-stripprefix.stripprefix.prefixes=/arbitrum-sepolia
|
||||
- traefik.http.services.arbitrum-sepolia-nitro-pruned-pebble-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-sepolia-nitro-pruned-pebble-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-sepolia-nitro-pruned-pebble-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.arbitrum-sepolia-nitro-pruned-pebble-hash.rule=Host(`$DOMAIN`) && (Path(`/arbitrum-sepolia`) || Path(`/arbitrum-sepolia/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.arbitrum-sepolia-nitro-pruned-pebble-hash.rule=Path(`/arbitrum-sepolia`) || Path(`/arbitrum-sepolia/`)}
|
||||
- traefik.http.routers.arbitrum-sepolia-nitro-pruned-pebble-hash.middlewares=arbitrum-sepolia-nitro-pruned-pebble-hash-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
arbitrum-sepolia-nitro-pruned-pebble-hash:
|
||||
|
||||
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
|
||||
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
|
||||
...
|
||||
57
arb/nitro/arbitrum-sepolia-nitro-pruned-pebble-path.yml
Normal file
57
arb/nitro/arbitrum-sepolia-nitro-pruned-pebble-path.yml
Normal file
@@ -0,0 +1,57 @@
|
||||
|
||||
|
||||
services:
|
||||
arbitrum-sepolia:
|
||||
image: 'offchainlabs/nitro-node:${NITRO_VERSION:-v3.5.3-0a9c975}'
|
||||
stop_grace_period: 3m
|
||||
user: root
|
||||
volumes:
|
||||
- 'arbitrum-sepolia-nitro-pruned-pebble-path:/root/.arbitrum'
|
||||
|
||||
- './tmp/arbitrum-sepolia:/tmp'
|
||||
expose:
|
||||
- 8545
|
||||
command:
|
||||
- --chain.id=421614
|
||||
- --execution.caching.state-scheme=path
|
||||
- --execution.rpc.gas-cap=600000000
|
||||
- --execution.caching.archive=false
|
||||
- --execution.sequencer.enable=false
|
||||
- --persistent.db-engine=pebble
|
||||
- --persistent.chain=/root/.arbitrum/arbitrum-sepolia
|
||||
- --parent-chain.connection.url=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
|
||||
- --parent-chain.blob-client.beacon-url=${ETHEREUM_SEPOLIA_BEACON_REST}
|
||||
- --http.addr=0.0.0.0
|
||||
- --http.port=8545
|
||||
- --http.vhosts=*
|
||||
- --http.corsdomain=*
|
||||
- --http.api=eth,net,web3,arb,txpool,debug
|
||||
- --ws.port=8545
|
||||
- --ws.addr=0.0.0.0
|
||||
- --ws.origins=*
|
||||
- --ws.api=eth,net,web3,arb,txpool,debug
|
||||
- --metrics
|
||||
- --metrics-server.addr=0.0.0.0
|
||||
- --metrics-server.port=6070
|
||||
- --log-type=json
|
||||
- --node.sequencer=false
|
||||
- --node.staker.enable=false
|
||||
- --node.batch-poster.enable=false
|
||||
|
||||
|
||||
|
||||
|
||||
restart: unless-stopped
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.middlewares.arbitrum-sepolia-nitro-pruned-pebble-path-stripprefix.stripprefix.prefixes=/arbitrum-sepolia"
|
||||
- "traefik.http.services.arbitrum-sepolia-nitro-pruned-pebble-path.loadbalancer.server.port=8545"
|
||||
- "traefik.http.routers.arbitrum-sepolia-nitro-pruned-pebble-path.entrypoints=websecure"
|
||||
- "traefik.http.routers.arbitrum-sepolia-nitro-pruned-pebble-path.tls.certresolver=myresolver"
|
||||
- "traefik.http.routers.arbitrum-sepolia-nitro-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/arbitrum-sepolia`)"
|
||||
- "traefik.http.routers.arbitrum-sepolia-nitro-pruned-pebble-path.middlewares=arbitrum-sepolia-nitro-pruned-pebble-path-stripprefix, ipwhitelist"
|
||||
networks:
|
||||
- chains
|
||||
|
||||
volumes:
|
||||
arbitrum-sepolia-nitro-pruned-pebble-path:
|
||||
148
arb/nitro/connext-sepolia-nitro-archive-leveldb-hash.yml
Normal file
148
arb/nitro/connext-sepolia-nitro-archive-leveldb-hash.yml
Normal 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/connext-sepolia-nitro-archive-leveldb-hash.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/connext-sepolia-archive \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
connext-sepolia-archive:
|
||||
image: ${CONNEXT_NITRO_IMAGE:-offchainlabs/nitro-node}:${CONNEXT_SEPOLIA_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=${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.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.connext-sepolia.gelato.digital
|
||||
- --node.data-availability.sequencer-inbox-address=0x727095791318912381473707332248435763608420056676
|
||||
- --node.feed.input.url=wss://feed.connext-sepolia.gelato.digital
|
||||
- --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/connext-sepolia-archive
|
||||
- --ws.addr=0.0.0.0
|
||||
- --ws.origins=*
|
||||
- --ws.port=8545
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${CONNEXT_SEPOLIA_NITRO_ARCHIVE_LEVELDB_HASH_DATA:-connext-sepolia-nitro-archive-leveldb-hash}:/root/.arbitrum
|
||||
- ./arb/connext/sepolia:/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.connext-sepolia-nitro-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/connext-sepolia-archive
|
||||
- traefik.http.services.connext-sepolia-nitro-archive-leveldb-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.connext-sepolia-nitro-archive-leveldb-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.connext-sepolia-nitro-archive-leveldb-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.connext-sepolia-nitro-archive-leveldb-hash.rule=Host(`$DOMAIN`) && (Path(`/connext-sepolia-archive`) || Path(`/connext-sepolia-archive/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.connext-sepolia-nitro-archive-leveldb-hash.rule=Path(`/connext-sepolia-archive`) || Path(`/connext-sepolia-archive/`)}
|
||||
- traefik.http.routers.connext-sepolia-nitro-archive-leveldb-hash.middlewares=connext-sepolia-nitro-archive-leveldb-hash-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
connext-sepolia-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: everclear-sepolia
|
||||
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
|
||||
...
|
||||
152
arb/nitro/connext-sepolia-nitro-pruned-pebble-path.yml
Normal file
152
arb/nitro/connext-sepolia-nitro-pruned-pebble-path.yml
Normal 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/connext-sepolia-nitro-pruned-pebble-path.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/connext-sepolia \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
connext-sepolia:
|
||||
image: ${CONNEXT_NITRO_IMAGE:-offchainlabs/nitro-node}:${CONNEXT_SEPOLIA_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=${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.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.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.connext-sepolia.gelato.digital
|
||||
- --node.data-availability.sequencer-inbox-address=0x727095791318912381473707332248435763608420056676
|
||||
- --node.feed.input.url=wss://feed.connext-sepolia.gelato.digital
|
||||
- --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/connext-sepolia
|
||||
- --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:
|
||||
- ${CONNEXT_SEPOLIA_NITRO_PRUNED_PEBBLE_PATH_DATA:-connext-sepolia-nitro-pruned-pebble-path}:/root/.arbitrum
|
||||
- ./arb/connext/sepolia:/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.connext-sepolia-nitro-pruned-pebble-path-stripprefix.stripprefix.prefixes=/connext-sepolia
|
||||
- traefik.http.services.connext-sepolia-nitro-pruned-pebble-path.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.connext-sepolia-nitro-pruned-pebble-path.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.connext-sepolia-nitro-pruned-pebble-path.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.connext-sepolia-nitro-pruned-pebble-path.rule=Host(`$DOMAIN`) && (Path(`/connext-sepolia`) || Path(`/connext-sepolia/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.connext-sepolia-nitro-pruned-pebble-path.rule=Path(`/connext-sepolia`) || Path(`/connext-sepolia/`)}
|
||||
- traefik.http.routers.connext-sepolia-nitro-pruned-pebble-path.middlewares=connext-sepolia-nitro-pruned-pebble-path-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
connext-sepolia-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: everclear-sepolia
|
||||
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
|
||||
...
|
||||
148
arb/nitro/everclear-mainnet-nitro-archive-leveldb-hash.yml
Normal file
148
arb/nitro/everclear-mainnet-nitro-archive-leveldb-hash.yml
Normal 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/everclear-mainnet-nitro-archive-leveldb-hash.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/everclear-mainnet-archive \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
everclear-mainnet-archive:
|
||||
image: ${EVERCLEAR_NITRO_IMAGE:-offchainlabs/nitro-node}:${EVERCLEAR_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=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.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_MAINNET_EXECUTION_RPC}
|
||||
- --node.data-availability.rest-aggregator.enable=true
|
||||
- --node.data-availability.rest-aggregator.urls=https://das.everclear.raas.gelato.cloud
|
||||
- --node.data-availability.sequencer-inbox-address=0x727095791318912381473707332248435763608420056676
|
||||
- --node.feed.input.url=wss://feed.everclear.raas.gelato.cloud
|
||||
- --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/everclear-mainnet-archive
|
||||
- --ws.addr=0.0.0.0
|
||||
- --ws.origins=*
|
||||
- --ws.port=8545
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${EVERCLEAR_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_DATA:-everclear-mainnet-nitro-archive-leveldb-hash}:/root/.arbitrum
|
||||
- ./arb/everclear/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.everclear-mainnet-nitro-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/everclear-mainnet-archive
|
||||
- traefik.http.services.everclear-mainnet-nitro-archive-leveldb-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.everclear-mainnet-nitro-archive-leveldb-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.everclear-mainnet-nitro-archive-leveldb-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.everclear-mainnet-nitro-archive-leveldb-hash.rule=Host(`$DOMAIN`) && (Path(`/everclear-mainnet-archive`) || Path(`/everclear-mainnet-archive/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.everclear-mainnet-nitro-archive-leveldb-hash.rule=Path(`/everclear-mainnet-archive`) || Path(`/everclear-mainnet-archive/`)}
|
||||
- traefik.http.routers.everclear-mainnet-nitro-archive-leveldb-hash.middlewares=everclear-mainnet-nitro-archive-leveldb-hash-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
everclear-mainnet-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: everclear
|
||||
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
|
||||
...
|
||||
152
arb/nitro/everclear-mainnet-nitro-pruned-pebble-path.yml
Normal file
152
arb/nitro/everclear-mainnet-nitro-pruned-pebble-path.yml
Normal 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/everclear-mainnet-nitro-pruned-pebble-path.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/everclear-mainnet \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
everclear-mainnet:
|
||||
image: ${EVERCLEAR_NITRO_IMAGE:-offchainlabs/nitro-node}:${EVERCLEAR_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=${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.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.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.everclear.raas.gelato.cloud
|
||||
- --node.data-availability.sequencer-inbox-address=0x727095791318912381473707332248435763608420056676
|
||||
- --node.feed.input.url=wss://feed.everclear.raas.gelato.cloud
|
||||
- --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/everclear-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:
|
||||
- ${EVERCLEAR_MAINNET_NITRO_PRUNED_PEBBLE_PATH_DATA:-everclear-mainnet-nitro-pruned-pebble-path}:/root/.arbitrum
|
||||
- ./arb/everclear/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.everclear-mainnet-nitro-pruned-pebble-path-stripprefix.stripprefix.prefixes=/everclear-mainnet
|
||||
- traefik.http.services.everclear-mainnet-nitro-pruned-pebble-path.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.everclear-mainnet-nitro-pruned-pebble-path.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.everclear-mainnet-nitro-pruned-pebble-path.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.everclear-mainnet-nitro-pruned-pebble-path.rule=Host(`$DOMAIN`) && (Path(`/everclear-mainnet`) || Path(`/everclear-mainnet/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.everclear-mainnet-nitro-pruned-pebble-path.rule=Path(`/everclear-mainnet`) || Path(`/everclear-mainnet/`)}
|
||||
- traefik.http.routers.everclear-mainnet-nitro-pruned-pebble-path.middlewares=everclear-mainnet-nitro-pruned-pebble-path-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
everclear-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: everclear
|
||||
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
|
||||
...
|
||||
147
arb/nitro/opencampuscodex-sepolia-nitro-archive-leveldb-hash.yml
Normal file
147
arb/nitro/opencampuscodex-sepolia-nitro-archive-leveldb-hash.yml
Normal file
@@ -0,0 +1,147 @@
|
||||
---
|
||||
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/opencampuscodex-sepolia-nitro-archive-leveldb-hash.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/opencampuscodex-sepolia-archive \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
opencampuscodex-sepolia-archive:
|
||||
image: ${OPENCAMPUSCODEX_NITRO_IMAGE:-offchainlabs/nitro-node}:${OPENCAMPUSCODEX_SEPOLIA_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=${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.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=${ARBITRUM_SEPOLIA_EXECUTION_RPC}
|
||||
- --node.data-availability.rest-aggregator.enable=true
|
||||
- --node.data-availability.rest-aggregator.urls=https://das.open-campus-codex.gelato.digital
|
||||
- --node.data-availability.sequencer-inbox-address=0xe347C1223381b9Dcd6c0F61cf81c90175A7Bae77
|
||||
- --node.feed.input.url=wss://feed.open-campus-codex.gelato.digital
|
||||
- --node.sequencer=false
|
||||
- --node.staker.enable=false
|
||||
- --parent-chain.connection.url=${ARBITRUM_SEPOLIA_EXECUTION_RPC}
|
||||
- --persistent.chain=/root/.arbitrum/opencampuscodex-sepolia-archive
|
||||
- --ws.addr=0.0.0.0
|
||||
- --ws.origins=*
|
||||
- --ws.port=8545
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${OPENCAMPUSCODEX_SEPOLIA_NITRO_ARCHIVE_LEVELDB_HASH_DATA:-opencampuscodex-sepolia-nitro-archive-leveldb-hash}:/root/.arbitrum
|
||||
- ./arb/opencampuscodex/arbitrum-sepolia:/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.opencampuscodex-sepolia-nitro-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/opencampuscodex-sepolia-archive
|
||||
- traefik.http.services.opencampuscodex-sepolia-nitro-archive-leveldb-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.opencampuscodex-sepolia-nitro-archive-leveldb-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.opencampuscodex-sepolia-nitro-archive-leveldb-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.opencampuscodex-sepolia-nitro-archive-leveldb-hash.rule=Host(`$DOMAIN`) && (Path(`/opencampuscodex-sepolia-archive`) || Path(`/opencampuscodex-sepolia-archive/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.opencampuscodex-sepolia-nitro-archive-leveldb-hash.rule=Path(`/opencampuscodex-sepolia-archive`) || Path(`/opencampuscodex-sepolia-archive/`)}
|
||||
- traefik.http.routers.opencampuscodex-sepolia-nitro-archive-leveldb-hash.middlewares=opencampuscodex-sepolia-nitro-archive-leveldb-hash-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
opencampuscodex-sepolia-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: open-campus-codex-sepolia
|
||||
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
|
||||
...
|
||||
120
arb/nitro/opencampuscodex-sepolia-nitro-pruned-pebble-hash.yml
Normal file
120
arb/nitro/opencampuscodex-sepolia-nitro-pruned-pebble-hash.yml
Normal file
@@ -0,0 +1,120 @@
|
||||
# use at your own risk
|
||||
|
||||
services:
|
||||
opencampuscodex-sepolia:
|
||||
image: ${OPENCAMPUSCODEX_NITRO_IMAGE:-offchainlabs/nitro-node}:${OPENCAMPUSCODEX_SEPOLIA_NITRO_VERSION:-v3.5.3-0a9c975}
|
||||
user: root
|
||||
ulimits:
|
||||
nofile: 1048576 # Max open files (for RPC/WS connections)
|
||||
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
|
||||
expose:
|
||||
- 8545
|
||||
- 8551
|
||||
|
||||
ports:
|
||||
- 10938:10938
|
||||
- 10938:10938/udp
|
||||
volumes:
|
||||
- ${OPENCAMPUSCODEX_SEPOLIA_NITRO_PRUNED_PEBBLE_HASH_DATA:-opencampuscodex-sepolia-nitro-pruned-pebble-hash}:/root/.arbitrum
|
||||
- /slowdisk:/slowdisk
|
||||
|
||||
- .jwtsecret:/jwtsecret:ro
|
||||
|
||||
- ./tmp/opencampuscodex-sepolia:/tmp
|
||||
|
||||
command:
|
||||
- --datadir=/root/.arbitrum
|
||||
- --port=10938
|
||||
- --bind=0.0.0.0
|
||||
- --nat=extip:${IP}
|
||||
- --http
|
||||
- --http.port=8545
|
||||
- --http.vhosts=*
|
||||
- --ws
|
||||
- --ws.port=8545
|
||||
- --ws.origins=*
|
||||
- --ws.addr=0.0.0.0
|
||||
- --http.addr=0.0.0.0
|
||||
- --maxpeers=50
|
||||
- --http.api=eth,net,web3,arb,txpool,debug
|
||||
- --ws.api=eth,net,web3,arb,txpool,debug
|
||||
|
||||
- --rpc.gascap=600000000
|
||||
- --rpc.returndatalimit=10000000
|
||||
- --rpc.txfeecap=0
|
||||
|
||||
- --execution.caching.state-scheme=hash
|
||||
- --execution.rpc.gas-cap=600000000
|
||||
- --execution.caching.archive=false
|
||||
- --execution.sequencer.enable=false
|
||||
- --persistent.db-engine=pebble
|
||||
- --persistent.chain=/root/.arbitrum/opencampuscodex-sepolia
|
||||
|
||||
- --conf.file=/config/baseConfig.json
|
||||
|
||||
- --node.sequencer=false
|
||||
- --node.staker.enable=false
|
||||
- --node.batch-poster.enable=false
|
||||
- --node.data-availability.enable=true
|
||||
- --node.data-availability.sequencer-inbox-address=0xe347C1223381b9Dcd6c0F61cf81c90175A7Bae77
|
||||
- --node.data-availability.parent-chain-node-url=${ARBITRUM_SEPOLIA_EXECUTION_RPC}
|
||||
- --node.data-availability.rest-aggregator.enable=true
|
||||
- --node.data-availability.rest-aggregator.urls=https://das.open-campus-codex.gelato.digital
|
||||
|
||||
- --node.feed.input.url=wss://feed.open-campus-codex.gelato.digital
|
||||
- --execution.forwarding-target=https://rpc.open-campus-codex.gelato.digital
|
||||
- --parent-chain.connection.url=${ARBITRUM_SEPOLIA_EXECUTION_RPC}
|
||||
|
||||
networks:
|
||||
- chains
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.middlewares.opencampuscodex-sepolia-nitro-pruned-pebble-hash-stripprefix.stripprefix.prefixes=/opencampuscodex-sepolia
|
||||
- traefik.http.services.opencampuscodex-sepolia-nitro-pruned-pebble-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.opencampuscodex-sepolia-nitro-pruned-pebble-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.opencampuscodex-sepolia-nitro-pruned-pebble-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.opencampuscodex-sepolia-nitro-pruned-pebble-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/opencampuscodex-sepolia`)}
|
||||
- ${NO_SSL:+traefik.http.routers.opencampuscodex-sepolia-nitro-pruned-pebble-hash.rule=PathPrefix(`/opencampuscodex-sepolia`)}
|
||||
- traefik.http.routers.opencampuscodex-sepolia-nitro-pruned-pebble-hash.middlewares=opencampuscodex-sepolia-nitro-pruned-pebble-hash-stripprefix, ipwhitelist
|
||||
|
||||
volumes:
|
||||
opencampuscodex-sepolia-nitro-pruned-pebble-hash:
|
||||
|
||||
x-upstreams:
|
||||
- chain: open-campus-codex-sepolia
|
||||
method-groups:
|
||||
enabled:
|
||||
- debug
|
||||
- filter
|
||||
|
||||
methods:
|
||||
disabled:
|
||||
enabled:
|
||||
# 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
|
||||
151
arb/nitro/opencampuscodex-sepolia-nitro-pruned-pebble-path.yml
Normal file
151
arb/nitro/opencampuscodex-sepolia-nitro-pruned-pebble-path.yml
Normal file
@@ -0,0 +1,151 @@
|
||||
---
|
||||
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/opencampuscodex-sepolia-nitro-pruned-pebble-path.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/opencampuscodex-sepolia \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
opencampuscodex-sepolia:
|
||||
image: ${OPENCAMPUSCODEX_NITRO_IMAGE:-offchainlabs/nitro-node}:${OPENCAMPUSCODEX_SEPOLIA_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=${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.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.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=${ARBITRUM_SEPOLIA_EXECUTION_RPC}
|
||||
- --node.data-availability.rest-aggregator.enable=true
|
||||
- --node.data-availability.rest-aggregator.urls=https://das.open-campus-codex.gelato.digital
|
||||
- --node.data-availability.sequencer-inbox-address=0xe347C1223381b9Dcd6c0F61cf81c90175A7Bae77
|
||||
- --node.feed.input.url=wss://feed.open-campus-codex.gelato.digital
|
||||
- --node.sequencer=false
|
||||
- --node.staker.enable=false
|
||||
- --parent-chain.connection.url=${ARBITRUM_SEPOLIA_EXECUTION_RPC}
|
||||
- --persistent.chain=/root/.arbitrum/opencampuscodex-sepolia
|
||||
- --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:
|
||||
- ${OPENCAMPUSCODEX_SEPOLIA_NITRO_PRUNED_PEBBLE_PATH_DATA:-opencampuscodex-sepolia-nitro-pruned-pebble-path}:/root/.arbitrum
|
||||
- ./arb/opencampuscodex/arbitrum-sepolia:/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.opencampuscodex-sepolia-nitro-pruned-pebble-path-stripprefix.stripprefix.prefixes=/opencampuscodex-sepolia
|
||||
- traefik.http.services.opencampuscodex-sepolia-nitro-pruned-pebble-path.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.opencampuscodex-sepolia-nitro-pruned-pebble-path.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.opencampuscodex-sepolia-nitro-pruned-pebble-path.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.opencampuscodex-sepolia-nitro-pruned-pebble-path.rule=Host(`$DOMAIN`) && (Path(`/opencampuscodex-sepolia`) || Path(`/opencampuscodex-sepolia/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.opencampuscodex-sepolia-nitro-pruned-pebble-path.rule=Path(`/opencampuscodex-sepolia`) || Path(`/opencampuscodex-sepolia/`)}
|
||||
- traefik.http.routers.opencampuscodex-sepolia-nitro-pruned-pebble-path.middlewares=opencampuscodex-sepolia-nitro-pruned-pebble-path-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
opencampuscodex-sepolia-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: open-campus-codex-sepolia
|
||||
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
|
||||
...
|
||||
147
arb/nitro/playblock-mainnet-nitro-archive-leveldb-hash.yml
Normal file
147
arb/nitro/playblock-mainnet-nitro-archive-leveldb-hash.yml
Normal file
@@ -0,0 +1,147 @@
|
||||
---
|
||||
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/playblock-mainnet-nitro-archive-leveldb-hash.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/playblock-mainnet-archive \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
playblock-mainnet-archive:
|
||||
image: ${PLAYBLOCK_NITRO_IMAGE:-offchainlabs/nitro-node}:${PLAYBLOCK_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=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.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=${ARBITRUM_NOVA_EXECUTION_RPC}
|
||||
- --node.data-availability.rest-aggregator.enable=true
|
||||
- --node.data-availability.rest-aggregator.urls=https://das.playblock.io
|
||||
- --node.data-availability.sequencer-inbox-address=0x1297541082195356755105700451499873350464260779639
|
||||
- --node.feed.input.url=wss://feed.playblock.io
|
||||
- --node.sequencer=false
|
||||
- --node.staker.enable=false
|
||||
- --parent-chain.connection.url=${ARBITRUM_NOVA_EXECUTION_RPC}
|
||||
- --persistent.chain=/root/.arbitrum/playblock-mainnet-archive
|
||||
- --ws.addr=0.0.0.0
|
||||
- --ws.origins=*
|
||||
- --ws.port=8545
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${PLAYBLOCK_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_DATA:-playblock-mainnet-nitro-archive-leveldb-hash}:/root/.arbitrum
|
||||
- ./arb/playblock/arbitrum-nova:/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.playblock-mainnet-nitro-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/playblock-mainnet-archive
|
||||
- traefik.http.services.playblock-mainnet-nitro-archive-leveldb-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.playblock-mainnet-nitro-archive-leveldb-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.playblock-mainnet-nitro-archive-leveldb-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.playblock-mainnet-nitro-archive-leveldb-hash.rule=Host(`$DOMAIN`) && (Path(`/playblock-mainnet-archive`) || Path(`/playblock-mainnet-archive/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.playblock-mainnet-nitro-archive-leveldb-hash.rule=Path(`/playblock-mainnet-archive`) || Path(`/playblock-mainnet-archive/`)}
|
||||
- traefik.http.routers.playblock-mainnet-nitro-archive-leveldb-hash.middlewares=playblock-mainnet-nitro-archive-leveldb-hash-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
playblock-mainnet-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: playnance
|
||||
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
|
||||
...
|
||||
151
arb/nitro/playblock-mainnet-nitro-pruned-pebble-path.yml
Normal file
151
arb/nitro/playblock-mainnet-nitro-pruned-pebble-path.yml
Normal file
@@ -0,0 +1,151 @@
|
||||
---
|
||||
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/playblock-mainnet-nitro-pruned-pebble-path.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/playblock-mainnet \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
playblock-mainnet:
|
||||
image: ${PLAYBLOCK_NITRO_IMAGE:-offchainlabs/nitro-node}:${PLAYBLOCK_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=${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.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.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=${ARBITRUM_NOVA_EXECUTION_RPC}
|
||||
- --node.data-availability.rest-aggregator.enable=true
|
||||
- --node.data-availability.rest-aggregator.urls=https://das.playblock.io
|
||||
- --node.data-availability.sequencer-inbox-address=0x1297541082195356755105700451499873350464260779639
|
||||
- --node.feed.input.url=wss://feed.playblock.io
|
||||
- --node.sequencer=false
|
||||
- --node.staker.enable=false
|
||||
- --parent-chain.connection.url=${ARBITRUM_NOVA_EXECUTION_RPC}
|
||||
- --persistent.chain=/root/.arbitrum/playblock-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:
|
||||
- ${PLAYBLOCK_MAINNET_NITRO_PRUNED_PEBBLE_PATH_DATA:-playblock-mainnet-nitro-pruned-pebble-path}:/root/.arbitrum
|
||||
- ./arb/playblock/arbitrum-nova:/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.playblock-mainnet-nitro-pruned-pebble-path-stripprefix.stripprefix.prefixes=/playblock-mainnet
|
||||
- traefik.http.services.playblock-mainnet-nitro-pruned-pebble-path.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.playblock-mainnet-nitro-pruned-pebble-path.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.playblock-mainnet-nitro-pruned-pebble-path.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.playblock-mainnet-nitro-pruned-pebble-path.rule=Host(`$DOMAIN`) && (Path(`/playblock-mainnet`) || Path(`/playblock-mainnet/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.playblock-mainnet-nitro-pruned-pebble-path.rule=Path(`/playblock-mainnet`) || Path(`/playblock-mainnet/`)}
|
||||
- traefik.http.routers.playblock-mainnet-nitro-pruned-pebble-path.middlewares=playblock-mainnet-nitro-pruned-pebble-path-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
playblock-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: playnance
|
||||
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
|
||||
...
|
||||
148
arb/nitro/plume-mainnet-nitro-archive-leveldb-hash.yml
Normal file
148
arb/nitro/plume-mainnet-nitro-archive-leveldb-hash.yml
Normal 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-mainnet-nitro-archive-leveldb-hash.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/plume-mainnet-archive \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
plume-mainnet-archive:
|
||||
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=true
|
||||
- --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
|
||||
- --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-archive
|
||||
- --ws.addr=0.0.0.0
|
||||
- --ws.origins=*
|
||||
- --ws.port=8545
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${PLUME_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_DATA:-plume-mainnet-nitro-archive-leveldb-hash}:/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-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/plume-mainnet-archive
|
||||
- traefik.http.services.plume-mainnet-nitro-archive-leveldb-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.plume-mainnet-nitro-archive-leveldb-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.plume-mainnet-nitro-archive-leveldb-hash.tls.certresolver=myresolver}
|
||||
- ${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.plume-mainnet-nitro-archive-leveldb-hash.rule=Path(`/plume-mainnet-archive`) || Path(`/plume-mainnet-archive/`)}
|
||||
- traefik.http.routers.plume-mainnet-nitro-archive-leveldb-hash.middlewares=plume-mainnet-nitro-archive-leveldb-hash-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
plume-mainnet-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
|
||||
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
|
||||
...
|
||||
152
arb/nitro/plume-mainnet-nitro-pruned-pebble-path.yml
Normal file
152
arb/nitro/plume-mainnet-nitro-pruned-pebble-path.yml
Normal 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
|
||||
...
|
||||
148
arb/nitro/plume-testnet-nitro-archive-leveldb-hash.yml
Normal file
148
arb/nitro/plume-testnet-nitro-archive-leveldb-hash.yml
Normal 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
|
||||
...
|
||||
152
arb/nitro/plume-testnet-nitro-pruned-pebble-path.yml
Normal file
152
arb/nitro/plume-testnet-nitro-pruned-pebble-path.yml
Normal 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
|
||||
...
|
||||
148
arb/nitro/real-mainnet-nitro-archive-leveldb-hash.yml
Normal file
148
arb/nitro/real-mainnet-nitro-archive-leveldb-hash.yml
Normal 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/real-mainnet-nitro-archive-leveldb-hash.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/real-mainnet-archive \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
real-mainnet-archive:
|
||||
image: ${REAL_NITRO_IMAGE:-offchainlabs/nitro-node}:${REAL_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=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.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_MAINNET_EXECUTION_RPC}
|
||||
- --node.data-availability.rest-aggregator.enable=true
|
||||
- --node.data-availability.rest-aggregator.urls=https://das.realforreal.gelato.digital
|
||||
- --node.data-availability.sequencer-inbox-address=0x466813324240923703236721233648302990016039913376
|
||||
- --node.feed.input.url=wss://feed.realforreal.gelato.digital
|
||||
- --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/real-mainnet-archive
|
||||
- --ws.addr=0.0.0.0
|
||||
- --ws.origins=*
|
||||
- --ws.port=8545
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${REAL_MAINNET_NITRO_ARCHIVE_LEVELDB_HASH_DATA:-real-mainnet-nitro-archive-leveldb-hash}:/root/.arbitrum
|
||||
- ./arb/real/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.real-mainnet-nitro-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/real-mainnet-archive
|
||||
- traefik.http.services.real-mainnet-nitro-archive-leveldb-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.real-mainnet-nitro-archive-leveldb-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.real-mainnet-nitro-archive-leveldb-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.real-mainnet-nitro-archive-leveldb-hash.rule=Host(`$DOMAIN`) && (Path(`/real-mainnet-archive`) || Path(`/real-mainnet-archive/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.real-mainnet-nitro-archive-leveldb-hash.rule=Path(`/real-mainnet-archive`) || Path(`/real-mainnet-archive/`)}
|
||||
- traefik.http.routers.real-mainnet-nitro-archive-leveldb-hash.middlewares=real-mainnet-nitro-archive-leveldb-hash-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
real-mainnet-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: real
|
||||
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
|
||||
...
|
||||
149
arb/nitro/real-mainnet-nitro-archive-pebble-hash.yml
Normal file
149
arb/nitro/real-mainnet-nitro-archive-pebble-hash.yml
Normal file
@@ -0,0 +1,149 @@
|
||||
---
|
||||
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/real-mainnet-nitro-archive-pebble-hash.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/real-mainnet-archive \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
real-mainnet-archive:
|
||||
image: ${REAL_NITRO_IMAGE:-offchainlabs/nitro-node}:${REAL_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=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.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_MAINNET_EXECUTION_RPC}
|
||||
- --node.data-availability.rest-aggregator.enable=true
|
||||
- --node.data-availability.rest-aggregator.urls=https://das.realforreal.gelato.digital
|
||||
- --node.data-availability.sequencer-inbox-address=0x466813324240923703236721233648302990016039913376
|
||||
- --node.feed.input.url=wss://feed.realforreal.gelato.digital
|
||||
- --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/real-mainnet-archive
|
||||
- --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:
|
||||
- ${REAL_MAINNET_NITRO_ARCHIVE_PEBBLE_HASH_DATA:-real-mainnet-nitro-archive-pebble-hash}:/root/.arbitrum
|
||||
- ./arb/real/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.real-mainnet-nitro-archive-pebble-hash-stripprefix.stripprefix.prefixes=/real-mainnet-archive
|
||||
- traefik.http.services.real-mainnet-nitro-archive-pebble-hash.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.real-mainnet-nitro-archive-pebble-hash.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.real-mainnet-nitro-archive-pebble-hash.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.real-mainnet-nitro-archive-pebble-hash.rule=Host(`$DOMAIN`) && (Path(`/real-mainnet-archive`) || Path(`/real-mainnet-archive/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.real-mainnet-nitro-archive-pebble-hash.rule=Path(`/real-mainnet-archive`) || Path(`/real-mainnet-archive/`)}
|
||||
- traefik.http.routers.real-mainnet-nitro-archive-pebble-hash.middlewares=real-mainnet-nitro-archive-pebble-hash-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
real-mainnet-nitro-archive-pebble-hash:
|
||||
|
||||
x-upstreams:
|
||||
- id: $${ID}
|
||||
labels:
|
||||
provider: $${PROVIDER}
|
||||
connection:
|
||||
generic:
|
||||
rpc:
|
||||
url: $${RPC_URL}
|
||||
ws:
|
||||
frameSize: 20Mb
|
||||
msgSize: 50Mb
|
||||
url: $${WS_URL}
|
||||
chain: real
|
||||
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
|
||||
...
|
||||
152
arb/nitro/real-mainnet-nitro-pruned-pebble-path.yml
Normal file
152
arb/nitro/real-mainnet-nitro-pruned-pebble-path.yml
Normal 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/real-mainnet-nitro-pruned-pebble-path.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/real-mainnet \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
real-mainnet:
|
||||
image: ${REAL_NITRO_IMAGE:-offchainlabs/nitro-node}:${REAL_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=${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.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.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.realforreal.gelato.digital
|
||||
- --node.data-availability.sequencer-inbox-address=0x466813324240923703236721233648302990016039913376
|
||||
- --node.feed.input.url=wss://feed.realforreal.gelato.digital
|
||||
- --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/real-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:
|
||||
- ${REAL_MAINNET_NITRO_PRUNED_PEBBLE_PATH_DATA:-real-mainnet-nitro-pruned-pebble-path}:/root/.arbitrum
|
||||
- ./arb/real/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.real-mainnet-nitro-pruned-pebble-path-stripprefix.stripprefix.prefixes=/real-mainnet
|
||||
- traefik.http.services.real-mainnet-nitro-pruned-pebble-path.loadbalancer.server.port=8545
|
||||
- ${NO_SSL:-traefik.http.routers.real-mainnet-nitro-pruned-pebble-path.entrypoints=websecure}
|
||||
- ${NO_SSL:-traefik.http.routers.real-mainnet-nitro-pruned-pebble-path.tls.certresolver=myresolver}
|
||||
- ${NO_SSL:-traefik.http.routers.real-mainnet-nitro-pruned-pebble-path.rule=Host(`$DOMAIN`) && (Path(`/real-mainnet`) || Path(`/real-mainnet/`))}
|
||||
- ${NO_SSL:+traefik.http.routers.real-mainnet-nitro-pruned-pebble-path.rule=Path(`/real-mainnet`) || Path(`/real-mainnet/`)}
|
||||
- traefik.http.routers.real-mainnet-nitro-pruned-pebble-path.middlewares=real-mainnet-nitro-pruned-pebble-path-stripprefix, ipallowlist
|
||||
|
||||
volumes:
|
||||
real-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: real
|
||||
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
|
||||
...
|
||||
6
arb/opencampuscodex/arbitrum-sepolia/baseConfig.json
Normal file
6
arb/opencampuscodex/arbitrum-sepolia/baseConfig.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"chain": {
|
||||
"info-json": "[{\"chain-id\":656476,\"parent-chain-id\":421614,\"parent-chain-is-arbitrum\":true,\"chain-name\":\"Codex\",\"chain-config\":{\"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\":20,\"GenesisBlockNum\":0,\"MaxCodeSize\":24576,\"MaxInitCodeSize\":49152,\"InitialChainOwner\":\"0xF46B08D9E85df74b6f24Ad85A6a655c02857D5b8\"},\"chainId\":656476},\"rollup\":{\"bridge\":\"0xbf3D64671154D1FB0b27Cb1decbE1094d7016448\",\"inbox\":\"0x67F231eDC83a66556148673863e73D705422A678\",\"sequencer-inbox\":\"0xd5131c1924f080D45CA3Ae97262c0015F675004b\",\"rollup\":\"0x0A94003d3482128c89395aBd94a41DA8eeBB59f7\",\"validator-utils\":\"0xB11EB62DD2B352886A4530A9106fE427844D515f\",\"validator-wallet-creator\":\"0xEb9885B6c0e117D339F47585cC06a2765AaE2E0b\",\"deployed-at\":41549214}}]",
|
||||
"name": "Codex"
|
||||
}
|
||||
}
|
||||
6
arb/playblock/arbitrum-nova/baseConfig.json
Normal file
6
arb/playblock/arbitrum-nova/baseConfig.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"chain": {
|
||||
"info-json": "[{\"chain-id\":1829,\"parent-chain-id\":42170,\"parent-chain-is-arbitrum\":true,\"chain-name\":\"Playblock\",\"chain-config\":{\"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\":11,\"GenesisBlockNum\":0,\"MaxCodeSize\":24576,\"MaxInitCodeSize\":49152,\"InitialChainOwner\":\"0x10Fe3cb853F7ef551E1598d91436e95d41Aea45a\"},\"chainId\":1829},\"rollup\":{\"bridge\":\"0xD4FE46D2533E7d03382ac6cACF0547F336e59DC0\",\"inbox\":\"0xFF55fB76F5671dD9eB6c62EffF8D693Bb161a3ad\",\"sequencer-inbox\":\"0xe347C1223381b9Dcd6c0F61cf81c90175A7Bae77\",\"rollup\":\"0x04ea347cC6A258A7F65D67aFb60B1d487062A1d0\",\"validator-utils\":\"0x6c21303F5986180B1394d2C89f3e883890E2867b\",\"validator-wallet-creator\":\"0x2b0E04Dc90e3fA58165CB41E2834B44A56E766aF\",\"deployed-at\":55663578}}]",
|
||||
"name": "Playblock"
|
||||
}
|
||||
}
|
||||
5
arb/plume/mainnet/baseConfig.json
Normal file
5
arb/plume/mainnet/baseConfig.json
Normal 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}}]"
|
||||
}
|
||||
}
|
||||
0
arb/plume/testnet/baseConfig.json
Normal file
0
arb/plume/testnet/baseConfig.json
Normal file
6
arb/real/mainnet/baseConfig.json
Normal file
6
arb/real/mainnet/baseConfig.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"chain": {
|
||||
"info-json": "[{\"chain-id\":111188,\"parent-chain-id\":1,\"parent-chain-is-arbitrum\":false,\"chain-name\":\"real\",\"chain-config\":{\"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\":11,\"GenesisBlockNum\":0,\"MaxCodeSize\":24576,\"MaxInitCodeSize\":49152,\"InitialChainOwner\":\"0xbB0385FebfD25E01527617938129A34bD497331e\"},\"chainId\":111188},\"rollup\":{\"bridge\":\"0x39D2EEcC8B55f46aE64789E2494dE777cDDeED03\",\"inbox\":\"0xf538671ddd60eE54BdD6FBb0E309c491A7A2df11\",\"sequencer-inbox\":\"0x51C4a227D59E49E26Ea07D8e4E9Af163da4c87A0\",\"rollup\":\"0xc4F7B37bE2bBbcF07373F28c61b1A259dfe49d2a\",\"validator-utils\":\"0x2b0E04Dc90e3fA58165CB41E2834B44A56E766aF\",\"validator-wallet-creator\":\"0x9CAd81628aB7D8e239F1A5B497313341578c5F71\",\"deployed-at\":19446518}}]",
|
||||
"name": "real"
|
||||
}
|
||||
}
|
||||
1
arbitrum-nova.yml
Symbolic link
1
arbitrum-nova.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
arb/nitro/arbitrum-nova-nitro-pruned-pebble-hash.yml
|
||||
45
arbitrum-one-mainnet-arbnode-archive-trace.yml
Normal file
45
arbitrum-one-mainnet-arbnode-archive-trace.yml
Normal file
@@ -0,0 +1,45 @@
|
||||
services:
|
||||
arbitrum-classic:
|
||||
image: 'offchainlabs/arb-node:v1.4.5-e97c1a4'
|
||||
stop_grace_period: 30s
|
||||
user: root
|
||||
volumes:
|
||||
- ${ARBITRUM_ONE_MAINNET_ARBNODE_ARCHIVE_TRACE_DATA:-arbitrum-one-mainnet-arbnode-archive-trace}:/data
|
||||
- ./arbitrum/classic-entrypoint.sh:/entrypoint.sh
|
||||
expose:
|
||||
- 8547
|
||||
- 8548
|
||||
entrypoint: ["/home/user/go/bin/arb-node"]
|
||||
command:
|
||||
- --l1.url=http://eth.drpc.org
|
||||
- --core.checkpoint-gas-frequency=156250000
|
||||
- --node.rpc.enable-l1-calls
|
||||
- --node.cache.allow-slow-lookup
|
||||
- --node.rpc.tracing.enable
|
||||
- --node.rpc.addr=0.0.0.0
|
||||
- --node.rpc.port=8547
|
||||
- --node.rpc.tracing.namespace=trace
|
||||
- --node.chain-id=42161
|
||||
- --node.ws.addr=0.0.0.0
|
||||
- --node.ws.port=8548
|
||||
- --metrics
|
||||
- --metrics-server.addr=0.0.0.0
|
||||
- --metrics-server.port=7070
|
||||
- --l2.disable-upstream
|
||||
- --persistent.chain=/data/datadir/
|
||||
- --persistent.global-config=/data/
|
||||
restart: unless-stopped
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.middlewares.arbitrum-one-mainnet-arbnode-archive-trace-stripprefix.stripprefix.prefixes=/arbitrum-classic"
|
||||
- "traefik.http.services.arbitrum-one-mainnet-arbnode-archive-trace.loadbalancer.server.port=8547"
|
||||
- "${NO_SSL:-traefik.http.routers.arbitrum-one-mainnet-arbnode-archive-trace.entrypoints=websecure}"
|
||||
- "${NO_SSL:-traefik.http.routers.arbitrum-one-mainnet-arbnode-archive-trace.tls.certresolver=myresolver}"
|
||||
- "${NO_SSL:-traefik.http.routers.arbitrum-one-mainnet-arbnode-archive-trace.rule=Host(`$DOMAIN`) && PathPrefix(`/arbitrum-classic`)}"
|
||||
- "${NO_SSL:+traefik.http.routers.arbitrum-one-mainnet-arbnode-archive-trace.rule=PathPrefix(`/arbitrum-classic`)}"
|
||||
- "traefik.http.routers.arbitrum-one-mainnet-arbnode-archive-trace.middlewares=arbitrum-one-mainnet-arbnode-archive-trace-stripprefix, ipwhitelist"
|
||||
networks:
|
||||
- chains
|
||||
|
||||
volumes:
|
||||
arbitrum-one-mainnet-arbnode-archive-trace:
|
||||
1
arbitrum-one-nitro-archive.yml
Symbolic link
1
arbitrum-one-nitro-archive.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
arb/nitro/alephzero-mainnet-nitro-archive-leveldb-hash.yml
|
||||
1
arbitrum-one.yml
Symbolic link
1
arbitrum-one.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
arb/nitro/arbitrum-one-nitro-pruned-pebble-hash.yml
|
||||
1
arbitrum-sepolia-archive.yml
Symbolic link
1
arbitrum-sepolia-archive.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
arb/nitro/arbitrum-sepolia-nitro-archive-pebble-hash.yml
|
||||
1
arbitrum-sepolia-nitro-pruned-pebble-hash.yml
Symbolic link
1
arbitrum-sepolia-nitro-pruned-pebble-hash.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
arb/nitro/arbitrum-sepolia-nitro-pruned-pebble-hash.yml
|
||||
1
arbitrum-sepolia.yml
Symbolic link
1
arbitrum-sepolia.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
arb/nitro/arbitrum-sepolia-nitro-pruned-pebble-hash.yml
|
||||
1
avalanche-fuji.yml
Symbolic link
1
avalanche-fuji.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
avalanche/go/avalanche-fuji-go-pruned-pebbledb.yml
|
||||
1
avalanche-mainnet-archive.yml
Symbolic link
1
avalanche-mainnet-archive.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
avalanche/go/avalanche-mainnet-go-archive-leveldb.yml
|
||||
51
avalanche-mainnet-go-archive.yml
Normal file
51
avalanche-mainnet-go-archive.yml
Normal file
@@ -0,0 +1,51 @@
|
||||
services:
|
||||
avalanche-archive-client:
|
||||
image: avaplatform/avalanchego:${AVALANCHEGO_VERSION:-v1.12.2}
|
||||
ulimits:
|
||||
nofile: 1048576
|
||||
expose:
|
||||
- "9650"
|
||||
- "30720"
|
||||
ports:
|
||||
- "30720:30720/tcp"
|
||||
- "30720:30720/udp"
|
||||
volumes:
|
||||
- ${AVALANCHE_MAINNET_GO_ARCHIVE_DATA:-avalanche-mainnet-go-archive}:/root/.avalanchego
|
||||
- ./avalanche/configs/chains/C/archive-config.json:/root/.avalanchego/configs/chains/C/config.json
|
||||
environment:
|
||||
- "IP=${IP}"
|
||||
networks:
|
||||
- chains
|
||||
command: "/avalanchego/build/avalanchego --http-host= --http-allowed-hosts=* --staking-port=30720 --public-ip=$IP"
|
||||
restart: unless-stopped
|
||||
|
||||
|
||||
avalanche-archive:
|
||||
restart: unless-stopped
|
||||
image: nginx
|
||||
depends_on:
|
||||
- avalanche-archive-client
|
||||
expose:
|
||||
- 80
|
||||
environment:
|
||||
PROXY_HOST: avalanche-archive-client
|
||||
RPC_PORT: 9650
|
||||
RPC_PATH: /ext/bc/C/rpc
|
||||
WS_PORT: 9650
|
||||
WS_PATH: /ext/bc/C/ws
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ./nginx-proxy:/etc/nginx/templates
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.middlewares.avalanche-mainnet-go-archive-stripprefix.stripprefix.prefixes=/avalanche-archive"
|
||||
- "traefik.http.services.avalanche-mainnet-go-archive.loadbalancer.server.port=80"
|
||||
- "${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-archive.entrypoints=websecure}"
|
||||
- "${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-archive.tls.certresolver=myresolver}"
|
||||
- "${NO_SSL:-traefik.http.routers.avalanche-mainnet-go-archive.rule=Host(`$DOMAIN`) && PathPrefix(`/avalanche-archive`)}"
|
||||
- "${NO_SSL:+traefik.http.routers.avalanche-mainnet-go-archive.rule=PathPrefix(`/avalanche-archive`)}"
|
||||
- "traefik.http.routers.avalanche-mainnet-go-archive.middlewares=avalanche-mainnet-go-archive-stripprefix, ipwhitelist"
|
||||
|
||||
volumes:
|
||||
avalanche-mainnet-go-archive:
|
||||
1
avalanche-mainnet.yml
Symbolic link
1
avalanche-mainnet.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
avalanche/go/avalanche-mainnet-go-pruned-pebbledb.yml
|
||||
@@ -1,34 +0,0 @@
|
||||
version: '3.1'
|
||||
|
||||
services:
|
||||
avalanche:
|
||||
image: avaplatform/avalanchego:v1.7.7
|
||||
expose:
|
||||
- "9650"
|
||||
- "9651"
|
||||
ports:
|
||||
- "9651:9651/tcp"
|
||||
- "9651:9651/udp"
|
||||
volumes:
|
||||
- avalanche:/root/.avalanchego
|
||||
- ./avalanche/configs/chains/C/config.json:/root/.avalanchego/configs/chains/C/config.json
|
||||
networks:
|
||||
- chains
|
||||
command: "/avalanchego/build/avalanchego --http-host="
|
||||
restart: unless-stopped
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.middlewares.avalanche-replacepath.replacepath.path=/ext/bc/C/rpc"
|
||||
- "traefik.http.middlewares.avalanche-stripprefix.stripprefix.prefixes=/avalanche"
|
||||
- "traefik.http.services.avalanche.loadbalancer.server.port=9650"
|
||||
- "traefik.http.routers.avalanche.entrypoints=websecure"
|
||||
- "traefik.http.routers.avalanche.tls.certresolver=myresolver"
|
||||
- "traefik.http.routers.avalanche.rule=Host(`$DOMAIN`) && PathPrefix(`/avalanche`)"
|
||||
- "traefik.http.routers.avalanche.middlewares=avalanche-stripprefix, avalanche-replacepath, ipwhitelist"
|
||||
- "prometheus-scrape.enabled=true"
|
||||
- "prometheus-scrape.port=9650"
|
||||
- "prometheus-scrape.job_name=avalanche"
|
||||
- "prometheus-scrape.metrics_path=/ext/metrics"
|
||||
|
||||
volumes:
|
||||
avalanche:
|
||||
@@ -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": ""
|
||||
}
|
||||
6
avalanche/fuji/archive/C/config.json
Normal file
6
avalanche/fuji/archive/C/config.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"state-sync-enabled": false,
|
||||
"pruning-enabled": false,
|
||||
"rpc-gas-cap": 2500000000,
|
||||
"eth-rpc-gas-limit": 2500000000
|
||||
}
|
||||
4
avalanche/fuji/pruned/C/config.json
Normal file
4
avalanche/fuji/pruned/C/config.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"rpc-gas-cap": 2500000000,
|
||||
"eth-rpc-gas-limit": 2500000000
|
||||
}
|
||||
118
avalanche/go/avalanche-fuji-go-archive-leveldb.yml
Normal file
118
avalanche/go/avalanche-fuji-go-archive-leveldb.yml
Normal 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-archive-leveldb.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/avalanche-fuji-archive \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
avalanche-fuji-archive:
|
||||
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:
|
||||
- 10046:10046
|
||||
- 10046:10046/udp
|
||||
expose:
|
||||
- 9650
|
||||
entrypoint: [/avalanchego/build/avalanchego]
|
||||
command:
|
||||
- --chain-config-dir=/config/archive
|
||||
- --db-type=leveldb
|
||||
- --http-allowed-hosts=*
|
||||
- --http-host=
|
||||
- --network-id=fuji
|
||||
- --public-ip=${IP}
|
||||
- --staking-port=10046
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${AVALANCHE_FUJI_GO_ARCHIVE_LEVELDB_DATA:-avalanche-fuji-go-archive-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-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.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.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=Path(`/avalanche-fuji-archive`) || Path(`/avalanche-fuji-archive/`)}
|
||||
- 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:
|
||||
avalanche-fuji-go-archive-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
|
||||
...
|
||||
118
avalanche/go/avalanche-fuji-go-pruned-leveldb.yml
Normal file
118
avalanche/go/avalanche-fuji-go-pruned-leveldb.yml
Normal 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
|
||||
...
|
||||
118
avalanche/go/avalanche-fuji-go-pruned-pebbledb.yml
Normal file
118
avalanche/go/avalanche-fuji-go-pruned-pebbledb.yml
Normal 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-pebbledb.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:
|
||||
- 10350:10350
|
||||
- 10350:10350/udp
|
||||
expose:
|
||||
- 9650
|
||||
entrypoint: [/avalanchego/build/avalanchego]
|
||||
command:
|
||||
- --chain-config-dir=/config/pruned
|
||||
- --db-type=pebbledb
|
||||
- --http-allowed-hosts=*
|
||||
- --http-host=
|
||||
- --network-id=fuji
|
||||
- --public-ip=${IP}
|
||||
- --staking-port=10350
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${AVALANCHE_FUJI_GO_PRUNED_PEBBLEDB_DATA:-avalanche-fuji-go-pruned-pebbledb}:/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-pebbledb-set-path.replacepath.path=/ext/bc/C/rpc
|
||||
- traefik.http.middlewares.avalanche-fuji-go-pruned-pebbledb-stripprefix.stripprefix.prefixes=/avalanche-fuji
|
||||
- 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.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=Path(`/avalanche-fuji`) || Path(`/avalanche-fuji/`)}
|
||||
- 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:
|
||||
avalanche-fuji-go-pruned-pebbledb:
|
||||
|
||||
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
|
||||
...
|
||||
118
avalanche/go/avalanche-mainnet-go-archive-leveldb.yml
Normal file
118
avalanche/go/avalanche-mainnet-go-archive-leveldb.yml
Normal 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-archive-leveldb.yml
|
||||
#
|
||||
# docker compose up -d
|
||||
#
|
||||
# curl -X POST https://${IP}.traefik.me/avalanche-mainnet-archive \
|
||||
# -H "Content-Type: application/json" \
|
||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||
|
||||
services:
|
||||
avalanche-mainnet-archive:
|
||||
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:
|
||||
- 12934:12934
|
||||
- 12934:12934/udp
|
||||
expose:
|
||||
- 9650
|
||||
entrypoint: [/avalanchego/build/avalanchego]
|
||||
command:
|
||||
- --chain-config-dir=/config/archive
|
||||
- --db-type=leveldb
|
||||
- --http-allowed-hosts=*
|
||||
- --http-host=
|
||||
- --network-id=mainnet
|
||||
- --public-ip=${IP}
|
||||
- --staking-port=12934
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${AVALANCHE_MAINNET_GO_ARCHIVE_LEVELDB_DATA:-avalanche-mainnet-go-archive-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-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.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.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=Path(`/avalanche-mainnet-archive`) || Path(`/avalanche-mainnet-archive/`)}
|
||||
- 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:
|
||||
avalanche-mainnet-go-archive-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
|
||||
...
|
||||
118
avalanche/go/avalanche-mainnet-go-pruned-leveldb.yml
Normal file
118
avalanche/go/avalanche-mainnet-go-pruned-leveldb.yml
Normal 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
|
||||
...
|
||||
118
avalanche/go/avalanche-mainnet-go-pruned-pebbledb.yml
Normal file
118
avalanche/go/avalanche-mainnet-go-pruned-pebbledb.yml
Normal 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-pebbledb.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:
|
||||
- 11929:11929
|
||||
- 11929:11929/udp
|
||||
expose:
|
||||
- 9650
|
||||
entrypoint: [/avalanchego/build/avalanchego]
|
||||
command:
|
||||
- --chain-config-dir=/config/pruned
|
||||
- --db-type=pebbledb
|
||||
- --http-allowed-hosts=*
|
||||
- --http-host=
|
||||
- --network-id=mainnet
|
||||
- --public-ip=${IP}
|
||||
- --staking-port=11929
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 5m
|
||||
networks:
|
||||
- chains
|
||||
volumes:
|
||||
- ${AVALANCHE_MAINNET_GO_PRUNED_PEBBLEDB_DATA:-avalanche-mainnet-go-pruned-pebbledb}:/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-pebbledb-set-path.replacepath.path=/ext/bc/C/rpc
|
||||
- traefik.http.middlewares.avalanche-mainnet-go-pruned-pebbledb-stripprefix.stripprefix.prefixes=/avalanche-mainnet
|
||||
- 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.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=Path(`/avalanche-mainnet`) || Path(`/avalanche-mainnet/`)}
|
||||
- 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:
|
||||
avalanche-mainnet-go-pruned-pebbledb:
|
||||
|
||||
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
|
||||
...
|
||||
4
avalanche/mainnet/archive/C/config.json
Normal file
4
avalanche/mainnet/archive/C/config.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"state-sync-enabled": false,
|
||||
"pruning-enabled": false
|
||||
}
|
||||
21
avalanche/mainnet/pruned/C/config.json
Normal file
21
avalanche/mainnet/pruned/C/config.json
Normal 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
|
||||
}
|
||||
35
backup-http.yml
Normal file
35
backup-http.yml
Normal file
@@ -0,0 +1,35 @@
|
||||
services:
|
||||
backup-http:
|
||||
image: abassi/node-http-server:latest
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /backup:/dir_to_serve
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.middlewares.backup-server-stripprefix.stripprefix.prefixes=/backup"
|
||||
- "traefik.http.services.backup-server.loadbalancer.server.port=8080"
|
||||
- "traefik.http.routers.backup-server.entrypoints=websecure"
|
||||
- "traefik.http.routers.backup-server.tls.certresolver=myresolver"
|
||||
- "traefik.http.routers.backup-server.rule=Host(`$DOMAIN`) && PathPrefix(`/backup`)"
|
||||
- "traefik.http.routers.backup-server.middlewares=backup-server-stripprefix"
|
||||
networks:
|
||||
- chains
|
||||
|
||||
backup-dav:
|
||||
image: 117503445/go_webdav:latest
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- "dav=/null,/webdav,null,null,false"
|
||||
volumes:
|
||||
- /backup:/webdav
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.middlewares.backup-storage-stripprefix.stripprefix.prefixes=/dav"
|
||||
- "traefik.http.services.backup-storage.loadbalancer.server.port=80"
|
||||
- "traefik.http.routers.backup-storage.entrypoints=websecure"
|
||||
- "traefik.http.routers.backup-storage.tls.certresolver=myresolver"
|
||||
- "traefik.http.routers.backup-storage.rule=Host(`$DOMAIN`) && PathPrefix(`/dav`)"
|
||||
- "traefik.http.routers.backup-storage.middlewares=backup-storage-stripprefix"
|
||||
networks:
|
||||
- chains
|
||||
|
||||
51
backup-node.sh
Executable file
51
backup-node.sh
Executable file
@@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
|
||||
backup_dir="/backup"
|
||||
|
||||
if [[ -n $2 ]]; then
|
||||
echo "upload backup via webdav to $2"
|
||||
else
|
||||
if [ ! -d "$backup_dir" ]; then
|
||||
echo "Error: /backup directory does not exist"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Read the JSON input and extract the list of keys
|
||||
keys=$(cat /root/rpc/$1.yml | yaml2json - | jq '.volumes' | jq -r 'keys[]')
|
||||
|
||||
# Iterate over the list of keys
|
||||
for key in $keys; do
|
||||
echo "Executing command with key: /var/lib/docker/volumes/rpc_$key/_data"
|
||||
|
||||
source_folder="/var/lib/docker/volumes/rpc_$key/_data"
|
||||
folder_size=$(du -shL "$source_folder" | awk '{
|
||||
size = $1
|
||||
sub(/[Kk]$/, "", size) # Remove 'K' suffix if present
|
||||
sub(/[Mm]$/, "", size) # Remove 'M' suffix if present
|
||||
sub(/[Gg]$/, "", size) # Remove 'G' suffix if present
|
||||
sub(/[Tt]$/, "", size) # Remove 'T' suffix if present
|
||||
if ($1 ~ /[Kk]$/) {
|
||||
size *= 0.001 # Convert kilobytes to gigabytes
|
||||
} else if ($1 ~ /[Mm]$/) {
|
||||
size *= 0.001 # Convert megabytes to gigabytes
|
||||
} else if ($1 ~ /[Tt]$/) {
|
||||
size *= 1000 # convert terabytes to gigabytes
|
||||
}
|
||||
print size
|
||||
}')
|
||||
|
||||
folder_size_gb=$(printf "%.0f" "$folder_size")
|
||||
|
||||
target_file="rpc_$key-$(date +'%Y-%m-%d-%H-%M-%S')-${folder_size_gb}G.tar.zst"
|
||||
|
||||
#echo "$target_file"
|
||||
|
||||
if [[ -n $2 ]]; then
|
||||
tar -cf - --dereference "$source_folder" | pv -pterb -s $(du -sb "$source_folder" | awk '{print $1}') | zstd | curl -X PUT --upload-file - "$2/null/uploading-$target_file"
|
||||
curl -X MOVE -H "Destination: /null/$target_file" "$2/null/uploading-$target_file"
|
||||
else
|
||||
tar -cf - --dereference "$source_folder" | pv -pterb -s $(du -sb "$source_folder" | awk '{print $1}') | zstd -o "/backup/uploading-$target_file"
|
||||
mv "/backup/uploading-$target_file" "/backup/$target_file"
|
||||
fi
|
||||
done
|
||||
1
base-mainnet-op-erigon-archive-trace.yml
Symbolic link
1
base-mainnet-op-erigon-archive-trace.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
op/erigon/base-mainnet-op-erigon-archive-trace.yml
|
||||
1
base-mainnet-op-reth-archive-trace.yml
Symbolic link
1
base-mainnet-op-reth-archive-trace.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
op/reth/base-mainnet-op-reth-archive-trace.yml
|
||||
1
base-mainnet-op-reth-pruned.yml
Symbolic link
1
base-mainnet-op-reth-pruned.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
op/reth/base-mainnet-op-reth-pruned-trace.yml
|
||||
1
base-mainnet.yml
Symbolic link
1
base-mainnet.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
op/geth/base-mainnet-op-geth-pruned-pebble-path.yml
|
||||
1
base-sepolia-op-reth-pruned.yml
Symbolic link
1
base-sepolia-op-reth-pruned.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
op/reth/base-sepolia-op-reth-pruned-trace.yml
|
||||
1
base-sepolia.yml
Symbolic link
1
base-sepolia.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
op/geth/base-sepolia-op-geth-pruned-pebble-path.yml
|
||||
6
base.yml
Normal file
6
base.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
networks:
|
||||
chains:
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: ${CHAINS_SUBNET:-192.168.0.0/26}
|
||||
24
benchmark-proxy.yml
Normal file
24
benchmark-proxy.yml
Normal file
@@ -0,0 +1,24 @@
|
||||
services:
|
||||
benchmark-proxy:
|
||||
build:
|
||||
context: ./benchmark-proxy
|
||||
dockerfile: Dockerfile
|
||||
expose:
|
||||
- "8080"
|
||||
environment:
|
||||
- LISTEN_ADDR=:8080
|
||||
- SUMMARY_INTERVAL=60
|
||||
- PRIMARY_BACKEND=${BENCHMARK_PROXY_PRIMARY_BACKEND}
|
||||
- SECONDARY_BACKENDS=${BENCHMARK_PROXY_SECONDARY_BACKENDS}
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- chains
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.middlewares.benchmark-proxy-stripprefix.stripprefix.prefixes=/benchmark"
|
||||
- "traefik.http.services.benchmark-proxy.loadbalancer.server.port=8080"
|
||||
- "${NO_SSL:-traefik.http.routers.benchmark-proxy.entrypoints=websecure}"
|
||||
- "${NO_SSL:-traefik.http.routers.benchmark-proxy.tls.certresolver=myresolver}"
|
||||
- "${NO_SSL:-traefik.http.routers.benchmark-proxy.rule=Host(`$DOMAIN`) && PathPrefix(`/benchmark`)}"
|
||||
- "${NO_SSL:+traefik.http.routers.benchmark-proxy.rule=PathPrefix(`/benchmark`)}"
|
||||
- "traefik.http.routers.benchmark-proxy.middlewares=benchmark-proxy-stripprefix, ipwhitelist"
|
||||
1
berachain-bartio.yml
Symbolic link
1
berachain-bartio.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
berachain/reth/berachain-bartio-reth-archive-trace.yml
|
||||
1
berachain-bepolia-archive.yml
Symbolic link
1
berachain-bepolia-archive.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
berachain/reth/berachain-bepolia-reth-archive-trace.yml
|
||||
1
berachain-mainnet-archive.yml
Symbolic link
1
berachain-mainnet-archive.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
berachain/reth/berachain-mainnet-reth-archive-trace.yml
|
||||
1
berachain-mainnet.yml
Symbolic link
1
berachain-mainnet.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
berachain/reth/berachain-mainnet-reth-pruned-trace.yml
|
||||
9
berachain/beacon-kit.Dockerfile
Normal file
9
berachain/beacon-kit.Dockerfile
Normal file
@@ -0,0 +1,9 @@
|
||||
ARG BEACONKIT_IMAGE
|
||||
ARG BEACONKIT_VERSION
|
||||
FROM ${BEACONKIT_IMAGE}:${BEACONKIT_VERSION}
|
||||
|
||||
COPY ./scripts/init.sh /usr/local/bin/init.sh
|
||||
|
||||
RUN chmod +x /usr/local/bin/init.sh
|
||||
|
||||
ENTRYPOINT [ "init.sh" ]
|
||||
185
berachain/geth/berachain-bepolia-geth-pruned-pebble-path.yml
Normal file
185
berachain/geth/berachain-bepolia-geth-pruned-pebble-path.yml
Normal 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
|
||||
...
|
||||
183
berachain/geth/berachain-mainnet-geth-pruned-pebble-path.yml
Normal file
183
berachain/geth/berachain-mainnet-geth-pruned-pebble-path.yml
Normal 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
|
||||
...
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user