Tu primer Programa en Solana

Ahmed Castro - Oct 8 '21 - - Dev Community

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.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player