Getting it off my chest...

in #steem7 years ago (edited)

First of all, Steem is the first social media platform that I hope will bring something good to the world. Since I root for Steem's success (which it already achieved a fair dose of) I have to point out some dark spots I saw in its image when researching it deeper.

The Steem itself. The hardware requirements for Steem node are INSANE and they seem to grow pretty fast. I can easily keep full nodes for a handful of major cryptos on a 5yo PC and the only problem is storage space (hence I only keep those that can be pruned) but I would have to buy a solid separate server just for a minimal Steem node. This is far from acceptable. What a Steem node is supposed to do does not justify such requirements at all.
There are two possible explanations. Either authors of Steem can't code (highly unlikely) or they made some assumptions early in the life of the project that turned out to be really bad later on. The latter is a common problem of complex software and more often than not calls for a complete rewrite at some point. I really hope there is some serious work going on behind the scenes, because it looks like something that needed to be addressed like half a year ago.

Now the future - SMTs. I only know what was revealed in the whitepaper, so there might be some changes that address the problems I'm concerned about, however if not, these problems might cause SMTs to be a major disaster that will bring whole Steem down with it. There is actually just one big problem revolving around costs.

  1. First cost is related to what I mentioned in first paragraph. Requirements on witness hardware are approaching technological limits, until code is optimised there is no point in bringing more people and movement to Steem.
  2. The NAI space is limited to 9 decimal digits meaning at most 1B SMT. I suspect some NAIs will be reserved, but still it seems like more than enough. A single SMT is supposed to cost 1USD worth of Steem, so if some whale was to buy all possible NAIs in order to auction them later for much better price, he would have to first have nearly all Steem in circulation. With 1B limit on SMT count there is no immediate danger of this kind, however if the price was to remain at 1USD and Steem market cap would continue to rise this is something that might happen eventually. It will happen pretty soon if for some reason effective NAI space was significantly smaller than 1B.
  3. The cost is so low possibly to encourage people to play with SMTs. People playing are the biggest danger. If SMTs were just colored Steem there would be no problem. However all their features described in the whitepaper suggest they are separate entities. They also seem to be on the same blockchain as Steem, which means witnesses can't ignore them (if they could that would defeat the purpose of SMTs I suppose). So the witnesses will have to deal with extra data and operation costs associated with all the existing SMTs while being rewarded solely with Steem. You can argue that there is a positive price pressure on Steem associated with SMTs (actually the whitepaper does exactly that), however that argument might only be true for SMTs that are actively used. If people start creating SMTs just to play with the idea and then forget about them, such play-and-forget tokens will forever consume resources of witnesses and clobber blockchain with their inflation transactions without bringing any extra revenue or positive elements to Steem community.
    To address the above problem I'd propose the following changes. First there needs to be a mechanism to remove previously created SMT and free associated NAI. Eventually it should be possible to make forced buyout like in case of company that wants to stop having publicly traded stocks, however at minimum it should be possible to remove SMT while control account owns all available supply of particular token (of course pool of automatic market maker counts as owned by control account for that purpose). The second change is to provide clear incentive for people to use that mechanism. This is where the cost comes back into play. On top of the "burned" 1USD, creator of the SMT needs to have let's say 10k Steem frozen on control account. Frozen Steem cannot be powered up nor transfered, so while control account remains an owner of that Steem, the funds are basically useless. That limitation holds only as long as SMT is alive. Once SMT is killed the funds can be used normally again. The 10k effective extra cost should not be limiting for anyone being serious about their SMT, but for people that want to just play, it will be clear incentive to clean up after they are done playing. Of course the 10k number could be controlled by a parameter similar to steem_per_mvests so when Steem gains value the number could automatically lower, gradually freeing frozen funds, so the actual effective cost of SMT remains close to constant over time. The bonus of the extra effective cost is that it would forever prevent any whale from buying out the NAI space.

