|
1 | 1 | --- |
2 | | -title: "Error Codes" |
| 2 | +title: "SVM Error Codes" |
3 | 3 | description: >- |
4 | 4 | Reference guide for Express Relay error codes and troubleshooting common issues. |
5 | 5 | --- |
6 | 6 |
|
7 | | -# Error Codes |
8 | | - |
9 | | -This page provides a reference for common error codes you may encounter when integrating with Express Relay, along with explanations and suggested solutions. |
10 | | - |
11 | | -## HTTP API Errors |
12 | | - |
13 | | -### 400 Bad Request |
14 | | - |
15 | | -**Invalid chain_id** |
16 | | - |
17 | | -- **Error:** Chain ID is not supported |
18 | | -- **Solution:** Ensure you're using a supported chain ID (e.g., "solana", "development-solana") |
19 | | - |
20 | | -**Invalid transaction format** |
21 | | - |
22 | | -- **Error:** Transaction data is not properly encoded |
23 | | -- **Solution:** Ensure transaction is base64 encoded and properly formatted |
24 | | - |
25 | | -**Missing required fields** |
26 | | - |
27 | | -- **Error:** Required fields are missing from the request |
28 | | -- **Solution:** Check that all required parameters are included in your request |
29 | | - |
30 | | -### 401 Unauthorized |
31 | | - |
32 | | -**Invalid authentication** |
33 | | - |
34 | | -- **Error:** Authentication credentials are invalid or missing |
35 | | -- **Solution:** Verify your API credentials and authentication headers |
36 | | - |
37 | | -### 404 Not Found |
38 | | - |
39 | | -**Opportunity not found** |
40 | | - |
41 | | -- **Error:** The requested opportunity does not exist |
42 | | -- **Solution:** Check that the opportunity ID is correct and the opportunity hasn't expired |
43 | | - |
44 | | -### 429 Too Many Requests |
45 | | - |
46 | | -**Rate limit exceeded** |
47 | | - |
48 | | -- **Error:** Too many requests sent in a short time period |
49 | | -- **Solution:** Implement exponential backoff and respect rate limits |
50 | | - |
51 | | -### 500 Internal Server Error |
52 | | - |
53 | | -**Server error** |
54 | | - |
55 | | -- **Error:** Internal server error occurred |
56 | | -- **Solution:** Retry the request after a brief delay. If the issue persists, contact support |
57 | | - |
58 | | -## WebSocket Errors |
59 | | - |
60 | | -### Connection Errors |
61 | | - |
62 | | -**Connection failed** |
63 | | - |
64 | | -- **Error:** Unable to establish WebSocket connection |
65 | | -- **Solution:** Check network connectivity and WebSocket endpoint URL |
66 | | - |
67 | | -**Authentication failed** |
68 | | - |
69 | | -- **Error:** WebSocket authentication failed |
70 | | -- **Solution:** Verify authentication credentials for WebSocket connection |
71 | | - |
72 | | -### Subscription Errors |
73 | | - |
74 | | -**Invalid subscription** |
75 | | - |
76 | | -- **Error:** Subscription parameters are invalid |
77 | | -- **Solution:** Check that chain_ids array contains valid chain identifiers |
78 | | - |
79 | | -**Subscription limit exceeded** |
80 | | - |
81 | | -- **Error:** Too many active subscriptions |
82 | | -- **Solution:** Unsubscribe from unused chains before subscribing to new ones |
83 | | - |
84 | | -## Transaction Errors |
85 | | - |
86 | | -### Bid Submission Errors |
87 | | - |
88 | | -**Insufficient balance** |
89 | | - |
90 | | -- **Error:** Insufficient funds to cover bid amount |
91 | | -- **Solution:** Ensure wallet has sufficient balance for the bid amount plus transaction fees |
92 | | - |
93 | | -**Invalid bid amount** |
94 | | - |
95 | | -- **Error:** Bid amount is below minimum or above maximum |
96 | | -- **Solution:** Check bid amount constraints for the specific opportunity |
97 | | - |
98 | | -**Permission denied** |
99 | | - |
100 | | -- **Error:** Not authorized to submit bid for this opportunity |
101 | | -- **Solution:** Verify permission key and ensure proper authorization |
102 | | - |
103 | | -### On-Chain Execution Errors |
104 | | - |
105 | | -**Transaction failed** |
106 | | - |
107 | | -- **Error:** Transaction execution failed on-chain |
108 | | -- **Solution:** Check transaction logs for specific failure reasons |
109 | | - |
110 | | -**Transaction expired** |
111 | | - |
112 | | -- **Error:** Transaction expired before execution |
113 | | -- **Solution:** Submit bids with sufficient time before deadline |
114 | | - |
115 | | -**Insufficient gas/compute** |
116 | | - |
117 | | -- **Error:** Transaction ran out of gas or compute units |
118 | | -- **Solution:** Increase gas limit or compute unit allocation |
119 | | - |
120 | | -## SDK-Specific Errors |
121 | | - |
122 | | -### JavaScript SDK Errors |
123 | | - |
124 | | -**Network timeout** |
125 | | - |
126 | | -- **Error:** Request timed out |
127 | | -- **Solution:** Increase timeout configuration or check network connectivity |
128 | | - |
129 | | -**Invalid configuration** |
130 | | - |
131 | | -- **Error:** SDK configuration is invalid |
132 | | -- **Solution:** Verify baseUrl and other configuration parameters |
133 | | - |
134 | | -### Python SDK Errors |
135 | | - |
136 | | -**Connection error** |
137 | | - |
138 | | -- **Error:** Failed to connect to Express Relay server |
139 | | -- **Solution:** Check network connectivity and server endpoint |
140 | | - |
141 | | -**Serialization error** |
142 | | - |
143 | | -- **Error:** Failed to serialize/deserialize data |
144 | | -- **Solution:** Ensure data types match expected format |
145 | | - |
146 | | -## Troubleshooting Tips |
147 | | - |
148 | | -### General Guidelines |
149 | | - |
150 | | -1. **Check network connectivity** - Ensure your application can reach Express Relay endpoints |
151 | | -2. **Verify parameters** - Double-check all request parameters for correct format and values |
152 | | -3. **Monitor rate limits** - Implement proper rate limiting to avoid 429 errors |
153 | | -4. **Handle timeouts** - Implement retry logic with exponential backoff |
154 | | -5. **Check logs** - Review both client and server logs for detailed error information |
155 | | - |
156 | | -### Getting Help |
157 | | - |
158 | | -If you encounter persistent issues: |
159 | | - |
160 | | -1. Check the [API documentation](https://per-mainnet.dourolabs.app/docs) for detailed endpoint specifications |
161 | | -2. Review example implementations in the SDK repositories |
162 | | -3. Join the community Discord for support and discussion |
163 | | -4. Contact technical support with detailed error information and reproduction steps |
164 | | - |
165 | | -### Common Patterns |
166 | | - |
167 | | -**Retry Logic Example** |
168 | | - |
169 | | -```typescript |
170 | | -const maxRetries = 3; |
171 | | -let retryCount = 0; |
172 | | - |
173 | | -while (retryCount < maxRetries) { |
174 | | - try { |
175 | | - const result = await client.submitBid(bid); |
176 | | - return result; |
177 | | - } catch (error) { |
178 | | - retryCount++; |
179 | | - if (retryCount === maxRetries) { |
180 | | - throw error; |
181 | | - } |
182 | | - await new Promise((resolve) => setTimeout(resolve, 1000 * retryCount)); |
183 | | - } |
184 | | -} |
185 | | -``` |
186 | | - |
187 | | -**Error Handling Example** |
188 | | - |
189 | | -```typescript |
190 | | -try { |
191 | | - const opportunities = await client.getOpportunities(); |
192 | | -} catch (error) { |
193 | | - if (error.status === 429) { |
194 | | - // Rate limited - wait and retry |
195 | | - await new Promise((resolve) => setTimeout(resolve, 5000)); |
196 | | - } else if (error.status === 500) { |
197 | | - // Server error - log and alert |
198 | | - console.error("Server error:", error); |
199 | | - } else { |
200 | | - // Other errors - handle appropriately |
201 | | - console.error("Request failed:", error); |
202 | | - } |
203 | | -} |
204 | | -``` |
| 7 | +The following table lists the error codes and their explanations for the ExpressRelay programs. They can be used to identify the cause of a failed transaction or bid. |
| 8 | + |
| 9 | +## ExpressRelay |
| 10 | + |
| 11 | +| Error Code | Name | Description | |
| 12 | +|------------|------|-------------| |
| 13 | +| 6000 | `InvalidPermissionPda` | The permission PDA is invalid | |
| 14 | +| 6001 | `InvalidPermissionKeypair` | The permission keypair is invalid | |
| 15 | +| 6002 | `InvalidRouter` | The router is invalid | |
| 16 | +| 6003 | `DeadlineExceeded` | The bid deadline has been exceeded | |
| 17 | +| 6004 | `InsufficientFee` | The fee is insufficient | |
| 18 | +| 6005 | `InvalidChainId` | The chain ID is invalid | |
| 19 | +| 6006 | `InvalidFeeReceiver` | The fee receiver is invalid | |
| 20 | +| 6007 | `InvalidFeePayer` | The fee payer is invalid | |
| 21 | +| 6008 | `InvalidRelayerSigner` | The relayer signer is invalid | |
| 22 | +| 6009 | `RouterExecutionFailed` | Router execution failed | |
| 23 | +| 6010 | `BidAmountTooLow` | The bid amount is too low | |
| 24 | +| 6011 | `InvalidBidAmount` | The bid amount is invalid | |
| 25 | +| 6012 | `PermissionAccountNotWritable` | The permission account is not writable | |
| 26 | +| 6013 | `InvalidDestination` | The destination is invalid | |
| 27 | +| 6014 | `InvalidMetadata` | The metadata is invalid | |
| 28 | +| 6015 | `InvalidConfigPda` | The config PDA is invalid | |
| 29 | +| 6016 | `InvalidAdmin` | The admin is invalid | |
| 30 | +| 6017 | `FeeSplitOutOfRange` | The fee split is out of range | |
| 31 | +| 6018 | `MaxBidAmountLessThanMinBidAmount` | The maximum bid amount is less than the minimum bid amount | |
0 commit comments