We have PoC running on MIPT Campus in Moscow that pays for energy with micropayments. For micropayments we use Machinomy payment channels, that is ours. We are tired with the hard requirements of providing liquidity, that is necessarily stuck inside the channels.
Any modern state channels suffer from liquidity lock, a user has to provide collateral. Plasma implementations suffer from long waiting time due to exit game, instead.
We thought one could play around idea of debt, to ease burden of liquidity.
What it does
Basically we redefined a problem that is solved with state channels. We assume that participants of a channel have well-established identity, rather than stochastically come and go.
It is a smart contract and a test suite for it that basically implements idea of debt-based payment channel, where so called collateral is eventually collected by the receiver. Collateralisation requirement is eased based on an assumption, that a participant has a well-defined identity on chain. This is a viable assumption, since in real world you often transact with people you know and trust to some extent.
How I built it
Lots of discussions, lots of memories about pain, cigarettes, pen and paper, and a little bit of code.
Challenges I ran into
One have to maintain discipline of extreme diligence in order not to expose attack vector related to poorly-designed game.
Accomplishments that I'm proud of
That I actually created it. Debt is considered evil for decentralised finance. I created a blueprint for the design that could evolve into our production-level energy trading system.
What I learned
Debt games are different from usual state-channels.
What's next for debt_channels
Unite few channels together into payment network with rebalancing. Adjust the contract to link identity via well-defined ERC, and provide the user with a way to link their debt channels together around one identity.