The wallets (list taken from steem center).

  1. Piston is outdated/discontinued.
  2. Vessel is nice, but only allows to control the funds, at least the 0.2.0 version I ended up with (at first I tried then latest 0.2.6, however it kept disconnecting, spewing server errors on the console and finally hanging when I tried to add my account to it, 0.2.0 worked right away so I kept it). Maybe the advanced option would allow me to send post, but how should the proper JSON look for this purpose?
  3. Steem wallet for android seem to be only for controlling funds as well so I haven't tried it.
  4. eSteem works, although is pretty slow on my old phone, besides as long as the phone is not rooted I'm not comfortable giving it any private keys which means I'm not going to be using it even when I upgrade the phone (rooting voids warranty).
  5. CLI-wallet seems to be nonexistent for Windows. I've found the article on how to use linux version on Windows 10, but that malware gets nowhere near my PC, not even on temporary VM.
  6. That leaves me with steemit.com which is basically an online wallet. Not a big fan of online wallets here, but it is basically the only viable option.

Let's take a closer look at steemit.

  1. A lot of important information is spread in articles by various people, apparently not directly connected to Steem development, where in fact that information should be available right where the relevant functionality is presented on steemit.com. Let's take account recovery as an example. Such functionality fires all possible alarms - clear backdoor to an account, and it is marketed as a safety option. Only later I've found an article that describes how it works. Such information should be right there on the recovery page!
  2. When I tried to set my account picture at first I gave the link leading to google drive. Instead of getting clear message that there was an error I got blank picture. Google apparently doesn't like hot linking and after a while was returning 404 on the link I provided - I'd prefer to get that information instead of blank profile picture with misleading error embedded in its source.
  3. The posting of pictures does not work in Firefox with normal (aka paranoia) settings (adblock/noscript and permanent private mode). Even after I set all domains the steemit.com is using as trusted I still get server connection error when trying to dnd the picture to post. I had to use Chrome to send the profile picture and background. By the way, I find the idea disturbing that the picture I put in unsent post ends up on some remote server anyway.
  4. While I appreciate steemit now supports my language, there really should be a way to switch it without the need to log. Typical small flag icons would suffice.
  5. The main problem I have with steemit.com is that there are multiple points of failure associated with its use. First I need to have my passwords written somewhere - I hope I'm not expected to remember all of those long streams of alphanumerics. Yeah, I can have them in some encrypted file, but now I have to copy-paste a password. It ends up in clipboard where it can be captured by a malware. Finally I have to trust steemit.com itself. I could check if the login page does all client side but that check would hold only until I need to log again. It should look completely different.
    The best would be to have a browser plugin with hardware wallet support. If no hardware wallet the plugin itself should offer to keep my passwords in encrypted form so I only need to log into it. What's the difference? I can be fairly sure the plugin didn't change between logins, not so much when the login page is loaded from server where it can change at any moment. The plugin could also offer transaction source to copy-paste and sign with offline app. Not very convenient to do that with every upvote but for operations that require active key convenience shouldn't be the priority. The plugin has additional advantage - could work with any site that supports Steem, much like what Steem Connect is supposed to offer but with no potential that something fishy is going to be added during integration.

Phew, that's all for now 😊

Sort:  

The problem that "play-and-forget tokens will forever (...) clobber blockchain with their inflation transactions" has already been detected and addressed in this issue https://github.com/steemit/steem/issues/2052

https://github.com/steemit/steem/issues/2028 tells me my problem with potential NAI space buyout was not unfounded. Turns out it is not 1B but more like 45M SMTs (1 digit out of 9 for checksum, 10% reserved, NAI assigned in pairs).
BTW. thank you @zgredek for the link to issues - now I have to read them all 😞 300 scanned so far, 1000 more to go...

You're welcome. Oh and next time be careful what you wish for ;)

Idally I would see improved bandwidth as an ultimate resource limiting mechanisms.
KISS + Occam's razor.

Well, put a proposal in issue's comments. And please don't KISS any razor ;)

