mirror of
https://github.com/discountry/ritmex-bot.git
synced 2026-09-09 08:18:07 +00:00
64 lines
2.6 KiB
Markdown
64 lines
2.6 KiB
Markdown
# Executes
|
|
|
|
## Overview
|
|
|
|
All executes go through the following endpoint; the exact details of the execution are specified by the JSON payload.
|
|
|
|
* **Websocket**: <mark style="color:orange;">`WEBSOCKET [GATEWAY_WEBSOCKET_ENDPOINT]`</mark>
|
|
* **REST**: <mark style="color:orange;">`POST [GATEWAY_REST_ENDPOINT]/execute`</mark>
|
|
|
|
### **Signing**
|
|
|
|
All executes are signed using [EIP712](https://eips.ethereum.org/EIPS/eip-712). Each execute request contains:
|
|
|
|
1. A piece of structured data that includes the sender address
|
|
2. A signature of the hash of that structured data, signed by the sender
|
|
|
|
You can check the SDK for some examples of how to generate these signatures.
|
|
|
|
{% hint style="info" %}
|
|
See more info in the [signing](https://docs.nado.xyz/developer-resources/api/gateway/signing) page.
|
|
{% endhint %}
|
|
|
|
### **Sender Field Structure**
|
|
|
|
The sender field is a solidity <mark style="color:red;">`bytes32`</mark> . There are two components:
|
|
|
|
* an <mark style="color:red;">`address`</mark> that is a <mark style="color:red;">`bytes20`</mark>
|
|
* a subaccount identifier that is a <mark style="color:red;">`bytes12`</mark>
|
|
|
|
For example, if your address was <mark style="color:red;">`0x7a5ec2748e9065794491a8d29dcf3f9edb8d7c43`</mark>, and you wanted to use the default subaccount identifier (i.e: the word <mark style="color:red;">`default`</mark>) you can set <mark style="color:red;">`sender`</mark> to <mark style="color:red;">`0x7a5ec2748e9065794491a8d29dcf3f9edb8d7c4364656661756c740000000000`</mark> , which sets the subaccount identifier to <mark style="color:red;">`64656661756c740000000000`</mark>.
|
|
|
|
### **Amounts**
|
|
|
|
For <mark style="color:red;">`DepositCollateral`</mark> and <mark style="color:red;">`WithdrawCollateral`</mark>, the amount specifies the physical token amount that you want to receive. `i.e.` if USDT0 has 6 decimals, and you want to deposit or withdraw 1 USDT0, you specify <mark style="color:red;">`amount = 1e6`</mark>.
|
|
|
|
For all other transactions, amount is normalized to 18 decimals, so <mark style="color:red;">`1e18`</mark> == one unit of the underlying asset. For example, if you want to buy 1 wETH, regardless of the amount of decimals the wETH contract has on chain, you specify <mark style="color:red;">`1e18`</mark> in the amount field of the order.
|
|
|
|
## API Response
|
|
|
|
All `Execute` messages return the following information:
|
|
|
|
#### Success
|
|
|
|
```json
|
|
{
|
|
"status": "success",
|
|
"signature": "{signature}",
|
|
"data"?: {data_obj},
|
|
"request_type": "{request_type}"
|
|
}
|
|
```
|
|
|
|
#### Failure
|
|
|
|
```json
|
|
{
|
|
"status": "failure",
|
|
"signature": "{signature}",
|
|
"error": "{error_msg}",
|
|
"error_code": {error_code},
|
|
"request_type": "{request_type}"
|
|
}
|
|
```
|