Project Decorum: DECentralised fORUM (and protocol)

but what if we get a gap? I mean what if we have 10 comments and then the comment #3 is deleted by its owner? How the app will know to not stop on the comment #2?

We can simply check for several more than one to be sure, possibly with some randomization added to the mix. There are more such potential exceptions, and you’re right that they need to be taken into account (which is definitely doable). Good thinking!


Quite. This is why I’m not sure we have the real deal here. Another is that accessing non-existent data is, I think, treated as spam and can lead to disconnection.



It sounds like it’s not set in stone yet how exactly this will be handled, but I’m convinced that “searchable” general purpose SD’s will exist. Not having them would necessitate servers being reintroduced for many kinds of apps.


In addition, the “delete” button on the decentralised forum won’t truly delete the SD, it will only empty it’s data field and invalidate/empty it’s ownership. It won’t be displayed in the thread anymore, but the SD will be there. So someone would have to use custom code to try to create such “gaps” in threads by truly deleting them.

I also described how everyone can be a “moderator” and hide messages and how such “moderator metadata” can be shared with other users. By invalidating (hiding) the addresses of the gaps, the protocol will automatically skip them and resume with any posts after the gap.

So yes, people could try to sabotage threads, but they’ll have to get out of their way to do so, it will start costing them quite a bit if they want to keep doing it, and communities can find and fix such sabotage themselves. It will undoubtedly happen from time to time, but I personally expect 99.99% of the threads won’t be bothered by this.

Edit: In short, I don’t think this is a bigger problem than “regular” spam. Popular forums/threads will require moderation, that’s life…


some thoughts in order to help mitigate this problem:

  1. besides doing a linear search to find the last comment, you can double-check it with some half-interval search algorithm. In this case, with just 8 GETs, we can find the last comment, even if we’re talking about a 4 billion comments universe. By using these 2 methods at same time, we can get a more accurate result.

  2. you can implement a NOOP comment to replace deleted comments. A maintenance script can be run by the admin to sequentially scan the comments, find gaps and replace them with NOOPs. It can check until the last one and keep going for thousands more (it’s an admin tool, not the client, so no one will complain the time spent to find the last one). This would be a sort of integrity tool (on the future this can run on the safe map-reduce/cloud computing).

  3. you can also have an admin tool to scan and write the total amount of comments on some key-value. Then, this value can be used by the client as a 3rd method to calculate the comments counter. New comments can send a message to another tool, via safe messages, which will update the counter.


Quite right, those are some good ideas as well. I’m very optimistic that we can make it easier for the “good guys” to fix things by giving them the right toolbox than it is for the “bad guys” to seriously sabotage/spam threads. It’d be futile, a temporary annoyance at most, and thus not worth the effort/price.


sure. Just for the record, I agree with the “keep it simple”/“if it ain’t broke, don’t fix it” attitude - many times we (me) create solutions for problems that will never exist. But I confess that I’m paranoic with “bad guys”.


Ah, but in the case of sabotage, perhaps the problem would have existed if we hadn’t prepared a solution just in case. The existence of a solution may be a strong deterrent to not cause the problem in the first place. :smile:


But of course that simple method allows a disgruntled forum member to write bogus entries. What methods have you considered to prevent malicious writing of SDs to interfere with normal conversations?

Using linked lists. Or better index SDs that the APP owns and links the SDs that way. The indexes are link list (or sequential for topic). This would actually allow for “cross posting” in special cases if the APP allows it. Also saves on network traffic looking for potentially non-existent SDs


I have BTC or MAID burning a hole in my wallets…where can we donate? Sorry, I feel like an idiot saying this but I cannot find the donation address?


You’re not an idiot, I haven’t posted any yet! I felt it was better to not ask for donations until I have a proper demo to show you, but now that you’re asking for it I suppose I should post an address anyway. Coming soon, then!

Edit: I’m extremely paranoid when it comes to security, so it’ll take a while before I have gone through my procedure to create a donation address.


