1729.cloud: A nostr relay for The Network State (TNS)
Notes and Other Stuff Transmitted by Relays (nostr)
Why nostr - Why TNS - Why 1729.cloud
I asked the very same question, before embarking on this quest.
Just recently, I experienced a degradation in some of my social apps & platforms — which impacted my ability to receive reliable information from the folks in my circle and transmit important responses to them.
When stuck with a problem, my standard action is to conduct some research, ask for assistance from my trusted circle, begin debugging and find a solution.
This led me to the world of nostr protocol and its vibrant community of engineers, builders, creators, users, …
To further understand why this is important, here is a 1-sentence explanation for:
nostr ( in 1-sentence )
The simplest open protocol that is able to create a censorship-resistant global "social" network once and for all.
The Network State ( in 1-sentence )
A network state is a highly aligned online community with a capacity for collective action that crowdfunds territory around the world and eventually gains diplomatic recognition from pre-existing states.
1729.cloud ( in 1-sentence )
A cloud-1st collective researching, experimenting, and implementing protocols that shall serve as a catalyst for Web3 tinkerers, 1729ers and TNS netizens.
Like many who discover any of the above 3 groups { nostr; TNS; 1729.cloud } follow through by digging deeper, and finding for themselves how the tool/collective can add value.
Very soon, I was convinced that I can not only use nostr to solve the problem I was experiencing, but also build something using the nostr-protocol.
As an engineer, I wanted to further understand how the protocol was designed and implemented. So I began looking into the Github repository for nostr-protocol and was pleasantly surprised by its elegant design and brilliant implementation.
The knock-on effect of how the protocol does not require | trust a central server reminded me of the early bitcoin days.
Using a public-key / private-key scheme anyone in the world with an internet connection, is now able to send + receive messages that are tamperproof.
How does the nostr-protocol work ?
You don’t have read the entire documentation, or code, to understand how the protocol works and how quickly it can become a very useful tool.
Everybody runs a client. It can be a native client, a web client, etc. To publish something, you write a post, sign it with your key and send it to multiple relays (servers hosted by someone else, or yourself). To get updates from other people, you ask multiple relays if they know anything about these other people. Anyone can run a relay. A relay is very simple and dumb. It does nothing besides accepting posts from some people and forwarding to others. Relays don't have to be trusted. Signatures are verified on the client side.
The protocol primitive is a set of rules for anyone building upon it, e.g. clients, relays, servers, bridges, gateways, tools, libraries, etc. to be able to communicate. Leaning on giants prior, such as email, bittorrent, bitcoin, nostr is a building block we can use to build practically anything.
When one chooses to communicate using nostr, it is assumed you have already created a public / private keypair for self.
The public key is used as a username and may be shared with others.
The private key is used as a secret and never to be shared with others.
Everything is an event in nostr and a user uses their private key to sign and provide evidence that they are the true owner of the public key.
A glimpse into the elegant design of the only object type that exists, the event, which follows this format:
{
"id": <32-bytes lowercase hex-encoded sha256 of the the serialized event data>
"pubkey": <32-bytes lowercase hex-encoded public key of the event creator>,
"created_at": <unix timestamp in seconds>,
"kind": <integer>,
"tags": [
["e", <32-bytes hex of the id of another event>, <recommended relay URL>],
["p", <32-bytes hex of the key>, <recommended relay URL>],
... // other kinds of tags may be included later
],
"content": <arbitrary string>,
"sig": <64-bytes hex of the signature of the sha256 hash of the serialized event data, which is the same as the "id" field>
}
And if you’re after the event.id, it is a sha256 of the serialised event done as a UTF-8 JSON without any line breaks and/or white spaces, which follows this format:
[
0,
<pubkey, as a (lowercase) hex string>,
<created_at, as a number>,
<kind, as a number>,
<tags, as an array of arrays of non-null strings>,
<content, as a string>
]
Events are defined by kind and it is a field in the object illustrated above. Here is a list of some kinds that have been defined thus far:
When you want to follow the purple rabbit the nostr improvement proposal, here is NIP-01
Genesis of 1729.cloud !
I am an experiential learner, so I wanted to learn, how the relay works, so decided to run one, on a trial basis.
Little did I know that, what began as a small experiment, grew into something much bigger, as I discovered that a few more of my fellow 1729ers were also curious and experimenting with nostr.
We decided to bootstrap and run a nostr-relay service for ourselves, which gave birth to 1729.cloud !
To get an aerial view of where the current relays are operating from, I have enclosed a global map.
And here are some high level stats:
319 relays in total
85 public relays
39 restricted relays
195 offline relays
By running a relay in the nostr ecosystem, we have now enabled 1729ers to actively participate in the network state and contribute to its growth.
1729.cloud nostr relay dashboard
Here is a recent snapshot of 1729.cloud nostr relay dashboard and seems to be operating alright under current workload.
Do feel free to add this relay, when you start using nostr.
wss://nostr.1729.cloud
How do i get started on nostr ?
By now you might be asking yourself, so how do I get started on nostr.
Good news, there are heaps of resources on this topic and I shall provide a link to them shortly.
High level steps to get yourself onboarded on nostr:
create a private / public keypair
save and don’t share you private key
pick a client and update your profile
create posts
follow others
And this is a good discussion thread on How to start using Nostr
Nostr clients ( good coverage )
Quite amazing to see the choices of client one has to get started. Here is a quick table of them, and I shall provide the link to reference resource.
Projects on nostr ( a lot )
To really comprehend and appreciate the number of projects on nostr, I invite you invest some time to explore this github resource, which lists them by these categories:
protocol
relays
instances
clients
libraries
bridges and gateways
tools
nip-05
offline signer
vanity pubkey mining
browser extension
community
tutorials
My nostr profile
Here is my profile on nostr, should you feel the urge to reach out and/or follow me.
Thank you and look forward to hearing from you soon, on nostr — use my (bech32) public key to connect:
npub12l5etzufzfvy8hg9jaqcglkhd97yjgd8gwxxhdj2302w60uwp9uswe97uj