
Keeping your oracle updated ensures compatibility with the latest protocol changes, security improvements, and supported coin pairs.
The easiest way to update your oracle is to run the update script from the directory where your env_oracle file is located. By default, this is usually your home directory.
::::bash
curl -L https://moneyonchain.com/omoc_update.sh | bash
This script performs the complete update procedure automatically and is the recommended approach for most operators.
If you prefer to perform the update yourself, follow the steps below on the server where your oracle node is running.
First, pull the latest oracle image:
:::bash
docker pull moneyonchain/omoc_node:latest
Stop the currently running container:
:::bash
docker stop omoc-node
Remove the old container:
:::bash
docker rm omoc-node
Start a new container using the updated image:
:::bash
docker run -d \ --restart always \ --log-driver json-file \ --log-opt max-size=50M \ --log-opt max-file=15 \ --log-opt compress=true \ -p 5556:5556 \ --name omoc-node \ --env-file=/home/ubuntu/env_oracle \ moneyonchain/omoc_node:latest
Adjust the --env-file path if your env_oracle file is stored elsewhere.
After the container starts, verify that the oracle is operating normally by reviewing its logs:
:::bash
docker logs -f omoc-node
You should see the node connecting to the network, subscribing to coin pairs, and participating in rounds. Press Ctrl+C when you are finished viewing the logs.
Oracle nodes expose a version endpoint that reports the currently running release.
To check the version locally on the server, run:
:::bash
curl http://localhost:5556/version
Example response:
:::json
json {"version":"1.3.7.0"}
You can also access this endpoint remotely using your server's public IP address:
:::text
http://:5556/version
The /version endpoint is available in oracle releases starting from version 1.3.6.3. Earlier versions do not support this endpoint.
Introduces cost-saving improvements for price publications, including:
Adds official support for: USD/ARS and USD/COP
Security-related fixes:
Security-related fixes:
FastAPI denial-of-service mitigationGas price and RIF price source improvements:
gas priceABI copiesgas price loggingRIF price source fixesFixes gas price spikes caused by incorrect 20 Gwei announcements from RSK network nodes.
Documentation and dependency cleanup:
Adds operational endpoints:
/version returns the running oracle version/info provides additional node status informationImproves error reporting when a signing request is rejected, making it easier to identify publication conditions that are not being met.
Improves compatibility across contract versions by allowing the oracle node to use either the oracle address or the owner address when interacting with protocol contracts.
Before removing an oracle from the protocol, it must first unsubscribe from all coin pairs. This ensures the oracle is no longer assigned to participate in price publication rounds.
Go to the Oracles page in the dApp and scroll to the Coin Pairs section. Unsubscribe from each coin pair until none remain assigned to your oracle.

Once all coin pair subscriptions have been removed, navigate to the Operation section and select Remove Oracle.

After the transaction is confirmed, your oracle will be removed from the protocol and will no longer participate in oracle operations.
This section covers common issues that can prevent an oracle node from starting correctly or participating in rounds.
Start by checking the container logs. Most configuration or connectivity problems will appear there first.
:::bash
docker logs -f omoc-node
If you only want to inspect the most recent log entries, run:
:::bash
docker logs --tail 100 omoc-node
Your oracle needs access to a Rootstock RPC node to read protocol contracts and submit transactions. If the RPC node is unreachable, the oracle will not be able to read the contract registry or retrieve coin pair information.
A connection problem may appear in the logs as timeout errors similar to this:
:::text
WARNING: Error getting param from blockchain 'ORACLE_MANAGER_ADDR'
ERROR: Oracle loop Error getting coin pairs
ERROR: SchedulerSupportersLoop error getting is_ready_to_distribute
This usually means that the RPC URL configured in your environment file is not reachable from the server running the oracle.
To test RPC connectivity from your server, run:
:::bash
RPC_URL="<ROOTSTOCK_RPC_URL>"
curl -s -X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":123}' \
"$RPC_URL"
If the RPC node is reachable, it should return a JSON response with a result field containing the latest block number in hexadecimal format.
Example response:
:::json
{"jsonrpc":"2.0","id":123,"result":"0x6f8d3a"}
If there is no response, or the request times out, check that the RPC URL is correct and that your server can reach it over the network. Also verify that no firewall rule, cloud security group, or RPC provider restriction is blocking the connection.
For a more readable block number, you can use jq:
:::bash
RPC_URL="<ROOTSTOCK_RPC_URL>"
curl -s -X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":123}' \
"$RPC_URL" \
| jq -r '.result' \
| xargs printf "%d\n"
This command requires jq to be installed on the server.
Your oracle must be reachable from the internet on its configured port. By default, the oracle listens on port 5556.
From an external machine, test the connection with:
:::bash
curl http://<YOUR_SERVER_IP>:5556
A response like the following means the port is open and the oracle service is responding:
:::text
The request was not made by a selected oracle.
This message is expected. It means the oracle received the request but rejected it because it did not come from an authorized protocol caller.
If the request times out or the connection is refused, check that the Docker container is running and that the port is published correctly:
:::bash
docker ps
You should see a port mapping similar to:
:::text
0.0.0.0:5556->5556/tcp
If the container is running but the port is still unreachable, verify your server firewall and any cloud firewall or security group rules. The oracle port must allow inbound TCP traffic from the internet.