Author Topic: Steem dollar is more liquid than BitUSD. We should copy it's key feature.  (Read 23698 times)

0 Members and 1 Guest are viewing this topic.

Offline tbone

  • Hero Member
  • *****
  • Posts: 632
    • View Profile
  • BitShares: tbone2
No offense, but what you're describing doesn't just sound complicated, but actually is unnecessarily complicated. 

I couldn't be offended even if you said it is stupid. It is your observation and I respect that.


And it also doesn't achieve the goal of having witness payouts get automatically and seamlessly converted from BTS to bitUSD before disbursing to witnesses.


When you have a pool that self maintains preset balance it is ease to set up automatic payments from it. The main problem is how to "converted from BTS to bitUSD seamlessly" taking in consideration market forces.


It's not a problem to take market forces into consideration.  That's what the feed price is for.  It gives you the conversion rate at any given time. 

I really doubt there is any reason why conversion of BTS to bitUSD prior to paying witnesses/workers can't be automated.  But I hope @xeroc and @kenCode will chime in to help corroborate the overall feasibility of what we're talking about trying to accomplish here.


Offline Geneko

  • Full Member
  • ***
  • Posts: 187
    • View Profile
No offense, but what you're describing doesn't just sound complicated, but actually is unnecessarily complicated. 

I couldn't be offended even if you said it is stupid. It is your observation and I respect that.


And it also doesn't achieve the goal of having witness payouts get automatically and seamlessly converted from BTS to bitUSD before disbursing to witnesses.


When you have a pool that self maintains preset balance it is ease to set up automatic payments from it. The main problem is how to "converted from BTS to bitUSD seamlessly" taking in consideration market forces.



Offline tbone

  • Hero Member
  • *****
  • Posts: 632
    • View Profile
  • BitShares: tbone2
I thought about this many times. Let me share this recent one.

Block rewards and workers are payed from reserve fund. Obvious solution would be that reserve fund gets ability to pay in MPA assets.
I am not familiar how hard proposed change would be, but for the purpose of this brainstorm lets pretend it is feasible.

It is already discussed many time so I wont repeat, but reserve fund should not be maintainer of collateral positions because it is not able to cope with market forces. But it could borrow MPAs from shareholders and traders which can. It could borrow on market established interest rate (like 5% meme) let the market decide, up to some figure, for instance two year worth of expenses(adjustable by comity).
Interests would be payed from reserve fund in BTS at feed price on hourly bases like vesting balances. The long position could be settled at any time from the reserve fund in BTS at current feed price. Everyone who want to settle MPAs could get current feed price worth of BTS from reserve fund, within 24 hour to prior notice as already defined (settle option). These acquired MPAs could burn the dept, so dept account could also have negative balance. The fact that this market opportunity has limited supply should provide additional incentive for borrowers. The liquidity would be increased slowly at a peace of about 2000 bitUSD/day.

Two years worth of expenses in bitUSD, at current price, is about 1.32 mil. It is impossible to make any predictions, but such a change could easily double the BTS price in short time.  There is inbuilt fluctuating factor in every price, including witness pay and workers price. With bitUSD price denomination for witness and workers pay, I am confident it could at least cancel additional interest expenses.
Also improve liquidity, get market adjust BTS supply, get more incentive for witness and workers, provide more transparent pricing and steady stream of fresh MPAs liquidity.

My feeling is this idea isn't simple enough to understand. A more simple and elegant implementation would be preferred.

I know it sounds little complicated but for the sake of an argument let me support it with example, how it would look like in UI, I suppose everyone is familiar with it.

Like we have "borrow" button, we could also have "lend" button. When it is pressed, new window pop up with option to fill amount and interest rate.
It could be the same as borrow option, a slider and manual fill , with same mechanics and comments like "you don't have sufficient funds", etc..
Block chain will fill order, the one with lowest interest rate (upper interest rate limit set buy commity), until upper fund limit is reached (also set by commity). After upper fund limit is reached, blockchain will fill lowest interest rate orders and borrow back upper ones.   

