TODOs
- Can not add Fund to unsorted splitter
- In a top-down splitter expenses should go BEFORE funds
Descriptions (by Kirill)
Кароч, все рушится к херам, когда мы начинаем исопльзовать фонды в схемах. Нужно прям тотально перерабатывать ключевые алгоритмы
14 replies
enkogu [3 hours ago]
Все построено на том, что каждый элемент знает, сколько точно ему нужно, не больше и не меньше. На этом построены сплиттеры, функции getMinWeiNeeded/getTotalWeiNeeded/processFunds
enkogu [3 hours ago]
Плюс мы должны определиться, как будет работать система в ряде сценариев. Вот например
UnsortedSplitter U,
Fund F1 with 10 eth need,
AbsoluteExpense A1 with 3 eth need
AbsoluteExpense A2 with 5 eth need
|-A1 3 eth
U -|-F1 10 eth
|-A2 5 eth
// --------------- SEND 100
U.getTotalWeiNeeded(100) -> // 18
for in
A1.getTotalWeiNeeded(100) // 3
F1.getTotalWeiNeeded(100) // 10
A2.getTotalWeiNeeded(100) // 5
// --------------- SEND 12
U.getTotalWeiNeeded(12) -> // 18
for in
A1.getTotalWeiNeeded(12) // 3
F1.getTotalWeiNeeded(12) // 10
A2.getTotalWeiNeeded(12) // 5
// --------------- SEND 9
U.getTotalWeiNeeded(9) -> // 17
for in
A1.getTotalWeiNeeded(9) // 3
F1.getTotalWeiNeeded(9) // 9
A2.getTotalWeiNeeded(9) // 5```
enkogu [3 hours ago]
В сценарии send 100 все в порядке, а что в сценарии с 12, а в сценарии с 9?
enkogu [3 hours ago]
Вариант 1 – все фонды отложить и пройти их в отдельном цикле. То есть в сценарии с 9eth в фонд упадет 1eth и ничего не заревертится
Вариант 2 – ревертить, так как мы последовательно отрабатываем ноды, а на третью уже не хватит (edited)
enkogu [3 hours ago]
Это лишь один из сценариев который появляется. А их с десяток, наверное
enkogu [3 hours ago]
Может быть, нам стоит немного пересмотреть концепцию сплиттеров.
Можно просто в тексте позапрещать определенные сценарии.
Можно добавить кучу сложных проверок
Можно выносить фонды в отдельный цикл
enkogu [2 hours ago]
Есть еще такой вариант – для unsortedSplitter выносить в отдельный цикл фонды, а для topDown – нет.
enkogu [2 hours ago]
Можно еще запретить к unsorted цеплять фонды
enkogu [1 hour ago]
Но останется еще такая проблема
|-A1 3 eth TD -|-F1 10 eth |-A2 5 eth
enkogu [1 hour ago]
То есть в topdown если фонд стоит посередине, то он должен быть полностью заполнен.
Является ли это правильным поведением?