Embed Notice
HTML Code
Corresponding Notice
- Embed this noticeI'll try to simplify because this knowledge is essential for anybody trying to build off of Nomad.
In Nomad, the channel guid is your 'claimed' network identity.
In ActivityPub, both the channel URL and webfinger address are your 'claimed' network identity.
The difference is that under ActivityPub, the identity cannot exist without a server. Under Nomad, the identity is not tied to any server, but only to the guid.
In either case your claimed identity is then signed by you with your private key. The signature is the 'proof' of your claim.
When using Nomad, you also sign your current location (the site URL).
This isn't needed for ActivityPub because you only ever have one server. If you change servers, you need a new identity and anything that was ever stored with the old identity will need to be fixed.
On the other side of the conversation, the receiver receives something from you. It is the receiver's responsibility to fetch your public key and verify your signature, or in the case of Nomad signatures as we verify both your identity and location. Assuming your public key verifies both, we have now proven the 'claimed identity' and verified that the message was sent by you and also that your channel is currently using this location.
Once we have done that, the receiver generates the "xchan_hash" or as we call it in later versions - the "portable_id". This is a hash of your guid and your public key. Everybody on the network calculates the exact same portable_id for your channel. There is nothing secret about this and you can pass it around (and we do), but the only rule is that we never rely on a portable_id generated by anybody else. We can only use or rely on a portable_id we generated ourself after verifying your claimed identity. Otherwise it's just another 'claim' and could represent anybody. Once we've verified your identity and created this hash ourself, we can use it internally to refer to your identity - no matter what server you're using. And if you move servers, we don't need to change any existing data because your identity didn't change. All we need to do is add another location to those which we've currently associated with your identity.
I'll stop there, as adding any more information would just make it all too confusing. This is the essential explanation of how Zot/Nomad works. Everything else is just passing messages around.