From 8e0fb9f53ebe532505d671c12d830aaa40867163 Mon Sep 17 00:00:00 2001 From: Giuliano Mega Date: Tue, 30 Jun 2026 14:33:56 -0300 Subject: [PATCH] feat: v0.2 presets (#1478) --- Makefile | 10 ++- network_presets.json | 21 ++--- tools/scripts/storage-config.sh | 134 ++++++++++++++++++++++++++++++++ 3 files changed, 148 insertions(+), 17 deletions(-) create mode 100644 tools/scripts/storage-config.sh diff --git a/Makefile b/Makefile index 9d26a1ea..ad4c1660 100644 --- a/Makefile +++ b/Makefile @@ -160,7 +160,7 @@ endif checkSpr: | build deps echo -e $(BUILD_MSG) "build/check_spr" && \ $(ENV_SCRIPT) nim checkSpr $(NIM_PARAMS) build.nims - + # Pings the preset bootstrap nodes and fails if any are unreachable. # Run from OUTSIDE the fleet VPCs (e.g. a GitHub-hosted runner) so nodes that # advertise private/cloud-internal IPs are correctly seen as unreachable. @@ -303,4 +303,10 @@ else echo -e $(BUILD_MSG) "build/$@.so" && \ $(ENV_SCRIPT) nim libstorageDynamic $(NIM_PARAMS) $(LIBSTORAGE_PARAMS) storage.nims endif -endif # "variables.mk" was not included +endif # "variables.mk" was not includedMa +################ +## Presets ## +################ + +presets: + bash ./tools/scripts/storage-config.sh presets > network_presets.json diff --git a/network_presets.json b/network_presets.json index 5ca6d3c6..01789e0c 100644 --- a/network_presets.json +++ b/network_presets.json @@ -1,24 +1,15 @@ { "presets": [ - { - "name": "logos.test", - "description": "Logos testnet", - "records": [ - "spr:CiUIAhIhA6rD-Sa1mJqHOoYMk8yad7B4BYDEI_toNwb1z0cYIRu6EgIDARpJCicAJQgCEiEDqsP5JrWYmoc6hgyTzJp3sHgFgMQj-2g3BvXPRxghG7oQxfbh0QYaCwoJBLKAjM6RAiOCGgsKCQSygIzOkQIjgipHMEUCIQCYa0p3CEM2HcCFav-Lirmy40PP6ZFOdse7nr6h3rsQRQIgUFV3o0AYIEWMEM6fBXzrxuH4i01KkKiTcsicQk2iCTI", - "spr:CiUIAhIhAsFwlXD-3VpX-Pa3taM15wdL3DS75l_dpVCIFhdaIKYREgIDARpJCicAJQgCEiECwXCVcP7dWlf49re1ozXnB0vcNLvmX92lUIgWF1ogphEQwvbh0QYaCwoJBIHU3SyRAiOCGgsKCQSB1N0skQIjgipGMEQCIDxPI7Y8ryTXWGHIPDcxQzun-pPv-znP3CcdM9HOX9zxAiBe4gimIo3DV-HnoKvWF9bA4Btk6oxQMp6U-BFU9Ksgyg", - "spr:CiUIAhIhAwSYqf83tfZom9eGFFdXXea-dblO-I7-I8B1kjhfJeEAEgIDARpJCicAJQgCEiEDBJip_ze19mib14YUV1dd5r51uU74jv4jwHWSOF8l4QAQ447V0QYaCwoJBCJGPMmRAiOCGgsKCQQiRjzJkQIjgipHMEUCIQDM3rnAEfd65h3jSMqXUBheKWj-NBpFJqY_ovR7OXDNIwIgDqEYIyD8OMIQ5kF86hHbAMhiLLUbM7kghI12Oo377bg", - "spr:CiUIAhIhA4T8XrxB6PKor8f7j7eqKxgIXH6mMST0_Uel5hZjSDp2EgIDARpJCicAJQgCEiEDhPxevEHo8qivx_uPt6orGAhcfqYxJPT9R6XmFmNIOnYQw_bh0QYaCwoJBCJ7tv6RAiOCGgsKCQQie7b-kQIjgipHMEUCIQDvMgcxPW1kLMfdoJjvgRSZjXT3tnOABWGEwQ0Z2qN8tgIgeNgGpLwBqbJ_xanEOTGRSKtlbPWyREyKDF3cmZLXW0c", - "spr:CiUIAhIhAqk6NgpRxbKvI02Up24XP3U-dD3TdKRurXpW-ak3Zvh-EgIDARpJCicAJQgCEiECqTo2ClHFsq8jTZSnbhc_dT50PdN0pG6telb5qTdm-H4Qyvbh0QYaCwoJBC9MqLqRAiOCGgsKCQQvTKi6kQIjgipGMEQCIBj1HljoqhyfTqyTG30U9sMtmnOTjCzrW0StUS0yN-BYAiAR2LJc6ZreQ46t6p0pOOfW6f2EHPk7kvFyHylc9e3Icg", - "spr:CiUIAhIhAvSGKPkE3mD7MP-ZCWS5AEvzcDNVsM6XFYeCBXNja7h2EgIDARpJCicAJQgCEiEC9IYo-QTeYPsw_5kJZLkAS_NwM1WwzpcVh4IFc2NruHYQn_bh0QYaCwoJBC9MsqSRAiOCGgsKCQQvTLKkkQIjgipHMEUCIQCx_FVPRskW2Kc0irY2-IHkbubYcYZEkCI1D_na2E-4VgIgQm61SqAmt2HgWqnFRujKfKd0LPkvSGJ1toRd3zedXd8" - ] - }, { "name": "logos.dev", "description": "Logos devnet", "records": [ - "spr:CiUIAhIhAwfZDeTtWNlSgRbZlZfvxLI5Bpy0lFEYN7gImS3oHNaSEgIDARpJCicAJQgCEiEDB9kN5O1Y2VKBFtmVl-_EsjkGnLSUURg3uAiZLegc1pIQ__O20AYaCwoJBBiQTsiRAiOCGgsKCQQYkE7IkQIjgipHMEUCIQCIZx-HlVsLXJLhD6SEVx6Zt_1aG9IqMq-Luvz8No_J0wIgc8I9PRtheG4s5tzHjkEJMLcq3Jf09IT_FGkzPcJm8h4", - "spr:CiUIAhIhA8d4LjRirtXO1M-JEmbhVA0CQeA7hHNR9BA7DvFsPKTEEgIDARpJCicAJQgCEiEDx3guNGKu1c7Uz4kSZuFUDQJB4DuEc1H0EDsO8Ww8pMQQhPW20AYaCwoJBCIq5juRAiOCGgsKCQQiKuY7kQIjgipGMEQCIHV_8nJ0iedWjlAxUhBmdAbDPLu5g2RmcnmJBD8cbD98AiAp1w9nAJgLlPIr41aMcdkds_eSoh8ImOVKvq6Idx-Ugg", - "spr:CiUIAhIhA_MocWwn1_t__FEONMqYluUjc9ZVkcvYRLo6C0GzTkbfEgIDARpJCicAJQgCEiED8yhxbCfX-3_8UQ40ypiW5SNz1lWRy9hEujoLQbNORt8QlfO20AYaCwoJBC_u5W-RAiOCGgsKCQQv7uVvkQIjgipGMEQCIHMpQO31gg4FoKYtDyTTQS8xFz1KEmfqH385EeMUNbhPAiBblCkmOfQBmXj6eryaSiXWsftgohE-SPbKwsASZ1Zs3Q" + "spr:CiUIAhIhA11LamlswboRlyrpEXBubPQAr2WRmqjgWRC4JsvFptrCEgIDARpJCicAJQgCEiEDXUtqaWzBuhGXKukRcG5s9ACvZZGaqOBZELgmy8Wm2sIQnO-N0gYaCwoJBBiQTsiRAiOCGgsKCQQYkE7IkQIjgipGMEQCIBgB1A83KVNuTm_Raxzip5X4vDeFHnjG1bpE5_-bkmGSAiBOP4O8ikiMAiGT5gqfraaW6gIjSzeR44VjiHMw2GwL9A", + "spr:CiUIAhIhAzZMgD-qjJe5tlKjSoF78qo7MM4sxRSLWPmgkye9R6YsEgIDARpJCicAJQgCEiEDNkyAP6qMl7m2UqNKgXvyqjswzizFFItY-aCTJ71HpiwQgOiN0gYaCwoJBLymyHeRAiOCGgsKCQS8psh3kQIjgipGMEQCIHEy7d-kFRI73d9K9pQ17m7onCzMSKQLi4JwqDTXM-NPAiAVnAagYFwAxN_4bEzp1SFbAeqUBoLG0pJ0Q0SGcGHu4w", + "spr:CiUIAhIhAwi_g5xHmn-aLe9OVMxOaBADpkjm2uiQItF5cUbCqLQ9EgIDARpJCicAJQgCEiEDCL-DnEeaf5ot705UzE5oEAOmSOba6JAi0XlxRsKotD0Q5OaN0gYaCwoJBCIq5juRAiOCGgsKCQQiKuY7kQIjgipGMEQCICRXceNgC1cK6ReG7QUO921gqWW8_zfdahBl3F1A1mOqAiAf_8ZJbRTdxQRQijPscMcScxt6Ig7Wn2kg28nQ5L8EsA", + "spr:CiUIAhIhAiwKmSwu6gxwCcUU_EeE8dPdE_GJDlw17E5qORPHvjflEgIDARpJCicAJQgCEiECLAqZLC7qDHAJxRT8R4Tx090T8YkOXDXsTmo5E8e-N-UQyeiN0gYaCwoJBCI7UnORAiOCGgsKCQQiO1JzkQIjgipGMEQCICh6YCd83AcGLFgy0e06ADwe68t3nKB3z9QWYHIfi3_wAiAhkmZ7GfQzJH7uEjmVgPaMgPgu0eVevIkW6-Mz8F0bAw", + "spr:CiUIAhIhAuc7v0KnrAyWlwcAw72SvOxVDRG0yAA3ldfwAz6ArdCOEgIDARpJCicAJQgCEiEC5zu_QqesDJaXBwDDvZK87FUNEbTIADeV1_ADPoCt0I4Qy-WN0gYaCwoJBC_u5W-RAiOCGgsKCQQv7uVvkQIjgipGMEQCIHO2wVJRurZOkBd1Vc9zjIYpEJAA4jHG7oeckistK6V7AiBvVpttLUy83OZ_Xt4BSATZHFHXAlVHRz-ejNcjfdVhCQ", + "spr:CiUIAhIhAm-BN7CX8n1CSWBqCX76J1ppr8R8Zwd0a6SVEZeiHvvSEgIDARpJCicAJQgCEiECb4E3sJfyfUJJYGoJfvonWmmvxHxnB3RrpJURl6Ie-9IQvueN0gYaCwoJBC9WIsqRAiOCGgsKCQQvViLKkQIjgipHMEUCIQDITE7ZeqejytGRsKfH7xITc6SH7JiuHzKoAu97U_YyaAIgJfSirsf8b0iEx5uT5HTO9Lo2mTQjNOHdPKrzpf-rvsI" ] } ] diff --git a/tools/scripts/storage-config.sh b/tools/scripts/storage-config.sh new file mode 100644 index 00000000..c07b5c93 --- /dev/null +++ b/tools/scripts/storage-config.sh @@ -0,0 +1,134 @@ +#!/usr/bin/env bash +# Script for generating configuration files and network presets for +# Logos Storage. + +set -euo pipefail + +# Valid networks +declare -A _networks +#_networks=([test]="Logos testnet" [dev]="Logos devnet") +_networks=([dev]="Logos devnet") + +echoerr() { + echo "[storage_config] $1" >&2 +} + +require() { + if ! command -v "$1" &> /dev/null; then + echoerr "Error: $1 is not installed" + exit 1 + fi +} + +check_network() { + local network=$1 + if [[ -z "${_networks[$network]+x}" ]]; then + echoerr "Invalid network: $network. Use one of: ${!_networks[*]}" + exit 1 + fi +} + +raw_data() { + local network=$1 + check_network "$network" + curl -s "https://fleets.logos.co/logos-${network}/storage-network.json" +} + +mix_pool_json() { + local network=$1 + check_network "$network" + raw_data "$network" | jq 'map({ + "peerId": .peerId, + "mixPubKey": .mixPubKey, + "libp2pPubKey": .libp2pPubKey, + "multiAddr": "/ip4/\(.address)/tcp/\(.port)", + })' +} + +bootstrap_sprs() { + local network="$1" + check_network "$network" + raw_data "$network" | jq '[.[].spr]' +} + +mix_proxy_sprs() { + local network="$1" + check_network "$network" + raw_data "$network" | jq '[.[].tcpSpr]' +} + +full_config() { + local network="$1" + check_network "$network" + cat < [network] + +Generates configuration files and network presets for Logos Storage. + +Commands: + raw_data Fetch raw storage-network data from fleets.logos.co + mix_pool_json Generate mix pool JSON configuration + bootstrap_sprs List bootstrap SPRs + mix_proxy_sprs List mix proxy SPRs (tcpSpr) + full_config Generate full node configuration JSON + presets Generate network presets JSON for all networks + +Networks: + ${!_networks[*]} + +Examples: + $0 bootstrap_sprs dev + $0 full_config dev + $0 presets +EOF +} + +if [[ $# -eq 0 || "$1" == "-h" || "$1" == "--help" || "$1" == "help" ]]; then + usage + exit 0 +fi + +echoerr "Running command: $*" +"$@" | jq . +echoerr "Done." \ No newline at end of file