# Starknet

Vamos a montar un Nodo de Starknet desde cero. Algunas consideraciones previas:

* Tenés una pc con Windows.
* Mucha paciencia.
* Ganas de leer.

## Paso 1 - Instalaciones - Linux

Vamos a instalar el subsistema de Windows para Linux, donde utilizaremos Linux Ubuntu (Ultima versión)

* Abrimos “Windows PowerShell o CMD”, vamos a buscarlo en la barra de búsqueda de Windows, y luego seleccionamos “Ejecutar como administrador”

<figure><img src="https://656770592-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLby5yTCbULbP090l6hfx%2Fuploads%2FLsyj6opUePyFweR06SWa%2Fimage.png?alt=media&#x26;token=2fd4a40e-4237-446c-881c-c7df87b4babc" alt=""><figcaption></figcaption></figure>

* En el símbolo del sistema, escribís: wsl –install y esperas a que se complete el proceso.&#x20;
  * *Nota: Para que WSL se active tenés que reiniciar tu computadora.*

## Paso 2 - Ubuntu

Abrís la aplicación de la tienda de Microsoft y buscas Ubuntu. La instalás, y una vez instalada inicias la aplicación directamente desde la tienda o buscas Ubuntu en la barra de búsqueda de Windows.

<figure><img src="https://656770592-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLby5yTCbULbP090l6hfx%2Fuploads%2FcjhrsnpLXSy87Kpwf688%2Fimage.png?alt=media&#x26;token=546694e0-1851-4b79-8f99-e512dc283f36" alt=""><figcaption></figcaption></figure>

## Paso 3 - Configuración Ubuntu

Ahora a configurar Ubuntu, solo esperas unos momentos que termine la configuración inicial y luego de abrir la app creas un nombre de usuario y una contraseña.

<figure><img src="https://656770592-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLby5yTCbULbP090l6hfx%2Fuploads%2FrJS8E601EDTlgTnN4Xln%2Fimage.png?alt=media&#x26;token=d00be2e8-2495-426d-9ac1-b02685dc0d79" alt=""><figcaption></figcaption></figure>

## Paso 4 - Instalando actualizaciones

Instalamos las últimas actualizaciones con los siguientes comandos, (ingresando la contraseña si te lo pide):&#x20;

```
sudo apt update
```

Luego:

```
sudo apt full-upgrade
```

y apretas la letra `Y` si te lo pide.

## Paso 5 - **Instalar herramientas de desarrollo en la distribución de Linux.**

Primero verificamos la versión de **Python 3** que tenemos instalada en el sistema, ingresar en terminal lo siguiente:

```
python3 –V
```

Y te va a aparecer en la terminal la versión.

<figure><img src="https://656770592-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLby5yTCbULbP090l6hfx%2Fuploads%2FNDnguUqQAns0CeP4BtYx%2Fimage.png?alt=media&#x26;token=61392931-56c8-44d2-bdb9-58b347923d9c" alt=""><figcaption></figcaption></figure>

1. Para administrar los paquetes de software para Python tenemos que instalar pip (es una herramienta que instalará y administrará los paquetes de programación que necesitamos usar más adelante):

```
sudo apt install -y python3-pip
```

2. Luego instalamos algunos paquetes y herramientas de desarrollo más para garantizar que tengamos una configuración sólida para nuestro entorno de programación:

```
sudo apt install -y build-essential libssl-dev libffi-dev python3-dev
```

3. Luego:

```
sudo apt-get install libgmp-dev
```

4. Luego

*Aclaración: fastecdsa una herramienta de Python para hacer criptografía de curva elíptica rápida, específicamente firmas digitales.*

```
pip3 install fastecdsa
```

5. Por último:

```
sudo apt-get install -y pkg-config
```

**Instalamos Rust**

