Text Is Cheap

in #bandwidth6 years ago (edited)


text is cheap.png

How big is a character when you store it on your computer? How big is a character when you store it on the Steem blockchain? Well, I'm not exactly sure, but most applications I've seen use UTF-8 protocol:

It depends what is the character and what encoding it is in: An ASCII character in 8-bit ASCII encoding is 8 bits (1 byte), though it can fit in 7 bits. An ISO-8895-1 character in ISO-8859-1 encoding is 8 bits (1 byte). A Unicode character in UTF-8 encoding is between 8 bits (1 byte) and 32 bits (4 bytes).
-- Jan 31, 2011

Therefore, a character might take up anywhere between 1 and 4 bytes. How much is a byte? A byte is eight bits. What is a bit? A bit is true or false, on or off, one or zero, black or white, purple or yellow. A bit is the smallest binary unit of a computer.


matrix bits bytes programming.png

Because everything on a computer is calculated with bits, all measurements are made in powers of 2. A byte is 8 bits. This is two to the eighth power (2^8).

  • One bit can store 2 values of information (1 or 0) 2^1 = 2 values
  • Two bits can store 4 values of information (00, 01, 10, 11) 2^2 = 4 values
  • Three bits can store 8 values of information
    • (000, 001, 010, 011, 100, 101, 110, 111) 2^3 = 8 values
  • And so on and so on. A byte can store 2^8 = 256 values.

As you can see, you only have to add a single bit to double the storage size. This is the foundation that makes computing so powerful. This core concept is one of the reasons why technology advances exponentially over time. One byte can store 256 values, but two bytes can store 2^16 = 65536 values.

If one is able to half the size of a one dimensional space they can fit twice as much on that line of the circuit board (2^1). However, if you can half the size of a two dimensional space you can fit four times as much (2^2) and if you half the size of a three dimensional space you can fit eight times as much (2^3).


confusion.jpg

Confusion

Corporate America doesn't care if you know this stuff. In fact, the less you know the better. The elite wants you to be fully dependent on them. A megabyte is 2^10 = 1024 kilobytes, but some "brilliant" salesman came up with idea to claim a megabyte was 1000 kilobytes because they can legally get away with that claim. After all, the technical definition of mega is a million and kilo is 1000 ( #bless the metric system ).

Why do this? Because now you can say a hard drive is 1 terabyte when it's really only 1,000,000,000,000 bytes. Then you go to plug in your hard drive and you're like WTF because this thing only has 1,000,000,000,000 bytes on it when it should have 1 terabyte, which is 1024 gigabytes, which is 1,048,576 megabytes, which is 1,073,741,824 kilobytes, which is 1,099,511,627,776 bytes. A difference of a full ten percent! Isn't compound interest fun? So these dirty salesmen started selling the same products but legally claimed they were better than they actually were.

BUT IT DOESN'T STOP THERE!

Nope. They've gotten even more flagrant with their math. Internet service providers like Comcast will tell you they offer download speeds in Mb/s. Dicks! The small 'b' is short for bits! No one measures bits! It's a worthless measurement. However, by saying:

We'll give you 8 megabits per second download speed!

It sounds like a hell of a lot more than 1 MB/s. Spoiler alert, these are the same values. A few years ago I had a Comcast tech installing internet at my house and he said 8 megabytes per second. I said, "Are you sure? I think you mean bits." He didn't even know. How sad is that? It was bits. I already knew the answer. It was the cheapest internet available in my area at the time.

I just ran this speed test 2 seconds ago. Look at that! Today I have beastmode Internet compared to a few years ago. Basically 50 MB/s download with 1.5 MB/s upload. I remember having a 28.8k baud modem. I remember 5KB/s download speeds and people flipping out that nothing was going to get faster than 56k baud. I would spend days trying to download a compressed movie or other big file. Look how far we've come. It's insane.


This same insanity is going to happen with crypto. That is a fact. If you can read this, then you are a temporarily embarrassed millionaire.

That might sound like crazy talk, but in the end, what is value? What's going to happen when humanity frees itself from these invisible chains? What's going to happen when robots are the new slaves? We will either continue down the path of centralized capitalism, where all the resources are getting funneled to the top 1%, or we will create cooperative decentralized communities. We will figure out a way to distribute those automation resources more fairly. This really is the only option. The other leads to oblivion.

Tie it back to the main point.

Ok, so what do these things have to do with each other? Well, advancing technology is reducing overhead costs. It's allowing the little guys (like me) to pop up and be like, "Hm, what do we have here?" I have access to this blockchain called Steem, but I have no idea how to use it yet. The technology is so new and learning things takes a while. Make no mistake, developers are going to catch up once they realize what they are missing out on. They are missing out on free access to an ultra-secure server tied to it's own ultra-secure currency with a built in community. Most people are not understanding how insane this is, yet.

