[
  {
    "path": ".gitignore",
    "content": "docker-compose.aux.yml\nbuild/Dockerfile.metrics\nbuild/*-local\nlocal-build\ndb\nlogs"
  },
  {
    "path": "README.md",
    "content": "# The Open Network: Full node and Toncenter API, dockerised\n\nThis repository contains TON full node and Toncenter API builds unified into one Compose definition - to run as a service on any host machine.\n\nThis 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.\n\n## Credentials\n\nMany 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).\n\nThis setup has been created with the use of these sources.\n\n## Functionality\n\nTON node works in the full mode by default.\n\nThe API service can be configured to work in two modes:\n\n- one-to-one (`onetoone`) - interacting with your node only;\n- one-to-many (`onetomany`) - interacting with a set of nodes including your node.\n\n## Prerequisites\n\nTo bootstrap and run the node, you have to install **Docker and Docker Compose** on your host.\n\nFor 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.).\n\nFor MacOS, install `gnu-sed` to run the bootstrap script adequately:\n\n```\nbrew install gnu-sed\n```\n\nThen, use `gsed` instead of `sed` in `bootstrap.sh`.\n\n## Configuration\n\n> **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.\n\nBoth node and API are configured via the `.env` file.\n\nIn the **node part** of the file, you will find following parameters:\n\n| Variable | Description | Default value |\n| -------- | ----------- | ------------- |\n| `NODE_VERSION` | Release version of the TON node - consider specifying the latest version | `2023.12` |\n| `NODE_CONF_VOLUME` | External volume to store node configuration files | `${PWD}/config/node-config` |\n| `NODE_LOG_VOLUME` | External volume to store node logs | `${PWD}/logs` |\n| `NODE_STATE_VOLUME` | External volume to store the node DB | `${PWD}/db` |\n| `NODE_CONFIG_URL` | Node config URL to download (find current config versions for Testnet and Mainnet below) | Testnet config |\n| `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 |\n| `NODE_LITESERVER` | Enable liteserver mode | `true` |\n| `NODE_LITESERVER_PORT` | Node liteserver port | `43679` |\n| `NODE_CONSOLE_PORT` | Node control plane port | `43678` |\n\nIn the **API part** of the file, you can set following HTTP API parameters:\n\n| Variable | Description | Default value |\n| -------- | ----------- | ------------- |\n| `API_VERSION` | Release version of TON HTTP API | `2.0.31` |\n| `API_NETWORK` | API network corresponding with your node | `testnet` |\n| `API_MODE` | API interaction mode as above: `onetoone` or `onetomany` | `onetoone` |\n| `API_CONF_VOLUME` | External volume to store API configs | `${PWD}/config/api-config` |\n| `API_CACHE_ENABLED` | Set `1` to enable API cache | `0` |\n| `API_LOGS_JSONIFY` | Set `1` to get logs in the JSON format | `0` |\n| `API_LOGS_LEVEL` | API log level | `ERROR` |\n| `API_TONLIB_LITESERVER_CONFIG` | Internal config path, fetched automatically from `API_NETWORK` and `API_MODE` variables | `/conf/${API_NETWORK}-config-${API_MODE}.json` |\n| `API_TONLIB_PARALLEL_REQUESTS_PER_LITESERVER` | Maximal number of parallel request per liteserver | `50` |\n| `API_TONLIB_REQUEST_TIMEOUT` | Timeout time of a request in milliseconds | `10000` |\n| `API_GET_METHODS_ENABLED` | Set `1` to enable `GET` API methods | `1` |\n| `API_JSON_RPC_ENABLED` | Set `1` to enable JSON RPC | `1` |\n| `API_ROOT_PATH` | API root path after your hostname or IP | `\"/\"` |\n\n## Running the node\n\nTo run the full node and API, change environment variables needed in the `.env` configuration and run the `bootstrap.sh` script.\n\nThis script will perform following operations:\n\n1. Set your static IP as the `TON_NODE_IP` environment variable - to be used in the `.env` file further.\n2. Apply `.env` variables to your shell environment.\n3. Build local node and API images.\n4. Run the node container. The node will bootstrap additionally with the use of the `./config/node-config/init.sh` script.\n5. Run the standard `python` Docker image to set the `NODE_API_KEY` variable containing the generated HTTP API key of the node.\n6. Add the obtained node API key to the desired API config.\n7. Run the HTTP API container.\n\nThen, just wait until your node is synchronised with the chain.\n\nTo interact with the API, refer to the [Toncenter API reference](https://toncenter.com/api/v2/).\n\n## Updating the node\n\nJust lift the release version in the `NODE_VERSION` variable of the `.env` file.\n\n## Troubleshooting\n\n1. Failed to parse config\n\n`ton-node` logs:\n\n```\n[ 1][t 1][2023-12-24 23:20:03.489683013][validator-engine.cpp:3517][!validator-engine]\tfailed to parse config: [Error : 0 : failed to parse json: Unexpected symbol while parsing JSON Object]\n```\n\nIf 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.\n\n2. No nodes in the network\n\n`ton-node` logs:\n\n```\n[ 2][t 6][2023-12-24 23:56:21.137193799][manager-init.cpp:86][!downloadproofreq]\tfailed to download proof link: [Error : 651 : no nodes]\n```\n\nThis warning always appears during initial node start. Just wait until the node starts to sync.\n\n3. Dead workers in `onetomany` mode\n\n`ton-api` logs:\n\n```\n2023-12-25 10:49:47.910 | ERROR    | pyTON.manager:check_children_alive:232 - TonlibWorker #XXX is dead!!! Exit code: 12\n2023-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\n```\n\nIf 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.\n\n## Checked on...\n\nThis setup works correctly with following software:\n\n- Docker Compose v2.15.1\n- Docker v20.10.23, build 7155243\n- MacOS Sonoma 14.0 (Apple M1)\n"
  },
  {
    "path": "bootstrap.sh",
    "content": "#!/bin/bash\nset -e\n\nbuild_all () {\n  docker compose build\n}\n\nadd_node_assets () {\n  mkdir -p $NODE_STATE_VOLUME\n  cp -a config/node-assets/. $NODE_STATE_VOLUME\n}\n\ndeploy_node () {\n  docker compose up -d ton-node\n  sleep 5\n}\n\nset_http_api_key () {\n  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\")\n  sed -i \"s~NODEAPIKEY~$NODE_API_KEY~g\" ${API_CONF_VOLUME}/${API_NETWORK}-config-${API_MODE}.json\n}\n\ndeploy_api () {\n  docker compose up -d ton-api\n}\n\nexport TON_NODE_IP=$(curl -s https://ipinfo.io/ip)\nsource .env\nbuild_all\nadd_node_assets\ndeploy_node\nset_http_api_key\ndeploy_api"
  },
  {
    "path": "build/Dockerfile.api",
    "content": "FROM python:3.9-bullseye\nARG VER\nRUN apt-get update && \\\n    apt-get upgrade -y && \\\n    apt-get install -y git \\\n                        gcc \\\n                        libc-dev \\\n                        libssl1.1\nRUN git clone --branch v${VER} https://github.com/toncenter/ton-http-api.git\nWORKDIR /ton-http-api/ton-http-api\nRUN pip install --no-cache-dir -r requirements.txt\nENTRYPOINT [ \"/bin/sh\" ]"
  },
  {
    "path": "build/Dockerfile.node",
    "content": "FROM ubuntu:20.04 as builder\n\nARG VER\n\nRUN sed -i s/deb.debian.org/archive.debian.org/g /etc/apt/sources.list &&\\\n    sed -i 's|security.debian.org|archive.debian.org/|g' /etc/apt/sources.list &&\\\n    sed -i '/stretch-updates/d' /etc/apt/sources.list &&\\\n    apt-get update &&\\\n    DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential \\\n                                                        git \\\n                                                        wget \\\n                                                        cmake \\\n                                                        gperf \\\n                                                        clang-9 \\\n                                                        openssl \\\n                                                        liblz4-dev \\\n                                                        libssl-dev \\\n                                                        zlib1g-dev \\\n                                                        pkg-config \\\n                                                        ninja-build \\\n                                                        libsodium-dev \\\n                                                        libsecp256k1-dev \\\n                                                        libmicrohttpd-dev &&\\\n                                    rm -rf /var/lib/apt/lists/*\n\nWORKDIR /usr/src\nRUN git clone --recursive --branch v${VER} https://github.com/ton-blockchain/ton\nRUN mkdir -p /usr/bin/ton\n\nWORKDIR /usr/bin/ton\nRUN cmake -GNinja -DCMAKE_BUILD_TYPE=Release /usr/src/ton &&\\\n    ninja fift \\\n            func \\\n            dht-server \\\n            tonlibjson \\\n            lite-client \\\n            validator-engine \\\n            generate-random-id \\\n            validator-engine-console\n\nFROM ubuntu:20.04\n\nRUN apt-get update &&\\\n    apt-get install -y jq \\\n                        wget \\\n                        openssl \\\n                        libatomic1 \\\n                        libsodium-dev \\\n                        libsecp256k1-dev &&\\\n    rm -rf /var/lib/apt/lists/*\n\nCOPY --from=builder /usr/src/ton /usr/src/ton\nCOPY --from=builder /usr/bin/ton /usr/bin/ton\n\nRUN mkdir -p /var/ton-work/db &&\\\n    mkdir -p /var/ton-work/db/static\n\nWORKDIR /var/ton-work/db\n\nENTRYPOINT chmod +x /var/ton-work/db/init.sh && /var/ton-work/db/init.sh\n"
  },
  {
    "path": "config/api-config/generate-api-key.py",
    "content": "import codecs;\nf=open('/liteserver/liteserver.pub', \"rb+\")\npub=f.read()[4:]\nprint(str(codecs.encode(pub,\"base64\")).replace(\"\\n\",\"\")[2:46])"
  },
  {
    "path": "config/api-config/mainnet-config-onetomany.json",
    "content": "{\n  \"@type\": \"config.global\",\n  \"dht\": {\n    \"@type\": \"dht.config.global\",\n    \"k\": 6,\n    \"a\": 3,\n    \"static_nodes\": {\n      \"@type\": \"dht.nodes\",\n      \"nodes\": [\n        {\n            \"@type\": \"dht.node\",\n            \"id\": {\n                \"@type\": \"pub.ed25519\",\n                \"key\": \"6PGkPQSbyFp12esf1NqmDOaLoFA8i9+Mp5+cAx5wtTU=\"\n            },\n            \"addr_list\": {\n                \"@type\": \"adnl.addressList\",\n                \"addrs\": [\n                    {\n                        \"@type\": \"adnl.address.udp\",\n                        \"ip\": -1185526007,\n                        \"port\": 22096\n                    }\n                ],\n                \"version\": 0,\n                \"reinit_date\": 0,\n                \"priority\": 0,\n                \"expire_at\": 0\n            },\n            \"version\": -1,\n            \"signature\": \"L4N1+dzXLlkmT5iPnvsmsixzXU0L6kPKApqMdcrGP5d9ssMhn69SzHFK+yIzvG6zQ9oRb4TnqPBaKShjjj2OBg==\"\n        },\n        {\n          \"@type\": \"dht.node\",\n          \"id\": {\n            \"@type\": \"pub.ed25519\",\n            \"key\": \"4R0C/zU56k+x2HGMsLWjX2rP/SpoTPIHSSAmidGlsb8=\"\n          },\n          \"addr_list\": {\n            \"@type\": \"adnl.addressList\",\n            \"addrs\": [\n              {\n                \"@type\": \"adnl.address.udp\",\n                \"ip\": -1952265919,\n                \"port\": 14395\n              }\n            ],\n            \"version\": 0,\n            \"reinit_date\": 0,\n            \"priority\": 0,\n            \"expire_at\": 0\n          },\n          \"version\": -1,\n          \"signature\": \"0uwWyCFn2KjPnnlbSFYXLZdwIakaSgI9WyRo87J3iCGwb5TvJSztgA224A9kNAXeutOrXMIPYv1b8Zt8ImsrCg==\"\n        },\n        {\n          \"@type\": \"dht.node\",\n          \"id\": {\n            \"@type\": \"pub.ed25519\",\n            \"key\": \"/YDNd+IwRUgL0mq21oC0L3RxrS8gTu0nciSPUrhqR78=\"\n          },\n          \"addr_list\": {\n            \"@type\": \"adnl.addressList\",\n            \"addrs\": [\n              {\n                \"@type\": \"adnl.address.udp\",\n                \"ip\": -1402455171,\n                \"port\": 14432\n              }\n            ],\n            \"version\": 0,\n            \"reinit_date\": 0,\n            \"priority\": 0,\n            \"expire_at\": 0\n          },\n          \"version\": -1,\n          \"signature\": \"6+oVk6HDtIFbwYi9khCc8B+fTFceBUo1PWZDVTkb4l84tscvr5QpzAkdK7sS5xGzxM7V7YYQ6gUQPrsP9xcLAw==\"\n        },\n        {\n          \"@type\": \"dht.node\",\n          \"id\": {\n            \"@type\": \"pub.ed25519\",\n            \"key\": \"DA0H568bb+LoO2LGY80PgPee59jTPCqqSJJzt1SH+KE=\"\n          },\n          \"addr_list\": {\n            \"@type\": \"adnl.addressList\",\n            \"addrs\": [\n              {\n                \"@type\": \"adnl.address.udp\",\n                \"ip\": -1402397332,\n                \"port\": 14583\n              }\n            ],\n            \"version\": 0,\n            \"reinit_date\": 0,\n            \"priority\": 0,\n            \"expire_at\": 0\n          },\n          \"version\": -1,\n          \"signature\": \"cL79gDTrixhaM9AlkCdZWccCts7ieQYQBmPxb/R7d7zHw3bEHL8Le96CFJoB1KHu8C85iDpFK8qlrGl1Yt/ZDg==\"\n        },\n        {\n          \"@type\": \"dht.node\",\n          \"id\": {\n            \"@type\": \"pub.ed25519\",\n            \"key\": \"fZnkoIAxrTd4xeBgVpZFRm5SvVvSx7eN3Vbe8c83YMk=\"\n          },\n          \"addr_list\": {\n            \"@type\": \"adnl.addressList\",\n            \"addrs\": [\n              {\n                \"@type\": \"adnl.address.udp\",\n                \"ip\": 1091897261,\n                \"port\": 15813\n              }\n            ],\n            \"version\": 0,\n            \"reinit_date\": 0,\n            \"priority\": 0,\n            \"expire_at\": 0\n          },\n          \"version\": -1,\n          \"signature\": \"cmaMrV/9wuaHOOyXYjoxBnckJktJqrQZ2i+YaY3ehIyiL3LkW81OQ91vm8zzsx1kwwadGZNzgq4hI4PCB/U5Dw==\"\n        },\n        {\n          \"@type\": \"dht.node\",\n          \"id\": {\n            \"@type\": \"pub.ed25519\",\n            \"key\": \"zDBLsKjns4bBqQokzY0wOzC2vwbOeiE1J7aOjfCp5mg=\"\n          },\n          \"addr_list\": {\n            \"@type\": \"adnl.addressList\",\n            \"addrs\": [\n              {\n                \"@type\": \"adnl.address.udp\",\n                \"ip\": -1573440928,\n                \"port\": 12821\n              }\n            ],\n            \"version\": 0,\n            \"reinit_date\": 0,\n            \"priority\": 0,\n            \"expire_at\": 0\n          },\n          \"version\": -1,\n          \"signature\": \"qORMhem9RyG7wnNYF822YL3EXwEoTO82h2TarFbjd0jikMIGizAdir1JyxSfyKkhHdFKGcLMeoPb2dfMIvQwAA==\"\n        },\n        {\n          \"@type\": \"dht.node\",\n          \"id\": {\n            \"@type\": \"pub.ed25519\",\n            \"key\": \"CU9ytJok8WBnpl29T740gfC/h69kgvQJp7FJMq/N60g=\"\n          },\n          \"addr_list\": {\n            \"@type\": \"adnl.addressList\",\n            \"addrs\": [\n              {\n                \"@type\": \"adnl.address.udp\",\n                \"ip\": 391653587,\n                \"port\": 15895\n              }\n            ],\n            \"version\": 0,\n            \"reinit_date\": 0,\n            \"priority\": 0,\n            \"expire_at\": 0\n          },\n          \"version\": -1,\n          \"signature\": \"DKyGF2nPRxmerpIHxE5FN1Lod3zvJu728NP0iYc1hpNyPvl5epu+7amjimLy1VdzNqFzTJAoJ/gqPPMkXS/kDw==\"\n        },\n        {\n          \"@type\": \"dht.node\",\n          \"id\": {\n            \"@type\": \"pub.ed25519\",\n            \"key\": \"MJr8xja0xpu9DoisFXBrkNHNx1XozR7HHw9fJdSyEdo=\"\n          },\n          \"addr_list\": {\n            \"@type\": \"adnl.addressList\",\n            \"addrs\": [\n              {\n                \"@type\": \"adnl.address.udp\",\n                \"ip\": -2018147130,\n                \"port\": 6302\n              }\n            ],\n            \"version\": 0,\n            \"reinit_date\": 0,\n            \"priority\": 0,\n            \"expire_at\": 0\n          },\n          \"version\": -1,\n          \"signature\": \"XcR5JaWcf4QMdI8urLSc1zwv5+9nCuItSE1EDa0dSwYF15R/BtJoKU5YHA4/T8SiO18aVPQk2SL1pbhevuMrAQ==\"\n        },\n        {\n          \"@type\": \"dht.node\",\n          \"id\": {\n            \"@type\": \"pub.ed25519\",\n            \"key\": \"Fhldu4zlnb20/TUj9TXElZkiEmbndIiE/DXrbGKu+0c=\"\n          },\n          \"addr_list\": {\n            \"@type\": \"adnl.addressList\",\n            \"addrs\": [\n              {\n                \"@type\": \"adnl.address.udp\",\n                \"ip\": -2018147075,\n                \"port\": 6302\n              }\n            ],\n            \"version\": 0,\n            \"reinit_date\": 0,\n            \"priority\": 0,\n            \"expire_at\": 0\n          },\n          \"version\": -1,\n          \"signature\": \"nUGB77UAkd2+ZAL5PgInb3TvtuLLXJEJ2icjAUKLv4qIGB3c/O9k/v0NKwSzhsMP0ljeTGbcIoMDw24qf3goCg==\"\n        },\n\t\t{\n\t\t  \"@type\": \"dht.node\",\n\t\t  \"id\": {\n\t\t    \"@type\": \"pub.ed25519\",\n\t\t    \"key\": \"gzUNJnBJhdpooYCE8juKZo2y4tYDIQfoCvFm0yBr7y0=\"\n\t\t  },\n\t\t  \"addr_list\": {\n\t\t    \"@type\": \"adnl.addressList\",\n\t\t    \"addrs\": [\n\t\t      {\n\t\t        \"@type\": \"adnl.address.udp\",\n\t\t        \"ip\": 89013260,\n\t\t        \"port\": 54390\n\t\t      }\n\t\t    ],\n\t\t    \"version\": 0,\n\t\t    \"reinit_date\": 0,\n\t\t    \"priority\": 0,\n\t\t    \"expire_at\": 0\n\t\t  },\n\t\t  \"version\": -1,\n\t\t  \"signature\": \"LCrCkjmkMn6AZHW2I+oRm1gHK7CyBPfcb6LwsltskCPpNECyBl1GxZTX45n0xZtLgyBd/bOqMPBfawpQwWt1BA==\"\n\t\t},\n\t\t{\n\t\t  \"@type\": \"dht.node\",\n\t\t  \"id\": {\n\t\t    \"@type\": \"pub.ed25519\",\n\t\t    \"key\": \"jXiLaOQz1HPayilWgBWhV9xJhUIqfU95t+KFKQPIpXg=\"\n\t\t  },\n\t\t  \"addr_list\": {\n\t\t    \"@type\": \"adnl.addressList\",\n\t\t    \"addrs\": [\n\t\t      {\n\t\t        \"@type\": \"adnl.address.udp\",\n\t\t        \"ip\": 94452896,\n\t\t        \"port\": 12485\n\t\t      }\n\t\t    ],\n\t\t    \"version\": 0,\n\t\t    \"reinit_date\": 0,\n\t\t    \"priority\": 0,\n\t\t    \"expire_at\": 0\n\t\t  },\n\t\t  \"version\": -1,\n\t\t  \"signature\": \"fKSZh9nXMx+YblkQXn3I/bndTD0JZ1yAtK/tXPIGruNglpe9sWMXR+8fy3YogPhLJMdjNiMom1ya+tWG7qvBAQ==\"\n\t\t},\n\t\t{\n\t\t  \"@type\": \"dht.node\",\n\t\t  \"id\": {\n\t\t    \"@type\": \"pub.ed25519\",\n\t\t    \"key\": \"vhFPq+tgjJi+4ZbEOHBo4qjpqhBdSCzNZBdgXyj3NK8=\"\n\t\t  },\n\t\t  \"addr_list\": {\n\t\t    \"@type\": \"adnl.addressList\",\n\t\t    \"addrs\": [\n\t\t      {\n\t\t        \"@type\": \"adnl.address.udp\",\n\t\t        \"ip\": 85383775,\n\t\t        \"port\": 36752\n\t\t      }\n\t\t    ],\n\t\t    \"version\": 0,\n\t\t    \"reinit_date\": 0,\n\t\t    \"priority\": 0,\n\t\t    \"expire_at\": 0\n\t\t  },\n\t\t  \"version\": -1,\n\t\t  \"signature\": \"kBwAIgJVkz8AIOGoZcZcXWgNmWq8MSBWB2VhS8Pd+f9LLPIeeFxlDTtwAe8Kj7NkHDSDC+bPXLGQZvPv0+wHCg==\"\n\t\t},\n\t\t{\n\t\t  \"@type\": \"dht.node\",\n\t\t  \"id\": {\n\t\t    \"@type\": \"pub.ed25519\",\n\t\t    \"key\": \"sbsuMcdyYFSRQ0sG86/n+ZQ5FX3zOWm1aCVuHwXdgs0=\"\n\t\t  },\n\t\t  \"addr_list\": {\n\t\t    \"@type\": \"adnl.addressList\",\n\t\t    \"addrs\": [\n\t\t      {\n\t\t        \"@type\": \"adnl.address.udp\",\n\t\t        \"ip\": 759132846,\n\t\t        \"port\": 50187\n\t\t      }\n\t\t    ],\n\t\t    \"version\": 0,\n\t\t    \"reinit_date\": 0,\n\t\t    \"priority\": 0,\n\t\t    \"expire_at\": 0\n\t\t  },\n\t\t  \"version\": -1,\n\t\t  \"signature\": \"9FJwbFw3IECRFkb9bA54YaexjDmlNBArimWkh+BvW88mjm3K2i5V2uaBPS3GubvXWOwdHLE2lzQBobgZRGMyCg==\"\n\t\t},\n\t\t{\n\t\t  \"@type\": \"dht.node\",\n\t\t  \"id\": {\n\t\t    \"@type\": \"pub.ed25519\",\n\t\t    \"key\": \"aeMgdMdkkbkfAS4+n4BEGgtqhkf2/zXrVWWECOJ/h3A=\"\n\t\t  },\n\t\t  \"addr_list\": {\n\t\t    \"@type\": \"adnl.addressList\",\n\t\t    \"addrs\": [\n\t\t      {\n\t\t        \"@type\": \"adnl.address.udp\",\n\t\t        \"ip\": -1481887565,\n\t\t        \"port\": 25975\n\t\t      }\n\t\t    ],\n\t\t    \"version\": 0,\n\t\t    \"reinit_date\": 0,\n\t\t    \"priority\": 0,\n\t\t    \"expire_at\": 0\n\t\t  },\n\t\t  \"version\": -1,\n\t\t  \"signature\": \"z5ogivZWpQchkS4UR4wB7i2pfOpMwX9Nd/USxinL9LvJPa+/Aw3F1AytR9FX0BqDftxIYvblBYAB5JyAmlj+AA==\"\n\t\t},\n\t\t{\n\t\t  \"@type\": \"dht.node\",\n\t\t  \"id\": {\n\t\t    \"@type\": \"pub.ed25519\",\n\t\t    \"key\": \"rNzhnAlmtRn9rTzW6o2568S6bbOXly7ddO1olDws5wM=\"\n\t\t  },\n\t\t  \"addr_list\": {\n\t\t    \"@type\": \"adnl.addressList\",\n\t\t    \"addrs\": [\n\t\t      {\n\t\t        \"@type\": \"adnl.address.udp\",\n\t\t        \"ip\": -2134428422,\n\t\t        \"port\": 45943\n\t\t      }\n\t\t    ],\n\t\t    \"version\": 0,\n\t\t    \"reinit_date\": 0,\n\t\t    \"priority\": 0,\n\t\t    \"expire_at\": 0\n\t\t  },\n\t\t  \"version\": -1,\n\t\t  \"signature\": \"sn/+ZfkfCSw2bHnEnv04AXX/Goyw7+StHBPQOdPr+wvdbaJ761D7hyiMNdQGbuZv2Ep2cXJpiwylnZItrwdUDg==\"\n\t\t}\n      ]\n    }\n  },\n  \"liteservers\": [\n  \t{\n    \t\"ip\": 2886860802,\n      \"port\": 43679,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"NODEAPIKEY\"\n      }\n    },\n    {\n      \"ip\": 84478511,\n      \"port\": 19949,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"n4VDnSCUuSpjnCyUk9e3QOOd6o0ItSWYbTnW3Wnn8wk=\"\n      }\n    },\n    {\n      \"ip\": 84478479,\n      \"port\": 48014,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"3XO67K/qi+gu3T9v8G2hx1yNmWZhccL3O7SoosFo8G0=\"\n      }\n    },\n    {\n      \"ip\": -2018135749,\n      \"port\": 53312,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"aF91CuUHuuOv9rm2W5+O/4h38M3sRm40DtSdRxQhmtQ=\"\n      }\n    },\n    {\n      \"ip\": -2018145068,\n      \"port\": 13206,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"K0t3+IWLOXHYMvMcrGZDPs+pn58a17LFbnXoQkKc2xw=\"\n      }\n    },\n    {\n      \"ip\": -2018145059,\n      \"port\": 46995,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"wQE0MVhXNWUXpWiW5Bk8cAirIh5NNG3cZM1/fSVKIts=\"\n      }\n    },\n    {\n      \"ip\": 1091931625,\n      \"port\": 30131,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"wrQaeIFispPfHndEBc0s0fx7GSp8UFFvebnytQQfc6A=\"\n      }\n    },\n    {\n      \"ip\": 1091931590,\n      \"port\": 47160,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"vOe1Xqt/1AQ2Z56Pr+1Rnw+f0NmAA7rNCZFIHeChB7o=\"\n      }\n    },\n    {\n      \"ip\": 1091931623,\n      \"port\": 17728,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"BYSVpL7aPk0kU5CtlsIae/8mf2B/NrBi7DKmepcjX6Q=\"\n      }\n    },\n    {\n      \"ip\": 1091931589,\n      \"port\": 13570,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"iVQH71cymoNgnrhOT35tl/Y7k86X5iVuu5Vf68KmifQ=\"\n      }\n    },\n    {\n      \"ip\": -1539021362,\n      \"port\": 52995,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"QnGFe9kihW+TKacEvvxFWqVXeRxCB6ChjjhNTrL7+/k=\"\n      }\n    },\n    {\n      \"ip\": -1539021936,\n      \"port\": 20334,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"gyLh12v4hBRtyBygvvbbO2HqEtgl+ojpeRJKt4gkMq0=\"\n      }\n    },\n    {\n      \"ip\": -1136338705,\n      \"port\": 19925,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"ucho5bEkufbKN1JR1BGHpkObq602whJn3Q3UwhtgSo4=\"\n      }\n    },\n    {\n      \"ip\": 868465979,\n      \"port\": 19434,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"J5CwYXuCZWVPgiFPW+NY2roBwDWpRRtANHSTYTRSVtI=\"\n      }\n    },\n    {\n      \"ip\": 868466060,\n      \"port\": 23067,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"vX8d0i31zB0prVuZK8fBkt37WnEpuEHrb7PElk4FJ1o=\"\n      }\n    },\n    {\n      \"ip\": -2018147130,\n      \"port\": 53560,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"NlYhh/xf4uQpE+7EzgorPHqIaqildznrpajJTRRH2HU=\"\n      }\n    },\n    {\n      \"ip\": -2018147075,\n      \"port\": 46529,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"jLO6yoooqUQqg4/1QXflpv2qGCoXmzZCR+bOsYJ2hxw=\"\n      }\n    },\n    {\n      \"ip\": 908566172,\n      \"port\": 51565,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"TDg+ILLlRugRB4Kpg3wXjPcoc+d+Eeb7kuVe16CS9z8=\"\n      }\n    },\n    {\n        \"ip\": -1185526007,\n        \"port\": 4701,\n        \"id\": {\n            \"@type\": \"pub.ed25519\",\n            \"key\": \"G6cNAr6wXBBByWDzddEWP5xMFsAcp6y13fXA8Q7EJlM=\"\n        }\n    }\n  ],\n  \"validator\": {\n    \"@type\": \"validator.config.global\",\n    \"zero_state\": {\n      \"workchain\": -1,\n      \"shard\": -9223372036854775808,\n      \"seqno\": 0,\n      \"root_hash\": \"F6OpKZKqvqeFp6CQmFomXNMfMj2EnaUSOXN+Mh+wVWk=\",\n      \"file_hash\": \"XplPz01CXAps5qeSWUtxcyBfdAo5zVb1N979KLSKD24=\"\n    },\n    \"init_block\": {\n      \"root_hash\": \"YRkrcmZMvLBvjanwKCyL3w4oceGPtFfgx8ym1QKCK/4=\",\n      \"seqno\": 27747086,\n      \"file_hash\": \"N42xzPnJjDlE3hxPXOb+pNzXomgRtpX5AZzMPnIA41s=\",\n      \"workchain\": -1,\n      \"shard\": -9223372036854775808\n    },\n    \"hardforks\": [\n      {\n        \"file_hash\": \"t/9VBPODF7Zdh4nsnA49dprO69nQNMqYL+zk5bCjV/8=\",\n        \"seqno\": 8536841,\n        \"root_hash\": \"08Kpc9XxrMKC6BF/FeNHPS3MEL1/Vi/fQU/C9ELUrkc=\",\n        \"workchain\": -1,\n        \"shard\": -9223372036854775808\n      }\n    ]\n  }\n}"
  },
  {
    "path": "config/api-config/mainnet-config-onetoone.json",
    "content": "{\n  \"@type\": \"config.global\",\n  \"dht\": {\n    \"@type\": \"dht.config.global\",\n    \"k\": 6,\n    \"a\": 3,\n    \"static_nodes\": {\n      \"@type\": \"dht.nodes\",\n      \"nodes\": [\n        {\n            \"@type\": \"dht.node\",\n            \"id\": {\n                \"@type\": \"pub.ed25519\",\n                \"key\": \"6PGkPQSbyFp12esf1NqmDOaLoFA8i9+Mp5+cAx5wtTU=\"\n            },\n            \"addr_list\": {\n                \"@type\": \"adnl.addressList\",\n                \"addrs\": [\n                    {\n                        \"@type\": \"adnl.address.udp\",\n                        \"ip\": -1185526007,\n                        \"port\": 22096\n                    }\n                ],\n                \"version\": 0,\n                \"reinit_date\": 0,\n                \"priority\": 0,\n                \"expire_at\": 0\n            },\n            \"version\": -1,\n            \"signature\": \"L4N1+dzXLlkmT5iPnvsmsixzXU0L6kPKApqMdcrGP5d9ssMhn69SzHFK+yIzvG6zQ9oRb4TnqPBaKShjjj2OBg==\"\n        },\n        {\n          \"@type\": \"dht.node\",\n          \"id\": {\n            \"@type\": \"pub.ed25519\",\n            \"key\": \"4R0C/zU56k+x2HGMsLWjX2rP/SpoTPIHSSAmidGlsb8=\"\n          },\n          \"addr_list\": {\n            \"@type\": \"adnl.addressList\",\n            \"addrs\": [\n              {\n                \"@type\": \"adnl.address.udp\",\n                \"ip\": -1952265919,\n                \"port\": 14395\n              }\n            ],\n            \"version\": 0,\n            \"reinit_date\": 0,\n            \"priority\": 0,\n            \"expire_at\": 0\n          },\n          \"version\": -1,\n          \"signature\": \"0uwWyCFn2KjPnnlbSFYXLZdwIakaSgI9WyRo87J3iCGwb5TvJSztgA224A9kNAXeutOrXMIPYv1b8Zt8ImsrCg==\"\n        },\n        {\n          \"@type\": \"dht.node\",\n          \"id\": {\n            \"@type\": \"pub.ed25519\",\n            \"key\": \"/YDNd+IwRUgL0mq21oC0L3RxrS8gTu0nciSPUrhqR78=\"\n          },\n          \"addr_list\": {\n            \"@type\": \"adnl.addressList\",\n            \"addrs\": [\n              {\n                \"@type\": \"adnl.address.udp\",\n                \"ip\": -1402455171,\n                \"port\": 14432\n              }\n            ],\n            \"version\": 0,\n            \"reinit_date\": 0,\n            \"priority\": 0,\n            \"expire_at\": 0\n          },\n          \"version\": -1,\n          \"signature\": \"6+oVk6HDtIFbwYi9khCc8B+fTFceBUo1PWZDVTkb4l84tscvr5QpzAkdK7sS5xGzxM7V7YYQ6gUQPrsP9xcLAw==\"\n        },\n        {\n          \"@type\": \"dht.node\",\n          \"id\": {\n            \"@type\": \"pub.ed25519\",\n            \"key\": \"DA0H568bb+LoO2LGY80PgPee59jTPCqqSJJzt1SH+KE=\"\n          },\n          \"addr_list\": {\n            \"@type\": \"adnl.addressList\",\n            \"addrs\": [\n              {\n                \"@type\": \"adnl.address.udp\",\n                \"ip\": -1402397332,\n                \"port\": 14583\n              }\n            ],\n            \"version\": 0,\n            \"reinit_date\": 0,\n            \"priority\": 0,\n            \"expire_at\": 0\n          },\n          \"version\": -1,\n          \"signature\": \"cL79gDTrixhaM9AlkCdZWccCts7ieQYQBmPxb/R7d7zHw3bEHL8Le96CFJoB1KHu8C85iDpFK8qlrGl1Yt/ZDg==\"\n        },\n        {\n          \"@type\": \"dht.node\",\n          \"id\": {\n            \"@type\": \"pub.ed25519\",\n            \"key\": \"fZnkoIAxrTd4xeBgVpZFRm5SvVvSx7eN3Vbe8c83YMk=\"\n          },\n          \"addr_list\": {\n            \"@type\": \"adnl.addressList\",\n            \"addrs\": [\n              {\n                \"@type\": \"adnl.address.udp\",\n                \"ip\": 1091897261,\n                \"port\": 15813\n              }\n            ],\n            \"version\": 0,\n            \"reinit_date\": 0,\n            \"priority\": 0,\n            \"expire_at\": 0\n          },\n          \"version\": -1,\n          \"signature\": \"cmaMrV/9wuaHOOyXYjoxBnckJktJqrQZ2i+YaY3ehIyiL3LkW81OQ91vm8zzsx1kwwadGZNzgq4hI4PCB/U5Dw==\"\n        },\n        {\n          \"@type\": \"dht.node\",\n          \"id\": {\n            \"@type\": \"pub.ed25519\",\n            \"key\": \"zDBLsKjns4bBqQokzY0wOzC2vwbOeiE1J7aOjfCp5mg=\"\n          },\n          \"addr_list\": {\n            \"@type\": \"adnl.addressList\",\n            \"addrs\": [\n              {\n                \"@type\": \"adnl.address.udp\",\n                \"ip\": -1573440928,\n                \"port\": 12821\n              }\n            ],\n            \"version\": 0,\n            \"reinit_date\": 0,\n            \"priority\": 0,\n            \"expire_at\": 0\n          },\n          \"version\": -1,\n          \"signature\": \"qORMhem9RyG7wnNYF822YL3EXwEoTO82h2TarFbjd0jikMIGizAdir1JyxSfyKkhHdFKGcLMeoPb2dfMIvQwAA==\"\n        },\n        {\n          \"@type\": \"dht.node\",\n          \"id\": {\n            \"@type\": \"pub.ed25519\",\n            \"key\": \"CU9ytJok8WBnpl29T740gfC/h69kgvQJp7FJMq/N60g=\"\n          },\n          \"addr_list\": {\n            \"@type\": \"adnl.addressList\",\n            \"addrs\": [\n              {\n                \"@type\": \"adnl.address.udp\",\n                \"ip\": 391653587,\n                \"port\": 15895\n              }\n            ],\n            \"version\": 0,\n            \"reinit_date\": 0,\n            \"priority\": 0,\n            \"expire_at\": 0\n          },\n          \"version\": -1,\n          \"signature\": \"DKyGF2nPRxmerpIHxE5FN1Lod3zvJu728NP0iYc1hpNyPvl5epu+7amjimLy1VdzNqFzTJAoJ/gqPPMkXS/kDw==\"\n        },\n        {\n          \"@type\": \"dht.node\",\n          \"id\": {\n            \"@type\": \"pub.ed25519\",\n            \"key\": \"MJr8xja0xpu9DoisFXBrkNHNx1XozR7HHw9fJdSyEdo=\"\n          },\n          \"addr_list\": {\n            \"@type\": \"adnl.addressList\",\n            \"addrs\": [\n              {\n                \"@type\": \"adnl.address.udp\",\n                \"ip\": -2018147130,\n                \"port\": 6302\n              }\n            ],\n            \"version\": 0,\n            \"reinit_date\": 0,\n            \"priority\": 0,\n            \"expire_at\": 0\n          },\n          \"version\": -1,\n          \"signature\": \"XcR5JaWcf4QMdI8urLSc1zwv5+9nCuItSE1EDa0dSwYF15R/BtJoKU5YHA4/T8SiO18aVPQk2SL1pbhevuMrAQ==\"\n        },\n        {\n          \"@type\": \"dht.node\",\n          \"id\": {\n            \"@type\": \"pub.ed25519\",\n            \"key\": \"Fhldu4zlnb20/TUj9TXElZkiEmbndIiE/DXrbGKu+0c=\"\n          },\n          \"addr_list\": {\n            \"@type\": \"adnl.addressList\",\n            \"addrs\": [\n              {\n                \"@type\": \"adnl.address.udp\",\n                \"ip\": -2018147075,\n                \"port\": 6302\n              }\n            ],\n            \"version\": 0,\n            \"reinit_date\": 0,\n            \"priority\": 0,\n            \"expire_at\": 0\n          },\n          \"version\": -1,\n          \"signature\": \"nUGB77UAkd2+ZAL5PgInb3TvtuLLXJEJ2icjAUKLv4qIGB3c/O9k/v0NKwSzhsMP0ljeTGbcIoMDw24qf3goCg==\"\n        },\n\t\t{\n\t\t  \"@type\": \"dht.node\",\n\t\t  \"id\": {\n\t\t    \"@type\": \"pub.ed25519\",\n\t\t    \"key\": \"gzUNJnBJhdpooYCE8juKZo2y4tYDIQfoCvFm0yBr7y0=\"\n\t\t  },\n\t\t  \"addr_list\": {\n\t\t    \"@type\": \"adnl.addressList\",\n\t\t    \"addrs\": [\n\t\t      {\n\t\t        \"@type\": \"adnl.address.udp\",\n\t\t        \"ip\": 89013260,\n\t\t        \"port\": 54390\n\t\t      }\n\t\t    ],\n\t\t    \"version\": 0,\n\t\t    \"reinit_date\": 0,\n\t\t    \"priority\": 0,\n\t\t    \"expire_at\": 0\n\t\t  },\n\t\t  \"version\": -1,\n\t\t  \"signature\": \"LCrCkjmkMn6AZHW2I+oRm1gHK7CyBPfcb6LwsltskCPpNECyBl1GxZTX45n0xZtLgyBd/bOqMPBfawpQwWt1BA==\"\n\t\t},\n\t\t{\n\t\t  \"@type\": \"dht.node\",\n\t\t  \"id\": {\n\t\t    \"@type\": \"pub.ed25519\",\n\t\t    \"key\": \"jXiLaOQz1HPayilWgBWhV9xJhUIqfU95t+KFKQPIpXg=\"\n\t\t  },\n\t\t  \"addr_list\": {\n\t\t    \"@type\": \"adnl.addressList\",\n\t\t    \"addrs\": [\n\t\t      {\n\t\t        \"@type\": \"adnl.address.udp\",\n\t\t        \"ip\": 94452896,\n\t\t        \"port\": 12485\n\t\t      }\n\t\t    ],\n\t\t    \"version\": 0,\n\t\t    \"reinit_date\": 0,\n\t\t    \"priority\": 0,\n\t\t    \"expire_at\": 0\n\t\t  },\n\t\t  \"version\": -1,\n\t\t  \"signature\": \"fKSZh9nXMx+YblkQXn3I/bndTD0JZ1yAtK/tXPIGruNglpe9sWMXR+8fy3YogPhLJMdjNiMom1ya+tWG7qvBAQ==\"\n\t\t},\n\t\t{\n\t\t  \"@type\": \"dht.node\",\n\t\t  \"id\": {\n\t\t    \"@type\": \"pub.ed25519\",\n\t\t    \"key\": \"vhFPq+tgjJi+4ZbEOHBo4qjpqhBdSCzNZBdgXyj3NK8=\"\n\t\t  },\n\t\t  \"addr_list\": {\n\t\t    \"@type\": \"adnl.addressList\",\n\t\t    \"addrs\": [\n\t\t      {\n\t\t        \"@type\": \"adnl.address.udp\",\n\t\t        \"ip\": 85383775,\n\t\t        \"port\": 36752\n\t\t      }\n\t\t    ],\n\t\t    \"version\": 0,\n\t\t    \"reinit_date\": 0,\n\t\t    \"priority\": 0,\n\t\t    \"expire_at\": 0\n\t\t  },\n\t\t  \"version\": -1,\n\t\t  \"signature\": \"kBwAIgJVkz8AIOGoZcZcXWgNmWq8MSBWB2VhS8Pd+f9LLPIeeFxlDTtwAe8Kj7NkHDSDC+bPXLGQZvPv0+wHCg==\"\n\t\t},\n\t\t{\n\t\t  \"@type\": \"dht.node\",\n\t\t  \"id\": {\n\t\t    \"@type\": \"pub.ed25519\",\n\t\t    \"key\": \"sbsuMcdyYFSRQ0sG86/n+ZQ5FX3zOWm1aCVuHwXdgs0=\"\n\t\t  },\n\t\t  \"addr_list\": {\n\t\t    \"@type\": \"adnl.addressList\",\n\t\t    \"addrs\": [\n\t\t      {\n\t\t        \"@type\": \"adnl.address.udp\",\n\t\t        \"ip\": 759132846,\n\t\t        \"port\": 50187\n\t\t      }\n\t\t    ],\n\t\t    \"version\": 0,\n\t\t    \"reinit_date\": 0,\n\t\t    \"priority\": 0,\n\t\t    \"expire_at\": 0\n\t\t  },\n\t\t  \"version\": -1,\n\t\t  \"signature\": \"9FJwbFw3IECRFkb9bA54YaexjDmlNBArimWkh+BvW88mjm3K2i5V2uaBPS3GubvXWOwdHLE2lzQBobgZRGMyCg==\"\n\t\t},\n\t\t{\n\t\t  \"@type\": \"dht.node\",\n\t\t  \"id\": {\n\t\t    \"@type\": \"pub.ed25519\",\n\t\t    \"key\": \"aeMgdMdkkbkfAS4+n4BEGgtqhkf2/zXrVWWECOJ/h3A=\"\n\t\t  },\n\t\t  \"addr_list\": {\n\t\t    \"@type\": \"adnl.addressList\",\n\t\t    \"addrs\": [\n\t\t      {\n\t\t        \"@type\": \"adnl.address.udp\",\n\t\t        \"ip\": -1481887565,\n\t\t        \"port\": 25975\n\t\t      }\n\t\t    ],\n\t\t    \"version\": 0,\n\t\t    \"reinit_date\": 0,\n\t\t    \"priority\": 0,\n\t\t    \"expire_at\": 0\n\t\t  },\n\t\t  \"version\": -1,\n\t\t  \"signature\": \"z5ogivZWpQchkS4UR4wB7i2pfOpMwX9Nd/USxinL9LvJPa+/Aw3F1AytR9FX0BqDftxIYvblBYAB5JyAmlj+AA==\"\n\t\t},\n\t\t{\n\t\t  \"@type\": \"dht.node\",\n\t\t  \"id\": {\n\t\t    \"@type\": \"pub.ed25519\",\n\t\t    \"key\": \"rNzhnAlmtRn9rTzW6o2568S6bbOXly7ddO1olDws5wM=\"\n\t\t  },\n\t\t  \"addr_list\": {\n\t\t    \"@type\": \"adnl.addressList\",\n\t\t    \"addrs\": [\n\t\t      {\n\t\t        \"@type\": \"adnl.address.udp\",\n\t\t        \"ip\": -2134428422,\n\t\t        \"port\": 45943\n\t\t      }\n\t\t    ],\n\t\t    \"version\": 0,\n\t\t    \"reinit_date\": 0,\n\t\t    \"priority\": 0,\n\t\t    \"expire_at\": 0\n\t\t  },\n\t\t  \"version\": -1,\n\t\t  \"signature\": \"sn/+ZfkfCSw2bHnEnv04AXX/Goyw7+StHBPQOdPr+wvdbaJ761D7hyiMNdQGbuZv2Ep2cXJpiwylnZItrwdUDg==\"\n\t\t}\n      ]\n    }\n  },\n  \"liteservers\": [\n  \t{\n    \t\"ip\": 2886860802,\n      \"port\": 43679,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"NODEAPIKEY\"\n      }\n    }\n  ],\n  \"validator\": {\n    \"@type\": \"validator.config.global\",\n    \"zero_state\": {\n      \"workchain\": -1,\n      \"shard\": -9223372036854775808,\n      \"seqno\": 0,\n      \"root_hash\": \"F6OpKZKqvqeFp6CQmFomXNMfMj2EnaUSOXN+Mh+wVWk=\",\n      \"file_hash\": \"XplPz01CXAps5qeSWUtxcyBfdAo5zVb1N979KLSKD24=\"\n    },\n    \"init_block\": {\n      \"root_hash\": \"YRkrcmZMvLBvjanwKCyL3w4oceGPtFfgx8ym1QKCK/4=\",\n      \"seqno\": 27747086,\n      \"file_hash\": \"N42xzPnJjDlE3hxPXOb+pNzXomgRtpX5AZzMPnIA41s=\",\n      \"workchain\": -1,\n      \"shard\": -9223372036854775808\n    },\n    \"hardforks\": [\n      {\n        \"file_hash\": \"t/9VBPODF7Zdh4nsnA49dprO69nQNMqYL+zk5bCjV/8=\",\n        \"seqno\": 8536841,\n        \"root_hash\": \"08Kpc9XxrMKC6BF/FeNHPS3MEL1/Vi/fQU/C9ELUrkc=\",\n        \"workchain\": -1,\n        \"shard\": -9223372036854775808\n      }\n    ]\n  }\n}"
  },
  {
    "path": "config/api-config/testnet-config-onetomany.json",
    "content": "{\n\t\"liteservers\": [\n\t\t{\n\t\t\t\"ip\": 2886860802,\n\t\t\t\"port\": 43679,\n\t\t\t\"id\": {\n\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\"key\": \"NODEAPIKEY\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"ip\": 1592601963,\n\t\t\t\"port\": 13833,\n\t\t\t\"id\": {\n\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\"key\": \"QpVqQiv1u3nCHuBR3cg3fT6NqaFLlnLGbEgtBRukDpU=\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"ip\": 1097649206,\n\t\t\t\"port\": 29296,\n\t\t\t\"id\": {\n\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\"key\": \"p2tSiaeSqX978BxE5zLxuTQM06WVDErf5/15QToxMYA=\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"ip\": 1162057690,\n\t\t\t\"port\": 35939,\n\t\t\t\"id\": {\n\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\"key\": \"97y55AkdzXWyyVuOAn+WX6p66XTNs2hEGG0jFUOkCIo=\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"ip\": -1304477830,\n\t\t\t\"port\": 20700,\n\t\t\t\"id\": {\n\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\"key\": \"dGLlRRai3K9FGkI0dhABmFHMv+92QEVrvmTrFf5fbqA=\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"ip\": 1959453117,\n\t\t\t\"port\": 20700,\n\t\t\t\"id\": {\n\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\"key\": \"24RL7iVI20qcG+j//URfd/XFeEG9qtezW2wqaYQgVKw=\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"ip\": -809760973,\n\t\t\t\"port\": 20700,\n\t\t\t\"id\": {\n\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\"key\": \"vunMV7K35yPlTQPx/Fqk6s+4/h5lpcbP+ao0Cy3M2hw=\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t    \"ip\": -1177439932,\n\t\t    \"port\": 4695,\n\t\t    \"id\": {\n\t\t        \"@type\": \"pub.ed25519\",\n\t\t        \"key\": \"cZpMFqy6n0Lsu8x/z2Jq0wh/OdM1WAVJJKSb2CvDECQ=\"\n\t\t    }\n\t\t},\n\t\t{\n\t\t\t\"ip\": -809760945,\n\t\t\t\"port\": 41718,\n\t\t\t\"id\": {\n\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\"key\": \"jA1X1pNB+ihJ4tziHTD8KxKWdQESRXjDb79TgvFFOZg=\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"ip\": 1162057633,\n\t\t\t\"port\": 59672,\n\t\t\t\"id\": {\n\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\"key\": \"WqVn3UcFKCLaGCVp1FOZ09duh13tRqUR+rTaA9Q9sW0=\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"ip\": -2018162320,\n\t\t\t\"port\": 22277,\n\t\t\t\"id\": {\n\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\"key\": \"1runGS/h6Pel2LRC46suIEKaOtAYWaDGA+cXeI4HXGo=\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"ip\": -2018162357,\n\t\t\t\"port\": 47938,\n\t\t\t\"id\": {\n\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\"key\": \"tmnh97x53cR/oejeISkTxkTyWznvIwUQrd2nZFpkbWE=\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"ip\": 1091914382,\n\t\t\t\"port\": 21335,\n\t\t\t\"id\": {\n\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\"key\": \"O8PmvAwKM7n5JAQaW+q8NWKiip89eh1u9FuJZWrGvgs=\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"ip\": 1091914380,\n\t\t\t\"port\": 46427,\n\t\t\t\"id\": {\n\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\"key\": \"JhXt7H1dZTgxQTIyGiYV4f9VUARuDxFl/1kVBjLSMB8=\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"ip\": 1097633201,\n\t\t\t\"port\": 17439,\n\t\t\t\"id\": {\n\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\"key\": \"0MIADpLH4VQn+INHfm0FxGiuZZAA8JfTujRqQugkkA8=\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"ip\": 1091956407,\n\t\t\t\"port\": 16351,\n\t\t\t\"id\": {\n\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\"key\": \"Mf/JGvcWAvcrN3oheze8RF/ps6p7oL6ifrIzFmGQFQ8=\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"ip\": -1185526389,\n\t\t\t\"port\": 64842,\n\t\t\t\"id\": {\n\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\"key\": \"cmpsvK5tBuW029x0WnLHV4NAzf5F0wxEagtbODtRvjI=\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t    \"ip\": -1185526601,\n\t\t    \"port\": 14321,\n\t\t    \"id\": {\n\t\t        \"@type\": \"pub.ed25519\",\n\t\t        \"key\": \"5AF8Wzaf+Kz9+6iPJ1JYdTwzA5n5j2hKaHRy6KAX1Sk=\"\n\t\t    }\n\t\t}\n\t],\n\t\"dht\": {\n\t\t\"a\": 3,\n\t\t\"k\": 3,\n\t\t\"static_nodes\": {\n\t\t\t\"nodes\": [\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"K2AWu8leN2RjYmhMpYAaGX/F6nGVk9oZw9c09RX3yyc=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": 1592601963,\n\t\t\t\t\t\t\t\t\"port\": 38723\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"21g16jxnqbb2ENAijrZFccHqLQcmmpkAI1HA46DaPvnVYvMkATFNEyHTy2R1T1jgU5M7CCLGJN+MxhwZfl/ZDA==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"fVIJzD9ATMilaPd847eFs6PtGSB67C+D9b4R+nf1+/s=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": 1097649206,\n\t\t\t\t\t\t\t\t\"port\": 29081\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"wH0HEVT6yAfZZAoD5bF6J3EZWdSFwBGl1ZpOfhxZ0Bp2u52tv8OzjeH8tlZ+geMLTG50Csn5nxSKP1tswTWwBg==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"gu+woR+x7PoRmaMqAP7oeOjK2V4U0NU8ofdacWZ34aY=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": 1162057690,\n\t\t\t\t\t\t\t\t\"port\": 41578\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"0PwDLXpN3IbRQuOTLkZBjkbT6+IkeUcvlhWrUY9us3IfSehmCfQjScR9mkVYsQ6cQHF+JeaFmqzV4GAiUcgjAg==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"WC4BO1eZ916FnLBSKmt07Pn5NP4D3/1wary1VjaCLaY=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": -1304477830,\n\t\t\t\t\t\t\t\t\"port\": 9670\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"cvpzkGeuEuKV+d92qIVkln9ngm8qeDnmYtK5rq8uSet0392hAZcIv2IniDzTw0rN42NaOHL9A4KEelwKu1N2Ag==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"nC8dcxV+EV2i0ARvub94IFJKKZUYACfY4xFj1NaG7Pw=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": 1959453117,\n\t\t\t\t\t\t\t\t\"port\": 63625\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"AHF6joNvQhyFFE0itV4OMA9n3Q8CEHVKapCLqazP7QJ4arsn4pdVkRYiGFEyQkngx+cm8izU4gB0JIaxF6PiBg==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"dqsRZLzTg/P7uxUlQpgl4VyTBNYBRMc4js3mnRiolBk=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": -809760973,\n\t\t\t\t\t\t\t\t\"port\": 40398\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"mJxLrAv5RamN5B9mDz6MhQwFjF92D3drJ5efOSZryDaazil0AR4bRHh4vxzZlYiPhi/X/NyG6WwNvKBz+1ntBw==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"+U2zJXltAQVbgOepQdkam7sJAAdDboxlwvkTG4Oih04=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": 1959448750,\n\t\t\t\t\t\t\t\t\"port\": 60982\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"sVdFJxk2SG/Wjh35x4yKnuZzzXyQgmuK/FLy0wge3qGHCs6Wg5HhhxU1WnpgXPLIGXfjVKN7Ud0L1APlgVmuDg==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t    \"@type\": \"dht.node\",\n\t\t\t\t    \"id\": {\n\t\t\t\t        \"@type\": \"pub.ed25519\",\n\t\t\t\t        \"key\": \"VFerQdFbdGKfJ8srPW0FpHoB6DJUTnHaRYifYfPqXzE=\"\n\t\t\t\t    },\n\t\t\t\t    \"addr_list\": {\n\t\t\t\t        \"@type\": \"adnl.addressList\",\n\t\t\t\t        \"addrs\": [\n\t\t\t\t            {\n\t\t\t\t                \"@type\": \"adnl.address.udp\",\n\t\t\t\t                \"ip\": -1177439932,\n\t\t\t\t                \"port\": 3133\n\t\t\t\t            }\n\t\t\t\t        ],\n\t\t\t\t        \"version\": 0,\n\t\t\t\t        \"reinit_date\": 0,\n\t\t\t\t        \"priority\": 0,\n\t\t\t\t        \"expire_at\": 0\n\t\t\t\t    },\n\t\t\t\t    \"version\": -1,\n\t\t\t\t    \"signature\": \"QKgnmn4H1iQTR6QEOMyp8rV37NedgUHahYJvTKRwTYAOGiFXGu1reRrRaq7mzM+zgKXi8v9kqILtKObT48MEDg==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"xaRwNOh8z5Wqanm0N9QfUTORDlBnsKSZkmO1x+7WhBE=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": -809760945,\n\t\t\t\t\t\t\t\t\"port\": 3471\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"XreTKe+83259q5eVazVnir4HVJEKEIqOHY7Spq1xaRQlSvZ7r4kAtoOiZyC8fWPUJL0wATCNlWKbpQI17pZuCA==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"agRR8dvLfWljbv9gTaRMz0d6rBW/B7ctU/Iuju9vWyE=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": 1162057633,\n\t\t\t\t\t\t\t\t\"port\": 14512\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"s+fgBe5JdJ7mp+kNqz+8IymONylKHvyw/4V2X3YaVSQVTwoGoPaHnsWClgKlcR9rQlGh08uvBfva5ag6B+cvCQ==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"g3TiYRaF9TiBN3nVcC24RxQ5cWZof1SiMBPFA1U0S/s=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": -1185526389,\n\t\t\t\t\t\t\t\t\"port\": 42157\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"JmhNp8zAcSHFuCY/s8YlOA913PGMgnFkw9+46PgdLl0TNly954utbSi6kmjzUtZrgtJpADpDWjPMsZMs229KCQ==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t    \"@type\": \"dht.node\",\n\t\t\t\t    \"id\": {\n\t\t\t\t        \"@type\": \"pub.ed25519\",\n\t\t\t\t        \"key\": \"qD1h6vP4bV7V4iVumMewyLW0nU0Kq63Ibmk6Yb+TO4I=\"\n\t\t\t\t    },\n\t\t\t\t    \"addr_list\": {\n\t\t\t\t        \"@type\": \"adnl.addressList\",\n\t\t\t\t        \"addrs\": [\n\t\t\t\t            {\n\t\t\t\t                \"@type\": \"adnl.address.udp\",\n\t\t\t\t                \"ip\": -1185526601,\n\t\t\t\t                \"port\": 56373\n\t\t\t\t            }\n\t\t\t\t        ],\n\t\t\t\t        \"version\": 0,\n\t\t\t\t        \"reinit_date\": 0,\n\t\t\t\t        \"priority\": 0,\n\t\t\t\t        \"expire_at\": 0\n\t\t\t\t    },\n\t\t\t\t    \"version\": -1,\n\t\t\t\t    \"signature\": \"yUcNKXgIBBSV4kXszvkyggltBdqS+PmD9Sc+8tGRkTv+oCQJsueCEEfuIWu2Rbh4KI6oHREI7artXAI+gP3cDQ==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"fO6cFYRCRrD+yQzOJdHcNWpRFwu+qLhQnddLq0gGbTs=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": 1097633201,\n\t\t\t\t\t\t\t\t\"port\": 7201\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"o/rhtiUL3rvA08TKBcCn0DCiSjsNQdAv41aw7VVUig7ubaqJzYMv1cW3qMjxvsXn1BOugIheJm7voA1/brbtCg==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"provided\": \"disintar\",\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"GB1pg7eomnjKAGIts8okGw1Whe2zgie/+fTEWG7Q13g=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": 1336806917,\n\t\t\t\t\t\t\t\t\"port\": 30224\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"w4yGCNvlFdHef0TWF5jPb1gfTnOmhQ58Z6kxbbx2LOjnyISuKIk9jHHMWnFS63J+Nw/R71rhRVtO2pcMwXLjBw==\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"@type\": \"dht.nodes\"\n\t\t},\n\t\t\"@type\": \"dht.config.global\"\n\t},\n\t\"@type\": \"config.global\",\n\t\"validator\": {\n\t\t\"zero_state\": {\n\t\t\t\"file_hash\": \"Z+IKwYS54DmmJmesw/nAD5DzWadnOCMzee+kdgSYDOg=\",\n\t\t\t\"seqno\": 0,\n\t\t\t\"root_hash\": \"gj+B8wb/AmlPk1z1AhVI484rhrUpgSr2oSFIh56VoSg=\",\n\t\t\t\"workchain\": -1,\n\t\t\t\"shard\": -9223372036854775808\n\t\t},\n\t\t\"@type\": \"validator.config.global\",\n\t\t\"init_block\": {\n\t\t\t\"file_hash\": \"xRaxgUwgTXYFb16YnR+Q+VVsczLl6jmYwvzhQ/ncrh4=\",\n\t\t\t\"seqno\": 5176527,\n\t\t\t\"root_hash\": \"SoPLqMe9Dz26YJPOGDOHApTSe5i0kXFtRmRh/zPMGuI=\",\n\t\t\t\"workchain\": -1,\n\t\t\t\"shard\": -9223372036854775808\n\t\t},\n\t\t\"hardforks\": [\n\t\t\t{\n\t\t\t\t\"file_hash\": \"jF3RTD+OyOoP+OI9oIjdV6M8EaOh9E+8+c3m5JkPYdg=\",\n\t\t\t\t\"seqno\": 5141579,\n\t\t\t\t\"root_hash\": \"6JSqIYIkW7y8IorxfbQBoXiuY3kXjcoYgQOxTJpjXXA=\",\n\t\t\t\t\"workchain\": -1,\n\t\t\t\t\"shard\": -9223372036854775808\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"file_hash\": \"WrNoMrn5UIVPDV/ug/VPjYatvde8TPvz5v1VYHCLPh8=\",\n\t\t\t\t\"seqno\": 5172980,\n\t\t\t\t\"root_hash\": \"054VCNNtUEwYGoRe1zjH+9b1q21/MeM+3fOo76Vcjes=\",\n\t\t\t\t\"workchain\": -1,\n\t\t\t\t\"shard\": -9223372036854775808\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"file_hash\": \"xRaxgUwgTXYFb16YnR+Q+VVsczLl6jmYwvzhQ/ncrh4=\",\n\t\t\t\t\"seqno\": 5176527,\n\t\t\t\t\"root_hash\": \"SoPLqMe9Dz26YJPOGDOHApTSe5i0kXFtRmRh/zPMGuI=\",\n\t\t\t\t\"workchain\": -1,\n\t\t\t\t\"shard\": -9223372036854775808\n\t\t\t}\n\t\t]\n\t}\n}"
  },
  {
    "path": "config/api-config/testnet-config-onetoone.json",
    "content": "{\n\t\"liteservers\": [\n  \t{\n    \t\"ip\": 2886860802,\n      \"port\": 43679,\n      \"id\": {\n        \"@type\": \"pub.ed25519\",\n        \"key\": \"NODEAPIKEY\"\n      }\n    }\n\t],\n\t\"dht\": {\n\t\t\"a\": 3,\n\t\t\"k\": 3,\n\t\t\"static_nodes\": {\n\t\t\t\"nodes\": [\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"K2AWu8leN2RjYmhMpYAaGX/F6nGVk9oZw9c09RX3yyc=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": 1592601963,\n\t\t\t\t\t\t\t\t\"port\": 38723\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"21g16jxnqbb2ENAijrZFccHqLQcmmpkAI1HA46DaPvnVYvMkATFNEyHTy2R1T1jgU5M7CCLGJN+MxhwZfl/ZDA==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"fVIJzD9ATMilaPd847eFs6PtGSB67C+D9b4R+nf1+/s=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": 1097649206,\n\t\t\t\t\t\t\t\t\"port\": 29081\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"wH0HEVT6yAfZZAoD5bF6J3EZWdSFwBGl1ZpOfhxZ0Bp2u52tv8OzjeH8tlZ+geMLTG50Csn5nxSKP1tswTWwBg==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"gu+woR+x7PoRmaMqAP7oeOjK2V4U0NU8ofdacWZ34aY=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": 1162057690,\n\t\t\t\t\t\t\t\t\"port\": 41578\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"0PwDLXpN3IbRQuOTLkZBjkbT6+IkeUcvlhWrUY9us3IfSehmCfQjScR9mkVYsQ6cQHF+JeaFmqzV4GAiUcgjAg==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"WC4BO1eZ916FnLBSKmt07Pn5NP4D3/1wary1VjaCLaY=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": -1304477830,\n\t\t\t\t\t\t\t\t\"port\": 9670\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"cvpzkGeuEuKV+d92qIVkln9ngm8qeDnmYtK5rq8uSet0392hAZcIv2IniDzTw0rN42NaOHL9A4KEelwKu1N2Ag==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"nC8dcxV+EV2i0ARvub94IFJKKZUYACfY4xFj1NaG7Pw=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": 1959453117,\n\t\t\t\t\t\t\t\t\"port\": 63625\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"AHF6joNvQhyFFE0itV4OMA9n3Q8CEHVKapCLqazP7QJ4arsn4pdVkRYiGFEyQkngx+cm8izU4gB0JIaxF6PiBg==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"dqsRZLzTg/P7uxUlQpgl4VyTBNYBRMc4js3mnRiolBk=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": -809760973,\n\t\t\t\t\t\t\t\t\"port\": 40398\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"mJxLrAv5RamN5B9mDz6MhQwFjF92D3drJ5efOSZryDaazil0AR4bRHh4vxzZlYiPhi/X/NyG6WwNvKBz+1ntBw==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"+U2zJXltAQVbgOepQdkam7sJAAdDboxlwvkTG4Oih04=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": 1959448750,\n\t\t\t\t\t\t\t\t\"port\": 60982\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"sVdFJxk2SG/Wjh35x4yKnuZzzXyQgmuK/FLy0wge3qGHCs6Wg5HhhxU1WnpgXPLIGXfjVKN7Ud0L1APlgVmuDg==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t    \"@type\": \"dht.node\",\n\t\t\t\t    \"id\": {\n\t\t\t\t        \"@type\": \"pub.ed25519\",\n\t\t\t\t        \"key\": \"VFerQdFbdGKfJ8srPW0FpHoB6DJUTnHaRYifYfPqXzE=\"\n\t\t\t\t    },\n\t\t\t\t    \"addr_list\": {\n\t\t\t\t        \"@type\": \"adnl.addressList\",\n\t\t\t\t        \"addrs\": [\n\t\t\t\t            {\n\t\t\t\t                \"@type\": \"adnl.address.udp\",\n\t\t\t\t                \"ip\": -1177439932,\n\t\t\t\t                \"port\": 3133\n\t\t\t\t            }\n\t\t\t\t        ],\n\t\t\t\t        \"version\": 0,\n\t\t\t\t        \"reinit_date\": 0,\n\t\t\t\t        \"priority\": 0,\n\t\t\t\t        \"expire_at\": 0\n\t\t\t\t    },\n\t\t\t\t    \"version\": -1,\n\t\t\t\t    \"signature\": \"QKgnmn4H1iQTR6QEOMyp8rV37NedgUHahYJvTKRwTYAOGiFXGu1reRrRaq7mzM+zgKXi8v9kqILtKObT48MEDg==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"xaRwNOh8z5Wqanm0N9QfUTORDlBnsKSZkmO1x+7WhBE=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": -809760945,\n\t\t\t\t\t\t\t\t\"port\": 3471\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"XreTKe+83259q5eVazVnir4HVJEKEIqOHY7Spq1xaRQlSvZ7r4kAtoOiZyC8fWPUJL0wATCNlWKbpQI17pZuCA==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"agRR8dvLfWljbv9gTaRMz0d6rBW/B7ctU/Iuju9vWyE=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": 1162057633,\n\t\t\t\t\t\t\t\t\"port\": 14512\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"s+fgBe5JdJ7mp+kNqz+8IymONylKHvyw/4V2X3YaVSQVTwoGoPaHnsWClgKlcR9rQlGh08uvBfva5ag6B+cvCQ==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"g3TiYRaF9TiBN3nVcC24RxQ5cWZof1SiMBPFA1U0S/s=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": -1185526389,\n\t\t\t\t\t\t\t\t\"port\": 42157\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"JmhNp8zAcSHFuCY/s8YlOA913PGMgnFkw9+46PgdLl0TNly954utbSi6kmjzUtZrgtJpADpDWjPMsZMs229KCQ==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t    \"@type\": \"dht.node\",\n\t\t\t\t    \"id\": {\n\t\t\t\t        \"@type\": \"pub.ed25519\",\n\t\t\t\t        \"key\": \"qD1h6vP4bV7V4iVumMewyLW0nU0Kq63Ibmk6Yb+TO4I=\"\n\t\t\t\t    },\n\t\t\t\t    \"addr_list\": {\n\t\t\t\t        \"@type\": \"adnl.addressList\",\n\t\t\t\t        \"addrs\": [\n\t\t\t\t            {\n\t\t\t\t                \"@type\": \"adnl.address.udp\",\n\t\t\t\t                \"ip\": -1185526601,\n\t\t\t\t                \"port\": 56373\n\t\t\t\t            }\n\t\t\t\t        ],\n\t\t\t\t        \"version\": 0,\n\t\t\t\t        \"reinit_date\": 0,\n\t\t\t\t        \"priority\": 0,\n\t\t\t\t        \"expire_at\": 0\n\t\t\t\t    },\n\t\t\t\t    \"version\": -1,\n\t\t\t\t    \"signature\": \"yUcNKXgIBBSV4kXszvkyggltBdqS+PmD9Sc+8tGRkTv+oCQJsueCEEfuIWu2Rbh4KI6oHREI7artXAI+gP3cDQ==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"fO6cFYRCRrD+yQzOJdHcNWpRFwu+qLhQnddLq0gGbTs=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": 1097633201,\n\t\t\t\t\t\t\t\t\"port\": 7201\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"o/rhtiUL3rvA08TKBcCn0DCiSjsNQdAv41aw7VVUig7ubaqJzYMv1cW3qMjxvsXn1BOugIheJm7voA1/brbtCg==\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"provided\": \"disintar\",\n\t\t\t\t\t\"@type\": \"dht.node\",\n\t\t\t\t\t\"id\": {\n\t\t\t\t\t\t\"@type\": \"pub.ed25519\",\n\t\t\t\t\t\t\"key\": \"GB1pg7eomnjKAGIts8okGw1Whe2zgie/+fTEWG7Q13g=\"\n\t\t\t\t\t},\n\t\t\t\t\t\"addr_list\": {\n\t\t\t\t\t\t\"@type\": \"adnl.addressList\",\n\t\t\t\t\t\t\"addrs\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"@type\": \"adnl.address.udp\",\n\t\t\t\t\t\t\t\t\"ip\": 1336806917,\n\t\t\t\t\t\t\t\t\"port\": 30224\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"version\": 0,\n\t\t\t\t\t\t\"reinit_date\": 0,\n\t\t\t\t\t\t\"priority\": 0,\n\t\t\t\t\t\t\"expire_at\": 0\n\t\t\t\t\t},\n\t\t\t\t\t\"version\": -1,\n\t\t\t\t\t\"signature\": \"w4yGCNvlFdHef0TWF5jPb1gfTnOmhQ58Z6kxbbx2LOjnyISuKIk9jHHMWnFS63J+Nw/R71rhRVtO2pcMwXLjBw==\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"@type\": \"dht.nodes\"\n\t\t},\n\t\t\"@type\": \"dht.config.global\"\n\t},\n\t\"@type\": \"config.global\",\n\t\"validator\": {\n\t\t\"zero_state\": {\n\t\t\t\"file_hash\": \"Z+IKwYS54DmmJmesw/nAD5DzWadnOCMzee+kdgSYDOg=\",\n\t\t\t\"seqno\": 0,\n\t\t\t\"root_hash\": \"gj+B8wb/AmlPk1z1AhVI484rhrUpgSr2oSFIh56VoSg=\",\n\t\t\t\"workchain\": -1,\n\t\t\t\"shard\": -9223372036854775808\n\t\t},\n\t\t\"@type\": \"validator.config.global\",\n\t\t\"init_block\": {\n\t\t\t\"file_hash\": \"xRaxgUwgTXYFb16YnR+Q+VVsczLl6jmYwvzhQ/ncrh4=\",\n\t\t\t\"seqno\": 5176527,\n\t\t\t\"root_hash\": \"SoPLqMe9Dz26YJPOGDOHApTSe5i0kXFtRmRh/zPMGuI=\",\n\t\t\t\"workchain\": -1,\n\t\t\t\"shard\": -9223372036854775808\n\t\t},\n\t\t\"hardforks\": [\n\t\t\t{\n\t\t\t\t\"file_hash\": \"jF3RTD+OyOoP+OI9oIjdV6M8EaOh9E+8+c3m5JkPYdg=\",\n\t\t\t\t\"seqno\": 5141579,\n\t\t\t\t\"root_hash\": \"6JSqIYIkW7y8IorxfbQBoXiuY3kXjcoYgQOxTJpjXXA=\",\n\t\t\t\t\"workchain\": -1,\n\t\t\t\t\"shard\": -9223372036854775808\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"file_hash\": \"WrNoMrn5UIVPDV/ug/VPjYatvde8TPvz5v1VYHCLPh8=\",\n\t\t\t\t\"seqno\": 5172980,\n\t\t\t\t\"root_hash\": \"054VCNNtUEwYGoRe1zjH+9b1q21/MeM+3fOo76Vcjes=\",\n\t\t\t\t\"workchain\": -1,\n\t\t\t\t\"shard\": -9223372036854775808\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"file_hash\": \"xRaxgUwgTXYFb16YnR+Q+VVsczLl6jmYwvzhQ/ncrh4=\",\n\t\t\t\t\"seqno\": 5176527,\n\t\t\t\t\"root_hash\": \"SoPLqMe9Dz26YJPOGDOHApTSe5i0kXFtRmRh/zPMGuI=\",\n\t\t\t\t\"workchain\": -1,\n\t\t\t\t\"shard\": -9223372036854775808\n\t\t\t}\n\t\t]\n\t}\n}"
  },
  {
    "path": "config/node-assets/control.template",
    "content": "\"control\" : [\n  { \"id\" : SERVER-ID,\n    \"port\" : CONSOLE-PORT,\n    \"allowed\" : [\n      { \"id\" : CLIENT-ID,\n        \"permissions\" : 15\n      }\n    ]\n  }\n"
  },
  {
    "path": "config/node-assets/init.sh",
    "content": "#!/usr/bin/env bash\n\n# Handling for the initial node setup\n\n# Download the global config\nif [ -f \"./ton-global.config\" ]; then\n    echo -e \"\\e[1;33m[=]\\e[0m Found existing global config, skipping\"\nelse\n    echo -e \"\\e[1;32m[+]\\e[0m Downloading provided global config.\"\n    wget -q $GCONFURL -O /var/ton-work/db/ton-global.config\nfi\n\n# Init local config with IP:PORT\nif [ -f \"./config.json\" ]; then\n    echo -e \"\\e[1;33m[=]\\e[0m Found existing local config, skipping\"\nelse\n    echo -e \"\\e[1;32m[+]\\e[0m Using provided IP: $PUBLIC_IP:$CONSOLE_PORT\"\n    /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\"\nfi\n\n# Generating server certificate\nif [ -f \"./server\" ]; then\n    echo -e \"\\e[1;33m[=]\\e[0m Found existing server certificate, skipping\"\nelse\n    echo -e \"\\e[1;32m[+]\\e[0m Generating and installing server certificate for remote control\"\n    read -r SERVER_ID1 SERVER_ID2 <<< $(/usr/bin/ton/utils/generate-random-id -m keys -n server)\n    echo \"Server IDs: $SERVER_ID1 $SERVER_ID2\"\n    cp server /var/ton-work/db/keyring/$SERVER_ID1\nfi\n\n# Generating client certificate\nif [ -f \"./client\" ]; then\n    echo -e \"\\e[1;33m[=]\\e[0m Found existing client certificate, skipping\"\nelse\n    read -r CLIENT_ID1 CLIENT_ID2 <<< $(/usr/bin/ton/utils/generate-random-id -m keys -n client)\n    echo -e \"\\e[1;32m[+]\\e[0m Generated client private certificate $CLIENT_ID1 $CLIENT_ID2\"\n    echo -e \"\\e[1;32m[+]\\e[0m Generated client public certificate\"\n    # Adding client permissions\n    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\n    sed -e \"s~\\\"control\\\"\\ \\:\\ \\[~$(printf \"%q\" $(cat control.new))~g\" /var/ton-work/db/config.json > /var/ton-work/db/config.json.new\n    mv /var/ton-work/db/config.json.new /var/ton-work/db/config.json\nfi\n\n# Liteserver\nif [ -z \"$LITESERVER\" ]; then\n    echo -e \"\\e[1;33m[=]\\e[0m Liteserver disabled\"\nelse\n    if [ -f \"./liteserver\" ]; then\n        echo -e \"\\e[1;33m[=]\\e[0m Found existing liteserver certificate, skipping\"\n    else\n        echo -e \"\\e[1;32m[+]\\e[0m Generating and installing liteserver certificate for remote control\"\n        read -r LITESERVER_ID1 LITESERVER_ID2 <<< $(/usr/bin/ton/utils/generate-random-id -m keys -n liteserver)\n        echo \"Liteserver IDs: $LITESERVER_ID1 $LITESERVER_ID2\"\n        cp liteserver /var/ton-work/db/keyring/$LITESERVER_ID1\n        if [ -z \"$LITE_PORT\" ]; then\n            LITE_PORT=\"43679\"\n        fi\n        LITESERVERS=$(printf \"%q\" \"\\\"liteservers\\\":[{\\\"id\\\":\\\"$LITESERVER_ID2\\\",\\\"port\\\":\\\"$LITE_PORT\\\"}\")\n        sed -e \"s~\\\"liteservers\\\"\\ \\:\\ \\[~$LITESERVERS~g\" config.json > config.json.liteservers\n        mv config.json.liteservers config.json\n    fi\nfi\n\necho -e \"\\e[1;32m[+]\\e[0m Running validator-engine\"\n\nexec /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"
  },
  {
    "path": "docker-compose.yml",
    "content": "version: '3.7'\n\nservices:\n  ton-node:\n    build:\n      context: build\n      dockerfile: Dockerfile.node\n      args:\n        VER: ${NODE_VERSION}\n    image: ton-node:${NODE_VERSION}\n    restart: always\n    ports:\n      - ${NODE_CONSOLE_PORT}:${NODE_CONSOLE_PORT}\n      - ${NODE_CONSOLE_PORT}:${NODE_CONSOLE_PORT}/udp\n      - ${NODE_LITESERVER_PORT}:${NODE_LITESERVER_PORT}\n      - ${NODE_LITESERVER_PORT}:${NODE_LITESERVER_PORT}/udp\n    volumes:\n      - ${NODE_STATE_VOLUME}:/var/ton-work/db\n      - ${NODE_LOG_VOLUME}:/var/ton-work/log\n    environment:\n      GCONFURL: ${NODE_CONFIG_URL}\n      PUBLIC_IP: ${NODE_PUBLIC_IP}\n      LITESERVER: ${NODE_LITESERVER}\n      LITE_PORT: ${NODE_LITESERVER_PORT}\n      CONSOLE_PORT: ${NODE_CONSOLE_PORT}\n    networks:\n      ton-network:\n        ipv4_address: 172.18.0.2\n\n  ton-api:\n    build:\n      context: build\n      dockerfile: Dockerfile.api\n      args:\n        VER: ${API_VERSION}\n    image: ton-api\n    restart: always\n    ports:\n      - 8081:8081\n    volumes:\n      - ${API_CONF_VOLUME}:/conf\n    environment:\n      TON_API_CACHE_ENABLED: ${API_CACHE_ENABLED}\n      TON_API_LOGS_JSONIFY: ${API_LOGS_JSONIFY}\n      TON_API_LOGS_LEVEL: ${API_LOGS_LEVEL}\n      TON_API_TONLIB_LITESERVER_CONFIG: ${API_TONLIB_LITESERVER_CONFIG}\n      TON_API_TONLIB_PARALLEL_REQUESTS_PER_LITESERVER: ${API_TONLIB_PARALLEL_REQUESTS_PER_LITESERVER}\n      TON_API_TONLIB_REQUEST_TIMEOUT: ${API_TONLIB_REQUEST_TIMEOUT}\n      TON_API_GET_METHODS_ENABLED: ${API_GET_METHODS_ENABLED}\n      TON_API_JSON_RPC_ENABLED: ${API_JSON_RPC_ENABLED}\n      TON_API_ROOT_PATH: ${API_ROOT_PATH}\n    command: -c \"gunicorn -k uvicorn.workers.UvicornWorker -w 1 --bind 0.0.0.0:8081 pyTON.main:app\"\n    networks:\n      ton-network:\n        ipv4_address: 172.18.0.3\n\nnetworks:\n  ton-network:\n    driver: bridge\n    ipam:\n     config:\n       - subnet: 172.18.0.0/24"
  }
]