Adjust bScore and BPRO distribution to account for debt/collateral ratio

I’d like to propose that we adjust the way bScore and BPRO is distributed by considering the collateral ratio of the user rather than simply the total.

For example: 2 users are borrowing $1m DAI, user A has $2m collateral while user B only has $1.5m. I believe we should be rewarding user B more highly than user A for taking the additional liquidation risk.

1 Like

Rewarded linearly or exponentially more the closer it gets to liquidation?

Exponentially discounts “safe” users pretty drastically, but “safe” users will benefit and also be forced into slightly more risky positions. I think I’m for an exponential reward curve personally.

Great thought but I would be against this. Bots would be able to take advantage of this as the collateral oracle does not get updated in real time. I can just write a bot which gives me max rewards and no risk. We would be rewarding tech savvy people at the cost of average users.


Yeah, this seems like it will be gamed by bots. If you’re going to get more advanced scoring, I’d rather it account for volatility of the assets. For example, stablecoin/same-asset COMP farming (lend USDC borrow USDC) should not be rewarded nearly as much as someone depositing or borrowing across differnt risky assets or stable-to-risky. The only risk in same-asset farming is that interest would slowly accrue and push it over liquidation limit eventually.

Wouldn’t a simple fix be updating the oracle? Well maybe simple isn’t the word, but there should be a “real time” way to get debt vs collateral on chain IMHO.

Also, I am not sure I am understanding how the collateral oracle could be gamed. The rewards would only adjust with the oracle feed, so if the oracle is behind and you maxed out your rewards and then it caught up and the price shifted wouldn’t your position still get liquidated? Seems like you are playing an incredibly risky game, one in which you could easily lose. Not to mention playing with your collateral means you have to get on-chain to adjust it, which if you are racing an oracle could be especially risky/costly. I think you make a good case to make rewards linear as opposed to exponential but I feel like it would be harder to game than you imagine. I know BProtocol uses both maker TWAPs and Chainlink so I could be misunderstanding the oracles though.

Yes, a realtime oracle is possible. You would just need to have a trusted party write the correct values to the blockchain every block. This would get quite expensive and is the reason that its not (widely?) being done.

The oracle updates every hour or so and we know beforehand with which value it will be updated. This means that as soon as we see that it will be updated to a value which will make us eligible for liquidation we can partly unwind our position to just under the liquidation threshold at the last second (or maybe 5 blocks before so we can retry if we fail). The result is that we wont get liquidated and get max rewards.

It is only costly if you dont scale accordingly and its only risky if you do this from a single server on a home dsl connection. In other words, its only costly or risky if you are a small player doing this from home.

Lets hope the above strengthens my case :slight_smile:

That being said, I do see the need for a non linear solution but just cant figure out a way to make it work without these kind of pitfalls.

1 Like

I had to go back and read the details surrounding the Chainlink integration. It appears you are right. Chainlink price feeds are only used by liquidators to estimate liquidation profits so they can be judged by the liquidator federation.

Perhaps we still need a separate Jar with an exponential debt/collateral reward mechanism that will allow liquidations based on Chainlink price feeds or something less gameable…it wouldn’t be much code to change/audit.

Couldn’t we make the bScore a time weighted value of the collateral ratio? If the oracle updates every hour, It would not be economically viable for bots to constantly adjust the collateral right before the oracle updates because of gas, so it’s much harder to game.


It would not be economically viable for a teach savvy hobbyist. It would absolutely be economically viable for a big fund which can scale its operations.

1 Like

1, What is the exact formula you suggest? e.g, multiply current scoring by (minimum collateral ratio/current collateral ratio)?

  1. Answering the concerns of @Commiekiller, @maruboro and @a7om about it being gamable. Then the answer is that it is gamable, but so does the current scheme.
    I think eventually every system will be gamable, but the question is which system will more likely to attract “normal borrowers”. And I don’t have an answer about that.

  2. Regarding implementation, currently we query the compound price oracle at the end of every snapshot, record it at the ipfs snapshot, and use it as price for the next snapshot generation.
    Even though prices change over the week, it is a reasonable approximation, and one that allows the community to verify the snapshot without using an expensive ethereum archival node.
    So same technique could also approximate the collateral ratio.

