The Dawn Nexus

in #dawn-network7 years ago (edited)
is here is the current draft of an account/ messaging/ collaboration system I am building which will become the kernel of the Dawn Network.

You can find the project on gitlab here: https://gitlab.com/dawn-network/nexus and you can look at the code I am writing.

I am at this point untangling and ironing out the data format. I have long been an advocate of log based data storage databases, and seeing it in action with steem, discord, rocketchat, and so on, as well as having played with quip and sketchboard, I can see exactly how close, to the point of only a difference of language, is a messaging system as a collaborative creation system.

So the function can be created on the client side. The database doesn't care about how the data is used, it is just a system for distributing the chatter that is protected by signatures so everyone knows who is responsible and who has delegated the right to change what.

Ever wished you could edit an email after you clicked send? Oh, you are used to doing that with Steem. But Email.

What can make it happen? An open protocol. Since email is a protocol, everyone can implement it. At the centre of any communication network, there should be a protocol that provides short and long text messaging capability as a first class citizen beside account registrations. Documents and messages specify who is the 'author'ity, in the header, and proven by the signature.

Here is the README.md for the Dawn Nexus:

The Dawn Nexus

The centre of all communications neworks are directories and messaging. Thus, the Nexus, the connection point between all, includes both. Identities are essential for all services and for protecting privacy with encryption, and messaging is essential for coordinating between individuals.

The Nexus is built upon Tendermint as the data logger/inter-node synchronisation engine, and uses dgraph to store the data.

The Dawn Nexus is really a generalised framework for cryptographic account based document sharing and editing. It provides the essential primitives to enable any communication of textual content without a central server, enabling editing, forking, merging, and using bots, moderated group systems. The design is agnostic as to whether it is on an unsecure or private network, it can be adapted to both closed, private systems as well as fully open, by configuring appropriate settings on a node, and for moderation, access to control bots that enforce moderation.

Accounts

The accounts registry stores an account with an immutable identifier hash key, and attached to this is a username which does not have a uniqueness constraint, as well as a chain of cryptographic keys, the first and only mandatory one is a 256 bit elliptic curve public key for the matching private key, which acts as the primary identifier and authentication system for the entire Dawn Network, for a particular pseudonym/avatar.

Account key recovery

Using the messaging system, it is possible to distribute the private key to trusted contacts by using AoNT followed by user controlled ratio of issued to required keys shared secrets key splitting, enabling the recovery of the account key even if all personal copies are lost, in fact this facility will be available to use for any sensitive file one wants to insure against loss of. This is also why accounts and messaging are tightly integrated.

Messaging

The communication system is built on a design similar to bitmessage, but with a short and long message format for implementing both chat and email, integrated in much the same way as has been done with Facebook's messaging. This chat system will thus have the ability to redact posts, as will the email (the author cannot prevent viewing the history, however), to append reactions (emoticons) to pin or tag posts so they can be easily and quickly associated. Special types of pins exist also that mark special kinds of data being secure, persistent, loss-proofed storage, and are replicated securely across all user's devices as well as distributed shared secret files from associates.

Total user control over message relay functions

The user will also have total control over what messages are processed and stored by their node. They can set nodes to run on a whitelist of accepted accounts, such as for an internal messaging system for an organisation, or a blacklist, which can not just hide from the user interface but also have the messages dropped, not stored and not relayed, as a social network regulation system to reduce the ability of malicious actors to broadcast rubbish to the network, be it spam, trolling, fraud, cyber-streaking, sexting and rotten.com type shock material, or what have you.

It also enables things like moderated chatrooms where there can be redactions to enforce such things as unvoicing, and various automatic automation functions like link previews.

Total implementation primitives for both fully moderated chatrooms and collaborative editing

The addition of the ability to modify, redact, assign ownership, granting owner privileges, and so forth, functions that are increasingly seeing use in many messaging systems, also happens to enable simple text document editing as an application for the data. Most document types have plain text encoding formats. So this also will include code. A full system for this would however be an extension (a CVS system), to allow more fine grained control than a single owner and write access permission, such as a quorum.

By creating a basic bot framework included with this, a fully moderated/curated group system can be implemented. All data formats start with description languages, in plain text, and have at base a spine, or trunk, from which many uses can be applied to the branching and merging of branches from this.

It is not intended that the message system be a monetising function in itself, but rather that it facilitates the collaboration of users to generate content, however, it can also enable checked citations whether in messages or in posts, referring to posts, or referring to messages (the references should be added as tags as per the data structure). However, I expect that much of the code will be reused in some way to implement the content monetisation Agora Network, which adds a layer of coordinating to deliver content to consumers and monetise this content based on this delivery.

Sort:  

Don't forget to eat and sleep every now and then!

following this advice is why there is something new. I have been pretty much out of order until yesterday evening. Hellish. I was doing nothing except undergoing an ordeal. I broke after 36 hours and got medications I knew would fill in where whatever thing I had missed was missing until it got back into order. Other things worked out. The bleeding public holidays finished.

But for sure, rest, quiet and darkness, far more valuable than they look...

I'm just really excited. The programmer's meta meta meta mentality has been at last satiated for database designers in that the database can be pinned together like the coordinates of a 3d model, and given rules even that can change it's geometry and topology... I understood it only vaguely until I started writing the descriptions of the data as I would think they would be logged, as transactions, and lights lit up all over the place.

I have successfully not smoked a cigarette in now over 3 days, and same for caffeine. I had to have some vodka to celebrate before finishing for the evening. Transactions model computer systems so much better than objects and procedures and declarations. They are a bit of all of these things. Every action you register into a computer triggers a little tree of thingies to make hamsters run their wheels how you want them to...

I am so glad to hear you are doing better and not smoked and no caffeine. Good for you!
Nice to be kept up to date on your progress for the Dawn Network also.

I can well understand the excitement from my own coding and electronics design experience, but at some point, you will get too tired to do things properly, even when happy and in full flow.

Even at that point of fatigue, it is almost physically impossible to stop halfway through a module/function/etc. that is not finished yet, when you see in front of you how it should be.

Depending on your age, this is not a way of working that is without health risks ... but it sure can be fun.

I had been procrastinating, hard. really hard. This is why I am breaking it down before I start putting too much more procedures into it. The transactional model maps so naturally to an API, to algorithms, to the blockchain and in this design, the data has expiry dates. For jokes, the default is 7 calendar years.

Ever wished you could edit an email after you clicked send? Oh, you are used to doing that with Steem. But Email.

Thats some next level stuf. interesting

Keep up the good work

Coin Marketplace

STEEM 0.20
TRX 0.14
JST 0.030
BTC 68854.36
ETH 3283.36
USDT 1.00
SBD 2.67