Liquidity: рд░рд┐рдЬрд░реНрд╡ рдЦрд╛рддреЗ рдореЗрдВ рд╕рд┐рдХреНрдХреЗ рднреЗрдЬрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдВрднрд╛рд▓реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдордИ 2021  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: tendermint/liquidity

рдмрдЧ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢

рдЬрдм рдХреЛрдИ рдкреВрд▓ рдХреЗ рд░рд┐рдЬрд░реНрд╡ рдЦрд╛рддреЗ рдореЗрдВ рд╕рд┐рдХреНрдХреЗ рднреЗрдЬрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдЖрд░рдХреНрд╖рд┐рдд рд╕рд┐рдХреНрдХреЗ рдХреЗ рдПрдХ рддрд░рдл рд╢реВрдиреНрдп рд░рд╛рд╢рд┐ рд╢реЗрд╖ рдХреЗ рд╕рд╛рде рдПрдХ рдкреВрд▓, рдЧрд▓рдд рдкреВрд▓ рдореВрд▓реНрдп рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рдгреА

    • рдкреВрд▓ рд╕реЗ рд╕рднреА рд╕рд┐рдХреНрдХреЗ рдирд┐рдХрд╛рд▓рдХрд░ рдФрд░ рдлрд┐рд░ рдХреЗрд╡рд▓ рдПрдХ рдЖрд░рдХреНрд╖рд┐рдд рд╕рд┐рдХреНрдХрд╛ рд╕реАрдзреЗ рдЖрд░рдХреНрд╖рд┐рдд рдЦрд╛рддреЗ рдореЗрдВ рднреЗрдЬрдХрд░

  • рдЬрдорд╛ рддрд░реНрдХ рдореЗрдВ рдШрдмрд░рд╛рд╣рдЯ, рдЖрд░рдХреНрд╖рд┐рдд рд╕рд┐рдХреНрдХрд╛ рдЕрдиреБрдкрд╛рдд рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╕рдордп (рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдкреВрд▓ рдХреЗ рд╕рд╛рде рд╢реВрдиреНрдп рддреНрд░реБрдЯрд┐ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ)
  • ...

рд╕рдВрд╕реНрдХрд░рдг

https://github.com/tendermint/liquidity/releases/tag/v1.2.5

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдШрдмрд░рд╛рд╣рдЯ рд╣реЛрддреА рд╣реИ:

func TestSwapHalfZeroReserve(t *testing.T) {
    simapp, ctx := createTestInput()
    params := simapp.LiquidityKeeper.GetParams(ctx)
    pool, addr, err := createPool(simapp, ctx, sdk.NewInt(1000000), sdk.NewInt(1000000), DenomX, DenomY)
    require.NoError(t, err)
    pc := simapp.BankKeeper.GetBalance(ctx, addr, pool.PoolCoinDenom)
    _, err = simapp.LiquidityKeeper.WithdrawLiquidityPoolToBatch(ctx, types.NewMsgWithdrawWithinBatch(addr, pool.Id, pc))
    require.NoError(t, err)
    liquidity.BeginBlocker(ctx, simapp.LiquidityKeeper)
    liquidity.EndBlocker(ctx, simapp.LiquidityKeeper)
    require.True(t, simapp.BankKeeper.GetBalance(ctx, pool.GetReserveAccount(), DenomX).IsZero())
    require.True(t, simapp.BankKeeper.GetBalance(ctx, pool.GetReserveAccount(), DenomY).IsZero())
    err = simapp.BankKeeper.SendCoins(ctx, addr, pool.GetReserveAccount(), sdk.NewCoins(sdk.NewInt64Coin(DenomX, 10000)))
    require.NoError(t, err)
    _, err = simapp.LiquidityKeeper.SwapLiquidityPoolToBatch(ctx,
        types.NewMsgSwapWithinBatch(
            addr, pool.Id, types.DefaultSwapTypeId, sdk.NewInt64Coin(DenomX, 1000), DenomY, sdk.MustNewDecFromStr("1.0"), params.SwapFeeRate), 0)
    require.NoError(t, err)
    liquidity.BeginBlocker(ctx, simapp.LiquidityKeeper)
    liquidity.EndBlocker(ctx, simapp.LiquidityKeeper)
}

рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП

  • [x] рдбреБрдкреНрд▓реАрдХреЗрдЯ рдореБрджреНрджрд╛ рдирд╣реАрдВ
  • [x] рдЙрдкрдпреБрдХреНрдд рд▓реЗрдмрд▓ рд▓рд╛рдЧреВ
  • [ ] рдЙрдкрдпреБрдХреНрдд рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЯреИрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛
  • [ ] рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛/рд╕реНрд╡рдпрдВ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрджрд┐ рд╣рдо рдПрдХ рдЦрд╛рд▓реА рдкреВрд▓ рдХреЛ рд╢реВрдиреНрдп рдкреВрд▓ рд╕рд┐рдХреНрдХреЗ рдХреА рдЖрдкреВрд░реНрддрд┐ рд╡рд╛рд▓реЗ рдкреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ , рди рдХрд┐ рд╢реВрдиреНрдп рд░рд┐рдЬрд░реНрд╡ рд╡рд╛рд▓реЗ рдкреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ , рддреЛ рд╣рдо рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдШрдмрд░рд╛рдиреЗ рд╕реЗ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛ред

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрджрд┐ рд╣рдо рдПрдХ рдЦрд╛рд▓реА рдкреВрд▓ рдХреЛ рд╢реВрдиреНрдп рдкреВрд▓ рд╕рд┐рдХреНрдХреЗ рдХреА рдЖрдкреВрд░реНрддрд┐ рд╡рд╛рд▓реЗ рдкреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ , рди рдХрд┐ рд╢реВрдиреНрдп рд░рд┐рдЬрд░реНрд╡ рд╡рд╛рд▓реЗ рдкреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ , рддреЛ рд╣рдо рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдШрдмрд░рд╛рдиреЗ рд╕реЗ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛ред

рдХреБрдЫ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдмреНрд▓реИрдХрд▓рд┐рд╕реНрдЯ рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдЦрд╛рддреЛрдВ (рдмреИрдВрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╛рдзрд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рд╣реИред

@ migueldingli1997 рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЙрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ ReserveAcc рдирдпрд╛ рдкреВрд▓ рд╣реЛрдиреЗ рдкрд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП blockedAddrs рдЕрдзрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдЕрднреА рднреА рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЦреЛрдЬ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИред

рд╣рд╛рдБ рдпрд╣ рд╕рд╣реА рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ (рдЙрддреНрдкрддреНрддрд┐ рдкрд░ рдФрд░ рдЙрдЪрд┐рдд рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛) рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдкрдХреЛ рддрд░рд▓рддрд╛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреВрд▓ рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рд╢реЗрд╖ рд░рд╛рд╢рд┐ рдХреЛ рдмреИрдВрдХ рдкрд░ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЯреНрд░реИрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдорд╛рдкрд╛рдВрдХред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╡рд╛рдВрдЫрдиреАрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