You probably use offline Armory and a paper cold storage wallet that’s stored in a safe in switzerland. But can anyone really blame you?

1 Like

@Seneca, I’m very excited with this project, but I want to make sure of one thing: you said that this protocol/forum will be open-source. So, can I use it on a closed-source project that I’ll economically explore (by charging users) and still yet you will have no rights over it?

As a developer myself, being an open-source enthusiast, and have contributed with many open-source projects (there’s lots code of mine in many closed-sources projects), I know that this is not a problem for us and isn’t unethical as many non-developers can think, but I want to check if you are cool with that.

PS: ok, I’ll pay you a beer if this project help me to earn enough money to afford the “Rich Uncle Pennybags” life-style. But just one beer, don’t abuse my goodwill. : D

1 Like

I am.

Well, you didn’t specify the size of the beer…


I still don’t see a place for me to send donations? You should give the people who want to donate a chance now while MAID is super undervalued. That way as you progress with your project, which brings value to the entire network and SAFEcoin, your fund wallet will exponentially get more valuable.


Here are the docs that I promised in my previous post. They were written in August before there was a clear API, but many of the question still stand (mainly due to lack of details on SD). The plan was to initially use Firebase, as it offered a ton of similarities with the SAFE network. Hopefully this can raise some discussions, especially from @dirvine or the devs.


Data structures:

Notes: obviously one of the main issues is how to handle collections of data spanning multiple users. I did it in a way that I thought would work well, where the index was built on the community owner’s drive. Each “leaf” in the index is just a JSON file, such as {"owner": $userid, "timestamp":1435530893}, and the actual filename would be $threadid.json. If I wanted to get the entire index, I would just do a GET on the whole index directory, which would return every file, and thus the pointers to the locations of every post. You could easily add limits and offsets, such as the first 50 posts, last 50 posts, then the next 50 posts, etc, which would simply get the first 50 json files.

I am eagerly awaiting news on how indexes, limits, and offsets will work using SD. And I hope the ways to do that will be easily scalable to hundreds of thousands, nay, millions of entries :smile: I am not sure of my future plans (whether or not this will come to fruition), especially since Seneca is working on Decorum, but either way hope you find the docs useful in some way!

Also pinging @happybeing as I know this interests you :wink:


I think it would be interesting to develop an app for decentralized big tweets. Will it be possible to use the protocol for that? The posts are listed as short messages like in Twitter and if they are longer than say 160 characters they have an expand button for showing the rest of the post.

Users can reply to posts which becomes comments under the original post. And the comments can in turn be replied to in the same way and so on.

Allowing followers will likely be too complicated in the first version but users can go to a particular hashtag to filter the messages. And replies are shown as notifications. Up and down voting perhaps something for a later version. Each user has an ignore list with user IDs.


@Seneca Yo bro maybe this might also help to give you an idea:



My apologies for the long silence in this thread, but I haven’t been sitting idle! I postponed the crowdfunding round because some new ideas occured to me during the design of some Decorum features. I have found a way to be able to issue transactable SAFE tokens to funders that will have utility value in the Decorum protocol. They will be related to content promotion, though I can already promise everyone that at no point paid promotion will be forced down anyone’s throat. User settings allow paid promotion score to be ignored, though by default they are taken into account (among other factors).

More details on that soon in a new thread, this is just the introduction thread after all! I feel though that I should disclose already that only MAID will be accepted to avoid complications with conversion rates. I figured it’s better to disclose that sooner than later to prevent it from becoming a sudden pump. So, no need to instantly rush to get more MAID.

EDIT: Above is incorrect, due to popular demand BTC will be accepted as well.

Another news item is that my goal is now to have the development of Decorum as the subject of my thesis. To everyone that didn’t know yet, I’m a 26 years old computer science student at a University of Applied Sciences in the Netherlands. Having Decorum as my thesis subject would allow me to dedicate at the very least five full-time months to this project. I’m very excited about this prospect and I have no doubt that it’d result in far higher quality products!