# 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 %}
