I submitted my first hardfork pull request to the Steem blockchain! (Updates to the SBD print rate.)

in #steem7 years ago (edited)

I have talked to a lot of stakeholders about their concerns for Steem. One of the things that has come up a lot is the fact that we are too dependent on Steemit, Inc. to develop hardforks and other significant changes to the Steem blockchain.

This creates a few problems:

  • If for any reason Steemit, Inc. were to up-and-disappear, there would a very large void to fill as far as continuing the development of the blockchain.
  • If the community really wants a change to be made, but Steemit, Inc. does not see it as a priority, then we don't really have any good options to make the change happen.

Steemit, Inc. is a very important stakeholder and participant in our ecosystem, but they are not the only stakeholder/participant. The community should not have to rely on them to do 100% of the blockchain development, nor should we expect that they are going to work on every change we want them to (unless they agree that it is a priority).

The best solution to this problem (IMO) is to get more talented community developers working on changes to the Steem blockchain code.

This is where I come in :) I have been spending a lot of time learning how the Steem blockchain code works, and have have been figuring out how to develop changes for the blockchain.

Today, I submitted my first pull request to implement a change as part of hardfork 20! (Details below.)

My views on community developers

I do want to make it clear, that I do not see myself (or other community developers) becoming a replacement for what the Steemit, Inc. developers are doing (at least anytime soon). I fully expect that that they continue to be one of the major contributors to the code for the foreseeable future.

Since they are still the ones who are doing most of the work on the blockchain code, my goal is to work with them as much as possible. My plan is to work on changes that add value in addition to whatever they are doing. Part of this includes trying to develop my changes in such a way that causes the least amount of disruption to the changes that are already in progress.

Over time, I hope to increase my skills, so I can work on more complicated changes. After I become more proficient, I also plan to write a 'blockchain development tips guide' for other developers who are interested in learning to do this as well.

Where I see this heading is that a situation where the Steemit developers and community developers are co-existing and both making positive contributions to the Steem blockchain code.

SBD Print Rate Change

As many people know, SBD has been trading above $1 USD for quite some time now. There are a lot of theories on this, but basically what it boils down to is that there is more demand for SBD than there is supply.

One of the things that is contributing to that, is that the way the SBD print rate works.

If an author chooses 50/50 rewards on their post, they get 50% of the post as SP, and the other 50% as "liquid payout". For the liquid payout, this typically comes in the form of SBD, but not always..

Currently the rules are:

  • When the STEEM/SBD debt ratio is between 0% and 2%: The blockchain pays the liquid portion as0% STEEM, 100% SBD.
  • When the STEEM/SBD debt ratio is between 2% and 5%: The liquid portion of the payout linearly changes from 0% STEEM, 100% SBD to 100% STEEM, 0% SBD.
  • When the STEEM/SBD debt ratio is greater than 5%: The blockchain pays the liquid portion as100% STEEM, 0% SBD.

Because of this, when the debt ratio is above 2%, we are currently printing less SBD even though there is still clearly enough demand for SBD to support the peg at/above $1 USD. This also puts unnecessary downward pressure on STEEM, because we are adding additional STEEM supply to the market, even though we could still be paying authors in SBD.

I submitted pull request 2503 to include a change in HF 20 that updates the rules to:

  • When the STEEM/SBD debt ratio is between 0% and 9%: The blockchain pays the liquid portion as0% STEEM, 100% SBD.
  • When the STEEM/SBD debt ratio is between 9% and 10%: The liquid portion of the payout linearly changes from 0% STEEM, 100% SBD to 100% STEEM, 0% SBD.
  • When the STEEM/SBD debt ratio is greater than 10%: The blockchain pays the liquid portion as100% STEEM, 0% SBD.

This will accomplish two things during times when the debt ratio is between 2% and 9%:

  • There will be less STEEM printed, which means less downward pressure on STEEM whenever SBD is still trading above $1 USD.
  • There will be more SBD put in the hands of Steemians.

When will these changes take effect?

