keep-network / tbtc

Trustlessly tokenized Bitcoin on Ethereum ;)
https://tbtc.network
MIT License
213 stars 41 forks source link

Allow TBTC and ETH usage for signing bonds in v2 #118

Open mhluongo opened 5 years ago

mhluongo commented 5 years ago

Enabling TBTC as signing bond collateral can lower the overall collateral requirements of the supply peg.

Consider 10 BTC under custody. With a 6 month deposit term and 50 basis point fee, 9.95 TBTC are in circulation, and 15 BTCETH ("15 BTC worth of ETH") is bonded.

With optional TBTC signing bonds, 9 more BTC can be deposited and backed by 9 TBTC, meaning a total TBTC supply of 19 TBTC, only requiring 15 BTCETH in additional collateral. That's a 1.79X collateralization across the whole system, including Bitcoin and signing bonds- versus the 2.5X collateralization required naively by an ETH-only signing bond.

Fully playing out the example, more and more BTC can be deposited and backed by TBTC signing bonds. At 100 BTC, collateralization is only 1.15X- and as the BTC collateral grows further, the total collateral requirements approach 1.

At 100 BTC, however, only 9.5 TBTC is fully liquid- meaning that a 50 basis point return to signers and the use of 9.5 TBTC is the only incentive driving this loop. To see this behavior live, there needs to be additional incentive to sign and deposit. This incentive can be accomplished via #117. As long as signing bonds can be safely lent, the returns on those loans should incentivize signers to also act as large depositors.

liamzebedee commented 5 years ago

This is so crazy, it might just work. Had some time to brew over this:

Have to think more on this tomorrow. Might be tired, might be a complex issue, but very keen if we can do this.

mhluongo commented 5 years ago

I want to know why MakerDAO doesn't do this already

They're planning to do part of it- the part where bonds can be deposited elsewhere (eg Compound) then locked in a CDP. For DAI, though, this trick doesn't work- the point of the reserve is to stabilize the price, and that doesn't stabilize the price.

For us, it's a supply peg, not a price peg. The tricky part is making sure signing fees are high enough to justify locking up the TBTC you minted to sign for more to be minted.

mhluongo commented 5 years ago

the bond needs to have value - unlike ETH, TBTC isn't volatile, so it's lower risk for signers in terms of upkeep. I like this, it sounds nice, but ... no free lunch?

Free lunch my man. We only need ETH to bootstrap the bonds. The rest is just BTC opportunity cost.

mhluongo commented 5 years ago

TBTC is always backed by a real amount of BTC, but will it have a different price on the market (ie. from lower Eth tx fees)?

This was always the case due to signing fees- and that's okay, as we're building a supply peg, not a price peg.

This could actually counter that by acting as a TBTC "savings account".

Luckily

what does that mean for overcollateralisation?

The answer here appears to be "very little".

liamzebedee commented 5 years ago

it's a supply peg, not a price peg

Those magic words - this is the essence of it. Let's do it!

mhluongo commented 5 years ago

I've discussed this with a couple folks outside Github, and I'm seeing confusion around

why MakerDAO doesn't do this already

Intuitively, folks are asking "well, why can't we just do this with DAI? DAI backed by DAI?"

The answer I've intuited is that in a price peg, reflexive collateral leads to a more volatile peg, "diverging"- and that with a supply peg, more reflexive collateral "converges"- because we're leaning more and more on someone else's Bitcoin being the collateral, and lowering the amount of F/X risk the system is built around.

At scale, if tBTC as a system approaches being entirely bonded on the EVM side with TBTC, there is no F/X risk- but there's also no liquid TBTC on the EVM, as it's all required for signing collateral.

mhluongo commented 5 years ago

@gakonst would be fun to get your take on this. No idea if we can feel good / comfortable getting this into the docs by initial spec peer review but I think we could announce it as a major improvement shortly after.

In addition to the docs it's probably worth a long-form blog post- https://crosschain.group/ launching will give us a place for stuff like that.

mhluongo commented 5 years ago

We can either do this all in one PR, or split this into a doc and implementation PR- open to either

gakonst commented 5 years ago

Documenting this process is next on my schedule for #238.

gakonst commented 5 years ago

https://github.com/keep-network/tbtc/pull/238/commits/02f84ef96a40246ef56bf3d1f2c58ac5a53b38fd should address the first 3 unchecked boxes

gakonst commented 5 years ago

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

mhluongo commented 4 years ago

@Shadowfiend @NicholasDotSol have we gotten anywhere with this? Working to make sure we all know what "done" is for #326

NicholasDotSol commented 4 years ago

have we gotten anywhere with this? Working to make sure we all know what "done" is for #326

Totally lost track of this one. On it.

NicholasDotSol commented 4 years ago

Had some preliminary thoughts, probably best to write down here. Assumptions:

Requirements / initial thoughts:

Shadowfiend commented 4 years ago

gotten anywhere

Late to the question ofc, but I'm not sure what this question was meant to be asking in the first place. We aren't doing this, so in that sense… No? The ball's in your court if you're wanting to land this post-audit or for follow-up audit purposes. Implementing it would need to push into the Keep side to support ERC20 bonds, and we could look at that as part of our poking at adding to the Keep staking mechanism.