Even more insane is that they are missing out on ownership. How many developers are slaving away at their jobs for a company they don't even like? That company leeches value from all their developers. They pay their "slaves" a flat fee, and in exchange, the company makes a gamble that the project they invested in will make far more than it cost them to develop. All successful companies are masters of taking their employees for everything they're worth and more.

In a decentralized environment developers will own a piece of the product that they have worked so hard to produce. They will be a part of taking that gamble on the future of investment. Crypto is going to create entirely new previously impossible business models, and it's going to be incredible.

Text Size Is Still Cheap

How many characters am I allowed to store on the Steem blockchain every month? With 2044 Steem Power, I get 2.6 gigabytes of bandwidth. Assume it takes 2 bytes to store a single character. 2.6 gigabytes / 2 bytes = 1.3 giga-characters; about 1.4 billion characters... a month. Wow, that's a lot of characters; more than I could ever spend if I was just blogging and chatting with Steemians.

But what if you weren't blogging or chatting?

The foundation of Steemit is blogging, but text is the foundation of every program ever written by a person. I could theoretically create a media player for Steem that took text and interpreted that text into sound or video. The text that we store on this blockchain can be used as the foundation for literally any application. Those applications are intimately linked to Steem, and we can all upvote (support) the projects or the work we want to support in the most secure way possible. This is revolutionary.


decentralized-Internet small.jpg

Decenralized apps

Okay, so I'm allowed to put a few billion characters on the blockchain, but that's not even the revolutionary thing about Steem. I can create a decentralized app that forces other users to use their own bandwidth to make it operate. That's right. A decentralized app will leech bandwidth from every user putting text on the blockchain and sending information back and forth.

It is for this reason that I believe that Steem is lying to us. There are no decentralized apps on this blockchain, and I believe when they arrive, they will bring Steem to it's knees and they will be forced to severely cut back on that bandwidth that is currently promised to us.

Will this be a bad thing? No, it will actually be amazing, because steem bandwidth is an extremely undervalued resource. In fact, we may even see a shift of users caring much more about their bandwidth than how many Steem coins they actually have. Everyone touts the speed and scalability of Steem, but I will bring Steem to it's knees and show the developers where optimizations need to be made. I'm kind of surprised this isn't happening already if I'm being honest.

Wasted Space

I could write a decentralized app on Steem that interpreted binary machine code. The posts would just be 1's and 0's. It would be totally unreadable, but the client interpreter (that anyone could download) would understand the machine code and do whatever it was supposed to.

However, ones and zeros are just bits, and if Steem stores characters in blocks of two bytes, you'd be using 16 bits to store those single bits. What a huge waste of space!

Hexadecimal

Programmers often use hexadecimal in place of binary code in order to make low level language calls more organized and easier to read and manipulate. The Arabic number system, the one that we all use, is base 10 (0123456789). Binary is base 2 (01), and hexadecimal is base 16 (aka base 2^4 or four bits)(0123456789ABCDEF). Two hexadecimal character are equal to a full byte. In fact, we've all been subjected to hexadecimal as crypto enthusiasts.

0xa614afec999f93928f656ccc0ed3cea0b8410c59
This is my Ethereum address, send your money now :D
I'm not quite sure what the 0x is for but the rest is hexadecimal.

Instead of posting binary to Steem, I could post hex. Remember, two hex values equal one byte, but one character on Steem is one byte (explained below). Therefore, instead of wasting a factor of 8 space posting bits, I would waste only a factor of 2 (half) space posting hex. It sounds like a lot, but it really wouldn't be that big a deal at all.

In fact, when you declare a boolean in Java:

boolean mathIsHard = true;

It technically only needs one bit to store this value, but it puts that value into an entire byte, effectively wasting 7 bits of data. Why? Because all the programming logic in Java is done in bytes at the smallest level for simplicity. My point here is that when technology is exponentially increasing it is often much smarter to sacrifice efficiency for organization. Being frugal only matters when your resources are limited, and technology is increasing so fast that, given certain applications, resources are relatively unlimited. Case in point, I can put 2.6 Gigs on the Steem blockchain. How would I ever go about doing this using only text and a 20 second refresh rate between posts? LOL.


16KB limit steem steemit reply post.jpg

You see? The limit on a single post is 16KB. At 20 seconds per post, it would take me 39 days of constant posting to put 2.6 gigs of info on the blockchain. I assume the bandwidth limit is per month, so it's literally impossible for me to spend all my bandwidth unless I use a bot army to do so.

Because I was already half way there, I just now figured out that each character on the Steem blockchain is only a single byte. I copy pasted 0123456789 ten times for 100 characters total, then i copy pasted that 10 times for 1000 characters total, then I copy pasted that 16 times for 16000 characters total. The next paste broke the limit. Each character on Steem is only one byte.

So my bandwidth would allow me to put 2.8 billion characters on the blockchain a month... pretty crazy amirite? If I were able to organize that free bandwidth information into a useful app I could create a product that was simple and part of an online network, but still fully protected by the robust security of the Steem blockchain. This is exactly what I aim to accomplish here.