It is important to make clear that even though I have done the development for these changes, they will not take effect unless they are accepted by a super-majority (17/21) of the witnesses.

Also, because my PR is attempting to merge these changes as part of HF 20 (which Steemit is developing) - it will still be up to Steemit, Inc. as far as whether or not to accept these changes as part of the hardfork and merge them into the "official" repository.

I plan to do my best to work with the appropriate parties to try and get the changes accepted and into production. Please be aware though - there is no guarantee they will.

What's next?

Next I plan to begin working on changes for issue 2022. This will update the beneficiaries payout logic to pay beneficiaries using the same payout option that the author selected, rather than always defaulting to 100% SP. There are more details in the GitHub issue for those who are interested.

As mentioned above, I am also collecting a list of "lessons learned" through this whole process, so I can put together a tips guide for other developers who are interested in working on similar changes.

I have a few ideas for changes that I will work on next, but I will wait to share more details on them until I get more input from stakeholders and am ready to take them up.

Sort:  

Hey @timcliff,

First of all you have my respects for the work you put into steem and the fact you are working to improve steemit from a community stand point is awesome. You are one of the names I read comments for under dev posts.

For SBD do we need it to be a dollar? Would it be better to give it a use and let it go as high as it can. If the value goes up then people on steemit are getting two coins that are worth a lot and will make double the money. Unless there is a reason we are better off with a dollar coin?

For SBD do we need it to be a dollar? Would it be better to give it a use and let it go as high as it can. If the value goes up then people on steemit are getting two coins that are worth a lot and will make double the money.

If we are going down this path, then why have SBD in the first place? Why not just simplify the system (since lots of people complain about the complexity) and just have STEEM?

I think we should just have Steem.

The peg use case seems to have failed.

And like the other poster says above, pegs don't really work. Governments use them for completely other reasons. Meanwhile the complexity drives away many prospective users.

I agree. The challenge would be to convince the community to drop the SBD. You might have to do a buy back of SBDs.

The complexity and the fact that trading crypto to crypto is a taxable event in the US and possibly elsewhere. So if someone has to get paid in SBD to maximize the return from a post, but has to trade it for STEEM to get more SP and influence on the platform because they're a good little steemit citizen, then boom, they'd have to hold it for over a year to minimize the tax damage. It is a ridiculous system that creates huge tax burdens for no reason other than a convoluted desire to achieve what currencies by design in open markets cannot do and it certainly scares away many possible investors who are rightfully worried about the tax burden because of how the two coins are generated and need to be traded all the time.

Exactly, I agree with this, we should get rid of SBD, it adds unnecessary complexity which most people do not understand. Post rewards should be in STEEM and STEEM Power only. The SBD peg to USD will never work as is designed. If people still want a coin on the STEEM blockchain that is pegged to USD an SMT can be created that works similar to BTS, but even that is not guaranteed depending on the economic situations that can occur with USD...

Pegs don't work, won't work, never work. I agree that trying to keep something's value locked in at a certain exchange rate is pointless and history tends to show that pegs are meant to be broken. The only reason why SBD was originally designed to be a dollar is because the makers of BTS/STEEM thought they could be the shiny new dollar-pegged coin on the market that would draw all the investors who wanted something that could hold its value. Obviously that hasn't panned out very well for BTS/bitCurrencies and SBD, and every coin designed with that in mind has had its peg broken, or had to take extremely shady measures to maintain the appearance of a stable peg.

No

SBD are not "pegged" to a dollar in a traditional sense. They are redeemable for one dollars worth of steem. You can't break that kind of peg, if steem goes down in value you just get more steem for each SBD and if it goes up you get less. Obviously holding SBD has more risk than just holding a dollar because there is a chance that no one will want the steem at any price. that is why the SBD pay a yield for holding them. SBDs are much more like a convertible bond then a dollar pegged crypto.

Yes, you can break the peg by making steem go to 0, which is a possibility. It went to near-zero and stayed around there for a good while actually. I'm holding SBD in case we get a huge break to the downside and get more than 1 steem per sbd again and feel like it would be disingenuous of me to invest in any other blockchain at this point with my steemit earnings.