So for example, lets assume, upper interest rate limit is set to 20% and upper fund limit is set to 1mil bitUSD.
If I want to lend 100 bitUSD with interest rate of 5%, my order would be filled, if upper fund limit isn't reached.
After upper fund limit is reached, if there's any 40 bitUSD offered with 4.8% interest rate and my long has highest interest rate, my long would be borrowed back to me for 40 bitUSD in bitUSD, and 60 bitUSD maintained.
All the time my long position exists I would be payed bitUSD interest, from reserve fund denominated in BTS(at feed price) which will show in vesting balances. At any time I could decide to lower my interest rate, and if I decide to exit my long (partially or fully), I would be payed bitUSD worth of BTS at feed price.

Edit:
The critical part not mentioned could be as follows. When order is filled you are practically "locked" until someones outbids you or you decide to settle long position. Possible margin call would automatically trigger long settle option.

No offense, but what you're describing doesn't just sound complicated, but actually is unnecessarily complicated.  And it also doesn't achieve the goal of having witness payouts get automatically and seamlessly converted from BTS to bitUSD before disbursing to witnesses.

Offline Geneko

  • Full Member
  • ***
  • Posts: 187
    • View Profile
I thought about this many times. Let me share this recent one.

Block rewards and workers are payed from reserve fund. Obvious solution would be that reserve fund gets ability to pay in MPA assets.
I am not familiar how hard proposed change would be, but for the purpose of this brainstorm lets pretend it is feasible.

It is already discussed many time so I wont repeat, but reserve fund should not be maintainer of collateral positions because it is not able to cope with market forces. But it could borrow MPAs from shareholders and traders which can. It could borrow on market established interest rate (like 5% meme) let the market decide, up to some figure, for instance two year worth of expenses(adjustable by comity).
Interests would be payed from reserve fund in BTS at feed price on hourly bases like vesting balances. The long position could be settled at any time from the reserve fund in BTS at current feed price. Everyone who want to settle MPAs could get current feed price worth of BTS from reserve fund, within 24 hour to prior notice as already defined (settle option). These acquired MPAs could burn the dept, so dept account could also have negative balance. The fact that this market opportunity has limited supply should provide additional incentive for borrowers. The liquidity would be increased slowly at a peace of about 2000 bitUSD/day.

Two years worth of expenses in bitUSD, at current price, is about 1.32 mil. It is impossible to make any predictions, but such a change could easily double the BTS price in short time.  There is inbuilt fluctuating factor in every price, including witness pay and workers price. With bitUSD price denomination for witness and workers pay, I am confident it could at least cancel additional interest expenses.
Also improve liquidity, get market adjust BTS supply, get more incentive for witness and workers, provide more transparent pricing and steady stream of fresh MPAs liquidity.

My feeling is this idea isn't simple enough to understand. A more simple and elegant implementation would be preferred.

I know it sounds little complicated but for the sake of an argument let me support it with example, how it would look like in UI, I suppose everyone is familiar with it.

Like we have "borrow" button, we could also have "lend" button. When it is pressed, new window pop up with option to fill amount and interest rate.
It could be the same as borrow option, a slider and manual fill , with same mechanics and comments like "you don't have sufficient funds", etc..
Block chain will fill order, the one with lowest interest rate (upper interest rate limit set buy commity), until upper fund limit is reached (also set by commity). After upper fund limit is reached, blockchain will fill lowest interest rate orders and borrow back upper ones.   

So for example, lets assume, upper interest rate limit is set to 20% and upper fund limit is set to 1mil bitUSD.
If I want to lend 100 bitUSD with interest rate of 5%, my order would be filled, if upper fund limit isn't reached.
After upper fund limit is reached, if there's any 40 bitUSD offered with 4.8% interest rate and my long has highest interest rate, my long would be borrowed back to me for 40 bitUSD in bitUSD, and 60 bitUSD maintained.
All the time my long position exists I would be payed bitUSD interest, from reserve fund denominated in BTS(at feed price) which will show in vesting balances. At any time I could decide to lower my interest rate, and if I decide to exit my long (partially or fully), I would be payed bitUSD worth of BTS at feed price.

