---
# System prepended metadata

title: Проблема ребалансировки

---

# Проблема ребалансировки

## Введение 
Для корректной ребалансировки пула крипто-активов необходимо достичь атомарности цепочки операций обмена в рамках транзакции ребалансировки. Без достижения этого свойства неизбежно возникнет проблема частично выполненных операций. 

Начальное состояние этосостояние до момента принятия решения о ребалансировки = пул из 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

Курс обмена не зависящая от пула величина, на которую воздействует рынок, и если система не гарантирует совершение всех трех операции в рамках одной транзакции неизбежно будет возникать состояние раз-балансировки, при котором цепочка операций ребалансировки не сможет завершится.    

## Решение
Для достижения атомарности цепочки операций обмена необходимо реализовать свопы и пулы ликвидности в специализированной цепочке второго слоя, гарантирующей на уровне консенсуса атомарность необходимых цепочек операций. 