No

no? does that mean you disagree? if so please explain.

That is not breaking the peg, that's breaking STEEM. the SBD would still give you $1 worth of steem which realistically i dont see ever going to zero. Sure it could go to near zero but someone some where will still give you something for it. even if it's 1 billionth of a cent then it just give you 1 trillion steem for it. But like i said the risk of it being worthless is why the SBD rewards you with a yield.

Now that ive read most of these comments i still fail to grasp the point of SBDs, except that it adds more liquidity into the ecosystem. Why exactly is it trying to be pegged to the dollar? Whats the underlining purpose of that? Stability? I dont think you can have that.

Couldnt you just have free flowing SBDs? Without pegging it, make it just a debt instrument?
I know posts payouts would change somewhat, not sure what effect that would have, but i just dont see a point in peging it.
SBDs dont have any use STEEM doesnt already fulfill for the average user.
What i want to say is that i dont get it. I really do not get the peg.

SBD shouldn't even exist, it adds nothing. You could just used liquid steem for any case where sbd is used.

Yes it does! It creates a currency. Steem is not a currency, if you want steem to matter in any significant way Sbd needs to work.

Vote bots accept liquid steem, STEEM is a currency. What is the functional difference between liquid steem and sbd?

in order for something to be currency it requires stability, else not useful for commerce. steem is an asset sbd is designed as a currency. sbd has design flaws which is why it does not work as currency either currently. Tim is trying to fix these.

I agree. But SBDs add liquidity to the ecosystem. Any debt based asset does.
If it wasnt for SMTs id be for SBDs remaining but with SMTs coming tbere really is no use for them. The peg only seemed as a gimmick to me.

A concern: isn't 10% the threshold at which the USD peg is abandoned?

It's been a very long time since I looked at the mechanics of this stuff, but I recall that when the debt ratio hits 10%, the peg switches from targeting 1 SBD = 1 USD to targeting MarketCap(SBD)=0.1*MarketCap(STEEM) or something similar.

If I have the details right, this means that your proposed change will continue printing SBD right up until the peg is designed to break. Your changes increase the aggressiveness of the pegging mechanism, and seem like they could add significant amounts of risk to the STEEM ecosystem in the event of a prolonged market downturn.

You are correct as far as the 10% limit. It is not necessarily catastrophic to pass that point though. It just means that SBD holders would get less than $1 USD for conversions if it passed that point. It is a linear reduction down, so at 11% debt limit, SBD converters would only get slightly less than $1 USD of STEEM for their conversions.

I did add some additional thoughts on the same subject in reply to @bacchist's comment above.

Personally I would continue printing SBD forever. I don't think there is a need to limit supply when the market is overvaluing it. Let's say someone will buy $1 bills from you for $2. So you sell them as many as you can get your hands on, or do you sell some limited number and then stop?

The purpose of the 10% limit is to cap the backing of all of the outstanding SBD at 10% of STEEM's market cap (considered a 'safe' amount) regardless of the amount of SBD in circulation. So if the market wants lots and lots of SBD with less and less backing, why not give it to them?

Yep!

LOL. Good questions!

However, imagine how whales of Nubits feel now that the per unit value is 0.44 Usd. Some of the owners of the Steem Dollar are not responsible for this problem. If I can just convince high schoolers here to start blogging, I bet I can buy Steem Dollars for one peso each.

NuBits promises a value of $1 and it hasn't delivered. SBD doesn't really promise that any more (since I think it was HF14), it promises a peg price that is conditional on the value of STEEM. If STEEM's market cap isn't enough to support the amount of SBD that exists, SBD holders are explicitly taking price risk. If they don't like that they should exit SBD. I find SBD's promises to be a lot more honest and reasonable than most of the other pegged coins which don't make explicit when they will no longer sustain a fixed price.

