tbtc icon indicating copy to clipboard operation
tbtc copied to clipboard

Maximize returns on signing bonds

Open mhluongo opened this issue 6 years ago • 5 comments

Signing bonds are required for a safe supply peg, but the higher the collateral requirement, the higher the cost to depositors to make bonding an efficient use of capital. Any mechanism that allows bonds to yield interest - while maintaining the ability to slash and seize the funds - will lower the overall cost of operation.

One approach is lending out signing bonds on-chain to machine-friendly lending platforms like Compound. This would mean all signers would make returns atop an approximation of the risk-free rate on the bond, at the expense of added complexity around fund seizure.

Today, Compound v2 is the most obvious place to seek these returns- but we should expect that this functionality changes significantly between versions, is easily upgradeable, and can be turned off in case of security issues in the external contracts.

  • [x] Document the intent and structure of lending out signing bonds
  • [ ] Implement lending with Compound v2 / ETH
  • [ ] Implement lending against an internally written cBTC contract for a Compound v2 market
  • [ ] Implement a governance-based circuit breaker to turn off the functionality
  • [ ] Ensure this piece of the system is easily upgradeable

mhluongo avatar May 12 '19 03:05 mhluongo

Note that this is meant as a far less dangerous alternative to #14, and complementing #118.

Ohter open questions

  • How can we do this as safely as possible? I don't like bringing in additional smart contract risk- is a circuit breaker enough?
  • Can we make this optional per signer to get a mix, in case there is a system issue with Compound?
  • How heavy is the lift on the implementation? Can we get this in v1 or do we need to kick the can?

mhluongo avatar Aug 07 '19 14:08 mhluongo

Can we make this optional per signer to get a mix, in case there is a system issue with Compound?

Add optional switch to enable bonds (per signer) to be lent out to a whitelist of contract. If each signer sends their portion of the bond separately, you can make this so that each signer can pick which defi platform they use.

e.g. in a deposit with 3 signers, 1 may choose uniswap to make extra fees from the low-volatility arbitrage LP fees, the other may choose Compound, and the other does not like 3rd party risk so does not use any external platform

I see that createNewDeposit is a non-payable function that make a 0-wei payable call to the Keep? Why? How is the funding by the signers implemented?

gakonst avatar Aug 10 '19 10:08 gakonst

#238 got merged but let's keep this open for implementation reasons

gakonst avatar Aug 15 '19 17:08 gakonst

Redeemable Token that generates interest: https://github.com/decentral-ee/rtoken-contracts, https://twitter.com/FrancescoRenziA/status/1161361826472517632

gakonst avatar Aug 15 '19 20:08 gakonst

Moving this to post-mainnet, as we've pushed attempts to increase ROI on bonded collateral to the next version.

mhluongo avatar Jan 17 '20 23:01 mhluongo