Ok, good to hear.
If I understand this ping mechanism correctly it would mean that if noone is interested in the current end result of particular token inflation, then witnesses would ignore it and the blockchain would not contain any related transactions either. Something similar to post/curator reward claiming.
Interesting concept, however it still seems too easy to revive dead SMTs, f.e. a site that tracks market cap of various coins could just iterate over all available SMTs and ask for current supply. If the similarity with reward claims goes further it would mean the one asking would expect witness to give him proper answer "as of now" rather than "it was X last time I checked which was two months ago". That would mean that while blockchain might not contain constant inflation related transactions, the witnesses still need to keep permanent off-chain record on all SMTs just to satisfy the above mentioned question.

Thank you for your valuable feedback.

While I agree with your point, but 10k STEEM (That amount, by the way, can be a variable controlled by witnesses with respect to current market price of STEEM) seems to be too high economic barrier to entry just to play. And letting people easily play with SMT is what we want. We just don't want leftovers all over the place after such play&forget scenario (not to mention malicious reasons for resource exhaustion)

Piston was replaced by steem-python.

BTW, you might want to add #steem-dev and #smt tags for better visibility in relevant categories.

I'm working in hardware wallet support through Ledger and making decent progress. A lot of your suggestions here would be best served as issues on the related GitHub repos so the discussion can be live and even encourage open source contributions.

No one expects everyone to be a coder, but with concerns like these if you keep them to yourself how can you expect them to ever be done?

Are you aware of the recent changes relating to AppBase that should modularize the individual Steem components and reduce the resource demand on witnesses and nodes?

Vessel is actively being developed with ideas in mind that would completely solve many of the issues you bring up. Maybe you would want to join the SteemDevs discord server and pitch some of your ideas to @jesta directly?

https://discord.gg/cvnByhu

Otherwise great info in this post and many of your concerns are being actively worked on.

with concerns like these if you keep them to yourself how can you expect them to ever be done?

She's not exactly keeping her concerns to herself, but what you argue for is valid. Real effect is likely more achievable as issues on Github. Anyone reading this can also post to Github. A popular and highly rewarded post doesn't hurt for the argument though.

Bandwidth issues are the biggest issue I have. It's so annoying when some accounts have 1 TB of bandwidth and I have tiny KBs.

I will study it as much as possible, hopefully I can be successful as you all 2018 are ready to become more profitable!
I'm sure 2018 will be a lucky day for me ,,, with the help of all of you.

i get a good information from your article... thank you

Very informative, learned something new here.

Really good read and thank you for the info, newbie here and I'm lost but it's all good.... I'll get it one day as long as I do my homework

Wow @miosha. You have some really fresh ideas. I can see you know what you're talking about..

Congratulations @miosha, this post is the most rewarded post (based on pending payouts) in the last 12 hours written by a Newbie account holder (accounts that hold between 0.01 and 0.1 Mega Vests). The total number of posts by newbie account holders during this period was 5304 and the total pending payments to posts in this category was $5652.35. To see the full list of highest paid posts across all accounts categories, click here.

If you do not wish to receive these messages in future, please reply stop to this comment.

There are a lot of questions that I have about the developmental trajectory of the blockchain. I find it to be promising but the literature in regards to it needs to be updated to reflect present day reality.

For example, on page 11 of the Steem White Paper it states: "The primary concern of steem feed producers is to maintain a stable one-to-one conversion between SBD and the U.S. dollar." Clearly, with 1 SBD being about $5.5 USD at the time of this post, the originally envisioned stability for this token derived from the blockchain has simply not been maintained. Thus, this calls into question the "primary concern" of Witnesses as Steem feed producers - perhaps it is a characterization that is no longer applicable.

I raise this point because I see similar confusing statements in the SMT white paper. Therein it states, "Issuing a smt_create_operation requires payment of smt_creation_fee...If specified in SBD, an equivalent amount of STEEM will be accepted...Initially, smt_creation_fee will be set to 1 SBD and no means will be provided to update it."