Necesitamos instalar el lenguaje de programación Rust y sus herramientas, ya que el nodo[@equilibrium\_co](https://x.com/equilibrium_co) está integrado en Rust:

```
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```

* Por si hay algo desinstalado en el paso anterior, ejecutá:

```
sudo apt install cargo
```

Y actualizá Rust a la última versión:

```
rustup update stable
```

## Paso 6 - Clonar el repositorio github de pathfinder.&#x20;

En esta parte empezamos a preparar el entorno para nuestro nodo.

Crea una copia local del repositorio github de pathfinder escribiendo:

```
git clone --branch v0.1.2-alpha https://github.com/eqlabs/pathfinder
```

Reemplaza v0.1.2-alpha con una versión más nueva si existe. Lo comprobás visitando:

<https://github.com/eqlabs/pathfinder/tags>

{% hint style="info" %}
La terminal arrojará lo siguiente: **'detached HEAD' state**\
\
No te preocupes por eso, simplemente significa que no puede afectar el desarrollo activo del código pionero.
{% endhint %}

<figure><img src="https://656770592-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLby5yTCbULbP090l6hfx%2Fuploads%2FK1FrbjhbJ4QEybqw5Deh%2Fimage.png?alt=media&#x26;token=a2b9ebcc-42b4-4bca-b10f-588b2d253b12" alt=""><figcaption></figcaption></figure>

## Paso 7 - Crear un entorno virtual para un nodo

Instalamos una herramienta que nos permitirá crear un entorno virtual en el que se ejecutará nuestro nodo:

```
sudo apt install python3.8-venv
```

Mover a la carpeta py escribiendo:

```
cd pathfinder/py
```

<figure><img src="https://656770592-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLby5yTCbULbP090l6hfx%2Fuploads%2FyzeMXLtV3iI3FmtoP1CC%2Fimage.png?alt=media&#x26;token=41b6310b-a5ef-494b-a90c-b0f3c3fa9d6c" alt=""><figcaption></figcaption></figure>

Creamos el entorno virtual llamado venv:

```
python3 -m venv .venv
```

Lo activamos:

```
source .venv/bin/activate
```

Vas a saber que está en su entorno virtual cuando ves (.venv) en el lado izquierdo de tu línea de comando:

<figure><img src="https://656770592-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLby5yTCbULbP090l6hfx%2Fuploads%2FBhjnxywI18Re1KFABE3R%2Fimage.png?alt=media&#x26;token=5acaabb7-b990-4ab8-9267-766f62116d6a" alt=""><figcaption></figcaption></figure>

Instala estas herramientas para ejecutar el nodo:

```
PIP_REQUIRE_VIRTUALENV=true pip install --upgrade pip
```

Luego:

```
PIP_REQUIRE_VIRTUALENV=true pip install -r requirements-dev.txt
```

Para ver si los pasos anteriores funcionan, ejecutas:

```
pytest
```

<figure><img src="https://656770592-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLby5yTCbULbP090l6hfx%2Fuploads%2FgKBd854drR5upEzevHSW%2Fimage.png?alt=media&#x26;token=5d521aa3-75a4-4a3a-9f53-b4493e476180" alt=""><figcaption><p>Deberias ver algo como esto</p></figcaption></figure>

## Paso 8 - Ensamblando el Nodo

Podes compilar el nodo ejecutando el siguiente comando *(Este paso llevará un poco más de tiempo que los demás (hasta 30 minutos aprox)*:&#x20;

```
cargo build --release --bin pathfinder
```

## Paso 9 - Crear una cuenta de Infura

* Entras a [https://infura.io](https://t.co/jw1oVxRWlp) y te registrás.
* En tu tablero, haces clic en "Conectarse a la red [#Ethereum](https://x.com/hashtag/Ethereum?src=hashtag_click) en segundos"

<figure><img src="https://656770592-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLby5yTCbULbP090l6hfx%2Fuploads%2FLXzdGaGIpKFGZsLFNsbR%2Fimage.png?alt=media&#x26;token=830c6d3c-29b5-4e55-9e1a-8d6b7d3e613a" alt=""><figcaption></figcaption></figure>

* Creas un nuevo proyecto y dale un nombre.
* Dentro del tablero, haces clic en Configuración

<figure><img src="https://656770592-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLby5yTCbULbP090l6hfx%2Fuploads%2FHHvtIi0GW19VDqRbTqts%2Fimage.png?alt=media&#x26;token=ceb2dc44-c5f4-42be-9779-6f4ca4244518" alt=""><figcaption></figcaption></figure>

* En el panel de configuración podrá ver los puntos finales.
* Copias el https
* En esta etapa, tenés que decidir en qué red [#Ethereum](https://x.com/hashtag/Ethereum?src=hashtag_click) ejecutas su nodo. Aquí nosotros elegimos Mainnet.
* Si el punto final elegido está en la red principal, se ejecutará en [#StarkNetMainnet](https://x.com/hashtag/StarkNetMainnet?src=hashtag_click) .

## Paso 10 - Ejecutar el Nodo

Como paso final queda → ejecutar el nodo en la Capa 2

Podes probar la ejecución de tu nodo escribiendo (R*eemplazar xxxxx con su número de End Point de Infura*):

```
cargo run --release --bin pathfinder -- --ethereum.url https://mainnet.infura.io/v3/xxxxx
```

## Comentarios Finales

No todo es color de rosas y pueden aparecer problemas en el camino. Cualquier consulta siempre va a haber alguien con ganas de ayudar en el Club de Nodos!

\
**Haz tus preguntas aquí ->** [**Club de Nodos**](https://t.me/SEED_Nodes)