Edit:
The critical part not mentioned could be as follows. When order is filled you are practically "locked" until someones outbids you or you decide to settle long position. Possible margin call would automatically trigger long settle option.
« Last Edit: April 06, 2017, 10:46:27 am by Geneko »

Offline Thom

Good thoughts @tbone concerning the failsafe aspects.

Until we get a quality coder experienced with graphene to look at the code to assess how difficult implementing this will be the best we can do is brainstorm the possibilities and think through the impacts. tbone has pointed out the benefits, which is why I would like to see this taken to the next level, which in my mind is the code evaluation. That is also necessary to write a good proposal.

If no such devs are interested the idea stops (for now at least) at the concept phase.

I see a significant dis-incentive for a dev to put in the work required to create a proposal for this, b/c the scope of the work impacts both backend and UI, which will probably require at least 2 people to assess the changes. Doubt anyone believes this will be easy or fast to implement. It would be great if a dev was interested / curious / motivated enough in the idea to begin the assessment. We'll just have to see if anyone steps up to the plate I guess.

I dunno, maybe I'm wrong, but after the code is assessed then a proposal must be created which requires time for planning, cost estimation etc. After all that's done the shareholders could decide the cost is too high to implement or there just might not be enough interest in the idea. It would be up to people like tbone to campaign support for the proposal so it would pass, and perhaps even raise funds by other means to reduce the impact on shareholders and make it more attractive for them to pass.

One thing you might consider doing @JonnyBitcoin or @tbone is to begin writing the proposal in terms of describing it in as much detail as you can, explain the rational for it and in general just commit as much about the idea to paper as you can. The OP is pretty clear, and others have expressed some good ideas here which could be included. After someone looks at the code & UI they can flush out technical considerations and perhaps work with you to describe the time it would take to implement and create some type of roadmap for how it would be done. Here is a link to the github repo for BSIPs (BitShares Improvement Proposals) you can use as a template or to get an idea of how you could begin.
« Last Edit: April 06, 2017, 01:43:51 am by Thom »
Injustice anywhere is a threat to justice everywhere - MLK |  Verbaltech2 Witness Reports: https://bitsharestalk.org/index.php/topic,23902.0.html

Offline tbone

  • Hero Member
  • *****
  • Posts: 632
    • View Profile
  • BitShares: tbone2
I agree with @JonnyBitcoin.  This should be as simple as possible.  Some things are complicated and that is just unavoidable.  But in this case, why introduce unnecessary complication by inserting a middleman that needs to be paid interest, etc etc?  Why can't the reserve pool just short bitUSD with pre-set levels of collateral?  In that scenario, just as in yours, long positions can be settled out of the reserve pool at the feed price. 

As far as coping with market forces, remember, we're not talking about having the reserve pool short as much bitUSD as demand calls for.  So, we won't have to worry about carefully regulating the supply of bitUSD (as steem must do with SBD) depending on total current circulation, current market conditions, etc.  We're talking about shorting only a limited amount of bitUSD, just enough to pay witnesses and workers.  The idea here is just to create a base supply of bitUSD that will help stimulate activity in bitUSD markets and boost confidence in individual participants to also short bitUSD into existence.

This is a strategic initiative.  It can start with bitUSD and later (or even immediately) expand to bitCNY and ultimately other bitAssets for which we want to produce a base supply to help spin up active markets in those bitAssets.  When liquidity in one bitAsset is sufficient, we can move on to the next and continue doing that as long as there is a bitAsset market that we want to jumpstart.

If we want to improve liquidity much sooner than later (and turn the screws on the coming competition), we should take @JonnyBitcoin's proposal very seriously and consider taking action ASAP.

Offline JonnyB

  • Hero Member
  • *****
  • Posts: 636
    • View Profile
    • twitter.com/jonnybitcoin
