Spreadcoin => Main Development => Topic started by: georgem on January 08, 2016, 12:00:00 am

Title: Coming soon: Servicenodes with a first Service - a decentralized blockexplorer.
Post by: georgem on January 08, 2016, 12:00:00 am
So finally here it is, the update about the current state of work regarding servicenodes and spreadcoin.

I'm happy to report that development is going very well, much better than before,
also because finally there is a very clear vision about the direction we will take with servicenodes.

Contrary to previous estimations that saw "blank servicenodes" (whatever that meant) arrive on testnet at the end of 2015,
the insights I gathered during nov/dec 2015 led me to the invention of an actually useful first service which will allow us
to build a network of servicenodes that will be valuable way beyond just the spreadcoin community.

So, instead of you further waiting for "Something something servicenodes" to arrive soon, you will now know exactly what to expect as the first basic service, namely a...

Decentralized Blockexplorer

I'll let a few Screenshots of the current wallet speak:


(the ugly welcoming screen of the old wallet has disappeared, and people are directly seeing the input field of the decentralized blockexplorer, ready for immediate use)


(As an example I show one of the top Bitcoin addresses. It works exactly as you would expect from the many hundreds of centralized blockexplorers out there)


(And one of the top Dash Addresses.)

So what does this mean?

The first fully functioning service that will be enabled through servicenodes is a distributed decentralized blockexplorer, accessible thrugh the spreadcoin wallet (and spreadcoin daemon / RPC)

People who run a servicenode can host any other coin they like on the same server and register it with the servicenode.
Any such coin will then be searchable through the decentralized blockexplorer. (If a coin isn't atleast hosted by a certain amount of servicenodes (to be determined) the coin isn't considered.)

All hosted coins need to be full node daemons, but they can run without tx-indexing and disable their wallet-functionality.
The only requirement is that those daemons create and maintain a full blockchain by themselves, on the same server.

Since anyone is allowed to host any coin they like (power to the people!), we are going to see a spread of different setups of course.
See for example this servicenode overview screen that lists all the current servicenodes that I run in my small homework right now:


