Oddbean new post about | logout
 Okay! Let me bite. Explain me like I’m a 3 years old. What is the outbox model? 
 #AskNostr

nostr:nevent1qqswgllgytlx6z3wrclnjjl3ffgk97jt5kwdur2z90frf56ga3tnmngpr3mhxue69uhhyetvv9ujumt4w35ku7thv9kxcet59e3k7mgzyq2h0ezenhgsep35nrlrcg9as24047pf5k2uaq79e79vx334xxcfkqcyqqqqqqgg9na9r 
 This is the box 🎁 everything outside is outbox 🤣 
 first explain me like I’m a 6 month old, what is Nostr ? 
 It is a simple, open protocol that enables global, decentralized, and censorship-resistant social media. 
 woah, all that for a 6 months old 😆 
 Sorry, I don’t have kids so it’s hard for me to explain in easy way😂 
 Users define what relays they read from and write to in their relay list. Then clients know where to send notes when tagging specific people. Clients then also know where to read notes from when pulling their profile feed.

Timelines are a bit more tricky: you have to gather everyone you follow’s relay list somehow, then find the common relay subsets among all of them:

Alice, bob and jack are writing to relay A
Tom, Jerry are writing to relay B
phil is writing to A,C

Then your timeline feed is:

subscribe on A to alice,bob,jack,phil
subscribe on B to tom, jerry

With an algorithm that minimizes the total relays you connect to.

You’re also hoping these relays are reliable and have decent uptime.

Overall it might save a bit of upload bandwidth when querying, but it makes your client connect to a bunch of random relays that other users have defined in their profile. Many of which might be offline, unreliable or malicious. So you need to make sure your client is hardened against bad relays.

The dumbest way of doing it is damus’ original model that just reading and writing to relays in your relay list. It’s much simpler client-logic-wise but you have to manually add/remove relays to stay overlapped with your friends. 
 This is a very good explanation. Thanks! 
 Thank you for explaining.
Regarding the connection to the unreliable and malicious relays what do you think about some sort of reliability checks on relays as an addition? (Historical performance, uptime, responsiveness etc. ) 
 yes I think that would be vital for implementing this in a way that would produce reliable outcomes. 
 🤝 
 smart users can easily find/ignore bad actors - agency relays 
dumb users need / will stick to default as always.
no need historic perf. - similar WoT or bitcoinmint rating or trust model.  nostrudel has RELAY REVIEW section before.
what if SWAT team comes pull gun on RELAYADMIN HEAD ask him handover all realy log n record ? History of relay doesnot mean it will remain same relay forever 
 HTTP doesn't have any redundancy at this level. Redundancy for websites means using multiple servers on the same IP address usually through network routing tricks. DNS round-robin for example doesn't quite work.

And yet HTTP servers seem to be doing just fine. Relays will become as reliable as websites over time, there is no reason they shoudln't be.

Plus then we have our redundancy of specifying multiple inboxes or multiple outboxes.

So I don't think there is a long-term problem with reliability of relays.

Currently though, sometimes all of somebody's relays are not working properly because nostr is still a work in progress. 
 Yeah I also think that those who run relays on here not for fun but to support network will be doing so. So, it should be more stable over the time. Regarding malicious stuff I’m not sure though. How to deal with that ? 
 Advanced users should always able to PICK their OWN relays.
yes there will be bad boys and agency controlled relays admins too.
Entry level users will always stick whatever DEFAULT is given to them by the app or portal. 
 If I understood it properly: the scenario of malicious relays (planting a relay in a profile and baiting a user to tag in order to get their ip address) is something first time users (or non tech) might not be aware 
 Let's say you want to send a message to all of your friends, even when your friends are at home eating dinner with their parents. You tell all your friends "I will leave messages in the treehouse." Then when you want to send them a message, you write it down and leave it in the treehouse. When your friends are done with dinner, they come to the treehouse to read your messages. The treehouse is your 'outbox'.

Let's say one of your friends Joe, he is in a wheelchair and can't climb up into your treehouse. So a friend of his copies down all the messages onto new pieces of paper and brings them to him. This friend of Joe's is a 'client proxy'.

Let's say Joe, since he is in that wheelchair, he tells all his friends "If you want to contact me, please leave messages in my parent's mailbox, because I can't climb into that treehouse."  This is his 'inbox'.  Any message that he is copied on, mentioned on, or is a DM to him, gets a copy put into his parent's mailbox so he can find it and read it.

Let's say some construction company buys the property with the treehouse and cuts down the tree and starts building a supermarket. This is 'censorship'.

Let's say you then come up with 3 different places where you put every note, each place getting an exact copy. All of these places are your 'outboxes' and the likelyhood that all of them would be taken down is low, so your messages are somewhat 'censorship resistant'. 
 Sir, why I can’t zap you? 
 Indeed. Totally worth zapping that note! 
 I don't bother to zap people, and I don't think it's a good look to accept zaps but not to send them. 
 I can respect that. Thanks for the explanation, best one I’ve seen so far! 
 @jack you have to delete all of the rules! 
 You are amazing Mike! Such great explanation 👏 
 these responses are ridiculously long considering the prompt 
 nostr:nevent1qqsv6yxh0rn6t57sjw64xpw69xrxp2akget0sw2rlww3lvr5ksekv2gpzpmhxue69uhkummnw3ezuamfdejsygqh88vn0hyvp3ehp238tpvn3sgeufwyrakygxjaxnrd8pgruvfkaupsgqqqqqqsr43vwc