Solana là một nền tảng blockchain đang phát triển nhanh chóng với mục tiêu cung cấp các ứng dụng phi tập trung với tốc độ cao, chi phí thấp cho người dùng. Một trong những tính năng chính của Solana là mô hình tài khoản đặc biệt của nó, cho phép các nhà phát triển xây dựng các ứng dụng phức tạp trên blockchain. Trong bài đăng blog này, chúng ta sẽ khám phá Program Account Solana  và cách nó hoạt động.

I. Program Account trong định nghĩa của Solana là gì ?

Program Account là một loại Account đặc biệt được sử dụng bởi các nhà phát triển để lưu trữ Smart Contract và các dữ liệu ứng dụng khác trên blockchain Solana. Các tài khoản này khác với các tài khoản Solana thông thường vì chúng được sở hữu và quản lý bởi các Smart Contract, chứ không phải là cá nhân hoặc tổ chức.

II. Program Account hoạt động như thế nào?

Tài khoản Chương trình Solana được tạo và quản lý bởi một Smart Contract trên blockchain Solana. Khi một Smart Contract được triển khai trên blockchain, nó tạo ra một Program Account mới và khởi tạo nó với các dữ liệu cần thiết. Account này sau đó được sử dụng để lưu trữ trạng thái ứng dụng và thực thi logic của hợp đồng thông minh.

Program Account cũng được sử dụng để lưu trữ và quản lý mã thông báo trên blockchain Solana. Các nhà phát triển có thể tạo các Token Program tùy chỉnh xác định các quy tắc và hành vi của các token của họ và sử dụng Program Account để quản lý chúng.

III. Ưu điểm của Program Account Solana

Mô hình Program Account của Solana có nhiều lợi thế hơn so với các blockchain truyền thống. Trước tiên, nó cho phép các nhà phát triển tạo ra các ứng dụng phức tạp hơn và thực hiện các tính toán phức tạp trên blockchain Solana. Điều này giúp cải thiện hiệu suất của ứng dụng và giảm chi phí giao dịch. Ngoài ra, các Program Account Solana cũng giúp đảm bảo tính an toàn và bảo mật của các ứng dụng blockchain bằng cách chặn truy cập trái phép vào các dữ liệu và Token Program.

IV. Cách sử dụng Program Account Solana

Để sử dụng Program Account Solana, các nhà phát triển cần triển khai một Smart Contract trên blockchain Solana bằng cách sử dụng các công cụ phát triển như Solana CLI hoặc Solana SDK. Sau khi triển khai hợp đồng thông minh, tài khoản chương trình sẽ được tạo ra tự động và có thể được sử dụng để lưu trữ dữ liệu và thực thi các tính toán phức tạp trên blockchain.

V. Ví dụ

Các bạn có thể sử dụng Anchor framework, đây là farmework để phát triển ứng dụng blockchain trên nền tảng solana.

Các việc chuẩn bị môi trường để lập trình các bạn có thể tham khảo tại đây : Anchor - Introduction (anchor-lang.com)

Dưới đây là một sample Smart Contract đơn giản được viết bằng ngôn ngữ Rust

use anchor_lang::prelude::*;

declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");

#[program]
pub mod pointGame {
    use super::*;

    pub fn create(ctx:Context<Create>, init_message: String) -> ProgramResult {
        let point = &mut ctx.accounts.point;
        point.greeting = init_message;
        point.amount = 0;
        Ok(())
    }

    pub fn invest(ctx: Context<Addition>, point: i64) -> ProgramResult {
        let point = &mut ctx.accounts.point;
        point.amount += point;
        Ok(())
    }

    pub fn consume(ctx: Context<Subtraction>, point: i64) -> ProgramResult {
        let point = & mut ctx.accounts.point;
        point.amount -= point;
        Ok(())
    }

}

#[derive(Accounts)]
pub struct Create<'info> {
    #[account(init, payer = user, space = 8 + 64 + 64 )]
    pub point: Account<'info, PointAccount>,
    #[account(mut)]
    pub user: Signer<'info>,
    pub system_program: Program<'info, System>,
}

#[derive(Accounts)]
pub struct Addition<'info> {
    #[point(mut)]
    pub calculator: Account<'info, PointAccount>,
}

#[derive(Accounts)]
pub struct Subtraction<'info> {
    #[point(mut)]
    pub calculator: Account<'info, PointAccount>,
}

#[account]
pub struct PointAccount {
    pub greeting: String,
    pub amount: i64
}

PointAccount trong file Contract trên chính là một Program Account. Trong Solana, Program Account sẽ được cấp phát kích thước một lần duy nhất vì vậy bạn phải cần phải tính toán số Bytes cần thiết như ví dụ ở trên mình đã sử dụng 136 Bytes để cấp phát cho Account này ([account(init, payer = user, space = 8 + 64 + 64 + 64 )])

Đặc điểm kỹ thuật sử dụng các loại Account để lưu trữ dữ liệu trên Solana rất tiện lợi:

  1. Được lưu trữ trên blockchain Solana: Dữ liệu được lưu trữ trong Program account được xác thực và lưu trữ trên blockchain Solana, giúp đảm bảo tính toàn vẹn và bảo mật của dữ liệu.
  2. Có thể được cập nhật: Program account có thể được cập nhật để thay đổi dữ liệu, do đó cho phép cập nhật dữ liệu một cách tiện lợi.
  3. Dữ liệu được bảo mật: Dữ liệu được lưu trữ trong Program account được mã hóa và chỉ có thể được truy cập bởi những người có quyền truy cập.
  4. Tính tương thích cao: Program account được thiết kế để có tính tương thích cao, do đó cho phép các ứng dụng khác nhau truy cập vào cùng một dữ liệu.
  5. Chi phí thấp: Chi phí để tạo Program account và lưu trữ dữ liệu trên blockchain Solana là rất thấp, giúp cho các ứng dụng có thể tiết kiệm chi phí trong việc lưu trữ dữ liệu.

VI. Kết luận:

Program Account là một tính năng quan trọng của nền tảng blockchain Solana, cho phép các nhà phát triển xây dựng các ứng dụng phức tạp và thực hiện các tính toán phức tạp trên blockchain với tốc độ nhanh và chi phí thấp. Với sự phát triển nhanh chóng của nền tảng này, Solana đang trở thành một lựa chọn hấp dẫn cho các nhà phát triển blockchain và các ứng dụng phi tập trung trên toàn thế giới.

VII. Tham khảo

  1. https://docs.solana.com/developing/programming-model/accounts#:~:text=The current maximum size of,per account and per instruction.
  2. https://solanacookbook.com/guides/data-migration.html#how-can-you-migrate-a-program-s-data-accounts