Troubleshooting
This guide helps you diagnose and resolve common issues when working with Shield.
Transaction Submission Issues
"Fee not paid to Shield" Error
{
"result": null,
"error": {
"code": -32001,
"message": "No output to Shield payment address detected"
},
"id": "1"
}
Possible Causes:
- No output to Shield payment address
- Payment sent to incorrect Shield address
- Multiple Shield outputs in transaction
Solutions:
-
Verify you're using the current Shield payment address from /info
-
Ensure your transaction includes an output to this address
-
Check that you're including only one Shield payment output
-
Verify the address is exactly correct (including case and checksum)
"Transaction decode failed" Error
{
"result": null,
"error": {
"code": -32000,
"message": "Unable to decode the transaction"
},
"id": "1"
}
Possible Causes:
- Malformed transaction hex
- Incomplete transaction data
- Encoding issues
Solutions:
- Verify the transaction is correctly serialized
- Check for truncation in the hex string
- Ensure the transaction is properly signed
- Try re-serializing the transaction
Transaction Accepted but Not Appearing in Blockchain
Possible Causes:
- Low fee rate relative to network congestion
- Mining pool policy restrictions
- Transient network issues
Solutions:
- Wait longer - Shield transactions bypass the mempool but still depend on miners
- Try submitting a new transaction with a higher fee rate
- Check if the transaction has dependencies that aren't confirmed
- Verify the transaction doesn't conflict with chain or pool policies
API Connection Issues
Cannot Connect to Shield API
Possible Causes:
- Network connectivity issues
- DNS resolution problems
- SSL/TLS errors
Solutions:
- Check your internet connection
- Verify DNS resolution for
shield.rebarlabs.io
- Ensure your client supports TLS 1.2 or higher
- Try connecting from a different network
Rate Limit Exceeded Errors
HTTP/1.1 429 Too Many Requests
Possible Causes:
- Too many requests in a short time period
- Shared IP address with other users
- No backoff strategy implemented
Solutions:
- Implement rate limiting in your client code
- Add exponential backoff for retries
- Cache responses where appropriate (e.g.,
/info
endpoint) - Contact support for enterprise rate limits if needed
Timeouts on API Requests
Possible Causes:
- Shield service under high load
- Network latency issues
- Client timeout settings too aggressive
Solutions:
- Increase client-side timeout values
- Implement retry logic with backoff
- Check for any network issues between your client and Shield
- Try a different network connection if possible
Transaction Confirmation Issues
Transaction Not Confirming
Possible Causes:
- Fee rate too low for current network conditions
- Transaction has dependencies that aren't confirmed
- Mining pool policies rejecting the transaction
Solutions:
- Wait longer - Bitcoin confirmation times can vary significantly
- If urgent, create a replacement transaction with higher fees
- Check block explorers to see if transaction is visible (may indicate it was broadcast to network)
- Verify transaction doesn't have any policy violations
Transaction Shows in Block Explorer but Status Unclear
Possible Causes:
- Transaction confirmed but client hasn't updated
- Temporary chain reorganization
- Block explorer data lag
Solutions:
- Check multiple block explorers
- Wait for additional confirmations
- Verify the transaction in your own Bitcoin node if available
- Check transaction details match what you submitted
Fee and Payment Issues
Unexpected Fee Amounts
Possible Causes:
- Fee calculation error
- Transaction size estimated incorrectly
- Fee rates changed between fetching info and submission
Solutions:
- Re-verify your fee calculation logic
- Fetch updated fee information before each transaction
- Check if you're accounting for all transaction parts in size calculation
- Consider adding a small buffer to calculated fees
Cannot Determine Correct Shield Payment Address
Possible Causes:
- Not fetching from
/info
endpoint - Caching old address information
- Network request failures
Solutions:
- Always fetch current payment information from /info before each transaction
- Implement proper error handling for API requests
- Set reasonable cache TTLs if caching payment information
- Log the address being used for debugging
Verify Transaction State
If your transaction has been confirmed, you can check its status with Bitcoin block explorers: