- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control. - Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities. - Created .gitmodules to include OpenZeppelin contracts as a submodule. - Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment. - Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks. - Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring. - Created scripts for resource import and usage validation across non-US regions. - Added tests for CCIP error handling and integration to ensure robust functionality. - Included various new files and directories for the orchestration portal and deployment scripts.
222 lines
5.3 KiB
Markdown
222 lines
5.3 KiB
Markdown
# 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.
|
|
|