1 Like

I would suggest something along those lines yes.

So what you are basically saying is whales could aready game the system theoretically by having tons of debt around the snapshot and then pulling it? Either reward scheme is gameable, its mainly a matter of making it attractive to borrowers. Borrowers in my mind are risk takers, to varying degrees. So the more you incentivize risk safely the more the protocol will be rewarded with growth. For that reason I could see a linear increase in rewards based on debt/collateral ratio important and worthwhile.

I am for moving towards a prototype to at the least throw on the testnet and mess around with. I will assist this effort in any way I can.

the time of the snapshot does not matter, as it calculates every block separately, but just like whales manipulate compound by taking recursive loans just to accumulate more COMP, or even simpler just increase their debt because the COMP cover for the interest, then similarly people might do it for BPRO.

the score/bpro is not being calculated by an off-chain script. So no smart contract update is required. Regardless it would be nice to form a community multisig such that the power and responsibility will not only be at the hand of the backstop.

1 Like

As a general philosophy, it makes sense that vaults with virtually 0% chance of liquidation should get virtually 0% of rewards.

I agree with an earlier comment that USDC deposited and USDC borrowed (e.g on compound) should definitely have minimal rewards.

Yet the system needs to be straightforward enough that it is easily gamed. This isn’t that easy to accomplish. Ppl are right that big whales who can run bots can adjust ratios constantly in a way that regular folks can’t, especially with gas being what it is (just see uni v3 lol). It’d probably not ideal to incentivize this behavior.

For the above reason, I think having it be exponential is going too far (‘regular’ borrowers will get virtually no rewards and they will stop switching over).

Some kind of linear application of (minimum collateral ratio/current collateral ratio) seems like a decent place to start. Also interested in how we can lower incentives for USDC collateral with a USDC loan type of borrowing.

1 Like

I am completely in favor of not rewarding recursive farmers and accounts below 20% C-ratio(for example).
Bprotocol should not be valued on the basis of TVL but on the ratio of total liquidations (on supported protocols-Maker and Compound) in relation to the performed liquidations on Bprotocol.
Assuming that the “Coinbase Oracle Case” will not happen before the implementation of Chainlink (on Compound), recursive farmers and risk-free accounts are simply not required by the protocol and rewarding such accounts is nonsense.
If someone’s account is without liquidation risk, I see no reason why they would get any reward in the BPRO distribution.

1 Like

I agree with something like this. A reasonable logic could be netting assets and debt in the same token together and also netting together everything pegged to a price of 1 in Compound. That way you can’t be rewarded for recursive farming of Comp tokens when there’s very minute liquidation risk. For example, if someone deposits 100 USDC and borrows 84 USDC. The system will see a net position of 16 USDC with no debt and reward very little.

1 Like

very good suggestion, protocol need rewarding “skin in the game” users. For example:

USER X has supply 1 ETH and borrow 40% LTV in stablecoin, he has a risk of liquidation and BPRO distribution reward (20:80 per block)
USER Y has supply 10 ETH without borrowing and dont have liquidation risk (0%) but has a higher reward than USER X
USER Z has supply and borrow only stablecoins (similar amount in $:ETH as mention above) also without liquidation risk but with higer rewards than USER X and USER Y

BPRO rewards distribution currently mostly goes into the pocket of users who do not have the risk of liquidation and only farm COMP and BPRO.
Allowing such opportunistic action has consequences:

  1. BPRO dumping (not so important at the moment as BPRO is currently only a governance token but in the long run it is a reflection of the value of the protocol)
  2. Bprotocol becomes useless because liquidators have nothing to liquidate

I understand that as many people as possible want to be attracted to the protocol, but with a specific usecase - Bprotocol need only specific users. Compound allows farming because that protocol earns on the difference between supply and borrowing interet rates. On the other hand Bprotokol earns from liquidations (JAR) and it is very important to make changes in the incentive mechanism as soon as possible due to the 250000/3 months incentives program. This incentive program will be drained by users who dont deserve it.