(People can add completely new coins, or drop old ones, it's completely their own decision)

So how does it work?

Within every servicenode runs a tool called Universal Blockchain Analyzer (UBA).
It is capable of identifying and dissecting any blockchain (as long as it doesn't divert too much from current standards, but this can be further improved),
and creates its own optimized datastructure from all the data it gathers, for every coin that is registered with the servicenode (happens through the .conf file)

While this process happens, the UBA communicates and compares key data elements with other servicenodes in the network.

That's the job of the UBA: to convert relevant blockchain data for fast and easy distributed access thru the servicenode network.

The coin daemons themselves run without any disturbance. In fact the admin needs to start / stop them himself, the servicenodes won't interfere in any way with that procedure.
It is merely required that the servicenode daemon has read access to the blockchain folder of each coin, and nothing else!

Now a few more details about the servicenodes themselves.

Servicenodes that host full nodes and distribute derived blockchain data to the network to be used in the decentralized blockexplorer will earn a certain percentage of the mining reward (to be determined).

As has been planned for a long time, servicenodes won't require a fix collateral, instead the collateral will be determined by the free market.
An artificial competitive situation is created by only allowing a certain maximum amount of servicenodes to exist.
This limit isn't fixed either, it grows slowly over time.

As an example, in my home network I implemented a limit that is calculated with this formula: (total coinsupply) / 2000:


This means that with every 2000 coins that are mined there is one servicenode allowed.
(But 2000 is just an example, and will have to be determined in testnet. A few months ago we used 2880 to make a few interesting calculations.)

As you can see in the screenshots I currently run 9 Servicenodes on 9 computers.
Current total coinsupply in my very new fork is 19119, which divided by 2000 allows for 9 servicenodes to exist (or fewer, but not more).

As you can see each of these Servicenodes has its own idea about the collateral it wants to use, and this diversification creates yet another spread!

All Servicenodes are sorted according to the collateral they are willing to invest, from smallest to biggest. (the more the better)
In my example, the weakest Servicenode uses just over 100 SPR, and the strongest about 3000 SPR.

As seen in the last screenshot (Spread Distribution Screen) the distribution will probably most of the time look similar to a ski-jump.

Now why is the Servicenode with the smallest collateral called "weakest link"?

("weakest link")

Well, because an available seat isn't assigned to the same servicenode forever.
All seats are constantly on sale even the ones that are currently occupied (  ;D )

This means that when a newcomer arrives and he finds no empty seat, he might decide to grab one of the seats away from someone else's arse.
(but he can also come a little later when a new additional seat was created, but so will others... )

Let's imagine a few scenarios, using my example.

The 9 Servicenodes in my home network use these collaterals:


Now, imagine a newcomer arrives and wants a seat.
He could be a cheap shot and just invest 100.002, but this would be enough to "kick" the servicenode currently sitting at the weakest seat out of the race.

(BTW, "kicking" in this context merely means that the servicenode doesn't receive any rewards anymore. It does not shut down the server or any full node, or anything like that.
But what happens is that the UBA stops working, since it doesn't recognize its servicenode as valid anymore.)

What then happens, is that the newcomer becomes the new weakest link with his 100.002 collateral.

But say he would want to invest 2000 as collateral.
Now the same weakest link loses the seat, but the next 7 seats all slip down one seat, since they all must make room at the second highest seat, because that's where the 2000er is going to sit.

In this situation the servicenode that was sitting at the second lowest seat now suddenly finds itself in the weakest link position and runs the risk of losing its status next time someone appears.

And that's basically how this game will be played: a continuous switching of seats, particularly in the lower area.
If you hate this situation already, I suggest you invest lots of SPR as collateral.

Because there is a way how you can basically completely secure a seat for the foreseeable future.


This symbol indicates a servicenode that has such a high collateral, that it would require more than the current total coinsupply to kick this node 9 seats down!
Since this servicenode has a collateral of 3000 and it would require 9 newcomers to each invest MORE than these 3000, this would add up to an amount larger than all money that currently exists.

And therefor this seat can be considered truly secure.

... since the total coinsupply continues to grow everyday (but slower and slower) even a now truly secured servicenode can easily be dropped down a few seats, the more free money is around and gets locked in servicenodes.

It is important to understand that "holding a high seat" has no benefits whatsoever, other than keeping you away as far as possible from the weakest link (the only "point of departure").

So the best place to actually be in is somewhere in the middle, as indicated by this symbol:


This symbolises the seat that represents the arithmetic mean of the sum of all money locked in servicenodes divided by amount of servicenodes.

It can be argued that this seat (and seats close to it) are very secure, and a user that keeps adding to his collateral so that he keeps being near this mean will basically never lose his reward.


Alright, I could go on forever, but it's getting late.

Last thing I wanted to mention for today is the actual "servicenode manage screen":


It's where you will create new servicenodes and control the ones you already run.
(ofcourse everything will also be possible through commandline)
My goal will be to make the handling of servicenodes very easy and straight forward.
I do have a few fancy ideas about this that I want to further explore.

There is much more to mention and discuss but that's for another day.
(particularly how we tie an actual logo and name to a hosted coin is interesting)

The future looks very clear now for spreadcoin.
What I just presented is what the first testnet version will look like.

By implementing this first service we are going to build the perfect playground for the further development of the servicenode network (which will see the likes of "Proof of Bitcoin Node", a decentralized searchengine and exchange, and possibly Big Data Services in some form or another. There is lots to explore and only one rule: it needs to follow the principles of "true decentralization").

And last but not least:

I expect that I need another 50 hours or so to finish everything and put all the loose ends together before we can start testing it.

This could mean best case, that I will be ready in 1 week, or worst case by the end of january.

I will keep you updated about the progress in much more detail from now on!

Stay tuned!