# Проблема ребалансировки ## Введение Для корректной ребалансировки пула крипто-активов необходимо достичь атомарности цепочки операций обмена в рамках транзакции ребалансировки. Без достижения этого свойства неизбежно возникнет проблема частично выполненных операций. Начальное состояние этосостояние до момента принятия решения о ребалансировки = пул из 3 активов. | Актив | Стоимость(USD) | Курс(Актив/USD) | | -------- | -------- | -------- | | 100 RUS_RUB | 1.38 | 72.46 | | 100 MEX_PECO | 4.85 | 20.62 | | 100 EURO | 119.08 | 0.84 | В данном состоянии принимается решение о ребалансировки портфела, в сторону уменьшения EURO и увеличения RUS_RUB и MEX_PECO, для достижения данного состояния необходимо совершить три операции: 1. EUR -> **`SELL(50, EURO/USD)`** -> USD 2. USD -> **`SELL(30, RUR/USD)`** -> RUR 3. USD -> **`SELL(30, PECO/USD)`** -> PECO Курс обмена не зависящая от пула величина, на которую воздействует рынок, и если система не гарантирует совершение всех трех операции в рамках одной транзакции неизбежно будет возникать состояние раз-балансировки, при котором цепочка операций ребалансировки не сможет завершится. ## Решение Для достижения атомарности цепочки операций обмена необходимо реализовать свопы и пулы ликвидности в специализированной цепочке второго слоя, гарантирующей на уровне консенсуса атомарность необходимых цепочек операций.