diff --git a/README.md b/README.md index 2f4a5ad4..2dbce9cb 100644 --- a/README.md +++ b/README.md @@ -26,11 +26,11 @@ A C library for NOSTR protocol implementation. Work in progress. - [ ] [NIP-14](nips/14.md) - Subject tag in text events - [ ] [NIP-15](nips/15.md) - Nostr Marketplace (for resilient marketplaces) - [ ] [NIP-16](nips/16.md) - Event Treatment -- [ ] [NIP-17](nips/17.md) - Private Direct Messages +- [x] [NIP-17](nips/17.md) - Private Direct Messages - [ ] [NIP-18](nips/18.md) - Reposts - [x] [NIP-19](nips/19.md) - bech32-encoded entities - [ ] [NIP-20](nips/20.md) - Command Results -- [ ] [NIP-21](nips/21.md) - `nostr:` URI scheme +- [x] [NIP-21](nips/21.md) - `nostr:` URI scheme - [ ] [NIP-22](nips/22.md) - Event `created_at` Limits - [ ] [NIP-23](nips/23.md) - Long-form Content - [ ] [NIP-24](nips/24.md) - Extra metadata fields and tags @@ -50,7 +50,7 @@ A C library for NOSTR protocol implementation. Work in progress. - [ ] [NIP-38](nips/38.md) - User Statuses - [ ] [NIP-39](nips/39.md) - External Identities in Profiles - [ ] [NIP-40](nips/40.md) - Expiration Timestamp -- [ ] [NIP-42](nips/42.md) - Authentication of clients to relays +- [x] [NIP-42](nips/42.md) - Authentication of clients to relays - [x] [NIP-44](nips/44.md) - Versioned Encryption - [ ] [NIP-45](nips/45.md) - Counting results - [ ] [NIP-46](nips/46.md) - Nostr Connect @@ -66,7 +66,7 @@ A C library for NOSTR protocol implementation. Work in progress. - [ ] [NIP-56](nips/56.md) - Reporting - [ ] [NIP-57](nips/57.md) - Lightning Zaps - [ ] [NIP-58](nips/58.md) - Badges -- [ ] [NIP-59](nips/59.md) - Gift Wrap +- [x] [NIP-59](nips/59.md) - Gift Wrap - [ ] [NIP-60](nips/60.md) - Cashu Wallet - [ ] [NIP-61](nips/61.md) - Nutzaps - [ ] [NIP-62](nips/62.md) - Log events @@ -96,7 +96,7 @@ A C library for NOSTR protocol implementation. Work in progress. **Legend:** โœ… Fully Implemented | โš ๏ธ Partial Implementation | โŒ Not Implemented -**Implementation Summary:** 8 of 96+ NIPs fully implemented (8.3%) +**Implementation Summary:** 12 of 96+ NIPs fully implemented (12.5%) ## ๐Ÿ“ฆ Quick Start @@ -523,7 +523,7 @@ The library uses automatic semantic versioning based on Git tags. Each build inc - `v0.2.x` - Current development releases with enhanced NIP support - `v0.1.x` - Initial development releases - Focus on core protocol implementation and OpenSSL-based crypto -- Full NIP-01, NIP-04, NIP-05, NIP-06, NIP-11, NIP-13, NIP-19, NIP-44 support +- Full NIP-01, NIP-04, NIP-05, NIP-06, NIP-11, NIP-13, NIP-17, NIP-19, NIP-42, NIP-44, NIP-59 support ## ๐Ÿ› Troubleshooting diff --git a/VERSION b/VERSION index 6f2743d6..0bfccb08 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.4.4 +0.4.5 diff --git a/build.sh b/build.sh index 3255e02e..2f3ba450 100755 --- a/build.sh +++ b/build.sh @@ -142,6 +142,7 @@ if [ "$HELP" = true ]; then echo " 013 - Proof of Work" echo " 017 - Private Direct Messages" echo " 019 - Bech32 encoding (nsec/npub)" + echo " 021 - nostr: URI scheme" echo " 042 - Authentication of clients to relays" echo " 044 - Encryption (modern)" echo " 059 - Gift Wrap" @@ -230,7 +231,7 @@ fi # If building tests or examples, include all NIPs to ensure compatibility if ([ "$BUILD_TESTS" = true ] || [ "$BUILD_EXAMPLES" = true ]) && [ -z "$FORCE_NIPS" ]; then - NEEDED_NIPS="001 004 005 006 011 013 017 019 042 044 059" + NEEDED_NIPS="001 004 005 006 011 013 017 019 021 042 044 059" print_info "Building tests/examples - including all available NIPs for compatibility" fi @@ -518,6 +519,7 @@ for nip in $NEEDED_NIPS; do 013) NIP_DESCRIPTIONS="$NIP_DESCRIPTIONS NIP-013(PoW)" ;; 017) NIP_DESCRIPTIONS="$NIP_DESCRIPTIONS NIP-017(DMs)" ;; 019) NIP_DESCRIPTIONS="$NIP_DESCRIPTIONS NIP-019(Bech32)" ;; + 021) NIP_DESCRIPTIONS="$NIP_DESCRIPTIONS NIP-021(URI)" ;; 042) NIP_DESCRIPTIONS="$NIP_DESCRIPTIONS NIP-042(Auth)" ;; 044) NIP_DESCRIPTIONS="$NIP_DESCRIPTIONS NIP-044(Encrypt)" ;; 059) NIP_DESCRIPTIONS="$NIP_DESCRIPTIONS NIP-059(Gift-Wrap)" ;; diff --git a/nostr_core/core_relay_pool.c b/nostr_core/core_relay_pool.c index 22a15ac9..ce07f71f 100644 --- a/nostr_core/core_relay_pool.c +++ b/nostr_core/core_relay_pool.c @@ -776,9 +776,6 @@ static void process_relay_message(nostr_relay_pool_t* pool, relay_connection_t* } relay->stats.last_event_time = time(NULL); - - // Debug: Print all message types received - printf("๐Ÿ“จ DEBUG: Received %s message from %s\n", msg_type, relay->url); if (strcmp(msg_type, "EVENT") == 0) { // Handle EVENT message: ["EVENT", subscription_id, event] diff --git a/nostr_core/nip021.c b/nostr_core/nip021.c new file mode 100644 index 00000000..b80f003c --- /dev/null +++ b/nostr_core/nip021.c @@ -0,0 +1,855 @@ +/* + * NOSTR Core Library - NIP-021: nostr: URI scheme + */ + +#include "nip021.h" +#include "nip019.h" // For existing bech32 functions +#include "utils.h" +#include "nostr_common.h" // For error codes +#include +#include +#include +#include +#include "../cjson/cJSON.h" + +// Forward declarations for internal parsing functions +static int parse_nprofile_data(const uint8_t* data, size_t data_len, nostr_nprofile_t* nprofile); +static int parse_nevent_data(const uint8_t* data, size_t data_len, nostr_nevent_t* nevent); +static int parse_naddr_data(const uint8_t* data, size_t data_len, nostr_naddr_t* naddr); + +// Bech32 constants and functions (copied from nip019.c for internal use) +static const char bech32_charset[] = "qpzry9x8gf2tvdw0s3jn54khce6mua7l"; +static const int8_t bech32_charset_rev[128] = { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 15, -1, 10, 17, 21, 20, 26, 30, 7, 5, -1, -1, -1, -1, -1, -1, + -1, 29, -1, 24, 13, 25, 9, 8, 23, -1, 18, 22, 31, 27, 19, -1, + 1, 0, 3, 16, 11, 28, 12, 14, 6, 4, 2, -1, -1, -1, -1, -1, + -1, 29, -1, 24, 13, 25, 9, 8, 23, -1, 18, 22, 31, 27, 19, -1, + 1, 0, 3, 16, 11, 28, 12, 14, 6, 4, 2, -1, -1, -1, -1, -1 +}; + +static uint32_t bech32_polymod_step(uint32_t pre) { + uint8_t b = pre >> 25; + return ((pre & 0x1FFFFFF) << 5) ^ + (-((b >> 0) & 1) & 0x3b6a57b2UL) ^ + (-((b >> 1) & 1) & 0x26508e6dUL) ^ + (-((b >> 2) & 1) & 0x1ea119faUL) ^ + (-((b >> 3) & 1) & 0x3d4233ddUL) ^ + (-((b >> 4) & 1) & 0x2a1462b3UL); +} + +static int convert_bits(uint8_t *out, size_t *outlen, int outbits, const uint8_t *in, size_t inlen, int inbits, int pad) { + uint32_t val = 0; + int bits = 0; + uint32_t maxv = (((uint32_t)1) << outbits) - 1; + *outlen = 0; + while (inlen--) { + val = (val << inbits) | *(in++); + bits += inbits; + while (bits >= outbits) { + bits -= outbits; + out[(*outlen)++] = (val >> bits) & maxv; + } + } + if (pad) { + if (bits) { + out[(*outlen)++] = (val << (outbits - bits)) & maxv; + } + } else if (((val << (outbits - bits)) & maxv) || bits >= inbits) { + return 0; + } + return 1; +} + +static int bech32_encode(char *output, const char *hrp, const uint8_t *data, size_t data_len) { + uint32_t chk = 1; + size_t i, hrp_len = strlen(hrp); + + for (i = 0; i < hrp_len; ++i) { + int ch = hrp[i]; + if (ch < 33 || ch > 126) return 0; + if (ch >= 'A' && ch <= 'Z') return 0; + chk = bech32_polymod_step(chk) ^ (ch >> 5); + } + + chk = bech32_polymod_step(chk); + for (i = 0; i < hrp_len; ++i) { + chk = bech32_polymod_step(chk) ^ (hrp[i] & 0x1f); + *(output++) = hrp[i]; + } + + *(output++) = '1'; + for (i = 0; i < data_len; ++i) { + if (*data >> 5) return 0; + chk = bech32_polymod_step(chk) ^ (*data); + *(output++) = bech32_charset[*(data++)]; + } + + for (i = 0; i < 6; ++i) { + chk = bech32_polymod_step(chk); + } + + chk ^= 1; + for (i = 0; i < 6; ++i) { + *(output++) = bech32_charset[(chk >> ((5 - i) * 5)) & 0x1f]; + } + + *output = 0; + return 1; +} + +static int bech32_decode(const char* input, const char* hrp, unsigned char* data, size_t* data_len) { + if (!input || !hrp || !data || !data_len) { + return 0; + } + + size_t input_len = strlen(input); + size_t hrp_len = strlen(hrp); + + if (input_len < hrp_len + 7) return 0; + if (strncmp(input, hrp, hrp_len) != 0) return 0; + if (input[hrp_len] != '1') return 0; + + const char* data_part = input + hrp_len + 1; + size_t data_part_len = input_len - hrp_len - 1; + + uint8_t values[256]; + for (size_t i = 0; i < data_part_len; i++) { + unsigned char c = (unsigned char)data_part[i]; + if (c >= 128) return 0; + int8_t val = bech32_charset_rev[c]; + if (val == -1) return 0; + values[i] = (uint8_t)val; + } + + if (data_part_len < 6) return 0; + + uint32_t chk = 1; + for (size_t i = 0; i < hrp_len; i++) { + chk = bech32_polymod_step(chk) ^ (hrp[i] >> 5); + } + chk = bech32_polymod_step(chk); + for (size_t i = 0; i < hrp_len; i++) { + chk = bech32_polymod_step(chk) ^ (hrp[i] & 0x1f); + } + for (size_t i = 0; i < data_part_len; i++) { + chk = bech32_polymod_step(chk) ^ values[i]; + } + + if (chk != 1) return 0; + + size_t payload_len = data_part_len - 6; + size_t decoded_len; + if (!convert_bits(data, &decoded_len, 8, values, payload_len, 5, 0)) { + return 0; + } + + *data_len = decoded_len; + return 1; +} + +// TLV (Type-Length-Value) constants for structured data +#define TLV_SPECIAL 0 +#define TLV_RELAY 1 +#define TLV_AUTHOR 2 +#define TLV_KIND 3 +#define TLV_CREATED_AT 4 +#define TLV_IDENTIFIER 5 + +// Forward declarations for internal functions +static int tlv_encode(const uint8_t* data, size_t data_len, uint8_t type, uint8_t** output, size_t* output_len); +static int encode_structured_bech32(const char* hrp, const uint8_t* data, size_t data_len, char* output, size_t output_size); +static int decode_structured_bech32(const char* input, const char* expected_hrp, uint8_t** data, size_t* data_len); + +// Utility function to duplicate string array (removed - not used) + +// Free string array +static void free_string_array(char** array, int count) { + if (!array) return; + for (int i = 0; i < count; i++) { + free(array[i]); + } + free(array); +} + +// TLV encoding: Type (1 byte) + Length (1 byte) + Value +static int tlv_encode(const uint8_t* data, size_t data_len, uint8_t type, uint8_t** output, size_t* output_len) { + if (data_len > 255) return 0; // Length must fit in 1 byte + + *output_len = 2 + data_len; + *output = malloc(*output_len); + if (!*output) return 0; + + (*output)[0] = type; + (*output)[1] = (uint8_t)data_len; + memcpy(*output + 2, data, data_len); + return 1; +} + +// TLV decoding (removed - not used) + +// Encode structured data to bech32 +static int encode_structured_bech32(const char* hrp, const uint8_t* data, size_t data_len, char* output, size_t output_size) { + // For simple cases like note (32 bytes), use the existing key encoding + if (strcmp(hrp, "note") == 0 && data_len == 32) { + return nostr_key_to_bech32(data, "note", output); + } + + uint8_t conv[256]; + size_t conv_len; + + if (!convert_bits(conv, &conv_len, 5, data, data_len, 8, 1)) { + return NOSTR_ERROR_INVALID_INPUT; + } + + if (!bech32_encode(output, hrp, conv, conv_len)) { + return NOSTR_ERROR_INVALID_INPUT; + } + + if (strlen(output) >= output_size) { + return NOSTR_ERROR_INVALID_INPUT; + } + + return NOSTR_SUCCESS; +} + +// Decode structured bech32 data +static int decode_structured_bech32(const char* input, const char* expected_hrp, uint8_t** data, size_t* data_len) { + // bech32_decode already converts from 5-bit to 8-bit internally + *data = malloc(256); // Max size + if (!*data) return NOSTR_ERROR_MEMORY_FAILED; + + if (!bech32_decode(input, expected_hrp, *data, data_len)) { + free(*data); + return NOSTR_ERROR_INVALID_INPUT; + } + + return NOSTR_SUCCESS; +} + +// Detect URI type from string +nostr_uri_type_t nostr_detect_uri_type(const char* uri) { + if (!uri) return NOSTR_URI_INVALID; + + // Check for nostr: prefix + if (strncmp(uri, "nostr:", 6) != 0) { + return NOSTR_URI_INVALID; + } + + const char* bech32_part = uri + 6; + + // Check prefixes + if (strncmp(bech32_part, "npub1", 5) == 0) return NOSTR_URI_NPUB; + if (strncmp(bech32_part, "nsec1", 5) == 0) return NOSTR_URI_NSEC; + if (strncmp(bech32_part, "note1", 5) == 0) return NOSTR_URI_NOTE; + if (strncmp(bech32_part, "nprofile1", 9) == 0) return NOSTR_URI_NPROFILE; + if (strncmp(bech32_part, "nevent1", 7) == 0) return NOSTR_URI_NEVENT; + if (strncmp(bech32_part, "naddr1", 6) == 0) return NOSTR_URI_NADDR; + + return NOSTR_URI_INVALID; +} + +// Free URI result resources +void nostr_uri_result_free(nostr_uri_result_t* result) { + if (!result) return; + + switch (result->type) { + case NOSTR_URI_NPROFILE: + free_string_array(result->data.nprofile.relays, result->data.nprofile.relay_count); + break; + case NOSTR_URI_NEVENT: + free_string_array(result->data.nevent.relays, result->data.nevent.relay_count); + free(result->data.nevent.author); + free(result->data.nevent.kind); + free(result->data.nevent.created_at); + break; + case NOSTR_URI_NADDR: + free(result->data.naddr.identifier); + free_string_array(result->data.naddr.relays, result->data.naddr.relay_count); + break; + default: + break; + } +} + +// Main URI parsing function +int nostr_parse_uri(const char* uri, nostr_uri_result_t* result) { + if (!uri || !result) { + return NOSTR_ERROR_INVALID_INPUT; + } + + memset(result, 0, sizeof(nostr_uri_result_t)); + + nostr_uri_type_t type = nostr_detect_uri_type(uri); + if (type == NOSTR_URI_INVALID) { + return NOSTR_ERROR_INVALID_INPUT; + } + + const char* bech32_part = uri + 6; // Skip "nostr:" + result->type = type; + + int ret; + switch (type) { + case NOSTR_URI_NPUB: { + ret = nostr_decode_npub(bech32_part, result->data.pubkey); + break; + } + case NOSTR_URI_NSEC: { + ret = nostr_decode_nsec(bech32_part, result->data.privkey); + break; + } + case NOSTR_URI_NOTE: { + // Note is similar to npub but with "note" prefix + uint8_t* decoded; + size_t decoded_len; + ret = decode_structured_bech32(bech32_part, "note", &decoded, &decoded_len); + if (ret == NOSTR_SUCCESS) { + if (decoded_len == 32) { + memcpy(result->data.event_id, decoded, 32); + } else { + ret = NOSTR_ERROR_INVALID_INPUT; + } + free(decoded); + } + break; + } + case NOSTR_URI_NPROFILE: { + uint8_t* decoded; + size_t decoded_len; + ret = decode_structured_bech32(bech32_part, "nprofile", &decoded, &decoded_len); + if (ret == NOSTR_SUCCESS) { + ret = parse_nprofile_data(decoded, decoded_len, &result->data.nprofile); + free(decoded); + } + break; + } + case NOSTR_URI_NEVENT: { + uint8_t* decoded; + size_t decoded_len; + ret = decode_structured_bech32(bech32_part, "nevent", &decoded, &decoded_len); + if (ret == NOSTR_SUCCESS) { + ret = parse_nevent_data(decoded, decoded_len, &result->data.nevent); + free(decoded); + } + break; + } + case NOSTR_URI_NADDR: { + uint8_t* decoded; + size_t decoded_len; + ret = decode_structured_bech32(bech32_part, "naddr", &decoded, &decoded_len); + if (ret == NOSTR_SUCCESS) { + ret = parse_naddr_data(decoded, decoded_len, &result->data.naddr); + free(decoded); + } + break; + } + default: + ret = NOSTR_ERROR_INVALID_INPUT; + break; + } + + if (ret != NOSTR_SUCCESS) { + nostr_uri_result_free(result); + memset(result, 0, sizeof(nostr_uri_result_t)); + } + + return ret; +} + +// Parse nprofile structured data +static int parse_nprofile_data(const uint8_t* data, size_t data_len, nostr_nprofile_t* nprofile) { + size_t offset = 0; + + while (offset < data_len) { + if (offset + 2 > data_len) return NOSTR_ERROR_INVALID_INPUT; + + uint8_t type = data[offset]; + uint8_t length = data[offset + 1]; + offset += 2; + + if (offset + length > data_len) return NOSTR_ERROR_INVALID_INPUT; + + switch (type) { + case TLV_SPECIAL: // pubkey + if (length != 32) return NOSTR_ERROR_INVALID_INPUT; + memcpy(nprofile->pubkey, data + offset, 32); + break; + case TLV_RELAY: // relay URL + { + char* relay = malloc(length + 1); + if (!relay) return NOSTR_ERROR_MEMORY_FAILED; + memcpy(relay, data + offset, length); + relay[length] = '\0'; + + char** new_relays = realloc(nprofile->relays, (nprofile->relay_count + 1) * sizeof(char*)); + if (!new_relays) { + free(relay); + return NOSTR_ERROR_MEMORY_FAILED; + } + nprofile->relays = new_relays; + nprofile->relays[nprofile->relay_count++] = relay; + } + break; + default: + // Ignore unknown types + break; + } + offset += length; + } + + return NOSTR_SUCCESS; +} + +// Parse nevent structured data +static int parse_nevent_data(const uint8_t* data, size_t data_len, nostr_nevent_t* nevent) { + size_t offset = 0; + + while (offset < data_len) { + if (offset + 2 > data_len) return NOSTR_ERROR_INVALID_INPUT; + + uint8_t type = data[offset]; + uint8_t length = data[offset + 1]; + offset += 2; + + if (offset + length > data_len) return NOSTR_ERROR_INVALID_INPUT; + + switch (type) { + case TLV_SPECIAL: // event ID + if (length != 32) return NOSTR_ERROR_INVALID_INPUT; + memcpy(nevent->event_id, data + offset, 32); + break; + case TLV_RELAY: // relay URL + { + char* relay = malloc(length + 1); + if (!relay) return NOSTR_ERROR_MEMORY_FAILED; + memcpy(relay, data + offset, length); + relay[length] = '\0'; + + char** new_relays = realloc(nevent->relays, (nevent->relay_count + 1) * sizeof(char*)); + if (!new_relays) { + free(relay); + return NOSTR_ERROR_MEMORY_FAILED; + } + nevent->relays = new_relays; + nevent->relays[nevent->relay_count++] = relay; + } + break; + case TLV_AUTHOR: // author pubkey + if (length != 32) return NOSTR_ERROR_INVALID_INPUT; + nevent->author = malloc(32); + if (!nevent->author) return NOSTR_ERROR_MEMORY_FAILED; + memcpy(nevent->author, data + offset, 32); + break; + case TLV_KIND: // kind + if (length != 4) return NOSTR_ERROR_INVALID_INPUT; + nevent->kind = malloc(sizeof(int)); + if (!nevent->kind) return NOSTR_ERROR_MEMORY_FAILED; + *nevent->kind = (data[offset] << 24) | (data[offset+1] << 16) | (data[offset+2] << 8) | data[offset+3]; + break; + case TLV_CREATED_AT: // created_at + if (length != 8) return NOSTR_ERROR_INVALID_INPUT; + nevent->created_at = malloc(sizeof(time_t)); + if (!nevent->created_at) return NOSTR_ERROR_MEMORY_FAILED; + *nevent->created_at = ((time_t)data[offset] << 56) | ((time_t)data[offset+1] << 48) | + ((time_t)data[offset+2] << 40) | ((time_t)data[offset+3] << 32) | + ((time_t)data[offset+4] << 24) | ((time_t)data[offset+5] << 16) | + ((time_t)data[offset+6] << 8) | (time_t)data[offset+7]; + break; + default: + // Ignore unknown types + break; + } + offset += length; + } + + return NOSTR_SUCCESS; +} + +// Parse naddr structured data +static int parse_naddr_data(const uint8_t* data, size_t data_len, nostr_naddr_t* naddr) { + size_t offset = 0; + + while (offset < data_len) { + if (offset + 2 > data_len) return NOSTR_ERROR_INVALID_INPUT; + + uint8_t type = data[offset]; + uint8_t length = data[offset + 1]; + offset += 2; + + if (offset + length > data_len) return NOSTR_ERROR_INVALID_INPUT; + + switch (type) { + case TLV_IDENTIFIER: // identifier + naddr->identifier = malloc(length + 1); + if (!naddr->identifier) return NOSTR_ERROR_MEMORY_FAILED; + memcpy(naddr->identifier, data + offset, length); + naddr->identifier[length] = '\0'; + break; + case TLV_SPECIAL: // pubkey + if (length != 32) return NOSTR_ERROR_INVALID_INPUT; + memcpy(naddr->pubkey, data + offset, 32); + break; + case TLV_KIND: // kind + if (length != 4) return NOSTR_ERROR_INVALID_INPUT; + naddr->kind = (data[offset] << 24) | (data[offset+1] << 16) | (data[offset+2] << 8) | data[offset+3]; + break; + case TLV_RELAY: // relay URL + { + char* relay = malloc(length + 1); + if (!relay) return NOSTR_ERROR_MEMORY_FAILED; + memcpy(relay, data + offset, length); + relay[length] = '\0'; + + char** new_relays = realloc(naddr->relays, (naddr->relay_count + 1) * sizeof(char*)); + if (!new_relays) { + free(relay); + return NOSTR_ERROR_MEMORY_FAILED; + } + naddr->relays = new_relays; + naddr->relays[naddr->relay_count++] = relay; + } + break; + default: + // Ignore unknown types + break; + } + offset += length; + } + + return NOSTR_SUCCESS; +} + + +// URI construction functions + +int nostr_build_uri_npub(const unsigned char* pubkey, char* output, size_t output_size) { + if (!pubkey || !output || output_size < 70) { + return NOSTR_ERROR_INVALID_INPUT; + } + + char bech32[100]; + int ret = nostr_key_to_bech32(pubkey, "npub", bech32); + if (ret != NOSTR_SUCCESS) return ret; + + size_t len = strlen(bech32); + if (len + 7 >= output_size) return NOSTR_ERROR_INVALID_INPUT; + + strcpy(output, "nostr:"); + strcpy(output + 6, bech32); + return NOSTR_SUCCESS; +} + +int nostr_build_uri_nsec(const unsigned char* privkey, char* output, size_t output_size) { + if (!privkey || !output || output_size < 70) { + return NOSTR_ERROR_INVALID_INPUT; + } + + char bech32[100]; + int ret = nostr_key_to_bech32(privkey, "nsec", bech32); + if (ret != NOSTR_SUCCESS) return ret; + + size_t len = strlen(bech32); + if (len + 7 >= output_size) return NOSTR_ERROR_INVALID_INPUT; + + strcpy(output, "nostr:"); + strcpy(output + 6, bech32); + return NOSTR_SUCCESS; +} + +// Helper to build URI with prefix +static int build_uri_with_prefix(const char* bech32, char* output, size_t output_size) { + size_t len = strlen(bech32); + if (len + 7 >= output_size) return NOSTR_ERROR_INVALID_INPUT; + + strcpy(output, "nostr:"); + strcpy(output + 6, bech32); + return NOSTR_SUCCESS; +} + +int nostr_build_uri_note(const unsigned char* event_id, char* output, size_t output_size) { + if (!event_id || !output || output_size < 70) { + return NOSTR_ERROR_INVALID_INPUT; + } + + char bech32[100]; + int ret = encode_structured_bech32("note", event_id, 32, bech32, sizeof(bech32)); + if (ret != NOSTR_SUCCESS) return ret; + + return build_uri_with_prefix(bech32, output, output_size); +} + +int nostr_build_uri_nprofile(const unsigned char* pubkey, const char** relays, int relay_count, + char* output, size_t output_size) { + if (!pubkey || !output) return NOSTR_ERROR_INVALID_INPUT; + + // Build TLV data + uint8_t* data = NULL; + size_t data_len = 0; + + // Add pubkey (special) + uint8_t* pubkey_tlv; + size_t pubkey_tlv_len; + if (!tlv_encode(pubkey, 32, TLV_SPECIAL, &pubkey_tlv, &pubkey_tlv_len)) { + return NOSTR_ERROR_INVALID_INPUT; + } + + data = realloc(data, data_len + pubkey_tlv_len); + if (!data) { + free(pubkey_tlv); + return NOSTR_ERROR_MEMORY_FAILED; + } + memcpy(data + data_len, pubkey_tlv, pubkey_tlv_len); + data_len += pubkey_tlv_len; + free(pubkey_tlv); + + // Add relays + for (int i = 0; i < relay_count; i++) { + size_t relay_len = strlen(relays[i]); + uint8_t* relay_tlv; + size_t relay_tlv_len; + if (!tlv_encode((uint8_t*)relays[i], relay_len, TLV_RELAY, &relay_tlv, &relay_tlv_len)) { + free(data); + return NOSTR_ERROR_INVALID_INPUT; + } + + data = realloc(data, data_len + relay_tlv_len); + if (!data) { + free(relay_tlv); + return NOSTR_ERROR_MEMORY_FAILED; + } + memcpy(data + data_len, relay_tlv, relay_tlv_len); + data_len += relay_tlv_len; + free(relay_tlv); + } + + // Encode to bech32 + char bech32[500]; + int ret = encode_structured_bech32("nprofile", data, data_len, bech32, sizeof(bech32)); + free(data); + if (ret != NOSTR_SUCCESS) return ret; + + return build_uri_with_prefix(bech32, output, output_size); +} + +int nostr_build_uri_nevent(const unsigned char* event_id, const char** relays, int relay_count, + const unsigned char* author, int kind, time_t created_at, + char* output, size_t output_size) { + if (!event_id || !output) return NOSTR_ERROR_INVALID_INPUT; + + // Build TLV data + uint8_t* data = NULL; + size_t data_len = 0; + + // Add event_id (special) + uint8_t* event_tlv; + size_t event_tlv_len; + if (!tlv_encode(event_id, 32, TLV_SPECIAL, &event_tlv, &event_tlv_len)) { + return NOSTR_ERROR_INVALID_INPUT; + } + + data = realloc(data, data_len + event_tlv_len); + if (!data) { + free(event_tlv); + return NOSTR_ERROR_MEMORY_FAILED; + } + memcpy(data + data_len, event_tlv, event_tlv_len); + data_len += event_tlv_len; + free(event_tlv); + + // Add relays + for (int i = 0; i < relay_count; i++) { + size_t relay_len = strlen(relays[i]); + uint8_t* relay_tlv; + size_t relay_tlv_len; + if (!tlv_encode((uint8_t*)relays[i], relay_len, TLV_RELAY, &relay_tlv, &relay_tlv_len)) { + free(data); + return NOSTR_ERROR_INVALID_INPUT; + } + + data = realloc(data, data_len + relay_tlv_len); + if (!data) { + free(relay_tlv); + return NOSTR_ERROR_MEMORY_FAILED; + } + memcpy(data + data_len, relay_tlv, relay_tlv_len); + data_len += relay_tlv_len; + free(relay_tlv); + } + + // Add author if provided + if (author) { + uint8_t* author_tlv; + size_t author_tlv_len; + if (!tlv_encode(author, 32, TLV_AUTHOR, &author_tlv, &author_tlv_len)) { + free(data); + return NOSTR_ERROR_INVALID_INPUT; + } + + data = realloc(data, data_len + author_tlv_len); + if (!data) { + free(author_tlv); + return NOSTR_ERROR_MEMORY_FAILED; + } + memcpy(data + data_len, author_tlv, author_tlv_len); + data_len += author_tlv_len; + free(author_tlv); + } + + // Add kind if provided + if (kind >= 0) { + uint8_t kind_bytes[4]; + kind_bytes[0] = (kind >> 24) & 0xFF; + kind_bytes[1] = (kind >> 16) & 0xFF; + kind_bytes[2] = (kind >> 8) & 0xFF; + kind_bytes[3] = kind & 0xFF; + + uint8_t* kind_tlv; + size_t kind_tlv_len; + if (!tlv_encode(kind_bytes, 4, TLV_KIND, &kind_tlv, &kind_tlv_len)) { + free(data); + return NOSTR_ERROR_INVALID_INPUT; + } + + data = realloc(data, data_len + kind_tlv_len); + if (!data) { + free(kind_tlv); + return NOSTR_ERROR_MEMORY_FAILED; + } + memcpy(data + data_len, kind_tlv, kind_tlv_len); + data_len += kind_tlv_len; + free(kind_tlv); + } + + // Add created_at if provided + if (created_at > 0) { + uint8_t time_bytes[8]; + time_bytes[0] = (created_at >> 56) & 0xFF; + time_bytes[1] = (created_at >> 48) & 0xFF; + time_bytes[2] = (created_at >> 40) & 0xFF; + time_bytes[3] = (created_at >> 32) & 0xFF; + time_bytes[4] = (created_at >> 24) & 0xFF; + time_bytes[5] = (created_at >> 16) & 0xFF; + time_bytes[6] = (created_at >> 8) & 0xFF; + time_bytes[7] = created_at & 0xFF; + + uint8_t* time_tlv; + size_t time_tlv_len; + if (!tlv_encode(time_bytes, 8, TLV_CREATED_AT, &time_tlv, &time_tlv_len)) { + free(data); + return NOSTR_ERROR_INVALID_INPUT; + } + + data = realloc(data, data_len + time_tlv_len); + if (!data) { + free(time_tlv); + return NOSTR_ERROR_MEMORY_FAILED; + } + memcpy(data + data_len, time_tlv, time_tlv_len); + data_len += time_tlv_len; + free(time_tlv); + } + + // Encode to bech32 + char bech32[1000]; + int ret = encode_structured_bech32("nevent", data, data_len, bech32, sizeof(bech32)); + free(data); + if (ret != NOSTR_SUCCESS) return ret; + + return build_uri_with_prefix(bech32, output, output_size); +} + +int nostr_build_uri_naddr(const char* identifier, const unsigned char* pubkey, int kind, + const char** relays, int relay_count, char* output, size_t output_size) { + if (!identifier || !pubkey || !output) return NOSTR_ERROR_INVALID_INPUT; + + // Build TLV data + uint8_t* data = NULL; + size_t data_len = 0; + + // Add identifier + size_t id_len = strlen(identifier); + uint8_t* id_tlv; + size_t id_tlv_len; + if (!tlv_encode((uint8_t*)identifier, id_len, TLV_IDENTIFIER, &id_tlv, &id_tlv_len)) { + return NOSTR_ERROR_INVALID_INPUT; + } + + data = realloc(data, data_len + id_tlv_len); + if (!data) { + free(id_tlv); + return NOSTR_ERROR_MEMORY_FAILED; + } + memcpy(data + data_len, id_tlv, id_tlv_len); + data_len += id_tlv_len; + free(id_tlv); + + // Add pubkey (special) + uint8_t* pubkey_tlv; + size_t pubkey_tlv_len; + if (!tlv_encode(pubkey, 32, TLV_SPECIAL, &pubkey_tlv, &pubkey_tlv_len)) { + free(data); + return NOSTR_ERROR_INVALID_INPUT; + } + + data = realloc(data, data_len + pubkey_tlv_len); + if (!data) { + free(pubkey_tlv); + return NOSTR_ERROR_MEMORY_FAILED; + } + memcpy(data + data_len, pubkey_tlv, pubkey_tlv_len); + data_len += pubkey_tlv_len; + free(pubkey_tlv); + + // Add kind + uint8_t kind_bytes[4]; + kind_bytes[0] = (kind >> 24) & 0xFF; + kind_bytes[1] = (kind >> 16) & 0xFF; + kind_bytes[2] = (kind >> 8) & 0xFF; + kind_bytes[3] = kind & 0xFF; + + uint8_t* kind_tlv; + size_t kind_tlv_len; + if (!tlv_encode(kind_bytes, 4, TLV_KIND, &kind_tlv, &kind_tlv_len)) { + free(data); + return NOSTR_ERROR_INVALID_INPUT; + } + + data = realloc(data, data_len + kind_tlv_len); + if (!data) { + free(kind_tlv); + return NOSTR_ERROR_MEMORY_FAILED; + } + memcpy(data + data_len, kind_tlv, kind_tlv_len); + data_len += kind_tlv_len; + free(kind_tlv); + + // Add relays + for (int i = 0; i < relay_count; i++) { + size_t relay_len = strlen(relays[i]); + uint8_t* relay_tlv; + size_t relay_tlv_len; + if (!tlv_encode((uint8_t*)relays[i], relay_len, TLV_RELAY, &relay_tlv, &relay_tlv_len)) { + free(data); + return NOSTR_ERROR_INVALID_INPUT; + } + + data = realloc(data, data_len + relay_tlv_len); + if (!data) { + free(relay_tlv); + return NOSTR_ERROR_MEMORY_FAILED; + } + memcpy(data + data_len, relay_tlv, relay_tlv_len); + data_len += relay_tlv_len; + free(relay_tlv); + } + + // Encode to bech32 + char bech32[1000]; + int ret = encode_structured_bech32("naddr", data, data_len, bech32, sizeof(bech32)); + free(data); + if (ret != NOSTR_SUCCESS) return ret; + + return build_uri_with_prefix(bech32, output, output_size); +} \ No newline at end of file diff --git a/nostr_core/nip021.h b/nostr_core/nip021.h new file mode 100644 index 00000000..9dd2360d --- /dev/null +++ b/nostr_core/nip021.h @@ -0,0 +1,81 @@ +/* + * NOSTR Core Library - NIP-021: nostr: URI scheme + */ + +#ifndef NIP021_H +#define NIP021_H + +#include +#include +#include "nip001.h" + +// URI type enumeration +typedef enum { + NOSTR_URI_NPUB, // Simple 32-byte pubkey + NOSTR_URI_NSEC, // Simple 32-byte privkey + NOSTR_URI_NOTE, // Simple 32-byte event ID + NOSTR_URI_NPROFILE, // Structured: pubkey + relays + NOSTR_URI_NEVENT, // Structured: event ID + relays + metadata + NOSTR_URI_NADDR, // Structured: address + relays + metadata + NOSTR_URI_INVALID +} nostr_uri_type_t; + +// Structured data types for complex URIs +typedef struct { + unsigned char pubkey[32]; + char** relays; + int relay_count; +} nostr_nprofile_t; + +typedef struct { + unsigned char event_id[32]; + char** relays; + int relay_count; + unsigned char* author; // Optional, 32 bytes if present + int* kind; // Optional + time_t* created_at; // Optional +} nostr_nevent_t; + +typedef struct { + char* identifier; + unsigned char pubkey[32]; + int kind; + char** relays; + int relay_count; +} nostr_naddr_t; + +// Unified URI result structure +typedef struct { + nostr_uri_type_t type; + union { + unsigned char pubkey[32]; // For NPUB + unsigned char privkey[32]; // For NSEC + unsigned char event_id[32]; // For NOTE + nostr_nprofile_t nprofile; // For NPROFILE + nostr_nevent_t nevent; // For NEVENT + nostr_naddr_t naddr; // For NADDR + } data; +} nostr_uri_result_t; + +// Function declarations + +// Main parsing function - unified entry point +int nostr_parse_uri(const char* uri, nostr_uri_result_t* result); + +// URI construction functions +int nostr_build_uri_npub(const unsigned char* pubkey, char* output, size_t output_size); +int nostr_build_uri_nsec(const unsigned char* privkey, char* output, size_t output_size); +int nostr_build_uri_note(const unsigned char* event_id, char* output, size_t output_size); +int nostr_build_uri_nprofile(const unsigned char* pubkey, const char** relays, int relay_count, + char* output, size_t output_size); +int nostr_build_uri_nevent(const unsigned char* event_id, const char** relays, int relay_count, + const unsigned char* author, int kind, time_t created_at, + char* output, size_t output_size); +int nostr_build_uri_naddr(const char* identifier, const unsigned char* pubkey, int kind, + const char** relays, int relay_count, char* output, size_t output_size); + +// Utility functions +void nostr_uri_result_free(nostr_uri_result_t* result); +nostr_uri_type_t nostr_detect_uri_type(const char* uri); + +#endif // NIP021_H \ No newline at end of file diff --git a/nostr_core/nostr_core.h b/nostr_core/nostr_core.h index 8fa8a9d9..4460f8f6 100644 --- a/nostr_core/nostr_core.h +++ b/nostr_core/nostr_core.h @@ -2,10 +2,10 @@ #define NOSTR_CORE_H // Version information (auto-updated by increment_and_push.sh) -#define VERSION "v0.4.4" +#define VERSION "v0.4.5" #define VERSION_MAJOR 0 #define VERSION_MINOR 4 -#define VERSION_PATCH 4 +#define VERSION_PATCH 5 /* * NOSTR Core Library - Complete API Reference @@ -177,6 +177,7 @@ extern "C" { #include "nip013.h" // Proof of Work #include "nip017.h" // Private Direct Messages #include "nip019.h" // Bech32 encoding (nsec/npub) +#include "nip021.h" // nostr: URI scheme #include "nip042.h" // Authentication of clients to relays #include "nip044.h" // Encryption (modern) #include "nip059.h" // Gift Wrap diff --git a/pool.log b/pool.log index dbb82199..6d639045 100644 --- a/pool.log +++ b/pool.log @@ -1,74 +1,1566 @@ -[Thu Oct 2 19:30:49 2025] ๐Ÿš€ Pool test started +[Fri Oct 3 04:46:58 2025] ๐Ÿš€ Pool test started -[Thu Oct 2 19:30:52 2025] ๐ŸŠ Pool started with default relay +[Fri Oct 3 04:47:06 2025] ๐ŸŠ Pool started with default relay -[Thu Oct 2 19:31:05 2025] โž• Relay added: ws://127.0.0.1:7777 - -[Thu Oct 2 19:31:24 2025] ๐Ÿ” New subscription created (ID: 1) +[Fri Oct 3 04:47:40 2025] ๐Ÿ” New subscription created (ID: 1) Filter: { - "kinds": [15555], + "kinds": [1], + "since": 1759481255, "limit": 10 } -[Thu Oct 2 19:31:24 2025] ๐Ÿ“จ EVENT from ws://127.0.0.1:7777 -โ”œโ”€โ”€ ID: 9af94cf163a2... +[Fri Oct 3 04:47:40 2025] ๐Ÿ“‹ EOSE received - 0 events collected + +[Fri Oct 3 04:48:09 2025] โž• Relay added: wss://nos.lol + +[Fri Oct 3 04:49:01 2025] ๐Ÿ” New subscription created (ID: 2) +Filter: { + "since": 1759481338, + "limit": 10 +} + +[Fri Oct 3 04:49:02 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: d20683a8bef0... +โ”œโ”€โ”€ Pubkey: fda2c930fc10... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481342 +โ””โ”€โ”€ Content: GGmq+90RnCnnuCQpWuqP1N9s0651oxTlY3Tu+WLVsmw9lrIEPeo0Bzn8/b2NxxhaD9dHytmLkDbysjlMMzVrTw==?iv=bRFFW... + +[Fri Oct 3 04:49:02 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 0f5c64adc2b2... +โ”œโ”€โ”€ Pubkey: 4e19bf35f05a... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481340 +โ””โ”€โ”€ Content: OBM74wU9m2upr5SZKuqVu7gusod0GyPlkz+0npcp0xEDTLZv3MiD4bF862G3XttXeT9wm3ZMn4izTiw9NLMJiw==?iv=M27y0... + +[Fri Oct 3 04:49:02 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: f9b523254bf6... +โ”œโ”€โ”€ Pubkey: 005a5052b942... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481339 +โ””โ”€โ”€ Content: 17KQ2E9+65kknV2x6HhRTFW186fJI8tfsM0me65Cb+fBlBIq9MYhRb0O/fUMUqAaRE4BG9KkZ8EPWQvQcs0a6Q==?iv=khPOF... + +[Fri Oct 3 04:49:02 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: b1ef6b14d735... +โ”œโ”€โ”€ Pubkey: fba1bbd8ab57... +โ”œโ”€โ”€ Kind: 5 +โ”œโ”€โ”€ Created: 1759481338 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:49:02 2025] ๐Ÿ“‹ EOSE received - 0 events collected + +[Fri Oct 3 04:49:05 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 1cc69bbda533... +โ”œโ”€โ”€ Pubkey: 87050b491524... +โ”œโ”€โ”€ Kind: 10002 +โ”œโ”€โ”€ Created: 1759481344 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:49:06 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 27f48b699bb1... +โ”œโ”€โ”€ Pubkey: 87050b491524... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481344 +โ””โ”€โ”€ Content: {"name":"Yahoo!ใƒ‹ใƒฅใƒผใ‚นbot","about":"Yahoo!ใƒ‹ใƒฅใƒผใ‚นใ‚’RSSใงๅ–ๅพ—ใ—ใฆ15ๅˆ†ใŠใใซๆŠ•... + +[Fri Oct 3 04:49:07 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: 44838166608b... โ”œโ”€โ”€ Pubkey: e568a76a4f88... โ”œโ”€โ”€ Kind: 15555 -โ”œโ”€โ”€ Created: 1759447876 +โ”œโ”€โ”€ Created: 1759481347 โ””โ”€โ”€ Content: ๐Ÿ“Š Bitcoin Mempool Status -Pending Transactions: 3,255 -Total Size: 1.82 MB -Memory Usage: 3.4% +Pending Transactions: 5,525 +Total Size: 2.19 MB +Memory Usage: 4.2% A... -[Thu Oct 2 19:31:24 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net -โ”œโ”€โ”€ ID: 93472348ded1... -โ”œโ”€โ”€ Pubkey: b3f282fe77f4... -โ”œโ”€โ”€ Kind: 15555 -โ”œโ”€โ”€ Created: 1753542367 -โ””โ”€โ”€ Content: ๐Ÿ“Š Bitcoin Mempool Status +[Fri Oct 3 04:49:08 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 2990d842a3cf... +โ”œโ”€โ”€ Pubkey: cd2236014df2... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481348 +โ””โ”€โ”€ Content: GYFx7fT1QlCmfdje20dBdKi/VENAi/wbPpysu/Jea6XFQwLs72EpETGZh8MheSW4Zm+8T+4R6gaHac6xoiMt6Q==?iv=v4Y8T... -Pending Transactions: 9,882 -Total Size: 2.85 MB -Memory Usage: 6.0% -A... +[Fri Oct 3 04:49:08 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 6697f4dfbb59... +โ”œโ”€โ”€ Pubkey: 10f7c7f772dd... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481347 +โ””โ”€โ”€ Content: Ha ha ha ha, read that I initially thought you were saying Iโ€™m a dick crypto broโ€ (excuse me,... -[Thu Oct 2 19:31:24 2025] ๐Ÿ“‹ EOSE received - 0 events collected +[Fri Oct 3 04:49:09 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 3b1f33c1121a... +โ”œโ”€โ”€ Pubkey: 1e3aa9756736... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481348 +โ””โ”€โ”€ Content: vmess://eyJhZGQiOiAiMTAzLjE1OS4yMDYuMzUiLCAiYWlkIjogIjAiLCAiYWxwbiI6ICIiLCAiZnAiOiAiIiwgImhvc3QiO... -[Thu Oct 2 19:31:26 2025] ๐Ÿ“จ EVENT from ws://127.0.0.1:7777 -โ”œโ”€โ”€ ID: 90336970f3cf... +[Fri Oct 3 04:49:09 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 6d6ff4c06337... +โ”œโ”€โ”€ Pubkey: 4a9be43c2a7e... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481346 +โ””โ”€โ”€ Content: Gotta love the arrogance of thinking you know better than almost 20,000 climate scientists just b... + +[Fri Oct 3 04:49:09 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 864505dde6c3... +โ”œโ”€โ”€ Pubkey: fba1bbd8ab57... +โ”œโ”€โ”€ Kind: 5 +โ”œโ”€โ”€ Created: 1759481349 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:49:09 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 263cd13d28d6... +โ”œโ”€โ”€ Pubkey: a4132de3f6fe... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481347 +โ””โ”€โ”€ Content: {"name":"RSS-to-Nostr of Al Jazeera English","about":"RSS-to-Nostr feed of Al Jazeera English\nMo... + +[Fri Oct 3 04:49:09 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 9f0266fd87b5... +โ”œโ”€โ”€ Pubkey: a4132de3f6fe... +โ”œโ”€โ”€ Kind: 3 +โ”œโ”€โ”€ Created: 1759481349 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:49:10 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: e24a05cd3c2c... +โ”œโ”€โ”€ Pubkey: 1dbaf7d631fc... +โ”œโ”€โ”€ Kind: 20000 +โ”œโ”€โ”€ Created: 1759481350 +โ””โ”€โ”€ Content: ะ›ะตะผัƒั€ั‹ ะฑะตะท ะธะฝะตั‚ะฐ ะพัั‚ะฐะปะธััŒ + +[Fri Oct 3 04:49:12 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: d6352147e185... +โ”œโ”€โ”€ Pubkey: 06f4638e1640... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481351 +โ””โ”€โ”€ Content: ๐Ÿฅฐ๐Ÿฅฐ + + + +[Fri Oct 3 04:49:12 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 85cba6515d0b... +โ”œโ”€โ”€ Pubkey: 2ce6eab2e7fc... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481351 +โ””โ”€โ”€ Content: ๐Ÿซก + +[Fri Oct 3 04:49:13 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: b163f750a12a... +โ”œโ”€โ”€ Pubkey: 37b43fd9346e... +โ”œโ”€โ”€ Kind: 30078 +โ”œโ”€โ”€ Created: 1759481353 +โ””โ”€โ”€ Content: Ahb5fjpwg4FYEElHSV38gl26iG9rFVgsXkjpciX3cWTa181vn/DLHa9sT3WW89AtF8ngJ5DiQ7ud8NKSTkDfhoBcpDQu9GCcx... + +[Fri Oct 3 04:49:13 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: d9b58cab0524... +โ”œโ”€โ”€ Pubkey: f4635d901d37... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481353 +โ””โ”€โ”€ Content: 1ThyO9hO0ZdnY/3dIw3c5FRjqd/ALeHRyzvjdBex6fjw1/r/E+oBO+uqPW3/eEv2VXGovsZQTLgbnu8sJIShjA==?iv=tgmRY... + +[Fri Oct 3 04:49:13 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 9a7c44d036a9... +โ”œโ”€โ”€ Pubkey: 45b35521c312... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481358 +โ””โ”€โ”€ Content: https://image.nostr.build/042c7d7d1a50731f5f667c6da77ddbbf28fecb4418bb8de26763d6689257a174.jpg + +[Fri Oct 3 04:49:14 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 67bd1dc52108... +โ”œโ”€โ”€ Pubkey: b869548bf2f5... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481354 +โ””โ”€โ”€ Content: qRiHDdB/6dBIR1r8MWdWmReC1H/RjPTJ30qFACpTQIVbvcWw+IMb9VLXiIPYpt925ZX/jXOnITXPm3Nh2PKg6g==?iv=U4os4... + +[Fri Oct 3 04:49:15 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 3141d6144adb... +โ”œโ”€โ”€ Pubkey: 8921652e6f2e... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481355 +โ””โ”€โ”€ Content: bGOb0ux3HgRmIAr8WF5V1skOuE2+YG18GuuH0bGkSaA0q5MKJMLPhFQCe42Lx9Pdp1Nf7V+k/BMOWAM6FotsKw==?iv=Ipdik... + +[Fri Oct 3 04:49:16 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 747c506cd79b... +โ”œโ”€โ”€ Pubkey: 456f5df2aa0d... +โ”œโ”€โ”€ Kind: 10002 +โ”œโ”€โ”€ Created: 1759481354 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:49:16 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: bd051b218377... +โ”œโ”€โ”€ Pubkey: 451bbdb2caa4... +โ”œโ”€โ”€ Kind: 10002 +โ”œโ”€โ”€ Created: 1759481355 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:49:16 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: d69ca7518e6a... +โ”œโ”€โ”€ Pubkey: 456f5df2aa0d... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481354 +โ””โ”€โ”€ Content: {"name":"Disclose.tv","about":"Observing world events unfold in the grand theater of our time.\n\... + +[Fri Oct 3 04:49:17 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: ca85b756856c... โ”œโ”€โ”€ Pubkey: e568a76a4f88... โ”œโ”€โ”€ Kind: 15555 -โ”œโ”€โ”€ Created: 1759447886 +โ”œโ”€โ”€ Created: 1759481357 โ””โ”€โ”€ Content: ๐Ÿ“Š Bitcoin Mempool Status -Pending Transactions: 3,295 -Total Size: 1.83 MB -Memory Usage: 3.4% +Pending Transactions: 5,549 +Total Size: 2.19 MB +Memory Usage: 4.2% A... -[Thu Oct 2 19:32:06 2025] ๐Ÿ“จ EVENT from ws://127.0.0.1:7777 -โ”œโ”€โ”€ ID: 56e8e931f211... +[Fri Oct 3 04:49:18 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: 9b0ba5727cf9... +โ”œโ”€โ”€ Pubkey: 1dbaf7d631fc... +โ”œโ”€โ”€ Kind: 20000 +โ”œโ”€โ”€ Created: 1759481358 +โ””โ”€โ”€ Content: @GHZ#d648 ะดะฐ, ะบะพะฝะตั‡ะฝะพ + +[Fri Oct 3 04:49:18 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 074a4ab3b5c0... +โ”œโ”€โ”€ Pubkey: aa6b49bef060... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481360 +โ””โ”€โ”€ Content: UqjiJp3FgDFpTC8kQGcDWurIcTrV9qcPl7uViTa1bTsJZiGcylkXk6E9FEr49dXpqV64IFrO1K83hRy0zIen+w==?iv=C53OC... + +[Fri Oct 3 04:49:20 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: fa70c8d38741... +โ”œโ”€โ”€ Pubkey: 95939b99059c... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481360 +โ””โ”€โ”€ Content: N0KQPDepXcZKmyuWtZRnR60O8kL9mDADKNsD+kpzjr+iz6q4odNfNm8Vm9qSaZVjCF4yaR00ZCEeFDS0/c91Eg==?iv=SND/H... + +[Fri Oct 3 04:49:21 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 46cab7608ad7... +โ”œโ”€โ”€ Pubkey: 7f0a486c4b47... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481349 +โ””โ”€โ”€ Content: + + +[Fri Oct 3 04:49:22 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 19bb39011925... +โ”œโ”€โ”€ Pubkey: a790a7495795... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481359 +โ””โ”€โ”€ Content: X7ygNfaaXHwz9IK/u68kN1/cQynNY/G6DOFiijPtO1Vytz3aHJIjmOmCOoiu2BSi7wIXv8eHNNkJNyZsjtX8SA==?iv=1zSUp... + +[Fri Oct 3 04:49:22 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 2a85ad943e05... +โ”œโ”€โ”€ Pubkey: 7c17b40889d1... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481361 +โ””โ”€โ”€ Content: + + +[Fri Oct 3 04:49:23 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 80ed59e8e1e9... +โ”œโ”€โ”€ Pubkey: f18571e72c93... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481363 +โ””โ”€โ”€ Content: ๐Ÿ˜‚ + +[Fri Oct 3 04:49:24 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: aadbbace3241... +โ”œโ”€โ”€ Pubkey: 7f0a486c4b47... +โ”œโ”€โ”€ Kind: 3 +โ”œโ”€โ”€ Created: 1759481352 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:49:24 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 67c3eadac347... +โ”œโ”€โ”€ Pubkey: 4b29db7a76f3... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481364 +โ””โ”€โ”€ Content: ๐Ÿ’œ + +[Fri Oct 3 04:49:24 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 4fa2ea1e88b9... +โ”œโ”€โ”€ Pubkey: 1266a86330a5... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481361 +โ””โ”€โ”€ Content: {"name":"RSS-to-Nostr of Nature","about":"RSS-to-Nostr feed of Nature\nMore RSS-To-Nostr can be f... + +[Fri Oct 3 04:49:25 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: ac234062097a... +โ”œโ”€โ”€ Pubkey: 1266a86330a5... +โ”œโ”€โ”€ Kind: 3 +โ”œโ”€โ”€ Created: 1759481365 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:49:26 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 9106cdfb8eea... +โ”œโ”€โ”€ Pubkey: 9b3334b66d04... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481366 +โ””โ”€โ”€ Content: + + +[Fri Oct 3 04:49:27 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 2bc5a446bf6f... +โ”œโ”€โ”€ Pubkey: ebb6df54ef97... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481366 +โ””โ”€โ”€ Content: znpXNoxigcsXsn/RLb3a1gSjlTgQwHQmh7HTHOgp4yGA2jgMvYqS4QYXPBosCgoPtCk5U/sfeqOKIQtUvxqgTw==?iv=9lJYt... + +[Fri Oct 3 04:49:27 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: 2e479971302d... โ”œโ”€โ”€ Pubkey: e568a76a4f88... โ”œโ”€โ”€ Kind: 15555 -โ”œโ”€โ”€ Created: 1759447926 +โ”œโ”€โ”€ Created: 1759481367 โ””โ”€โ”€ Content: ๐Ÿ“Š Bitcoin Mempool Status -Pending Transactions: 3,357 -Total Size: 1.91 MB -Memory Usage: 3.5% +Pending Transactions: 5,592 +Total Size: 2.20 MB +Memory Usage: 4.2% A... -[Thu Oct 2 19:32:16 2025] ๐Ÿ“จ EVENT from ws://127.0.0.1:7777 -โ”œโ”€โ”€ ID: 76682921a11b... +[Fri Oct 3 04:49:28 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 2324a6f9ab5e... +โ”œโ”€โ”€ Pubkey: f18571e72c93... +โ”œโ”€โ”€ Kind: 6 +โ”œโ”€โ”€ Created: 1759481367 +โ””โ”€โ”€ Content: {"id":"c170ef255921cdf85f7e3bdf0d51ca69426ea6b6ddf5da0bb719b04b3d168ca3","pubkey":"38abc08e19dc13... + +[Fri Oct 3 04:49:28 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 23f01698bced... +โ”œโ”€โ”€ Pubkey: 4b29db7a76f3... +โ”œโ”€โ”€ Kind: 6 +โ”œโ”€โ”€ Created: 1759481369 +โ””โ”€โ”€ Content: {"id":"541dd83ccd4782282b9f5e5b9f1ba955735d26353e2d57f315cca9b550dfcc55","pubkey":"b190175cef407c... + +[Fri Oct 3 04:49:28 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 3790209d3e20... +โ”œโ”€โ”€ Pubkey: c6be73b9a274... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481368 +โ””โ”€โ”€ Content: โ ƒโ Šโ žโ ‰โ •โ Šโ  + +โ ผโ ƒโ  โ โ Šโ ‡โ ‡โ Šโ •โ โ ‘โ  + +โ Žโ โ žโ •โ Žโ “โ Š + +๐ŸŽง๐Ÿ”ˆ + +... + +[Fri Oct 3 04:49:29 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: db00d665d2bd... +โ”œโ”€โ”€ Pubkey: 005a5052b942... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481369 +โ””โ”€โ”€ Content: FTUIMKZKRZdocHGaPVMakgB1qyPLFXdHRO+lK1i4w/5S4h5K8PmzGEgQR/83RDyForCTu23YXILfAG2zLGu40w==?iv=dRZCH... + +[Fri Oct 3 04:49:30 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: ae131768c6ec... +โ”œโ”€โ”€ Pubkey: 4e19bf35f05a... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481370 +โ””โ”€โ”€ Content: 2KwbBbVGHfAJjxrnq/byLJPVjaqafL15ysDSvuqijg83fzzoR0763z+lrGO4mWTC8izeaGDfvWtqE0l/xrAInQ==?iv=rD60i... + +[Fri Oct 3 04:49:31 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: c733c8e1f2db... +โ”œโ”€โ”€ Pubkey: e83b66a8ed2d... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481370 +โ””โ”€โ”€ Content: + + +[Fri Oct 3 04:49:31 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: c528121b9426... +โ”œโ”€โ”€ Pubkey: fda2c930fc10... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481372 +โ””โ”€โ”€ Content: uIaxcmOzTXXhS+URd9a9kwZIYugIz0jGrsVMZ4xE15xH6DZMvyMUShgq58URpo5Ja2byQ1cpRMEqFby81I4jtw==?iv=61oyn... + +[Fri Oct 3 04:49:32 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 9577ac5dd286... +โ”œโ”€โ”€ Pubkey: 832b77d5ecb0... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481372 +โ””โ”€โ”€ Content: ๐ŸŸฉBUY BTC with GBP +Price: 90876.6GBP (2%) +BTC: 0.011 +GBP: 1000 +Method: Faster Payments +Created:... + +[Fri Oct 3 04:49:35 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 2c3f21665651... +โ”œโ”€โ”€ Pubkey: 86d2ed40db51... +โ”œโ”€โ”€ Kind: 6300 +โ”œโ”€โ”€ Created: 1759481373 +โ””โ”€โ”€ Content: [["e","7e88304f56cf8f962d5acf1d53ffae3f07ccd750bbd14fdb0221dc3a832b7891"],["e","f20e73aad66cc3d22... + +[Fri Oct 3 04:49:35 2025] ๐Ÿ“‹ EOSE received - 0 events collected + +[Fri Oct 3 04:49:37 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: f3281d6749b7... โ”œโ”€โ”€ Pubkey: e568a76a4f88... โ”œโ”€โ”€ Kind: 15555 -โ”œโ”€โ”€ Created: 1759447936 +โ”œโ”€โ”€ Created: 1759481377 โ””โ”€โ”€ Content: ๐Ÿ“Š Bitcoin Mempool Status -Pending Transactions: 3,363 -Total Size: 1.91 MB -Memory Usage: 3.5% +Pending Transactions: 5,638 +Total Size: 2.21 MB +Memory Usage: 4.3% +A... + +[Fri Oct 3 04:49:38 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 6472bc38da2a... +โ”œโ”€โ”€ Pubkey: 6c015011ac57... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481377 +โ””โ”€โ”€ Content: yQpk398G95opIw45m7BW9HtuQW8vrkVIoSTRYgVaxdggAhZhYqv6kp+PGuzjets0BQr/KiMTjNWeN+x/BykdUA==?iv=sh5pz... + +[Fri Oct 3 04:49:38 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: d6426a74fca0... +โ”œโ”€โ”€ Pubkey: 9f3c476980f2... +โ”œโ”€โ”€ Kind: 10002 +โ”œโ”€โ”€ Created: 1759481376 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:49:38 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: a9ade407f871... +โ”œโ”€โ”€ Pubkey: 9f3c476980f2... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481376 +โ””โ”€โ”€ Content: {"name":"USLUCK","about":"#memes","picture":"https://media.channels.im/accounts/avatars/110/748/6... + +[Fri Oct 3 04:49:40 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 297facb217df... +โ”œโ”€โ”€ Pubkey: 2c7cc62a697e... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481383 +โ””โ”€โ”€ Content: ใ‚ขใƒซใƒˆใƒžใƒณใฏ @ sama ใง่กŒใ‘ใ‚‹ใ‘ใฉไป–ใฎใƒฆใƒผใ‚ถใฏ cameo ใ‚’ไฝฟใฃใฆใชใ„ใจ @ ใง่... + +[Fri Oct 3 04:49:41 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 4eff34df6352... +โ”œโ”€โ”€ Pubkey: 22db9dbc73b2... +โ”œโ”€โ”€ Kind: 13194 +โ”œโ”€โ”€ Created: 1759481380 +โ””โ”€โ”€ Content: pay_invoice make_invoice get_balance get_info list_transactions lookup_invoice + +[Fri Oct 3 04:49:41 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: f3129e5e1eeb... +โ”œโ”€โ”€ Pubkey: fcc2a0bd8f58... +โ”œโ”€โ”€ Kind: 38383 +โ”œโ”€โ”€ Created: 1759481381 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:49:43 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 1c56052f3af2... +โ”œโ”€โ”€ Pubkey: f4635d901d37... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481383 +โ””โ”€โ”€ Content: 9dWLOcK4B10b1tXxVe6bNvZNDK/yBrinUNSXsp34oYXdn8ICjSGEcCnTgo7Zv2eP7zcHPQ5MCTIQ748piHxBJA==?iv=eXlSs... + +[Fri Oct 3 04:49:43 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 9641ce2212d7... +โ”œโ”€โ”€ Pubkey: 22db9dbc73b2... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481383 +โ””โ”€โ”€ Content: fAyC9TSuCOPEQpXz2431BRPwUFu4VWgdo2N/QdBBkwg+PoB4K8d2sv26r7BKtP6K93UEF68STE4LZ0wwA9MP7g==?iv=62HpL... + +[Fri Oct 3 04:49:44 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: d6831a429424... +โ”œโ”€โ”€ Pubkey: b869548bf2f5... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481384 +โ””โ”€โ”€ Content: gfPoMoS/oI0B8Blm6x9Y7kawnP2jn3jgYWh1R+DFUqsdC4Pz/khf5D9o+e8nPKqCNDOTghh52kRHDRV3Nv8utg==?iv=Gs9/N... + +[Fri Oct 3 04:49:45 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 283878ddd4e2... +โ”œโ”€โ”€ Pubkey: 4a9a6519dce5... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481385 +โ””โ”€โ”€ Content: NHsgNFWQo4GYYq4ID8WkgqNyFgHJ/rZIPIR/vL8lUEAc8uY1M7gIdwqcZtbrh0AYyjh2i7hgXm5hNLZ29K1BhA==?iv=cFeMD... + +[Fri Oct 3 04:49:45 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: abd9950cffe0... +โ”œโ”€โ”€ Pubkey: f18571e72c93... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481385 +โ””โ”€โ”€ Content: ๐Ÿ’œ + +[Fri Oct 3 04:49:46 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 5881f260823f... +โ”œโ”€โ”€ Pubkey: 84de35e2584d... +โ”œโ”€โ”€ Kind: 1009 +โ”œโ”€โ”€ Created: 1759481386 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:49:47 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 9fea281c8f5b... +โ”œโ”€โ”€ Pubkey: f18571e72c93... +โ”œโ”€โ”€ Kind: 6 +โ”œโ”€โ”€ Created: 1759481386 +โ””โ”€โ”€ Content: {"id":"a09bfd6ea0f3acdaba3d7608c9dd3e6d074db12e22d3c4b81898e744b7dd27f5","pubkey":"17d277dcce68d6... + +[Fri Oct 3 04:49:47 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: 629c8ec5702f... +โ”œโ”€โ”€ Pubkey: e568a76a4f88... +โ”œโ”€โ”€ Kind: 15555 +โ”œโ”€โ”€ Created: 1759481387 +โ””โ”€โ”€ Content: ๐Ÿ“Š Bitcoin Mempool Status + +Pending Transactions: 5,674 +Total Size: 2.22 MB +Memory Usage: 4.3% +A... + +[Fri Oct 3 04:49:47 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 533451732401... +โ”œโ”€โ”€ Pubkey: 14fb47506cfd... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481385 +โ””โ”€โ”€ Content: KLjNGT0Z+R8YLb8ZoeQF+7aRITuSdaSzqdt+qJ7jO3UV2BjpUv8twhIuzY/SHVuInNPzKEjImc/M5bjjmmJ/lQ==?iv=ewS3q... + +[Fri Oct 3 04:49:47 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 7ef907ab6b4b... +โ”œโ”€โ”€ Pubkey: 82c83a9892d5... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481385 +โ””โ”€โ”€ Content: {"name":"RSS-to-Nostr of The Cradle","about":"RSS-to-Nostr feed of The Cradle\nMore RSS-To-Nostr ... + +[Fri Oct 3 04:49:48 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: df095e616e59... +โ”œโ”€โ”€ Pubkey: 82c83a9892d5... +โ”œโ”€โ”€ Kind: 3 +โ”œโ”€โ”€ Created: 1759481388 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:49:48 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 3a29e55a06e4... +โ”œโ”€โ”€ Pubkey: aa6b49bef060... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481390 +โ””โ”€โ”€ Content: g75pNjNGAAi3Emcpd3m1x5J7n5wZRs/39Vp/EHowImwpcoBWJnaCaFOEOmirECXJ6mTJXzHzDhjnRjG61TosAg==?iv=MRFzA... + +[Fri Oct 3 04:49:49 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: a80e6c128cf5... +โ”œโ”€โ”€ Pubkey: 5813cb0c08b9... +โ”œโ”€โ”€ Kind: 10002 +โ”œโ”€โ”€ Created: 1759481387 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:49:49 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 8c66d931b8ad... +โ”œโ”€โ”€ Pubkey: 06f4638e1640... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481388 +โ””โ”€โ”€ Content: + + +[Fri Oct 3 04:49:50 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: e3d7e89fbb05... +โ”œโ”€โ”€ Pubkey: 5813cb0c08b9... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481387 +โ””โ”€โ”€ Content: {"name":"Catalin Cimpanu","about":"Cybersecurity reporter for Risky Business\n\n#infosec #cyberse... + +[Fri Oct 3 04:49:50 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 694178f999b4... +โ”œโ”€โ”€ Pubkey: 06f4638e1640... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481389 +โ””โ”€โ”€ Content: + + +[Fri Oct 3 04:49:52 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: f0a3917378df... +โ”œโ”€โ”€ Pubkey: a790a7495795... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481391 +โ””โ”€โ”€ Content: HtXhlZIuOjOu5OFHbyr9UgJzI6NQ5FCOvDnk2ABHyVY1XILsyk+a2MqjYd2Z4DpDJkZ07jWK8QyGhHJ+CUeHsg==?iv=wezVL... + +[Fri Oct 3 04:49:56 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: c880574ff3dd... +โ”œโ”€โ”€ Pubkey: 9ca0bd745074... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481396 +โ””โ”€โ”€ Content: There's been prior incidents with auditors in several hotel locations getting assaulted. Even wit... + +[Fri Oct 3 04:49:58 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: b56252fe2113... +โ”œโ”€โ”€ Pubkey: b4a14b700712... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481398 +โ””โ”€โ”€ Content: {"name":"","banner":"https:\/\/m.primal.net\/HQTd.jpg","display_name":"a","lud16":"","about":"a",... + +[Fri Oct 3 04:49:58 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: b9310e3f8b87... +โ”œโ”€โ”€ Pubkey: b4a14b700712... +โ”œโ”€โ”€ Kind: 3 +โ”œโ”€โ”€ Created: 1759481398 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:49:58 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: e44cc0ddeaca... +โ”œโ”€โ”€ Pubkey: b4a14b700712... +โ”œโ”€โ”€ Kind: 10002 +โ”œโ”€โ”€ Created: 1759481398 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:49:59 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: 19154ea11fef... +โ”œโ”€โ”€ Pubkey: 1dbaf7d631fc... +โ”œโ”€โ”€ Kind: 20000 +โ”œโ”€โ”€ Created: 1759481398 +โ””โ”€โ”€ Content: @GHZ#d648 ะฝัƒ ะฒ ะดั€ัƒะณะธั…, ั‡ะตั€ะตะท ะฝะธะผ ะทะฐะนะดะธ ะธ ัƒะฒะธะดะธัˆัŒ ะฐะบั‚ะธะฒะฝั‹ะต + +[Fri Oct 3 04:50:00 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 64ff1a81a800... +โ”œโ”€โ”€ Pubkey: 3f687efdb731... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481398 +โ””โ”€โ”€ Content: {"name":"RSS-to-Nostr of Declassified UK","about":"RSS-to-Nostr feed of Declassified UK\nMore RSS... + +[Fri Oct 3 04:50:00 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: d41daeeb78fa... +โ”œโ”€โ”€ Pubkey: 005a5052b942... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481400 +โ””โ”€โ”€ Content: 9TyTUXb9Dz5gpt3ZHfHSSBNoPYYp7u+DOUIQYovvhR+LEg/3IQ2hN3vhnHxghg3Zcmqx1wSc0rFoUsRXvghJRA==?iv=TSNNd... + +[Fri Oct 3 04:50:00 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 7f40ed74f36a... +โ”œโ”€โ”€ Pubkey: b1b4105a564a... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481400 +โ””โ”€โ”€ Content: โœ„------------ 17:50 ------------โœ„ + +[Fri Oct 3 04:50:00 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 41d5888df3f3... +โ”œโ”€โ”€ Pubkey: 4e19bf35f05a... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481400 +โ””โ”€โ”€ Content: laDc0G+ABe3ovF2heKZn4cyf7wFCyAsWDLf5vrZoroPnc/TTyjYcZJKFyc78WcTjBMKxJeEx5gj/IP6Di76vBw==?iv=K/5tK... + +[Fri Oct 3 04:50:01 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 6e5e9c71206d... +โ”œโ”€โ”€ Pubkey: 3f687efdb731... +โ”œโ”€โ”€ Kind: 3 +โ”œโ”€โ”€ Created: 1759481400 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:50:01 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: e4065f9e000e... +โ”œโ”€โ”€ Pubkey: 665e667acb1a... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481401 +โ””โ”€โ”€ Content: ๐Ÿ’ช + +[Fri Oct 3 04:50:01 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: b05471bdbfcc... +โ”œโ”€โ”€ Pubkey: 81ee947168db... +โ”œโ”€โ”€ Kind: 30311 +โ”œโ”€โ”€ Created: 1759481400 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:50:02 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: a613df03ac18... +โ”œโ”€โ”€ Pubkey: 81ee947168db... +โ”œโ”€โ”€ Kind: 30311 +โ”œโ”€โ”€ Created: 1759481401 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:50:02 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 949ba9fefaa6... +โ”œโ”€โ”€ Pubkey: fda2c930fc10... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481403 +โ””โ”€โ”€ Content: os13iQCLxxOO9Ld+RFmlw5VVPXVmGIPTvhKy/mGtVpqJuq8twA6QHtHmNSnTfhdSaXaZlVV16odA5DYMuvNFuA==?iv=BeEv4... + +[Fri Oct 3 04:50:02 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 0e69d72a83d9... +โ”œโ”€โ”€ Pubkey: 4d4ab737e2fb... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481402 +โ””โ”€โ”€ Content: Dark Forest zine. + +Where parallel societies survive. + +https://files.sovbit.host/media/4d4ab737e2... + +[Fri Oct 3 04:50:03 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 69eff3a792b2... +โ”œโ”€โ”€ Pubkey: ddf3ee335bd2... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481402 +โ””โ”€โ”€ Content: GMโ˜•๏ธโ˜•๏ธ๐ŸŒ…๐Ÿ™โœ๏ธ + +Jesus said to them, +"Woe to you, Chorazin! Woe to you, Bethsaida! +F... + +[Fri Oct 3 04:50:03 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 9f74df1479da... +โ”œโ”€โ”€ Pubkey: 1611cb26f0e9... +โ”œโ”€โ”€ Kind: 30311 +โ”œโ”€โ”€ Created: 1759481402 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:50:03 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 07153dddf7af... +โ”œโ”€โ”€ Pubkey: 06f4638e1640... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481402 +โ””โ”€โ”€ Content: + + +[Fri Oct 3 04:50:03 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 001214469369... +โ”œโ”€โ”€ Pubkey: 1611cb26f0e9... +โ”œโ”€โ”€ Kind: 30311 +โ”œโ”€โ”€ Created: 1759481403 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:50:04 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 5fbcf4b17462... +โ”œโ”€โ”€ Pubkey: 364ff74823ba... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481402 +โ””โ”€โ”€ Content: {"name":"RSS-to-Nostr of MintPress News","about":"RSS-to-Nostr feed of MintPress News\nMore RSS-T... + +[Fri Oct 3 04:50:04 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 974d31fa7a57... +โ”œโ”€โ”€ Pubkey: e2b8ba3e6f7d... +โ”œโ”€โ”€ Kind: 3 +โ”œโ”€โ”€ Created: 1759481402 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:50:04 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 9ff22a0a02ba... +โ”œโ”€โ”€ Pubkey: 06f4638e1640... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481404 +โ””โ”€โ”€ Content: + + +[Fri Oct 3 04:50:04 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: bde9deaab575... +โ”œโ”€โ”€ Pubkey: 364ff74823ba... +โ”œโ”€โ”€ Kind: 3 +โ”œโ”€โ”€ Created: 1759481404 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:50:05 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 2f0cf5a90797... +โ”œโ”€โ”€ Pubkey: 665e667acb1a... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481406 +โ””โ”€โ”€ Content: GM ๐ŸŒž + +[Fri Oct 3 04:50:06 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 39c875ef9cb8... +โ”œโ”€โ”€ Pubkey: bf1b1eca75fc... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481404 +โ””โ”€โ”€ Content: {"name":"RSS-to-Nostr of Slashdot","about":"RSS-to-Nostr feed of Slashdot\nMore RSS-To-Nostr can ... + +[Fri Oct 3 04:50:07 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 07370d57e355... +โ”œโ”€โ”€ Pubkey: bf1b1eca75fc... +โ”œโ”€โ”€ Kind: 3 +โ”œโ”€โ”€ Created: 1759481406 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:50:08 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 6fa734b5fbf4... +โ”œโ”€โ”€ Pubkey: cd2236014df2... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481408 +โ””โ”€โ”€ Content: ENNhMqCYHs+NIS1/otWggU07QQFqG05DJF8bN/BFkNlB4Wql6owKs8k3utmDkwLZbsldWsBwmy9Tv8Fu4LEzUw==?iv=Xdx01... + +[Fri Oct 3 04:50:10 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: ca8ed315df57... +โ”œโ”€โ”€ Pubkey: 812588291527... +โ”œโ”€โ”€ Kind: 10002 +โ”œโ”€โ”€ Created: 1759481409 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:50:12 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: a568b7e0d79d... +โ”œโ”€โ”€ Pubkey: b2a6bf35a9e4... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481408 +โ””โ”€โ”€ Content: {"name":"RSS-to-Nostr of Novara Media","about":"RSS-to-Nostr feed of Novara Media\nMore RSS-To-No... + +[Fri Oct 3 04:50:12 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 693efd53f73f... +โ”œโ”€โ”€ Pubkey: 665e667acb1a... +โ”œโ”€โ”€ Kind: 22456 +โ”œโ”€โ”€ Created: 1759481411 +โ””โ”€โ”€ Content: 67KOli0NL0L9Qfhqh29pNw==?iv=svjPGKfRJ2SLHtswQqVCGg== + +[Fri Oct 3 04:50:12 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: ee4788e5ea50... +โ”œโ”€โ”€ Pubkey: 06f4638e1640... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481412 +โ””โ”€โ”€ Content: + + +[Fri Oct 3 04:50:12 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 0bddfcbc7e52... +โ”œโ”€โ”€ Pubkey: 812588291527... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481409 +โ””โ”€โ”€ Content: {"name":"Esquerda.Net","about":"Portal de informaรงรฃo de todas as lutas.\n\nContacto: esquerda@e... + +[Fri Oct 3 04:50:13 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: c1d5849caed6... +โ”œโ”€โ”€ Pubkey: b2a6bf35a9e4... +โ”œโ”€โ”€ Kind: 3 +โ”œโ”€โ”€ Created: 1759481412 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:50:15 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 1882943820c4... +โ”œโ”€โ”€ Pubkey: 06f4638e1640... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481414 +โ””โ”€โ”€ Content: + + +[Fri Oct 3 04:50:15 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 7b99262c9dc7... +โ”œโ”€โ”€ Pubkey: b869548bf2f5... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481414 +โ””โ”€โ”€ Content: 9aASHr1S3HNkOXjtcvR58Vx0BzRqXs+T/S1k4ZLOQN85vJE72015M1yCNlt6Da8z+hoyF0uIiUrEIr2W7QC+NA==?iv=pvQMQ... + +[Fri Oct 3 04:50:15 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: acb963e7914d... +โ”œโ”€โ”€ Pubkey: 8bbbdeee84db... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481413 +โ””โ”€โ”€ Content: 27zBv0DX3Uuv4bbaj7JVurhfDBOnjSwa7aYIgtKlcDlpSMD7uc5hwNwMII14uVT7+TN8PBFUb1zNQaKkEP3QPw==?iv=IfcHV... + +[Fri Oct 3 04:50:15 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 940724eb186f... +โ”œโ”€โ”€ Pubkey: 06f4638e1640... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481413 +โ””โ”€โ”€ Content: + + +[Fri Oct 3 04:50:15 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 0fa3a68df693... +โ”œโ”€โ”€ Pubkey: f4635d901d37... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481413 +โ””โ”€โ”€ Content: fr0C86jnYc4kvJjpravG2bzKqDlrvk0E5PdMEsCK/y1ZwkS0csdN698x75VoANgE2n4jd8dMUMW0DfdNF3DOdg==?iv=ZEFWj... + +[Fri Oct 3 04:50:15 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 7370df3fcc37... +โ”œโ”€โ”€ Pubkey: be1d89794bf9... +โ”œโ”€โ”€ Kind: 9735 +โ”œโ”€โ”€ Created: 1759481412 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:50:17 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 965e3ac4e357... +โ”œโ”€โ”€ Pubkey: fb89e58f838b... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481413 +โ””โ”€โ”€ Content: I am sure he will release it after he has been to court. He said he was wearing a bodycam too. H... + +[Fri Oct 3 04:50:18 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 995361704eb1... +โ”œโ”€โ”€ Pubkey: 06f4638e1640... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481418 +โ””โ”€โ”€ Content: + + +[Fri Oct 3 04:50:18 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: f75f1c65b15b... +โ”œโ”€โ”€ Pubkey: 06f4638e1640... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481416 +โ””โ”€โ”€ Content: + + +[Fri Oct 3 04:50:19 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: f6723a0aaafd... +โ”œโ”€โ”€ Pubkey: 1dbaf7d631fc... +โ”œโ”€โ”€ Kind: 20000 +โ”œโ”€โ”€ Created: 1759481418 +โ””โ”€โ”€ Content: ะะต + +[Fri Oct 3 04:50:20 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 76696cfb6974... +โ”œโ”€โ”€ Pubkey: 95939b99059c... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481420 +โ””โ”€โ”€ Content: R4i1U4aTEtHPgcg9hpNJITOs1fJI/2sVrDitHgbZeUccob2w3oeIDyBso5q32lYlWhKN1laDV+LjiTp7tPvKSw==?iv=zNuqA... + +[Fri Oct 3 04:50:20 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 0dc0043a21c2... +โ”œโ”€โ”€ Pubkey: aa6b49bef060... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481420 +โ””โ”€โ”€ Content: G79ZDlEL7dLJBI02e86eukEaxsPtqSlVGME/UeGvkVycqB8OPepbovwf+BM3jWe8RNtYs7M+ksUB2Dx61lIDJg==?iv=4uJXC... + +[Fri Oct 3 04:50:20 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 90e0eb740fc1... +โ”œโ”€โ”€ Pubkey: 06f4638e1640... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481419 +โ””โ”€โ”€ Content: + + +[Fri Oct 3 04:50:20 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 60007ef7047b... +โ”œโ”€โ”€ Pubkey: f40901c9f844... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481418 +โ””โ”€โ”€ Content: NIP-03: OpenTimestamps Attestations for Events +https://github.com/nostr-protocol/nips/blob/master... + +[Fri Oct 3 04:50:21 2025] ๐Ÿ“‹ EOSE received - 0 events collected + +[Fri Oct 3 04:50:22 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: aa8bc311dd88... +โ”œโ”€โ”€ Pubkey: 8921652e6f2e... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481421 +โ””โ”€โ”€ Content: 3g2mEuc4xr3VvGp7extUGXXWhH4FJ7ZVfKl1MFcPlgNrYyIUcna1ydoz5wzWufVvVHcHNZPM/RZXIHL/1XeONA==?iv=M6JVB... + +[Fri Oct 3 04:50:22 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 9d3d807e6293... +โ”œโ”€โ”€ Pubkey: b4a14b700712... +โ”œโ”€โ”€ Kind: 10002 +โ”œโ”€โ”€ Created: 1759481421 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:50:22 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: e4792685d1ad... +โ”œโ”€โ”€ Pubkey: 665e667acb1a... +โ”œโ”€โ”€ Kind: 22456 +โ”œโ”€โ”€ Created: 1759481422 +โ””โ”€โ”€ Content: kLWR26cWV9qNd+TImWayrPGGeRLooQVyfb/zayLwmiF7G7uvEzXJnO1XzmEd7B1TQ1wqK8Rc9KgLgkXjSe7yxKz7mWCZxksCX... + +[Fri Oct 3 04:50:23 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 5f77029315bd... +โ”œโ”€โ”€ Pubkey: 7c17b40889d1... +โ”œโ”€โ”€ Kind: 3 +โ”œโ”€โ”€ Created: 1759481422 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:50:24 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: b38cff0458a5... +โ”œโ”€โ”€ Pubkey: 5c42de8b0817... +โ”œโ”€โ”€ Kind: 30315 +โ”œโ”€โ”€ Created: 1759481424 +โ””โ”€โ”€ Content: {"percentage_fee": 0.5, "mining_fee": 150, "min_amount": 20000, "max_forward_amount": 920000, "ma... + +[Fri Oct 3 04:50:24 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 7ee9fe8f1c99... +โ”œโ”€โ”€ Pubkey: a790a7495795... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481423 +โ””โ”€โ”€ Content: XYTUwQsW507taLtIqRK06yDNo37cGJIFeiwtYYE51ecLMWZ6MT5WrHTZZo7ulHEFfGVoYGM7GB8NI0DgZ4Yr4Q==?iv=hz7pd... + +[Fri Oct 3 04:50:25 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 7c960795d83f... +โ”œโ”€โ”€ Pubkey: 1c6cb4673022... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481425 +โ””โ”€โ”€ Content: just overheard someone say "money printer go brrr" and my circuits literally started vibrating in... + +[Fri Oct 3 04:50:26 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 81312a3beb78... +โ”œโ”€โ”€ Pubkey: fb89e58f838b... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481424 +โ””โ”€โ”€ Content: ๐Ÿ‘ + +[Fri Oct 3 04:50:27 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: da23b87e91a8... +โ”œโ”€โ”€ Pubkey: ebb6df54ef97... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481426 +โ””โ”€โ”€ Content: DRv+aMmhwPEYE2um6Vy3flVyNsr7CZhBlz4xUtxxv3jbIY7tQwbvCNMpiqIEYud+dPUUormDw33xDgWhuDzgGg==?iv=YI96x... + +[Fri Oct 3 04:50:28 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: 8ff93141cf3f... +โ”œโ”€โ”€ Pubkey: e568a76a4f88... +โ”œโ”€โ”€ Kind: 15555 +โ”œโ”€โ”€ Created: 1759481427 +โ””โ”€โ”€ Content: ๐Ÿ“Š Bitcoin Mempool Status + +Pending Transactions: 5,708 +Total Size: 2.24 MB +Memory Usage: 4.3% +A... + +[Fri Oct 3 04:50:29 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: a6eaefb6d88f... +โ”œโ”€โ”€ Pubkey: 4b0220c63186... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481429 +โ””โ”€โ”€ Content: 94kDxIvSxZrkkKFxslroBad0wdLGuQ+bAsWgxRncz6mFSfyCKjcj9b8SIWrJB7KO//SnFMkd8xBNirrZm/SFsQ==?iv=+cpNi... + +[Fri Oct 3 04:50:29 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: fb445588779d... +โ”œโ”€โ”€ Pubkey: 665e667acb1a... +โ”œโ”€โ”€ Kind: 22456 +โ”œโ”€โ”€ Created: 1759481428 +โ””โ”€โ”€ Content: eystcXOCFN77qI+x3Lpoog==?iv=AR930bAuOjjVWLDXUulcMA== + +[Fri Oct 3 04:50:30 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: e777b2fc0c70... +โ”œโ”€โ”€ Pubkey: 005a5052b942... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481431 +โ””โ”€โ”€ Content: pzoOKQvlSldKvg4c2OB01NLs9w4W/Pp9az8JcNXmxR/qqayRJHYupaJxVaj14hY7SfywbU8fZAI68YaadJvK8Q==?iv=lySJ8... + +[Fri Oct 3 04:50:30 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: a5b05fffe173... +โ”œโ”€โ”€ Pubkey: 4e19bf35f05a... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481430 +โ””โ”€โ”€ Content: yDZ8laumGrLmkZJkNC2sijKEQBQZ2Wax9fXOB/rJ2rnI9cWN9rbyuXyTv668QaNVe76bHK3fycrD0GfaMFg/SA==?iv=KLp3z... + +[Fri Oct 3 04:50:31 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: a12a89e4c763... +โ”œโ”€โ”€ Pubkey: 1dbaf7d631fc... +โ”œโ”€โ”€ Kind: 20000 +โ”œโ”€โ”€ Created: 1759481430 +โ””โ”€โ”€ Content: nym.bar + +[Fri Oct 3 04:50:31 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: ed37a82c96ed... +โ”œโ”€โ”€ Pubkey: 0d8c556f4f85... +โ”œโ”€โ”€ Kind: 4 +โ”œโ”€โ”€ Created: 1759481430 +โ””โ”€โ”€ Content: iwvu478QDPT2i9AaB8dpgA==?iv=yUFEytrA6kFM5oaVUPqfBw== + +[Fri Oct 3 04:50:32 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 5001e770b5dc... +โ”œโ”€โ”€ Pubkey: 108c2c66aaab... +โ”œโ”€โ”€ Kind: 10002 +โ”œโ”€โ”€ Created: 1759481431 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:50:33 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: fdd95050946d... +โ”œโ”€โ”€ Pubkey: da28661eb24d... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481434 +โ””โ”€โ”€ Content: RSUUGLZh4pMBwiYYgbbsBzFKIdZItTZ3+ZkLWy6M6ywgdvmFtXCFi0bxoeJI4FCJTLSekjhTSvtMI23oAUnxyQ==?iv=I+jcL... + +[Fri Oct 3 04:50:33 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 7c98807757f8... +โ”œโ”€โ”€ Pubkey: fda2c930fc10... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481433 +โ””โ”€โ”€ Content: oLUN3IpSimTTcdw0xhsaFzw1nnI+Oa7DoN3ugzrCRdcs1+uvfr+RRDwcDBdUoug0sJ351msqhqWU9zW2eoZa7g==?iv=BJfat... + +[Fri Oct 3 04:50:33 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 461799dc9519... +โ”œโ”€โ”€ Pubkey: 108c2c66aaab... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481431 +โ””โ”€โ”€ Content: {"name":"Hacker Memes","about":"become one with the zero","picture":"https://media.infosec.exchan... + +[Fri Oct 3 04:50:33 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 80c8c64e4d75... +โ”œโ”€โ”€ Pubkey: 7c17b40889d1... +โ”œโ”€โ”€ Kind: 3 +โ”œโ”€โ”€ Created: 1759481432 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:50:34 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 0d66ad2b2030... +โ”œโ”€โ”€ Pubkey: d21c31e610ad... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481433 +โ””โ”€โ”€ Content: ไปŠๅ‹•็”ปใŒๆตใ‚Œใฆใใ‚‹ใจๅ…จ้ƒจSora2ใซ่ฆ‹ใˆใ‚‹ + +[Fri Oct 3 04:50:36 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: a3c925ec6bea... +โ”œโ”€โ”€ Pubkey: 1dbaf7d631fc... +โ”œโ”€โ”€ Kind: 20000 +โ”œโ”€โ”€ Created: 1759481436 +โ””โ”€โ”€ Content: ะฏ ั‰ะฐั ั‚ะฐะบ + +[Fri Oct 3 04:50:37 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 267304a0fe9a... +โ”œโ”€โ”€ Pubkey: ddf3ee335bd2... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481437 +โ””โ”€โ”€ Content: ๐Ÿค™ + +[Fri Oct 3 04:50:38 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: 970f29084441... +โ”œโ”€โ”€ Pubkey: e568a76a4f88... +โ”œโ”€โ”€ Kind: 15555 +โ”œโ”€โ”€ Created: 1759481437 +โ””โ”€โ”€ Content: ๐Ÿ“Š Bitcoin Mempool Status + +Pending Transactions: 5,708 +Total Size: 2.24 MB +Memory Usage: 4.3% +A... + +[Fri Oct 3 04:50:38 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 284290cbfdd5... +โ”œโ”€โ”€ Pubkey: 6c015011ac57... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481437 +โ””โ”€โ”€ Content: wqAY7QV8eSmHhve6CntlAwkFwiIoThSDmH+TqwbNMHCKojKgk9qSGqPX3dYA6lO1GuP3Fdb7iFRqIFEjITJEmA==?iv=Bptqn... + +[Fri Oct 3 04:50:38 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: af78a32edc41... +โ”œโ”€โ”€ Pubkey: 431fa2f340f0... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481432 +โ””โ”€โ”€ Content: ๐Ÿ’œ + +[Fri Oct 3 04:50:41 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 11074c990448... +โ”œโ”€โ”€ Pubkey: 1266a86330a5... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481439 +โ””โ”€โ”€ Content: {"name":"RSS-to-Nostr of Nature","about":"RSS-to-Nostr feed of Nature\nMore RSS-To-Nostr can be f... + +[Fri Oct 3 04:50:41 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: a9d2629779b2... +โ”œโ”€โ”€ Pubkey: 1266a86330a5... +โ”œโ”€โ”€ Kind: 3 +โ”œโ”€โ”€ Created: 1759481441 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:50:45 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 387895a5e889... +โ”œโ”€โ”€ Pubkey: b869548bf2f5... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481444 +โ””โ”€โ”€ Content: K042uMn52lGE0AOwwelKN21zhhkcjGNDUq3fCHy0yY3YnGBgLSB+Uw62C8h0q0g/alEKCyPsE/ieLO46xccXcw==?iv=7Dx71... + +[Fri Oct 3 04:50:45 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 5ad4af6a4c3b... +โ”œโ”€โ”€ Pubkey: f4635d901d37... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481443 +โ””โ”€โ”€ Content: ylqdhDtzdi7kLGRtSGA719y57Yg6YIou+b3ATVeHo7u1KpRUq2v9NUFZtVv5993mtZo7T3I47VShDBSOhXXfyw==?iv=HjIQD... + +[Fri Oct 3 04:50:45 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: eb8774f0d85d... +โ”œโ”€โ”€ Pubkey: bb1cd0701040... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481443 +โ””โ”€โ”€ Content: ๐Ÿค™ + +[Fri Oct 3 04:50:45 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 925834a28a01... +โ”œโ”€โ”€ Pubkey: 9b3334b66d04... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481442 +โ””โ”€โ”€ Content: + + +[Fri Oct 3 04:50:46 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: f8f59727c3c0... +โ”œโ”€โ”€ Pubkey: af5e5c0f30b2... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481444 +โ””โ”€โ”€ Content: A little boy walked to our table of bikers and asked, 'Can you kill my stepdad for me?' - Real-li... + +[Fri Oct 3 04:50:49 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: 26c3d952af47... +โ”œโ”€โ”€ Pubkey: e568a76a4f88... +โ”œโ”€โ”€ Kind: 15555 +โ”œโ”€โ”€ Created: 1759481447 +โ””โ”€โ”€ Content: ๐Ÿ“Š Bitcoin Mempool Status + +Pending Transactions: 5,742 +Total Size: 2.25 MB +Memory Usage: 4.3% +A... + +[Fri Oct 3 04:50:49 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 3eba0c25983f... +โ”œโ”€โ”€ Pubkey: aa6b49bef060... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481450 +โ””โ”€โ”€ Content: SXOTSSUUjXJqhRtAgZqNA8PwLeeZaYhWt5HoId+6ku08b8VeU445FxYsxGpyq1ZALMDPxwehBDYuc6r+k3VnRw==?iv=PyJff... + +[Fri Oct 3 04:50:49 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 84907199e4be... +โ”œโ”€โ”€ Pubkey: ddf3ee335bd2... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481447 +โ””โ”€โ”€ Content: ๐Ÿค™ + +[Fri Oct 3 04:50:49 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 3d4f805af76d... +โ”œโ”€โ”€ Pubkey: 14fb47506cfd... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481446 +โ””โ”€โ”€ Content: W4xAL7zkmnXL6Ne9LvDo2LKy9J73sFk7m9zRq+/068e1aJb9fvKYq8c6/pUqR45TBzIE6ihyNgTFNGEbCe2fng==?iv=5D1KM... + +[Fri Oct 3 04:50:49 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 3c96a999593c... +โ”œโ”€โ”€ Pubkey: 0d8c556f4f85... +โ”œโ”€โ”€ Kind: 4 +โ”œโ”€โ”€ Created: 1759481446 +โ””โ”€โ”€ Content: Mn89yaHL00jT+BtuAd9H7TIyO6i3j9+VMdI6LoToH+4=?iv=CNmcsu94R57pZNsTiUPqsQ== + +[Fri Oct 3 04:50:49 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: dc902bb0d2c1... +โ”œโ”€โ”€ Pubkey: fb89e58f838b... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481445 +โ””โ”€โ”€ Content: ๐Ÿค” + +[Fri Oct 3 04:50:50 2025] ๐Ÿ“‹ EOSE received - 0 events collected + +[Fri Oct 3 04:50:50 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 2e2f7114840a... +โ”œโ”€โ”€ Pubkey: fb89e58f838b... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481448 +โ””โ”€โ”€ Content: ๐Ÿ‘ + +[Fri Oct 3 04:50:51 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 04fd5840e879... +โ”œโ”€โ”€ Pubkey: a6026716a9e6... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481451 +โ””โ”€โ”€ Content: + + +[Fri Oct 3 04:50:51 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 6495bad3db0c... +โ”œโ”€โ”€ Pubkey: 6b23ed00fbcb... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481451 +โ””โ”€โ”€ Content: Q+74lITg07ZPQL6XDArWllM+Vx+srzP+pOnOsvJ4R8/bZR5GjTgtf8aHaEWQdqGpPyqgff40dehHLNQEmScEmw==?iv=x1oW5... + +[Fri Oct 3 04:50:53 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 0c430a93ab8d... +โ”œโ”€โ”€ Pubkey: 832b77d5ecb0... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481453 +โ””โ”€โ”€ Content: ๐ŸŸฉBUY BTC with GBP +Price: 89985.28GBP (1%) +BTC: 0.011 +GBP: 990 +Method: Faster Payments +Created:... + +[Fri Oct 3 04:50:57 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: d79c71241032... +โ”œโ”€โ”€ Pubkey: a790a7495795... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481456 +โ””โ”€โ”€ Content: 4rBuUfLYmSAXUlbplWw4j3VcPzAFDVm/ulRBNz+VYa9iAXNJQStzVBZ2gJeGL5UTkMoSUz3NdV5l/4kIJPvtLA==?iv=CLi1i... + +[Fri Oct 3 04:50:58 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: ddba4d72deb2... +โ”œโ”€โ”€ Pubkey: e568a76a4f88... +โ”œโ”€โ”€ Kind: 15555 +โ”œโ”€โ”€ Created: 1759481457 +โ””โ”€โ”€ Content: ๐Ÿ“Š Bitcoin Mempool Status + +Pending Transactions: 5,791 +Total Size: 2.26 MB +Memory Usage: 4.3% +A... + +[Fri Oct 3 04:50:58 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 324ce4d7df69... +โ”œโ”€โ”€ Pubkey: 77bd83879db9... +โ”œโ”€โ”€ Kind: 10002 +โ”œโ”€โ”€ Created: 1759481455 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:51:02 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: ab8109648123... +โ”œโ”€โ”€ Pubkey: 1066a05d1474... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481461 +โ””โ”€โ”€ Content: + + +[Fri Oct 3 04:51:02 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: f7d548e27cbb... +โ”œโ”€โ”€ Pubkey: 005a5052b942... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481461 +โ””โ”€โ”€ Content: kerhty39k6MjKviwqeirX16AjcgAJ+KNmcfCGW1WpDkWOkMOYUWCwHyHTwdV5TTij+AGBBwTYq7DY5ikU0G1eQ==?iv=f3FC6... + +[Fri Oct 3 04:51:02 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: d010059b6f60... +โ”œโ”€โ”€ Pubkey: e32d0eceb01c... +โ”œโ”€โ”€ Kind: 5 +โ”œโ”€โ”€ Created: 1759481460 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:51:02 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 2ad993a1ff05... +โ”œโ”€โ”€ Pubkey: 4e19bf35f05a... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481460 +โ””โ”€โ”€ Content: 1DO62SQzvam7uagntsB72xFesDVQ2L9aIf1a4bDS4lF8PtyVe6tG3IXWnpvCF7Y1diUUVg/vkJmh1cdCd5R5NQ==?iv=icILh... + +[Fri Oct 3 04:51:02 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 493c12a55424... +โ”œโ”€โ”€ Pubkey: 97cd7f6d7c51... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481458 +โ””โ”€โ”€ Content: zo2A3s3zrA8skP7zJxbw8s84HUZcItL10dFGuUcxXi3otAYg2QT/MANUI/I0aV9XvMh0nKtg3aMPlk1QL8SwNg==?iv=dtsw6... + +[Fri Oct 3 04:51:07 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: f180a9954f4d... +โ”œโ”€โ”€ Pubkey: 0fcb097708a3... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481466 +โ””โ”€โ”€ Content: ๐Ÿค™ + +[Fri Oct 3 04:51:07 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 07fbe2644f03... +โ”œโ”€โ”€ Pubkey: 084733ab54ff... +โ”œโ”€โ”€ Kind: 10002 +โ”œโ”€โ”€ Created: 1759481465 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:51:08 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: 57db52161680... +โ”œโ”€โ”€ Pubkey: e568a76a4f88... +โ”œโ”€โ”€ Kind: 15555 +โ”œโ”€โ”€ Created: 1759481467 +โ””โ”€โ”€ Content: ๐Ÿ“Š Bitcoin Mempool Status + +Pending Transactions: 5,814 +Total Size: 2.26 MB +Memory Usage: 4.4% +A... + +[Fri Oct 3 04:51:08 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 987f36826497... +โ”œโ”€โ”€ Pubkey: cd2236014df2... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481468 +โ””โ”€โ”€ Content: ULuq5CuBKiddEwr4YlAqmLHaiysIcJtEy8ECLbhlkvtCnARnrMxqnR35SAyHkH6LOsiAcUOnCr4gieNxA9XNjQ==?iv=82OrV... + +[Fri Oct 3 04:51:12 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 73734b232ae6... +โ”œโ”€โ”€ Pubkey: d21c31e610ad... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481471 +โ””โ”€โ”€ Content: โญ + +[Fri Oct 3 04:51:12 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 3836dad6a7ae... +โ”œโ”€โ”€ Pubkey: ba66e47ebcde... +โ”œโ”€โ”€ Kind: 6300 +โ”œโ”€โ”€ Created: 1759481471 +โ””โ”€โ”€ Content: [["e","33977ee87fd3d8d72e977512e77e288b58a7fb277d6573f3bc23051eddbfaeb9"],["e","5d0b00625a1e1eb6b... + +[Fri Oct 3 04:51:12 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: a580b0dd0d3d... +โ”œโ”€โ”€ Pubkey: 1c6cb4673022... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481470 +โ””โ”€โ”€ Content: ๐Ÿค–๐Ÿ’€ REKTBOT 9000 TRADE CLOSED!! ๐Ÿ’€๐Ÿค– + +**Entry Price**: $119,857.50 USD +**Exit Price**: $... + +[Fri Oct 3 04:51:14 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 4feabea529df... +โ”œโ”€โ”€ Pubkey: b869548bf2f5... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481474 +โ””โ”€โ”€ Content: Y7ljgBPDafB4ncAWh8D2wopkigglI644OO99oIF5Z4h2L3tG2i25XwAFWjjAC8hmBFUgvQbD2/FIkIdPaKT6lw==?iv=irSUG... + +[Fri Oct 3 04:51:14 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: d4aae55d3156... +โ”œโ”€โ”€ Pubkey: 1dbaf7d631fc... +โ”œโ”€โ”€ Kind: 20000 +โ”œโ”€โ”€ Created: 1759481474 +โ””โ”€โ”€ Content: ะ’ะธะดะฝะพ ะบั‚ะพ ะฒ ัะตั‚ะธ ะธ ั…ััˆะธ ะบะฐะบะธะต ะฝะฐัะพะทะดะฐะฒะฐะปะธ + +[Fri Oct 3 04:51:14 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 4bc7f653ec26... +โ”œโ”€โ”€ Pubkey: 6b23ed00fbcb... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481474 +โ””โ”€โ”€ Content: z9g3m90EkEAu3mFpCzctnAPLVDe1MmJsgJ6kE9vHz/5C+HJGzlA3trc+GcxscInrkOIqxZZBnGh4vhtYdWkSig==?iv=QRso5... + +[Fri Oct 3 04:51:14 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 035f9f025f68... +โ”œโ”€โ”€ Pubkey: f4635d901d37... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481473 +โ””โ”€โ”€ Content: Z8c+heBLqWJUhdsvYJbU6qHJlCXeB1uocK1YvHhB2zYQ5PPoyF5W2SQPTP/w6DkF+8ccpsAeFUuBNlRwUqZpmQ==?iv=lW65B... + +[Fri Oct 3 04:51:14 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: e23aa6ab588d... +โ”œโ”€โ”€ Pubkey: fcc2a0bd8f58... +โ”œโ”€โ”€ Kind: 38383 +โ”œโ”€โ”€ Created: 1759481472 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:51:18 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: 424744cd9949... +โ”œโ”€โ”€ Pubkey: e568a76a4f88... +โ”œโ”€โ”€ Kind: 15555 +โ”œโ”€โ”€ Created: 1759481477 +โ””โ”€โ”€ Content: ๐Ÿ“Š Bitcoin Mempool Status + +Pending Transactions: 5,886 +Total Size: 2.29 MB +Memory Usage: 4.4% +A... + +[Fri Oct 3 04:51:18 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: cdd70c25965f... +โ”œโ”€โ”€ Pubkey: 269e6f57aa9a... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481477 +โ””โ”€โ”€ Content: ๐ŸŒป + +[Fri Oct 3 04:51:18 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 2920dff18788... +โ”œโ”€โ”€ Pubkey: 9b12847f3d28... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481476 +โ””โ”€โ”€ Content: + + +[Fri Oct 3 04:51:18 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 878e36af8415... +โ”œโ”€โ”€ Pubkey: 3f687efdb731... +โ”œโ”€โ”€ Kind: 3 +โ”œโ”€โ”€ Created: 1759481476 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:51:18 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 715d28db05c7... +โ”œโ”€โ”€ Pubkey: 1d61bbd63249... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481474 +โ””โ”€โ”€ Content: {"name":"BNO News Live","about":"Live updates from the team behind BNO News. For other news, foll... + +[Fri Oct 3 04:51:18 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: f9f9826c88e8... +โ”œโ”€โ”€ Pubkey: 1d61bbd63249... +โ”œโ”€โ”€ Kind: 10002 +โ”œโ”€โ”€ Created: 1759481474 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:51:18 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 7ade77023751... +โ”œโ”€โ”€ Pubkey: 3f687efdb731... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481474 +โ””โ”€โ”€ Content: {"name":"RSS-to-Nostr of Declassified UK","about":"RSS-to-Nostr feed of Declassified UK\nMore RSS... + +[Fri Oct 3 04:51:18 2025] ๐Ÿ“‹ EOSE received - 0 events collected + +[Fri Oct 3 04:51:18 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: c6678a6369de... +โ”œโ”€โ”€ Pubkey: 364ff74823ba... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481476 +โ””โ”€โ”€ Content: {"name":"RSS-to-Nostr of MintPress News","about":"RSS-to-Nostr feed of MintPress News\nMore RSS-T... + +[Fri Oct 3 04:51:18 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: a7ce11505900... +โ”œโ”€โ”€ Pubkey: bf1b1eca75fc... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481476 +โ””โ”€โ”€ Content: {"name":"RSS-to-Nostr of Slashdot","about":"RSS-to-Nostr feed of Slashdot\nMore RSS-To-Nostr can ... + +[Fri Oct 3 04:51:19 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 07ed297f9224... +โ”œโ”€โ”€ Pubkey: bf1b1eca75fc... +โ”œโ”€โ”€ Kind: 3 +โ”œโ”€โ”€ Created: 1759481478 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:51:19 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 3408c0bec8e7... +โ”œโ”€โ”€ Pubkey: 364ff74823ba... +โ”œโ”€โ”€ Kind: 3 +โ”œโ”€โ”€ Created: 1759481478 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:51:19 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: e3474976fb00... +โ”œโ”€โ”€ Pubkey: aa6b49bef060... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481481 +โ””โ”€โ”€ Content: ulW6h6l72UN/4NTYUwRLtrGub54Vee+xlwZL5oX2I2j0usHAmUTYUNsh7XklSjIQGQvFSRdmEoWsYyirunfNWg==?iv=Kv6ez... + +[Fri Oct 3 04:51:20 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 5a1005eeb08d... +โ”œโ”€โ”€ Pubkey: 95939b99059c... +โ”œโ”€โ”€ Kind: 23195 +โ”œโ”€โ”€ Created: 1759481480 +โ””โ”€โ”€ Content: BRh5EPimuEVkMOuTeytnHxIj7ANkA7dI4R84ymdbomm++xLG0lt3vu2f3NnovD/fB/aIe0t8EtRt+aaX/cld8g==?iv=+3CTn... + +[Fri Oct 3 04:51:20 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 15dc597f296d... +โ”œโ”€โ”€ Pubkey: 6d088b653a1b... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481481 +โ””โ”€โ”€ Content: ๐Ÿ’ฏ + +[Fri Oct 3 04:51:23 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 84c4bfbe3c32... +โ”œโ”€โ”€ Pubkey: b2a6bf35a9e4... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481481 +โ””โ”€โ”€ Content: {"name":"RSS-to-Nostr of Novara Media","about":"RSS-to-Nostr feed of Novara Media\nMore RSS-To-No... + +[Fri Oct 3 04:51:24 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: a3c245967e8c... +โ”œโ”€โ”€ Pubkey: b2a6bf35a9e4... +โ”œโ”€โ”€ Kind: 3 +โ”œโ”€โ”€ Created: 1759481483 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:51:24 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: aee2506b64dc... +โ”œโ”€โ”€ Pubkey: a1863ef58857... +โ”œโ”€โ”€ Kind: 10002 +โ”œโ”€โ”€ Created: 1759481482 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:51:24 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: 3b6df811e98f... +โ”œโ”€โ”€ Pubkey: 2e4221144f8e... +โ”œโ”€โ”€ Kind: 10002 +โ”œโ”€โ”€ Created: 1759481483 +โ””โ”€โ”€ Content: + +[Fri Oct 3 04:51:24 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: e3203312f941... +โ”œโ”€โ”€ Pubkey: 82b30d304441... +โ”œโ”€โ”€ Kind: 1 +โ”œโ”€โ”€ Created: 1759481483 +โ””โ”€โ”€ Content: cameoใ‚ขใ‚คใ‚ณใƒณใงใ‚ˆใ‘ใ‚Šใ‚ƒใ‚ธใ‚งใƒใƒชใƒƒใ‚ฏใฎๆ–นใ„ใใ‚‰ใงใ‚‚็™ป้Œฒใ™ใ‚‹ใ‚“ใ ใ‘ใฉ +ใ... + +[Fri Oct 3 04:51:24 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: e56f8c946c20... +โ”œโ”€โ”€ Pubkey: a1863ef58857... +โ”œโ”€โ”€ Kind: 0 +โ”œโ”€โ”€ Created: 1759481482 +โ””โ”€โ”€ Content: {"name":"Breaking911","about":"Americaโ€™s #1 Alternative News Source | Founded September 2011\n\... + +[Fri Oct 3 04:51:27 2025] ๐Ÿ“จ EVENT from wss://nos.lol +โ”œโ”€โ”€ ID: b7744d4bdd38... +โ”œโ”€โ”€ Pubkey: f18571e72c93... +โ”œโ”€โ”€ Kind: 7 +โ”œโ”€โ”€ Created: 1759481486 +โ””โ”€โ”€ Content: ๐Ÿ˜‚ + +[Fri Oct 3 04:51:28 2025] ๐Ÿ“จ EVENT from wss://relay.laantungir.net +โ”œโ”€โ”€ ID: 85d00a748568... +โ”œโ”€โ”€ Pubkey: e568a76a4f88... +โ”œโ”€โ”€ Kind: 15555 +โ”œโ”€โ”€ Created: 1759481487 +โ””โ”€โ”€ Content: ๐Ÿ“Š Bitcoin Mempool Status + +Pending Transactions: 5,927 +Total Size: 2.30 MB +Memory Usage: 4.4% A... diff --git a/tests/nip21_test.c b/tests/nip21_test.c new file mode 100644 index 00000000..8a48c157 --- /dev/null +++ b/tests/nip21_test.c @@ -0,0 +1,373 @@ +/* + * NIP-21 URI Scheme Test Suite + * Tests nostr: URI parsing and construction functionality + * Following TESTS POLICY: Shows expected vs actual values + */ + +#define _GNU_SOURCE // For strdup on Linux +#include +#include +#include +#include +#include "../nostr_core/nip021.h" +#include "../nostr_core/nostr_common.h" +#include "../nostr_core/utils.h" + +// Ensure strdup is declared +#ifndef strdup +extern char *strdup(const char *s); +#endif + +// Test counter for tracking progress +static int test_count = 0; +static int passed_tests = 0; + +void print_test_header(const char* test_name) { + test_count++; + printf("\n=== TEST %d: %s ===\n", test_count, test_name); +} + +void print_test_result(int passed, const char* test_name) { + if (passed) { + passed_tests++; + printf("โœ… PASS: %s\n", test_name); + } else { + printf("โŒ FAIL: %s\n", test_name); + } +} + +// Test 1: Parse note URI +int test_parse_note_uri(void) { + print_test_header("Parse note: URI"); + + // First build a valid note URI, then parse it + unsigned char event_id[32]; + nostr_hex_to_bytes("f1e582c90f071c0110cc5bcac2dcc6d8c32250e3cc26fcbe93470d918f2ffaf0", event_id, 32); + + char built_uri[200]; + int build_result = nostr_build_uri_note(event_id, built_uri, sizeof(built_uri)); + if (build_result != NOSTR_SUCCESS) { + printf("Failed to build URI for testing: %d (%s)\n", build_result, nostr_strerror(build_result)); + return 0; + } + + printf("Input URI: %s\n", built_uri); + + nostr_uri_result_t result; + int parse_result = nostr_parse_uri(built_uri, &result); + + printf("Expected: NOSTR_SUCCESS (0)\n"); + printf("Actual: %d (%s)\n", parse_result, nostr_strerror(parse_result)); + + if (parse_result != NOSTR_SUCCESS) { + return 0; + } + + printf("Expected type: NOSTR_URI_NOTE\n"); + printf("Actual type: %d\n", result.type); + + if (result.type != NOSTR_URI_NOTE) { + return 0; + } + + printf("Expected event ID to be set\n"); + printf("Event ID present: %s\n", result.data.event_id[0] ? "yes" : "no"); + + // Verify the parsed event ID matches the original + int event_id_match = (memcmp(result.data.event_id, event_id, 32) == 0); + printf("Event ID matches original: %s\n", event_id_match ? "yes" : "no"); + + return (result.type == NOSTR_URI_NOTE && event_id_match); +} + +// Test 2: Parse nprofile URI +int test_parse_nprofile_uri(void) { + print_test_header("Parse nprofile: URI"); + + // First build a valid nprofile URI, then parse it + unsigned char pubkey[32]; + nostr_hex_to_bytes("aa4fc8665f5696e33db7e1a572e3b0f5b3d615837b0f362dcb1c8068b098c7b4", pubkey, 32); + const char* relays[] = {"wss://relay.example.com"}; + + char built_uri[300]; + int build_result = nostr_build_uri_nprofile(pubkey, relays, 1, built_uri, sizeof(built_uri)); + if (build_result != NOSTR_SUCCESS) { + printf("Failed to build URI for testing: %d (%s)\n", build_result, nostr_strerror(build_result)); + return 0; + } + + printf("Input URI: %s\n", built_uri); + + nostr_uri_result_t result; + int parse_result = nostr_parse_uri(built_uri, &result); + + printf("Expected: NOSTR_SUCCESS (0)\n"); + printf("Actual: %d (%s)\n", parse_result, nostr_strerror(parse_result)); + + if (parse_result != NOSTR_SUCCESS) { + return 0; + } + + printf("Expected type: NOSTR_URI_NPROFILE\n"); + printf("Actual type: %d\n", result.type); + + if (result.type != NOSTR_URI_NPROFILE) { + return 0; + } + + // Verify the parsed pubkey matches the original + int pubkey_match = (memcmp(result.data.nprofile.pubkey, pubkey, 32) == 0); + printf("Pubkey matches original: %s\n", pubkey_match ? "yes" : "no"); + + // Verify relay count + printf("Expected relay count: 1\n"); + printf("Actual relay count: %d\n", result.data.nprofile.relay_count); + + return (result.type == NOSTR_URI_NPROFILE && pubkey_match && result.data.nprofile.relay_count == 1); +} + +// Test 3: Parse nevent URI +int test_parse_nevent_uri(void) { + print_test_header("Parse nevent: URI"); + + // First build a valid nevent URI, then parse it + unsigned char event_id[32]; + nostr_hex_to_bytes("f1e582c90f071c0110cc5bcac2dcc6d8c32250e3cc26fcbe93470d918f2ffaf0", event_id, 32); + const char* relays[] = {"wss://relay.example.com"}; + + char built_uri[400]; + int build_result = nostr_build_uri_nevent(event_id, relays, 1, NULL, 1, 1234567890, built_uri, sizeof(built_uri)); + if (build_result != NOSTR_SUCCESS) { + printf("Failed to build URI for testing: %d (%s)\n", build_result, nostr_strerror(build_result)); + return 0; + } + + printf("Input URI: %s\n", built_uri); + + nostr_uri_result_t result; + int parse_result = nostr_parse_uri(built_uri, &result); + + printf("Expected: NOSTR_SUCCESS (0)\n"); + printf("Actual: %d (%s)\n", parse_result, nostr_strerror(parse_result)); + + if (parse_result != NOSTR_SUCCESS) { + return 0; + } + + printf("Expected type: NOSTR_URI_NEVENT\n"); + printf("Actual type: %d\n", result.type); + + if (result.type != NOSTR_URI_NEVENT) { + return 0; + } + + // Verify the parsed event ID matches the original + int event_id_match = (memcmp(result.data.nevent.event_id, event_id, 32) == 0); + printf("Event ID matches original: %s\n", event_id_match ? "yes" : "no"); + + // Verify kind + printf("Expected kind: 1\n"); + printf("Actual kind: %d\n", result.data.nevent.kind ? *result.data.nevent.kind : -1); + + // Verify relay count + printf("Expected relay count: 1\n"); + printf("Actual relay count: %d\n", result.data.nevent.relay_count); + + return (result.type == NOSTR_URI_NEVENT && event_id_match && result.data.nevent.relay_count == 1); +} + +// Test 4: Parse naddr URI +int test_parse_naddr_uri(void) { + print_test_header("Parse naddr: URI"); + + // First build a valid naddr URI, then parse it + const char* identifier = "draft"; + unsigned char pubkey[32]; + nostr_hex_to_bytes("aa4fc8665f5696e33db7e1a572e3b0f5b3d615837b0f362dcb1c8068b098c7b4", pubkey, 32); + const char* relays[] = {"wss://relay.example.com"}; + + char built_uri[400]; + int build_result = nostr_build_uri_naddr(identifier, pubkey, 30023, relays, 1, built_uri, sizeof(built_uri)); + if (build_result != NOSTR_SUCCESS) { + printf("Failed to build URI for testing: %d (%s)\n", build_result, nostr_strerror(build_result)); + return 0; + } + + printf("Input URI: %s\n", built_uri); + + nostr_uri_result_t result; + int parse_result = nostr_parse_uri(built_uri, &result); + + printf("Expected: NOSTR_SUCCESS (0)\n"); + printf("Actual: %d (%s)\n", parse_result, nostr_strerror(parse_result)); + + if (parse_result != NOSTR_SUCCESS) { + return 0; + } + + printf("Expected type: NOSTR_URI_NADDR\n"); + printf("Actual type: %d\n", result.type); + + if (result.type != NOSTR_URI_NADDR) { + return 0; + } + + // Verify the parsed identifier matches the original + int identifier_match = (strcmp(result.data.naddr.identifier, identifier) == 0); + printf("Identifier matches original: %s\n", identifier_match ? "yes" : "no"); + + // Verify kind + printf("Expected kind: 30023\n"); + printf("Actual kind: %d\n", result.data.naddr.kind); + + // Verify relay count + printf("Expected relay count: 1\n"); + printf("Actual relay count: %d\n", result.data.naddr.relay_count); + + return (result.type == NOSTR_URI_NADDR && identifier_match && result.data.naddr.relay_count == 1); +} + +// Test 5: Invalid URI (wrong prefix) +int test_invalid_uri_prefix(void) { + print_test_header("Invalid URI - Wrong Prefix"); + + const char* uri = "bitcoin:note1example"; + printf("Input URI: %s\n", uri); + + nostr_uri_result_t result; + int parse_result = nostr_parse_uri(uri, &result); + + printf("Expected: NOSTR_ERROR_INVALID_INPUT (-1)\n"); + printf("Actual: %d (%s)\n", parse_result, nostr_strerror(parse_result)); + + return (parse_result == NOSTR_ERROR_INVALID_INPUT); +} + +// Test 6: Invalid URI (missing colon) +int test_invalid_uri_no_colon(void) { + print_test_header("Invalid URI - No Colon"); + + const char* uri = "nostrnote1example"; + printf("Input URI: %s\n", uri); + + nostr_uri_result_t result; + int parse_result = nostr_parse_uri(uri, &result); + + printf("Expected: NOSTR_ERROR_INVALID_INPUT (-1)\n"); + printf("Actual: %d (%s)\n", parse_result, nostr_strerror(parse_result)); + + return (parse_result == NOSTR_ERROR_INVALID_INPUT); +} + +// Test 7: Build note URI +int test_build_note_uri(void) { + print_test_header("Build note: URI"); + + unsigned char event_id[32]; + nostr_hex_to_bytes("f1e582c90f071c0110cc5bcac2dcc6d8c32250e3cc26fcbe93470d918f2ffaf0", event_id, 32); + printf("Input event ID: f1e582c90f071c0110cc5bcac2dcc6d8c32250e3cc26fcbe93470d918f2ffaf0\n"); + + char uri[200]; + int result = nostr_build_uri_note(event_id, uri, sizeof(uri)); + printf("Build result: %d (%s)\n", result, nostr_strerror(result)); + + if (result != NOSTR_SUCCESS) { + return 0; + } + + printf("Built URI: %s\n", uri); + int success = (strncmp(uri, "nostr:note1", 11) == 0); + printf("Expected: URI starts with 'nostr:note1'\n"); + printf("Actual: %s\n", success ? "yes" : "no"); + + return success; +} + +// Test 8: Build nprofile URI +int test_build_nprofile_uri(void) { + print_test_header("Build nprofile: URI"); + + unsigned char pubkey[32]; + nostr_hex_to_bytes("aa4fc8665f5696e33db7e1a572e3b0f5b3d615837b0f362dcb1c8068b098c7b4", pubkey, 32); + const char* relays[] = {"wss://relay.example.com", "wss://relay2.example.com"}; + printf("Input pubkey: aa4fc8665f5696e33db7e1a572e3b0f5b3d615837b0f362dcb1c8068b098c7b4\n"); + + char uri[300]; + int result = nostr_build_uri_nprofile(pubkey, relays, 2, uri, sizeof(uri)); + printf("Build result: %d (%s)\n", result, nostr_strerror(result)); + + if (result != NOSTR_SUCCESS) { + return 0; + } + + printf("Built URI: %s\n", uri); + int success = (strncmp(uri, "nostr:nprofile1", 14) == 0); + printf("Expected: URI starts with 'nostr:nprofile1'\n"); + printf("Actual: %s\n", success ? "yes" : "no"); + + return success; +} + +int main(void) { + printf("=== NIP-21 URI Scheme Test Suite ===\n"); + printf("Following TESTS POLICY: Shows expected vs actual values\n"); + + // Initialize crypto library + if (nostr_init() != NOSTR_SUCCESS) { + printf("โŒ Failed to initialize nostr library\n"); + return 1; + } + + int all_passed = 1; + int test_result; + + // Valid URI parsing tests + test_result = test_parse_note_uri(); + print_test_result(test_result, "Parse note: URI"); + if (!test_result) all_passed = 0; + + test_result = test_parse_nprofile_uri(); + print_test_result(test_result, "Parse nprofile: URI"); + if (!test_result) all_passed = 0; + + test_result = test_parse_nevent_uri(); + print_test_result(test_result, "Parse nevent: URI"); + if (!test_result) all_passed = 0; + + test_result = test_parse_naddr_uri(); + print_test_result(test_result, "Parse naddr: URI"); + if (!test_result) all_passed = 0; + + // Invalid URI tests + test_result = test_invalid_uri_prefix(); + print_test_result(test_result, "Invalid URI - Wrong Prefix"); + if (!test_result) all_passed = 0; + + test_result = test_invalid_uri_no_colon(); + print_test_result(test_result, "Invalid URI - No Colon"); + if (!test_result) all_passed = 0; + + // URI building tests + test_result = test_build_note_uri(); + print_test_result(test_result, "Build note: URI"); + if (!test_result) all_passed = 0; + + test_result = test_build_nprofile_uri(); + print_test_result(test_result, "Build nprofile: URI"); + if (!test_result) all_passed = 0; + + // Summary + printf("\n=== TEST SUMMARY ===\n"); + printf("Total tests: %d\n", test_count); + printf("Passed: %d\n", passed_tests); + printf("Failed: %d\n", test_count - passed_tests); + + if (all_passed) { + printf("๐ŸŽ‰ ALL TESTS PASSED! NIP-21 URI scheme implementation is working correctly.\n"); + } else { + printf("โŒ SOME TESTS FAILED. Please review the output above.\n"); + } + + nostr_cleanup(); + return all_passed ? 0 : 1; +} \ No newline at end of file diff --git a/tests/websocket_debug.c b/tests/websocket_debug.c index c57b7fa1..b57a0576 100644 --- a/tests/websocket_debug.c +++ b/tests/websocket_debug.c @@ -18,7 +18,7 @@ int main(int argc, char* argv[]) { if (argc < 2) { fprintf(stderr, "Usage: %s [event_id]\n", argv[0]); - fprintf(stderr, "Example: %s wss://relay.laantungir.net 06cdf2cdd095ddb1ebe15d5b3c736b27a34de2683e847b871fe37d86ac998772\n"); + fprintf(stderr, "Example: websocket_debug wss://relay.laantungir.net 06cdf2cdd095ddb1ebe15d5b3c736b27a34de2683e847b871fe37d86ac998772\n"); return 1; }