# Environment Variables

### OUTPUT

Ethereum ETL supports a variety of item exporters, which are classes that write items to specified destinations. To configure an item exporter, set the `OUTPUT` environment variable. You can specify multiple outputs at once using the format: \
&#x20;`OUTPUT=exporter_name://path,second_exporter://path_to_second_destination`.

Here are the item exporters available out of the box and how to set them up:

<table><thead><tr><th width="189">Exporter</th><th width="202">Configuration</th><th>Example Value</th></tr></thead><tbody><tr><td><strong>CONSOLE</strong></td><td>Output to the console</td><td><code>OUTPUT=console</code> or <code>OUTPUT=None</code></td></tr><tr><td><strong>JSON</strong></td><td>Output to a JSON file</td><td><code>OUTPUT=path_to_output.json</code></td></tr><tr><td><strong>CSV</strong></td><td>Output to a CSV file</td><td><code>OUTPUT=path_to_output.csv</code></td></tr><tr><td><strong>PROJECTS</strong></td><td>Output to Google Cloud Projects</td><td><code>OUTPUT=projects://path_to_google_cloud_project</code></td></tr><tr><td><strong>KINESIS</strong></td><td>Output to AWS Kinesis stream</td><td><code>OUTPUT=kinesis://stream_name</code></td></tr><tr><td><strong>KAFKA</strong></td><td>Output to Apache Kafka topic</td><td><code>OUTPUT=kafka://topic</code></td></tr><tr><td><strong>POSTGRES</strong></td><td>Output to PostgreSQL database</td><td><code>OUTPUT=postgresql://user:password@host:port/dbname</code></td></tr><tr><td><strong>GCS</strong></td><td>Output to Google Cloud Storage bucket</td><td><code>OUTPUT=gs://bucket_name</code></td></tr><tr><td><strong>CLICKHOUSE</strong></td><td>Output to ClickHouse database</td><td><code>OUTPUT=clickhouse+http://host:port/dbname</code></td></tr><tr><td><strong>AMQP</strong></td><td>Output to AMQP message broker</td><td><code>OUTPUT=amqp://user:password@host:port/vhost</code> or <code>OUTPUT=rabbitmq://user:password@host:port/vhost</code></td></tr><tr><td><strong>ELASTICSEARCH</strong></td><td>Output to Elasticsearch index</td><td><code>OUTPUT=elasticsearch+http://host:port/index_name</code> or <code>OUTPUT=elasticsearch+https://user:password@host:9200/index_name</code></td></tr></tbody></table>

### DATABASE

Optional, is used when Clickhouse is in OUTPUT. Specifies the name of the ClickHouse database. You can choose any name.

### PROVIDER\_URL

The URL of your RPC provider (public node, Infura, local node, etc.). `PROVIDER_URL=https://ethereum-rpc.publicnode.com`

### LAST\_SYNCED\_BLOCK\_PROVIDER

Optional, if not set, a local file will be used. The provider used to sync the last indexed block (local file, Redis, SQL database).

`LAST_SYNCED_BLOCK_PROVIDER=redis://redis:6379`

`LAST_SYNCED_BLOCK_PROVIDER=clickhouse+http://clickouse:8123/database_name`

### EXPORT\_FROM\_CLICKHOUSE

Optional. If set, the indexer will export entities from ClickHouse first and fallback to the node if necessary. Useful for indexed tokens and pools or multiple indexers.

`EXPORT_FROM_CLICKHOUSE=clickhouse+http://clickhouse-2:8123/db_same_blockchain`

### START\_BLOCK

The block number to start indexing from. It can be set as the latest block. If the block number from the `LAST_SYNCED_BLOCK_PROVIDER` is greater than `START_BLOCK`, then the last synced block will be used. Examples:

`START_BLOCK='latest' or START_BLOCK=1337`

### END\_BLOCK

(Optional) The block number to stop indexing. If not set, indexing continues indefinitely.

### ENTITY\_TYPES

A comma-separated list of entities to export

`ENTITY_TYPES=block,transaction,token_transfer`

| Entity                     | Description                                                           |
| -------------------------- | --------------------------------------------------------------------- |
| block                      | Information about each block in the blockchain.                       |
| transaction                | Data related to individual transactions.                              |
| receipt                    | Receipts for each transaction, including status and gas used.         |
| log                        | Logs generated by smart contract events during transactions.          |
| token\_transfer            | Transfers of ERC-20, ERC-721, and other tokens.                       |
| geth\_trace                | Call traces from the Geth Ethereum client.                            |
| contract                   | Information about smart contracts deployed on the blockchain.         |
| token                      | Metadata and details about tokens.                                    |
| internal\_transfer         | Internal Ether transfers within the blockchain.                       |
| token\_balance             | Balances of tokens held by addresses.                                 |
| error                      | Errors encountered during indexing.                                   |
| native\_balance            | Balances of native cryptocurrency (e.g., Ether) held by addresses.    |
| token\_transfer\_priced    | Priced transfers of tokens, including valuation.                      |
| internal\_transfer\_priced | Priced internal transfers, including valuation.                       |
| dex\_pool                  | Information about decentralized exchange (DEX) liquidity pools.       |
| enriched\_dex\_trade       | Enhanced details about DEX trades, including additional context.      |
| enriched\_transfer         | Enhanced details about token transfers, including additional context. |
