# General Requirements

| Dependency                                  | More Information                                               |
| ------------------------------------------- | -------------------------------------------------------------- |
| [Erlang/OTP 23](https://www.erlang.org/)    | <https://elixir-lang.org/install.html>                         |
| [Elixir (1.11.x)](https://elixir-lang.org/) | <https://elixir-lang.org/install.html>                         |
| [Node.js 14.x.x](https://nodejs.org/en/)    | <https://nodejs.org/en/download/>                              |
| [Zcash full node](https://z.cash/)          | <https://zcash.readthedocs.io/en/latest/rtd_pages/zcashd.html> |
| [Docker](https://www.docker.com/)           | <https://www.docker.com/>                                      |

You have run the `zcashd` node with some additional additional features enabled that will allow it to support the   explorer.  A block-explorer-enabled `zcashd` can perform all the functions of a normal `zcashd` node but typically will not be used as a wallet (will contain no private keys).

&#x20;additional flags to enable on your  `zcash.conf` file

```
ztxindex=1
experimentalfeatures=1
insightexplorer=1
paymentdisclosure=1
```

Additionally make sure `rpcuser` , `rpcpassword`\
and `rpcport` are configured , the same should me made available in the explorer config.

```
rpcuser=<username>
rpcpassword=<password>
rpcport=83232
```

to know more about these features, please refer to <https://zcash.readthedocs.io/en/latest/rtd_pages/insight_explorer.html><https://github.com/zcash/zcash/blob/master/doc/payment-disclosure.md>

If you are running the explorer as Docker container or on a different server you may have to\
configure `rpcallowip`

\
Do note that using `rpcallowip` will have severe security implications. Please refer to <https://zcash.readthedocs.io/en/latest/rtd_pages/zcash_conf_guide.html>\
\
**Elixir dependencies:**

`mix.exs`&#x20;

```
{:phoenix, "~> 1.5.8"},
{:phoenix_ecto, "~> 4.1"},
{:ecto_sql, "~> 3.4"},
{:postgrex, ">= 0.0.0"},
{:ecto_psql_extras, "~> 0.2"},
{:phoenix_html, "~> 2.11"},
{:phoenix_live_reload, "~> 1.2", only: :dev},
{:phoenix_live_dashboard, "~> 0.4"},
{:telemetry_metrics, "~> 0.4"},
{:telemetry_poller, "~> 0.4"},
{:gettext, "~> 0.11"},
{:jason, "~> 1.0"},
{:plug_cowboy, "~> 2.0"},
{:httpoison, "~> 1.8"},
{:poison, "~> 3.1"},
{:observer_cli, "~> 1.6"},
{:cachex, "~> 3.3"},
{:phoenix_live_view, "~> 0.15.4"},
{:floki, ">= 0.27.0", only: :test},
{:zcashex, github: "nighthawk-apps/zcashex"},
{:timex, "~> 3.0"},
{:sizeable, "~> 1.0"},
{:eqrcode, "~> 0.1.8"},
{:contex, "~> 0.3.0"},
{:muontrap, "~> 0.6.1"}
```

Frontend dependencies ( managed using npm )

check `assets/package.json`

```
"dependencies": {
    "@fontsource/inter": "^4.5.0",
    "alpinejs": "^2.8.2",
    "phoenix": "file:../deps/phoenix",
    "phoenix_html": "file:../deps/phoenix_html",
    "phoenix_live_view": "file:../deps/phoenix_live_view"
  },
  "devDependencies": {
    "@babel/core": "^7.0.0",
    "@babel/preset-env": "^7.0.0",
    "@tailwindcss/forms": "^0.3.3",
    "autoprefixer": "^10.2.5",
    "babel-loader": "^8.0.0",
    "copy-webpack-plugin": "^5.1.1",
    "css-loader": "^3.4.2",
    "file-loader": "^6.2.0",
    "hard-source-webpack-plugin": "^0.13.1",
    "mini-css-extract-plugin": "^0.9.0",
    "node-sass": "^4.13.1",
    "optimize-css-assets-webpack-plugin": "^5.0.1",
    "postcss": "^8.2.8",
    "postcss-loader": "^4.2.0",
    "sass-loader": "^8.0.2",
    "tailwindcss": "^2.2.7",
    "terser-webpack-plugin": "^2.3.2",
    "webpack": "^4.41.5",
    "webpack-cli": "^3.3.2"
  }
```

**Additional requirement for Viewing Key Support.**

Viewing Key feature is powered by adityapk00's [**zecwallet-light-cli**](https://github.com/adityapk00/zecwallet-light-cli)**.**

we spin up a Docker container that runs zecwallet-light-cli, pull the logs from the container and broadcast the logs and Tx info  ( after some processing )  to the explorer. \
The container will be deleted after the transactions are sent to the explorer.

{% hint style="info" %}
this feature has rate limits and currently it's hardcoded to 10 Concurrent VK imports.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://nighthawkapps.gitbook.io/zcash-explorer/about/general-requirements.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
