mirror of
https://github.com/logos-storage/logos-storage-nim.git
synced 2026-07-19 07:39:33 +00:00
feat: v0.2 presets (#1478)
This commit is contained in:
parent
fe8a3e6625
commit
8e0fb9f53e
10
Makefile
10
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
|
||||
|
||||
@ -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"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
134
tools/scripts/storage-config.sh
Normal file
134
tools/scripts/storage-config.sh
Normal 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."
|
||||
Loading…
x
Reference in New Issue
Block a user