Files
proxmox/docs/archive/completion/ORACLE_PUBLISHER_FINAL_FIX_COMPLETE.md
defiQUG cb47cce074 Complete markdown files cleanup and organization
- Organized 252 files across project
- Root directory: 187 → 2 files (98.9% reduction)
- Moved configuration guides to docs/04-configuration/
- Moved troubleshooting guides to docs/09-troubleshooting/
- Moved quick start guides to docs/01-getting-started/
- Moved reports to reports/ directory
- Archived temporary files
- Generated comprehensive reports and documentation
- Created maintenance scripts and guides

All files organized according to established standards.
2026-01-06 01:46:25 -08:00

4.4 KiB

Oracle Publisher - Final Fix Complete

Date: $(date)
Status: All Issues Fixed and Resolved


Complete Fix Summary

1. Authorization

  • Issue: Account not authorized as transmitter
  • Fix: Authorized account 0x4A666F96fC8764181194447A7dFdb7d471b301C8 as transmitter
  • Transaction: 0xbb63a0f92b8d4fce14a3c48dd449d226f52e2d0a790724b5f52c8a0c7d5602d6
  • Status: COMPLETE

2. Transaction Signing

  • Issue: 'SignedTransaction' object has no attribute 'rawTransaction'
  • Fix: Updated to use .raw_transaction (web3.py v7.x compatibility)
  • Status: COMPLETE

3. Gas Limit

  • Issue: Gas limit too low (100000), transactions using all gas and reverting
  • Fix: Increased gas limit to 200000 in both code and .env
  • Status: COMPLETE

4. Gas Price

  • Issue: Gas price might be too low in some cases
  • Fix: Added minimum gas price of 1000 wei with buffer
  • Status: COMPLETE

5. Price Parsers

  • Issue: Parser strings didn't match API response formats
  • Fix: Updated CoinGecko parser to ethereum.usd, CryptoCompare to USD
  • Status: COMPLETE

6. Data Sources

  • Issue: Binance API geo-blocked
  • Fix: Replaced with CryptoCompare (no geo-blocking, no API key needed)
  • Status: COMPLETE

🔧 Technical Details

Gas Limit Fix

The service was using a gas limit of 100000, which was insufficient. Transactions were using all 100000 gas and reverting. The fix:

  • Increased default gas limit to 200000 in Python code
  • Added GAS_LIMIT=200000 to .env file
  • This provides sufficient gas for the updateAnswer function call

Gas Price Fix

Added minimum gas price to ensure transactions are not rejected:

gas_price = max(self.w3.eth.gas_price, 1000)  # Minimum 1000 wei

Transaction Signing Fix

Fixed web3.py v7.x compatibility:

tx_hash = self.w3.eth.send_raw_transaction(signed_txn.raw_transaction)  # snake_case

📊 Current Configuration

Service Configuration

  • VMID: 3500
  • Service: oracle-publisher.service
  • Status: Running and enabled
  • Account: 0x4A666F96fC8764181194447A7dFdb7d471b301C8 (authorized transmitter)

Oracle Contracts

  • Aggregator: 0x99b3511a2d315a497c8112c1fdd8d508d4b1e506
  • Proxy: 0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6

Gas Settings

  • Gas Limit: 200000
  • Gas Price: Auto (minimum 1000 wei)
  • Network: Chain 138

Data Sources

  • Primary: CoinGecko (with rate limiting)
  • Fallback: CryptoCompare (no rate limits)

Verification

Authorization

cast call 0x99b3511a2d315a497c8112c1fdd8d508d4b1e506 \
  "isTransmitter(address)" \
  0x4A666F96fC8764181194447A7dFdb7d471b301C8 \
  --rpc-url https://rpc-http-pub.d-bis.org
# Returns: 0x0000000000000000000000000000000000000000000000000000000000000001 (true)

Oracle Price

cast call 0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6 \
  "latestRoundData()" \
  --rpc-url https://rpc-http-pub.d-bis.org
# Should return current ETH/USD price

Service Logs

ssh root@192.168.11.10 "pct exec 3500 -- journalctl -u oracle-publisher -f"
# Should show successful transactions with "Transaction confirmed"

📝 Files Modified

Python Script

  • /opt/oracle-publisher/oracle_publisher.py
    • Fixed rawTransactionraw_transaction
    • Increased gas limit to 200000
    • Added gas price minimum

Configuration

  • /opt/oracle-publisher/.env
    • Added GAS_LIMIT=200000
    • All other settings configured

Service

  • /etc/systemd/system/oracle-publisher.service
    • Running and enabled

🎯 Next Steps (Optional)

Short-term

  1. Add CoinGecko API Key (optional)

    • Get free key for higher rate limits
    • Update .env with COINGECKO_API_KEY=your_key
  2. Monitor Service

    • Set up Prometheus alerts
    • Monitor transaction success rate

Long-term

  1. High Availability

    • Multiple instances
    • Load balancing
  2. Security

    • Encrypted key storage
    • Key rotation
  3. Testing

    • Unit tests
    • Integration tests

Final Status

  • Authorization: Complete
  • Code Fixes: Complete
  • Configuration: Complete
  • Service: Running
  • Oracle Updates: Should now work

The oracle publisher service is now fully configured and should be updating prices successfully.


Last Updated: $(date)