是不是玩的人又少了?


9/23/2026, 8 engagements
A nostr dev. #Nostrmo A client support all platform. #Nowser A nostr signing project. #Nesigner A nostr hardware signer. https://nesigner.nostrmo.com/ #CacheRelay A nostr cache relay peject. #cfrelay A nostr relay base on cloudflare wokers. A nostr note timing send service. https://sendbox.nostrmo.com/
是不是玩的人又少了?


9/23/2026, 8 engagements
#cfrelay cfrelay version 0.1.0 release .
In this version, we implemented query optimizations at both the application and data layers to reduce the query load on the database.
So far, the optimization has been successful; even running the relay solo, I am nowhere near hitting the database query limits.
What is cfrelay ? It is a relay that can run for free on Cloudflare Workers. It was designed for private write and public read.
Running your personal relay and owning your data.
You can deply it with your cloudflare and github account by one click deploy:
完蛋了,event 数量越来越多。。。 问题也越来越多了~~~


We have deployed a test relay using this storage. It typically has fewer than 200 online clients, resulting in low load and ample redundant resources. Please feel free to add it to your relay list so I can better improve its performance.
Relay address : wss://top.testrelay.top
Loading quoted post…
4/21/2026, 6 engagements
v0.7.0 Release LogThis update includes numerous feature enhancements, performance optimizations, and critical fixes, improving system stability and flexibility. Key updates are as follows:
#nostr_event_store
About nostr_event_store's Aggregation, you can read from here
Loading quoted post…
About nostr_event_store's deployment methods, you can read from here
Loading quoted post…
4/21/2026, 2 engagements
nostr_event_store's AggregationAggregation is a mechanism for grouping, statistically analyzing, and aggregating event data. It allows you to perform statistical, trend analysis, and ranking operations on events based on different fields (such as author, event type, tags, time, etc.).
q := &types.AggregationQuery{
Filter: &types.QueryFilter{
Since: uint32(dayStart.Unix()),
Until: uint32(dayEnd.Unix()) - 1,
},
GroupBy: []types.GroupByField{types.GroupByAuthor, types.GroupByKind},
AggFunc: types.AggCount,
OrderDesc: true,
Limit: 1000,
}
entries, err := s.client.QueryAggregation(ctx, q)
q := &types.AggregationQuery{
Filter: &types.QueryFilter{
Since: timeWindow.StartUnix,
Until: timeWindow.EndUnix - 1,
Kinds: kinds,
},
GroupBy: []types.GroupByField{types.GroupByTimeBucket},
AggFunc: types.AggCount,
TimeBucketSeconds: 86400, // A day
OrderDesc: false,
}
entries, err := s.client.QueryAggregation(ctx, q)
q := &types.AggregationQuery{
Filter: &types.QueryFilter{
Since: timeWindow.StartUnix,
Until: timeWindow.EndUnix - 1,
},
GroupBy: []types.GroupByField{types.GroupByTagValue},
AggFunc: types.AggCount,
TagName: "t",
OrderDesc: true,
Limit: 20,
}
entries, err := s.client.QueryAggregation(ctx, q)
q := &types.AggregationQuery{
Filter: &types.QueryFilter{
Since: timeWindow.StartUnix,
Until: timeWindow.EndUnix - 1,
Tags: map[string][]string{"t": {"A topic"}},
},
GroupBy: []types.GroupByField{types.GroupByTagValue, types.GroupByAuthor},
AggFunc: types.AggCount,
TagName: "t",
OrderDesc: true,
Limit: 20,
}
entries, err := s.client.QueryAggregation(ctx, q)
q := &types.AggregationQuery{
Filter: &types.QueryFilter{
Since: timeWindow.StartUnix,
Until: timeWindow.EndUnix - 1,
Authors: [][32]byte{pub},
Tags: map[string][]string{"t": {"A topic"}},
},
GroupBy: []types.GroupByField{types.GroupByAuthor, types.GroupByTagValue, types.GroupByTimeBucket},
AggFunc: types.AggCount,
TagName: "t",
TimeBucketSeconds: 86400,
OrderDesc: false,
}
entries, err := s.client.QueryAggregation(ctx, q)
These parameters and calling methods can be flexibly combined to meet various statistical and analytical needs. The core is to construct an AggregationQuery and then use the QueryAggregation method to initiate an aggregation query.
These are some relay data statistics functions that I developed based on this Aggregation feature.
Project link: https://github.com/haorendashu/nostr_event_store
#nostr_event_store