NuBits didn't have another coin to shit on. I agree with you that SBDs can be printed indefinitely. It just results in downwards pressure on STEEM. I have no issue with anyone at Upbit or elsewhere buying SBDs over a dollar if they're just using it as a fast trade. The peg is really only maintained to the downside as long as STEEM's ability to trade over $0 remains.

NuBits didn't have another coin to shit on.

That's not correct. NuBits has NuShares which is the staking token and much of the backing for NuBits, much like STEEM/SP (though there are also important differences).

[printing SBD] just results in downwards pressure on STEEM

If the alternative were printing nothing, then I would agree. But it is not, so I don't. The alternative is printing STEEM to pay rewards. Instead of some of the SBD being used to buy STEEM and power up (which channels the overvaluation of SBD into the STEEM price through added buying power), some of the printed STEEM is sold, resulting in downward pressure on the STEEM price.

Not printing SBD (and instead printing STEEM) when SBD is overvalued is pretty clearly a negative for STEEM. More selling of STEEM, less buying of STEEM, less/no 'bonus' buying power for STEEM due to the SBD overvaluation. There is no advantage to it, except to SBD speculators. Steem itself pays the price to enrich them. That's a foolish course of action for Steem stakeholders.

I see, I didn't look into nubits too much, just thought their dumb bot attempted to buy things, and I assumed it was with more nubits, which just seemed idiotic. That sounds about as dumb as I first assumed though.

I mean, people are going to prefer whatever benefits them, and I don't have a large stake in steem so...

if the market wants lots and lots of SBD with less and less backing, why not give it to them?

Simply put, because I don't trust the market's risk management skills. In the medium-to-long term, undercollateralization almost certainly leads to peg discounts when the price of STEEM falls.

Peg discounts are otherwise handled by the system and indeed if you look at the price history there have not been significant sustained discounts ever (apart from a short time 2016 when few people understood how it worked). Premiums are not otherwise handled by the system. The only way to resolve a premium (which do put a very high degree of risk onto SBD holders; someone buying/receiving SBD at $5 is at risk of easily losing 80% of their money, and indeed this has happened) is by issuing/selling more of it.

Furthermore there is no real 'risk' here, in the sense of risk to the overall system. SBD regardless of the amount issued is capped at 10% of STEEM's value period, which is so small it is actually less than many one-day price moves. Any additional issuance of SBD just means that SBD buyers are voluntarily accepting some of STEEM's price risk. I see no harm in that. It actually addresses one of the frequent criticisms of pegged assets, which is that they are making an unkeepable promise to always maintain a price. SBD doesn't do that. It promises to maintain a price as long as STEEM's price/marketcap is high enough.

Furthermore there is no real 'risk' here, in the sense of risk to the overall system. SBD regardless of the amount issued is capped at 10% of STEEM's value period

That's exactly right, and the missing piece I was forgetting about. It's not like SBD is at risk of a total collapse if too much is printed.

Perhaps get rid of sbd and give payout in steem and not in steem power. Users have the option to use it for whatever, exchange or increase steem power.

There is not consensus for that change.

I've been out of the loop for some time, so I haven't followed the development of the platform as much as I probably should. Has there been a change to stop the breaking of the "peg" at debt ratios above 10%?

I expressed my concerns about it when it was implemented quite some time ago... my thoughts on it can be found here:

https://steemit.com/witness-category/@bacchist/witness-petition-do-not-abandon-the-peg

If this is implemented, it will likely cause the debt ratio to increase with the additional SBD production. Have there been any relevant changes, or will it still be potentially catastrophic?

Has there been a change to stop the breaking of the "peg" at debt ratios above 10%?

No. The 10% limit is still in place.

If this is implemented, it will likely cause the debt ratio to increase with the additional SBD production. Have there been any relevant changes, or will it still be potentially catastrophic?

Yes, that is somewhat the intent. The market has signled (through sustaned high SBD prices) that the current 1-2% debt level is not enough supply. This change would allow the market to increase the supply pretty much all the way up to the 'haircut' limit.

