# Проблема ребалансировки
## Введение
Для корректной ребалансировки пула крипто-активов необходимо достичь атомарности цепочки операций обмена в рамках транзакции ребалансировки. Без достижения этого свойства неизбежно возникнет проблема частично выполненных операций.
Начальное состояние этосостояние до момента принятия решения о ребалансировки = пул из 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
Курс обмена не зависящая от пула величина, на которую воздействует рынок, и если система не гарантирует совершение всех трех операции в рамках одной транзакции неизбежно будет возникать состояние раз-балансировки, при котором цепочка операций ребалансировки не сможет завершится.
## Решение
Для достижения атомарности цепочки операций обмена необходимо реализовать свопы и пулы ликвидности в специализированной цепочке второго слоя, гарантирующей на уровне консенсуса атомарность необходимых цепочек операций.