feat: v0.2 presets (#1478)

This commit is contained in:
Giuliano Mega 2026-06-30 14:33:56 -03:00 committed by GitHub
parent fe8a3e6625
commit 8e0fb9f53e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 148 additions and 17 deletions

View File

@ -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

View File

@ -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"
]
}
]

View File

@ -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 <<EOF
{
"log-level": "${STORAGE_LOG_LEVEL:-info}",
"nat": "${STORAGE_NAT:-any}",
"network": "logos.${network}",
"mix-enabled": true,
"dht-mix-proxy": $(mix_proxy_sprs "$network"),
"mix-pool-json": $(mix_pool_json "$network"),
}
EOF
}
presets() {
local _keys=("${!_networks[@]}")
local _last_network="${_keys[-1]}"
echoerr "Re-generating network presets."
cat <<'EOF'
{
"presets": [
EOF
for network in "${_keys[@]}"; do
cat <<EOF
{
"name": "logos.${network}",
"description": "${_networks[$network]}",
"records": $(bootstrap_sprs "$network")
}$( [[ "$network" != "$_last_network" ]] && echo "," )
EOF
done
cat <<EOF
]
}
EOF
}
require jq
usage() {
cat <<EOF
Usage: $0 <command> [network]
Generates configuration files and network presets for Logos Storage.
Commands:
raw_data <network> Fetch raw storage-network data from fleets.logos.co
mix_pool_json <network> Generate mix pool JSON configuration
bootstrap_sprs <network> List bootstrap SPRs
mix_proxy_sprs <network> List mix proxy SPRs (tcpSpr)
full_config <network> 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."