# API for Developers

### RPC

#### Test Environment

* **RPC**: `https://relayer.test.deriw.com`
* **ChainId**: 2885
* **Explorer**: [https://explorerv2.test.deriw.com](https://explorerv2.test.deriw.com/)

#### Mainnet

* **RPC**: `https://rpc.deriw.com`
* **ChainId**: 2886
* **Explorer**: <https://explorer.deriw.com/>

***

### Notes

1. For opening a new position with no existing positions, margin must be **greater than 10 USDT**.
2. For closing a position, order amount must be **greater than 10 USDT**.

***

### 1. Faucet (Testnet Only)

In the **test environment**, users must claim test tokens. This is not required on mainnet.

#### 1.1 Claim Test Tokens

* **Airdrop Contract**: `0xb207FD6D1136b0a32E2077754C971A82C7E54545`
* Call the function: `claim()` to receive test USDT.

📌 Example Transaction: [View](https://explorerv2.test.deriw.com/tx/0xb538243f0c2606b43060d558306bedd8172f20411db357b4ca5edc7fe3fcf7ca)

#### 1.2 Token Approval

* **USDT (6 decimals)**: `0x8059298AD3f2153EC1B0FA0d233342e834E06737`
* Approve Router: `0x871cC36e0C52d3e41f896FF9D4eE03BC81E452e4`

**Mainnet USDT (6 decimals)**: `0x3B11A54514A708CC2261f4B69617910E172a90B3`

* Approve Router: `0x1eB6Dfc3316012C5795E1060f8BD1CEa10df30F5`

***

### 2. PositionRouter – Market Orders

* **Testnet**: `0x9E649615947e2bd1462A4b5D66645912b7740DB1`
* **Mainnet**: `0x80257F37d327FA0EF464eFa64DdFb755dE111262`

#### 2.1 Market Open Position

📌 Example Transaction: [View](https://explorerv2.test.deriw.com/tx/0x6485a3e2108bbb64b02359d1ac9f9baffb23cfc7b7453a2856a175f4c4f36d4e)

```solidity
function createIncreasePosition(
    address[] memory _path,        // Path (USDT address: 0x8059...)
    address _indexToken,           // Index token, see section 4
    uint256 _amountIn,             // USDT amount (1 USDT = 1,000,000 due to 6 decimals)
    uint256 _sizeDelta,            // Position size with leverage (1e30)
    bool _isLong,                  // Long = true, Short = false
    uint256 _acceptablePrice,      // Acceptable price (1e30)
    bytes32 _referralCode,         // Fixed value: 0x00...
    address _callbackTarget        // Fixed value: 0x0000000000000000000000000000000000000000
)
```

#### 2.2 Market Close Position

📌 Example Transaction: [View](https://explorerv2.test.deriw.com/tx/0xf00e62d7badcce643a4b455f12ab4b286f1837392b1c4ae39563a22cb9c10c5b)

```solidity
function createDecreasePosition(
    address[] memory _path,        // Path (USDT address: 0x8059...)
    address _indexToken,           // Index token, see section 4
    uint256 _collateralDelta,      // Usually 0
    uint256 _sizeDelta,            // Closing position size (1e30)
    bool _isLong,                  // Long = true, Short = false
    address _receiver,             // Receiver (usually tx sender)
    uint256 _acceptablePrice,      // Acceptable price
    address _callbackTarget        // Fixed value: 0x0000000000000000000000000000000000000000
)
```

***

### 3. OrderBook – Limit Orders

* **Testnet**: `0x300cAD4a61E6785F75E6deEbCC29b5f2708ab327`
* **Mainnet**: `0x86A0D906c6375846b05a0EF20931c1B4d2489C13`

#### 3.1 Limit Open Position

📌 Example Transaction: [View](https://explorerv2.test.deriw.com/tx/0xa0cc209e8fdcec47ce2d6f51ff1d453e05406ec0bee82c2d6468d64873ae6a5c)

```solidity
function createIncreaseOrder(
    address[] memory _path,        // Path (USDT address)
    uint256 _amountIn,             // USDT amount (1 USDT = 1,000,000 due to 6 decimals)
    address _indexToken,           // Index token, see section 4
    uint256 _sizeDelta,            // Position size with leverage (1e30)
    address _collateralToken,      // USDT (6 decimals)
    bool _isLong,                  // Long = true, Short = false
    uint256 _triggerPrice,         // Trigger price
    bool _triggerAboveThreshold,   // Default true
    uint256 _lever                 // Leverage
)
```

#### 3.2 Take Profit / Stop Loss Orders

📌 Example Transaction: [View](https://explorerv2.test.deriw.com/tx/0x87fed27568573a578b1b420f23699d2031f7f4826e2684b55b740577a65cf826)

```solidity
function batchCreateDecreaseOrder(DecreaseOrderFor[] memory orders) 

struct DecreaseOrderFor {
    address indexToken;        
    uint256 sizeDelta;         
    address collateralToken;   
    uint256 collateralDelta;   // Usually 0
    bool isLong;               
    uint256 triggerPrice;      
    bool triggerAboveThreshold;// Take profit = true, Stop loss = false
    uint256 lever;             
}
```

#### 3.3 Limit Close Position (TP/SL)

```solidity
function createDecreaseOrder(
    address _indexToken,        
    uint256 _sizeDelta,         
    address _collateralToken,   
    uint256 _collateralDelta,   // Usually 0
    bool _isLong,               
    uint256 _triggerPrice,      
    bool _triggerAboveThreshold,// Take profit = true, Stop loss = false
    uint256 _lever              
)
```

***

### 4. Index Token List

#### Mainnet

* **DOGE**: `0x2fDC17Dca642BBA2f4ad5DD51E891A277670B556`
* **WETH**: `0x8892549DdcA0f14ee3b4B0dE9A5b6dE5087FE12f`
* **SOL**: `0xB7e20EE2392f940Df344a1A940c37030DF0363A0`
* **LINK**: `0x83Fbf275A3B79F062a4deb7b876fB17D11b22815`
* **SUI**: `0x3C02bFeFC774364a1B2DBa7Dfa093A4b2eAa98db`
* **XRP**: `0xc48566c3A2A4358f34BeF026B1148f1A2cD47856`
* **BNB**: `0x881E8ef8a6aC1fD7f850978361d9FF67902F0Cac`
* **WBTC**: `0xAb49AA1FfAbdd69B812163Ac01B8762c1D435342`
* **MNT:** `0xAb49AA1FfAbdd69B812163Ac01B8762c1D435342`
* **OKB:** `0xF88f37DF527855440424B52CBDda0BcE510fa261`
* **WLFI:** `0x710E67b9490Db427Ee2E9c154178c001cEf0F349`
* **ENA:** `0xD377D75BCa249aA2a3b99d501C587A19A88C3Fe1`
* **PENDLE:** `0xa0750EF1fA99A393ca82771bf91ba80e709ca692`
* **ENS:** `0xC0C5630B8B57C88F48626A5aFf0ab4dE5bCfD8a2`
* **SOMI:** `0xfa4bdAD5B858263DEadCbD826AD1b4e9a5f43D62`
* **WLD:** `0x3Af24C47fe884653D64dc2edF00b8A07e2CBC764`
* **AAVE:** `0x7a895267FfDEFF5cb3331ac3D45A0c8Cc8257aba`
* **DOT:** `0x74759d2a55BC8e920c1f2ab9b0AD93c62c028B08`
* **UNI:** `0xc5B66dc0604a440155689015B1a577d7cF23e3d5`
* **ARB:** `0xA0e3d8b1d9FBeE85783C355e134515E115D1fB81`
* **TRUMP:** `0x7C823734F32A6Ba9eA7a5537AA05fc8147AC0464`
* **NEAR:** `0x1Ec988D411a52c80883a43f4Eb7F470D4cc0C3aA`
* **CRV:** `0xbAF2a9eD3d52B83730c66801891E79F9aE764Bdd`
* **OP:** `0x78a37F66D2483fb4816b5CbF00E187e04Aec62C2`
* **LTC:** `0x3845E1d4DCDd0694BB9919F9dd87CF06148eacE3`
* **AVAX:** `0x644F2FD0476402359B9233B101663E706493A145`
* **ADA:** `0x6a8E5074000D16e865ab72B10Af401D96EF07628`
* **ASTER:** `0xb2d98323AD400B711e49f131086783d3471AcAd8`
* **XAUt:** `0xFbD3AE1b32fcCe9EdD86519223Ef773Dbc399795`

&#x20;
