# Submit Task

Core AVS logic consists of the atomic units of work called [Tasks](https://docs.othentic.xyz/main/learn/core-concepts/tasks).

We will now run the operator node software and submit the first task in your example AVS, which fetches the price of ETH from Binance, verifies it, and posts the result on-chain.

## Prerequisites

1. [Othentic CLI installed](https://docs.othentic.xyz/main/welcome/getting-started/install-othentic-cli)
2. [AVS contracts deployed](https://docs.othentic.xyz/main/welcome/getting-started/deploy-example-avs)
3. [Operators set up](https://docs.othentic.xyz/main/welcome/getting-started/prepare-operator-accounts)
4. [Docker Engine installed](https://docs.docker.com/engine/install/), including `docker-compose`

***

{% stepper %}
{% step %}

### Verify docker installation

Run:

```sh
docker compose version # Should output: Docker Compose version [...]
```

{% endstep %}

{% step %}

### Verify environment variables setup

Make sure your `.env` file exists and includes all the variables as per the [`.env.example`](https://github.com/Othentic-Labs/simple-price-oracle-avs-example/blob/main/.env.example) in the repo.
{% endstep %}

{% step %}

### Build the docker setup

From the root of your example AVS directory, run:

```
docker compose build --no-cache
```

This command will build the operator node software, which consists of multiple services defined in the `docker-compose.yml` file.
{% endstep %}

{% step %}

### Run Operator Nodes

Run the command to run the node software:

```bash
docker compose up
```

{% endstep %}

{% step %}

### Execute Task

In a new terminal session, run the following command:

{% tabs %}
{% tab title="JS/ Go" %}

<pre class="language-bash"><code class="lang-bash"><strong>curl -X POST http://localhost:4003/task/execute
</strong></code></pre>

{% endtab %}

{% tab title="Rust" %}

```bash
curl -X POST http://localhost:4003/task/execute -H "Content-Type: application/json" -d "{}"
```

{% endtab %}
{% endtabs %}

The above command will trigger task execution by the **Performer Node** and validation by all three **Attester Nodes,** and finally onchain submission by the **Aggregator Node**.
{% endstep %}

{% step %}

### Verify Successful Execution and Submission

To find the transaction hash, check the Docker container logs or visit the **AttestationCenter** contract and look for `submitTask` transactions.

Look for the following logs emitted by the **aggregator** container:

```
Task with proofOfTask: <proofOfTask> has been approved and submitted, on chain 84532, tx: <txHash>
```

{% endstep %}
{% endstepper %}

{% hint style="success" %}

## Success!

Your AVS is completed and fully functional.
{% endhint %}

Next, explore how to extend AVS functionality beyond the basics.

### Next Steps&#x20;

* **Explore the** [**Quickstart**](https://github.com/Othentic-Labs/simple-price-oracle-avs-example) **repository**
* **Extend** [**Execution**](https://docs.othentic.xyz/main/learn/core-concepts/execution-service) **and** [**Validation**](https://docs.othentic.xyz/main/learn/core-concepts/validation-service) **service logic**\
  Implement your own business logic and use the AVS you just deployed as scaffolding.
* **Use the CLI Command Reference**\
  Refer to the [CLI Command Reference](https://docs.othentic.xyz/main/reference/othentic-cli) for a complete list of commands.
