DEV Community

Cover image for Tu primer Programa en Solana
Ahmed Castro
Ahmed Castro

Posted on

Tu primer Programa en Solana

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.

Dependencias

Tienen que tener instaladado NodeJS, les recomiendo instalarlo vía NVM si trabajan en Linux. Tambien Yarn que les recomiendo instalar via NPM. Y finalmente Rust y Solana CLI.

Estos son los comandos en Linux:

# 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
Enter fullscreen mode Exit fullscreen mode

1. Descargamos el proyecto de ejemplo

Este es una versión reducida del Hola Mundo oficial de Solana.

git clone https://github.com/FilosofiaCodigo/SolanaHolaMundo
cd SolanaHolaMundo
Enter fullscreen mode Exit fullscreen mode

2. Nos preparamos para lanzar

Nos conectamos al devnet y conseguimos fondos desde el faucet.

solana config set --url https://api.devnet.solana.com
solana-keygen new --force
solana airdrop 5 
Enter fullscreen mode Exit fullscreen mode

3. Lanzamos

cargo build-bpf --bpf-out-dir=dist/program
solana program deploy dist/program/helloworld.so
Enter fullscreen mode Exit fullscreen mode

4. Interactuamos con el programa

cd client
yarn
yarn start
Enter fullscreen mode Exit fullscreen mode

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:

greeting_account.counter += 1;
Enter fullscreen mode Exit fullscreen mode

Por esto:

let my_param = u32::from(_instruction_data[0]);
greeting_account.counter += my_param;
Enter fullscreen mode Exit fullscreen mode

Ahora relanzamos el programa.

cd ..
cargo build-bpf --bpf-out-dir=dist/program
solana program deploy dist/program/helloworld.so
Enter fullscreen mode Exit fullscreen mode

client/src/hello_world.ts

Reemplazamos esto:

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

Por esto:

const instruction = new TransactionInstruction({
  keys: [{pubkey: greetedPubkey, isSigner: false, isWritable: true}],
  programId,
  data: Buffer.from([10]),
});
Enter fullscreen mode Exit fullscreen mode

Y volvemos a ejecutar el cliente.

cd client
yarn start
Enter fullscreen mode Exit fullscreen mode

¡Gracias por ver este tutorial!

Sígueme en dev.to y en Youtube para todo lo relacionado al desarrollo en Blockchain en Español.

Discussion (2)

Collapse
evancitoo profile image
Evann009

hola soy un nub aprendiendo, porfa alguien me podría ayudar? he instalado rust en mi windows por exe como otro en youtube me recomendó pero no aparece sin pongo rust --version en cmd ni en node. he probado mi vs code y si tiene rust. pero no me intala solana cli sale : C:\WINDOWS\system32>curl release.solana.com/v1.8.5/solana-i... --output C:\solana-install-tmp\solana-install-init.exe --create-dirs
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (35) schannel: next InitializeSecurityContext failed: Unknown error (0x80092012) - La función de revocación no puede comprobar la revocación para el certificado.

Collapse
sanchezdario profile image
SanchezDario

Hola, estás usando el WSL?te paso un video de ejemplo sobre la instalación.
youtube.com/watch?v=gm-Kym2iqss