Despliega tu primer programa de Solana

Construye, despliega y prueba tu primer programa en la blockchain de Solana utilizando el framework Anchor. Esta guía te ayudará a familiarizarte más con Solana Playground y te preparará para usar Program Derived Address (PDA) y Cross Program Invocation (CPI).

Crear proyecto Anchor

  1. Abre Solana Playground en tu navegador web
  2. En el panel izquierdo, haz clic en + Create a new project
  3. Ingresa un Project name (nombre del proyecto)
  4. Selecciona Anchor (Rust) como framework
  5. Haz clic en Create

Nuevo proyectoNuevo proyecto

Se abrirá el archivo fuente src/lib.rs. Contiene una estructura llamada Initialize, que hace lo siguiente:

  • Recibe un parámetro requerido llamado data: u64
  • Crea una nueva cuenta
  • Guarda el valor de data: u64 en la nueva cuenta
  • Añade un mensaje a los registros del programa de la transacción
lib.rs
use anchor_lang::prelude::*;
// This is your program's public key and it will update
// automatically when you build the project.
declare_id!("11111111111111111111111111111111");
#[program]
mod hello_anchor {
use super::*;
pub fn initialize(ctx: Context<Initialize>, data: u64) -> Result<()> {
ctx.accounts.new_account.data = data;
msg!("Changed data to: {}!", data); // Message will show up in the tx logs
Ok(())
}
}
#[derive(Accounts)]
pub struct Initialize<'info> {
// We must specify the space in order to initialize an account.
// First 8 bytes are default account discriminator,
// next 8 bytes come from NewAccount.data being type u64.
// (u64 = 64 bits unsigned integer = 8 bytes)
#[account(
init,
payer = signer,
space = 8 + 8
)]
pub new_account: Account<'info, NewAccount>,
#[account(mut)]
pub signer: Signer<'info>,
pub system_program: Program<'info, System>,
}
#[account]
pub struct NewAccount {
data: u64
}

Compilar y desplegar el programa

  1. Compila el código del programa
Terminal
$
build

Tu ID de programa, definido en declare_id!(), ahora será actualizado.

  1. Añade SOL a tu billetera (Opcional)

Desplegar un programa requiere SOL en la cuenta on-chain del programa. Si es necesario, añade SOL a tu billetera antes de proceder al paso 3.

  1. Despliega el programa en la red
Terminal
$
deploy

Cuando se despliega, el bytecode del programa se almacena en una program account ejecutable.

Nota: Si lo prefieres, puedes usar los botones Build y Deploy en el panel izquierdo, como se muestra en la captura de pantalla a continuación.

Build and DeployBuild and Deploy

Probar el programa

  1. Abre el archivo de prueba llamado tests/anchor.test.ts. Este archivo demuestra cómo invocar la estructura initialize del programa desde el cliente.
anchor.test.ts
// No imports needed: web3, anchor, pg and more are globally available
describe("Test", () => {
it("initialize", async () => {
// Generate keypair for the new account
const newAccountKp = new web3.Keypair();
// Send transaction
const data = new BN(42);
const txHash = await pg.program.methods
.initialize(data)
.accounts({
newAccount: newAccountKp.publicKey,
signer: pg.wallet.publicKey,
systemProgram: web3.SystemProgram.programId
})
.signers([newAccountKp])
.rpc();
console.log(`Use 'solana confirm -v ${txHash}' to see the logs`);
// Confirm transaction
await pg.connection.confirmTransaction(txHash);
// Fetch the created account
const newAccount = await pg.program.account.newAccount.fetch(
newAccountKp.publicKey
);
console.log("On-chain data is:", newAccount.data.toString());
// Check whether the data on-chain is equal to local 'data'
assert(data.eq(newAccount.data));
});
});
  1. Ejecuta el archivo de prueba
Terminal
$
test
  1. Guarda el hash de la transacción (TxHash) incluido en la salida

(En el ejemplo anterior, el hash de la transacción es 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc.)

Nota: Si lo prefieres, puedes usar el botón Test en el panel izquierdo.

Ejecutar pruebaEjecutar prueba

  1. Ejecuta solana confirm -v [TxHash] para ver los registros de la transacción
Terminal
$
solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
  1. Ver los detalles de la transacción

Abre SolanaFM o Solana Explorer y busca el hash de la transacción.

Solana Explorer: Configura el cluster de red a devnet, para que coincida con el de Solana Playground.

Cerrar el programa

Cierra el programa para recuperar el SOL asignado al programa en la cadena. Para hacerlo, ejecuta solana program close [ProgramID], usando la dirección del programa almacenada en la macro declare_id!().

Terminal
$
solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r

Los programas solo pueden ser cerrados o actualizados por una cuenta con autoridad de actualización. Tu cartera de Playground automáticamente se convierte en la autoridad de actualización para cada programa cuando se despliega. Si se revoca la autoridad de actualización, el programa se vuelve inmutable.

¡Felicidades! Has construido y desplegado tu primer programa de Solana usando Anchor.

Próximos pasos

Ahora que has desplegado tu primer programa, estás listo para explorar direcciones derivadas de programas e invocación entre programas.

Is this page helpful?

Tabla de Contenidos

Editar Página
Despliega tu primer programa de Solana | Solana