# API Documentation ## JSON-RPC API The DeFi Oracle Meta Mainnet provides a public JSON-RPC API for reading blockchain data. ### Endpoint - **HTTPS**: `https://rpc.d-bis.org` - **WebSocket**: `wss://rpc.d-bis.org` - **Secondary HTTPS**: `https://rpc2.d-bis.org` - **Domain**: `d-bis.org` (Cloudflare DNS/SSL) ### Authentication Currently, authentication is not required for public endpoints. API keys may be required in the future. ### Rate Limits - **Default**: 1200 requests/minute per IP - **eth_call**: 600 requests/minute - **eth_getLogs**: 300 requests/minute - **eth_getBlockByNumber**: 600 requests/minute - **eth_getTransactionReceipt**: 600 requests/minute - **eth_estimateGas**: 300 requests/minute ### Allowed Methods #### Read Operations - `eth_blockNumber` - Get current block number - `eth_call` - Execute a message call - `eth_estimateGas` - Estimate gas for a transaction - `eth_gasPrice` - Get current gas price - `eth_getBalance` - Get account balance - `eth_getBlockByHash` - Get block by hash - `eth_getBlockByNumber` - Get block by number - `eth_getBlockTransactionCountByHash` - Get transaction count in block - `eth_getBlockTransactionCountByNumber` - Get transaction count in block - `eth_getCode` - Get contract code - `eth_getLogs` - Get logs (limited to 10,000 blocks) - `eth_getStorageAt` - Get storage at address - `eth_getTransactionByHash` - Get transaction by hash - `eth_getTransactionByBlockHashAndIndex` - Get transaction by block and index - `eth_getTransactionByBlockNumberAndIndex` - Get transaction by block and index - `eth_getTransactionCount` - Get transaction count (nonce) - `eth_getTransactionReceipt` - Get transaction receipt - `eth_getUncleByBlockHashAndIndex` - Get uncle by block and index - `eth_getUncleByBlockNumberAndIndex` - Get uncle by block and index - `eth_getUncleCountByBlockHash` - Get uncle count by block hash - `eth_getUncleCountByBlockNumber` - Get uncle count by block number - `eth_protocolVersion` - Get protocol version - `eth_syncing` - Get sync status - `net_listening` - Check if node is listening - `net_peerCount` - Get peer count - `net_version` - Get network version - `web3_clientVersion` - Get client version - `web3_sha3` - Hash data with keccak256 #### Blocked Methods The following methods are blocked for public users: - `eth_sendTransaction` - Send transaction (write operation) - `eth_sendRawTransaction` - Send raw transaction (write operation) - `miner_*` - Mining operations - `admin_*` - Admin operations - `debug_*` - Debug operations (except limited trace operations) ### Request Format ```json { "jsonrpc": "2.0", "method": "eth_blockNumber", "params": [], "id": 1 } ``` ### Response Format ```json { "jsonrpc": "2.0", "id": 1, "result": "0x1234" } ``` ### Error Format ```json { "jsonrpc": "2.0", "id": 1, "error": { "code": -32000, "message": "execution reverted" } } ``` ## Examples ### Get Block Number ```bash curl -X POST https://rpc.d-bis.org \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "method": "eth_blockNumber", "params": [], "id": 1 }' ``` ### Get Block by Number ```bash curl -X POST https://rpc.d-bis.org \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "method": "eth_getBlockByNumber", "params": ["latest", false], "id": 1 }' ``` ### Call Contract ```bash curl -X POST https://rpc.d-bis.org \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "method": "eth_call", "params": [{ "to": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb", "data": "0x70a08231000000000000000000000000742d35Cc6634C0532925a3b844Bc9e7595f0bEb" }, "latest"], "id": 1 }' ``` ### Get Logs ```bash curl -X POST https://rpc.d-bis.org \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "method": "eth_getLogs", "params": [{ "fromBlock": "0x0", "toBlock": "latest", "address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb", "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"] }], "id": 1 }' ``` ## WebSocket API ### Connection ```javascript const ws = new WebSocket('wss://rpc.d-bis.org'); ws.onopen = () => { ws.send(JSON.stringify({ jsonrpc: "2.0", method: "eth_subscribe", params: ["newHeads"], id: 1 })); }; ws.onmessage = (event) => { const data = JSON.parse(event.data); console.log(data); }; ``` ## Chain Metadata - **ChainID**: 138 - **Network Name**: DeFi Oracle Meta Mainnet - **Native Currency**: ETH - **Block Time**: ~2 seconds - **Explorer**: https://explorer.d-bis.org ## Rate Limit Headers When rate limits are approached, the following headers are included in responses: - `X-RateLimit-Limit`: Maximum requests per minute - `X-RateLimit-Remaining`: Remaining requests in current window - `X-RateLimit-Reset`: Time when the rate limit resets ## Error Codes - `-32700`: Parse error - `-32600`: Invalid request - `-32601`: Method not found - `-32602`: Invalid params - `-32603`: Internal error - `-32000`: Execution error - `-32001`: Resource not found - `-32002`: Resource unavailable - `-32003`: Transaction rejected - `-32004`: Method not supported - `-32005`: Limit exceeded ## Support For API support, please contact the network operators or open an issue on the project repository.