Compare commits

..
Author SHA1 Message Date
czarly 0046553005 fix 2022-10-19 14:58:27 +04:00
czarly e7efbbb746 make upstreams variable 2022-10-19 14:20:23 +04:00
czarly a12453aa1d fix 2022-10-19 14:02:31 +04:00
czarly adfff835d1 fix 2022-10-19 13:47:55 +04:00
czarly 4fdba5f39a fix 2022-10-19 13:41:34 +04:00
czarly 5a89240a61 fix 2022-10-19 13:33:49 +04:00
czarly 4b40259c93 fix 2022-10-19 13:33:02 +04:00
czarly 79e58187f1 route dshackle via traefik and add prometheus scraping 2022-10-19 13:29:55 +04:00
czarly cca28c35a7 added dshackle confgured with free node providers for ethereum 2022-10-19 13:20:24 +04:00
cventastic 7163d7e630 extend heimdall bootnodes/seeds 2022-10-17 17:45:04 +02:00
cventastic 81f70d04c2 remove testnets goerli.yml, rinkeby.yml, ropsten.yml 2022-10-17 12:03:37 +02:00
cventastic 7f5b7fbec6 new snapshot urls for bootstrapping polygon 2022-10-17 11:58:35 +02:00
cventastic 2f4a4011f8 pocket-fr.yml doesnt exist anymore, its now pokt-lt-2 2022-10-06 09:57:33 +02:00
cventastic 0553baaac8 new pocket release candidate added to pokt/Dockerfile 2022-10-06 09:46:39 +02:00
cventastic 4a8b3a4cc1 revert ulimit for rpc-base.yml and erigon.yml 2022-10-05 13:46:47 +02:00
cventastic 31cda87d29 ulimit for rpc-base.yml and erigon.yml 2022-10-05 09:37:40 +02:00
cventastic eaae1ef854 revert:
ulimit and loglevel again
2022-10-04 11:59:50 +02:00
cventastic e91ef6a623 ulimit and loglevel. to test side-by-side. 2022-10-04 11:50:28 +02:00
cventastic 5073b5543c no noticeable impact on performance by traefik log settings. revert to DEBUG 2022-10-04 11:15:48 +02:00
cventastic ef6c33b3b4 test traefik loglevel impact on performance 2022-10-04 11:07:55 +02:00
cventastic 44d6000048 no performance gain 2022-10-03 16:34:48 +02:00
cventastic a8a60fb947 test ulimit for concurrent connections 2022-10-03 16:31:53 +02:00
cventastic badd46c679 update datasources.yml with new rpcs 2022-09-28 17:46:05 +02:00
cventastic d7d4acbb58 update pokt-metrics for consolidated nodes 2022-09-28 17:31:04 +02:00
cventastic 80d7e588b6 add TODO 2022-09-27 11:16:42 +02:00
cventastic 7a37728c8b cleanup 2022-09-27 10:18:26 +02:00
cventastic 16d1a1abce move pokt-fr-1 to pokt-lt-2 2022-09-26 14:22:02 +02:00
cventastic 066b7be393 forgot volumes 2022-09-26 11:17:49 +02:00
cventastic 8c4e29d98b remove redundant nodes, stake weighting 2022-09-26 11:17:23 +02:00
cventastic 63beaf9258 cleanup 2022-09-26 00:23:10 +02:00
cventastic 9e0b47a9fc util scripts redundant 2022-09-26 00:12:51 +02:00
cventastic 2ab055e7a8 add port 2022-09-25 23:58:20 +02:00
cventastic d30accaa19 add whitelist service 2022-09-25 23:54:04 +02:00
cventastic 48fdbf0aac add protokoll? 2022-09-12 18:07:35 +02:00
cventastic 989d2c06c8 add protokoll 2022-09-12 18:07:16 +02:00
cventastic 04d4dd003f add port? 2022-09-12 18:06:27 +02:00
cventastic be497cfcaf accept TOS 2022-09-12 17:59:10 +02:00
cventastic 3dbdefe715 add prysm.yml 2022-09-12 17:57:32 +02:00
cventastic 303dcdca99 add grace period 2022-09-12 17:31:05 +02:00
cventastic cfb4490a6d forgot comma 2022-09-12 17:21:54 +02:00
cventastic d5e5288bd2 update geth for merge 2022-09-12 17:20:33 +02:00
cventastic 1b0de278ae update chain dash 2022-09-08 15:32:21 +02:00
cventastic 0fbcaf1c7e naming of dashboards 2022-09-08 15:23:39 +02:00
cventastic 0ac21e3c4e add erigon dash 2022-09-08 14:48:59 +02:00
cventastic b693c45ddd default grace period to aggressive with 10 sec 2022-09-08 01:09:50 +02:00
cventastic 460478c6a2 forgot metric ports 2022-09-07 23:51:59 +02:00
cventastic 0136227b4c forgot metric ports 2022-09-07 23:16:13 +02:00
cventastic f6d85e4014 add monitoring network 2022-09-07 23:08:31 +02:00
cventastic 22c91bf68c add monitoring network 2022-09-07 22:29:48 +02:00
cventastic a50380028f bump monitoring.yml 2022-09-06 17:15:44 +02:00
cventastic 1c8dd77738 bump pocket version 2022-09-06 16:36:39 +02:00
cventastic ffd67953f7 bump erigon to 2022.08.03 2022-09-06 13:22:17 +02:00
cventastic 8a483e88fa no storage 2022-09-05 10:25:00 +02:00
cventastic 529a5f00f4 wrong address format 2022-09-05 10:18:26 +02:00
cventastic e66fe77265 wrong port 2022-09-05 10:17:23 +02:00
cventastic ae3dc849e4 added beaconchain api and traefik to lighthouse 2022-09-05 10:16:58 +02:00
cventastic fabe1aa013 remove quotation 2022-08-26 15:12:02 +02:00
cventastic 0ccb87cb94 connect lighthouse 2022-08-26 15:11:08 +02:00
cventastic ea12105a03 set correct release tag 2022-08-26 14:52:14 +02:00
cventastic 76b214e5bf rework erigon for merge 2022-08-26 14:49:15 +02:00
cventastic 1a9e41eca3 bump to new pokt version 2022-08-15 10:23:24 +02:00
cventastic 1f5d23a1a9 remove tendermind port... metrics also get exposed over 8083 2022-07-06 20:56:26 +02:00
cventastic 9554eaa726 add prometheus to pocket-frontend.yml 2022-07-04 12:06:20 +02:00
cventastic fae11760d2 add all chains to dash 2022-07-01 17:15:53 +02:00
cventastic 417f01da21 remove datasource 2022-07-01 14:49:24 +02:00
cventastic b6f1f4f2ab remove datasource 2022-07-01 14:48:05 +02:00
cventastic 7c81a895d5 forgot prometheus labels 2022-07-01 14:37:06 +02:00
cventastic ba0674fcb1 modularize pocket-lt.yml file 2022-07-01 14:34:07 +02:00
cventastic 6abd3efb95 add autodiscover to pocket-lt.yml 2022-07-01 14:31:03 +02:00
cventastic 5d7e8809e3 remove duplicate 2022-07-01 14:23:49 +02:00
cventastic 499dcdd4c4 depends_on has to be array 2022-07-01 14:21:58 +02:00
cventastic be27baa9e5 add depends on, otherwise network gets lost 2022-07-01 14:20:09 +02:00
cventastic 7410de9dcf conflicting parameters expose/network_mode 2022-07-01 14:18:08 +02:00
cventastic b966320f77 conflicting parameters expose/network_mode 2022-06-28 12:26:32 +02:00
cventastic dbdb6e963c conflicting parameters port/network_mode 2022-06-28 12:25:39 +02:00
cventastic 7235941152 put promehteus into wireguard network 2022-06-28 12:24:03 +02:00
cventastic 2d7342c91a added new format for scraping target, comma seperated ports 2022-06-28 11:12:04 +02:00
cventastic e3b2558333 added forked prometheus-docker-sd 2022-06-28 11:07:51 +02:00
cventastic b625adc085 format still doesnt work 2022-06-23 14:36:51 +02:00
cventastic 8a6cd18038 format doesnt work 2022-06-23 14:33:02 +02:00
cventastic 1b1913d335 overhaul monitoring 2022-06-23 14:30:17 +02:00
cventastic a825b27ccd "latest" tag actually was "stable"-tag. with old db schema. 2022-06-19 14:47:18 +02:00
cventastic 8665068892 thought the i built from source. turns out i left image argument inside. latest=devel. 2022-06-19 12:28:33 +02:00
cventastic b4a68effbc update to "stable" which still uses old db-format. not going to be useful for the merge 2022-06-17 11:58:46 +02:00
cventastic 0567c540ce update to 2022.03.02 first 2022-06-17 10:26:28 +02:00
cventastic a24a94df2b reeeewind. must update to previous versions first for db update. 2022-06-17 10:05:04 +02:00
cventastic 7108f5521b new version for gray glacier fork 2022-06-17 10:00:54 +02:00
cventastic ca8ec01603 new version for bsc fork 2022-06-16 14:02:09 +02:00
cventastic 9a0e0e7e6c grey glacier fork 2022-06-16 10:49:27 +02:00
cventastic 5244b20f21 addrbook volume for pocket-frontend.yml 2022-06-13 14:35:11 +02:00
cventastic b108e7ad9a add pocket-de.yml 2022-06-13 13:55:53 +02:00
cventastic 2242491f83 pocket-lt.yml make addressbook persistent but not the rest of the config files 2022-06-13 13:02:25 +02:00
cventastic 6206fed2f8 add volume for addrbook 2022-06-13 11:50:31 +02:00
cventastic 1f9087aee2 put addrbook in its own folder, so it can be persisted in volume 2022-06-13 11:48:56 +02:00
cventastic 20059b3ebf put addrbook in its own folder, so it can be persisted in volume 2022-06-13 11:46:20 +02:00
cventastic e70a7d78ab rewind 2022-06-10 19:03:14 +02:00
cventastic f757bb53d9 update volume to bind mount 2022-06-10 18:49:35 +02:00
cventastic d4439b4cd4 update chains.json, use local pokt-rpc 2022-06-10 17:57:09 +02:00
cventastic 6e0abad03c expose port 2022-06-02 16:23:08 +02:00
cventastic 8647d4467d label missing 2022-06-02 16:22:06 +02:00
cventastic 593d610461 update port because its occupied on the interims server 2022-06-02 16:20:57 +02:00
cventastic 569f5c3f9b path to dockerfile 2022-06-02 16:11:16 +02:00
cventastic 355c998d60 list -> array... 2022-06-02 16:10:20 +02:00
cventastic 52aa024568 network -> networks 2022-06-02 16:09:01 +02:00
cventastic 5b024c9a36 added erigon-bsc 2022-06-02 16:07:11 +02:00
cventastic d06f8949bf add new chain and add persistent config-dir for pocket 2022-05-19 13:58:11 +02:00
cventastic 0f6ad2bca8 add new chain and add persistent config-dir for pocket 2022-05-19 13:55:26 +02:00
cventastic aed1577472 add fantom to chains network 2022-05-16 10:25:48 +02:00
cventastic 805e283687 account for new config params iavl_cache_size, chains_hot_reload 2022-05-16 07:31:00 +02:00
cventastic 97eb058ecf fix tar syntax for new snapshot format 2022-05-11 15:55:53 +02:00
cventastic 9aea8d8c8a hmm wrong syntax? 2022-05-11 15:47:03 +02:00
cventastic e5ae6029c2 snapshots are now .gz 2022-05-11 15:43:49 +02:00
cventastic 822f21eea8 cant use different docker-compose file versions 2022-05-11 11:13:32 +02:00
cventastic fea3390ef3 remove redundancy 2022-05-11 11:07:23 +02:00
cventastic 839da8855c balance right port 2022-05-11 10:59:36 +02:00
cventastic 10bb09a8cc Merge branch 'main' of github.com:cventastic/POKT_DOKT 2022-05-11 10:40:06 +02:00
cventastic b09445ffae RPC Port is 18545 2022-05-11 10:39:47 +02:00
cventastic 8ac4b09771 added fantom 2022-05-11 10:34:34 +02:00
Sebastian 3d2f33309a added solana to chains list 2022-05-03 13:10:20 +02:00
cventastic 27862bf4c9 haproxy healthcheck permissions 2022-04-27 22:17:42 +02:00
cventastic e847bfa9fc add pokt-lt 2022-04-26 11:39:12 +02:00
cventastic 8055376766 remove owner/group to bootstrap.sh
add it to dockerfile
2022-04-26 11:09:57 +02:00
cventastic 515be43181 add owner/group to bootstrap.sh 2022-04-26 10:57:05 +02:00
cventastic ae1597fb53 add haproxy to pokt-fr 2022-04-26 09:48:02 +02:00
cventastic d174d77c0d add pokt-fr 2022-04-26 09:42:52 +02:00
cventastic 30bedc0c15 add it to the actual command, not the echo... 2022-04-25 13:10:58 +02:00
cventastic d2782e3433 add unzip flag to tar because of new snapshot format 2022-04-25 13:05:09 +02:00
cventastic 38c14d7d9b remove old chains_mainnet.json
remove old pokt bootstrap skript
added correct chains.json
2022-04-25 12:01:41 +02:00
cventastic e825e4fa37 only mount chaindir 2022-04-25 11:45:38 +02:00
cventastic dc7998aa74 change mount path 2022-04-25 09:54:06 +02:00
cventastic 431b9430e2 remove commands that went into Dockerfile 2022-04-25 09:38:28 +02:00
cventastic 34a209dee9 remove files that get copied in Dockerfile 2022-04-25 09:29:17 +02:00
cventastic 1a0b185def use RC-0.8.2 2022-04-25 09:20:23 +02:00
cventastic aae8cc43f9 add pokt-test for RC 0.8.2 2022-04-25 09:17:00 +02:00
cventastic 8775a70590 hardfork xdai 2022-04-20 17:56:42 +02:00
cventastic 33705263e3 restart geth-mainnet unless stopped 2022-04-20 10:22:55 +02:00
cventastic a34dc194a1 removed ipwhitelist middleware from avalanche.yml 2022-04-19 19:26:34 +02:00
cventastic 5d377d0e51 added network to haproxy 2022-04-19 17:33:30 +02:00
cventastic b01b21f271 added portforwarding to localhost for haproxy 2022-04-19 16:44:29 +02:00
cventastic fe28278076 added permission to healthcheck 2022-04-19 16:24:10 +02:00
cventastic f95d277640 fix traefik labels 2022-04-19 16:22:43 +02:00
cventastic 770e777e15 add polygon healthcheck 2022-04-19 16:15:02 +02:00
Sebastian 41848d2dc1 fix the docker 2022-04-19 15:10:01 +02:00
Sebastian f722a9e4ca jo 2022-04-19 14:54:33 +02:00
Sebastian c646654d65 empty chains config 2022-04-19 14:48:29 +02:00
Sebastian 2310f4bb02 make init script executable 2022-04-19 14:41:37 +02:00
Sebastian 9d3c09e499 add missing init script 2022-04-19 14:41:01 +02:00
Sebastian 160da9ebea added network 2022-04-19 13:44:06 +02:00
Sebastian cf2a242872 updates 2022-04-19 13:42:31 +02:00
Sebastian 4c18e0e983 add a proxy only 2022-04-19 13:28:36 +02:00
cventastic 05de20ee72 added tweaks for polygon-fullnode.yml 2022-04-04 22:41:10 +02:00
cventastic 74a9f8ac7f bootscipt also runs as pokt-user 2022-04-04 15:32:59 +02:00
cventastic 8e55c751f8 oops 2 2022-04-01 14:10:23 +02:00
cventastic c046563bef oops 2022-03-31 16:14:47 +02:00
cventastic dd0e402511 fixed traefik label 2022-03-31 13:50:45 +02:00
cventastic 9de6badecc removed eth-api parameter eth 2022-03-29 22:02:25 +02:00
czarly cc02077bf4 robust snapshot download 2022-03-25 04:22:14 +04:00
czarly 115c4fd30f robust snapshot download 2022-03-25 04:20:24 +04:00
czarly b24601f47a robust snapshot download 2022-03-25 04:16:49 +04:00
czarly 297d2be210 update snapshot url and make archive node bootstrapping 2022-03-24 22:27:47 +04:00
cventastic 5f36d3920b forgot to add file... 2022-03-22 18:07:28 +01:00
cventastic b80cd5f40d added tls options/dynamic config file 2022-03-22 18:06:42 +01:00
cventastic 26a0c276f3 one tab too much 2022-03-22 12:11:48 +01:00
cventastic fae0461504 polygon/heimdall update 2022-03-22 12:05:52 +01:00
cventastic 9673c5223b add metrics autodiscovery for harmony 2022-03-17 13:20:02 +01:00
cventastic faa4c41b89 added fuse metrics and autodiscovery 2022-03-17 13:04:50 +01:00
cventastic 00b8453faf added fuse metrics 2022-03-17 13:03:47 +01:00
cventastic 7f3824b5f9 added avalanche metrics 2022-03-17 12:02:29 +01:00
cventastic 7ab717dc91 forgot geth-mainnet labels 2022-03-16 16:01:59 +01:00
cventastic e76bf13833 added all geth clients for prometheus autodiscovery 2022-03-16 15:59:27 +01:00
cventastic 633227fb49 added correct geth metrics path 2022-03-16 15:53:34 +01:00
cventastic f89e002d9a added metrics ropsten 2022-03-16 14:40:58 +01:00
cventastic 7c082289f9 added metrics ropsten 2022-03-16 14:38:17 +01:00
cventastic d24d7b45a3 remove prometheus.yml and remove nodeexporter/cadvisor from autodiscover, because they too should be autodiscovered. 2022-03-16 14:33:25 +01:00
cventastic 33e2908492 put prometheus into chains network... 2022-03-16 14:19:59 +01:00
cventastic b10221e068 remove internal network...
cant reach prometheus for queries this way
2022-03-16 14:17:21 +01:00
cventastic 766caca32d fix typo 2022-03-16 14:06:02 +01:00
cventastic 892c5eb1e6 prom autodiscovery 2022-03-16 14:01:50 +01:00
cventastic 7f1cb0474e removed new line 2022-03-16 12:41:17 +01:00
cventastic a28269caee added newline 2022-03-16 12:13:52 +01:00
czarly 2bf10202ae more fix pokt 2022-03-16 13:25:55 +04:00
czarly 629a72f068 more fix pokt 2022-03-16 13:24:55 +04:00
czarly 8713748aad more fix pokt 2022-03-16 13:23:42 +04:00
czarly fe828e0645 more fix pokt 2022-03-16 13:16:06 +04:00
czarly 93afe6ccae more fix pokt 2022-03-16 13:14:28 +04:00
czarly a77d152f8d final fix pokt 2022-03-16 13:11:16 +04:00
czarly d620891dff more pokt node fixes 2022-03-16 13:04:07 +04:00
czarly 4a5ef8721e more pokt node fixes 2022-03-16 13:00:36 +04:00
czarly 2f48795651 more pokt node fixes 2022-03-16 12:57:37 +04:00
czarly 623c458776 move pokt config inside the container 2022-03-16 12:46:47 +04:00
czarly 224326487c remove some files 2022-03-15 17:56:31 +04:00
czarly b935d3e71f fix xdai rpc 2022-03-15 17:49:41 +04:00
czarly 459e253686 missing Dockerfile 2022-03-15 16:27:43 +04:00
czarly 7a07b719a8 first try of a frontend config 2022-03-15 15:51:58 +04:00
czarly 5c06b75b12 move the ip whitelist to the traefik container 2022-03-15 14:35:57 +04:00
czarly 165a7426d1 tag the image versions for more stability 2022-03-14 20:09:57 +04:00
czarly 147d398067 proper path to avalanche 2022-03-14 20:09:33 +04:00
czarly bf8653ae6c fix polygon heimdall snapshot 2022-03-14 18:58:25 +04:00
czarly 7ca937a745 fix polygon archive data volume 2022-03-14 18:54:01 +04:00
czarly 785aac52c5 fix polygon archive data volume 2022-03-14 18:52:45 +04:00
czarly c70dc42833 interims fix 2022-03-14 18:32:03 +04:00
czarly e18d3bd2be interims fix 2022-03-14 18:27:36 +04:00
czarly 52adfce138 fix 2022-03-14 18:16:34 +04:00
czarly b5dc667a1c fix 2022-03-14 18:15:41 +04:00
czarly 8a7fa9ef6f added geth 2022-03-14 18:14:52 +04:00
czarly 11ac3d9f0a fix 2022-03-14 18:07:56 +04:00
czarly a66da89fdb fix 2022-03-14 18:06:17 +04:00
czarly 1d03732438 fix 2022-03-14 18:01:31 +04:00
czarly 70b1ccb458 fix the monitoring to come up 2022-03-14 17:59:30 +04:00
czarly b119d8da26 typo 2022-03-14 17:55:03 +04:00
czarly 6ddc7d5926 split up the big files 2022-03-14 17:49:20 +04:00
71 changed files with 30456 additions and 169 deletions
+5 -17
View File
@@ -1,20 +1,8 @@
Place val.key and val.pass into ./harmony/keyfiles ### Docs
``` TODO:
docker-compose up -d
```
Check if Bootstrap is working.
```
docker logs -f pokt_dokt_harmony-mainnet_1
```
Logs are at:
```
harmony/log
```
HARMONY QUERY auto-generate .jwtsecret for beacon-execution connection
``` Fix wireguard chains network for pocket-frontends
curl --location --request POST 'https://$DOMAIN/' --header 'Content-Type: application/json' --data-raw '{"jsonrpc": "2.0", "method": "hmy_latestHeader", "params": [], "id": 1}'
```
[HMY CLI Flags](https://docs.harmony.one/home/network/validators/node-setup/installing-updating/installing-node/using-binary#option-2-setup-using-flag-parsing) [Pocket Validator](README_POKT.md) </br>
+76
View File
@@ -0,0 +1,76 @@
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
+34
View File
@@ -0,0 +1,34 @@
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:
+43
View File
@@ -0,0 +1,43 @@
{
"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": ""
}
+29
View File
@@ -0,0 +1,29 @@
version: '3.1'
services:
binance-smart-chain:
image: dysnix/bsc:v1.1.11
expose:
- "8545"
- "8546"
- "30303"
volumes:
- bsc_data:/datadir
- ./bsc/config.toml:/config.toml
command: "--cache 18000 --rpc --rpcaddr=\"0.0.0.0\" --rpc.allow-unprotected-txs --txlookuplimit 0 --syncmode snap --config /config.toml --datadir /datadir"
restart: unless-stopped
networks:
- chains
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.bsc-stripprefix.stripprefix.prefixes=/bsc"
- "traefik.http.services.bsc.loadbalancer.server.port=8545"
- "traefik.http.routers.bsc.entrypoints=websecure"
- "traefik.http.routers.bsc.tls.certresolver=myresolver"
- "traefik.http.routers.bsc.rule=Host(`$DOMAIN`) && PathPrefix(`/bsc`)"
- "traefik.http.routers.bsc.middlewares=bsc-stripprefix, ipwhitelist"
volumes:
bsc_data:
+65
View File
@@ -0,0 +1,65 @@
[Eth]
NetworkId = 56
NoPruning = false
NoPrefetch = false
LightPeers = 100
UltraLightFraction = 75
TrieTimeout = 100000000000
EnablePreimageRecording = false
EWASMInterpreter = ""
EVMInterpreter = ""
[Eth.Miner]
GasFloor = 30000000
GasCeil = 40000000
GasPrice = 1000000000
Recommit = 10000000000
Noverify = false
[Eth.TxPool]
Locals = []
NoLocals = true
Journal = "transactions.rlp"
Rejournal = 3600000000000
PriceLimit = 1000000000
PriceBump = 10
AccountSlots = 512
GlobalSlots = 10000
AccountQueue = 256
GlobalQueue = 5000
Lifetime = 10800000000000
[Eth.GPO]
Blocks = 20
Percentile = 60
OracleThreshold = 20
[Node]
IPCPath = "geth.ipc"
HTTPHost = "0.0.0.0"
NoUSB = true
InsecureUnlockAllowed = false
HTTPPort = 8545
HTTPVirtualHosts = ["*"]
HTTPModules = ["eth", "net", "web3", "txpool", "parlia"]
WSPort = 8546
WSModules = ["net", "web3", "eth"]
[Node.P2P]
MaxPeers = 30
NoDiscovery = false
BootstrapNodes = ["enode://1cc4534b14cfe351ab740a1418ab944a234ca2f702915eadb7e558a02010cb7c5a8c295a3b56bcefa7701c07752acd5539cb13df2aab8ae2d98934d712611443@52.71.43.172:30311","enode://28b1d16562dac280dacaaf45d54516b85bc6c994252a9825c5cc4e080d3e53446d05f63ba495ea7d44d6c316b54cd92b245c5c328c37da24605c4a93a0d099c4@34.246.65.14:30311","enode://5a7b996048d1b0a07683a949662c87c09b55247ce774aeee10bb886892e586e3c604564393292e38ef43c023ee9981e1f8b335766ec4f0f256e57f8640b079d5@35.73.137.11:30311"]
StaticNodes = ["enode://ace8e3b7e96290392a9c6238e005539dd1d1ca7c18aeedd979087789812e0656407e2c4baabcd83b50d583b583aa959ff42e5c95571d76b84995aad722a9a85c@44.198.55.182:30311","enode://1cda8150a6fe7597ce9f97b9886bc7bda2c3f0b246b509a5783c7dae7e57f831c7288a801ad129d2ffac330494ba75f0f0f62e1d1eba3499feca4ee29c6ae087@3.215.117.86:30311","enode://4b32e474c1aa896c856b916f2feb7af4e49feb6f2ff355896473b44d6723e71a5602a610cc0839654ad2f031e5da6e210d880a4cd977a2ec76e64a95c13f49a3@18.206.147.221:30311","enode://6265fbbf7fc2978900abee29ab1f019ccbccaa22e4e1e07149f3607c7d680a1ba006e7bb5cf8901e26d07cad8140799832caa389fc2fe0e1c6db4fec76946c2e@18.233.226.171:30311","enode://bdbcb42ff17a52af7ac120f23ee86f525ffbd854ce76e54bad858cf741fcd524d0f810be399d437bea939682a919c5af5df31811c43ccc270d04485caf4ddaeb@52.206.226.126:30311","enode://93a47b4de28dfd716a3de5481a72916f326b7c31c137d72ac12950c61ec3ee143312d903dbfab916ac0d7a92fedad6fc6f646c16ea009ca893089c9c2f64ec83@18.204.55.80:30311","enode://bb851ac2001f47e7c9a5d08a2fafcfe483c5bd02865b3a25901f853cfaec297e1eded6a27f0c0b8fcb59891b6a0846ca92f54e05c1db4b1c9f4dbef5b66062f3@3.88.19.251:30311","enode://d54499eb86df0f28d91906cef4f648360b636f923d58567865b83508fb97d2e95d2ce3e3a594facb73230b9e19172a534ce5af3f528599d0d1e52632438aa864@44.200.226.84:30311","enode://2d55e48679442a9e3ef2a3edf2854dcb289f8162d57dbda1e82e7576b0708e0670befaa7255f5c9fa8389443a7e7b4ff762c9e7fd33ddf9f21ec9562f03e8945@18.212.135.123:30311","enode://9df97e190f0b82ba7891e0ed556f11f4c1a172c26b2e823e52cfe5722b3df3f1819d2acb87ed0bfeb21fe3aee4ef1ffb8c9227fa7fdf744bfd4f47caad461edf@54.81.89.198:30311"]
ListenAddr = ":30311"
EnableMsgEvents = false
[Node.HTTPTimeouts]
ReadTimeout = 30000000000
WriteTimeout = 30000000000
IdleTimeout = 120000000000
[Node.LogConfig]
FilePath = "bsc.log"
MaxBytesSize = 10485760
Level = "info"
FileRoot = ""
+60
View File
@@ -0,0 +1,60 @@
version: '3.1'
services:
dshackle:
image: emeraldpay/dshackle:0.13.1
restart: unless-stopped
volumes:
- ./dshackle/config:/etc/dshackle # This should hold all your yaml files
expose:
- 8080 # /eth
- 8081 # /metrics
- 8082 # healthcheck
- 2449 # grpc
networks:
- chains
ports:
- "127.0.0.1:8082:8082" # healthcheck
environment:
- ALCHEMY_KEY=${ALCHEMY_KEY}
- ANYBLOCK_KEY=${ANYBLOCK_KEY}
- CHAINSTACK_NODE=${CHAINSTACK_NODE}
- CHAINSTACK_USERNAME=${CHAINSTACK_USERNAME}
- CHAINSTACK_PASSWORD=${CHAINSTACK_PASSWORD}
- COINBASE_USERNAME=${COINBASE_USERNAME}
- COINBASE_PASSWORD=${COINBASE_PASSWORD}
- INFURA_KEY=${INFURA_KEY}
- RIVET_KEY=${RIVET_KEY}
- QUICKNODE_HTTP=${QUICKNODE_HTTP}
- QUICKNODE_WSS=${QUICKNODE_WSS}
labels:
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8081"
- "prometheus-scrape.job_name=dshackle"
- "prometheus-scrape.metrics_path=/metrics"
- "traefik.enable=true"
- "traefik.http.middlewares.dshackle-stripprefix.stripprefix.prefixes=/dshackle"
# - "traefik.http.middlewares.shackle-replacepath.replacepath.path=/eth"
- "traefik.http.services.dshackle.loadbalancer.server.port=8080"
- "traefik.http.routers.dshackle.entrypoints=websecure"
- "traefik.http.routers.dshackle.tls.certresolver=myresolver"
- "traefik.http.routers.dshackle.rule=Host(`$DOMAIN`) && PathPrefix(`/dshackle`)"
# - "traefik.http.routers.dshackle.middlewares=dshackle-stripprefix, dshackle-replacepath, ipwhitelist"
- "traefik.http.routers.dshackle.middlewares=dshackle-stripprefix, ipwhitelist"
redis:
image: healthcheck/redis:alpine
restart: unless-stopped
networks:
- chains
environment:
- REDIS_RAM=${REDIS_RAM}
command:
- "redis-server"
- "--maxmemory ${REDIS_RAM}"
- "--maxmemory-policy allkeys-lru"
- '--save ""'
+41
View File
@@ -0,0 +1,41 @@
upstreams:
- id: alchemy
chain: ethereum
role: fallback
priority: 90
options:
disable-validation: false
validate-peers: false
validate-syncing: true
methods:
enabled:
# Manually Enabled
- name: alchemy_getAssetTransfers
- name: alchemy_getTokenAllowance
- name: alchemy_getTokenBalances
- name: alchemy_getTokenMetadata
- name: eth_getFilterChanges
- name: eth_getFilterLogs
- name: eth_maxPriorityFeePerGas
- name: eth_newBlockFilter
- name: eth_newFilter
- name: eth_newPendingTransactionFilter
- name: eth_subscribe
- name: eth_uninstallFilter
- name: eth_unsubscribe
- name: trace_block
- name: trace_call
- name: trace_callMany
- name: trace_filter
- name: trace_get
- name: trace_rawTransaction
- name: trace_replayBlockTransactions
- name: trace_replayTransaction
- name: trace_transaction
connection:
ethereum:
rpc:
url: "https://eth-mainnet.alchemyapi.io/v2/${ALCHEMY_KEY}"
ws:
url: "wss://eth-mainnet.ws.alchemyapi.io/v2/${ALCHEMY_KEY}"
+14
View File
@@ -0,0 +1,14 @@
upstreams:
- id: ankr
chain: ethereum
role: fallback
priority: 80
options:
disable-validation: false
validate-peers: false
validate-syncing: true
connection:
ethereum:
rpc:
url: "https://rpc.ankr.com/eth"
+14
View File
@@ -0,0 +1,14 @@
upstreams:
- id: anyblock
chain: ethereum
role: fallback
priority: 70
options:
disable-validation: false
validate-peers: false
validate-syncing: true
connection:
ethereum:
rpc:
url: "https://api.anyblock.tools/ethereum/ethereum/mainnet/rpc/${ANYBLOCK_KEY}"
+14
View File
@@ -0,0 +1,14 @@
upstreams:
- id: avado
chain: ethereum
role: fallback
priority: 60
options:
disable-validation: false
validate-peers: false
validate-syncing: true
connection:
ethereum:
rpc:
url: "https://mainnet.eth.cloud.ava.do"
+22
View File
@@ -0,0 +1,22 @@
upstreams:
- id: chainstack
chain: ethereum
role: fallback
priority: 50
options:
disable-validation: false
validate-peers: false
validate-syncing: true
connection:
ethereum:
rpc:
url: "https://${CHAINSTACK_NODE}.p2pify.com"
basic-auth:
username: ${CHAINSTACK_USERNAME}
password: ${CHAINSTACK_PASSWORD}
ws:
url: "wss://ws-${CHAINSTACK_NODE}.p2pify.com"
basic-auth:
username: ${CHAINSTACK_USERNAME}
password: ${CHAINSTACK_PASSWORD}
+14
View File
@@ -0,0 +1,14 @@
upstreams:
- id: cloudflare
chain: ethereum
role: fallback
priority: 40
options:
disable-validation: false
validate-peers: false
validate-syncing: true
connection:
ethereum:
rpc:
url: "https://cloudflare-eth.com"
+31
View File
@@ -0,0 +1,31 @@
upstreams:
- id: coinbase
chain: ethereum
role: secondary
priority: 30
labels:
provider: geth
archive: false
options:
disable-validation: false
validate-peers: false
validate-syncing: true
methods:
enabled:
# Manually Enabled
- name: coinbaseCloud_getBalances
- name: coinbaseCloud_getSingleBalance
- name: coinbaseCloud_getTokenAllowances
- name: coinbaseCloud_getTransactionByHash
- name: coinbaseCloud_getTransactionsByAddress
- name: coinbaseCloud_getTokenTransfersByAddress
- name: coinbaseCloud_getTokenMetadata
- name: coinbaseCloud_getTokenStandardEvents
connection:
ethereum:
rpc:
url: "https://mainnet.ethereum.coinbasecloud.net"
basic-auth:
username: ${COINBASE_USERNAME}
password: ${COINBASE_PASSWORD}
+64
View File
@@ -0,0 +1,64 @@
host: 0.0.0.0
port: 2449
tls:
enabled: false
monitoring:
enabled: true
jvm: false
extended: false
prometheus:
enabled: true
bind: 0.0.0.0
port: 8081
path: /metrics
health:
port: 8082
host: 0.0.0.0
path: /health
blockchains:
- chain: ethereum
min-available: 1
cache:
redis:
enabled: true
host: redis
password: ""
proxy:
host: 0.0.0.0
port: 8080
tls:
enabled: false
routes:
- id: eth
blockchain: ethereum
cluster:
defaults:
- chains:
- ethereum
options:
min-peers: 10
include:
# Private Nodes
#- "besu.yaml"
#- "geth.yaml"
#- "nethermind.yaml"
#- "erigon.yaml"
# Freemium Nodes
- "alchemy.yaml"
- "anyblock.yaml"
- "chainstack.yaml"
- "coinbase.yaml"
- "infura.yaml"
- "quicknode.yaml"
- "rivet.yaml"
# Public Nodes
- "cloudflare.yaml"
- "avado.yaml"
- "ankr.yaml"
+16
View File
@@ -0,0 +1,16 @@
upstreams:
- id: infura
chain: ethereum
role: fallback
priority: 20
options:
disable-validation: false
validate-peers: false
validate-syncing: true
connection:
ethereum:
rpc:
url: "https://mainnet.infura.io/v3/${INFURA_KEY}"
ws:
url: "wss://mainnet.infura.io/ws/v3/${INFURA_KEY}"
+29
View File
@@ -0,0 +1,29 @@
upstreams:
- id: quicknode
chain: ethereum
role: fallback
priority: 140
options:
disable-validation: false
validate-peers: false
validate-syncing: true
methods:
enabled:
# Manually Enabled
- name: qn_broadcastRawTransaction
- name: qn_fetchNFTCollectionDetails
- name: qn_fetchNFTs
- name: qn_fetchNFTsByCollection
- name: qn_getTokenMetadataByContractAddress
- name: qn_getTokenMetadataBySymbol
- name: qn_getTransfersByNFT
- name: qn_getWalletTokenBalance
- name: qn_getWalletTokenTransactions
- name: qn_verifyNFTsOwner
connection:
ethereum:
rpc:
url: "${QUICKNODE_HTTP}"
ws:
url: "${QUICKNODE_WSS}"
+16
View File
@@ -0,0 +1,16 @@
upstreams:
- id: rivet
chain: ethereum
role: fallback
priority: 10
options:
disable-validation: false
validate-peers: false
validate-syncing: true
connection:
ethereum:
rpc:
url: "https://${RIVET_KEY}.eth.rpc.rivet.cloud"
ws:
url: "wss://${RIVET_KEY}.eth.ws.rivet.cloud"
+11
View File
@@ -0,0 +1,11 @@
from python:bullseye
RUN pip install --upgrade pip
RUN pip install flask
RUN pip install flask_sqlalchemy
COPY src src
CMD ["python", "-u", "src/app.py"]
+70
View File
@@ -0,0 +1,70 @@
import copy
from dataclasses import dataclass
from flask import Flask, request, render_template, jsonify
from flask_sqlalchemy import SQLAlchemy
import json
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database/config.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = 'False'
app.config['SECRET_KEY'] = "random"
db = SQLAlchemy(app)
@dataclass
class Database(db.Model):
name: str
ip: str
name = db.Column(db.String(30), primary_key=True)
ip = db.Column(db.String(16), unique=True)
def __init__(self, name, ip):
self.name = name
self.ip = ip
@app.route('/')
def index():
return render_template('index.html', db_entries=Database.query.all())
@app.route('/create', methods=['POST'])
def create():
if request.method == 'POST':
json_post = json.loads(request.data)
data = Database(json_post['name'], json_post['ip'])
db.session.add(data)
db.session.commit()
return jsonify(data)
@app.route('/update', methods=['POST'])
def update():
if request.method == 'POST':
json_post = json.loads(request.data)
old_value = copy.deepcopy(Database.query.get(json_post['name']))
Database.query.filter_by(name=json_post['name']).update(dict(ip=json_post['ip']))
db.session.commit()
return jsonify(old=old_value, new=json_post)
@app.route('/delete', methods=['POST'])
def delete():
if request.method == 'POST':
json_post = json.loads(request.data)
query = Database.query.get(json_post['name'])
db.session.delete(query)
db.session.commit()
return jsonify(json_post)
@app.route('/storage', methods=['GET'])
def storage():
db_entries = Database.query.all()
return jsonify(db_entries)
if __name__ == '__main__':
db.create_all()
app.run(host="0.0.0.0", debug=True)
+9
View File
@@ -0,0 +1,9 @@
table, th, td {
border: 1px solid black;
}
.table a
{
display:block;
text-decoration:none;
}
+25
View File
@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html lang = "en">
<head>
<link rel="stylesheet" href="/static/main.css">
</head>
<body>
<table>
<thead>
<tr>
<td>Name</td>
<td>IP</td>
</tr>
</thead>
<tbody>
{% for value in db_entries %}
<tr>
<td>{{ value.name }}</td>
<td>{{ value.ip }}</td>
<!-- <td><a href="{{ url_for('delete', name=value.name) }}">Delete</a></td>-->
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
+40
View File
@@ -0,0 +1,40 @@
version: '3.1'
services:
erigon-bsc:
image: thorax/erigon:devel
command: erigon --chain bsc --metrics --metrics.addr=0.0.0.0 --metrics.port=6060 --private.api.addr=0.0.0.0:9090 --pprof --pprof.addr=0.0.0.0 --pprof.port=6061
volumes:
- erigon-bsc-volume:/home/erigon/.local/share/erigon
ports:
- "30333:30303/tcp"
- "30333:30303/udp"
- "30304:30304/tcp"
- "30304:30304/udp"
networks:
- chains
restart: unless-stopped
rpcdaemon-bsc:
image: thorax/erigon:devel
command: rpcdaemon --datadir=/home/erigon/.local/share/erigon --private.api.addr=erigon:9090 --http.addr=0.0.0.0 --http.vhosts=* --http.corsdomain=* --http.api=eth,debug,net --ws
pid: service:erigon-bsc # Use erigon's PID namespace. It's required to open Erigon's DB from another process (RPCDaemon local-mode)
volumes:
- erigon-bsc-volume:/home/erigon/.local/share/erigon
expose:
- "8545"
networks:
- chains
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.rpcdaemon-bsc-stripprefix.stripprefix.prefixes=/erigon-bsc"
- "traefik.http.services.rpcdaemon-bsc.loadbalancer.server.port=8545"
- "traefik.http.routers.rpcdaemon-bsc.entrypoints=websecure"
- "traefik.http.routers.rpcdaemon-bsc.tls.certresolver=myresolver"
- "traefik.http.routers.rpcdaemon-bsc.rule=Host(`$DOMAIN`) && PathPrefix(`/erigon-bsc`)"
- "traefik.http.routers.rpcdaemon-bsc.middlewares=rpcdaemon-bsc-stripprefix, ipwhitelist"
volumes:
erigon-bsc-volume:
+93
View File
@@ -0,0 +1,93 @@
version: '3.1'
services:
erigon-trace:
image: thorax/erigon:v2022.08.03
expose:
- "30303"
- "30304"
- "9090"
volumes:
- erigon-trace:/home/erigon/.local/share/erigon
- .jwtsecret:/jwtsecret
networks:
- chains
command: >
erigon --chain mainnet
--metrics --metrics.addr=0.0.0.0 --metrics.port=6060
--private.api.addr=0.0.0.0:9090
--pprof
--pprof.addr=0.0.0.0
--pprof.port=6061
--authrpc.addr=0.0.0.0
--authrpc.vhosts=*
--authrpc.jwtsecret=/jwtsecret
restart: unless-stopped
stop_grace_period: 1m
labels:
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=6060"
- "prometheus-scrape.job_name=erigon"
- "prometheus-scrape.metrics_path=/debug/metrics/prometheus"
rpcdaemon:
image: thorax/erigon:v2022.08.03
command: >
rpcdaemon --datadir=/home/erigon/.local/share/erigon
--private.api.addr=erigon-trace:9090
--txpool.api.addr=erigon-trace:9090
--http.addr=0.0.0.0
--http.vhosts=*
--http.corsdomain=*
--http.api=eth,erigon,web3,net,debug,trace,txpool
--ws
pid: service:erigon-trace # Use erigon's PID namespace. It's required to open Erigon's DB from another process (RPCDaemon local-mode)
volumes:
- erigon-trace:/home/erigon/.local/share/erigon
networks:
- chains
expose:
- "8545"
restart: unless-stopped
depends_on:
- "erigon-trace"
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.rpcdaemon-stripprefix.stripprefix.prefixes=/erigon"
- "traefik.http.services.rpcdaemon.loadbalancer.server.port=8545"
- "traefik.http.routers.rpcdaemon.entrypoints=websecure"
- "traefik.http.routers.rpcdaemon.tls.certresolver=myresolver"
- "traefik.http.routers.rpcdaemon.rule=Host(`$DOMAIN`) && PathPrefix(`/erigon`)"
- "traefik.http.routers.rpcdaemon.middlewares=rpcdaemon-stripprefix, ipwhitelist"
lighthouse:
image: sigp/lighthouse:latest-modern
ports:
- "9000:9000"
- "127.0.0.1:5052:5052"
volumes:
- .jwtsecret:/jwtsecret
- lighthouse_data:/root/.lighthouse
command: >
lighthouse beacon_node
--eth1-endpoints http://erigon-trace:8545
--execution-endpoint http://erigon-trace:8551
--execution-jwt /jwtsecret
--http
--http-address=0.0.0.0
restart: unless-stopped
stop_grace_period: 1m
networks:
- chains
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.lighthouse-stripprefix.stripprefix.prefixes=/lighthouse"
- "traefik.http.services.lighthouse.loadbalancer.server.port=5052"
- "traefik.http.routers.lighthouse.entrypoints=websecure"
- "traefik.http.routers.lighthouse.tls.certresolver=myresolver"
- "traefik.http.routers.lighthouse.rule=Host(`$DOMAIN`) && PathPrefix(`/lighthouse`)"
- "traefik.http.routers.lighthouse.middlewares=lighthouse-stripprefix, ipwhitelist"
volumes:
erigon-trace:
lighthouse_data:
+25
View File
@@ -0,0 +1,25 @@
version: '3.1'
services:
eth_proxy:
image: stakesquid/eth-proxy:latest
expose:
- "8080"
- "12449"
ports:
- "127.0.0.1:12449:12449"
environment:
- DSHACKLE_GRPC=http://dshackle:2449
- UPSTREAM_RPCS=${ETH_PROXY_UPSTREAM_RPCS}
networks:
- chains
restart: always
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.eth_proxy-stripprefix.stripprefix.prefixes=/eth-proxy"
- "traefik.http.services.eth_proxy.loadbalancer.server.port=8080"
- "traefik.http.routers.eth_proxy.entrypoints=websecure"
- "traefik.http.routers.eth_proxy.tls.certresolver=myresolver"
- "traefik.http.routers.eth_proxy.rule=Host(`$DOMAIN`) && PathPrefix(`/eth-proxy`)"
- "traefik.http.routers.eth_proxy.middlewares=eth_proxy-stripprefix, ipwhitelist"
+27
View File
@@ -0,0 +1,27 @@
version: '3.1'
services:
evmos:
image: tharsishq/evmos:v2.0.1
expose:
- "8545"
ports:
- "26657:26657"
- "26656:26656"
volumes:
- evmos_data:/root/.evmosd
command: "evmosd start"
networks:
- chains
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.evmos-stripprefix.stripprefix.prefixes=/evmos"
- "traefik.http.services.evmos.loadbalancer.server.port=8545"
- "traefik.http.routers.evmos.entrypoints=websecure"
- "traefik.http.routers.evmos.tls.certresolver=myresolver"
- "traefik.http.routers.evmos.rule=Host(`$DOMAIN`) && PathPrefix(`/evmos`)"
- "traefik.http.routers.evmos.middlewares=evmos-stripprefix, ipwhitelist"
volumes:
evmos_data:
+28
View File
@@ -0,0 +1,28 @@
version: "3.1"
services:
fantom:
build:
args:
VERSION: release/1.1.0-rc.4
context: ./fantom
dockerfile: Dockerfile
environment:
- SNAPSHOT_URL=https://download.fantom.network/opera_5may22.tgz
volumes:
- "fantom:/datadir"
expose:
- "18545"
networks:
- chains
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.fantom-stripprefix.stripprefix.prefixes=/fantom"
- "traefik.http.services.fantom.loadbalancer.server.port=18545"
- "traefik.http.routers.fantom.entrypoints=websecure"
- "traefik.http.routers.fantom.tls.certresolver=myresolver"
- "traefik.http.routers.fantom.rule=Host(`$DOMAIN`) && PathPrefix(`/fantom`)"
- "traefik.http.routers.fantom.middlewares=fantom-stripprefix, ipwhitelist"
volumes:
fantom:
+28
View File
@@ -0,0 +1,28 @@
# Build Fantom in a stock Go builder container
FROM golang:1.17-alpine as builder
# Install packages we need
RUN apk add --no-cache make gcc musl-dev linux-headers git
# Make a folder to work in
RUN mkdir /fantom
# Grab VERSION from Build Args
ARG VERSION
# Clone the repo to that folder
RUN git clone --branch ${VERSION} https://github.com/Fantom-foundation/go-opera.git /fantom
# Build Fantom
RUN cd /fantom && make
# Pull Fantom into a second stage deploy alpine container
FROM alpine:latest
RUN apk add --no-cache ca-certificates wget tzdata
COPY --from=builder /fantom/build/opera /usr/local/bin/
# Set entrypoint
COPY ./scripts/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod u+x /usr/local/bin/entrypoint.sh
ENTRYPOINT [ "/usr/local/bin/entrypoint.sh" ]
+38
View File
@@ -0,0 +1,38 @@
#!/bin/sh
# exit script on any error
set -e
# Set fantom Home Directory
FANTOM_HOME=/datadir
if [ -n "${SNAPSHOT_URL}" ] && [ ! -f "${FANTOM_HOME}/bootstrapped" ];
then
echo "downloading snapshot from ${SNAPSHOT_URL}"
wget --tries=0 -O - "${SNAPSHOT_URL}" | tar -xz --strip-components=1 -C ${FANTOM_HOME}/ && touch ${FANTOM_HOME}/bootstrapped
fi
if [ ! -f "$FANTOM_HOME/mainnet.g" ];
then
cd $FANTOM_HOME
echo "downloading launch genesis file"
wget --quiet https://opera.fantom.network/mainnet.g
fi
opera \
--genesis=/datadir/mainnet.g \
--port=5050 \
--maxpeers=200 \
--datadir=/datadir \
--http \
--http.addr=0.0.0.0 \
--http.port=18545 \
--http.api=ftm,eth,debug,admin,web3,personal,net,txpool,sfc \
--http.corsdomain="*" \
--http.vhosts="*" \
--ws \
--ws.addr=0.0.0.0 \
--ws.port=18546 \
--ws.api=ftm,eth,debug,admin,web3,personal,net,txpool,sfc \
--ws.origins="*" \
--nousb
+50
View File
@@ -0,0 +1,50 @@
version: '3.1'
services:
fusenetstat:
image: fusenet/netstat:1.0.0
command: "--instance-name 0xeb5Ca1d019e9D8b9aa9C47991993C84d1062628d --role node --parity-version 2.0.1 --fuseapp-version 1.0.0 --netstats-version 1.0.0"
network_mode: "service:fusenet"
restart: unless-stopped
depends_on:
- fusenet
# wants udp and tcp port bindings on 30303
fusenet:
image: fusenet/node:2.0.1
expose:
- "3000"
- "8545"
- "8546"
- "30303"
environment:
- HOME=/home/parity
- PARITY_HOME_DIR=/home/parity/.local/share/io.parity.ethereum
- PARITY_CONFIG_FILE_CHAIN=/home/parity/.local/share/io.parity.ethereum/spec.json
- PARITY_CONFIG_FILE_BOOTNODES=/home/parity/.local/share/io.parity.ethereum/bootnodes.txt
- PARITY_CONFIG_FILE_TEMPLATE=/home/parity/.local/share/io.parity.ethereum/config_template.toml
- PARITY_DATA_DIR=/home/parity/.local/share/io.parity.ethereum/chains
- PARITY_BIN=/usr/local/bin/parity
- PARITY_WRAPPER_SCRIPT=/home/parity/parity_wrapper.sh
volumes:
- fusenet_data:/data
- fusenet_config:/config/custom
networks:
- chains
command: "--role node --parity-args --no-warp --node-key 0xeb5Ca1d019e9D8b9aa9C47991993C84d1062628d --jsonrpc-threads 1 --jsonrpc-server-threads 4 --metrics --metrics-interface=0.0.0.0"
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.fuse-stripprefix.stripprefix.prefixes=/fuse"
- "traefik.http.services.fuse.loadbalancer.server.port=8545"
- "traefik.http.routers.fuse.entrypoints=websecure"
- "traefik.http.routers.fuse.tls.certresolver=myresolver"
- "traefik.http.routers.fuse.rule=Host(`$DOMAIN`) && PathPrefix(`/fuse`)"
- "traefik.http.routers.fuse.middlewares=fuse-stripprefix, ipwhitelist"
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=3000"
- "prometheus-scrape.job_name=fusenet"
volumes:
fusenet_data:
fusenet_config:
+61
View File
@@ -0,0 +1,61 @@
version: '3.1'
services:
geth-mainnet:
image: ethereum/client-go:v1.10.23
expose:
# HTTP server / GraphQL API
- 8545
ports:
- "30303:30303"
- "30303:30303/udp"
command:
[
# Blockchain sync mode ("snap", "full" or "light")
"--syncmode=snap",
# Megabytes of memory allocated to internal caching
"--cache=8192",
# Enable the WS-RPC server
"--ws",
"--ws.addr=0.0.0.0",
# Enable the HTTP-RPC server
"--http",
"--http.addr=0.0.0.0",
"--http.vhosts=*",
# Enable GraphQL on the HTTP-RPC server. Note that GraphQL can only be started if an HTTP server is started as well.
"--graphql",
"--graphql.vhosts=*",
# Enable metrics collection and reporting
"--metrics",
"--metrics.addr=0.0.0.0",
# Ethereum mainnet
"--mainnet",
# Maximum number of network peers (network disabled if set to 0) (default: 50)
"--maxpeers=30",
# The Merge
"--authrpc.jwtsecret=/jwtsecret",
"--authrpc.addr=0.0.0.0",
"--authrpc.vhosts=*"
]
networks:
- chains
volumes:
- "geth-mainnet_data:/root/.ethereum"
- ".jwtsecret:/jwtsecret"
restart: unless-stopped
stop_grace_period: 1m
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.mainnet-stripprefix.stripprefix.prefixes=/mainnet"
- "traefik.http.services.mainnet.loadbalancer.server.port=8545"
- "traefik.http.routers.mainnet.entrypoints=websecure"
- "traefik.http.routers.mainnet.tls.certresolver=myresolver"
- "traefik.http.routers.mainnet.rule=Host(`$DOMAIN`) && PathPrefix(`/mainnet`)"
- "traefik.http.routers.mainnet.middlewares=mainnet-stripprefix, ipwhitelist"
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=6060"
- "prometheus-scrape.job_name=geth-mainnet"
- "prometheus-scrape.metrics_path=/debug/metrics/prometheus"
volumes:
geth-mainnet_data:
@@ -0,0 +1,104 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"target": {
"limit": 100,
"matchAny": false,
"tags": [],
"type": "dashboard"
},
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"id": 13,
"links": [],
"liveNow": false,
"panels": [
{
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 0
},
"id": 6,
"title": "Row title",
"type": "row"
},
{
"gridPos": {
"h": 11,
"w": 12,
"x": 0,
"y": 1
},
"id": 2,
"options": {
"alertName": "",
"dashboardAlerts": false,
"folder": {
"id": 1,
"title": "Monitoring Services"
},
"maxItems": 20,
"showInstances": false,
"sortOrder": 1,
"stateFilter": {
"firing": true,
"inactive": true,
"pending": true
}
},
"title": "Alerts",
"type": "alertlist"
},
{
"gridPos": {
"h": 11,
"w": 12,
"x": 12,
"y": 1
},
"id": 4,
"options": {
"maxItems": 10,
"query": "",
"showHeadings": false,
"showRecentlyViewed": false,
"showSearch": true,
"showStarred": false,
"tags": []
},
"pluginVersion": "8.3.3",
"title": "Panel Title",
"type": "dashlist"
}
],
"schemaVersion": 34,
"style": "dark",
"tags": [],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "Overview",
"uid": "_tGw-fJnz",
"version": 5,
"weekStart": ""
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,684 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"target": {
"limit": 100,
"matchAny": false,
"tags": [],
"type": "dashboard"
},
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"id": 10,
"links": [],
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "P00A23F4F516FCA75"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "bars",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 8,
"x": 0,
"y": 0
},
"id": 7,
"options": {
"legend": {
"calcs": [
"sum"
],
"displayMode": "list",
"placement": "right"
},
"tooltip": {
"mode": "single"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "P00A23F4F516FCA75"
},
"exemplar": true,
"expr": "rate(traefik_service_requests_total{instance=\"traefik:8082\",service=\"pocket-fr-1@docker\"}[1m]) * 100",
"hide": false,
"interval": "",
"legendFormat": "{{ code }}",
"refId": "B"
}
],
"title": "Requests POKT-FR-1",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "P00A23F4F516FCA75"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 8,
"x": 8,
"y": 0
},
"id": 8,
"options": {
"legend": {
"calcs": [
"sum"
],
"displayMode": "list",
"placement": "right"
},
"tooltip": {
"mode": "single"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "P00A23F4F516FCA75"
},
"exemplar": true,
"expr": "rate(traefik_service_requests_total{instance=\"traefik:8082\",service=\"pocket-fr-2@docker\"}[1m]) * 100",
"interval": "",
"legendFormat": "{{ code }}",
"refId": "A"
}
],
"title": "Requests POKT-FR-2",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "P00A23F4F516FCA75"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 8,
"x": 16,
"y": 0
},
"id": 6,
"options": {
"legend": {
"calcs": [
"sum"
],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "P00A23F4F516FCA75"
},
"exemplar": true,
"expr": "rate(traefik_service_requests_tls_total{instance=\"traefik:8082\",service=~\"pocket-fr-1@docker|pocket-fr-2@docker\"}[1m]) * 100",
"interval": "",
"legendFormat": "{{ tls_cipher }}",
"refId": "A"
}
],
"title": "Requests SSL",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "P00A23F4F516FCA75"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 8,
"x": 0,
"y": 8
},
"id": 2,
"options": {
"legend": {
"calcs": [
"sum"
],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "P00A23F4F516FCA75"
},
"exemplar": true,
"expr": "traefik_service_open_connections{instance=\"traefik:8082\",service=~\"pocket-fr-1@docker|pocket-fr-2@docker\"}",
"interval": "",
"legendFormat": "{{ method }} {{ service }}",
"refId": "A"
}
],
"title": "Connections",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "P00A23F4F516FCA75"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 8,
"x": 8,
"y": 8
},
"id": 4,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "P00A23F4F516FCA75"
},
"exemplar": true,
"expr": "rate(traefik_service_request_duration_seconds_count{instance=\"traefik:8082\",service=~\"pocket-fr-1@docker|pocket-fr-2@docker\"}[1m])",
"interval": "",
"legendFormat": "{{ code }} {{ method }} {{ service }}",
"refId": "A"
}
],
"title": "Request duration",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "P00A23F4F516FCA75"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 8,
"x": 16,
"y": 8
},
"id": 3,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "P00A23F4F516FCA75"
},
"exemplar": true,
"expr": "histogram_quantile(0.9, sum by (le) (rate(traefik_service_request_duration_seconds_bucket{instance=\"traefik:8082\",service=~\"pocket-fr-1@docker|pocket-fr-2@docker\"}[1m])))",
"interval": "",
"legendFormat": "",
"refId": "A"
}
],
"title": "Request duration",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "P00A23F4F516FCA75"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 6,
"w": 8,
"x": 0,
"y": 16
},
"id": 5,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single"
}
},
"pluginVersion": "8.3.3",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "P00A23F4F516FCA75"
},
"exemplar": true,
"expr": "sum(increase(traefik_service_request_duration_seconds_sum{instance=\"traefik:8082\",service=~\"pocket-fr-2@docker\"}[1m])) by (method)",
"interval": "",
"legendFormat": "pokt-fr-1 {{ method }}",
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "P00A23F4F516FCA75"
},
"exemplar": true,
"expr": "sum(increase(traefik_service_request_duration_seconds_sum{instance=\"traefik:8082\",service=~\"pocket-fr-1@docker\"}[1m])) by (method)",
"hide": false,
"interval": "",
"legendFormat": "pokt-fr-1 {{ method }}",
"refId": "B"
}
],
"title": "Sum Request",
"type": "timeseries"
}
],
"refresh": "",
"schemaVersion": 34,
"style": "dark",
"tags": [],
"templating": {
"list": []
},
"time": {
"from": "now-7d",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "traefik",
"uid": "eE3572Jnk",
"version": 17,
"weekStart": ""
}
@@ -0,0 +1,13 @@
apiVersion: 1
providers:
- name: 'basic'
orgId: 1
folder: 'basic'
type: file
disableDeletion: false
editable: true
allowUiUpdates: true
options:
path: /etc/grafana/provisioning/dashboards
foldersFromFilesStructure: true
@@ -0,0 +1,56 @@
apiVersion: 1
datasources:
- name: rpc-de-01
type: prometheus
access: proxy
orgId: 1
url: http://10.13.13.5:9090
basicAuth: false
isDefault: false
editable: true
- name: rpc-de-04
type: prometheus
access: proxy
orgId: 1
url: http://10.13.13.7:9090
basicAuth: false
isDefault: false
editable: true
- name: rpc-fi-01
type: prometheus
access: proxy
orgId: 1
url: http://10.13.13.6:9090
basicAuth: false
isDefault: false
editable: true
- name: rpc-fi-04
type: prometheus
access: proxy
orgId: 1
url: http://10.13.13.8:9090
basicAuth: false
isDefault: false
editable: true
- name: pokt-fr-1
type: prometheus
access: proxy
orgId: 1
url: http://10.13.13.10:9090
basicAuth: false
isDefault: false
editable: true
- name: pokt-lt-1
type: prometheus
access: proxy
orgId: 1
url: http://10.13.13.3:9090
basicAuth: false
isDefault: false
editable: true
+72
View File
@@ -0,0 +1,72 @@
version: '3.1'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: always
expose:
- "8082"
ports:
- "443:443"
- "127.0.0.1:8080:8080"
command:
- "--api=true"
- "--api.insecure=true"
- "--api.dashboard=true"
- "--log.level=DEBUG"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--providers.file.filename=/dynamic_config.yml"
- "--entrypoints.websecure.address=:443"
- "--entryPoints.metrics.address=:8082"
- "--metrics.prometheus.entryPoint=metrics"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
# TESTING
# - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.myresolver.acme.email=$MAIL"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
volumes:
- "./traefik/letsencrypt:/letsencrypt"
- "./traefik/config/dynamic_config.yml:/dynamic_config.yml"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
networks:
- chains
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=$WHITELIST"
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8082"
- "prometheus-scrape.job_name=traefik"
haproxy:
build: haproxy
volumes:
- ./haproxy:/usr/local/etc/haproxy
expose:
- "8404"
- "80"
ports:
- "127.0.0.1:80:80"
restart: always
networks:
- chains
labels:
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8404"
- "prometheus-scrape.job_name=haproxy"
- "prometheus-scrape.metrics_path=/metrics"
- "traefik.enable=true"
- "traefik.http.services.haproxy.loadbalancer.server.port=80"
- "traefik.http.routers.haproxy.entrypoints=websecure"
- "traefik.http.routers.haproxy.tls.certresolver=myresolver"
- "traefik.http.routers.haproxy.rule=Host(`$DOMAIN`)"
- "traefik.http.routers.haproxy.middlewares=ipwhitelist"
networks:
chains:
driver: bridge
ipam:
config:
- subnet: 192.168.0.1/27
+7
View File
@@ -0,0 +1,7 @@
FROM haproxy:alpine
USER root
RUN apk add --no-cache curl bash jq
USER haproxy
CMD ["haproxy", "-f", "/usr/local/etc/haproxy/haproxy.cfg"]
+25
View File
@@ -0,0 +1,25 @@
#!/bin/bash
# $1 = Virtual Service IP (VIP)
# $2 = Virtual Service Port (VPT)
# $3 = Real Server IP (RIP)
# $4 = Real Server Port (RPT)
# $5 = Check Source IP
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
VIP=$1
VPT=$2
RIP=$3
RPT=$4
# RPT=8545
# Run curl with appropriate options
curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"eth_syncing","params": [],"id":1}' https://$HAPROXY_SERVER_NAME:$RPT/$HAPROXY_PROXY_NAME 2>/dev/null | jq '.result' -r | grep -q false
exit1=$?
peers=$(curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"net_peerCount","params": [],"id":1}' https://$HAPROXY_SERVER_NAME:$RPT/$HAPROXY_PROXY_NAME 2>/dev/null | jq '.result' -r)
# If any of the above tests failed, then exit 1.
if [[ "$exit1" -ne 0 ]]; then exit 1; fi
if [[ `printf "%d" $peers` == "0" || `printf "%d" $peers` == "1" ]]; then exit 1; fi
exit 0
+25
View File
@@ -0,0 +1,25 @@
#!/bin/bash
# $1 = Virtual Service IP (VIP)
# $2 = Virtual Service Port (VPT)
# $3 = Real Server IP (RIP)
# $4 = Real Server Port (RPT)
# $5 = Check Source IP
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
VIP=$1
VPT=$2
RIP=$3
RPT=$4
# RPT=8545
# Run curl with appropriate options
our_blockheight=$(curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params": [],"id":1}' https://$HAPROXY_SERVER_NAME:$RPT/$HAPROXY_PROXY_NAME 2>/dev/null | printf "%d" $(jq '.result' -r))
pokt_blockheight=$(curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params": [],"id":1}' https://poly-rpc.gateway.pokt.network 2>/dev/null | printf "%d" $(jq '.result' -r))
peers=$(curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"net_peerCount","params": [],"id":1}' https://$HAPROXY_SERVER_NAME:$RPT/$HAPROXY_PROXY_NAME 2>/dev/null | jq '.result' -r)
# If any of the above tests failed, then exit 1.
if [[ "$our_blockheight" -lt "$pokt_blockheight - 10" ]]; then exit 1; fi
if [[ `printf "%d" $peers` == "0" || `printf "%d" $peers` == "1" ]]; then exit 1; fi
exit 0
+43
View File
@@ -0,0 +1,43 @@
version: '3.1'
services:
harmony-mainnet:
build: ./harmony/build
command: bash -c "/harmony.sh && /binary --log.dir /harmony/log --run explorer --run.shard 0 --dns.zone t.hmny.io --http.ip 0.0.0.0 --datadir /harmony"
sysctls:
net.core.somaxconn: 1024
# net.core.netdev_max_backlog: 65536
net.ipv4.tcp_tw_reuse: 1
net.ipv4.tcp_rmem: 4096 65536 16777216
net.ipv4.tcp_wmem: 4096 65536 16777216
# net.ipv4.tcp_mem: 65536 131072 262144
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
expose:
- "9500"
- "9000"
- "6000"
- "30303"
volumes:
- ./harmony:/harmony/
- ./bootstrap_skript/harmony.sh:/harmony.sh
networks:
- chains
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.harmony-mainnet-stripprefix.stripprefix.prefixes=/harmony"
- "traefik.http.services.harmony-mainnet.loadbalancer.server.port=9500"
- "traefik.http.routers.harmony-mainnet.entrypoints=websecure"
- "traefik.http.routers.harmony-mainnet.tls.certresolver=myresolver"
- "traefik.http.routers.harmony-mainnet.rule=Host(`$DOMAIN`) && PathPrefix(`/harmony`)"
- "traefik.http.routers.harmony-mainnet.middlewares=harmony-mainnet-stripprefix, ipwhitelist"
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=9900"
- "prometheus-scrape.job_name=harmony-mainnet"
volumes:
harmony:
-95
View File
@@ -1,95 +0,0 @@
Version = "2.5.0"
[BLSKeys]
KMSConfigFile = ""
KMSConfigSrcType = "shared"
KMSEnabled = false
KeyDir = "./.hmy/blskeys"
KeyFiles = []
MaxKeys = 10
PassEnabled = true
PassFile = ""
PassSrcType = "auto"
SavePassphrase = false
[DNSSync]
Client = true
LegacySyncing = false
Port = 6000
Server = true
ServerPort = 6000
Zone = "t.hmny.io"
[General]
DataDir = "./"
EnablePruneBeaconChain = true
IsArchival = false
IsBackup = false
IsBeaconArchival = false
IsOffline = false
NoStaking = false
NodeType = "validator"
ShardID = -1
[HTTP]
AuthPort = 9501
Enabled = true
IP = "127.0.0.1"
Port = 9500
RosettaEnabled = false
RosettaPort = 9700
[Log]
FileName = "harmony.log"
Folder = "./latest"
RotateCount = 0
RotateMaxAge = 0
RotateSize = 100
Verbosity = 3
[Log.VerbosePrints]
Config = true
[Network]
BootNodes = ["/dnsaddr/bootstrap.t.hmny.io"]
NetworkType = "mainnet"
[P2P]
DiscConcurrency = 0
IP = "0.0.0.0"
KeyFile = "./.hmykey"
MaxConnsPerIP = 10
Port = 9000
[Pprof]
Enabled = false
Folder = "./profiles"
ListenAddr = "127.0.0.1:6060"
ProfileDebugValues = [0]
ProfileIntervals = [600]
ProfileNames = []
[RPCOpt]
DebugEnabled = false
RateLimterEnabled = true
RequestsPerSecond = 1000
[Sync]
Concurrency = 6
DiscBatch = 8
DiscHardLowCap = 6
DiscHighCap = 128
DiscSoftLowCap = 8
Downloader = false
Enabled = false
InitStreams = 8
MinPeers = 6
[TxPool]
BlacklistFile = "./.hmy/blacklist.txt"
[WS]
AuthPort = 9801
Enabled = true
IP = "127.0.0.1"
Port = 9800
+33 -37
View File
@@ -1,36 +1,6 @@
version: '3.1' version: '3.1'
services: services:
harmony-mainnet:
build: ./harmony/build
command: bash -c "/harmony.sh && /binary -c /harmony.conf --log.dir /harmony/log --run.shard 1 --dns.zone t.hmny.io --http.ip 0.0.0.0 --datadir /harmony"
sysctls:
net.core.somaxconn: 1024
# net.core.netdev_max_backlog: 65536
net.ipv4.tcp_tw_reuse: 1
net.ipv4.tcp_rmem: 4096 65536 16777216
net.ipv4.tcp_wmem: 4096 65536 16777216
# net.ipv4.tcp_mem: 65536 131072 262144
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
expose:
- "9500"
- "9000"
- "6000"
- "9900"
ports:
- 9000:9000/tcp
- 6000:6000/tcp
volumes:
- harmony_data:/harmony/
- ./harmony/keyfiles:/.hmy/blskeys
- ./harmony/log:/harmony/log
- ./harmony/harmony.conf:/harmony.conf
- ./bootstrap_skript/harmony.sh:/harmony.sh
restart: unless-stopped
### WIREGUARD ### WIREGUARD
@@ -59,7 +29,9 @@ services:
sysctls: sysctls:
- net.ipv4.conf.all.src_valid_mark=1 - net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped restart: unless-stopped
networks:
- chains
- monitoring
### MONITORING ### MONITORING
@@ -67,8 +39,9 @@ services:
image: prom/prometheus:v2.30.3 image: prom/prometheus:v2.30.3
container_name: prometheus container_name: prometheus
volumes: volumes:
- ./prometheus/prometheus-harmony.yml:/etc/prometheus/prometheus.yml - ./prometheus/prometheus-autodiscover.yml:/etc/prometheus/prometheus.yml:ro
- prometheus_data:/prometheus - prometheus_data:/prometheus:rw
- prometheus-docker-sd:/prometheus-docker-sd:ro
command: command:
- '--config.file=/etc/prometheus/prometheus.yml' - '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus' - '--storage.tsdb.path=/prometheus'
@@ -77,11 +50,19 @@ services:
- '--storage.tsdb.retention.time=200h' - '--storage.tsdb.retention.time=200h'
- '--web.enable-lifecycle' - '--web.enable-lifecycle'
restart: unless-stopped restart: unless-stopped
network_mode: "service:wireguard"
labels: labels:
org.label-schema.group: "monitoring" org.label-schema.group: "monitoring"
depends_on: depends_on:
- prometheus-docker-sd
- wireguard - wireguard
network_mode: "service:wireguard"
prometheus-docker-sd:
image: "stucky/prometheus-docker-sd:latest"
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- prometheus-docker-sd:/prometheus-docker-sd:rw
nodeexporter: nodeexporter:
image: prom/node-exporter:v1.2.2 image: prom/node-exporter:v1.2.2
@@ -99,7 +80,12 @@ services:
expose: expose:
- 9100 - 9100
labels: labels:
org.label-schema.group: "monitoring" - "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=9100"
- "prometheus-scrape.job_name=nodeexporter"
- "org.label-schema.group=monitoring"
networks:
- monitoring
cadvisor: cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.42.0 image: gcr.io/cadvisor/cadvisor:v0.42.0
@@ -117,11 +103,21 @@ services:
expose: expose:
- 8080 - 8080
labels: labels:
org.label-schema.group: "monitoring" - "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8080"
- "prometheus-scrape.job_name=cadvisor"
- "org.label-schema.group=monitoring"
networks:
- monitoring
### VOLUMES ### VOLUMES
volumes: volumes:
harmony_data:
prometheus_data: prometheus_data:
prometheus-docker-sd:
### NETWORK
networks:
monitoring:
driver: bridge
+86
View File
@@ -0,0 +1,86 @@
version: '3.1'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: always
ports:
- "443:443"
- "127.0.0.1:8080:8080"
expose:
- "8082"
command:
- "--api=true"
- "--api.insecure=true"
- "--api.dashboard=true"
- "--log.level=DEBUG"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.websecure.address=:443"
- "--entryPoints.metrics.address=:8082"
- "--metrics.prometheus.entryPoint=metrics"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
# TESTING
# - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.myresolver.acme.email=$MAIL"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
volumes:
- "./traefik/letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
labels:
- "traefik.enable=true"
### POKT
pocket-de-1:
build: pokt
ports:
- "127.0.0.1:8081:8081"
- "26656:26656"
expose:
- 26656
- 26660
- 8081
- 8083
#command: pocket start --simulateRelay
environment:
- POCKET_CORE_KEY=$POKT_DE_1_POCKET_CORE_KEY
- POCKET_CORE_PASSPHRASE=$POKT_DE_1_POCKET_CORE_PASSPHRASE
- POCKET_SNAPSHOT=$POCKET_SNAPSHOT
volumes:
- pocket-de-1:/home/app/.pocket/data
- pocket-de-1-addrbook:/home/app/.pocket/addrbook
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.services.pocket-fr-1.loadbalancer.server.port=8081"
- "traefik.http.routers.pocket-fr-1.entrypoints=websecure"
- "traefik.http.routers.pocket-fr-1.tls.certresolver=myresolver"
- "traefik.http.routers.pocket-fr-1.rule=Host(`$POKT_DE_1_DOMAIN`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8083"
- "prometheus-scrape.job_name=pocket-de-1"
haproxy:
build: haproxy
volumes:
- ./haproxy:/usr/local/etc/haproxy
expose:
- "8404"
- "80"
ports:
- "127.0.0.1:80:80"
restart: always
labels:
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8404"
- "prometheus-scrape.job_name=haproxy"
- "prometheus-scrape.metrics_path=/metrics"
### VOLUMES
volumes:
pocket-de-1:
pocket-de-1-addrbook:
+81
View File
@@ -0,0 +1,81 @@
version: '3.1'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: always
ports:
- "443:443"
- "127.0.0.1:8080:8080"
expose:
- "8082"
command:
- "--api=true"
- "--api.insecure=true"
- "--api.dashboard=true"
- "--log.level=DEBUG"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.websecure.address=:443"
- "--entryPoints.metrics.address=:8082"
- "--metrics.prometheus.entryPoint=metrics"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
# TESTING
# - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.myresolver.acme.email=$MAIL"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
volumes:
- "./traefik/letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
labels:
- "traefik.enable=true"
haproxy:
build: haproxy
volumes:
- ./haproxy:/usr/local/etc/haproxy
expose:
- "8404"
- "80"
ports:
- "127.0.0.1:80:80"
restart: always
labels:
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8404"
- "prometheus-scrape.job_name=haproxy"
- "prometheus-scrape.metrics_path=/metrics"
pocket:
build: pokt
ports:
- "127.0.0.1:8081:8081"
- "26657:26656"
expose:
- 26656
- 26660
- 8081
- 8083
environment:
- POCKET_CORE_KEY=$POCKET_CORE_KEY
- POCKET_CORE_PASSPHRASE=$POCKET_CORE_PASSPHRASE
- POCKET_SNAPSHOT=$POCKET_SNAPSHOT
volumes:
- pocket:/home/app/.pocket/data
- pocket-addrbook:/home/app/.pocket/addrbook
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.services.pocket.loadbalancer.server.port=8081"
- "traefik.http.routers.pocket.entrypoints=websecure"
- "traefik.http.routers.pocket.tls.certresolver=myresolver"
- "traefik.http.routers.pocket.rule=Host(`$DOMAIN`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8083"
- "prometheus-scrape.job_name=pocket"
### VOLUMES
volumes:
pocket:
pocket-addrbook:
+117
View File
@@ -0,0 +1,117 @@
version: '3.1'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: always
ports:
- "443:443"
- "127.0.0.1:8080:8080"
expose:
- "8082"
command:
- "--api=true"
- "--api.insecure=true"
- "--api.dashboard=true"
- "--log.level=DEBUG"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.websecure.address=:443"
- "--entryPoints.metrics.address=:8082"
- "--metrics.prometheus.entryPoint=metrics"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
# TESTING
# - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.myresolver.acme.email=$MAIL"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
volumes:
- "./traefik/letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
labels:
- "traefik.enable=true"
### POKT
pocket-lt-1:
build: pokt
ports:
- "127.0.0.1:8081:8081"
- "26656:26656"
expose:
- 26656
- 26660
- 8081
- 8083
#command: pocket start --simulateRelay
environment:
- POCKET_CORE_KEY=$POKT_LT_1_POCKET_CORE_KEY
- POCKET_CORE_PASSPHRASE=$POKT_LT_1_POCKET_CORE_PASSPHRASE
- POCKET_SNAPSHOT=$POCKET_SNAPSHOT
volumes:
- pocket-lt-1:/home/app/.pocket/data
- pocket-lt-1-addrbook:/home/app/.pocket/addrbook
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.services.pocket-lt-1.loadbalancer.server.port=8081"
- "traefik.http.routers.pocket-lt-1.entrypoints=websecure"
- "traefik.http.routers.pocket-lt-1.tls.certresolver=myresolver"
- "traefik.http.routers.pocket-lt-1.rule=Host(`$POKT_LT_1_DOMAIN`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8083"
- "prometheus-scrape.job_name=pocket-lt-1"
pocket-lt-2:
build: pokt
ports:
- "127.0.0.1:8082:8081"
- "26657:26656"
expose:
- 26656
- 26660
- 8081
- 8083
#command: pocket start --simulateRelay
environment:
- POCKET_CORE_KEY=$POKT_LT_2_POCKET_CORE_KEY
- POCKET_CORE_PASSPHRASE=$POKT_LT_2_POCKET_CORE_PASSPHRASE
- POCKET_SNAPSHOT=$POCKET_SNAPSHOT
volumes:
- pocket-lt-2:/home/app/.pocket/data
- pocket-lt-2-addrbook:/home/app/.pocket/addrbook
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.services.pocket-lt-2.loadbalancer.server.port=8081"
- "traefik.http.routers.pocket-lt-2.entrypoints=websecure"
- "traefik.http.routers.pocket-lt-2.tls.certresolver=myresolver"
- "traefik.http.routers.pocket-lt-2.rule=Host(`$POKT_LT_2_DOMAIN`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8083"
- "prometheus-scrape.job_name=pocket-lt-2"
haproxy:
build: haproxy
volumes:
- ./haproxy:/usr/local/etc/haproxy
expose:
- "8404"
- "80"
ports:
- "127.0.0.1:80:80"
restart: always
labels:
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8404"
- "prometheus-scrape.job_name=haproxy"
- "prometheus-scrape.metrics_path=/metrics"
### VOLUMES
volumes:
pocket-lt-1:
pocket-lt-1-addrbook:
pocket-lt-2:
pocket-lt-2-addrbook:
+162
View File
@@ -0,0 +1,162 @@
version: '3.1'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: always
ports:
- "443:443"
- "127.0.0.1:8080:8080"
command:
- "--api=true"
- "--api.insecure=true"
- "--api.dashboard=true"
- "--log.level=DEBUG"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
# TESTING
# - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.myresolver.acme.email=$MAIL"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
volumes:
- "./traefik/letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
labels:
- "traefik.enable=true"
pocket-testnet:
build: pokt
ports:
- "127.0.0.1:8081:8081"
- "26656:26656"
expose:
- 26656
- 8081
- 8083
environment:
- POCKET_CORE_KEY=$POCKET_CORE_KEY_TEST
- POCKET_CORE_PASSPHRASE=$POCKET_CORE_PASSPHRASE_TEST
volumes:
- pocket-testnet:/home/app/.pocket/data
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.services.pocket-testnet.loadbalancer.server.port=8081"
- "traefik.http.routers.pocket-testnet.entrypoints=websecure"
- "traefik.http.routers.pocket-testnet.tls.certresolver=myresolver"
- "traefik.http.routers.pocket-testnet.rule=Host(`$TEST_DOMAIN_1`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
pocket-mainnet:
build: pokt
ports:
- "127.0.0.1:8082:8081"
- "26657:26656"
expose:
- 26656
- 8081
- 8083
environment:
- POCKET_SNAPSHOT=$POCKET_SNAPSHOT
- POCKET_CORE_KEY=$POCKET_CORE_KEY_MAINNET
- POCKET_CORE_PASSPHRASE=$POCKET_CORE_PASSPHRASE_MAINNET
volumes:
- pocket-mainnet:/home/app/.pocket/data
- pocket-mainnet-config:/home/app/.pocket/config
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.services.pocket-mainnet.loadbalancer.server.port=8081"
- "traefik.http.routers.pocket-mainnet.entrypoints=websecure"
- "traefik.http.routers.pocket-mainnet.tls.certresolver=myresolver"
- "traefik.http.routers.pocket-mainnet.rule=Host(`$TEST_DOMAIN_2`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
### MONITORING
### WIREGUARD
wireguard:
image: lscr.io/linuxserver/wireguard
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=$PUID
- PGID=$PGID
volumes:
- ./wireguard/config/wg0.conf:/config/wg0.conf
- /lib/modules:/lib/modules
# Expose prometheus port
expose:
- 9090
ports:
- $SERVERPORT:$SERVERPORT/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped
prometheus:
image: prom/prometheus:v2.30.3
container_name: prometheus
volumes:
- ./prometheus:/etc/prometheus
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--storage.tsdb.retention.time=200h'
- '--web.enable-lifecycle'
restart: unless-stopped
network_mode: "service:wireguard"
labels:
org.label-schema.group: "monitoring"
depends_on:
- wireguard
nodeexporter:
image: prom/node-exporter:v1.2.2
container_name: nodeexporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
restart: unless-stopped
expose:
- 9100
labels:
org.label-schema.group: "monitoring"
cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.42.0
container_name: cadvisor
privileged: true
devices:
- /dev/kmsg:/dev/kmsg
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker:/var/lib/docker:ro
#- /cgroup:/cgroup:ro #doesn't work on MacOS only for Linux
restart: unless-stopped
expose:
- 8080
labels:
org.label-schema.group: "monitoring"
### VOLUMES
volumes:
pocket-testnet:
pocket-mainnet:
pocket-mainnet-config:
prometheus_data:
+13
View File
@@ -0,0 +1,13 @@
FROM poktnetwork/pocket-core:RC-0.9.1.1
COPY --chown=1005:1001 config.json /home/app/.pocket/config/config.json
COPY --chown=1005:1001 chains.json /home/app/.pocket/config/chains.json
COPY --chown=1005:1001 bootstrap.sh /home/app/.pocket/bootstrap.sh
RUN mkdir /home/app/.pocket/addrbook
RUN mkdir /home/app/.pocket/data
RUN chown -R 1005:1001 /home/app/.pocket/data
ENV POCKET_MAIN_SEEDS=361b1936d3fbe516628ebd6a503920fc4fc0f6a7@seed.pokt.rivet.cloud:26656,03b74fa3c68356bb40d58ecc10129479b159a145@seed1.mainnet.pokt.network:20656,64c91701ea98440bc3674fdb9a99311461cdfd6f@seed2.mainnet.pokt.network:21656,0057ee693f3ce332c4ffcb499ede024c586ae37b@seed3.mainnet.pokt.network:22856,9fd99b89947c6af57cd0269ad01ecb99960177cd@seed4.mainnet.pokt.network:23856,1243026603e9073507a3157bc4de99da74a078fc@seed5.mainnet.pokt.network:24856,6282b55feaff460bb35820363f1eb26237cf5ac3@seed6.mainnet.pokt.network:25856,3640ee055889befbc912dd7d3ed27d6791139395@seed7.mainnet.pokt.network:26856,1951cded4489bf51af56f3dbdd6df55c1a952b1a@seed8.mainnet.pokt.network:27856,a5f4a4cd88db9fd5def1574a0bffef3c6f354a76@seed9.mainnet.pokt.network:28856,d4039bd71d48def9f9f61f670c098b8956e52a08@seed10.mainnet.pokt.network:29856,5c133f07ed296bb9e21e3e42d5f26e0f7d2b2832@poktseed100.chainflow.io:26656
CMD ["bash", "/home/app/.pocket/bootstrap.sh", "&&", "pocket", "start", "--seeds", "361b1936d3fbe516628ebd6a503920fc4fc0f6a7@seed.pokt.rivet.cloud:26656,03b74fa3c68356bb40d58ecc10129479b159a145@seed1.mainnet.pokt.network:20656,64c91701ea98440bc3674fdb9a99311461cdfd6f@seed2.mainnet.pokt.network:21656,0057ee693f3ce332c4ffcb499ede024c586ae37b@seed3.mainnet.pokt.network:22856,9fd99b89947c6af57cd0269ad01ecb99960177cd@seed4.mainnet.pokt.network:23856,1243026603e9073507a3157bc4de99da74a078fc@seed5.mainnet.pokt.network:24856,6282b55feaff460bb35820363f1eb26237cf5ac3@seed6.mainnet.pokt.network:25856,3640ee055889befbc912dd7d3ed27d6791139395@seed7.mainnet.pokt.network:26856,1951cded4489bf51af56f3dbdd6df55c1a952b1a@seed8.mainnet.pokt.network:27856,a5f4a4cd88db9fd5def1574a0bffef3c6f354a76@seed9.mainnet.pokt.network:28856,d4039bd71d48def9f9f61f670c098b8956e52a08@seed10.mainnet.pokt.network:29856,5c133f07ed296bb9e21e3e42d5f26e0f7d2b2832@poktseed100.chainflow.io:26656", "--mainnet"]
+10
View File
@@ -0,0 +1,10 @@
#!/bin/sh
if [ ! -f /home/app/.pocket/data/setupdone ]
then
mkdir -p /home/app/.pocket/data
echo "wget -q -O - '$POCKET_SNAPSHOT' | tar -xvz -C /home/app/.pocket/data/"
wget -q -O - $POCKET_SNAPSHOT | tar -xvz -C /home/app/.pocket/data/
touch /home/app/.pocket/data/setupdone
fi
+58
View File
@@ -0,0 +1,58 @@
[
{
"id": "0001",
"url": "http://localhost:8081"
},
{
"id": "0004",
"url": "http://haproxy/bsc"
},
{
"id": "0005",
"url": "http://haproxy/fuse"
},
{
"id": "0009",
"url": "http://haproxy/polygon"
},
{
"id": "0021",
"url": "http://haproxy/mainnet"
},
{
"id": "0022",
"url": "http://haproxy/erigon"
},
{
"id": "0023",
"url": "http://haproxy/ropsten"
},
{
"id": "0025",
"url": "http://haproxy/rinkeby"
},
{
"id": "0026",
"url": "http://haproxy/goerli"
},
{
"id": "0027",
"url": "http://haproxy/xdai"
},
{
"id": "0028",
"url": "http://haproxy/erigon"
},
{
"id": "0040",
"url": "http://haproxy/harmony"
},
{
"id": "0049",
"url": "http://haproxy/fantom"
},
{
"id": "0006",
"url": "http://haproxy/solana"
}
]
+157
View File
@@ -0,0 +1,157 @@
{
"tendermint_config": {
"RootDir": "/home/app/.pocket",
"ProxyApp": "tcp://127.0.0.1:26658",
"Moniker": "stakesquid",
"FastSyncMode": true,
"DBBackend": "goleveldb",
"LevelDBOptions": {
"block_cache_capacity": 83886,
"block_cache_evict_removed": false,
"block_size": 4096,
"disable_buffer_pool": true,
"open_files_cache_capacity": -1,
"write_buffer": 838860
},
"DBPath": "data",
"LogLevel": "*:info, *:error",
"LogFormat": "plain",
"Genesis": "config/genesis.json",
"PrivValidatorKey": "priv_val_key.json",
"PrivValidatorState": "priv_val_state.json",
"PrivValidatorListenAddr": "",
"NodeKey": "node_key.json",
"ABCI": "socket",
"ProfListenAddress": "",
"FilterPeers": false,
"RPC": {
"RootDir": "/home/app/.pocket",
"ListenAddress": "tcp://127.0.0.1:26657",
"CORSAllowedOrigins": [],
"CORSAllowedMethods": [
"HEAD",
"GET",
"POST"
],
"CORSAllowedHeaders": [
"Origin",
"Accept",
"Content-Type",
"X-Requested-With",
"X-Server-Time"
],
"GRPCListenAddress": "",
"GRPCMaxOpenConnections": 2500,
"Unsafe": false,
"MaxOpenConnections": 2500,
"MaxSubscriptionClients": 100,
"MaxSubscriptionsPerClient": 5,
"TimeoutBroadcastTxCommit": 10000000000,
"MaxBodyBytes": 1000000,
"MaxHeaderBytes": 1048576,
"TLSCertFile": "",
"TLSKeyFile": ""
},
"P2P": {
"RootDir": "/home/app/.pocket",
"ListenAddress": "tcp://0.0.0.0:26656",
"ExternalAddress": "",
"Seeds": "",
"PersistentPeers": "",
"UPNP": false,
"AddrBook": "addrbook/addrbook.json",
"AddrBookStrict": false,
"MaxNumInboundPeers": 14,
"MaxNumOutboundPeers": 7,
"UnconditionalPeerIDs": "",
"PersistentPeersMaxDialPeriod": 0,
"FlushThrottleTimeout": 100000000,
"MaxPacketMsgPayloadSize": 1024,
"SendRate": 5120000,
"RecvRate": 5120000,
"PexReactor": true,
"SeedMode": false,
"PrivatePeerIDs": "",
"AllowDuplicateIP": true,
"HandshakeTimeout": 20000000000,
"DialTimeout": 3000000000,
"TestDialFail": false,
"TestFuzz": false,
"TestFuzzConfig": {
"Mode": 0,
"MaxDelay": 3000000000,
"ProbDropRW": 0.2,
"ProbDropConn": 0,
"ProbSleep": 0
}
},
"Mempool": {
"RootDir": "/home/app/.pocket",
"Recheck": true,
"Broadcast": true,
"WalPath": "",
"Size": 9000,
"MaxTxsBytes": 1073741824,
"CacheSize": 9000,
"MaxTxBytes": 1048576
},
"FastSync": {
"Version": "v1"
},
"Consensus": {
"RootDir": "/home/app/.pocket",
"WalPath": "data/cs.wal/wal",
"TimeoutPropose": 120000000000,
"TimeoutProposeDelta": 10000000000,
"TimeoutPrevote": 60000000000,
"TimeoutPrevoteDelta": 10000000000,
"TimeoutPrecommit": 60000000000,
"TimeoutPrecommitDelta": 10000000000,
"TimeoutCommit": 780000000000,
"SkipTimeoutCommit": false,
"CreateEmptyBlocks": true,
"CreateEmptyBlocksInterval": 900000000000,
"PeerGossipSleepDuration": 30000000000,
"PeerQueryMaj23SleepDuration": 20000000000
},
"TxIndex": {
"Indexer": "kv",
"IndexKeys": "tx.hash,tx.height,message.sender,transfer.recipient",
"IndexAllKeys": false
},
"Instrumentation": {
"Prometheus": true,
"PrometheusListenAddr": ":26660",
"MaxOpenConnections": 3,
"Namespace": "tendermint"
}
},
"pocket_config": {
"data_dir": "/home/app/.pocket",
"genesis_file": "genesis.json",
"chains_name": "chains.json",
"evidence_db_name": "pocket_evidence",
"tendermint_uri": "tcp://localhost:26657",
"keybase_name": "pocket-keybase",
"rpc_port": "8081",
"client_block_sync_allowance": 10,
"max_evidence_cache_entries": 500,
"max_session_cache_entries": 500,
"json_sort_relay_responses": true,
"remote_cli_url": "http://localhost:8081",
"user_agent": "",
"validator_cache_size": 40000,
"application_cache_size": 10000,
"rpc_timeout": 30000,
"pocket_prometheus_port": "8083",
"prometheus_max_open_files": 3,
"max_claim_age_for_proof_retry": 32,
"proof_prevalidation": false,
"ctx_cache_size": 20,
"abci_logging": false,
"show_relay_errors": true,
"disable_tx_events": true,
"iavl_cache_size": 5000000,
"chains_hot_reload": false
}
}
+34
View File
@@ -0,0 +1,34 @@
version: '3.1'
services:
bor:
build:
args:
UPSTREAM_VERSION: v0.2.14
context: ./polygon/bor
dockerfile: Dockerfile
environment:
- SNAPSHOT_URL=https://matic-blockchain-snapshots.s3-accelerate.amazonaws.com/matic-mainnet/bor-archive-node-snapshot-2022-03-17.tar.gz
- BOOTSTRAP=1
- ARCHIVE=1
volumes:
- "bor-archive_data:/datadir"
ports:
- "40303:40303"
- "40303:40303/udp"
depends_on:
- heimdallr
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.bor-stripprefix.stripprefix.prefixes=/polygon-archive"
- "traefik.http.services.bor.loadbalancer.server.port=8545"
- "traefik.http.routers.bor.entrypoints=websecure"
- "traefik.http.routers.bor.tls.certresolver=myresolver"
- "traefik.http.routers.bor.rule=Host(`$DOMAIN`) && PathPrefix(`/polygon-archive`)"
- "traefik.http.routers.bor.middlewares=bor-stripprefix, ipwhitelist"
networks:
- chains
volumes:
bor-archive_data:
+52
View File
@@ -0,0 +1,52 @@
version: '3.1'
services:
rabbitmq:
container_name: rabbitmq
image: "rabbitmq:3-alpine"
expose:
- "5672"
restart: unless-stopped
heimdalld:
build: &ref_0
args:
UPSTREAM_VERSION: v0.2.8
context: ./polygon/heimdall
dockerfile: Dockerfile
volumes:
- "heimdall_data:/root/.heimdalld"
ports:
- "26656:26656"
- "127.0.0.1:26657:26657"
depends_on:
- rabbitmq
- geth-mainnet
environment:
- MONIKER=StakeSquid
- SNAPSHOT_URL=https://matic-blockchain-snapshots.s3-accelerate.amazonaws.com/matic-mainnet/heimdall-snapshot-2022-10-17.tar.gz
- BOOTSTRAP=1
- "ETH1_RPC_URL=http://geth-mainnet:8545/"
restart: unless-stopped
networks:
- chains
heimdallr:
environment:
- REST_SERVER=1
- "ETH1_RPC_URL=http://geth-mainnet:8545/"
build: *ref_0
volumes:
- "heimdall_data:/root/.heimdalld"
expose:
- "1317"
depends_on:
- heimdalld
- geth-mainnet
restart: unless-stopped
networks:
- chains
volumes:
heimdall_data:
+37
View File
@@ -0,0 +1,37 @@
version: '3.1'
services:
bor:
build:
args:
UPSTREAM_VERSION: v0.2.14
context: ./polygon/bor
dockerfile: Dockerfile
sysctls:
net.ipv4.tcp_slow_start_after_idle: 0
net.ipv4.tcp_no_metrics_save: 1
environment:
- SNAPSHOT_URL=https://matic-blockchain-snapshots.s3-accelerate.amazonaws.com/matic-mainnet/bor-fullnode-snapshot-2022-10-10.tar.gz
- BOOTSTRAP=1
- ARCHIVE=0
volumes:
- "bor_data:/datadir"
ports:
- "40303:40303"
- "40303:40303/udp"
depends_on:
- heimdallr
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.bor-stripprefix.stripprefix.prefixes=/polygon"
- "traefik.http.services.bor.loadbalancer.server.port=8545"
- "traefik.http.routers.bor.entrypoints=websecure"
- "traefik.http.routers.bor.tls.certresolver=myresolver"
- "traefik.http.routers.bor.rule=Host(`$DOMAIN`) && PathPrefix(`/polygon`)"
- "traefik.http.routers.bor.middlewares=bor-stripprefix, ipwhitelist"
networks:
- chains
volumes:
bor_data:
+28
View File
@@ -0,0 +1,28 @@
# Build Bor in a stock Go builder container
FROM golang:1.16-alpine as builder
# Install packages we need
RUN apk add --no-cache make gcc musl-dev linux-headers git
# Make a folder to work in
RUN mkdir /bor
# Grab UPSTREAM_VERSION from Build Args
ARG UPSTREAM_VERSION
# Clone the repo to that folder
RUN git clone --branch ${UPSTREAM_VERSION} https://github.com/maticnetwork/bor.git /bor
# Build Bor
RUN cd /bor && make bor
# Pull Bor into a second stage deploy alpine container
FROM alpine:latest
RUN apk add --no-cache ca-certificates curl jq
COPY --from=builder /bor/build/bin/bor /usr/local/bin/
# Set entrypoint
COPY ./scripts/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod u+x /usr/local/bin/entrypoint.sh
ENTRYPOINT [ "/usr/local/bin/entrypoint.sh" ]
+60
View File
@@ -0,0 +1,60 @@
#!/bin/sh
# exit script on any error
set -e
# Set Bor Home Directory
BOR_HOME=/datadir
# Check for genesis file and download or update it if needed
if [ ! -f "${BOR_HOME}/genesis.json" ];
then
echo "setting up initial configurations"
cd ${BOR_HOME}
echo "downloading launch genesis file"
wget https://raw.githubusercontent.com/maticnetwork/launch/master/mainnet-v1/sentry/sentry/bor/genesis.json
echo "initializing bor with genesis file"
bor --datadir ${BOR_HOME} init ${BOR_HOME}/genesis.json
else
# Check if genesis file needs updating
cd ${BOR_HOME}
GREPSTRING=$(grep londonBlock genesis.json | wc -l) # v0-2-13 Update
if [ ${GREPSTRING} == 0 ];
then
echo "Updating Genesis File"
wget https://raw.githubusercontent.com/maticnetwork/launch/master/mainnet-v1/sentry/sentry/bor/genesis.json
bor --datadir ${BOR_HOME} init ${BOR_HOME}/genesis.json
fi
fi
if [ "${BOOTSTRAP}" == 1 ] && [ -n "${SNAPSHOT_URL}" ] && [ ! -f "${BOR_HOME}/bootstrapped" ];
then
echo "downloading snapshot from ${SNAPSHOT_URL}"
mkdir -p ${BOR_HOME}/bor/chaindata
wget --tries=0 -O - "${SNAPSHOT_URL}" | tar -xz -C ${BOR_HOME}/bor/chaindata && touch ${BOR_HOME}/bootstrapped
fi
READY=$(curl -s http://heimdalld:26657/status | jq '.result.sync_info.catching_up')
while [[ "${READY}" != "false" ]];
do
echo "Waiting for heimdalld to catch up."
sleep 30
READY=$(curl -s heimdalld:26657/status | jq '.result.sync_info.catching_up')
done
if [ "${ARCHIVE}" == 1 ];
then
exec bor --port=40303 --maxpeers=${MAXPEERS:-200} --datadir=/datadir --networkid=137 --syncmode=full --gcmode=archive \
--ipcpath ${BOR_HOME}/bor.ipc --bor.heimdall=http://heimdallr:1317 \
--txpool.accountslots=16 --txpool.globalslots=131072 --txpool.accountqueue=64 --txpool.globalqueue=131072 \
--txpool.lifetime='1h30m0s' --miner.gaslimit=200000000 --miner.gastarget=20000000 --miner.gasprice '30000000000' \
--http --http.addr=0.0.0.0 --http.port=8545 --http.api=eth,net,web3,txpool,bor --http.corsdomain="*" --http.vhosts="*" \
--ws --ws.addr=0.0.0.0 --ws.port=8545 --ws.api=eth,net,web3,txpool,bor --ws.origins="*"
else
exec bor --port=40303 --maxpeers=${MAXPEERS:-200} --datadir=/datadir --networkid=137 --syncmode=full \
--ipcpath ${BOR_HOME}/bor.ipc --bor.heimdall=http://heimdallr:1317 \
--txpool.accountslots=16 --txpool.globalslots=131072 --txpool.accountqueue=64 --txpool.globalqueue=131072 \
--txpool.lifetime='1h30m0s' --miner.gaslimit=200000000 --miner.gastarget=20000000 --miner.gasprice '30000000000' \
--http --http.addr=0.0.0.0 --http.port=8545 --http.api=eth,net,web3,txpool,bor --http.corsdomain="*" --http.vhosts="*" \
--ws --ws.addr=0.0.0.0 --ws.port=8545 --ws.api=eth,net,web3,txpool,bor --ws.origins="*"
fi
+28
View File
@@ -0,0 +1,28 @@
# Build and Install Heimdall in a stock Go builder container
FROM golang:1.17-alpine
# Install packages we need
RUN apk add --no-cache make gcc musl-dev linux-headers git
# create go src directory and clone heimdall
RUN mkdir -p /root/heimdall
# Grab UPSTREAM_VERSION from Build Args
ARG UPSTREAM_VERSION
# Clone hemidall release into folder
RUN git clone --branch ${UPSTREAM_VERSION} https://github.com/maticnetwork/heimdall.git /root/heimdall
# change work directory
WORKDIR /root/heimdall
# GOBIN required for go install
ENV GOBIN $GOPATH/bin
# Make and Install Heimdall
RUN make install
# Set entrypoint
COPY ./scripts/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod u+x /usr/local/bin/entrypoint.sh
ENTRYPOINT [ "/usr/local/bin/entrypoint.sh" ]
+50
View File
@@ -0,0 +1,50 @@
#!/bin/sh
# exit script on any error
set -e
# Set Heimdall Home Directory
HEIMDALLD_HOME=/root/.heimdalld
if [ ! -f "$HEIMDALLD_HOME/config/config.toml" ];
then
echo "setting up initial configurations"
heimdalld init
cd $HEIMDALLD_HOME/config
echo "removing autogenerated genesis file"
rm genesis.json
echo "downloading launch genesis file"
wget https://raw.githubusercontent.com/maticnetwork/launch/master/mainnet-v1/without-sentry/heimdall/config/genesis.json
echo "overwriting toml config lines"
# config.toml
# CORS
sed -i "s#^cors_allowed_origins.*#cors_allowed_origins = [\"*\"]#" config.toml
# SEEDS
sed -i "s#^seeds.*#seeds = \"${BOOTNODES:-"f4f605d60b8ffaaf15240564e58a81103510631c@159.203.9.164:26656,4fb1bc820088764a564d4f66bba1963d47d82329@44.232.55.71:26656,2eadba4be3ce47ac8db0a3538cb923b57b41c927@35.199.4.13:26656,3b23b20017a6f348d329c102ddc0088f0a10a444@35.221.13.28:26656,25f5f65a09c56e9f1d2d90618aa70cd358aa68da@35.230.116.151:26656"}\"#" config.toml
# heimdall-config.toml
# BOR
sed -i "s#^bor_rpc_url.*#bor_rpc_url = \"http://bor:8545\"#" heimdall-config.toml
# ETH1
sed -i "s#^eth_rpc_url.*#eth_rpc_url = \"${ETH1_RPC_URL}\"#" heimdall-config.toml
# RABBITMQ
sed -i "s#^amqp_url.*#amqp_url = \"amqp://guest:guest@rabbitmq:5672\"#" heimdall-config.toml
fi
if [ "${BOOTSTRAP}" == 1 ] && [ -n "${SNAPSHOT_URL}" ] && [ ! -f "$HEIMDALLD_HOME/bootstrapped" ];
then
echo "downloading snapshot from ${SNAPSHOT_URL}"
mkdir -p ${HEIMDALLD_HOME}/data
wget -c "${SNAPSHOT_URL}" -O - | tar -xz -C ${HEIMDALLD_HOME}/data && touch ${HEIMDALLD_HOME}/bootstrapped
fi
if [ -n "$REST_SERVER" ];
then
EXEC="heimdalld rest-server --chain-id=137 --laddr=tcp://0.0.0.0:1317 --max-open=1000 --node=tcp://heimdalld:26657 --trust-node=true"
else
EXEC="heimdalld start --moniker=$MONIKER --fast_sync --p2p.laddr=tcp://0.0.0.0:26656 --p2p.upnp=false --pruning=syncable --rpc.laddr=tcp://0.0.0.0:26657 --with-tendermint=true"
fi
exec ${EXEC}
@@ -13,29 +13,13 @@ rule_files:
# A scrape configuration containing exactly one endpoint to scrape. # A scrape configuration containing exactly one endpoint to scrape.
scrape_configs: scrape_configs:
- job_name: 'nodeexporter'
scrape_interval: 5s
static_configs:
- targets: ['nodeexporter:9100']
- job_name: 'cadvisor'
scrape_interval: 5s
static_configs:
- targets: ['cadvisor:8080']
- job_name: 'prometheus' - job_name: 'prometheus'
scrape_interval: 10s scrape_interval: 10s
static_configs: static_configs:
- targets: ['localhost:9090'] - targets: ['localhost:9090']
- job_name: 'harmony-mainnet' - job_name: 'service_discovery'
scrape_interval: 10s file_sd_configs:
honor_labels: true - files:
static_configs: - '/prometheus-docker-sd/docker-targets.json'
- targets: ['harmony-mainnet:9900']
- job_name: 'traefik'
scrape_interval: 10s
honor_labels: true
static_configs:
- targets: ['traefik:8082']
+29
View File
@@ -0,0 +1,29 @@
version: '3.1'
services:
prysm:
image: prysmaticlabs/prysm-beacon-chain:stable
ports:
- "127.0.0.1:3500:3500"
- "13000:13000"
- "12000:12000/udp"
command:
[
"--datadir=/data",
"--jwt-secret=/jwtsecret",
"--rpc-host=0.0.0.0",
"--grpc-gateway-host=0.0.0.0",
"--monitoring-host=0.0.0.0",
"--execution-endpoint=http://$EXECUTION_CLIENT:8551",
"--accept-terms-of-use"
]
networks:
- chains
volumes:
- "prysm_data:/data"
- ".jwtsecret:/jwtsecret"
restart: unless-stopped
stop_grace_period: 1m
volumes:
prysm_data:
+48
View File
@@ -0,0 +1,48 @@
version: '3.1'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: always
expose:
- "8082"
ports:
- "443:443"
- "127.0.0.1:8080:8080"
command:
- "--api=true"
- "--api.insecure=true"
- "--api.dashboard=true"
- "--log.level=DEBUG"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--providers.file.filename=/dynamic_config.yml"
- "--entrypoints.websecure.address=:443"
- "--entryPoints.metrics.address=:8082"
- "--metrics.prometheus.entryPoint=metrics"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
# TESTING
# - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.myresolver.acme.email=$MAIL"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
volumes:
- "./traefik/letsencrypt:/letsencrypt"
- "./traefik/config/dynamic_config.yml:/dynamic_config.yml"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
networks:
- chains
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=$WHITELIST"
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8082"
- "prometheus-scrape.job_name=traefik"
networks:
chains:
driver: bridge
ipam:
config:
- subnet: 192.168.0.1/27
+13
View File
@@ -0,0 +1,13 @@
tls:
options:
default:
minVersion: VersionTLS12
cipherSuites:
# Recommended ciphers for TLSv1.2
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
# Recommended ciphers for TLSv1.3
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
View File
+60
View File
@@ -0,0 +1,60 @@
---
version: "3.1"
services:
wireguard:
image: lscr.io/linuxserver/wireguard
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=$PUID
- PGID=$PGID
- TZ=Europe/London
- SERVERURL=$SERVERURL
- SERVERPORT=$SERVERPORT
- PEERS=$PEERS
- PEERDNS=none
- ALLOWEDIPS=$ALLOWEDIPS
- INTERNAL_SUBNET=$INTERNAL_SUBNET
volumes:
- ./wireguard/config:/config
- /lib/modules:/lib/modules
ports:
- $SERVERPORT:$SERVERPORT/udp
- 127.0.0.1:3000:3000
- 127.0.0.1:5050:5000
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv4.ip_forward=1
restart: unless-stopped
grafana:
image: grafana/grafana:8.3.3
container_name: grafana
volumes:
- grafana_data:/var/lib/grafana
- ./grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards
- ./grafana/provisioning/datasources:/etc/grafana/provisioning/datasources
environment:
- GF_SECURITY_ADMIN_USER=$ADMIN
- GF_SECURITY_ADMIN_PASSWORD=$PASSWORD
- GF_USERS_ALLOW_SIGN_UP=false
restart: unless-stopped
labels:
org.label-schema.group: "monitoring"
network_mode: "service:wireguard"
depends_on:
- wireguard
dynaconf:
build: ./dynaconf
restart: unless-stopped
volumes:
- database:/src/database
network_mode: "service:wireguard"
volumes:
database:
grafana_data:
+30
View File
@@ -0,0 +1,30 @@
version: '3.1'
services:
xdai:
image: nethermind/nethermind:1.12.7
expose:
- "8545"
- "40444"
ports:
- "40444:40444"
- "40444:40444/udp"
volumes:
- xdai:/nethermind_db/xdai
- ./xdai/xdai.cfg:/xdai.cfg
- ./xdai/xdai.json:/xdai.json
networks:
- chains
command: "--config /xdai.cfg"
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.xdai-stripprefix.stripprefix.prefixes=/xdai"
- "traefik.http.services.xdai.loadbalancer.server.port=8545"
- "traefik.http.routers.xdai.entrypoints=websecure"
- "traefik.http.routers.xdai.tls.certresolver=myresolver"
- "traefik.http.routers.xdai.rule=Host(`$DOMAIN`) && PathPrefix(`/xdai`)"
- "traefik.http.routers.xdai.middlewares=xdai-stripprefix, ipwhitelist"
volumes:
xdai:
+61
View File
@@ -0,0 +1,61 @@
{
"Init": {
"WebSocketsEnabled": false,
"StoreReceipts": true,
"IsMining": false,
"ChainSpecPath": "/xdai.json",
"GenesisHash": "0x4f1dd23188aab3a76b463e4af801b52b1248ef073c648cbdc4c9333d3da79756",
"BaseDbPath": "/nethermind_db/xdai",
"LogFileName": "xdai.logs.txt",
"MemoryHint": 768000000
},
"Network": {
"DiscoveryPort": 40444,
"P2PPort": 40444
},
"TxPool": {
"Size": 2048
},
"JsonRpc": {
"Enabled": true,
"Timeout": 20000,
"Host": "0.0.0.0",
"Port": 8545,
"WebSocketsPort": 8546
},
"Db": {
"CacheIndexAndFilterBlocks": false
},
"Sync": {
"FastSync": true,
"PivotNumber": 18110000,
"PivotHash": "0xb06aa318f3968e3ec3ee9a5d67562bc6a470cacb76497d433f31da65f6abdf80",
"PivotTotalDifficulty": "6162513664938195573321714140589322309123831870",
"FastBlocks": true,
"UseGethLimitsInFastBlocks": false,
"FastSyncCatchUpHeightDelta": 10000000000
},
"EthStats": {
"Enabled": false,
"Server": "ws://localhost:3000/api",
"Name": "Nethermind xDai",
"Secret": "secret",
"Contact": "hello@nethermind.io"
},
"Metrics": {
"NodeName": "xDai",
"Enabled": false,
"PushGatewayUrl": "http://localhost:9091/metrics",
"IntervalSeconds": 5
},
"Aura": {
"ForceSealing": true
},
"Bloom": {
"IndexLevelBucketSizes": [
16,
16,
16
]
}
}
+282
View File
@@ -0,0 +1,282 @@
{
"name": "DaiChain",
"engine": {
"authorityRound": {
"params": {
"stepDuration": 5,
"blockReward": "0x0",
"maximumUncleCountTransition": 0,
"maximumUncleCount": 0,
"validators": {
"multi": {
"0": {
"list": [
"0xcace5b3c29211740e595850e80478416ee77ca21"
]
},
"1300": {
"safeContract": "0x22e1229a2c5b95a60983b5577f745a603284f535"
},
"9186425": {
"contract": "0xB87BE9f7196F2AE084Ca1DE6af5264292976e013"
}
}
},
"blockRewardContractAddress": "0x867305d19606aadba405ce534e303d0e225f9556",
"blockRewardContractTransition": 1310,
"blockRewardContractTransitions": {
"9186425": "0x481c034c6d9441db23Ea48De68BCAe812C5d39bA"
},
"randomnessContractAddress": {
"9186425": "0x5870b0527DeDB1cFBD9534343Feda1a41Ce47766"
},
"posdaoTransition": 9186425
}
}
},
"params": {
"gasLimitBoundDivisor": "0x400",
"maximumExtraDataSize": "0x20",
"minGasLimit": "0x1388",
"networkID": "100",
"eip140Transition": "0x0",
"eip211Transition": "0x0",
"eip214Transition": "0x0",
"eip658Transition": "0x0",
"eip145Transition": 1604400,
"eip1014Transition": 1604400,
"eip1052Transition": 1604400,
"eip1283Transition": 1604400,
"eip1283DisableTransition": 2508800,
"eip152Transition": 7298030,
"eip1108Transition": 7298030,
"eip1283ReenableTransition": 7298030,
"eip1344Transition": 7298030,
"eip1706Transition": 7298030,
"eip1884Transition": 7298030,
"eip2028Transition": 7298030,
"eip2565Transition": 16101500,
"eip2929Transition": 16101500,
"eip2930Transition": 16101500,
"eip3198Transition": 19040000,
"eip3529Transition": 19040000,
"eip3541Transition": 19040000,
"eip1559Transition": 19040000,
"eip1559BaseFeeMaxChangeDenominator": "0x8",
"eip1559ElasticityMultiplier": "0x2",
"eip1559BaseFeeInitialValue": "0x3b9aca00",
"eip1559FeeCollector": "0x6BBe78ee9e474842Dbd4AB4987b3CeFE88426A92",
"eip1559FeeCollectorTransition": 19040000,
"registrar": "0x6B53721D4f2Fb9514B85f5C49b197D857e36Cf03",
"transactionPermissionContract": "0x7Dd7032AA75A37ea0b150f57F899119C7379A78b",
"transactionPermissionContractTransition": 9186425
},
"genesis": {
"seal": {
"authorityRound": {
"step": "0x0",
"signature": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
}
},
"difficulty": "0x20000",
"gasLimit": "0x989680"
},
"nodes": [
"enode://a20c13b1712d32028a277958346a5c29350e8a3e32d40de43a62cb35baa99f96f274960591e46be5a643be7ee77a15d6a4963170460156a77abcf500f0ba0ff0@104.237.150.151:30303",
"enode://f372b16932a4ee5b6be947556bcca1cf57e498267dd78a7a643a87514a0a5ef4f112cb6934aab5775d3e8940ba535e8f53dfa704e162a72970de61e6ef9fd9aa@45.79.158.26:30303",
"enode://fe9720c93e6335b8cacffa10df594c8c166208fa4be8dcb9275788e54111ae88899022fa9c358f2d0029ee57c2223a7fbc97eb06b294422d35ef796a49d87bff@94.237.98.201:30303",
"enode://6d12181aa8527251dd8f9d37a2ff7eadb46f2a90c69f2282352ac7889b105d6b5787a532facee656b29599ee1ee51eb5b1eb01d2a17190e32a6cbe6dfc996828@45.79.158.8:30303",
"enode://389a625160876776946bfea5a6ce4f4c761bd2062cf8e45e510da77595399ee50a802060868d9bf4580431fc2248cadc9ce61826b3513e090bd1cdd4ce11a9d8@161.97.172.191:30303",
"enode://d086bfbe0d15e841e403695c151920459261dd5d5f259858b32727e2bc64d92f48bdad3cc0120703dbb0e2abd2f51c0459cff517bfa16e683ca27018d82a6dcf@66.175.215.67:30303",
"enode://540a0bc258ba93e6fafc238f49eca0a2032b5d40b79c077dc9b9a304fd636af4167b638eb0f80aa455f5da1cf49b76c881f651ed301a1e28d6855a8a3fbe21a0@167.71.174.1:30303",
"enode://1ceea9d3fb22247edf85102f1e78cd31c2f330ace6ac2789c82766a232d56d7c3c1b2aeb504f2f761de754da22e7dfc5bdde3b00b8b98d1d003f6dd81612f8b3@66.175.211.178:30303",
"enode://4175e9ffd9ac9819c9c596a60b7748cc1c1846cf7e8db47ee97f8aa57e42e8cb3dad4201726498d34af94505b2c1429f9d3a508594c521080e8cd1a3fa24a3d5@37.120.245.155:30303",
"enode://b5eba653df9c583238ea238ca7cadf5d2746f1b4da81a8cfb2c1b600f62fe37df000fa5b5292059f74faa6bbf5af01b3b81f99284a1fbd5c0971d74db7dc4a34@66.175.213.149:30303",
"enode://2a8b64e96da7e67e525f04a157a0016b886dfb2d02553501abd0326b7b061aace7e92ad87c1225dc7d261b05e7886391552c812b386451597bff4b040eb43bec@173.212.236.163:30303",
"enode://5f187ae73b07db889c91e8955619b1e6b799696a4b7aab306f7c500a2ec4c7f66dfbea8ac28bde65100653a2fe84b96f2079aed2d61871e06b5a1e32c0f021af@45.79.150.105:30303",
"enode://22e442bf7b7fa9bb5960344ef5aa907b920a931bce83e14620b0378318b7eb73753f7245f0a8252590a71ad9568bcfbb9e5f03bd88ab3feb9c1096227bb8704a@168.119.136.44:30303",
"enode://ef98bc3c9195b9f27312ac646edb6d0096b04c983f93864c30b8f2b20c699ec974a7066cfae090832679e497d23655e0e315a2c96da4a27d75cc4693e6335bba@192.155.90.129:30303",
"enode://de1ab49beedda656976a8fcb01f91ebdb474178fd46e5ce87cf22f0eb90bc3a6721d619ec90c4a6453770a2c24a4bdbc4ef8b8111ffd49f491eb84016a3842d6@54.217.41.94:30303",
"enode://ba04a77c7c8ac0fdd325de91536c33bce3b71095de563aafc72e6ac4111ebf093570c7bdba48b06cc83b0af5596f72fc32563547160e067fcb45a1786b8f7150@45.56.105.53:30303",
"enode://56510b2d296000427e56eb0016d8454998c16347ec2c4ffed84cb82a996707de40ca2b9ea13c8796b4230b4c19ce46f844720ded93135d710b7bbc7352a061d3@50.35.89.213:30304",
"enode://a68b3f3f58ea56dcc70450d371bf0b83363d74cbfdb5f982be00536ae3168aa679c7e7e93bd9ffe34b59527173d73e0ebed0a105c095af2ee16bd1cc66103c80@69.164.215.62:30303",
"enode://e8c7a0db430429bb374c981438c0dbd95e565088a483388aa46d8377a3bd62f02cd83d7e2c7e5fc77606141bfef29d23d4285a7c1d9b7e743cf3029314506df7@80.240.16.221:30303",
"enode://80c8f6f27f80ba91830002a8ca64771f6baf440fd134e88fbecae3a67c8bc58722d624cecbd6439e1a2d28fbd0297d489fdaa40b10c2f3e07fee1913d52b3e30@45.79.185.92:30303",
"enode://da2449aaba873c40c6daf764de55f4b9eae24c4738daec893ef95b6ada96463c6b9624f8e376e1073d21dd820c5bb361e14575121b09bbd7735b6b556ee1b768@67.205.176.117:30303",
"enode://481e43a8e30cdfecfe3159dde960d9e65347c3e8c64dcedea87922df875e4d47a813f53c012920b6754e43cde47302cdfb120fd409b6aa2b47c48e391494c7f5@173.255.233.100:30303",
"enode://90b0a0e74a9a1ad258531b4ceec25587d8b52ff2cfb36206a34bf6ba1a8d21b2abd20da13260102508a2ac67afbeb2d2ab7a5e9d6bea3bce845cd81e655585cc@45.77.110.159:30303",
"enode://6012c883efeee664847a48784459980176a22f31bc98c2aae30011ad7ef0b44011364a0a9ae5eb056db1f052cf3556757bd97485677bbaf1781b131e43204971@69.164.222.63:30303",
"enode://5bc43a57273eb4012b59ce268f986cbeeb5f0f878aa25e3d2d71d9b7ff64029a9dd25a84303f80820a78d83ff3a2c570988d0fc68a17d355a98c20c0784aa14d@8.9.5.108:30303",
"enode://89e046a4f10c64265941789b2e3be900adf5132ced13756aeea126cf59b516445ed8053b600aa764860f1aad552f4f4f3b4250c59b3b8a84ead3d3527c005606@172.104.24.215:30303",
"enode://ab7f6c633ba2dc54795dfd2c739ba7d964f499541c0b8d8ba9d275bd3df1b789470a21a921a469fa515a3dfccc96a434a3fd016a169d88d0043fc6744f34288e@67.205.180.17:30303",
"enode://6674773f7aac78d5527fa90c847dcbca198de4081306406a8fec5c15f7a2e141362344041291dd10d0aafa7706a3d8f21a08b6f6834a5b1aab9cccd8ca35ccee@143.110.226.15:30303",
"enode://0caa2d84aef00d0bc5de6cf9db3e736da245d882ec8f91e201b3e1635960e62cbb2f8bfc57e679ff3e1d53da2773e31df624a56b2f457ecb51d09fdf9970c86b@167.99.4.175:30303",
"enode://7aa4c137b1ec078f2df3c17552e23c7213662819132821ed3aaa42f0212cb889dbb21211f9c5912c68fce577ab7fc99b0a47c0cb469ec0ad29c0acd9ce297659@45.33.84.107:30303",
"enode://e026b1a68e8a19106d14effc0df66050c494e10a6b8a4e9f6fd196d95306d7062d129a8c9510ffdbeaf3fe0154b884c116a0e77aec876c368e507de3420fba05@149.28.32.225:30303",
"enode://0a978bd436b850f61e31778fbbeb3e0182f91bb98a30c073674c741c182611e71842333c098d3db5108f06cd589c3a8341172e34be0421fa66d82f0dd83d8ae1@51.81.244.170:30303",
"enode://75f05df1e5a3094ed2c9df36f122b95852206c52288f777982503946d5b273c7ffd8bb06ad60a0df7a31510906d4090c7bd5fd9bcb04a5b4ac1825a2b7212f32@45.63.18.245:30303"
],
"accounts": {
"0x0000000000000000000000000000000000000005": {
"builtin": {
"name": "modexp",
"pricing": {
"0": {
"price": {
"modexp": {
"divisor": 20
}
}
}
}
}
},
"0x0000000000000000000000000000000000000006": {
"builtin": {
"name": "alt_bn128_add",
"pricing": {
"0": {
"price": {
"alt_bn128_const_operations": {
"price": 500
}
}
},
"7298030": {
"info": "Istanbul HF",
"price": {
"alt_bn128_const_operations": {
"price": 150
}
}
}
}
}
},
"0x0000000000000000000000000000000000000007": {
"builtin": {
"name": "alt_bn128_mul",
"pricing": {
"0": {
"price": {
"alt_bn128_const_operations": {
"price": 40000
}
}
},
"7298030": {
"info": "Istanbul HF",
"price": {
"alt_bn128_const_operations": {
"price": 6000
}
}
}
}
}
},
"0x0000000000000000000000000000000000000008": {
"builtin": {
"name": "alt_bn128_pairing",
"pricing": {
"0": {
"price": {
"alt_bn128_pairing": {
"base": 100000,
"pair": 80000
}
}
},
"7298030": {
"info": "Istanbul HF",
"price": {
"alt_bn128_pairing": {
"base": 45000,
"pair": 34000
}
}
}
}
}
},
"0x0000000000000000000000000000000000000009": {
"builtin": {
"name": "blake2_f",
"pricing": {
"7298030": {
"info": "Istanbul HF",
"price": {
"blake2_f": {
"gas_per_round": 1
}
}
}
}
}
},
"0x0000000000000000000000000000000000000001": {
"balance": "1",
"builtin": {
"name": "ecrecover",
"pricing": {
"0": {
"price": {
"linear": {
"base": 3000,
"word": 0
}
}
}
}
}
},
"0x0000000000000000000000000000000000000002": {
"balance": "1",
"builtin": {
"name": "sha256",
"pricing": {
"0": {
"price": {
"linear": {
"base": 60,
"word": 12
}
}
}
}
}
},
"0x0000000000000000000000000000000000000003": {
"balance": "1",
"builtin": {
"name": "ripemd160",
"pricing": {
"0": {
"price": {
"linear": {
"base": 600,
"word": 120
}
}
}
}
}
},
"0x0000000000000000000000000000000000000004": {
"balance": "1",
"builtin": {
"name": "identity",
"pricing": {
"0": {
"price": {
"linear": {
"base": 15,
"word": 3
}
}
}
}
}
}
}
}