Created
December 6, 2025 19:32
-
-
Save homakov/b77d7139aee49c2d3828172982b801e4 to your computer and use it in GitHub Desktop.
cycle.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ⏺ Платёж A → Hub → B: Полный жизненный цикл | |
| --- | |
| ФАЗА 0: Открытие аккаунтов | |
| A открывает аккаунт с Hub: | |
| A [==collat|credit——→] Hub | |
| A кладёт $1000 collateral → A может ОТПРАВЛЯТЬ хабу | |
| A открывает $1000 credit к Hub → A может ПОЛУЧАТЬ от хаба | |
| B открывает аккаунт с Hub: | |
| B [==collat|credit——→] Hub | |
| B кладёт $500 collateral → B может ОТПРАВЛЯТЬ хабу | |
| B открывает $2000 credit к Hub → B может ПОЛУЧАТЬ от хаба | |
| Hub ничего не делает — просто принимает аккаунты. | |
| --- | |
| ФАЗА 1: A инициирует платёж | |
| A хочет заплатить B $100 | |
| A не имеет прямого аккаунта с B | |
| Роутинг находит путь: A → Hub → B | |
| --- | |
| ФАЗА 2: Нога A → Hub | |
| ДО: | |
| A [===$1000====|----$1000--→] Hub | |
| collateral credit to hub | |
| ondelta: 0 | |
| ПОСЛЕ отправки $100: | |
| A [===$1000====|----$1000--→] Hub | |
| ondelta: +$100 (A должен Hub) | |
| A's capacity to send: $1000 - $100 = $900 осталось | |
| Что произошло: | |
| - A ушёл в долг к Hub на $100 | |
| - Долг покрыт collateral'ом A | |
| - Hub получил $100 (записано в ondelta) | |
| --- | |
| ФАЗА 3: Нога Hub → B | |
| ДО: | |
| B [===$500=====|----$2000--→] Hub | |
| ondelta: 0 | |
| ПОСЛЕ получения $100: | |
| B [===$500=====|----$2000--→] Hub | |
| ondelta: -$100 (Hub должен B) | |
| B's credit to hub used: $100 of $2000 | |
| Что произошло: | |
| - Hub ушёл в долг к B на $100 | |
| - Долг покрыт credit'ом который B открыл к Hub | |
| - B "получил" $100 (Hub ему должен) | |
| --- | |
| ФАЗА 4: Итоговое состояние (off-chain) | |
| A Hub B | |
| | | | | |
| [+$100 долг] [нетто: 0] [-$100 кредит] | |
| A должен Hub Hub должен A Hub должен B | |
| Hub должен B (B дал кредит) | |
| ───────────── | |
| Баланс Hub: | |
| +$100 от A | |
| -$100 к B | |
| = 0 ✓ | |
| Инвариант сохранён: Hub посредник, его баланс = 0 | |
| --- | |
| ФАЗА 5: Settlement (on-chain, опционально) | |
| Если B хочет вывести $100: | |
| 1. B → Hub: "Хочу settlement на $100" | |
| 2. Hub отправляет tx в J-Machine: | |
| Depository.settle(Hub, B, tokenId, $100) | |
| 3. J-Machine (on-chain): | |
| - Hub.reserves -= $100 | |
| - B.reserves += $100 | |
| 4. После settlement: | |
| B [===$500=====|----$2000--→] Hub | |
| ondelta: 0 (долг погашен on-chain) | |
| B.reserves: +$100 (можно withdraw) | |
| --- | |
| ФАЗА 6: A пополняет collateral | |
| Если A потратил весь collateral: | |
| 1. A → J-Machine: deposit $500 to reserves | |
| 2. A.reserves: +$500 | |
| 3. A → Hub: "Reserve-to-Collateral $500" | |
| 4. A [===$1500====|----$1000--→] Hub | |
| ↑ новый collateral | |
| --- | |
| Визуально весь цикл: | |
| OFF-CHAIN (instant, free) ON-CHAIN (slow, costs gas) | |
| ═══════════════════════════ ════════════════════════════ | |
| A ──[$100]──→ Hub ──[$100]──→ B | |
| ↓ ↓ | |
| ondelta +100 ondelta -100 | |
| ↓ ↓ | |
| (A owes Hub) (Hub owes B) | |
| │ | |
| ▼ settlement | |
| ┌─────────┐ | |
| │J-Machine│ | |
| │Depository│ | |
| └────┬────┘ | |
| │ | |
| Hub.reserves -= $100 | |
| B.reserves += $100 | |
| --- | |
| Ключевые моменты: | |
| 1. Платёж мгновенный (off-chain deltas) | |
| 2. Hub не тратит свои деньги — только роутит | |
| 3. Settlement — только когда нужен cash-out | |
| 4. Всё держится на credit'ах которые юзеры открывают к хабу |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment