-

@ 3ffac3a6:2d656657
2025-02-23 19:40:19
## Renoters: Proposal for Anonymous Event Relaying in Nostr
*This document is a proposal and not an official NIP.*
This Document proposes "Renoters," a mechanism for anonymous event relaying in Nostr, inspired by the Mixminion remailer design. Renoters aim to enhance privacy by obscuring the origin of events, making it difficult to trace the author of a message.
### **Motivation**
While Nostr offers a decentralized platform, current relay mechanisms can potentially reveal the source of events. Renoters address this by introducing an onion-routing-like system where events are encrypted and relayed through a series of nodes, making it harder to link the event to its originator. This enhances privacy for users who wish to communicate anonymously or protect their identity.
In some totalitarian regimes, the use of Tor and VPNs is criminalized, making online anonymity dangerous. Even in some democratic countries, merely downloading Tor can mark individuals as suspects. This underscores the need for a decentralized and anonymous communication system that operates independently of commonly surveilled privacy tools.
### **Proposed Solution**
Renoters operate on the principle of "gift-wrapping" events, using asymmetric encryption. A user wishing to send an event anonymously performs the following steps:
1. **Event Creation:** The user creates the Nostr event they wish to publish.
2. **Renoter Path Selection:** The user selects a path of Renoters through which the event will be relayed. This path can be pre-configured or dynamically chosen.
3. **Gift Wrapping (Encryption and Signing):** The user encrypts and signs the event for each Renoter in the path, working in reverse order:
- A *new* random Nostr private key (`sk_wrapper`) is generated.
- The event (or the previously wrapped event) is encrypted using the *next* Renoter's Npub (`npub_next`) using Nostr's standard encryption mechanism (e.g., using shared secrets derived from the private key and the recipient's public key).
- A *new* Nostr event is created. This "wrapper" event's content contains the ciphertext. The wrapper event is signed using the newly generated private key `sk_wrapper`. The wrapper event also includes the next hop's `npub_next` (or the final destination if it's the last renoter) in cleartext, to allow for routing.
4. **Publication:** The user publishes the *first* gift-wrapped event (the one encrypted for the last Renoter in the path). This event is sent to a regular Nostr relay, which then forwards it to the first Renoter in the path.
5. **Renoter Relaying:** Each Renoter in the path receives the gift-wrapped event, verifies the signature using the `sk_wrapper`'s corresponding public key, decrypts it using its own private key, and forwards the decrypted event (now wrapped for the *next* Renoter) to the next Renoter in the path. This process continues until the event reaches the final Renoter.
6. **Final Delivery:** The final Renoter decrypts the event and publishes it to the Nostr network.
### **Example**
Let's say Alice wants to send an event anonymously through Renoters R1, R2, and R3.
1. Alice creates her event.
2. She generates a random private key `sk3` and encrypts the event with R3's public key `npub_r3`.
3. She creates a wrapper event containing the ciphertext and `npub_r3`, signed with `sk3`.
4. She generates a random private key `sk2` and encrypts the previous wrapper event with R2's public key `npub_r2`.
5. She creates a wrapper event containing this ciphertext and `npub_r2`, signed with `sk2`.
6. She generates a random private key `sk1` and encrypts the previous wrapper event with R1's public key `npub_r1`.
7. She creates a final wrapper event containing this ciphertext and `npub_r1`, signed with `sk1`.
8. Alice publishes this final wrapper event.
R1 decrypts with its private key, verifies the signature with the public key corresponding to `sk1`, and forwards to R2. R2 decrypts, verifies the signature with the public key corresponding to `sk2`, and forwards to R3. R3 decrypts, verifies the signature with the public key corresponding to `sk3`, and publishes the original event.
### **Renoter Incentives (using Cashu)**
To incentivize Renoters to participate in the network, this NIP proposes integrating Cashu tokens as a payment mechanism.
- **Token Inclusion:** When a user creates the initial gift-wrapped event (the one sent to the first Renoter), they include a Cashu token *within* the event content. This token is itself encrypted and wrapped along with the original message, so only the receiving Renoter can access it.
- **Renoter Redemption:** Upon receiving a gift-wrapped event, the Renoter decrypts it. If the event contains a Cashu token, the Renoter can decrypt the token and redeem it.
- **Renoter Behavior:** Paid Renoters would be configured *not* to relay events that do *not* contain a valid Cashu token. This ensures that Renoters are compensated for their service. Free Renoters could still exist, but paid Renoters would likely offer faster or more reliable service.
- **Token Value and Tiers:** Different Cashu token denominations could represent different levels of service (e.g., faster relaying, higher priority). This could create a tiered system where users can pay for better anonymity or speed.
- **Token Generation:** Users would need a way to acquire Cashu tokens. This could involve purchasing them from a Cashu mint or earning them through other means.
### **Security Threats and Mitigations**
- **Anonymity Against Correlation Attacks:** Even when using Tor, traffic patterns can still be analyzed to infer the origin of events. To mitigate this risk, Renoters can introduce:
- Random delays in event relaying.
- Dummy packets to complicate statistical analysis by malicious observers.
- **Replay Attacks:** To mitigate replay attacks, each Renoter must store, for a reasonable period, the IDs of received events and the decrypted events that were forwarded. This ensures that duplicate messages are not processed again.
- **Sybil Attacks:** Sybil attacks can be mitigated by requiring payments via Cashu tokens for relaying events, increasing the cost of launching such attacks. By ensuring that each relay operation has a monetary cost, attackers are discouraged from creating large numbers of fake identities to manipulate the network.
- **Traffic Analysis:** Traffic analysis can be mitigated by using Tor for Renoters. Routing events through the Tor network adds an additional layer of anonymity, making it more difficult to track message origins or infer sender-recipient relationships. While Renoters enhance privacy, sophisticated traffic analysis might still be a threat.
### **Operational Considerations**
- **Renoter Reliability:** The reliability of the Renoter network is crucial.
- **Latency:** Relaying through multiple Renoters will introduce latency.
- **Key Management:** While each layer uses a new key, the initial key generation and path selection process need to be secure.
This NIP provides a robust framework for anonymous event relaying in Nostr, leveraging encryption and Cashu-based incentives to enhance privacy and usability.
### **References**
- **Untraceable Electronic Mail, Return Addresses, and Digital Pseudonyms**: David L. Chaum (https://dl.acm.org/doi/10.1145/358549.358563)
- **Mixminion Design**: Mixminion: Design of a Type III Anonymous Remailer (https://www.mixminion.net/minion-design.pdf)
- **Nostr Protocol**: Official Nostr Documentation (https://github.com/nostr-protocol/nostr)
- **Cashu Token System**: Cashu: Ecash for Bitcoin Lightning (https://cashu.space/)
- **Tor Project**: The Tor Project - Anonymity Online (https://www.torproject.org/)
- **Onion Routing**: The Second-Generation Onion Router (https://svn.torproject.org/svn/projects/design-paper/tor-design.pdf)
#Privacy #Nostr #Anonymity #Crypto #CensorshipResistance #OnlinePrivacy #Decentralization #Encryption #Security #ThreatMitigation #Micropayments #CryptoEconomy #NextSteps #Development
-

@ f3873798:24b3f2f3
2025-02-23 19:21:48
A liberdade de expressão e a descentralização do poder estão intimamente ligadas ao avanço do pensamento humano e à construção de uma sociedade mais justa e consciente. A evolução da compreensão sobre o certo e o errado surge da comunicação, da observação empírica e da análise das consequências de ações passadas.
Para que haja uma aproximação real com a verdade e uma relação equilibrada entre a razão da vida e o convívio com o poder, é essencial garantir a liberdade de expressão. Somente por meio do livre debate de ideias é possível avaliar as diversas perspectivas, identificar erros e aprender com eles.
Embora a maioria das pessoas busque o aprendizado e a compreensão do que é correto, o apego cego a uma ideia evidentemente equivocada pode fazer com que percam o real propósito da busca pela verdade. Em vez de refletirem criticamente, muitos acabam apenas defendendo um erro pelo simples fato de se identificarem com ele.
Esse é um dos motivos pelos quais a censura tem se tornado uma ferramenta tão temida e contestada. Ilude-se quem acredita que a censura existe apenas para combater crimes e golpes. Na realidade, quanto maior a censura, mais favorecidos são aqueles que desejam ocultar informações, tornando ainda mais difícil a identificação e o combate a abusos.
Nos países livres, onde a liberdade de expressão é respeitada, há maior autonomia nas decisões políticas e um engajamento mais ativo da população. A participação cidadã fortalece o controle do povo sobre as influências que moldam o convívio social, garantindo que o poder não fique concentrado nas mãos de poucos, mas distribuído de forma mais democrática e justa.
-

@ ef1744f8:96fbc3fe
2025-02-23 19:12:52
6/WRXHyH0NZbnQJ9LX+VZnSZBv5Y3iYgws/SZV0BVXSE4c8GJp9/HVp2ZfUsstNeQ6KDIA2LVlmrnnW7Dwb6rr09Tbh79cQp7LukzkVzjtWJ6FlWkM8iaHW6YgET77s1PfZV0fZ9tVpXo77byWCMI/R8feh2BhQ7Nhr35AnLhWa++0jKtIRSShY+BRKGusyT8zn09pYg4Wg8rDosilrbd4GUX6QqMguLuiBSi7D8VRWAXEkSefV0T04QUeVyvIcIloKAkLqQloVAHGPMJc65GtVc1705lI4aa62aGraGhg1yEXkr5PelI3X1P5PYx29NZbPyeSUBh40dJQFZmYDxV9WSPUtJqIn/1gQUW0jueCuQASpNfKr17F2bHvcIOeOp+ukbWfbYDWt4IammFZCuXw==?iv=r1dw0EG1b8Fvsxm+8ykvRA==
-

@ ef1744f8:96fbc3fe
2025-02-23 19:12:47
UvEa5PR6FF+PYlYXJM9Sqt06t01ARuO5vW2ct5SyIg4+aA4nq38Mofx2NI5YydZJcn9iQO2f0nlgIJaMFuDYBLXQFHklMlq7OfY5UyTnOFZ8Js9NwIMI1I7IVWp6qPEBSp5z0OmKOB1g2Z1jEZrySpkMd53AjaeYXiEyT5IMSDsKjxAbwuLRWaZiCWKtxKJxRdT/VUvYeE9dIfnadSkZdF8oIT6PlZYlgQ836Rt7X4O6hA/ydm1Hrc/1H/eTuKS8ePXZs5E4b/+XtgPclYqMPdUzD5/4rplIRJJXZQZX3cWiGC/0ilWIqyItead3JhwPAb+lNAyycfYelZRNjI10U719a0wjBsc0q7PgjQvSze4=?iv=uIyBfCznssKHgZaTSeUpbw==
-

@ ef1744f8:96fbc3fe
2025-02-23 19:07:41
jBiT1F1hY5a3Vq2M4HQw8gzVRLsjgq55R7BiuA27ArQTWpw4IPwLwljsZ5LDgw3GrZLbDXwFJchQxD7uBvMnMJWhyNTCcrrtG+HEwOKI2QNoOuvD/7ilDa6LRkH27dcJkwYykm4m2Z/55OKy/tFlDmuILrVI292kLmYtaM5a9J0BCzEjUYD2y3rsSEao33ffBPr1sguZqJ4v+6+JPI/v2g90RrJx4SUS8rwi4u+JK7NmFZ8kvQ/2q3pkxQlGQwHO6QJvjojhnP1wh10Hfjv55Zy12QCoIFEwfEyXiVgiY28eiLqMmFwuew73/KlDac/7cK46SY8Ctc9XCCVyMIeWrtvAf9Xv/gaXf+Bdma9nFd49ajE0vTu1ek0w/VAjbDMM?iv=0lLA9SdWMNruCC1dP2LLgA==
-

@ ef1744f8:96fbc3fe
2025-02-23 19:07:38
3jqbINLb+Eu6xeXqFoZnxGx1vWAPYzmPDiD7QWXr7gEmomwqlvfMkaP//6lgCfRZWMgQ+CwOy8O87HiQVlKz4S7Or1EJD50aWxSLkPWsIxvP7qbQucBZT4dGJZcfx1roCbmatYwiFsEx82qmbpm8otkry7GI5tCFVMpFzvgW2W03j+ogXmvPgrgrta5RJT6eHX0HlzoRPmUi7MUzulSCnIWWwB+mrSbP5UHsPuwyNAsS5y3o4v0poQKEFEPRhin1x3e+Ng1TaaSvtqS8cDsJbl+MR/Tg+rf5tY7vJYWfE08I7oAu5onu5sPwQxRAdsugUUkHTqV4NFHPtRdUXETzpZWMnMzjRNQQxJxKCvAx1kNQPAawWMmiVm+D2CxTMsQF6ppj7Fy/2k071Atbyo1U24EAxnpe4QKxmRYmqGFi1/8=?iv=putQEJoUu8Jq2j5iMUe+5w==
-

@ ef1744f8:96fbc3fe
2025-02-23 18:57:50
PYb07VjQ46ph8Nm/1ChBV/71d/mvwfdg1JbshVfDENrQm77om+bb4qswyBwZ9Jd7j2ZWbQJZ4RLwEu4UG/kz93RkY7z8/fGDZWp4X2BGQKnayQmlVZW+nVfyQ1EWHiAUSbDZglbFBCM7OfpEA/bSTC0K0hacqvNF/c7OStbcK3rtYAlSoOmOd18uYFaCnZFC20IplacQitbEPRkWbCY7jk1J1n1axFXcYO37n9fR/Phor6TCLx0Mlqdv1AlqCA0Z9kuf9OwqGO/vp7FtdMDNowDFLdFSiYTO+q0Mt40oiGuHbJKdCRXczEnLZiXEuhgIIckFdN0pPHvyl9bfuU5H587nNhIBgkG8uh1U5RVVBCbixHkXGgtXUzUbPE/66AKTkYlXZM85VuOVduEoKzGwBqZCHcD/s33mdKI0eDUXrE5VrgzUFMBP1FKz7R2P6L6d?iv=EwWM5EBKuyRHXzIajYDOkw==
-

@ f7d424b5:618c51e8
2025-02-23 18:01:38
(This was originally posted on melonmancy.net which is a blog on write.as, an ActivityPub based blogging instance)
Listeners rejoice as we are joined today by [ironee212 @ shitposter.world](https://shitposter.world/ironee212)
Another major videogame release happened since we last recorded and it looks like a big stinker, or is it? All that and more in today's episode.
We mentioned a few things in the show you might want to pull up while listening, they are the following:
- [Avowed steam chart](https://steamdb.info/app/2457220/charts/)
- [TF2 SDK news](https://www.teamfortress.com/post.php?id=238809)
Obligatory:
- [Listen to the new episode here!](https://melonmancy.net/listen)
- [Discuss this episode on OUR NEW FORUM](https://melonmancy.cafe/d/103-mp101-my-favorite-body-type-b)
- [Get the RSS and Subscribe](https://feeds.rssblue.com/melonmancy-podcast) (this is a new feed URL, but the old one redirects here too!)
- Get a modern podcast app to use that RSS feed on at [newpodcastapps.com](http://newpodcastapps.com/)
- Or listen to the show on [the forum](https://melonmancy.cafe) using the embedded [Podverse](https://podverse.fm) player!
- [Send your complaints here](https://melonmancy.net/contact-us)
Reminder that this is a [Value4Value](https://value4value.info/) podcast so any support you can give us via a modern podcasting app is greatly appreciated and we will never bow to corporate sponsors!
Our podcast is created entirely with free software and is proudly hosted on [RSSBlue!](https://rssblue.com)
-

@ 04ea4f83:210e1713
2025-02-23 17:38:11
Erschienen in [Citadel 21 Vol. 21](https://www.citadel21.com/are-you-tired-of-clown-world?ref=europeanbitcoiners.com) | Veröffentlichung 21.03.2023 \
Autor: [Knut Svanholm](https://twitter.com/knutsvanholm?ref=europeanbitcoiners.com)\
Übersetzt von: [Sinautoshi am 24.03.2023 - 782344](https://twitter.com/Sinautoshi_8_21?ref=europeanbitcoiners.com)\
\
Rückblickend sieht das Jahr 2022 wie eine Art Höhepunkt aus. Während der Großteil der Gesellschaft weitgehend vergessen hat, was die politische Klasse ihren Untertanen während der sogenannten Pandemie angetan hat, kotzte Hollywood weiterhin Inhalte aus, die von „diversen" Regisseuren und Drehbuchautoren produziert wurden und bis zum Rand mit nicht ganz so subtilen Botschaften und Verachtung für ihr Publikum gefüllt waren.
Star Wars und Marvel haben nach der Übernahme durch Disney auf diese Weise Franchise-Mord begangen, und auch das Erbe von *Der Herr der Ringe* wurde von der linken Idiotie vergewaltigt und für immer befleckt. Jetzt gibt es von jedem männlichen Avenger eine weibliche Version. Hugh Jackman, der Schauspieler, der früher die Hauptrolle des X-Men-Mutanten Wolverine spielte, empfahl seinen Anhängern in den sozialen Medien kürzlich Bill Gates' Buch über den Klimawandel.
Als Frauen verkleidete Männer gewinnen Sportmeisterschaften für Frauen, und alle haben so viel Angst davor, als bigott bezeichnet zu werden, dass sich niemand traut, auf die Absurdität hinzuweisen, dass ein Mann alle Mädchen schlägt. Diese so genannten Sportler werden als „mutig" bezeichnet, obwohl sie alles andere als das sind.
Die Tatsache, dass es in einigen Berufen mehr Männer als Frauen gibt, wird als Problem angesehen, aber warum genau das ein Problem ist, wird selten erwähnt. Die Verdienste und die tatsächliche Meinungsvielfalt werden auf dem Altar der „Vielfalt und Integration" geschlachtet.
Die Gesellschaft ist an einem Punkt angelangt, an dem die Verbraucher Ärzten und Anwälten gerade wegen ihrer Hautfarbe misstrauen, da sie vermuten, dass sie deshalb in ihre Positionen gekommen sind und nicht wegen ihrer Kompetenz oder ihrer Verdienste. Noch vor zwanzig Jahren war die normale Bauchreaktion das Gegenteil: „*Wow, ein Arzt aus einer Minderheit! Sie müssen hart gearbeitet haben, um dorthin zu gelangen, wo sie heute sind!*"
Als ich aufgewachsen bin, wurde ein „Rassist" als jemand definiert, der sich einen Dreck um die Hautfarbe oder die ethnische Zugehörigkeit einer anderen Person scherte. Dasselbe galt für das Wort „Sexist" - man war ein Sexist, wenn man das Geschlecht einer Person bei der Beurteilung berücksichtigte.
Ich hatte das Gefühl, dass die Welt seit den Gräueltaten des Zweiten Weltkriegs im Kampf gegen diese Vorurteile einen weiten Weg zurückgelegt hatte und dass jeder eine anständige Karriere in jedem Beruf machen konnte, wenn er sich nur anstrengte und sich Mühe gab. Doch irgendwann in den frühen 2000er Jahren änderte sich etwas.
Plötzlich begannen die Worte das Gegenteil von dem zu bedeuten, was sie ursprünglich bedeuteten. Plötzlich war jeder, der sich einen Dreck um seine Hautfarbe scherte, ein Rassist. Jeder, dem es egal war, ob der CEO eines großen Unternehmens ein Mann oder eine Frau war, war ein Sexist.
Im Jahr 2023 behaupten manche sogar, man sei ein „Transphobe", wenn man nicht gelegentlich Fellatio an einem „weiblichen Penis" betreiben will. Die Tugendwächter laufen in der Tat Amok, und die Medienunternehmen lieben es. Sie lieben es, weil sie alles lieben, was die Kluft zwischen den Menschen schürt. Je verrückter die Aktionen der Clownwelt® sind, desto wütender sind die Reaktionen der leichtgläubigen, verärgerten Menschen auf der „vernünftigen" Seite des politischen Spektrums.
Die Menschheit neigt dazu, sich wie ein Pendel oder eine Abrissbirne zu verhalten, wenn es um politische Meinungen oder „die aktuelle Sache" geht.
Wenn es zu viele blauhaarige, übergewichtige, lesbische, glutenintolerante, vegane Umweltschützer gibt, taucht von irgendwoher eine Welle von Skinheads auf, die mit Steroiden vollgepumpt sind und gegen Samenöl und Fleischfresser sind.
Für jede Hillary Clinton gibt es einen Donald Trump. Für jede Greta Thunberg gibt es einen Andrew Tate. Für jeden CNN-Reporter gibt es einen Alex Jones.
Auch im Bitcoin-Bereich gibt es immer ein „aktuelles Thema", an das man sich klammern kann, wenn auch oft eine männlichere Idee als das „aktuelle Thema" des Mainstreams. Was nur wenige wissen, ist, wie faul diese Art des Denkens ist.
Wissenschaft ist nicht automatisch schlecht, nur weil „die Wissenschaft" schlecht ist.
Nur weil man gelernt hat, dass alles, was die Regierung sagt, eine Lüge ist, ist nicht automatisch auch das Gegenteil wahr. Die Welt ist nuanciert; die meisten Dinge sind nicht schwarz oder weiß.
Was wahr und sehr schwarz-weiß ist, ist das Geld - es gibt Bitcoin und es gibt Shitcoins. Nur wenn wir letztere für erstere aufgeben, können wir die Politik aus dem menschlichen Handeln entfernen und uns auf eine gewisse Wahrheit in der Basisschicht der Zivilisation zurück arbeiten. Bitcoin belohnt weder Rent-Seeking noch faules Denken.
Die positiven Aspekte vieler moderner Technologien werden oft übersehen. Auch wenn sich die Clownwelt® und die lächerlichen Ideen, die ihr folgen, wie ein Lauffeuer verbreiten, gibt es Gründe für einen ungetrübten Optimismus für die Zukunft.
Wir hören oft von den Gefahren der sozialen Medien und wie sie die Gehirne unserer Kinder schädigen, aber wir werden selten an die Kehrseite der Medaille erinnert. Soziale Medien verbinden Menschen in einem Ausmaß, das der Menschheit nie zuvor zugänglich war. Jeder Mensch auf der Welt kann heute mit jedem anderen in Kontakt treten und mit einem Mausklick einen Videoanruf starten. Das ist ein enorm wichtiges Instrument für den Frieden. In Kombination mit Bitcoin haben die Bösewichte keine Chance mehr.
Wenn jeder auf diese Weise vernetzt ist, wird überdeutlich, wie absurd es ist, dass wir in Staaten mit unterschiedlichen Gesetzen und Vorschriften leben. Warum gelten für meine Mitmenschen auf der anderen Seite dieses Teiches, dieses Flusses, dieses Gebirges oder sogar dieser imaginären Linie in der Erde andere Regeln?
Jeden Tag wachen mehr und mehr Menschen auf und erkennen, dass es nur ein einziges Menschenrecht gibt - das Recht, in Ruhe gelassen zu werden.
Immer mehr Menschen erkennen, dass die Geldentwertung kein natürliches Phänomen ist, sondern eine bewusste Politik. Es ist nur eine Frage der Zeit, bis die alte Welt verschwindet. Solange wir kommunizieren dürfen, gibt es Hoffnung. Das Internet hat bewiesen, dass sich jede Kommunikation auf eine Reihe von Einsen und Nullen reduzieren lässt, und Bitcoin hat bewiesen, dass Geld nichts anderes als Information ist.
-

@ dbb19ae0:c3f22d5a
2025-02-23 16:38:41
Derive npub from nsec given as parameter
``` python
import argparse
import asyncio
from nostr_sdk import Keys, init_logger, LogLevel
async def main(nsec):
init_logger(LogLevel.INFO)
keys = Keys.parse(nsec)
public_key = keys.public_key()
print(f"Public key (hex): {public_key.to_hex()}")
print(f"Public key (npub): {public_key.to_bech32()}")
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Fetch all relay from a given nsec')
parser.add_argument('nsec', type=str, help='The nsec of the user')
args = parser.parse_args()
asyncio.run(main(args.nsec))
```
https://docs.rs/nostr_rust/latest/nostr_rust/keys/fn.get_public_key_from_secret.html
https://github.com/ev3rst/nostr_sdk_examples/blob/main/ns-derive-npub.py
-

@ 2779f3d9:1a7f98d1
2025-02-23 15:20:19
# NOSTR SDK FOR APPLE PLATFORMS
## Progress Report # 2: Nov 2024 - Jan 2025
[Nostr SDK for Apple Platforms](https://github.com/nostr-sdk/nostr-sdk-ios) continued to make progress this quarter. I am still the sole part-time active developer and maintainer of Nostr SDK for Apple Platforms.
Implementations for a few NIPs were added or updated. The CI build pipeline was broken due to deprecated dependencies, which have since been fixed.
I pushed out a (controversial) [proposal](https://github.com/nostr-protocol/nips/pull/1770) to gracefully deprecate stringified JSON in favor of tags on user metadata kind 0 events to the NIPs repo as a pull request to improve consistency and reduce the complexity of reading and writing this commonly used kind. The SDK has become the first to [implement](https://github.com/nostr-sdk/nostr-sdk-ios/pull/212) with the hopes that others will follow.
We have had new external interest in the SDK from developers working on various Nostr clients:
- Damus has [copied the NIP-44 encryption implementation from the SDK](https://github.com/damus-io/damus/pull/2850/files#diff-5eb31bd8e6dc73d21bb3caef975a7f3508765e7f3ab01ecec545635ccb89d17c) for their use in [NIP-37 Draft Events](https://github.com/nostr-protocol/nips/blob/7cc120ecb01963e37f9adcd3b57b8efc1dd9e828/37.md), swapping out their previous usage of rust-nostr due to large binary size issues.
- [Fabian](nostr:npub1n0sturny6w9zn2wwexju3m6asu7zh7jnv2jt2kx6tlmfhs7thq0qnflahe) from Nostur contributed a [NIP-44 encrypt/decrypt example](https://github.com/nostr-sdk/nostr-sdk-ios/pull/204) to the SDK demo project to help him understand how it works and is [currently being used](https://github.com/nostur-com/nostr-essentials/blob/05e5452bb05c4c2e94ec9a78bb0c80d5123919a7/Sources/NostrEssentials/NIP-44/NIP44v2Encrypting.swift) by Nostur
- A new livestreaming Nostr client called [Swae](https://github.com/suhailsaqan/swae) has adopted the SDK, using Comingle as a reference client implementation.
Progress on the SDK this quarter has been slower than the previous quarter due to a shift in emerging priorities in Nostr. This quarter, I focused on building a native iOS Nostr event signer, as none exist today. The problem is that some iOS users do not fully trust pasting their private key into Nostr clients, which they fear could be buggy or malicious in accessing and signing bad data with their private key. A native signer on Android called Amber already exists, and there has been an increase in demand from users for an equivalent solution on iOS. The iOS signer app is called [Yeti](https://github.com/tyiu/Yeti) (credit to [Karnage](nostr:npub1r0rs5q2gk0e3dk3nlc7gnu378ec6cnlenqp8a3cjhyzu6f8k5sgs4sq9ac) for the name and Figma designs) and I'm using Nostr SDK for Apple Platforms and its demo app as a [test bed](https://github.com/nostr-sdk/nostr-sdk-ios/tree/tyiu/signer-demo) for this experimental cross-app communication protocol that will eventually be proposed as a NIP. I hope iOS clients adopting the SDK will get built-in standardized event signing protocol capabilities, tightening up this attack vector.
This report marks the end of the six-month grant period, as agreed with OpenSats. I thank OpenSats for supporting Nostr SDK for Apple Platforms, other Nostr projects, and the developer community. I will re-apply for a grant at OpenSats for the SDK, Yeti, or other impactful Nostr projects.
## 1) How did you spend your time?
Below is a broken-down summarized bulletpointed list of completed tasks.
### Development of Nostr SDK for Apple Platforms
#### Added
- [NIP-37 Draft Events](https://github.com/nostr-protocol/nips/blob/master/37.md)
- [NIP-44 encrypt/decrypt example to demo project](https://github.com/nostr-sdk/nostr-sdk-ios/pull/204)
### Updated
- [Updated NIP-11 Relay Information Document implementation](https://github.com/nostr-sdk/nostr-sdk-ios/pull/201) to support all the newly added fields
- [Renamed ParameterizedReplaceableEvent to AddressableEvent and NonParameterizedReplaceableEvent to NormalReplaceableEvent](https://github.com/nostr-sdk/nostr-sdk-ios/pull/205) to conform to the [new terminology](https://github.com/nostr-protocol/nips/pull/1418) in the NIPs repo
- Gracefully deprecated stringified JSON in favor of tags on user metadata kind 0 events, being the first to implement the [not-yet-merged proposal](https://github.com/nostr-protocol/nips/pull/1770) to NIP-01/NIP-24
### Fixed
- Fixed broken CI build pipeline
- [Fix GitHub workflow for running build and test](https://github.com/nostr-sdk/nostr-sdk-ios/pull/202)
- [Upgrade upload-pages-artifact from deprecated version to v3 to fix build](https://github.com/nostr-sdk/nostr-sdk-ios/pull/207)
- [Upgrade deploy pages action to v4 to fix build](https://github.com/nostr-sdk/nostr-sdk-ios/pull/208)
#### In Progress
- Native iOS event signing protocol, using the [SDK as a test bed](https://github.com/nostr-sdk/nostr-sdk-ios/tree/tyiu/signer-demo)
## 2) What do you plan to work on next quarter?
The top priorities will be developing the native iOS event signing protocol, building out Yeti, and integrating the iOS signing protocol into the SDK.
I will continue maintaining and developing the SDK, albeit at a slower pace:
- Deprecate EventCreating protocol in favor of NostrEventBuilding protocol for the remaining event kinds
- Add or update implementations for various NIPs where critical or needed
- Support clients as they integrate with parts of the SDK by answering questions, fixing any issues they have, adding requested features, and reviewing pull requests
## 3) How did you make use of the money?
Living expenses.