├── .gitignore ├── config ├── api-config │ ├── generate-api-key.py │ ├── testnet-config-onetoone.json │ ├── mainnet-config-onetoone.json │ ├── testnet-config-onetomany.json │ └── mainnet-config-onetomany.json └── node-assets │ ├── control.template │ └── init.sh ├── bootstrap.sh ├── .env ├── docker-compose.yml └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | docker-compose.aux.yml 2 | build/Dockerfile.metrics 3 | build/*-local 4 | local-build 5 | db 6 | logs -------------------------------------------------------------------------------- /config/api-config/generate-api-key.py: -------------------------------------------------------------------------------- 1 | import codecs; 2 | f=open('/liteserver/liteserver.pub', "rb+") 3 | pub=f.read()[4:] 4 | print(str(codecs.encode(pub,"base64")).replace("\n","")[2:46]) -------------------------------------------------------------------------------- /config/node-assets/control.template: -------------------------------------------------------------------------------- 1 | "control" : [ 2 | { "id" : SERVER-ID, 3 | "port" : CONSOLE-PORT, 4 | "allowed" : [ 5 | { "id" : CLIENT-ID, 6 | "permissions" : 15 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | build_all () { 5 | docker compose build 6 | } 7 | 8 | add_node_assets () { 9 | mkdir -p $NODE_STATE_VOLUME 10 | cp -a config/node-assets/. $NODE_STATE_VOLUME 11 | } 12 | 13 | deploy_node () { 14 | docker compose up -d ton-node 15 | sleep 5 16 | } 17 | 18 | set_http_api_key () { 19 | NODE_API_KEY=$(docker run --rm -v $API_CONF_VOLUME:/conf -v $NODE_STATE_VOLUME:/liteserver ton-api -c "python /conf/generate-api-key.py") 20 | sed -i "s~NODEAPIKEY~$NODE_API_KEY~g" ${API_CONF_VOLUME}/${API_NETWORK}-config-${API_MODE}.json 21 | } 22 | 23 | deploy_api () { 24 | docker compose up -d ton-api 25 | } 26 | 27 | export TON_NODE_IP=$(curl -s https://ipinfo.io/ip) 28 | source .env 29 | build_all 30 | add_node_assets 31 | deploy_node 32 | set_http_api_key 33 | deploy_api -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | # NODE PART 2 | 3 | NODE_VERSION=2024.06 4 | NODE_CONF_VOLUME=${PWD}/config/node-config 5 | NODE_LOG_VOLUME=${PWD}/logs 6 | NODE_STATE_VOLUME=${PWD}/db 7 | 8 | NODE_CONFIG_URL=https://raw.githubusercontent.com/ton-blockchain/ton-blockchain.github.io/main/testnet-global.config.json # Testnet config 9 | NODE_PUBLIC_IP=${TON_NODE_IP} 10 | NODE_LITESERVER=true 11 | NODE_LITESERVER_PORT=43679 12 | NODE_CONSOLE_PORT=43678 13 | 14 | # API PART 15 | 16 | API_VERSION=2.0.31 17 | API_NETWORK=testnet 18 | API_MODE=onetoone 19 | API_CONF_VOLUME=${PWD}/config/api-config 20 | 21 | API_CACHE_ENABLED=0 22 | API_LOGS_JSONIFY=0 23 | API_LOGS_LEVEL=ERROR 24 | API_TONLIB_LITESERVER_CONFIG=/conf/${API_NETWORK}-config-${API_MODE}.json 25 | API_TONLIB_PARALLEL_REQUESTS_PER_LITESERVER=50 26 | API_TONLIB_REQUEST_TIMEOUT=10000 27 | API_GET_METHODS_ENABLED=1 28 | API_JSON_RPC_ENABLED=1 29 | API_ROOT_PATH="/" 30 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.7' 2 | 3 | services: 4 | ton-node: 5 | build: 6 | context: build 7 | dockerfile: Dockerfile.node 8 | args: 9 | VER: ${NODE_VERSION} 10 | image: ton-node:${NODE_VERSION} 11 | restart: always 12 | ports: 13 | - ${NODE_CONSOLE_PORT}:${NODE_CONSOLE_PORT} 14 | - ${NODE_CONSOLE_PORT}:${NODE_CONSOLE_PORT}/udp 15 | - ${NODE_LITESERVER_PORT}:${NODE_LITESERVER_PORT} 16 | - ${NODE_LITESERVER_PORT}:${NODE_LITESERVER_PORT}/udp 17 | volumes: 18 | - ${NODE_STATE_VOLUME}:/var/ton-work/db 19 | - ${NODE_LOG_VOLUME}:/var/ton-work/log 20 | environment: 21 | GCONFURL: ${NODE_CONFIG_URL} 22 | PUBLIC_IP: ${NODE_PUBLIC_IP} 23 | LITESERVER: ${NODE_LITESERVER} 24 | LITE_PORT: ${NODE_LITESERVER_PORT} 25 | CONSOLE_PORT: ${NODE_CONSOLE_PORT} 26 | networks: 27 | ton-network: 28 | ipv4_address: 172.18.0.2 29 | 30 | ton-api: 31 | build: 32 | context: build 33 | dockerfile: Dockerfile.api 34 | args: 35 | VER: ${API_VERSION} 36 | image: ton-api 37 | restart: always 38 | ports: 39 | - 8081:8081 40 | volumes: 41 | - ${API_CONF_VOLUME}:/conf 42 | environment: 43 | TON_API_CACHE_ENABLED: ${API_CACHE_ENABLED} 44 | TON_API_LOGS_JSONIFY: ${API_LOGS_JSONIFY} 45 | TON_API_LOGS_LEVEL: ${API_LOGS_LEVEL} 46 | TON_API_TONLIB_LITESERVER_CONFIG: ${API_TONLIB_LITESERVER_CONFIG} 47 | TON_API_TONLIB_PARALLEL_REQUESTS_PER_LITESERVER: ${API_TONLIB_PARALLEL_REQUESTS_PER_LITESERVER} 48 | TON_API_TONLIB_REQUEST_TIMEOUT: ${API_TONLIB_REQUEST_TIMEOUT} 49 | TON_API_GET_METHODS_ENABLED: ${API_GET_METHODS_ENABLED} 50 | TON_API_JSON_RPC_ENABLED: ${API_JSON_RPC_ENABLED} 51 | TON_API_ROOT_PATH: ${API_ROOT_PATH} 52 | command: -c "gunicorn -k uvicorn.workers.UvicornWorker -w 1 --bind 0.0.0.0:8081 pyTON.main:app" 53 | networks: 54 | ton-network: 55 | ipv4_address: 172.18.0.3 56 | 57 | networks: 58 | ton-network: 59 | driver: bridge 60 | ipam: 61 | config: 62 | - subnet: 172.18.0.0/24 -------------------------------------------------------------------------------- /config/node-assets/init.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Handling for the initial node setup 4 | 5 | # Download the global config 6 | if [ -f "./ton-global.config" ]; then 7 | echo -e "\e[1;33m[=]\e[0m Found existing global config, skipping" 8 | else 9 | echo -e "\e[1;32m[+]\e[0m Downloading provided global config." 10 | wget -q $GCONFURL -O /var/ton-work/db/ton-global.config 11 | fi 12 | 13 | # Init local config with IP:PORT 14 | if [ -f "./config.json" ]; then 15 | echo -e "\e[1;33m[=]\e[0m Found existing local config, skipping" 16 | else 17 | echo -e "\e[1;32m[+]\e[0m Using provided IP: $PUBLIC_IP:$CONSOLE_PORT" 18 | /usr/bin/ton/validator-engine/validator-engine -C /var/ton-work/db/ton-global.config --db /var/ton-work/db --ip "$PUBLIC_IP:$CONSOLE_PORT" 19 | fi 20 | 21 | # Generating server certificate 22 | if [ -f "./server" ]; then 23 | echo -e "\e[1;33m[=]\e[0m Found existing server certificate, skipping" 24 | else 25 | echo -e "\e[1;32m[+]\e[0m Generating and installing server certificate for remote control" 26 | read -r SERVER_ID1 SERVER_ID2 <<< $(/usr/bin/ton/utils/generate-random-id -m keys -n server) 27 | echo "Server IDs: $SERVER_ID1 $SERVER_ID2" 28 | cp server /var/ton-work/db/keyring/$SERVER_ID1 29 | fi 30 | 31 | # Generating client certificate 32 | if [ -f "./client" ]; then 33 | echo -e "\e[1;33m[=]\e[0m Found existing client certificate, skipping" 34 | else 35 | read -r CLIENT_ID1 CLIENT_ID2 <<< $(/usr/bin/ton/utils/generate-random-id -m keys -n client) 36 | echo -e "\e[1;32m[+]\e[0m Generated client private certificate $CLIENT_ID1 $CLIENT_ID2" 37 | echo -e "\e[1;32m[+]\e[0m Generated client public certificate" 38 | # Adding client permissions 39 | sed -e "s/CONSOLE-PORT/\"$(printf "%q" $CONSOLE_PORT)\"/g" -e "s~SERVER-ID~\"$(printf "%q" $SERVER_ID2)\"~g" -e "s~CLIENT-ID~\"$(printf "%q" $CLIENT_ID2)\"~g" /var/ton-work/db/control.template > /var/ton-work/db/control.new 40 | sed -e "s~\"control\"\ \:\ \[~$(printf "%q" $(cat control.new))~g" /var/ton-work/db/config.json > /var/ton-work/db/config.json.new 41 | mv /var/ton-work/db/config.json.new /var/ton-work/db/config.json 42 | fi 43 | 44 | # Liteserver 45 | if [ -z "$LITESERVER" ]; then 46 | echo -e "\e[1;33m[=]\e[0m Liteserver disabled" 47 | else 48 | if [ -f "./liteserver" ]; then 49 | echo -e "\e[1;33m[=]\e[0m Found existing liteserver certificate, skipping" 50 | else 51 | echo -e "\e[1;32m[+]\e[0m Generating and installing liteserver certificate for remote control" 52 | read -r LITESERVER_ID1 LITESERVER_ID2 <<< $(/usr/bin/ton/utils/generate-random-id -m keys -n liteserver) 53 | echo "Liteserver IDs: $LITESERVER_ID1 $LITESERVER_ID2" 54 | cp liteserver /var/ton-work/db/keyring/$LITESERVER_ID1 55 | if [ -z "$LITE_PORT" ]; then 56 | LITE_PORT="43679" 57 | fi 58 | LITESERVERS=$(printf "%q" "\"liteservers\":[{\"id\":\"$LITESERVER_ID2\",\"port\":\"$LITE_PORT\"}") 59 | sed -e "s~\"liteservers\"\ \:\ \[~$LITESERVERS~g" config.json > config.json.liteservers 60 | mv config.json.liteservers config.json 61 | fi 62 | fi 63 | 64 | echo -e "\e[1;32m[+]\e[0m Running validator-engine" 65 | 66 | exec /usr/bin/ton/validator-engine/validator-engine -c /var/ton-work/db/config.json -C /var/ton-work/db/ton-global.config --db /var/ton-work/db -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # The Open Network: Full node and Toncenter API, dockerised 2 | 3 | This repository contains TON full node and Toncenter API builds unified into one Compose definition - to run as a service on any host machine. 4 | 5 | This setup can be deployed on your host without any external dependencies: just clone this repo and run `bootstrap.sh`. Then wait for your full node to sync with the chain. 6 | 7 | ## Credentials 8 | 9 | Many thanks to **EmelyanenkoK** and **neodiX42** for the [TON node build](https://github.com/ton-blockchain/ton/blob/master/docker/Dockerfile) which is used here without major changes, as well as **dungeon-master-666** for [TON HTTP API](https://github.com/toncenter/ton-http-api). 10 | 11 | This setup has been created with the use of these sources. 12 | 13 | ## Functionality 14 | 15 | TON node works in the full mode by default. 16 | 17 | The API service can be configured to work in two modes: 18 | 19 | - one-to-one (`onetoone`) - interacting with your node only; 20 | - one-to-many (`onetomany`) - interacting with a set of nodes including your node. 21 | 22 | ## Prerequisites 23 | 24 | To bootstrap and run the node, you have to install **Docker and Docker Compose** on your host. 25 | 26 | For node system requirements, refer to the [official requirements](https://docs.ton.org/participate/run-nodes/full-node#:~:text=Hardware%20requirements%E2%80%8B&text=You%20need%20a%20machine%20with,a%20TON%20Blockchain%20Full%20Node.). 27 | 28 | For MacOS, install `gnu-sed` to run the bootstrap script adequately: 29 | 30 | ``` 31 | brew install gnu-sed 32 | ``` 33 | 34 | Then, use `gsed` instead of `sed` in `bootstrap.sh`. 35 | 36 | ## Configuration 37 | 38 | > **NB**: The `TON_NODE_IP` environment variable is fetched via an external resource. In case you need anything different, just remove the `export TON_NODE_IP` definition from `bootstrap.sh` and set `TON_NODE_IP` manually instead. 39 | 40 | Both node and API are configured via the `.env` file. 41 | 42 | In the **node part** of the file, you will find following parameters: 43 | 44 | | Variable | Description | Default value | 45 | | -------- | ----------- | ------------- | 46 | | `NODE_VERSION` | Release version of the TON node - consider specifying the latest version | `2023.12` | 47 | | `NODE_CONF_VOLUME` | External volume to store node configuration files | `${PWD}/config/node-config` | 48 | | `NODE_LOG_VOLUME` | External volume to store node logs | `${PWD}/logs` | 49 | | `NODE_STATE_VOLUME` | External volume to store the node DB | `${PWD}/db` | 50 | | `NODE_CONFIG_URL` | Node config URL to download (find current config versions for Testnet and Mainnet below) | Testnet config | 51 | | `NODE_PUBLIC_IP` | External public IP of your host to advertise the node on. This IP can be fetched automatically by `bootstrap.sh` | `TON_NODE_IP` environment variable | 52 | | `NODE_LITESERVER` | Enable liteserver mode | `true` | 53 | | `NODE_LITESERVER_PORT` | Node liteserver port | `43679` | 54 | | `NODE_CONSOLE_PORT` | Node control plane port | `43678` | 55 | 56 | In the **API part** of the file, you can set following HTTP API parameters: 57 | 58 | | Variable | Description | Default value | 59 | | -------- | ----------- | ------------- | 60 | | `API_VERSION` | Release version of TON HTTP API | `2.0.31` | 61 | | `API_NETWORK` | API network corresponding with your node | `testnet` | 62 | | `API_MODE` | API interaction mode as above: `onetoone` or `onetomany` | `onetoone` | 63 | | `API_CONF_VOLUME` | External volume to store API configs | `${PWD}/config/api-config` | 64 | | `API_CACHE_ENABLED` | Set `1` to enable API cache | `0` | 65 | | `API_LOGS_JSONIFY` | Set `1` to get logs in the JSON format | `0` | 66 | | `API_LOGS_LEVEL` | API log level | `ERROR` | 67 | | `API_TONLIB_LITESERVER_CONFIG` | Internal config path, fetched automatically from `API_NETWORK` and `API_MODE` variables | `/conf/${API_NETWORK}-config-${API_MODE}.json` | 68 | | `API_TONLIB_PARALLEL_REQUESTS_PER_LITESERVER` | Maximal number of parallel request per liteserver | `50` | 69 | | `API_TONLIB_REQUEST_TIMEOUT` | Timeout time of a request in milliseconds | `10000` | 70 | | `API_GET_METHODS_ENABLED` | Set `1` to enable `GET` API methods | `1` | 71 | | `API_JSON_RPC_ENABLED` | Set `1` to enable JSON RPC | `1` | 72 | | `API_ROOT_PATH` | API root path after your hostname or IP | `"/"` | 73 | 74 | ## Running the node 75 | 76 | To run the full node and API, change environment variables needed in the `.env` configuration and run the `bootstrap.sh` script. 77 | 78 | This script will perform following operations: 79 | 80 | 1. Set your static IP as the `TON_NODE_IP` environment variable - to be used in the `.env` file further. 81 | 2. Apply `.env` variables to your shell environment. 82 | 3. Build local node and API images. 83 | 4. Run the node container. The node will bootstrap additionally with the use of the `./config/node-config/init.sh` script. 84 | 5. Run the standard `python` Docker image to set the `NODE_API_KEY` variable containing the generated HTTP API key of the node. 85 | 6. Add the obtained node API key to the desired API config. 86 | 7. Run the HTTP API container. 87 | 88 | Then, just wait until your node is synchronised with the chain. 89 | 90 | To interact with the API, refer to the [Toncenter API reference](https://toncenter.com/api/v2/). 91 | 92 | ## Updating the node 93 | 94 | Just lift the release version in the `NODE_VERSION` variable of the `.env` file. 95 | 96 | ## Troubleshooting 97 | 98 | 1. Failed to parse config 99 | 100 | `ton-node` logs: 101 | 102 | ``` 103 | [ 1][t 1][2023-12-24 23:20:03.489683013][validator-engine.cpp:3517][!validator-engine] failed to parse config: [Error : 0 : failed to parse json: Unexpected symbol while parsing JSON Object] 104 | ``` 105 | 106 | If you see this error, check the downloaded and initialised `config.json` for syntax glitches. Change the file itself or the `init.sh` script accordingly. After this, you can either restart the node via Compose or bootstrap it again: in case you changed `init.sh`, remove the existing config and allow to reinitialise it via the script. 107 | 108 | 2. No nodes in the network 109 | 110 | `ton-node` logs: 111 | 112 | ``` 113 | [ 2][t 6][2023-12-24 23:56:21.137193799][manager-init.cpp:86][!downloadproofreq] failed to download proof link: [Error : 651 : no nodes] 114 | ``` 115 | 116 | This warning always appears during initial node start. Just wait until the node starts to sync. 117 | 118 | 3. Dead workers in `onetomany` mode 119 | 120 | `ton-api` logs: 121 | 122 | ``` 123 | 2023-12-25 10:49:47.910 | ERROR | pyTON.manager:check_children_alive:232 - TonlibWorker #XXX is dead!!! Exit code: 12 124 | 2023-12-25 10:49:57.968 | ERROR | pyTON.worker:report_last_block:118 - TonlibWorker #000 report_last_block exception of type LiteServerTimeout: LITE_SERVER_NETWORKadnl query timeout 125 | ``` 126 | 127 | If you see that some of workers other than `000` (your node) are dead - this means, these nodes are not accessible. This situation is not critical, so far there are accessible workers in the list including your node. Still, consider updating API configs from time to time. 128 | 129 | ## Checked on... 130 | 131 | This setup works correctly with following software: 132 | 133 | - Docker Compose v2.15.1 134 | - Docker v20.10.23, build 7155243 135 | - MacOS Sonoma 14.0 (Apple M1) 136 | -------------------------------------------------------------------------------- /config/api-config/testnet-config-onetoone.json: -------------------------------------------------------------------------------- 1 | { 2 | "liteservers": [ 3 | { 4 | "ip": 2886860802, 5 | "port": 43679, 6 | "id": { 7 | "@type": "pub.ed25519", 8 | "key": "NODEAPIKEY" 9 | } 10 | } 11 | ], 12 | "dht": { 13 | "a": 3, 14 | "k": 3, 15 | "static_nodes": { 16 | "nodes": [ 17 | { 18 | "@type": "dht.node", 19 | "id": { 20 | "@type": "pub.ed25519", 21 | "key": "K2AWu8leN2RjYmhMpYAaGX/F6nGVk9oZw9c09RX3yyc=" 22 | }, 23 | "addr_list": { 24 | "@type": "adnl.addressList", 25 | "addrs": [ 26 | { 27 | "@type": "adnl.address.udp", 28 | "ip": 1592601963, 29 | "port": 38723 30 | } 31 | ], 32 | "version": 0, 33 | "reinit_date": 0, 34 | "priority": 0, 35 | "expire_at": 0 36 | }, 37 | "version": -1, 38 | "signature": "21g16jxnqbb2ENAijrZFccHqLQcmmpkAI1HA46DaPvnVYvMkATFNEyHTy2R1T1jgU5M7CCLGJN+MxhwZfl/ZDA==" 39 | }, 40 | { 41 | "@type": "dht.node", 42 | "id": { 43 | "@type": "pub.ed25519", 44 | "key": "fVIJzD9ATMilaPd847eFs6PtGSB67C+D9b4R+nf1+/s=" 45 | }, 46 | "addr_list": { 47 | "@type": "adnl.addressList", 48 | "addrs": [ 49 | { 50 | "@type": "adnl.address.udp", 51 | "ip": 1097649206, 52 | "port": 29081 53 | } 54 | ], 55 | "version": 0, 56 | "reinit_date": 0, 57 | "priority": 0, 58 | "expire_at": 0 59 | }, 60 | "version": -1, 61 | "signature": "wH0HEVT6yAfZZAoD5bF6J3EZWdSFwBGl1ZpOfhxZ0Bp2u52tv8OzjeH8tlZ+geMLTG50Csn5nxSKP1tswTWwBg==" 62 | }, 63 | { 64 | "@type": "dht.node", 65 | "id": { 66 | "@type": "pub.ed25519", 67 | "key": "gu+woR+x7PoRmaMqAP7oeOjK2V4U0NU8ofdacWZ34aY=" 68 | }, 69 | "addr_list": { 70 | "@type": "adnl.addressList", 71 | "addrs": [ 72 | { 73 | "@type": "adnl.address.udp", 74 | "ip": 1162057690, 75 | "port": 41578 76 | } 77 | ], 78 | "version": 0, 79 | "reinit_date": 0, 80 | "priority": 0, 81 | "expire_at": 0 82 | }, 83 | "version": -1, 84 | "signature": "0PwDLXpN3IbRQuOTLkZBjkbT6+IkeUcvlhWrUY9us3IfSehmCfQjScR9mkVYsQ6cQHF+JeaFmqzV4GAiUcgjAg==" 85 | }, 86 | { 87 | "@type": "dht.node", 88 | "id": { 89 | "@type": "pub.ed25519", 90 | "key": "WC4BO1eZ916FnLBSKmt07Pn5NP4D3/1wary1VjaCLaY=" 91 | }, 92 | "addr_list": { 93 | "@type": "adnl.addressList", 94 | "addrs": [ 95 | { 96 | "@type": "adnl.address.udp", 97 | "ip": -1304477830, 98 | "port": 9670 99 | } 100 | ], 101 | "version": 0, 102 | "reinit_date": 0, 103 | "priority": 0, 104 | "expire_at": 0 105 | }, 106 | "version": -1, 107 | "signature": "cvpzkGeuEuKV+d92qIVkln9ngm8qeDnmYtK5rq8uSet0392hAZcIv2IniDzTw0rN42NaOHL9A4KEelwKu1N2Ag==" 108 | }, 109 | { 110 | "@type": "dht.node", 111 | "id": { 112 | "@type": "pub.ed25519", 113 | "key": "nC8dcxV+EV2i0ARvub94IFJKKZUYACfY4xFj1NaG7Pw=" 114 | }, 115 | "addr_list": { 116 | "@type": "adnl.addressList", 117 | "addrs": [ 118 | { 119 | "@type": "adnl.address.udp", 120 | "ip": 1959453117, 121 | "port": 63625 122 | } 123 | ], 124 | "version": 0, 125 | "reinit_date": 0, 126 | "priority": 0, 127 | "expire_at": 0 128 | }, 129 | "version": -1, 130 | "signature": "AHF6joNvQhyFFE0itV4OMA9n3Q8CEHVKapCLqazP7QJ4arsn4pdVkRYiGFEyQkngx+cm8izU4gB0JIaxF6PiBg==" 131 | }, 132 | { 133 | "@type": "dht.node", 134 | "id": { 135 | "@type": "pub.ed25519", 136 | "key": "dqsRZLzTg/P7uxUlQpgl4VyTBNYBRMc4js3mnRiolBk=" 137 | }, 138 | "addr_list": { 139 | "@type": "adnl.addressList", 140 | "addrs": [ 141 | { 142 | "@type": "adnl.address.udp", 143 | "ip": -809760973, 144 | "port": 40398 145 | } 146 | ], 147 | "version": 0, 148 | "reinit_date": 0, 149 | "priority": 0, 150 | "expire_at": 0 151 | }, 152 | "version": -1, 153 | "signature": "mJxLrAv5RamN5B9mDz6MhQwFjF92D3drJ5efOSZryDaazil0AR4bRHh4vxzZlYiPhi/X/NyG6WwNvKBz+1ntBw==" 154 | }, 155 | { 156 | "@type": "dht.node", 157 | "id": { 158 | "@type": "pub.ed25519", 159 | "key": "+U2zJXltAQVbgOepQdkam7sJAAdDboxlwvkTG4Oih04=" 160 | }, 161 | "addr_list": { 162 | "@type": "adnl.addressList", 163 | "addrs": [ 164 | { 165 | "@type": "adnl.address.udp", 166 | "ip": 1959448750, 167 | "port": 60982 168 | } 169 | ], 170 | "version": 0, 171 | "reinit_date": 0, 172 | "priority": 0, 173 | "expire_at": 0 174 | }, 175 | "version": -1, 176 | "signature": "sVdFJxk2SG/Wjh35x4yKnuZzzXyQgmuK/FLy0wge3qGHCs6Wg5HhhxU1WnpgXPLIGXfjVKN7Ud0L1APlgVmuDg==" 177 | }, 178 | { 179 | "@type": "dht.node", 180 | "id": { 181 | "@type": "pub.ed25519", 182 | "key": "VFerQdFbdGKfJ8srPW0FpHoB6DJUTnHaRYifYfPqXzE=" 183 | }, 184 | "addr_list": { 185 | "@type": "adnl.addressList", 186 | "addrs": [ 187 | { 188 | "@type": "adnl.address.udp", 189 | "ip": -1177439932, 190 | "port": 3133 191 | } 192 | ], 193 | "version": 0, 194 | "reinit_date": 0, 195 | "priority": 0, 196 | "expire_at": 0 197 | }, 198 | "version": -1, 199 | "signature": "QKgnmn4H1iQTR6QEOMyp8rV37NedgUHahYJvTKRwTYAOGiFXGu1reRrRaq7mzM+zgKXi8v9kqILtKObT48MEDg==" 200 | }, 201 | { 202 | "@type": "dht.node", 203 | "id": { 204 | "@type": "pub.ed25519", 205 | "key": "xaRwNOh8z5Wqanm0N9QfUTORDlBnsKSZkmO1x+7WhBE=" 206 | }, 207 | "addr_list": { 208 | "@type": "adnl.addressList", 209 | "addrs": [ 210 | { 211 | "@type": "adnl.address.udp", 212 | "ip": -809760945, 213 | "port": 3471 214 | } 215 | ], 216 | "version": 0, 217 | "reinit_date": 0, 218 | "priority": 0, 219 | "expire_at": 0 220 | }, 221 | "version": -1, 222 | "signature": "XreTKe+83259q5eVazVnir4HVJEKEIqOHY7Spq1xaRQlSvZ7r4kAtoOiZyC8fWPUJL0wATCNlWKbpQI17pZuCA==" 223 | }, 224 | { 225 | "@type": "dht.node", 226 | "id": { 227 | "@type": "pub.ed25519", 228 | "key": "agRR8dvLfWljbv9gTaRMz0d6rBW/B7ctU/Iuju9vWyE=" 229 | }, 230 | "addr_list": { 231 | "@type": "adnl.addressList", 232 | "addrs": [ 233 | { 234 | "@type": "adnl.address.udp", 235 | "ip": 1162057633, 236 | "port": 14512 237 | } 238 | ], 239 | "version": 0, 240 | "reinit_date": 0, 241 | "priority": 0, 242 | "expire_at": 0 243 | }, 244 | "version": -1, 245 | "signature": "s+fgBe5JdJ7mp+kNqz+8IymONylKHvyw/4V2X3YaVSQVTwoGoPaHnsWClgKlcR9rQlGh08uvBfva5ag6B+cvCQ==" 246 | }, 247 | { 248 | "@type": "dht.node", 249 | "id": { 250 | "@type": "pub.ed25519", 251 | "key": "g3TiYRaF9TiBN3nVcC24RxQ5cWZof1SiMBPFA1U0S/s=" 252 | }, 253 | "addr_list": { 254 | "@type": "adnl.addressList", 255 | "addrs": [ 256 | { 257 | "@type": "adnl.address.udp", 258 | "ip": -1185526389, 259 | "port": 42157 260 | } 261 | ], 262 | "version": 0, 263 | "reinit_date": 0, 264 | "priority": 0, 265 | "expire_at": 0 266 | }, 267 | "version": -1, 268 | "signature": "JmhNp8zAcSHFuCY/s8YlOA913PGMgnFkw9+46PgdLl0TNly954utbSi6kmjzUtZrgtJpADpDWjPMsZMs229KCQ==" 269 | }, 270 | { 271 | "@type": "dht.node", 272 | "id": { 273 | "@type": "pub.ed25519", 274 | "key": "qD1h6vP4bV7V4iVumMewyLW0nU0Kq63Ibmk6Yb+TO4I=" 275 | }, 276 | "addr_list": { 277 | "@type": "adnl.addressList", 278 | "addrs": [ 279 | { 280 | "@type": "adnl.address.udp", 281 | "ip": -1185526601, 282 | "port": 56373 283 | } 284 | ], 285 | "version": 0, 286 | "reinit_date": 0, 287 | "priority": 0, 288 | "expire_at": 0 289 | }, 290 | "version": -1, 291 | "signature": "yUcNKXgIBBSV4kXszvkyggltBdqS+PmD9Sc+8tGRkTv+oCQJsueCEEfuIWu2Rbh4KI6oHREI7artXAI+gP3cDQ==" 292 | }, 293 | { 294 | "@type": "dht.node", 295 | "id": { 296 | "@type": "pub.ed25519", 297 | "key": "fO6cFYRCRrD+yQzOJdHcNWpRFwu+qLhQnddLq0gGbTs=" 298 | }, 299 | "addr_list": { 300 | "@type": "adnl.addressList", 301 | "addrs": [ 302 | { 303 | "@type": "adnl.address.udp", 304 | "ip": 1097633201, 305 | "port": 7201 306 | } 307 | ], 308 | "version": 0, 309 | "reinit_date": 0, 310 | "priority": 0, 311 | "expire_at": 0 312 | }, 313 | "version": -1, 314 | "signature": "o/rhtiUL3rvA08TKBcCn0DCiSjsNQdAv41aw7VVUig7ubaqJzYMv1cW3qMjxvsXn1BOugIheJm7voA1/brbtCg==" 315 | }, 316 | { 317 | "provided": "disintar", 318 | "@type": "dht.node", 319 | "id": { 320 | "@type": "pub.ed25519", 321 | "key": "GB1pg7eomnjKAGIts8okGw1Whe2zgie/+fTEWG7Q13g=" 322 | }, 323 | "addr_list": { 324 | "@type": "adnl.addressList", 325 | "addrs": [ 326 | { 327 | "@type": "adnl.address.udp", 328 | "ip": 1336806917, 329 | "port": 30224 330 | } 331 | ], 332 | "version": 0, 333 | "reinit_date": 0, 334 | "priority": 0, 335 | "expire_at": 0 336 | }, 337 | "version": -1, 338 | "signature": "w4yGCNvlFdHef0TWF5jPb1gfTnOmhQ58Z6kxbbx2LOjnyISuKIk9jHHMWnFS63J+Nw/R71rhRVtO2pcMwXLjBw==" 339 | } 340 | ], 341 | "@type": "dht.nodes" 342 | }, 343 | "@type": "dht.config.global" 344 | }, 345 | "@type": "config.global", 346 | "validator": { 347 | "zero_state": { 348 | "file_hash": "Z+IKwYS54DmmJmesw/nAD5DzWadnOCMzee+kdgSYDOg=", 349 | "seqno": 0, 350 | "root_hash": "gj+B8wb/AmlPk1z1AhVI484rhrUpgSr2oSFIh56VoSg=", 351 | "workchain": -1, 352 | "shard": -9223372036854775808 353 | }, 354 | "@type": "validator.config.global", 355 | "init_block": { 356 | "file_hash": "xRaxgUwgTXYFb16YnR+Q+VVsczLl6jmYwvzhQ/ncrh4=", 357 | "seqno": 5176527, 358 | "root_hash": "SoPLqMe9Dz26YJPOGDOHApTSe5i0kXFtRmRh/zPMGuI=", 359 | "workchain": -1, 360 | "shard": -9223372036854775808 361 | }, 362 | "hardforks": [ 363 | { 364 | "file_hash": "jF3RTD+OyOoP+OI9oIjdV6M8EaOh9E+8+c3m5JkPYdg=", 365 | "seqno": 5141579, 366 | "root_hash": "6JSqIYIkW7y8IorxfbQBoXiuY3kXjcoYgQOxTJpjXXA=", 367 | "workchain": -1, 368 | "shard": -9223372036854775808 369 | }, 370 | { 371 | "file_hash": "WrNoMrn5UIVPDV/ug/VPjYatvde8TPvz5v1VYHCLPh8=", 372 | "seqno": 5172980, 373 | "root_hash": "054VCNNtUEwYGoRe1zjH+9b1q21/MeM+3fOo76Vcjes=", 374 | "workchain": -1, 375 | "shard": -9223372036854775808 376 | }, 377 | { 378 | "file_hash": "xRaxgUwgTXYFb16YnR+Q+VVsczLl6jmYwvzhQ/ncrh4=", 379 | "seqno": 5176527, 380 | "root_hash": "SoPLqMe9Dz26YJPOGDOHApTSe5i0kXFtRmRh/zPMGuI=", 381 | "workchain": -1, 382 | "shard": -9223372036854775808 383 | } 384 | ] 385 | } 386 | } -------------------------------------------------------------------------------- /config/api-config/mainnet-config-onetoone.json: -------------------------------------------------------------------------------- 1 | { 2 | "@type": "config.global", 3 | "dht": { 4 | "@type": "dht.config.global", 5 | "k": 6, 6 | "a": 3, 7 | "static_nodes": { 8 | "@type": "dht.nodes", 9 | "nodes": [ 10 | { 11 | "@type": "dht.node", 12 | "id": { 13 | "@type": "pub.ed25519", 14 | "key": "6PGkPQSbyFp12esf1NqmDOaLoFA8i9+Mp5+cAx5wtTU=" 15 | }, 16 | "addr_list": { 17 | "@type": "adnl.addressList", 18 | "addrs": [ 19 | { 20 | "@type": "adnl.address.udp", 21 | "ip": -1185526007, 22 | "port": 22096 23 | } 24 | ], 25 | "version": 0, 26 | "reinit_date": 0, 27 | "priority": 0, 28 | "expire_at": 0 29 | }, 30 | "version": -1, 31 | "signature": "L4N1+dzXLlkmT5iPnvsmsixzXU0L6kPKApqMdcrGP5d9ssMhn69SzHFK+yIzvG6zQ9oRb4TnqPBaKShjjj2OBg==" 32 | }, 33 | { 34 | "@type": "dht.node", 35 | "id": { 36 | "@type": "pub.ed25519", 37 | "key": "4R0C/zU56k+x2HGMsLWjX2rP/SpoTPIHSSAmidGlsb8=" 38 | }, 39 | "addr_list": { 40 | "@type": "adnl.addressList", 41 | "addrs": [ 42 | { 43 | "@type": "adnl.address.udp", 44 | "ip": -1952265919, 45 | "port": 14395 46 | } 47 | ], 48 | "version": 0, 49 | "reinit_date": 0, 50 | "priority": 0, 51 | "expire_at": 0 52 | }, 53 | "version": -1, 54 | "signature": "0uwWyCFn2KjPnnlbSFYXLZdwIakaSgI9WyRo87J3iCGwb5TvJSztgA224A9kNAXeutOrXMIPYv1b8Zt8ImsrCg==" 55 | }, 56 | { 57 | "@type": "dht.node", 58 | "id": { 59 | "@type": "pub.ed25519", 60 | "key": "/YDNd+IwRUgL0mq21oC0L3RxrS8gTu0nciSPUrhqR78=" 61 | }, 62 | "addr_list": { 63 | "@type": "adnl.addressList", 64 | "addrs": [ 65 | { 66 | "@type": "adnl.address.udp", 67 | "ip": -1402455171, 68 | "port": 14432 69 | } 70 | ], 71 | "version": 0, 72 | "reinit_date": 0, 73 | "priority": 0, 74 | "expire_at": 0 75 | }, 76 | "version": -1, 77 | "signature": "6+oVk6HDtIFbwYi9khCc8B+fTFceBUo1PWZDVTkb4l84tscvr5QpzAkdK7sS5xGzxM7V7YYQ6gUQPrsP9xcLAw==" 78 | }, 79 | { 80 | "@type": "dht.node", 81 | "id": { 82 | "@type": "pub.ed25519", 83 | "key": "DA0H568bb+LoO2LGY80PgPee59jTPCqqSJJzt1SH+KE=" 84 | }, 85 | "addr_list": { 86 | "@type": "adnl.addressList", 87 | "addrs": [ 88 | { 89 | "@type": "adnl.address.udp", 90 | "ip": -1402397332, 91 | "port": 14583 92 | } 93 | ], 94 | "version": 0, 95 | "reinit_date": 0, 96 | "priority": 0, 97 | "expire_at": 0 98 | }, 99 | "version": -1, 100 | "signature": "cL79gDTrixhaM9AlkCdZWccCts7ieQYQBmPxb/R7d7zHw3bEHL8Le96CFJoB1KHu8C85iDpFK8qlrGl1Yt/ZDg==" 101 | }, 102 | { 103 | "@type": "dht.node", 104 | "id": { 105 | "@type": "pub.ed25519", 106 | "key": "fZnkoIAxrTd4xeBgVpZFRm5SvVvSx7eN3Vbe8c83YMk=" 107 | }, 108 | "addr_list": { 109 | "@type": "adnl.addressList", 110 | "addrs": [ 111 | { 112 | "@type": "adnl.address.udp", 113 | "ip": 1091897261, 114 | "port": 15813 115 | } 116 | ], 117 | "version": 0, 118 | "reinit_date": 0, 119 | "priority": 0, 120 | "expire_at": 0 121 | }, 122 | "version": -1, 123 | "signature": "cmaMrV/9wuaHOOyXYjoxBnckJktJqrQZ2i+YaY3ehIyiL3LkW81OQ91vm8zzsx1kwwadGZNzgq4hI4PCB/U5Dw==" 124 | }, 125 | { 126 | "@type": "dht.node", 127 | "id": { 128 | "@type": "pub.ed25519", 129 | "key": "zDBLsKjns4bBqQokzY0wOzC2vwbOeiE1J7aOjfCp5mg=" 130 | }, 131 | "addr_list": { 132 | "@type": "adnl.addressList", 133 | "addrs": [ 134 | { 135 | "@type": "adnl.address.udp", 136 | "ip": -1573440928, 137 | "port": 12821 138 | } 139 | ], 140 | "version": 0, 141 | "reinit_date": 0, 142 | "priority": 0, 143 | "expire_at": 0 144 | }, 145 | "version": -1, 146 | "signature": "qORMhem9RyG7wnNYF822YL3EXwEoTO82h2TarFbjd0jikMIGizAdir1JyxSfyKkhHdFKGcLMeoPb2dfMIvQwAA==" 147 | }, 148 | { 149 | "@type": "dht.node", 150 | "id": { 151 | "@type": "pub.ed25519", 152 | "key": "CU9ytJok8WBnpl29T740gfC/h69kgvQJp7FJMq/N60g=" 153 | }, 154 | "addr_list": { 155 | "@type": "adnl.addressList", 156 | "addrs": [ 157 | { 158 | "@type": "adnl.address.udp", 159 | "ip": 391653587, 160 | "port": 15895 161 | } 162 | ], 163 | "version": 0, 164 | "reinit_date": 0, 165 | "priority": 0, 166 | "expire_at": 0 167 | }, 168 | "version": -1, 169 | "signature": "DKyGF2nPRxmerpIHxE5FN1Lod3zvJu728NP0iYc1hpNyPvl5epu+7amjimLy1VdzNqFzTJAoJ/gqPPMkXS/kDw==" 170 | }, 171 | { 172 | "@type": "dht.node", 173 | "id": { 174 | "@type": "pub.ed25519", 175 | "key": "MJr8xja0xpu9DoisFXBrkNHNx1XozR7HHw9fJdSyEdo=" 176 | }, 177 | "addr_list": { 178 | "@type": "adnl.addressList", 179 | "addrs": [ 180 | { 181 | "@type": "adnl.address.udp", 182 | "ip": -2018147130, 183 | "port": 6302 184 | } 185 | ], 186 | "version": 0, 187 | "reinit_date": 0, 188 | "priority": 0, 189 | "expire_at": 0 190 | }, 191 | "version": -1, 192 | "signature": "XcR5JaWcf4QMdI8urLSc1zwv5+9nCuItSE1EDa0dSwYF15R/BtJoKU5YHA4/T8SiO18aVPQk2SL1pbhevuMrAQ==" 193 | }, 194 | { 195 | "@type": "dht.node", 196 | "id": { 197 | "@type": "pub.ed25519", 198 | "key": "Fhldu4zlnb20/TUj9TXElZkiEmbndIiE/DXrbGKu+0c=" 199 | }, 200 | "addr_list": { 201 | "@type": "adnl.addressList", 202 | "addrs": [ 203 | { 204 | "@type": "adnl.address.udp", 205 | "ip": -2018147075, 206 | "port": 6302 207 | } 208 | ], 209 | "version": 0, 210 | "reinit_date": 0, 211 | "priority": 0, 212 | "expire_at": 0 213 | }, 214 | "version": -1, 215 | "signature": "nUGB77UAkd2+ZAL5PgInb3TvtuLLXJEJ2icjAUKLv4qIGB3c/O9k/v0NKwSzhsMP0ljeTGbcIoMDw24qf3goCg==" 216 | }, 217 | { 218 | "@type": "dht.node", 219 | "id": { 220 | "@type": "pub.ed25519", 221 | "key": "gzUNJnBJhdpooYCE8juKZo2y4tYDIQfoCvFm0yBr7y0=" 222 | }, 223 | "addr_list": { 224 | "@type": "adnl.addressList", 225 | "addrs": [ 226 | { 227 | "@type": "adnl.address.udp", 228 | "ip": 89013260, 229 | "port": 54390 230 | } 231 | ], 232 | "version": 0, 233 | "reinit_date": 0, 234 | "priority": 0, 235 | "expire_at": 0 236 | }, 237 | "version": -1, 238 | "signature": "LCrCkjmkMn6AZHW2I+oRm1gHK7CyBPfcb6LwsltskCPpNECyBl1GxZTX45n0xZtLgyBd/bOqMPBfawpQwWt1BA==" 239 | }, 240 | { 241 | "@type": "dht.node", 242 | "id": { 243 | "@type": "pub.ed25519", 244 | "key": "jXiLaOQz1HPayilWgBWhV9xJhUIqfU95t+KFKQPIpXg=" 245 | }, 246 | "addr_list": { 247 | "@type": "adnl.addressList", 248 | "addrs": [ 249 | { 250 | "@type": "adnl.address.udp", 251 | "ip": 94452896, 252 | "port": 12485 253 | } 254 | ], 255 | "version": 0, 256 | "reinit_date": 0, 257 | "priority": 0, 258 | "expire_at": 0 259 | }, 260 | "version": -1, 261 | "signature": "fKSZh9nXMx+YblkQXn3I/bndTD0JZ1yAtK/tXPIGruNglpe9sWMXR+8fy3YogPhLJMdjNiMom1ya+tWG7qvBAQ==" 262 | }, 263 | { 264 | "@type": "dht.node", 265 | "id": { 266 | "@type": "pub.ed25519", 267 | "key": "vhFPq+tgjJi+4ZbEOHBo4qjpqhBdSCzNZBdgXyj3NK8=" 268 | }, 269 | "addr_list": { 270 | "@type": "adnl.addressList", 271 | "addrs": [ 272 | { 273 | "@type": "adnl.address.udp", 274 | "ip": 85383775, 275 | "port": 36752 276 | } 277 | ], 278 | "version": 0, 279 | "reinit_date": 0, 280 | "priority": 0, 281 | "expire_at": 0 282 | }, 283 | "version": -1, 284 | "signature": "kBwAIgJVkz8AIOGoZcZcXWgNmWq8MSBWB2VhS8Pd+f9LLPIeeFxlDTtwAe8Kj7NkHDSDC+bPXLGQZvPv0+wHCg==" 285 | }, 286 | { 287 | "@type": "dht.node", 288 | "id": { 289 | "@type": "pub.ed25519", 290 | "key": "sbsuMcdyYFSRQ0sG86/n+ZQ5FX3zOWm1aCVuHwXdgs0=" 291 | }, 292 | "addr_list": { 293 | "@type": "adnl.addressList", 294 | "addrs": [ 295 | { 296 | "@type": "adnl.address.udp", 297 | "ip": 759132846, 298 | "port": 50187 299 | } 300 | ], 301 | "version": 0, 302 | "reinit_date": 0, 303 | "priority": 0, 304 | "expire_at": 0 305 | }, 306 | "version": -1, 307 | "signature": "9FJwbFw3IECRFkb9bA54YaexjDmlNBArimWkh+BvW88mjm3K2i5V2uaBPS3GubvXWOwdHLE2lzQBobgZRGMyCg==" 308 | }, 309 | { 310 | "@type": "dht.node", 311 | "id": { 312 | "@type": "pub.ed25519", 313 | "key": "aeMgdMdkkbkfAS4+n4BEGgtqhkf2/zXrVWWECOJ/h3A=" 314 | }, 315 | "addr_list": { 316 | "@type": "adnl.addressList", 317 | "addrs": [ 318 | { 319 | "@type": "adnl.address.udp", 320 | "ip": -1481887565, 321 | "port": 25975 322 | } 323 | ], 324 | "version": 0, 325 | "reinit_date": 0, 326 | "priority": 0, 327 | "expire_at": 0 328 | }, 329 | "version": -1, 330 | "signature": "z5ogivZWpQchkS4UR4wB7i2pfOpMwX9Nd/USxinL9LvJPa+/Aw3F1AytR9FX0BqDftxIYvblBYAB5JyAmlj+AA==" 331 | }, 332 | { 333 | "@type": "dht.node", 334 | "id": { 335 | "@type": "pub.ed25519", 336 | "key": "rNzhnAlmtRn9rTzW6o2568S6bbOXly7ddO1olDws5wM=" 337 | }, 338 | "addr_list": { 339 | "@type": "adnl.addressList", 340 | "addrs": [ 341 | { 342 | "@type": "adnl.address.udp", 343 | "ip": -2134428422, 344 | "port": 45943 345 | } 346 | ], 347 | "version": 0, 348 | "reinit_date": 0, 349 | "priority": 0, 350 | "expire_at": 0 351 | }, 352 | "version": -1, 353 | "signature": "sn/+ZfkfCSw2bHnEnv04AXX/Goyw7+StHBPQOdPr+wvdbaJ761D7hyiMNdQGbuZv2Ep2cXJpiwylnZItrwdUDg==" 354 | } 355 | ] 356 | } 357 | }, 358 | "liteservers": [ 359 | { 360 | "ip": 2886860802, 361 | "port": 43679, 362 | "id": { 363 | "@type": "pub.ed25519", 364 | "key": "NODEAPIKEY" 365 | } 366 | } 367 | ], 368 | "validator": { 369 | "@type": "validator.config.global", 370 | "zero_state": { 371 | "workchain": -1, 372 | "shard": -9223372036854775808, 373 | "seqno": 0, 374 | "root_hash": "F6OpKZKqvqeFp6CQmFomXNMfMj2EnaUSOXN+Mh+wVWk=", 375 | "file_hash": "XplPz01CXAps5qeSWUtxcyBfdAo5zVb1N979KLSKD24=" 376 | }, 377 | "init_block": { 378 | "root_hash": "YRkrcmZMvLBvjanwKCyL3w4oceGPtFfgx8ym1QKCK/4=", 379 | "seqno": 27747086, 380 | "file_hash": "N42xzPnJjDlE3hxPXOb+pNzXomgRtpX5AZzMPnIA41s=", 381 | "workchain": -1, 382 | "shard": -9223372036854775808 383 | }, 384 | "hardforks": [ 385 | { 386 | "file_hash": "t/9VBPODF7Zdh4nsnA49dprO69nQNMqYL+zk5bCjV/8=", 387 | "seqno": 8536841, 388 | "root_hash": "08Kpc9XxrMKC6BF/FeNHPS3MEL1/Vi/fQU/C9ELUrkc=", 389 | "workchain": -1, 390 | "shard": -9223372036854775808 391 | } 392 | ] 393 | } 394 | } -------------------------------------------------------------------------------- /config/api-config/testnet-config-onetomany.json: -------------------------------------------------------------------------------- 1 | { 2 | "liteservers": [ 3 | { 4 | "ip": 2886860802, 5 | "port": 43679, 6 | "id": { 7 | "@type": "pub.ed25519", 8 | "key": "NODEAPIKEY" 9 | } 10 | }, 11 | { 12 | "ip": 1592601963, 13 | "port": 13833, 14 | "id": { 15 | "@type": "pub.ed25519", 16 | "key": "QpVqQiv1u3nCHuBR3cg3fT6NqaFLlnLGbEgtBRukDpU=" 17 | } 18 | }, 19 | { 20 | "ip": 1097649206, 21 | "port": 29296, 22 | "id": { 23 | "@type": "pub.ed25519", 24 | "key": "p2tSiaeSqX978BxE5zLxuTQM06WVDErf5/15QToxMYA=" 25 | } 26 | }, 27 | { 28 | "ip": 1162057690, 29 | "port": 35939, 30 | "id": { 31 | "@type": "pub.ed25519", 32 | "key": "97y55AkdzXWyyVuOAn+WX6p66XTNs2hEGG0jFUOkCIo=" 33 | } 34 | }, 35 | { 36 | "ip": -1304477830, 37 | "port": 20700, 38 | "id": { 39 | "@type": "pub.ed25519", 40 | "key": "dGLlRRai3K9FGkI0dhABmFHMv+92QEVrvmTrFf5fbqA=" 41 | } 42 | }, 43 | { 44 | "ip": 1959453117, 45 | "port": 20700, 46 | "id": { 47 | "@type": "pub.ed25519", 48 | "key": "24RL7iVI20qcG+j//URfd/XFeEG9qtezW2wqaYQgVKw=" 49 | } 50 | }, 51 | { 52 | "ip": -809760973, 53 | "port": 20700, 54 | "id": { 55 | "@type": "pub.ed25519", 56 | "key": "vunMV7K35yPlTQPx/Fqk6s+4/h5lpcbP+ao0Cy3M2hw=" 57 | } 58 | }, 59 | { 60 | "ip": -1177439932, 61 | "port": 4695, 62 | "id": { 63 | "@type": "pub.ed25519", 64 | "key": "cZpMFqy6n0Lsu8x/z2Jq0wh/OdM1WAVJJKSb2CvDECQ=" 65 | } 66 | }, 67 | { 68 | "ip": -809760945, 69 | "port": 41718, 70 | "id": { 71 | "@type": "pub.ed25519", 72 | "key": "jA1X1pNB+ihJ4tziHTD8KxKWdQESRXjDb79TgvFFOZg=" 73 | } 74 | }, 75 | { 76 | "ip": 1162057633, 77 | "port": 59672, 78 | "id": { 79 | "@type": "pub.ed25519", 80 | "key": "WqVn3UcFKCLaGCVp1FOZ09duh13tRqUR+rTaA9Q9sW0=" 81 | } 82 | }, 83 | { 84 | "ip": -2018162320, 85 | "port": 22277, 86 | "id": { 87 | "@type": "pub.ed25519", 88 | "key": "1runGS/h6Pel2LRC46suIEKaOtAYWaDGA+cXeI4HXGo=" 89 | } 90 | }, 91 | { 92 | "ip": -2018162357, 93 | "port": 47938, 94 | "id": { 95 | "@type": "pub.ed25519", 96 | "key": "tmnh97x53cR/oejeISkTxkTyWznvIwUQrd2nZFpkbWE=" 97 | } 98 | }, 99 | { 100 | "ip": 1091914382, 101 | "port": 21335, 102 | "id": { 103 | "@type": "pub.ed25519", 104 | "key": "O8PmvAwKM7n5JAQaW+q8NWKiip89eh1u9FuJZWrGvgs=" 105 | } 106 | }, 107 | { 108 | "ip": 1091914380, 109 | "port": 46427, 110 | "id": { 111 | "@type": "pub.ed25519", 112 | "key": "JhXt7H1dZTgxQTIyGiYV4f9VUARuDxFl/1kVBjLSMB8=" 113 | } 114 | }, 115 | { 116 | "ip": 1097633201, 117 | "port": 17439, 118 | "id": { 119 | "@type": "pub.ed25519", 120 | "key": "0MIADpLH4VQn+INHfm0FxGiuZZAA8JfTujRqQugkkA8=" 121 | } 122 | }, 123 | { 124 | "ip": 1091956407, 125 | "port": 16351, 126 | "id": { 127 | "@type": "pub.ed25519", 128 | "key": "Mf/JGvcWAvcrN3oheze8RF/ps6p7oL6ifrIzFmGQFQ8=" 129 | } 130 | }, 131 | { 132 | "ip": -1185526389, 133 | "port": 64842, 134 | "id": { 135 | "@type": "pub.ed25519", 136 | "key": "cmpsvK5tBuW029x0WnLHV4NAzf5F0wxEagtbODtRvjI=" 137 | } 138 | }, 139 | { 140 | "ip": -1185526601, 141 | "port": 14321, 142 | "id": { 143 | "@type": "pub.ed25519", 144 | "key": "5AF8Wzaf+Kz9+6iPJ1JYdTwzA5n5j2hKaHRy6KAX1Sk=" 145 | } 146 | } 147 | ], 148 | "dht": { 149 | "a": 3, 150 | "k": 3, 151 | "static_nodes": { 152 | "nodes": [ 153 | { 154 | "@type": "dht.node", 155 | "id": { 156 | "@type": "pub.ed25519", 157 | "key": "K2AWu8leN2RjYmhMpYAaGX/F6nGVk9oZw9c09RX3yyc=" 158 | }, 159 | "addr_list": { 160 | "@type": "adnl.addressList", 161 | "addrs": [ 162 | { 163 | "@type": "adnl.address.udp", 164 | "ip": 1592601963, 165 | "port": 38723 166 | } 167 | ], 168 | "version": 0, 169 | "reinit_date": 0, 170 | "priority": 0, 171 | "expire_at": 0 172 | }, 173 | "version": -1, 174 | "signature": "21g16jxnqbb2ENAijrZFccHqLQcmmpkAI1HA46DaPvnVYvMkATFNEyHTy2R1T1jgU5M7CCLGJN+MxhwZfl/ZDA==" 175 | }, 176 | { 177 | "@type": "dht.node", 178 | "id": { 179 | "@type": "pub.ed25519", 180 | "key": "fVIJzD9ATMilaPd847eFs6PtGSB67C+D9b4R+nf1+/s=" 181 | }, 182 | "addr_list": { 183 | "@type": "adnl.addressList", 184 | "addrs": [ 185 | { 186 | "@type": "adnl.address.udp", 187 | "ip": 1097649206, 188 | "port": 29081 189 | } 190 | ], 191 | "version": 0, 192 | "reinit_date": 0, 193 | "priority": 0, 194 | "expire_at": 0 195 | }, 196 | "version": -1, 197 | "signature": "wH0HEVT6yAfZZAoD5bF6J3EZWdSFwBGl1ZpOfhxZ0Bp2u52tv8OzjeH8tlZ+geMLTG50Csn5nxSKP1tswTWwBg==" 198 | }, 199 | { 200 | "@type": "dht.node", 201 | "id": { 202 | "@type": "pub.ed25519", 203 | "key": "gu+woR+x7PoRmaMqAP7oeOjK2V4U0NU8ofdacWZ34aY=" 204 | }, 205 | "addr_list": { 206 | "@type": "adnl.addressList", 207 | "addrs": [ 208 | { 209 | "@type": "adnl.address.udp", 210 | "ip": 1162057690, 211 | "port": 41578 212 | } 213 | ], 214 | "version": 0, 215 | "reinit_date": 0, 216 | "priority": 0, 217 | "expire_at": 0 218 | }, 219 | "version": -1, 220 | "signature": "0PwDLXpN3IbRQuOTLkZBjkbT6+IkeUcvlhWrUY9us3IfSehmCfQjScR9mkVYsQ6cQHF+JeaFmqzV4GAiUcgjAg==" 221 | }, 222 | { 223 | "@type": "dht.node", 224 | "id": { 225 | "@type": "pub.ed25519", 226 | "key": "WC4BO1eZ916FnLBSKmt07Pn5NP4D3/1wary1VjaCLaY=" 227 | }, 228 | "addr_list": { 229 | "@type": "adnl.addressList", 230 | "addrs": [ 231 | { 232 | "@type": "adnl.address.udp", 233 | "ip": -1304477830, 234 | "port": 9670 235 | } 236 | ], 237 | "version": 0, 238 | "reinit_date": 0, 239 | "priority": 0, 240 | "expire_at": 0 241 | }, 242 | "version": -1, 243 | "signature": "cvpzkGeuEuKV+d92qIVkln9ngm8qeDnmYtK5rq8uSet0392hAZcIv2IniDzTw0rN42NaOHL9A4KEelwKu1N2Ag==" 244 | }, 245 | { 246 | "@type": "dht.node", 247 | "id": { 248 | "@type": "pub.ed25519", 249 | "key": "nC8dcxV+EV2i0ARvub94IFJKKZUYACfY4xFj1NaG7Pw=" 250 | }, 251 | "addr_list": { 252 | "@type": "adnl.addressList", 253 | "addrs": [ 254 | { 255 | "@type": "adnl.address.udp", 256 | "ip": 1959453117, 257 | "port": 63625 258 | } 259 | ], 260 | "version": 0, 261 | "reinit_date": 0, 262 | "priority": 0, 263 | "expire_at": 0 264 | }, 265 | "version": -1, 266 | "signature": "AHF6joNvQhyFFE0itV4OMA9n3Q8CEHVKapCLqazP7QJ4arsn4pdVkRYiGFEyQkngx+cm8izU4gB0JIaxF6PiBg==" 267 | }, 268 | { 269 | "@type": "dht.node", 270 | "id": { 271 | "@type": "pub.ed25519", 272 | "key": "dqsRZLzTg/P7uxUlQpgl4VyTBNYBRMc4js3mnRiolBk=" 273 | }, 274 | "addr_list": { 275 | "@type": "adnl.addressList", 276 | "addrs": [ 277 | { 278 | "@type": "adnl.address.udp", 279 | "ip": -809760973, 280 | "port": 40398 281 | } 282 | ], 283 | "version": 0, 284 | "reinit_date": 0, 285 | "priority": 0, 286 | "expire_at": 0 287 | }, 288 | "version": -1, 289 | "signature": "mJxLrAv5RamN5B9mDz6MhQwFjF92D3drJ5efOSZryDaazil0AR4bRHh4vxzZlYiPhi/X/NyG6WwNvKBz+1ntBw==" 290 | }, 291 | { 292 | "@type": "dht.node", 293 | "id": { 294 | "@type": "pub.ed25519", 295 | "key": "+U2zJXltAQVbgOepQdkam7sJAAdDboxlwvkTG4Oih04=" 296 | }, 297 | "addr_list": { 298 | "@type": "adnl.addressList", 299 | "addrs": [ 300 | { 301 | "@type": "adnl.address.udp", 302 | "ip": 1959448750, 303 | "port": 60982 304 | } 305 | ], 306 | "version": 0, 307 | "reinit_date": 0, 308 | "priority": 0, 309 | "expire_at": 0 310 | }, 311 | "version": -1, 312 | "signature": "sVdFJxk2SG/Wjh35x4yKnuZzzXyQgmuK/FLy0wge3qGHCs6Wg5HhhxU1WnpgXPLIGXfjVKN7Ud0L1APlgVmuDg==" 313 | }, 314 | { 315 | "@type": "dht.node", 316 | "id": { 317 | "@type": "pub.ed25519", 318 | "key": "VFerQdFbdGKfJ8srPW0FpHoB6DJUTnHaRYifYfPqXzE=" 319 | }, 320 | "addr_list": { 321 | "@type": "adnl.addressList", 322 | "addrs": [ 323 | { 324 | "@type": "adnl.address.udp", 325 | "ip": -1177439932, 326 | "port": 3133 327 | } 328 | ], 329 | "version": 0, 330 | "reinit_date": 0, 331 | "priority": 0, 332 | "expire_at": 0 333 | }, 334 | "version": -1, 335 | "signature": "QKgnmn4H1iQTR6QEOMyp8rV37NedgUHahYJvTKRwTYAOGiFXGu1reRrRaq7mzM+zgKXi8v9kqILtKObT48MEDg==" 336 | }, 337 | { 338 | "@type": "dht.node", 339 | "id": { 340 | "@type": "pub.ed25519", 341 | "key": "xaRwNOh8z5Wqanm0N9QfUTORDlBnsKSZkmO1x+7WhBE=" 342 | }, 343 | "addr_list": { 344 | "@type": "adnl.addressList", 345 | "addrs": [ 346 | { 347 | "@type": "adnl.address.udp", 348 | "ip": -809760945, 349 | "port": 3471 350 | } 351 | ], 352 | "version": 0, 353 | "reinit_date": 0, 354 | "priority": 0, 355 | "expire_at": 0 356 | }, 357 | "version": -1, 358 | "signature": "XreTKe+83259q5eVazVnir4HVJEKEIqOHY7Spq1xaRQlSvZ7r4kAtoOiZyC8fWPUJL0wATCNlWKbpQI17pZuCA==" 359 | }, 360 | { 361 | "@type": "dht.node", 362 | "id": { 363 | "@type": "pub.ed25519", 364 | "key": "agRR8dvLfWljbv9gTaRMz0d6rBW/B7ctU/Iuju9vWyE=" 365 | }, 366 | "addr_list": { 367 | "@type": "adnl.addressList", 368 | "addrs": [ 369 | { 370 | "@type": "adnl.address.udp", 371 | "ip": 1162057633, 372 | "port": 14512 373 | } 374 | ], 375 | "version": 0, 376 | "reinit_date": 0, 377 | "priority": 0, 378 | "expire_at": 0 379 | }, 380 | "version": -1, 381 | "signature": "s+fgBe5JdJ7mp+kNqz+8IymONylKHvyw/4V2X3YaVSQVTwoGoPaHnsWClgKlcR9rQlGh08uvBfva5ag6B+cvCQ==" 382 | }, 383 | { 384 | "@type": "dht.node", 385 | "id": { 386 | "@type": "pub.ed25519", 387 | "key": "g3TiYRaF9TiBN3nVcC24RxQ5cWZof1SiMBPFA1U0S/s=" 388 | }, 389 | "addr_list": { 390 | "@type": "adnl.addressList", 391 | "addrs": [ 392 | { 393 | "@type": "adnl.address.udp", 394 | "ip": -1185526389, 395 | "port": 42157 396 | } 397 | ], 398 | "version": 0, 399 | "reinit_date": 0, 400 | "priority": 0, 401 | "expire_at": 0 402 | }, 403 | "version": -1, 404 | "signature": "JmhNp8zAcSHFuCY/s8YlOA913PGMgnFkw9+46PgdLl0TNly954utbSi6kmjzUtZrgtJpADpDWjPMsZMs229KCQ==" 405 | }, 406 | { 407 | "@type": "dht.node", 408 | "id": { 409 | "@type": "pub.ed25519", 410 | "key": "qD1h6vP4bV7V4iVumMewyLW0nU0Kq63Ibmk6Yb+TO4I=" 411 | }, 412 | "addr_list": { 413 | "@type": "adnl.addressList", 414 | "addrs": [ 415 | { 416 | "@type": "adnl.address.udp", 417 | "ip": -1185526601, 418 | "port": 56373 419 | } 420 | ], 421 | "version": 0, 422 | "reinit_date": 0, 423 | "priority": 0, 424 | "expire_at": 0 425 | }, 426 | "version": -1, 427 | "signature": "yUcNKXgIBBSV4kXszvkyggltBdqS+PmD9Sc+8tGRkTv+oCQJsueCEEfuIWu2Rbh4KI6oHREI7artXAI+gP3cDQ==" 428 | }, 429 | { 430 | "@type": "dht.node", 431 | "id": { 432 | "@type": "pub.ed25519", 433 | "key": "fO6cFYRCRrD+yQzOJdHcNWpRFwu+qLhQnddLq0gGbTs=" 434 | }, 435 | "addr_list": { 436 | "@type": "adnl.addressList", 437 | "addrs": [ 438 | { 439 | "@type": "adnl.address.udp", 440 | "ip": 1097633201, 441 | "port": 7201 442 | } 443 | ], 444 | "version": 0, 445 | "reinit_date": 0, 446 | "priority": 0, 447 | "expire_at": 0 448 | }, 449 | "version": -1, 450 | "signature": "o/rhtiUL3rvA08TKBcCn0DCiSjsNQdAv41aw7VVUig7ubaqJzYMv1cW3qMjxvsXn1BOugIheJm7voA1/brbtCg==" 451 | }, 452 | { 453 | "provided": "disintar", 454 | "@type": "dht.node", 455 | "id": { 456 | "@type": "pub.ed25519", 457 | "key": "GB1pg7eomnjKAGIts8okGw1Whe2zgie/+fTEWG7Q13g=" 458 | }, 459 | "addr_list": { 460 | "@type": "adnl.addressList", 461 | "addrs": [ 462 | { 463 | "@type": "adnl.address.udp", 464 | "ip": 1336806917, 465 | "port": 30224 466 | } 467 | ], 468 | "version": 0, 469 | "reinit_date": 0, 470 | "priority": 0, 471 | "expire_at": 0 472 | }, 473 | "version": -1, 474 | "signature": "w4yGCNvlFdHef0TWF5jPb1gfTnOmhQ58Z6kxbbx2LOjnyISuKIk9jHHMWnFS63J+Nw/R71rhRVtO2pcMwXLjBw==" 475 | } 476 | ], 477 | "@type": "dht.nodes" 478 | }, 479 | "@type": "dht.config.global" 480 | }, 481 | "@type": "config.global", 482 | "validator": { 483 | "zero_state": { 484 | "file_hash": "Z+IKwYS54DmmJmesw/nAD5DzWadnOCMzee+kdgSYDOg=", 485 | "seqno": 0, 486 | "root_hash": "gj+B8wb/AmlPk1z1AhVI484rhrUpgSr2oSFIh56VoSg=", 487 | "workchain": -1, 488 | "shard": -9223372036854775808 489 | }, 490 | "@type": "validator.config.global", 491 | "init_block": { 492 | "file_hash": "xRaxgUwgTXYFb16YnR+Q+VVsczLl6jmYwvzhQ/ncrh4=", 493 | "seqno": 5176527, 494 | "root_hash": "SoPLqMe9Dz26YJPOGDOHApTSe5i0kXFtRmRh/zPMGuI=", 495 | "workchain": -1, 496 | "shard": -9223372036854775808 497 | }, 498 | "hardforks": [ 499 | { 500 | "file_hash": "jF3RTD+OyOoP+OI9oIjdV6M8EaOh9E+8+c3m5JkPYdg=", 501 | "seqno": 5141579, 502 | "root_hash": "6JSqIYIkW7y8IorxfbQBoXiuY3kXjcoYgQOxTJpjXXA=", 503 | "workchain": -1, 504 | "shard": -9223372036854775808 505 | }, 506 | { 507 | "file_hash": "WrNoMrn5UIVPDV/ug/VPjYatvde8TPvz5v1VYHCLPh8=", 508 | "seqno": 5172980, 509 | "root_hash": "054VCNNtUEwYGoRe1zjH+9b1q21/MeM+3fOo76Vcjes=", 510 | "workchain": -1, 511 | "shard": -9223372036854775808 512 | }, 513 | { 514 | "file_hash": "xRaxgUwgTXYFb16YnR+Q+VVsczLl6jmYwvzhQ/ncrh4=", 515 | "seqno": 5176527, 516 | "root_hash": "SoPLqMe9Dz26YJPOGDOHApTSe5i0kXFtRmRh/zPMGuI=", 517 | "workchain": -1, 518 | "shard": -9223372036854775808 519 | } 520 | ] 521 | } 522 | } -------------------------------------------------------------------------------- /config/api-config/mainnet-config-onetomany.json: -------------------------------------------------------------------------------- 1 | { 2 | "@type": "config.global", 3 | "dht": { 4 | "@type": "dht.config.global", 5 | "k": 6, 6 | "a": 3, 7 | "static_nodes": { 8 | "@type": "dht.nodes", 9 | "nodes": [ 10 | { 11 | "@type": "dht.node", 12 | "id": { 13 | "@type": "pub.ed25519", 14 | "key": "6PGkPQSbyFp12esf1NqmDOaLoFA8i9+Mp5+cAx5wtTU=" 15 | }, 16 | "addr_list": { 17 | "@type": "adnl.addressList", 18 | "addrs": [ 19 | { 20 | "@type": "adnl.address.udp", 21 | "ip": -1185526007, 22 | "port": 22096 23 | } 24 | ], 25 | "version": 0, 26 | "reinit_date": 0, 27 | "priority": 0, 28 | "expire_at": 0 29 | }, 30 | "version": -1, 31 | "signature": "L4N1+dzXLlkmT5iPnvsmsixzXU0L6kPKApqMdcrGP5d9ssMhn69SzHFK+yIzvG6zQ9oRb4TnqPBaKShjjj2OBg==" 32 | }, 33 | { 34 | "@type": "dht.node", 35 | "id": { 36 | "@type": "pub.ed25519", 37 | "key": "4R0C/zU56k+x2HGMsLWjX2rP/SpoTPIHSSAmidGlsb8=" 38 | }, 39 | "addr_list": { 40 | "@type": "adnl.addressList", 41 | "addrs": [ 42 | { 43 | "@type": "adnl.address.udp", 44 | "ip": -1952265919, 45 | "port": 14395 46 | } 47 | ], 48 | "version": 0, 49 | "reinit_date": 0, 50 | "priority": 0, 51 | "expire_at": 0 52 | }, 53 | "version": -1, 54 | "signature": "0uwWyCFn2KjPnnlbSFYXLZdwIakaSgI9WyRo87J3iCGwb5TvJSztgA224A9kNAXeutOrXMIPYv1b8Zt8ImsrCg==" 55 | }, 56 | { 57 | "@type": "dht.node", 58 | "id": { 59 | "@type": "pub.ed25519", 60 | "key": "/YDNd+IwRUgL0mq21oC0L3RxrS8gTu0nciSPUrhqR78=" 61 | }, 62 | "addr_list": { 63 | "@type": "adnl.addressList", 64 | "addrs": [ 65 | { 66 | "@type": "adnl.address.udp", 67 | "ip": -1402455171, 68 | "port": 14432 69 | } 70 | ], 71 | "version": 0, 72 | "reinit_date": 0, 73 | "priority": 0, 74 | "expire_at": 0 75 | }, 76 | "version": -1, 77 | "signature": "6+oVk6HDtIFbwYi9khCc8B+fTFceBUo1PWZDVTkb4l84tscvr5QpzAkdK7sS5xGzxM7V7YYQ6gUQPrsP9xcLAw==" 78 | }, 79 | { 80 | "@type": "dht.node", 81 | "id": { 82 | "@type": "pub.ed25519", 83 | "key": "DA0H568bb+LoO2LGY80PgPee59jTPCqqSJJzt1SH+KE=" 84 | }, 85 | "addr_list": { 86 | "@type": "adnl.addressList", 87 | "addrs": [ 88 | { 89 | "@type": "adnl.address.udp", 90 | "ip": -1402397332, 91 | "port": 14583 92 | } 93 | ], 94 | "version": 0, 95 | "reinit_date": 0, 96 | "priority": 0, 97 | "expire_at": 0 98 | }, 99 | "version": -1, 100 | "signature": "cL79gDTrixhaM9AlkCdZWccCts7ieQYQBmPxb/R7d7zHw3bEHL8Le96CFJoB1KHu8C85iDpFK8qlrGl1Yt/ZDg==" 101 | }, 102 | { 103 | "@type": "dht.node", 104 | "id": { 105 | "@type": "pub.ed25519", 106 | "key": "fZnkoIAxrTd4xeBgVpZFRm5SvVvSx7eN3Vbe8c83YMk=" 107 | }, 108 | "addr_list": { 109 | "@type": "adnl.addressList", 110 | "addrs": [ 111 | { 112 | "@type": "adnl.address.udp", 113 | "ip": 1091897261, 114 | "port": 15813 115 | } 116 | ], 117 | "version": 0, 118 | "reinit_date": 0, 119 | "priority": 0, 120 | "expire_at": 0 121 | }, 122 | "version": -1, 123 | "signature": "cmaMrV/9wuaHOOyXYjoxBnckJktJqrQZ2i+YaY3ehIyiL3LkW81OQ91vm8zzsx1kwwadGZNzgq4hI4PCB/U5Dw==" 124 | }, 125 | { 126 | "@type": "dht.node", 127 | "id": { 128 | "@type": "pub.ed25519", 129 | "key": "zDBLsKjns4bBqQokzY0wOzC2vwbOeiE1J7aOjfCp5mg=" 130 | }, 131 | "addr_list": { 132 | "@type": "adnl.addressList", 133 | "addrs": [ 134 | { 135 | "@type": "adnl.address.udp", 136 | "ip": -1573440928, 137 | "port": 12821 138 | } 139 | ], 140 | "version": 0, 141 | "reinit_date": 0, 142 | "priority": 0, 143 | "expire_at": 0 144 | }, 145 | "version": -1, 146 | "signature": "qORMhem9RyG7wnNYF822YL3EXwEoTO82h2TarFbjd0jikMIGizAdir1JyxSfyKkhHdFKGcLMeoPb2dfMIvQwAA==" 147 | }, 148 | { 149 | "@type": "dht.node", 150 | "id": { 151 | "@type": "pub.ed25519", 152 | "key": "CU9ytJok8WBnpl29T740gfC/h69kgvQJp7FJMq/N60g=" 153 | }, 154 | "addr_list": { 155 | "@type": "adnl.addressList", 156 | "addrs": [ 157 | { 158 | "@type": "adnl.address.udp", 159 | "ip": 391653587, 160 | "port": 15895 161 | } 162 | ], 163 | "version": 0, 164 | "reinit_date": 0, 165 | "priority": 0, 166 | "expire_at": 0 167 | }, 168 | "version": -1, 169 | "signature": "DKyGF2nPRxmerpIHxE5FN1Lod3zvJu728NP0iYc1hpNyPvl5epu+7amjimLy1VdzNqFzTJAoJ/gqPPMkXS/kDw==" 170 | }, 171 | { 172 | "@type": "dht.node", 173 | "id": { 174 | "@type": "pub.ed25519", 175 | "key": "MJr8xja0xpu9DoisFXBrkNHNx1XozR7HHw9fJdSyEdo=" 176 | }, 177 | "addr_list": { 178 | "@type": "adnl.addressList", 179 | "addrs": [ 180 | { 181 | "@type": "adnl.address.udp", 182 | "ip": -2018147130, 183 | "port": 6302 184 | } 185 | ], 186 | "version": 0, 187 | "reinit_date": 0, 188 | "priority": 0, 189 | "expire_at": 0 190 | }, 191 | "version": -1, 192 | "signature": "XcR5JaWcf4QMdI8urLSc1zwv5+9nCuItSE1EDa0dSwYF15R/BtJoKU5YHA4/T8SiO18aVPQk2SL1pbhevuMrAQ==" 193 | }, 194 | { 195 | "@type": "dht.node", 196 | "id": { 197 | "@type": "pub.ed25519", 198 | "key": "Fhldu4zlnb20/TUj9TXElZkiEmbndIiE/DXrbGKu+0c=" 199 | }, 200 | "addr_list": { 201 | "@type": "adnl.addressList", 202 | "addrs": [ 203 | { 204 | "@type": "adnl.address.udp", 205 | "ip": -2018147075, 206 | "port": 6302 207 | } 208 | ], 209 | "version": 0, 210 | "reinit_date": 0, 211 | "priority": 0, 212 | "expire_at": 0 213 | }, 214 | "version": -1, 215 | "signature": "nUGB77UAkd2+ZAL5PgInb3TvtuLLXJEJ2icjAUKLv4qIGB3c/O9k/v0NKwSzhsMP0ljeTGbcIoMDw24qf3goCg==" 216 | }, 217 | { 218 | "@type": "dht.node", 219 | "id": { 220 | "@type": "pub.ed25519", 221 | "key": "gzUNJnBJhdpooYCE8juKZo2y4tYDIQfoCvFm0yBr7y0=" 222 | }, 223 | "addr_list": { 224 | "@type": "adnl.addressList", 225 | "addrs": [ 226 | { 227 | "@type": "adnl.address.udp", 228 | "ip": 89013260, 229 | "port": 54390 230 | } 231 | ], 232 | "version": 0, 233 | "reinit_date": 0, 234 | "priority": 0, 235 | "expire_at": 0 236 | }, 237 | "version": -1, 238 | "signature": "LCrCkjmkMn6AZHW2I+oRm1gHK7CyBPfcb6LwsltskCPpNECyBl1GxZTX45n0xZtLgyBd/bOqMPBfawpQwWt1BA==" 239 | }, 240 | { 241 | "@type": "dht.node", 242 | "id": { 243 | "@type": "pub.ed25519", 244 | "key": "jXiLaOQz1HPayilWgBWhV9xJhUIqfU95t+KFKQPIpXg=" 245 | }, 246 | "addr_list": { 247 | "@type": "adnl.addressList", 248 | "addrs": [ 249 | { 250 | "@type": "adnl.address.udp", 251 | "ip": 94452896, 252 | "port": 12485 253 | } 254 | ], 255 | "version": 0, 256 | "reinit_date": 0, 257 | "priority": 0, 258 | "expire_at": 0 259 | }, 260 | "version": -1, 261 | "signature": "fKSZh9nXMx+YblkQXn3I/bndTD0JZ1yAtK/tXPIGruNglpe9sWMXR+8fy3YogPhLJMdjNiMom1ya+tWG7qvBAQ==" 262 | }, 263 | { 264 | "@type": "dht.node", 265 | "id": { 266 | "@type": "pub.ed25519", 267 | "key": "vhFPq+tgjJi+4ZbEOHBo4qjpqhBdSCzNZBdgXyj3NK8=" 268 | }, 269 | "addr_list": { 270 | "@type": "adnl.addressList", 271 | "addrs": [ 272 | { 273 | "@type": "adnl.address.udp", 274 | "ip": 85383775, 275 | "port": 36752 276 | } 277 | ], 278 | "version": 0, 279 | "reinit_date": 0, 280 | "priority": 0, 281 | "expire_at": 0 282 | }, 283 | "version": -1, 284 | "signature": "kBwAIgJVkz8AIOGoZcZcXWgNmWq8MSBWB2VhS8Pd+f9LLPIeeFxlDTtwAe8Kj7NkHDSDC+bPXLGQZvPv0+wHCg==" 285 | }, 286 | { 287 | "@type": "dht.node", 288 | "id": { 289 | "@type": "pub.ed25519", 290 | "key": "sbsuMcdyYFSRQ0sG86/n+ZQ5FX3zOWm1aCVuHwXdgs0=" 291 | }, 292 | "addr_list": { 293 | "@type": "adnl.addressList", 294 | "addrs": [ 295 | { 296 | "@type": "adnl.address.udp", 297 | "ip": 759132846, 298 | "port": 50187 299 | } 300 | ], 301 | "version": 0, 302 | "reinit_date": 0, 303 | "priority": 0, 304 | "expire_at": 0 305 | }, 306 | "version": -1, 307 | "signature": "9FJwbFw3IECRFkb9bA54YaexjDmlNBArimWkh+BvW88mjm3K2i5V2uaBPS3GubvXWOwdHLE2lzQBobgZRGMyCg==" 308 | }, 309 | { 310 | "@type": "dht.node", 311 | "id": { 312 | "@type": "pub.ed25519", 313 | "key": "aeMgdMdkkbkfAS4+n4BEGgtqhkf2/zXrVWWECOJ/h3A=" 314 | }, 315 | "addr_list": { 316 | "@type": "adnl.addressList", 317 | "addrs": [ 318 | { 319 | "@type": "adnl.address.udp", 320 | "ip": -1481887565, 321 | "port": 25975 322 | } 323 | ], 324 | "version": 0, 325 | "reinit_date": 0, 326 | "priority": 0, 327 | "expire_at": 0 328 | }, 329 | "version": -1, 330 | "signature": "z5ogivZWpQchkS4UR4wB7i2pfOpMwX9Nd/USxinL9LvJPa+/Aw3F1AytR9FX0BqDftxIYvblBYAB5JyAmlj+AA==" 331 | }, 332 | { 333 | "@type": "dht.node", 334 | "id": { 335 | "@type": "pub.ed25519", 336 | "key": "rNzhnAlmtRn9rTzW6o2568S6bbOXly7ddO1olDws5wM=" 337 | }, 338 | "addr_list": { 339 | "@type": "adnl.addressList", 340 | "addrs": [ 341 | { 342 | "@type": "adnl.address.udp", 343 | "ip": -2134428422, 344 | "port": 45943 345 | } 346 | ], 347 | "version": 0, 348 | "reinit_date": 0, 349 | "priority": 0, 350 | "expire_at": 0 351 | }, 352 | "version": -1, 353 | "signature": "sn/+ZfkfCSw2bHnEnv04AXX/Goyw7+StHBPQOdPr+wvdbaJ761D7hyiMNdQGbuZv2Ep2cXJpiwylnZItrwdUDg==" 354 | } 355 | ] 356 | } 357 | }, 358 | "liteservers": [ 359 | { 360 | "ip": 2886860802, 361 | "port": 43679, 362 | "id": { 363 | "@type": "pub.ed25519", 364 | "key": "NODEAPIKEY" 365 | } 366 | }, 367 | { 368 | "ip": 84478511, 369 | "port": 19949, 370 | "id": { 371 | "@type": "pub.ed25519", 372 | "key": "n4VDnSCUuSpjnCyUk9e3QOOd6o0ItSWYbTnW3Wnn8wk=" 373 | } 374 | }, 375 | { 376 | "ip": 84478479, 377 | "port": 48014, 378 | "id": { 379 | "@type": "pub.ed25519", 380 | "key": "3XO67K/qi+gu3T9v8G2hx1yNmWZhccL3O7SoosFo8G0=" 381 | } 382 | }, 383 | { 384 | "ip": -2018135749, 385 | "port": 53312, 386 | "id": { 387 | "@type": "pub.ed25519", 388 | "key": "aF91CuUHuuOv9rm2W5+O/4h38M3sRm40DtSdRxQhmtQ=" 389 | } 390 | }, 391 | { 392 | "ip": -2018145068, 393 | "port": 13206, 394 | "id": { 395 | "@type": "pub.ed25519", 396 | "key": "K0t3+IWLOXHYMvMcrGZDPs+pn58a17LFbnXoQkKc2xw=" 397 | } 398 | }, 399 | { 400 | "ip": -2018145059, 401 | "port": 46995, 402 | "id": { 403 | "@type": "pub.ed25519", 404 | "key": "wQE0MVhXNWUXpWiW5Bk8cAirIh5NNG3cZM1/fSVKIts=" 405 | } 406 | }, 407 | { 408 | "ip": 1091931625, 409 | "port": 30131, 410 | "id": { 411 | "@type": "pub.ed25519", 412 | "key": "wrQaeIFispPfHndEBc0s0fx7GSp8UFFvebnytQQfc6A=" 413 | } 414 | }, 415 | { 416 | "ip": 1091931590, 417 | "port": 47160, 418 | "id": { 419 | "@type": "pub.ed25519", 420 | "key": "vOe1Xqt/1AQ2Z56Pr+1Rnw+f0NmAA7rNCZFIHeChB7o=" 421 | } 422 | }, 423 | { 424 | "ip": 1091931623, 425 | "port": 17728, 426 | "id": { 427 | "@type": "pub.ed25519", 428 | "key": "BYSVpL7aPk0kU5CtlsIae/8mf2B/NrBi7DKmepcjX6Q=" 429 | } 430 | }, 431 | { 432 | "ip": 1091931589, 433 | "port": 13570, 434 | "id": { 435 | "@type": "pub.ed25519", 436 | "key": "iVQH71cymoNgnrhOT35tl/Y7k86X5iVuu5Vf68KmifQ=" 437 | } 438 | }, 439 | { 440 | "ip": -1539021362, 441 | "port": 52995, 442 | "id": { 443 | "@type": "pub.ed25519", 444 | "key": "QnGFe9kihW+TKacEvvxFWqVXeRxCB6ChjjhNTrL7+/k=" 445 | } 446 | }, 447 | { 448 | "ip": -1539021936, 449 | "port": 20334, 450 | "id": { 451 | "@type": "pub.ed25519", 452 | "key": "gyLh12v4hBRtyBygvvbbO2HqEtgl+ojpeRJKt4gkMq0=" 453 | } 454 | }, 455 | { 456 | "ip": -1136338705, 457 | "port": 19925, 458 | "id": { 459 | "@type": "pub.ed25519", 460 | "key": "ucho5bEkufbKN1JR1BGHpkObq602whJn3Q3UwhtgSo4=" 461 | } 462 | }, 463 | { 464 | "ip": 868465979, 465 | "port": 19434, 466 | "id": { 467 | "@type": "pub.ed25519", 468 | "key": "J5CwYXuCZWVPgiFPW+NY2roBwDWpRRtANHSTYTRSVtI=" 469 | } 470 | }, 471 | { 472 | "ip": 868466060, 473 | "port": 23067, 474 | "id": { 475 | "@type": "pub.ed25519", 476 | "key": "vX8d0i31zB0prVuZK8fBkt37WnEpuEHrb7PElk4FJ1o=" 477 | } 478 | }, 479 | { 480 | "ip": -2018147130, 481 | "port": 53560, 482 | "id": { 483 | "@type": "pub.ed25519", 484 | "key": "NlYhh/xf4uQpE+7EzgorPHqIaqildznrpajJTRRH2HU=" 485 | } 486 | }, 487 | { 488 | "ip": -2018147075, 489 | "port": 46529, 490 | "id": { 491 | "@type": "pub.ed25519", 492 | "key": "jLO6yoooqUQqg4/1QXflpv2qGCoXmzZCR+bOsYJ2hxw=" 493 | } 494 | }, 495 | { 496 | "ip": 908566172, 497 | "port": 51565, 498 | "id": { 499 | "@type": "pub.ed25519", 500 | "key": "TDg+ILLlRugRB4Kpg3wXjPcoc+d+Eeb7kuVe16CS9z8=" 501 | } 502 | }, 503 | { 504 | "ip": -1185526007, 505 | "port": 4701, 506 | "id": { 507 | "@type": "pub.ed25519", 508 | "key": "G6cNAr6wXBBByWDzddEWP5xMFsAcp6y13fXA8Q7EJlM=" 509 | } 510 | } 511 | ], 512 | "validator": { 513 | "@type": "validator.config.global", 514 | "zero_state": { 515 | "workchain": -1, 516 | "shard": -9223372036854775808, 517 | "seqno": 0, 518 | "root_hash": "F6OpKZKqvqeFp6CQmFomXNMfMj2EnaUSOXN+Mh+wVWk=", 519 | "file_hash": "XplPz01CXAps5qeSWUtxcyBfdAo5zVb1N979KLSKD24=" 520 | }, 521 | "init_block": { 522 | "root_hash": "YRkrcmZMvLBvjanwKCyL3w4oceGPtFfgx8ym1QKCK/4=", 523 | "seqno": 27747086, 524 | "file_hash": "N42xzPnJjDlE3hxPXOb+pNzXomgRtpX5AZzMPnIA41s=", 525 | "workchain": -1, 526 | "shard": -9223372036854775808 527 | }, 528 | "hardforks": [ 529 | { 530 | "file_hash": "t/9VBPODF7Zdh4nsnA49dprO69nQNMqYL+zk5bCjV/8=", 531 | "seqno": 8536841, 532 | "root_hash": "08Kpc9XxrMKC6BF/FeNHPS3MEL1/Vi/fQU/C9ELUrkc=", 533 | "workchain": -1, 534 | "shard": -9223372036854775808 535 | } 536 | ] 537 | } 538 | } --------------------------------------------------------------------------------