I thought about this many times. Let me share this recent one.

Block rewards and workers are payed from reserve fund. Obvious solution would be that reserve fund gets ability to pay in MPA assets.
I am not familiar how hard proposed change would be, but for the purpose of this brainstorm lets pretend it is feasible.

It is already discussed many time so I wont repeat, but reserve fund should not be maintainer of collateral positions because it is not able to cope with market forces. But it could borrow MPAs from shareholders and traders which can. It could borrow on market established interest rate (like 5% meme) let the market decide, up to some figure, for instance two year worth of expenses(adjustable by comity).
Interests would be payed from reserve fund in BTS at feed price on hourly bases like vesting balances. The long position could be settled at any time from the reserve fund in BTS at current feed price. Everyone who want to settle MPAs could get current feed price worth of BTS from reserve fund, within 24 hour to prior notice as already defined (settle option). These acquired MPAs could burn the dept, so dept account could also have negative balance. The fact that this market opportunity has limited supply should provide additional incentive for borrowers. The liquidity would be increased slowly at a peace of about 2000 bitUSD/day.

Two years worth of expenses in bitUSD, at current price, is about 1.32 mil. It is impossible to make any predictions, but such a change could easily double the BTS price in short time.  There is inbuilt fluctuating factor in every price, including witness pay and workers price. With bitUSD price denomination for witness and workers pay, I am confident it could at least cancel additional interest expenses.
Also improve liquidity, get market adjust BTS supply, get more incentive for witness and workers, provide more transparent pricing and steady stream of fresh MPAs liquidity.

My feeling is this idea isn't simple enough to understand. A more simple and elegant implementation would be preferred.
I run the @bitshares twitter handle
twitter.com/bitshares

Offline Geneko

  • Full Member
  • ***
  • Posts: 187
    • View Profile
I thought about this many times. Let me share this recent one.

Block rewards and workers are payed from reserve fund. Obvious solution would be that reserve fund gets ability to pay in MPA assets.
I am not familiar how hard proposed change would be, but for the purpose of this brainstorm lets pretend it is feasible.

It is already discussed many time so I wont repeat, but reserve fund should not be maintainer of collateral positions because it is not able to cope with market forces. But it could borrow MPAs from shareholders and traders which can. It could borrow on market established interest rate (like 5% meme) let the market decide, up to some figure, for instance two year worth of expenses(adjustable by comity).
Interests would be payed from reserve fund in BTS at feed price on hourly bases like vesting balances. The long position could be settled at any time from the reserve fund in BTS at current feed price. Everyone who want to settle MPAs could get current feed price worth of BTS from reserve fund, within 24 hour to prior notice as already defined (settle option). These acquired MPAs could burn the dept, so dept account could also have negative balance. The fact that this market opportunity has limited supply should provide additional incentive for borrowers. The liquidity would be increased slowly at a peace of about 2000 bitUSD/day.

Two years worth of expenses in bitUSD, at current price, is about 1.32 mil. It is impossible to make any predictions, but such a change could easily double the BTS price in short time.  There is inbuilt fluctuating factor in every price, including witness pay and workers price. With bitUSD price denomination for witness and workers pay, I am confident it could at least cancel additional interest expenses.
Also improve liquidity, get market adjust BTS supply, get more incentive for witness and workers, provide more transparent pricing and steady stream of fresh MPAs liquidity.   

Offline Thom

* The entity/business could run with the BTS or simply not burn it

If there's any type of trusted group/foundation/company involved then this idea is no good.
It would be a step backwards to involve any third party.

Currently the blockchain currently pays the witnesses and workers in BTS, the idea is that the blockchain pay them in BitUSD instead.

 +5%
Injustice anywhere is a threat to justice everywhere - MLK |  Verbaltech2 Witness Reports: https://bitsharestalk.org/index.php/topic,23902.0.html

Offline tbone

  • Hero Member
  • *****
  • Posts: 632
    • View Profile
  • BitShares: tbone2
