Tu primer Programa en Solana
Tags: blockchain, solana, rust, typescript
Published: 2021-10-08 18:19:56

---
title: Tu primer Programa en Solana
published: true
description:
tags: blockchain, solana, rust, typescript
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s0svixyy1315txgrg0n8.png
---

Solana ha demostrado que ha llegado para quedarse y por eso queremos empezar a aprender cómo trabajar en este blockchain que ha destacado por su rapidez de ejecución. En este video vamos a lanzar un "Hola mundo!" en el devnet cluster. El programa consistirá en aumentar un contador de uno en uno cada vez que se ejecute el programa. Para eso, vamos a crear un _account_ que contiene la data, un _programa_ que la opera y una _cuenta_ que ejecuta _instrucciones_ en el programa.

{% youtube fP0eGHBcX1o %}

## Dependencias

Tienen que tener instaladado [NodeJS](https://nodejs.org/es/), les recomiendo instalarlo vía [NVM](https://github.com/nvm-sh/nvm#installing-and-updating) si trabajan en Linux. Tambien [Yarn](https://classic.yarnpkg.com/lang/en/docs/install/#debian-stable) que les recomiendo instalar via NPM. Y finalmente [Rust](https://www.rust-lang.org/tools/install) y [Solana CLI](https://docs.solana.com/cli/install-solana-cli-tools).

Estos son los comandos en Linux:

```bash
# NodeJS
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# ahora reinicia tus variables de entorno
nvm install 14
nvm alias default 14

# NodeJS
npm install --global yarn
# ahora reinicia tus variables de entorno

# Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# ahora reinicia tus variables de entorno

# Solana CLI
sh -c "$(curl -sSfL https://release.solana.com/v1.8.0/install)"
# ahora reinicia tus variables de entorno
```

## 1. Descargamos el proyecto de ejemplo

Este es una versión reducida del [Hola Mundo oficial de Solana](https://github.com/solana-labs/example-helloworld).

```bash
git clone https://github.com/FilosofiaCodigo/SolanaHolaMundo
cd SolanaHolaMundo
```

## 2. Nos preparamos para lanzar

Nos conectamos al devnet y conseguimos fondos desde el faucet.

```bash
solana config set --url https://api.devnet.solana.com
solana-keygen new --force
solana airdrop 5 
```

## 3. Lanzamos

```bash
cargo build-bpf --bpf-out-dir=dist/program
solana program deploy dist/program/helloworld.so
```

## 4. Interactuamos con el programa

```bash
cd client
yarn
yarn start
```

## 5. Ahora experimentemos un poco

Para ambientarnos al proceso de desarrollo vamos a probar modificar el código del programa, realanzarlo y modificar el frontend para acoplarse a los cambios.

`src/lib.rs`

Reemplazamos esto:
```ts
greeting_account.counter += 1;
```

Por esto:
```ts
let my_param = u32::from(_instruction_data[0]);
greeting_account.counter += my_param;
```

Ahora relanzamos el programa.

```bash
cd ..
cargo build-bpf --bpf-out-dir=dist/program
solana program deploy dist/program/helloworld.so
```

`client/src/hello_world.ts`

Reemplazamos esto:
```rust
const instruction = new TransactionInstruction({
  keys: [{pubkey: greetedPubkey, isSigner: false, isWritable: true}],
  programId,
  data: Buffer.alloc(0), // All instructions are hellos
});
```

Por esto:
```rust
const instruction = new TransactionInstruction({
  keys: [{pubkey: greetedPubkey, isSigner: false, isWritable: true}],
  programId,
  data: Buffer.from([10]),
});
```

Y volvemos a ejecutar el cliente.

```bash
cd client
yarn start
```

**¡Gracias por ver este tutorial!**

Sígueme en dev.to y en [Youtube](https://www.youtube.com/channel/UCNRB4tgwp09z4391JRjEsRA) para todo lo relacionado al desarrollo en Blockchain en Español.