# API Reference

### توسعه روی یک شبکه باز

***

### RPC Endpoints

#### Mainnet

| Type      | Endpoint                     |
| --------- | ---------------------------- |
| HTTPS RPC | `https://rpc.dotone.network` |
| WebSocket | `wss://ws.dotone.network`    |
| Chain ID  | *505*                        |

#### Testnet

| Type      | Endpoint                             |
| --------- | ------------------------------------ |
| HTTPS RPC | `https://testnet-rpc.dotone.network` |
| WebSocket | `wss://testnet-ws.dotone.network`    |
| Chain ID  | *505*                                |

***

### JSON-RPC API

<p align="right">دات‌وان اسمارت‌چین مجموعه‌ای استاندارد از APIها را در اختیار توسعه‌دهندگان، پژوهشگران و یکپارچه‌سازها قرار می‌دهد. همه Endpointهای عمومی از الگوی JSON-RPC سازگار با اتریوم پیروی می‌کنند؛ بنابراین اتصال و یکپارچه‌سازی با هر ابزار سازگار با EVM ساده و مستقیم است.</p>

<p align="right">مثال؛ دریافت شماره آخرین بلاک</p>

**Request:**

```bash
curl -X POST https://rpc.dotone.network \
  -H "Content-Type: application/json" \
  --data '{
    "jsonrpc": "2.0",
    "method": "eth_blockNumber",
    "params": [],
    "id": 1
  }'
```

**Response:**

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": "0x1a2b3c"
}
```

***

<p align="right">مثال؛ دریافت تراکنش با استفاده از هش</p>

**Request:**

```bash
curl -X POST https://rpc.dotone.network \
  -H "Content-Type: application/json" \
  --data '{
    "jsonrpc": "2.0",
    "method": "eth_getTransactionByHash",
    "params": ["0x{transaction_hash}"],
    "id": 1
  }'
```

***

### مثال؛ دریافت موجودی کیف‌پول

**Request:**

```bash
curl -X POST https://rpc.dotone.network \
  -H "Content-Type: application/json" \
  --data '{
    "jsonrpc": "2.0",
    "method": "eth_getBalance",
    "params": ["0x{wallet_address}", "latest"],
    "id": 1
  }'
```

**Response:**

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": "0x56BC75E2D63100000"
}
```

> موجودی به واحد Wei نمایش داده می‌شود. برای تبدیل آن به DOTO، مقدار را بر `10^18` تقسیم کنید.

***

## WebSocket API

<p align="right">اتصال WebSocket امکان دریافت لحظه‌ای رویدادهای آن‌چین را بدون نیاز به ارسال درخواست‌های مداوم فراهم می‌کند.</p>

#### اتصال

```js
const ws = new WebSocket("wss://ws.dotone.network");
```

### اشتراک در هدر بلاک‌های جدید

```js
ws.send(JSON.stringify({
  "jsonrpc": "2.0",
  "method": "eth_subscribe",
  "params": ["newHeads"],
  "id": 1
}));
```

### اشتراک در تراکنش‌های در انتظار تأیید

```js
ws.send(JSON.stringify({
  "jsonrpc": "2.0",
  "method": "eth_subscribe",
  "params": ["newPendingTransactions"],
  "id": 2
}));
```

### اشتراک در لاگ‌های قرارداد

```js
ws.send(JSON.stringify({
  "jsonrpc": "2.0",
  "method": "eth_subscribe",
  "params": [
    "logs",
    {
      "address": "0x{contract_address}",
      "topics": []
    }
  ],
  "id": 3
}));
```

***

### Explorer API

<p align="right">اکسپلورر دات‌وان یک REST API برای دریافت داده‌های ایندکس‌شده بلاکچین ارائه می‌دهد؛ مناسب برای تحلیل داده، داشبوردها و ابزارهای مانیتورینگ.</p>

**Base URL:** `https://explorer.dotone.network/api`

### Endpoint های رایج

#### دریافت جزئیات تراکنش

```
GET /api?module=transaction&action=gettxinfo&txhash={tx_hash}
```

#### دریافت تاریخچه تراکنش‌های یک آدرس

```
GET /api?module=account&action=txlist&address={wallet_address}&page=1&offset=20
```

**دریافت انتقال‌های توکن برای یک آدرس**

```
GET /api?module=account&action=tokentx&address={wallet_address}
```

#### دریافت جزئیات بلاک

```
GET /api?module=block&action=getblockreward&blockno={block_number}
```

#### دریافت ABI قرارداد

```
GET /api?module=contract&action=getabi&address={contract_address}
```

***

## کتابخانه‌های پشتیبانی‌شده

<p align="right">دات‌وان با همه کتابخانه‌های استاندارد توسعه EVM سازگار است.</p>

| Library     | Language                | Usage                                   |
| ----------- | ----------------------- | --------------------------------------- |
| `ethers.js` | JavaScript / TypeScript | Wallet, contract, provider interactions |
| `web3.js`   | JavaScript              | Full Ethereum API coverage              |
| `viem`      | TypeScript              | Modern, type-safe EVM client            |
| `web3.py`   | Python                  | Backend integrations and scripts        |
| `ethers-rs` | Rust                    | High-performance applications           |

### اتصال با ethers.js

```js
import { ethers } from "ethers";

const provider = new ethers.JsonRpcProvider("https://rpc.dotone.network");

const blockNumber = await provider.getBlockNumber();
console.log("Latest block:", blockNumber);
```

### اتصال با web3.py

```python
from web3 import Web3

w3 = Web3(Web3.HTTPProvider("https://rpc.dotone.network"))

print("Connected:", w3.is_connected())
print("Latest block:", w3.eth.block_number)
```

***

## محدودیت نرخ درخواست‌ها

<p align="right">RPC Endpointهای عمومی برای توسعه، تست و استفاده سبک در دسترس هستند. برای اپلیکیشن‌های عملیاتی که به توان پردازشی پایدار نیاز دارند:</p>

<p align="right">از نود اختصاصی یا RPC خصوصی استفاده کنید.<br>در صورت امکان، درخواست‌ها را به‌صورت batch ارسال کنید.<br>برای داده‌های لحظه‌ای، به‌جای polling از اشتراک‌های WebSocket استفاده کنید.<br>برای داده‌های ثابت یا داده‌هایی که به‌ندرت تغییر می‌کنند، مانند تأیید بلاک‌ها، از cache استفاده کنید.</p>

<p align="right">برای یکپارچه‌سازی‌های پرترافیک، جهت دریافت دسترسی به زیرساخت اختصاصی با تیم دات‌وان در ارتباط باشید.</p>

***

## منابع بیشتر

* [Ethereum JSON-RPC Specification](https://ethereum.org/en/developers/docs/apis/json-rpc/)
* [Explorer](https://explorer.dotone.network/)
* [Validator Overview](https://claude.ai/validators/overview.md)

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dotone.network/documentation/dotone-smartchain-persian/developers/api-reference.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
