Como funciona por dentro
Solvência e fila
O LP pode ficar temporariamente insolvente. Uma fila de pagamentos por ordem de chegada e uma reserva separada para os fundos destinados a ela garantem que os ganhadores sejam pagos, em ordem, sem nunca bloquear operações novas.
O modelo
O Exchange mantém a contabilidade do LP em alguns compartimentos:
- Caixa do LP: a parte dos USDC do Exchange que não é devida a mais ninguém. Pegue tudo o que ele tem e subtraia o saldo livre de cada conta, a margem travada em posições abertas e as taxas acumuladas; o que sobra é o caixa do LP. Ele não pode ficar negativo. Taxas de builder ainda não resgatadas ficam dentro do caixa do LP como uma dívida do LP: o LP contábil já as conta como pagas, e o resgate de um builder é pago com o caixa do LP, ou vai para a fila quando não pode ser pago.
- Reserva separada: o que entrou com perdas enquanto havia créditos na fila, destinado à fila dentro do caixa do LP. As coletas a esvaziam primeiro.
- Fila de pagamentos: uma lista por ordem de chegada de ganhos não pagos, cada um com uma conta e um valor.
- Dívida em posições: a margem de posições abertas que foi financiada com créditos na fila.
Em vez de um LP capitalizado de antemão que paga os ganhadores na hora, o protocolo coloca os ganhadores na fila quando falta caixa e os paga conforme as perdas seguintes reabastecem o LP. O número que a taxa de cunhagem do token acompanha, o LP contábil, está ligado aos compartimentos por uma identidade que toda operação preserva:
tracked LP = LP cash − queued claims − debt in positions
Ele pode ser negativo: esse é o estado de insolvência temporária para o qual a fila existe.
O que entra na fila é só o que o LP deve num fechamento, mas não consegue pagar naquele momento: o pagamento depois da taxa sobre ganho, numa posição financiada pelo seu saldo, ou o crédito que sobrou, numa posição financiada pela fila. Três coisas ficam de fora:
- Sua margem numa posição financiada pelo seu saldo: ela volta na hora para o seu saldo livre, e você pode sacá-la ou reutilizá-la.
- As taxas na frente dos ganhadores na fila: todo ganhador paga a taxa sobre ganho, mas ela só chega aos stakers e à equipe quando a fila está vazia e o caixa do LP também a cobre; caso contrário, fica no LP. As taxas sobre perda e de liquidação são dispensadas enquanto houver algo na fila. Uma taxa de builder sai junto com a taxa sobre ganho ou sobre perda e segue as mesmas regras.
- As perdas enquanto há créditos na fila: elas vão para a reserva separada em vez de virar caixa livre do LP. Mesmo assim, elevam o LP contábil por inteiro no momento em que são registradas.
Fechamentos com ganho
A taxa sobre ganho de 2% sai do pagamento qualquer que seja o estado do LP. Depois:
- A fila está vazia: você é pago com o caixa do LP, até o valor do pagamento. A taxa vai para os stakers e a equipe só se o caixa do LP também a cobrir; caso contrário, fica no LP.
- O que o caixa do LP não conseguiu pagar, ou o pagamento inteiro quando já há créditos na fila, entra no fim da fila em seu nome. O caixa do LP não muda pela parte que foi para a fila.
Uma posição financiada por créditos na fila é acertada do mesmo jeito, só que o LP deve todo o crédito que sobrou: a margem mais o pagamento num ganho, ou a margem menos a perda num fechamento com perda. O crédito usado na abertura era garantia, não dinheiro que você tinha.
Fechamentos com perda e liquidações
Uma posição financiada pelo seu saldo que fecha com perda ou é liquidada:
- A fila está vazia: a perda menos a taxa (2% num fechamento, 2% da margem numa liquidação) vira caixa do LP.
- Há créditos na fila: o valor fica no Exchange, mas vai para a reserva separada, para os ganhadores na fila, e nenhuma taxa é cobrada. Mesmo assim, ele conta para o LP contábil quando é registrado, e BACK continua sendo cunhado por ele.
Uma perda numa posição financiada por créditos na fila não traz caixa: a parte destruída do crédito simplesmente deixa de ser devida, então nada chega ao caixa do LP nem à reserva separada. Num fechamento com perda, o crédito que sobrou é pago ou vai para a fila como um ganho, e a taxa sobre perda só é cobrada quando a fila está vazia e o caixa do LP cobre o crédito mais a taxa. Uma liquidação destrói o crédito inteiro e não cobra taxa.
Coleta
Uma coleta paga os créditos na fila a partir do início:
- Percorre a fila a partir da cabeça, pagando cada crédito com o caixa disponível para a fila; o último crédito alcançado pode ser pago em parte.
- Debita primeiro da reserva separada o que foi pago. Se o caixa acabar antes de a fila esvaziar, para; as perdas seguintes financiam as coletas seguintes.
- Quando a fila esvazia e ainda sobra algo na reserva separada, libera o restante para o caixa comum do LP. Nem a coleta nem a liberação mudam o LP contábil: um crédito na fila já estava descontado dele.
A coleta não exige permissão, e quem a chama não recebe nada. Uma chamada paga no máximo 64 créditos; o nosso keeper a chama com 32 sempre que há caixa para pagar, então ninguém mais precisa fazer isso.
Se você já é dono do crédito mais novo quando outro ganho seu entra na fila, os dois são fundidos num único crédito; a ordem de pagamento não muda. Uma abertura financiada por créditos na fila usa primeiro os seus créditos mais novos, voltando por no máximo 50 deles, e um crédito esvaziado assim deixa um buraco que as coletas pulam.
Invariantes
- O caixa do LP e a reserva separada não têm sinal, então nenhum dos dois pode ficar negativo.
- O caixa disponível para novos pagamentos é zero sempre que há algo na fila, então um ganhador novo nunca pode ser pago antes de um anterior.
- O LP contábil é igual ao caixa do LP menos os créditos na fila menos a dívida em posições. Ele pode ficar negativo: é a insolvência temporária prevista no desenho.
- Uma distribuição aos stakers leva as taxas dos stakers, que sempre têm lastro, mais qualquer valor do LP acima de $500,000; esse excedente é pago com o caixa do LP quando não há nada na fila e, caso contrário, vai para a fila em nome do contrato de staking.
O indexador confere essas identidades depois de cada bloco e para de servir dados se alguma falhar.
O que o usuário vê
Abrir uma posição não depende da fila, fora os tetos de contratos em aberto de sempre e o limite de quantos créditos uma abertura pode usar. Um fechamento com ganho paga você na hora ou coloca você na fila, dependendo do LP. O app mostra um saldo disponível (pago) e um saldo na fila (esperando uma coleta); os dois podem financiar novas posições, porque créditos na fila podem servir de margem.