4/21/2026, 1 engagement
nostr_event_store supports three main deployment methods, each suitable for different application scenarios:
demos/base-relay)Method: The event store is directly integrated into your Go application process as a library. API calls are direct, requiring no network communication.
Advantages: Extreme performance (no network latency), simple deployment, suitable for single-machine/embedded scenarios, easy to develop and debug.
Disadvantages: Cannot be scaled across multiple processes/machines; the event store is affected when the process crashes, making high availability difficult.
demos/remote-relay)Method: The event store runs as an independent service process, communicating with the application via a gRPC remote interface.
Advantages: Decoupling of the application and the event store; independent scaling, restarting, and monitoring; supports multiple client access; facilitates service-oriented deployment.
Disadvantages: Network communication overhead; slightly higher deployment and maintenance complexity; slightly inferior performance compared to the built-in method in extremely low-latency scenarios.
Method: Multiple machines/processes, each running one event store instance, sharded by author pubkey hash, with a coordinator responsible for routing and aggregation.
Advantages: Strong horizontal scalability, distributed load across single nodes, suitable for large-scale data and high-concurrency scenarios, limited impact from single shard failures.
Disadvantages: Complex implementation and maintenance (requires coordinator, shard routing, cross-shard query aggregation), more complex consistency and recovery mechanisms, and higher initial deployment costs.
Small projects/single machine: Recommended for application integration, simple and efficient.
Requires decoupling of multiple processes/services: Recommended for remote deployment.
For ultimate scalability and high availability: Recommended for sharded deployment, but requires more development and maintenance resources.
Project link: https://github.com/haorendashu/nostr_event_store
#nostr_event_store

4/21/2026, 2 engagements
I just update my vscode and i found that it show its bsky's account link at the release logs.
https://bsky.app/profile/vscode.dev
Can we have a profile link like this and don't like npubxxxxx.
Why they doesn't have a nostr account.
#asknostr
Wow, this seems to be something I've always wanted to do.
Loading quoted post…
发现 bostr.shop 上,有两个中继,在彪 event ~~~
这两个: wss://top.testrelay.top/ wss://relay.snort.social
因为很多这种请求:
2026/04/02 11:58:07 Rejecting req 10065615:: filter can't be empty {"since":1,"limit":1}
2026/04/02 11:58:07 Rejecting req 10065790:: filter can't be empty {"until":1,"limit":1}
2026/04/02 11:58:07 Rejecting req 10065723:: filter can't be empty {"until":1,"limit":1}
2026/04/02 11:58:07 Rejecting req sub: filter can't be empty {"limit":0}
不知道哪家来采集,还一下子发几个额请求,而且正好又有大量的 spam ,导致 cpu 和 流量 涨起来了。
4/2/2026, 2 engagements
Nostrmo version 3.5.1 release.
This version mainly focuses on bug fixes and optimizations.
Change list:
You can download from Github release:
https://github.com/haorendashu/nostrmo/releases
Other version you can find from:
TestFlight\r\n\r\n
3/30/2026, 11 engagements
I just send this query to the relay:
["COUNT","123213343213123",{"kinds":[1]}]
And then I could almost hear the server fans spinning wildly. 😥😥😥😥


3/20/2026, 2 engagements
The data volume is getting bigger and bigger; now it takes two hours to rebuild an index.


Hello, i am developing a nostr event store project. I need some query sample to improve the query system. Can you add this relay wss://top.testrelay.top/ to your client ?
Thanks.
https://github.com/haorendashu/nostr_event_store
#asknostr
Briner version 0.1.1 release.
Briner is a browser extension that provides Nostr signing capabilities across Chrome, Edge, and Firefox browsers. It acts as a bridge signer, allowing users to securely sign Nostr events using different signing methods.
Briner is also support nesigner, if you want to try nesigner on web clients, you should try briner.
Change List:
You can download it from: https://github.com/haorendashu/briner/releases
#briner #nesigner #nostrmo
We're excited to announce the simultaneous updates of the core Nesigner project, its official website, and the js_nesigner_sdk! As an open-source Nostr hardware signer built on ESP32, Nesigner has received key optimizations for performance, usability enhancements, and rich resource supplements across the ecosystem. Below are the detailed update notes:
Repository: https://github.com/haorendashu/nesigner This v0.3.0 release focuses on performance optimization and usability improvement, with comprehensive adjustments to the underlying runtime mechanism and error handling logic. The key changes are as follows:
URL: https://nesigner.nostrmo.com/ The official website has been fully updated with expanded operation workflows and development resources, making device operation and secondary development more straightforward. Key updates:
Repository: https://github.com/haorendashu/js_nesigner_sdk As the official JavaScript SDK for interacting with the Nesigner hardware device, v0.1.7 primarily supplements device management and diagnostic interfaces, enabling more comprehensive feature coverage for web-side development. Newly added interfaces:
ping() (tests device connectivity and returns latency), echo() (sends echo messages for device testing).updateKey() (updates the device key via PIN code), removeKey() (deletes the device key via PIN code).With this update, Nesigner has formed a more complete ecosystem covering hardware-level performance, end-user operation experience, and developer tool support. We will continue iterating on the project with a focus on stability and feature expansion. We welcome all developers to submit issues, contribute code via the project repositories, and try out the new features on the official website with your valuable feedback!
2/12/2026, 3 engagements