However, I'm not going to be posting unreadable hex to the blockchain, I'm going to be posting straight up readable commands. I've already accomplished this back in the day when my Cards Against Humanity clone was working. @smartasscards.

Here are some example blockchain commands:

@smartasscards
#newgame 123412
#players edicted alxgraham ericwilson wizard
#mode vote
#deck local

#blackcards

I rather like using the hashtag as a command because it gets it's own link on the Steem blockchain and turns colors, giving you the impression that it is actually doing something (because it is). However, JSON and XML might be smarter organization methods as programs start to scale up. We'll see.

Seriously though, buy more Steem. Steem is a blank slate without a single decentralized app on it. Once development progresses coins and bandwidth will be worth so much more. This place is an untapped goldmine.

Sort:  

Wow, didn't realize there was a bandwidth limit on Steemit... I leared something.

For the most part it surprises me that a lot of people don't understand a lot of the context you are talking about here.

I was always mad at internet companies that were obviously lying about their speeds to make them sound better. It took me a while to figure out how they were able to get away with it.

Then I realized that the internet companies lobby for lax laws so they are able to practically get away with murder of your wallet to fatten theirs.... sickens me it does.

Steem is forced to have a bandwidth limit. Otherwise hackers would DDOS attack it, put garbage on the blockchain, and bring Steem to a grinding halt.

I guess I never thought about that. Good information though. Hmm, I bet if enough people got together they could do damage but... with the way Steemit users have power I bet they could turn the tides rather quickly.

When Steem get's overwhelmed the witnesses just lower everyone's bandwidth temporarily. It used to happen A LOT 7 month ago. If you didn't have stake you couldn't post before noon on the west coast.

Oh wow, I had no idea that was a thing. I need to learn more about Steemit but oh well. At one point my account was worth over $22,000. After it fell to around $8,000 I started selling and used the money to move from California to Florida. Still powering down but who knows what I will do with it. I want to leave as much here as I can but for now I am using it to survive on.

Crap, I had to log back in just so I could upvote this. This has to be one of the best breakdowns I have ever read for someone of my limited knowledge. I remember getting mad at the cable company because they would try to pitch me a faster plan, and I would always say no because they were never giving me the speeds I thought they were promising already.

Thanks for writing this up.

Thanks! a lot of the time when I talk people are like:

WTF are you talking about?

So it's nice that some of the message is getting through 😝

I've thought a lot about using STEEM as an indelible PGP interface to send secure messages. Using all the ASCII characters will let you encode a lot of information in 16 kB.

Why not leverage the text-based blockchain to its fullest potential?

Very interesting.

I do not know much about this but is not that a big part of the Velocity HF? The whole Resource Credits needed for interacting with the blockchain would be the limiting that you mention, no?
https://steemit.com/steem/@steemitblog/steem-velocity-hardfork-hardfork-20

We already have a bandwidth limit, RCs just change the rules a little bit to make it more accurate.

Very interesting post! Although bandwidth as we know it now will change completely passed HF20 with the introduction of resource credits. The fact that costs of all blockchain-related operations will fluctuate based on how limited various resources become, will make it an expensive endeavor to operate a resource-intensive (for the blockchain) Dapp. You'd need lots of Steem Power to back it up. At least that's how I understand things.

As for special characters in posts (which would be the result of an app saving a non-text file), I have no idea, but isn't it at the blockchain level a filter of some sort regarding the permitted characters? I don't mean in the condensers, which certainly have these filters.

The thing about actual decentralized apps is that the resource cost is split between every user using the app. Everyone is their own server and everyone is their own client.

I won't need any bandwidth allocation on my account to make dapps that other people use.

It seems even less improbable to work (although maybe desirable). That would mean any steemian who wants to use such true Dapps to hold enough steem power to have the necessary resource credits for his/her own use, while about 97% of steemians don't hold even 50 SP. Of course, there may be created a market for RCs or simply the already existing market for delegated SP, only bigger.

You get more than a Megabyte per Steem Power. That's over 15 million characters per month for free accounts. I think they'll be fine.

There won't be any more SP delegation from Steemit for new accounts after HF20, because it won't be necessary for the bandwidth.

Nonetheless, I hope to see such apps developed. They will only help Steem grow.

Excellent! The delegations have been holding Steemit back for far too long.

I gotta read it more carefully to study about the steemit and the internet thing.
Thanks for your information and start following you now :)

You have a minor grammatical mistake in the following sentence:

They are missing out on free access to an ultra-secure server tied to it's own ultra-secure currency with a built in community.
It should be its own instead of it's own.

lol diaf nazi

My point here is that when technology is exponentially increasing it is often much smarter to sacrifice efficiency for organization.

In the case of blockchain tech we sacrifice efficiency for decentralized trustless environments.

I agree completely. Like what's the point of listing rates in bits rather than bytes if all it does is confuses people.

Coin Marketplace

STEEM 0.26
TRX 0.11
JST 0.033
BTC 63966.64
ETH 3055.32
USDT 1.00
SBD 3.87