With the new market conditions that have opened up around SBD, there is a lot less of a concern with the 10% level being catastrophic. If it starts to get "too close" to that 10% level for comfort, SBD traders will (logically) sell - which will put downward pressure on the SBD price. With enough downward pressure on the SBD price to push it back to $1 USD, this will incentivise conversions again.

Anytime SBD is trading at or below $1 USD, the market essentially has the option to "override" this change by converting an equal amount of SBD each day as gets printed, which would have the same result on the market as the blockchain printing 100% STEEM in place of SBD.

I see where you're coming from here, but I think it's a bit optimistic. By the time enough "extra" SBD has been printed to drive the price of SBD below $1, the debt load will already be in haircut territory. The change you've implemented increases SBD production when the debt load is already high relative to the 10% threshold. The debt load is very sensitive to STEEM price fluctuations... I think this change will add significant systemic risk.

Please note that it's really the haircut itself that I find objectionable. Your change is only problematic because the haircut exists.

I think the haircut is less systemically broken then the print limit. The haircut shifts existing price risk from STEEM onto SBD holders. If they don't like having more risk, they can sell, at which point the SBD price will drop, SBD will start getting converted and its total supply will drop. It at least tends to push SBD in the right direction. The print limit is the opposite: If SBD is overvalued, then it doesn't get converted, the supply steadily increases and then printing stops, which makes SBD more scarce and potentially drives the price even higher (WTF?!).

I understand you have expressed concerns about the haircut but personally I don't see it as a problem (other than potentially impairing the utility of stable SBD at some point, but we are so far from that now, not something to worry about at this point).

Has the idea of implementing reverse conversion of STEEM -> SBD been abandoned? Seems to me this proposal is just a band-aid fix that gives more tolerance/flexibility but makes any systemic break harsher.

I would not say abandoned but it is certainly more complex and farther away from being implemented and deployed (if ever).

I agree with you that reverse conversions (or something like it) would be more effective in maintaining the peg but this doesn't make this proposed change a bad idea. I believe the print reduction is probably the most broken part of he peg system in Steem. I would remove it altogether, but failing that, increasing the limit is certainly better than not doing so.

As far as I can tell reverse conversion would have similar results in terms of any systemic break, indeed possibly worse. I'm not sure what you are suggesting there.

Why are we not doing this, and hat can we do to move this forward?

@timcliff discussed some of the challenges with getting development done that isn't on the existing roadmap. That applies even more so to something like STEEM-to-SBD conversions since that code is more complex. There is also the matter of whether there is even sufficient support for it. It seems more people find the conversions approach to be risky or undesirable. There still could be enough support though.

I guess I am referring to the "haircut" scenario where the peg really ends up potentially a lot lower than $1 USD.

A couple of months back I wrote about The Coming STEEM DOLLAR Purge but I now realise I got it wrong. With a haircut dynamic in play the downside limit to SBD is effectively gone and we could totally downward spiral in a negative feedback loop.

By the time enough "extra" SBD has been printed to drive the price of SBD below $1, the debt load will already be in haircut territory.

If it takes that much SBD to bring the peg back to $1, I don't necessarily think it is wrong to print that much.

The SBD traders who are holding (and buying) SBD all the way up to that point are the ones who are taking the risk, and they are the ones that will get harmed if the peg drops below $1.

I think this change will add significant systemic risk.

I hear you, and I don't want to downplay the significance of the point you raise. There definitely is some risk with this. With the way the SBD economy has been working though, I don't personally consider it a systemic risk though.

If we pass the 10% haircut limit, let's say even to 20% - that is a risk for SBD holders. In this (hypothetical) scenario - SBD could drop down to $0.5 USD.

The question though is what would happen to it after that. While it is completely hypothetical/unknown, it is somewhat likely that traders would see it as a significant buying opportunity - possibly long before it reaches that point.

I think the important thing that we have learned is that the market is not really looking at the SBD->STEEM conversion rate at all (at least currently) with regards to the value that is placed in SBD. Speculation is playing a much more significant role.

