diff options
| author | Your Name <you@example.com> | 2026-05-19 02:31:19 +0530 |
|---|---|---|
| committer | Your Name <you@example.com> | 2026-05-19 02:32:41 +0530 |
| commit | 81f2dc52dc42d01c89dff45a5407ec40b8863052 (patch) | |
| tree | 15018c2438639ca89dc6d33a5144c10d0b1c2af0 /sdkconfig | |
| parent | 75688d55b3c8d13c8c9a50da9668ec408f684cb3 (diff) | |
feat: local Nostr relay with relay selection, sync, and integration tests
Local Nostr relay (NIP-01) on port 4869 with LittleFS 4MB storage.
All events published locally first, then synced to public relays via REQ-diff.
Relay selection via NIP-11 HTTP probing with NIP-77 scoring and auto-failover.
Components:
- wisp_relay: 16-file local relay (ws_server, storage_engine, sub_manager,
broadcaster, relay_validator, router, handlers, rate_limiter, nip11,
deletion, flash_monitor, relay_types)
- esp_littlefs: LittleFS VFS integration (git submodule)
- negentropy: for future NIP-77 binary sync (git submodule)
New source files:
- local_relay.c/h: thin wrapper for relay init/start/publish
- relay_selector.c/h: NIP-11 probe + scoring + auto-failover
- sync_manager.c/h: REQ-diff sync (primary 30min, fallback 6h)
Bug fixes:
- config.c: use-after-free (cJSON_Delete before seed_relays/sync parsing)
- local_relay: moved init to app_main for boot-time start (not gated on STA IP)
Flash layout: 4MB LittleFS partition at 0x500000 for relay_store
Test results (Board B, live hardware):
- Smoke: ping + HTTP 4869 + NIP-11: PASS
- NIP-11 info document: 10/11 PASS
- WS pub/sub (connect, REQ/EOSE, EVENT/OK, CLOSE, concurrent): 6/6 PASS
- Unit tests (relay_validator + relay_selector): 13/13 PASS
Hardware test make targets in physical-router-test-automation/:
- make relay-build, relay-flash-b, relay-test-smoke/nip11/pubsub/sync/full
Diffstat (limited to 'sdkconfig')
| -rw-r--r-- | sdkconfig | 34 |
1 files changed, 32 insertions, 2 deletions
| @@ -897,7 +897,7 @@ CONFIG_HTTPD_MAX_URI_LEN=512 | |||
| 897 | CONFIG_HTTPD_ERR_RESP_NO_DELAY=y | 897 | CONFIG_HTTPD_ERR_RESP_NO_DELAY=y |
| 898 | CONFIG_HTTPD_PURGE_BUF_LEN=32 | 898 | CONFIG_HTTPD_PURGE_BUF_LEN=32 |
| 899 | # CONFIG_HTTPD_LOG_PURGE_DATA is not set | 899 | # CONFIG_HTTPD_LOG_PURGE_DATA is not set |
| 900 | # CONFIG_HTTPD_WS_SUPPORT is not set | 900 | CONFIG_HTTPD_WS_SUPPORT=y |
| 901 | # CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set | 901 | # CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set |
| 902 | CONFIG_HTTPD_SERVER_EVENT_POST_TIMEOUT=2000 | 902 | CONFIG_HTTPD_SERVER_EVENT_POST_TIMEOUT=2000 |
| 903 | # end of HTTP Server | 903 | # end of HTTP Server |
| @@ -1526,7 +1526,7 @@ CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y | |||
| 1526 | # CONFIG_LWIP_IRAM_OPTIMIZATION is not set | 1526 | # CONFIG_LWIP_IRAM_OPTIMIZATION is not set |
| 1527 | # CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION is not set | 1527 | # CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION is not set |
| 1528 | CONFIG_LWIP_TIMERS_ONDEMAND=y | 1528 | CONFIG_LWIP_TIMERS_ONDEMAND=y |
| 1529 | CONFIG_LWIP_MAX_SOCKETS=10 | 1529 | CONFIG_LWIP_MAX_SOCKETS=20 |
| 1530 | # CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set | 1530 | # CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set |
| 1531 | # CONFIG_LWIP_SO_LINGER is not set | 1531 | # CONFIG_LWIP_SO_LINGER is not set |
| 1532 | CONFIG_LWIP_SO_REUSE=y | 1532 | CONFIG_LWIP_SO_REUSE=y |
| @@ -2101,6 +2101,36 @@ CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 | |||
| 2101 | CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y | 2101 | CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y |
| 2102 | # CONFIG_WIFI_PROV_STA_FAST_SCAN is not set | 2102 | # CONFIG_WIFI_PROV_STA_FAST_SCAN is not set |
| 2103 | # end of Wi-Fi Provisioning Manager | 2103 | # end of Wi-Fi Provisioning Manager |
| 2104 | |||
| 2105 | # | ||
| 2106 | # LittleFS | ||
| 2107 | # | ||
| 2108 | # CONFIG_LITTLEFS_SDMMC_SUPPORT is not set | ||
| 2109 | CONFIG_LITTLEFS_MAX_PARTITIONS=3 | ||
| 2110 | CONFIG_LITTLEFS_PAGE_SIZE=256 | ||
| 2111 | CONFIG_LITTLEFS_OBJ_NAME_LEN=64 | ||
| 2112 | CONFIG_LITTLEFS_READ_SIZE=128 | ||
| 2113 | CONFIG_LITTLEFS_WRITE_SIZE=128 | ||
| 2114 | CONFIG_LITTLEFS_LOOKAHEAD_SIZE=128 | ||
| 2115 | CONFIG_LITTLEFS_CACHE_SIZE=512 | ||
| 2116 | CONFIG_LITTLEFS_BLOCK_CYCLES=512 | ||
| 2117 | CONFIG_LITTLEFS_USE_MTIME=y | ||
| 2118 | # CONFIG_LITTLEFS_USE_ONLY_HASH is not set | ||
| 2119 | # CONFIG_LITTLEFS_HUMAN_READABLE is not set | ||
| 2120 | CONFIG_LITTLEFS_MTIME_USE_SECONDS=y | ||
| 2121 | # CONFIG_LITTLEFS_MTIME_USE_NONCE is not set | ||
| 2122 | # CONFIG_LITTLEFS_SPIFFS_COMPAT is not set | ||
| 2123 | # CONFIG_LITTLEFS_FLUSH_FILE_EVERY_WRITE is not set | ||
| 2124 | # CONFIG_LITTLEFS_FCNTL_GET_PATH is not set | ||
| 2125 | # CONFIG_LITTLEFS_MULTIVERSION is not set | ||
| 2126 | # CONFIG_LITTLEFS_MALLOC_STRATEGY_DISABLE is not set | ||
| 2127 | CONFIG_LITTLEFS_MALLOC_STRATEGY_DEFAULT=y | ||
| 2128 | # CONFIG_LITTLEFS_MALLOC_STRATEGY_INTERNAL is not set | ||
| 2129 | # CONFIG_LITTLEFS_MALLOC_STRATEGY_SPIRAM is not set | ||
| 2130 | CONFIG_LITTLEFS_ASSERTS=y | ||
| 2131 | # CONFIG_LITTLEFS_MMAP_PARTITION is not set | ||
| 2132 | # CONFIG_LITTLEFS_WDT_RESET is not set | ||
| 2133 | # end of LittleFS | ||
| 2104 | # end of Component config | 2134 | # end of Component config |
| 2105 | 2135 | ||
| 2106 | # CONFIG_IDF_EXPERIMENTAL_FEATURES is not set | 2136 | # CONFIG_IDF_EXPERIMENTAL_FEATURES is not set |