POB Part 5: Raw Block Data + Microcharges + Custom Database

in #hivedev4 years ago

bandwidthtech.jpg

I think I've finally made it to the end of the series.
This should be my last post on the matter.

Distributed Proxy Nodes

Proof-of-Burn Defined

Atomic Swaps

Graphene vs Condenser

To Recap:

There are several dapps I'd like to bring to the Hive/Steem ecosystem. All of these dapps require some kind of database. Whether that database is the full-node of another witness or my own server their must be a way to organize the block information in a useful way.

The idea I've put forth in this series is to create a network where everyone runs their own Hive database locally. This decentralizes bandwidth and takes a lot of stress away from our precious full-nodes and witnesses. By distributing the information to everyone's local device, we can stop asking full-nodes to organize the information for us. The only bandwidth consumed would be the bandwidth spent on downloading raw blocks.

Hive fork

When we first forked to Hive, I was very worried. Without Steemit Inc, how was I going to get all the block information I needed? I was very surprised when our witnesses running full-nodes really stepped up and started providing service on par with Steemit Inc. However, that didn't last long.

Now I can't download more than like 120 blocks (6 minutes) before the witnesses cut off my connection. This is unacceptable. There absolutely has to be a way to consistently download blocks without interruption. Anything less is an embarrassment.


earthwebnodes.jpg

Full nodes are expensive

The big problem here is that it is in no one's best interest to give all this bandwidth away for free. If you're a top 20 witness, why give money away for free if it gives no benefit? We keep expecting people on this network to be altruistic and that is a foolish thing to expect. Certainly some people are and that's great, but to expect it and base the network and our business model around it is a fool's errand.

Web 2.0

Because of the way we've been "brainwashed", everyone expects they should get everything for free. Social media should be free. Bandwidth should be free. Games should be free. Everyone wants free shit so Web 2.0 has based their business model around that fact:

  • selling your digital soul for a free account
    • all your information is monetized and you're force-fed ads.
  • ISPs give you "unlimited" bandwidth for a flat fee and then secretly throttle.
  • Videogame addicts are targeted and exploited by free-to-play marketing
  • Want free email? Every email you send comes with an annoying ad.

Web 3.0

People don't seem to realize this yet, but we should be charging for everything. Getting stuff for free is not a good thing even though we've been tricked into thinking it is. Rather than force users to sell their digital soul we can simply charge them a very very tiny amount using micro-charges for their consumption.

Micro-charges

I've written a ton about micro-charging, and the results are incredible. Simply by doing things like charging 10 cents for bags at the grocery store can change the sustainability habits of a huge percentage of people. Charging people "insignificant" amounts has hugely significant outcomes. Reducing cars on the road by 20% during peak hours completely eliminates traffic in that area. The statistics are truly mind-blowing.

pyramidhierarchyPOST1.jpg

I remember when Justin Sun bought Bittorrent for $140M. I was super excited and thought, "Wow! Maybe this guy actually does know what he is doing after all!" I even went so far as to say exactly where he was going with all this and was quoted on a mainstream crypto news site... let me find it...

https://peakd.com/tron/@edicted/guess-who-just-got-quoted-on-ethereum-world-news

I was so excited for this tech... getting paid to upload valuable information to other people using torrents? Wow, it was a mindblowing concept.

God damn it!

Look at the date of that post. It was FUCKING TWO YEARS AGO. Where is my tech! Where is my disruption! Where is my free money for uploading shit to other people? Unfortunately, 'someone' turned out to be just as an incompetent hype man as I had originally envisioned. You could imagine my horror of the news of Steemit Inc getting bought out. We handled that about 100 times better than I ever thought possible.

The war on Tron

Now people like me, @theycallmedan, and most witnesses/devs here are on a warpath. We must make 'them' pay for what "they've" done. But how?

Isn't it obvious?

Hit them where it hurts the most! Undercut everything they are doing. Provide zero-rake gambling dapps. Compete with superior smart contracts/tokens. Continue to improve and decentralize governance & distribution. Make a better file sharing protocol. Stop being greedy.

willpower.jpg

This isn't about punishing someone who did something bad. Negative reinforcement is inferior to the positive. We simply have to be a better network and the users will flock to us.

Make a better file sharing protocol.

That's what this post is all about. We don't need to buy Bittorrent to use torrents. All this stuff is open source. What's Hive all about?

"Get paid to _____"

Get paid to share information! The most valuable information on the Hive blockchain are the blocks themselves. This ties into everything I've been talking about for the past week.

Downloading blocks should not be free. The blocks have value and we need to incentivize users to upload them with microcharge-revenue-streams.

rich poor pyramid.png

How would it work?

I've thought of a grand "pyramid scheme" to do just that!

There are several levels here.

Level 1: BP

At the top of the pyramid is the block producer. Obviously the witness creating and signing the block is the first entity to know about that block's existence. No one else knows about that block until this producer broadcasts it to the network.

Level 2: Node network

After a block is signed and broadcast, all of the nodes in the network are aware of it. We don't really have to worry about monetizing this part of the equation, as it is already monetized by the network itself in the form of block rewards. The network will not operate if nodes do not share information, so there is really no need to charge/pay people at this level, especially since their are so few requests (nodes).

Level 3: Condenser API

