# L2 Node API(blockbook edition)
> В итоге для работы с любым блокчейном нужно сформировать 3 группы API - Для установки актуального состояния; Для публикации истории; Для гарантирования актуального состояния стороне, не имеющей возможности отслеживать блокчейн транзакции онлайн.
## L2 State API(REST).
1. **INIT_STATE**(L2) - это API нужен для передачи и/или получения новой транзакции начального cтейта, вызывается перед подписанием транзакции ребалансировки, вызывается до формирования транзакции ребаланса, в случаях если трейдер является стороной заинтересованной в ребалансировке.
> это API устанавливает или запрашивает формирования новой транзакции начального состояния, перед вызовом API REBALANCE, на выходе у стороны публикующией в L1 транзакцию должна быть на руках транзакция устанавливающая состояние до публикации.
2. **REBALANCE**(L1) - это API используется для формирования транзакций предназначенных к публикации в блокчейн, изменяющих емкость канала.
> **если заинтересован трейдер(он выводит, или добавляет финансирование)** - то это запрос на формирование подписи на стороне биржи в ответе получаем подпись - такая транзакция(дополненная подписью трейдера) должна быть опубликовано трейдером в блокчейне.
> **если заинтересованна биржа(она выводит, или добавляет финансирование)** - то это передача подписи мультисига, сформированной на стороне клиента - такая транзакция(дополненная подписью биржи) должна быть опубликовано биржей.
3. **TRANSFER**(L2) - это API нужен для передачи и/или получения заинтересованной стороной артефактов для формирования актуальной транзакции состояния(офф-чейн)
> **если заинтересован трейдер(L3->L2)** - то это запрос на формирование подписи на стороне биржи включает ключ отзыва от предыдущего состояния в ответе получаем подпись - такая транзакция(дополненная подписью трейдера) может быть опубликовано трейдером, а отозвана биржей.
> **если заинтересованна биржа(L2->L3)** - то это передача подписи, сформированной на стороне клиента и получение артефактов(нонса и хеша отзыва) для следующей транзакции - такая транзакция(дополненная подписью биржи) может быть опубликовано биржей, а отозвана трейдером.
## L2 History API
```
Поставщик исторических данных, о неактуальных транзакциях состояния.
Такие транзакции поставляются без подписей сторон.
Важно - предусмотреть в этом API вывод актуального нонса,
который трейдер может использовать для формирования адреса
для следующей транзакции(биржа то не проебет, а вот трейдер может)
```
## Keyless Observer API
```
Охранная система для тонких клиентов, не имеющих возможность следить 24/7 за блокчейном
Для тех случаев когда биржа или трейдер ушли в офлайн, и опонент
решив воспользоватся сложившимся положением решает опубликовать
в блокчейне транзакцию !!!не-актуального!!! состояния
```
## Контракты каналов состояний
### 1. BTC
### 2. EOS
### 3. TRON
### 4. ETH
### 5. QTUM
### 6. NEO
## Сценарии тестирования контрактов состояний
1. Предотвращение попытки публикации.
2. Закрытие канала при отсутствии одной из сторон.
3. Штатный режим, подсчет комиисии.
4. Штатный режим открытие-закрытие канала.