@Thom: you make some good points regarding payment intervals, tracking of who produced how many blocks, etc. Such details would have to be worked out, but I doubt those things present a major technical challenge.

As for having a fallback, I agree.  My suggestion was to make the % of pay in bitAssets a parameter that the committee can set anywhere from 0-100, so they can turn it all the way on, all the way off, or anything in between.

Regardless of what % is paid in bitAssets vs. BTS, I think it makes sense for witness pay to be specified in terms of bitUSD for the reasons cited by OP and others (i.e. greater simplicity, predictability, ease of evaluation, etc.).  And I think workers should have to submit their proposals with the cost denominated in bitUSD for the same reasons.

I agree, it would be great to get input from @xeroc and @kenCode regarding the cost and ease of implementing OPs idea.



@iHashFury:  Who said witnesses are dumping BTS to cover costs?   That's not even relevant to this proposal.  The question is, what will they do with bitUSD if they get paid in that bitAsset.  Will they horde the bitUSD, or will they be more likely to exchange them for BTS?  I suspect much more the latter than the former...which is what this proposal expects and wants to happen.


Offline JonnyB

  • Hero Member
  • *****
  • Posts: 636
    • View Profile
    • twitter.com/jonnybitcoin
* The entity/business could run with the BTS or simply not burn it

If there's any type of trusted group/foundation/company involved then this idea is no good.
It would be a step backwards to involve any third party.

Currently the blockchain currently pays the witnesses and workers in BTS, the idea is that the blockchain pay them in BitUSD instead.



 


I run the @bitshares twitter handle
twitter.com/bitshares

Offline xeroc

  • Board Moderator
  • Hero Member
  • *****
  • Posts: 12922
  • ChainSquad GmbH
    • View Profile
    • ChainSquad GmbH
  • BitShares: xeroc
  • GitHub: xeroc
Another issue is how to deal with the accruing / accumulating nature of  worker / witness payments.

I mean witness pay is paid in BTS per block. I don't see how you could pay witnesses incrementally without increasing the interval of payouts. Payments With 21 witnesses, 3 second block times and price per BTS at $0.005 that comes out to roughly $20USD per day or ~4k BTS. Each witness account would have to be tracked as to how many blocks it generated during the payment period, be it daily / weekly / monthly.

I like the idea in general, but believe the devil is in the details of implementation. Should conversions of BTS be done per witness per pay period or should a witness pay pool of BitUSD be created for all witness daily / weekly / monthly and from that pool each witness' pay is calculated based on the blocks they produced?

It might also be prudent to build in a fallback strategy to revert to payouts in BTS to cover situations where the BTS price drops very low and remain there which might drain the reserve pool into oblivion. That may be such a rare situation it isn't worth coding to cover, but frankly this is an idea we may not be able to anticipate all of the ramifications of.

As @tbone pointed out, changes will be required in a number of different areas of the UI as well as the backend. So this may not be a quick or cheap proposal to implement.

The reserve pool is large enough now however that I believe it's a good time to give something like this a try. Let's get more discussion on the finer points of this with an eye towards implementation issues. In particular I'd like to hear from @kenCode, @xeroc or others who are familiar with the C++ codebase.

No offense intended, but @fav's comment to basically just have one person go off and just "do it" (i.e. create a proposal) for such a change is not very realistic. This will take more than one mind working together to accomplish to make sure we cover all bases.

Let me show you yet another way of dealing with this:

Basically each witness has a signing key and corresponds to a
regular account which in turn has an active an owner key.
The active key is required to obtain the payment.

Now, how about this setup:

0. I want to become a witness
1. A business/entity/foundation/whatever sets up a regular account for me
2. I provide them with a pubkey for signing (i control the private key)
3. The business registeres the witness with that key
4. I start producing blocks for an account that I do not control
5. I request payment with the business/foundation/entity
6. They obtain the BTS from the vesting balance, buy USD/GOLD whatnot and burn the rest (minus a fee)

