Sorry, I'm kinda wrong here, the stream events API is fine, but the problem is the negentropy part in gossip. After removed the negentropy sync and force to use typical stream events API, gossip is became very fast.
Other temporary fix is set timeout for gossip sync very low like this:
```
GossipConfig::default()
.sync_initial_timeout(Duration::from_millis(100))
.sync_idle_timeout(Duration::from_millis(100)),
```
So I think we should have an option to disable negentropy, also I think it will better if we have an API for client dev manual run gossip fetch for a Public Key
cc @Yuki Kishimoto , @Awiteb
View quoted note โ
reya
_@reya.su
npub1zfss...w445
Projects:
- Coop: https://github.com/lumehq/coop
- Lume: https://github.com/lumehq/lume
- Nostr Connect Extension: https://github.com/lumehq/nostr-connect
Hi @Yuki Kishimoto , cc @Awiteb
I wonder, can you add an option (new feature) to enable this kind of behavior for the Pool stream_events API?
Detail:
- With the current behavior, stream_events API connects to all relays, then waits for the result of each relay, then collects and processes (de-dups, forwards, etc.)
- This behavior leads to very poor Gossip performance, users usually wait too long for the results because of the multi step stream_events calls
- When a user calls stream_events with a Filter X, the SDK breaks down the filter, then fetches the NIP-65 relay list (with stream_events), then connects to those relays, then fetches events by Filter X again. The problem is the SDK waits for all relays to complete, as described here:
Proposal:
- stream_events will have an option to return early when the first result is received, without waiting for all relays
- When gossip is enabled, stream_events will always return early
- When returning early, other relays will automatically unsubscribe
GitHub
nostr/sdk/src/pool/mod.rs at 17470cb551e9e359d0a7cde7ef5e1564627c8f91 ยท rust-nostr/nostr
Rust implementation of the nostr protocol, high-level client library, Nostr Wallet Connect and more. - rust-nostr/nostr
@Yuki Kishimoto all latest changes in rust-nostr are insane, i'm going to fully rewrite my app ๐คฃ
kotlin is more enjoyable than rust
Progress:
Coop (NIP-17 client) for Android. Fully adapts Material 3 (Expressive), built with Kotlin Multiplatform. Still WIP, but I've made good progress, maybe a release later this month.
About the features, I want to keep Coop simple, a dumb app just for messaging, so it will only support NIP-17 and NIP-4e later, nothing more.
Thanks @Vitor Pamplona and @Yuki Kishimoto for helping me.
View quoted note โ
Hi @Yuki Kishimoto
I've found a weird issue with Nostr SDK FFI for KMP. I've added relay(s) to the pool then connect. But when I subscribe or send event, the pool always empty, I also have tried get all relays from the pool by `client?.relays()` but it still empty. Nothing weird in the logs either (relay connection then relay connected).
the new website is cool
View quoted note โ
I spend 1 hour just to import a fucking icon to android studio
After two weeks of learning kotlin, I can now read the amethyst codebase
Yo. Remember Nostr Connect (web extension) that was designed by @HaloKat . I've released a new version with a different name (*) called Nostr Signer. It's currently available on Firefox and under review for Chrome.
Changelog:
- Added support for NIP-44
- Fixed bugs
* About the new name: the previous extension was published under my old email, but Google has locked my account, so I have to re-publish it under a new name.


Nostr Signer (formerly Nostr Connect) โ Get this Extension for ๐ฆ Firefox (en-US)
Download Nostr Signer (formerly Nostr Connect) for Firefox. Manage nostr keys and sign events

I think I should use quartz (from amethyst), it's more mature for KMP
Hi @Yuki Kishimoto
I'm using Nostr SDK FFI for my KMP project. I wonder do you plan to adapt the new API changes on the master branch for ffi anytime soon?
Hey @HaloKat ,
Do you still have an SVG version of the Nostr Connect extension icon? I'm working on a new update to republish it, but I've lost the SVG file for the logo.

Image cache & resize service
Manipulate images on-the-fly with a worldwide cache