You are viewing a single comment's thread from:

RE: "Download Blockchain" Button

in #steemdev6 years ago

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.