This would "work", although it comes with a few drawbacks:

* No such business exists yet
* The business may have control over multiple witnesses and can change keys any time
* It may be difficult for people to identify who 'actually' runs the witness
* Figuring out how many blocks have been missed would need to happen offchain
* The entity/business could run with the BTS or simply not burn it

It comes with a couple advantages too:

* We can do this today
* The witness can actually get paid in any currency
* Any kind of contract can be made beween company and witness
* company can perform the backup functionality (at a fee) and switch
  over to other witnesses if you miss your blocks

Ideally, such a company would only control maybe 3-5 witnesses but it
could be ofc possible to have many of those businesses to co-exist.

Throughts?

iHashFury

  • Guest
Paying witnesses in a bitASSET of their choice seams like a waste of time to me (never mind the code bloat).
All witnesses can pay themselves in whatever bitASSET they want by using their pay BTS as collateral.

I'd be very surprised if witness are dumping their BTS pay to cover costs.
Please take the time to learn how to use the tools we have now to maximise potential.


Offline Thom

Another issue is how to deal with the accruing / accumulating nature of  worker / witness payments.

I mean witness pay is paid in BTS per block. I don't see how you could pay witnesses incrementally without increasing the interval of payouts. Payments With 21 witnesses, 3 second block times and price per BTS at $0.005 that comes out to roughly $20USD per day or ~4k BTS. Each witness account would have to be tracked as to how many blocks it generated during the payment period, be it daily / weekly / monthly.

I like the idea in general, but believe the devil is in the details of implementation. Should conversions of BTS be done per witness per pay period or should a witness pay pool of BitUSD be created for all witness daily / weekly / monthly and from that pool each witness' pay is calculated based on the blocks they produced?

It might also be prudent to build in a fallback strategy to revert to payouts in BTS to cover situations where the BTS price drops very low and remain there which might drain the reserve pool into oblivion. That may be such a rare situation it isn't worth coding to cover, but frankly this is an idea we may not be able to anticipate all of the ramifications of.

As @tbone pointed out, changes will be required in a number of different areas of the UI as well as the backend. So this may not be a quick or cheap proposal to implement.

The reserve pool is large enough now however that I believe it's a good time to give something like this a try. Let's get more discussion on the finer points of this with an eye towards implementation issues. In particular I'd like to hear from @kenCode, @xeroc or others who are familiar with the C++ codebase.

No offense intended, but @fav's comment to basically just have one person go off and just "do it" (i.e. create a proposal) for such a change is not very realistic. This will take more than one mind working together to accomplish to make sure we cover all bases.

In my last post I highlighted some of the tremendous benefits of paying workers/witnesses in the bitAsset currency of their choice.  So what are the downsides?  I can't really think of any.  It doesn't create inflation.  Worst case scenario, all bitAssets are force settled by workers/witnesses and all of the associated collateral simply goes right back into the reserve pool.

What about the cost to implement it?  I have no idea what the cost would be.  But I can't imagine it would be prohibitive, especially relative to the benefits derived.  Maybe someone could give us a ballpark estimate of the development cost, just so we have a rough idea.  Below is a list to help jump start a determination of specifically what items need to be coded. 



We would need to create/modify parameters for committee to specify:
     o level of witness pay in terms of bitUSD (or bitCNY?) instead of BTS
     o % of witness/worker pay that should be made using bitAssets
     o which bitAssets are eligible to be chosen by witnesses/workers for their pay
     o collateral level to be used when automatically creating bitAssets used for payments

It will also be necessary to enable:
     o witnessses to specify which eligible bitAsset currency they would like to be paid in
     o workers to specify worker proposal price in terms of bitUSD (or bitCNY?) instead of BTS
« Last Edit: April 05, 2017, 02:34:28 pm by Thom »
Injustice anywhere is a threat to justice everywhere - MLK |  Verbaltech2 Witness Reports: https://bitsharestalk.org/index.php/topic,23902.0.html