These are the people like me who connect to Hive/Steem full-nodes with JavaScript (or whatever) and kindly ask the servers for information. Everyone expects this information to be handed over for free, but that leads to the situation described above; witnesses don't want to allow that because it costs them money out of their own pocket and they get nothing out of it.

Instead, I'd like to see some kind of premium account service. Imagine me paying a full-node like @anyx like 5-10 HBD with a memo like "premium node service". Now @anyx would know I am paying him for a premium account and his node would no longer cut me off or deny my requests. It would simply micro-charge me anytime I used his node.

How much bandwidth can I buy with 5 HBD? A vast number gigabytes at least I would imagine. Maybe even a terabyte (the entire blockchain is far less than a terabyte). Think about how much it costs you for ISP internet service. I can use a terabyte a month before Comcast starts throttling me or charging me extra. Bandwidth is very cheap.

Perhaps I'm jumping the gun here. Perhaps the network of users willing to upload data for free is enough to scale up indefinitely. Personally, I think it would be good to create a free market to fall back on just in case users stop being willing to upload for free. This is pretty much what Justin Sun is attempting to do with this Bittorrent acquisition.

Level 4: Torrent-like block sharing

So what happens when people like me get the block information from the full-nodes? Let's say it costs me $1 a month for premium uninterrupted service to a constant stream of raw block information from a full-node. What if I want to mitigate those losses?

I could use the same principal to upload that raw block data to other users at a cheaper price. If a full-node is charging $1 per month for data I could undercut that to $0.25 a month. Now If I find four other users who want to pay that cost I've already 100% made up for the monetary loss sustained.

From here, Level 5 would be users that bought from level 4 and sold to level 6, while users on level 6 would be selling to level 7 after buying from level 5, and so on.

Every level down the pyramid is cheaper to buy from because there is more lag involved. Obviously you aren't going to be getting blocks as fast if they have to jump to 7 other sources first. However, this is only the case for a block that has just been produced. Everyone in the network already has most of the older blocks ready to go.

And thus completes the pyramid of data sharing.

Again, it might seem like I'm going a bit overboard with this. Why set up a system like this when data is so cheap and everything is basically free anyway? My argument would be scaling.

Scaling

We aren't going to scale without these kinds of microcharge income streams coming in and going out within a totally free market that has healthy competition. There isn't a single full-node out there for Hive that offers uninterrupted service for whatever database query one desires. The best we had was Steemit Inc, and they are long gone.

We need to offer real economic incentives for everyone to get this information onto every device in the network. Any device that has all the blocks (or enough blocks for the given function) can in turn run all the database queries locally without the help of a node (again just reiterating what my definition of a proxy node is). All of the value lies in the blocks. If everyone has access to the blocks, problems that were previously very difficult to solve become trivially easy.

securesecurity.jpg

Security

How can we trust that the blocks we are downloading haven't been tampered with? If I happen to download raw block data from some random user how do we know they aren't feeding others false information to scam them in some way?

Truly, the answer lies in the magic of blockchain (Graphene specifically). Every operation in every block is signed by the private key that issued that operation. Every one of these operations can be verified locally using nothing but the signature, the operation, and the public key of the given account. It's really kind of amazing when we think about it.

Not only is every operation signed by the account performing that operation, every block is also signed by the witness who minted that block (meaning that witness already verified those operations for us). Anyone can verify a block is legitimate using the witness's public key.

Niche case:

In rare situations, a majority of consensus witnesses (17) can rollback the blockchain and delete a bad block produced by another witness. We obviously experienced this first hand with all the craziness that's gone down recently. Technically, someone could broadcast a bad block in the network of data sharing described above and there would be no way to tell it was a bad block just by looking at the signatures involved.

It takes 20 blocks (~1 min) before blocks become immutable. There would obviously be some ways to prevent anything bad happening in this scenario. For example, if a bad block was rolled back that information could get sent out along with everything else (or simply the new valid block with the same block number to override it).

Hashing huge clumps of blocks.

What if you have like a million blocks in your custom database on your local device and you want to make sure they are 100% legit? If you clumped all those blocks together and hashed them into a small unique key your proxy node could simply ask another node in the network if they also got the same hash for the same blocks. You could ask this same query for multiple nodes, and every time a new node had the same consensus you'd be that much more sure that the data was legit. Doing it this way makes it much easier to verify information. Rather than asking if 1M individual blocks are valid you can simply ask if a the hash is valid for the entire data clump.

Conclusion

Web 2.0 is a farce. Nothing is free. We need to move away from users being forced to sell their digital soul in order to monetize a network, and rather use tiny micro-charge income-streams to accomplish the same goal. With crypto (and especially zero fees on Hive) this becomes a trivial process whereas before it would have been unheard of, especially when we consider that consumers can flip the system on it's ear and become paid producers.

Data has value. Normally this value is very small and the datasets are quite gigantic. Up until now, we've relied on huge centralized Goliaths to monetize that data themselves so the little guys can get free service. That is not the future of Web 3.0; I guarantee it.

If we all share block data and utilize it locally on our own devices, we can create new consensus models that were never before thought possible (like permissionless proof-of-burn). The future is here, we just have to BUIDL it.

Sort:  

1 !BEER Token for you

Coin Marketplace

STEEM 0.30
TRX 0.11
JST 0.033
BTC 64243.42
ETH 3152.93
USDT 1.00
SBD 4.28