> For the complete documentation index, see [llms.txt](https://seinetwork.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://seinetwork.gitbook.io/docs/nodes-and-validators/module-endpoints.md).

# Эндпоинты модулей

## Эндпоинты POST

Данные эндпоинты требуют наличие подписанной транзакции (Tx). Здесь вы можете найти пример использования клиента cosmjs <https://github.com/sei-protocol/sei-chain/blob/master/oracle/oracle.js>

### Размещение ордеров

#### Модуль DEX

Данный эндпоинт принимает запрос на массовое размещение ордеров.

```
rpc PlaceOrders(MsgPlaceOrders) returns (MsgPlaceOrdersResponse);

message MsgPlaceOrders {
  string creator = 1;
  repeated OrderPlacement orders = 2;
  string contractAddr = 3;
  repeated cosmos.base.v1beta1.Coin funds = 5 [
    (gogoproto.nullable) = false,
    (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
  ];
}

message MsgPlaceOrdersResponse {
  repeated uint64 orderIds = 1;
}
```

### Отмена ордеров

#### Модуль DEX

Данный эндпоинт принимает запрос на массовую отмену ордеров.

```
rpc CancelOrders(MsgCancelOrders) returns (MsgCancelOrdersResponse);

message MsgCancelOrders {
  string creator = 1;
  repeated OrderCancellation orderCancellations = 2;
  string contractAddr = 3;
}

message MsgCancelOrdersResponse {}
```

### Ликвидация

#### Модуль DEX

Эндпоинт ликвидирует аккаунт.

```
message MsgLiquidation {
  string creator = 1;
  string accountToLiquidate = 2;
  string contractAddr = 3;
}

message MsgLiquidationResponse {}
```

### Предварительное голосование по обменному курсу

#### Модуль Оракул

Данный эндпоинт отправляет оракулу хэш предварительного голосования для следующего цикла.

```
message MsgAggregateExchangeRatePrevote {
  string hash = 1;
  string feeder = 2;
  string validator = 3;
}

message MsgAggregateExchangeRatePrevoteResponse {}
```

### Голосование по обменному курсу

#### Модуль Оракул

Эндпоинт используется для голосования по величине обменного курса в текущем цикле голосования. Предоставляемые биржевые курсы должны совпадать с хэшем предварительного голосования предыдущего цикла голосования (для текущего цикла голосования).

```
message MsgAggregateExchangeRateVote {
  string salt = 1;
  string exchange_rates = 2;
  string feeder = 3;
  string validator = 4;
}

message MsgAggregateExchangeRateVoteResponse {}
```

## Эндпоинты GET

### Получение последних сделок

#### Модуль DEX

Эндпоинт принимает id рынка и возвращает сделки, размещенные в последнем блоке.

```
GetSettledTradesRequest {
  int market_id;
}

GetSettledTradesResponse {
  vector<Order> settled_trades;
}
```

### Получение полной книги ордеров

#### Модуль DEX

Эндпоинт принимает id рынка и возвращает полную книгу ордеров в последнем блоке.\
**Сервис**: `codchen.matrixchain.dex.Query`\
**Метод**: `LongBook`\
**Формат сообщения:**

```
// Request
QueryGetLongBookRequest {
  uint64 id = 1;
}

// Response
QueryGetLongBookResponse {
  LongBook LongBook = 1 [(gogoproto.nullable) = false];
}

// Example (using grpc-client-cli)
> grpc-client-cli localhost:9090
? Choose a service: codchen.matrixchain.dex.Query
? Choose a method: LongBook
Message json (type ? to see defaults): {"id": 0}
```

### Получение краткой книги ордеров

#### Модуль DEX

Эндпоинт принимает id рынка и возвращает краткую книгу ордеров в последнем блоке.\
**Сервис**: `codchen.matrixchain.dex.Query`\
**Метод**: `ShortBook`\
**Формат сообщения:**

```
// Request
QueryGetShortBookRequest {
  uint64 id = 1;
}

// Response
QueryGetShortBookResponse {
  ShortBook ShortBook = 1 [(gogoproto.nullable) = false];
}

// Example (using grpc-client-cli)
> grpc-client-cli localhost:9090
? Choose a service: codchen.matrixchain.dex.Query
? Choose a method: ShortBook
Message json (type ? to see defaults): {"id": 0}
```

### Получение обменного курса

#### Модуль Оракул

Эндпоинт возвращает обменный курс для определенной валюты. \
**Сервис**: `seiprotocol.seichain.oracle.Query`\
**Метод**: `ExchangeRate`\
**Формат сообщения:**

```
// Request
QueryExchangeRatesRequest {}

// Response
QueryExchangeRateResponse {
  OracleExchangeRate oracle_exchange_rate = 1 [(gogoproto.nullable) = false];
}

// Example (using grpc-client-cli)
> grpc-client-cli localhost:9090
? Choose a service: seiprotocol.seichain.oracle.Query
? Choose a method: ExchangeRate
Message json (type ? to see defaults): {"denom": "foo"}
```

### Получение обменных курсов

#### Модуль Оракул

Эндпоинт возвращает все активные обменные курсы. \
**Сервис**: `seiprotocol.seichain.oracle.Query`\
**Метод**: `ExchangeRates`\
**Формат сообщения:**

```
// Request
QueryExchangeRateRequest {
  string denom = 1;
}

DenomOracleExchangeRatePair {
  string denom = 1;
  OracleExchangeRate oracle_exchange_rate = 2 [(gogoproto.nullable) = false];
}

// Response
QueryExchangeRatesResponse {
  // exchange_rates defines a list of the exchange rate for all whitelisted denoms.
  repeated DenomOracleExchangeRatePair denom_oracle_exchange_rate_pairs = 1;
}

// Example (using grpc-client-cli)
> grpc-client-cli localhost:9090
? Choose a service: seiprotocol.seichain.oracle.Query
? Choose a method: ExchangeRates
Message json (type ? to see defaults): {}
```

### Получение целей для голосования

#### Модуль Оракул

Эндпоинт возвращает все наименования, доступные для голосования по цене. \
**Сервис**: `seiprotocol.seichain.oracle.Query`\
**Метод**: `VoteTargets`\
**Формат сообщения:**

```
// Request
QueryVoteTargetsRequest {}

// Response
QueryVoteTargetsResponse {
  repeated string vote_targets = 1;
}

// Example (using grpc-client-cli)
> grpc-client-cli localhost:9090
? Choose a service: seiprotocol.seichain.oracle.Query
? Choose a method: VoteTargets
Message json (type ? to see defaults): {}
```

### Получение счетчика пропусков

#### Модуль Оракул

Эндпоинт возвращает счетчик пропусков для конкретного валидатора. \
**Сервис**: `seiprotocol.seichain.oracle.Query`\
**Метод**: `MissCounter`\
**Формат сообщения:**

```
// Request
QueryMissCounterRequest {
  string validator_addr = 1;
}

// Response
QueryMissCounterResponse {
  uint64 miss_counter = 1;
}

// Example (using grpc-client-cli)
> grpc-client-cli localhost:9090
? Choose a service: seiprotocol.seichain.oracle.Query
? Choose a method: MissCounter
Message json (type ? to see defaults): {"validator_addr": "seivaloperADDR"}
```

{% hint style="info" %}
Другие эндпоинды, доступные для использования, а также подробную спецификацию вы сможете найти здесь <https://github.com/sei-protocol/sei-chain/blob/master/proto/oracle/query.proto>
{% endhint %}