To me the aforesaid language suggests that the creation fee for SMTs will be the nominal value of 1 SBD. So with 1 SBD being worth about $5.5 USD right now, wouldn't the SMT creation fee be about 1.22 Steem, considering Steem is about $4.5 USD? Yet your post states that "A single SMT is supposed to cost 1 USD worth of Steem." So which is it?

This leads me to my final point. Has there ever been any consideration for employing the delegated proof of stake functionality of the blockchain to allow every day users to delegate a certain portion of their Steem Power stakes towards maintaining the blockchain? Is it even possible? If so, would it address some of the technological constraints you have cited in your post?

My impression is that SBD is treated like Tether - wherever there is 1USD cost it actually means 1SBD. The market reality being so stubbornly uncooperative when it comes to keeping the assumed peg didn't escape Steem developers' attention, however all potential solutions come with their own problems. I don't feel competent to discuss them though.

I'm not sure what you mean in your final point. By voting for witnesses you already lend your Steem Power to the Steem network the only way possible. The bandwith limits, account costs etc. in Steem are there in order to control how much data is going to be put through the network. All cryptos face challenge of scaling and try to address it in different ways. Current hot idea seems to be blockchain sharding - a concept taken from databases (blockchains are subspecies of database after all), some coins name it differently, some try to apply more exotic solutions like IOTA or Nano (former RaiBlocks) - still sharding on steroids. It basically allows more nodes to support the network in parallel (compute more not directly chained blocks concurrently instead of competing/cooperating in production of consecutive blocks, one at a time). I'm not aware of Steem development going this way at the moment (I have not dug through all the issues yet though). Very quick blocks and all the operational cost controls leave it with (hopefully) enough breathing room, at least for now. There are also more pressing matters to attend to :o)

You seem to be very well versed in the technical aspects of blockchain tech. I must admit that this is not my area of specialty but that is precisely why your post caught my attention in the first place - you expressed your points of view in a manner that I could relate to, even if some points left me scratching my head! Much appreciated contribution - this is the quality content that Steemit should attract and strive to retain.

In regards to SBDs, I've written about the assumed peg extensively. I think there are many users that are unclear as to their branding. It's a predicament that needs to be addressed at some point, in my view, especially if adoption of the blockchain grows, as one would expect it to in the current environment.

As for my last point, I was curious as to whether you think that a future hard fork could potentially address some of the ensuing technical constraints that you anticipate as necessitating solutions for? Perhaps a hybrid of the current system of Witnesses as well as POS/sharding. I don't know if this is technically even possible with the blockchain in its current form, or whether it would require extensive rework. As you noted, probably not an immediate priority!

I do know that Witnesses collect "producer rewards" to varying degrees depending on their rank for maintaining the backend of the blockchain, so perhaps there could be some way for every day users to directly participate in that regard and alleviate their hardware burdens, aside from just voting for them. Just food for thought - again, not a technical expert, and just speaking from what I see other projects doing.

Nah, my understanding of blockchain technology is actually pretty shallow. I only started getting interested more after I got burned trying to daytrade when Cryptsy was still operational. Then I decided short term speculation is not for me, however investing for long term requires a lot more insight. Later I also run into Bitcoin problems (f.e. one of my earliest wallets contains drops from various faucets of 18k satoshi that would require 15k satoshi in minimal fee to transfer - actual fees were 100 times bigger than minimal then :o) ). So I started looking if someone else had similar problems and if/how they might be addressed.

This tech is absolutely fascinating, I wish I had more time to dig into it to the point where I would be on par with developers so I could talk with them meaningfully. I know tossing ideas is easy as I was on both sides - the one that tosses ideas without doing any actual work and the one that has to catch them, refine, test and then implement. So in my post I was only expressing concerns and expectations from user perspective, especially that Steem differs so much from other coins.

Congratulations @miosha!
Your post was mentioned in the Steemit Hit Parade for newcomers in the following category:

  • Pending payout - Ranked 1 with $ 261,62

I also upvoted your post to increase its reward
If you like my work to promote newcomers and give them more visibility on Steemit, feel free to vote for my witness! You can do it here or use SteemConnect

Beautiful articles