If we pass the 10% haircut limit, let's say even to 20% - that is a risk for SBD holders. In this (hypothetical) scenario - SBD could drop down to $0.5 USD.

In that case (1 SBD = 0.5 USD), should SBD holders not be able to convert to one USD equivalent of STEEM?

No. If we pass 10% debt level, then SBD conversions would pay out less than a dollar worth of STEEM. At a 20% debt level, it would pay out 50 cents on the dollar.

SBD will never below $1 because you can burn it and receive $1 steem in return.

If it goes below $1 people can make a profit just by buying and burning it.

No.

I'm so very excited to see development coming from outside of Steemit, inc. Well done, Tim! I'm really looking forward to reading about the details of your experience through this process. Though the code changes seem straightforward, I imagine the amount of time and effort that went into figuring out which nobs to tweak (and why) took quite some time.

I was wondering what your thoughts are about someday having a community or foundation owned "official" repo for STEEM? Something I've seen block.one do for EOS that impressed me was require the block producer candidates to figure something out on their own as the official repo. A whole group was formed with a token, voting, and everything to create governance around who can control that repo. Eventually, I'd like to see STEEM move in that direction so we could move forward with some changes without Steemit, inc being concerned about the liability while still being free to take upstream changes from them as needed.

Thanks for putting in the work on this.

Eventually it might be the right step to take, but definitely not now. We need a lot more people (outside of Steemit, Inc.) who know the code, understand how to work with it, and are in a position where they can determine what changes are good/bad before we could do something like that. (Baby steps.) It would be a great place to eventually end up though.

I'd be in favor of something like what @lukestokes suggested even now. Bear in mind nothing about creating governance for the repo means that the bulk of the work and decisions wouldn't continue to be made by Steemit employees. Any sensible governance system would vest those authorities and responsibilities with people having the necessary skill, experience, and expertise, and for now that is Steemit employees.

Of course, setting up something like that is a big project, couldn't happen instantly, and would require one or more people to take it on as a significant effort.

We have a model we can follow with what the EOS community is doing. It is a big undertaking, but a worthwhile one as well. Ideally, it should be done by non-witnesses to be as neutral as possible. The EOS example is done by those who have committed to not being block producers. I don't they'll be auditors either. For it to work well, it should be as independent as possible. Like anything in this space, if it doesn't provide value, it will ultimately be forked/ignored.

Agreed. We'd definitely don't want code changes being made to the official repo (regardless of who controls it) unless they are experts with the best interests of the whole ecosystem in mind.

damn, i was not aware of all the behind the scenes stuff that is going on with Steemit. sounds complex AF

Tim, you're great!

At least you've started a discussion that must be started.

Wait, what is the STEEM/SBD debt ratio?

The current STEEM marketcap is $590,466,641 (based on a current price of $2.29).

There is currently 14,404,365 SBD in circulation.

14,404,365 / 590,466,641 = 2.44%

Thanks for explaining!

Great initiativw, @timcliff! STEEM needs an independent community of developers!

One specific question: what's happening with all generated SBD? If we are continuous adding new SBD to the 14.5 millions, faster than STEEM (broken pegging to the USD), already we see that the debt ratio can go in only one direction...

Unless users convert, it just piles up. Nobody is converting when the price of SBD is above $1 USD.

The debt ratio is not necessarily only going to go up though. It depends on the STEEM price too.

The questions and comments are great. The response to each suggests a well thought out proposal. But, unfortunately, I lack the knowledge to evaluate its specific merit. Nonetheless, I do agree with @timcliff on the need to have greater depth in developmental options. This is to not to diminish the Steemit.com role, past, present or future. But, the need to expand the developmental pool by encouraging more "talented community developers to work on changes to the Steem blockchain code", can only lead to increased options, wider discussion and less dependency.

Coin Marketplace

STEEM 0.20
TRX 0.25
JST 0.038
BTC 96656.73
ETH 3341.70
USDT 1.00
SBD 3.20