You are viewing a single comment's thread from:

RE: "Download Blockchain" Button

in #steemdev6 years ago

While I fully agree with you with respect of this view for the long term as adoption increases and must ask for pardon if it is a dumb question due to my limited tech savvyness, is not this the job of the witnesses? They hold and run the nodes to ensure its distributed nature? While there are only the top 20 doing the majority, I often here some above and in the top 100 also producing blocks for their nodes. Being as vested and seeing the long term potential, I would love to run a node myself ultimately but agree that it should be in a more distributed and efficient method.

Posted using Partiko iOS

Sort:  

The job of the witnesses is to produce good blocks. Running a full node like Steemit does is expensive and many witnesses aren't doing it. If someone is developing an app and wants to ask the database a question they have to query a full node using the Steemit Application Protocol Interface. There aren't a lot of full nodes to choose from and there are a lot of flaws in the API.

For example, if you ask the API for a discussion (blog/comment post) it will send you back the correct Discussion object. What does a discussion object contain? Surely, it must contain the block number that it was created and modified on. NOPE! And to me, this is blatant incompetence, meaning if I want to put any real work in I might as well just download all the blocks myself and database/interpret them myself in a not so idiotic way.

https://steemit.com/incompetence/@edicted/more-steemit-inc-incompetence

https://steemit.com/utopian-io/@edicted/fixing-steem-with-baby-steps-part-10-database-api-necessities

My perspective is probably hard to interpret because no one is trying to do what I want to accomplish. I want to program real dapps; ones that do not rely on centralized nodes to make them work. Essentially I want every client to also be a server. I want everyone who uses my dapp to be their own node.

And so, if I ended up making a dapp that millions of people are trying to use, that means millions of these light nodes are going to need to be downloading blocks. At a certain point, the centralized way we are distributing blocks is going to fail spectacularly. Which means these light nodes will be forced to share blocks with each other instead of relying on the full nodes.

At this point we have a situation where light nodes could be feeding incorrect information to other light nodes. I'm just trying to jump in front of this problem and make the claim that everyone should just be sharing blocks with everyone and there should be an easy way to verify that we all got the correct information.