Account
Account trong lập trình Solana được hiểu như một vùng nhớ để lưu dữ liệu. Chúng là một khối cơ sở trong quá trình phát triển ứng dụng trên Solana.
Có thể bạn chưa biết
Những điều có thể bạn chưa biết
- Account đươc dùng để lưu trữ dữ liệu
- Mỗi Account sẽ có một địa chỉ duy nhất
- Account có kích thước tối đa là 10MB (10 Mega Bytes)
- PDA Account có kích thước tối đa là 10KB (10 Kilo Bytes)
- PDA Account có thể dùng để ký đại diện cho một program
- Kích thước Account được cố định tại thời điểm khởi tạo, nhưng vẫn có thể điều chỉnh bằng realloc
- Vùng nhớ dữ liệu được cấp phát cho Account phải được thuê bằng cách trả phí
- Account owner trong trường hợp mặc định sẽ là System Program
Chi tiết
Cấu trúc Account
Có 3 kiểu Account trên Solana:
- Data Accounts dùng để lưu trữ dữ liệu
- Program Accounts dùng để lưu chương trình thực thi
- Native Accounts ám chỉ native programs trên Solana như là System, Stake, và Vote
Kiểu Data Account lại có 2 kiểu con:
- Account được sở hữu bởi System
- PDA (Program Derived Address) Accounts
Mỗi Account lại có một địa chỉ (thường là public key - khoá công khai) và một owner (địa chỉ của một Program Account). Đầy đủ các trường của một Account được trình bày ở bảng dưới.
Trường | Mô tả |
---|---|
lamports | Số lượng lamports trong Account đóng |
owner | Địa chỉ Program Account đang kiếm soát Account đó |
executable | Account này có thể thực thi các chỉ thị hay không? |
data | Dữ liệu thô dưới dạng các bytes được lưu trữ trong Account |
rent_epoch | Kỳ hạn thuê vùng nhớ tiếp theo cho Account |
Có một vài quy tắc quan trọng về quyền sở hữu:
- Chỉ owner mới được chỉnh sửa cũng như rút số lamports từ một Data Account
- Bất kỳ ai cũng được phép nạp lamports vào một Data Account
- Owner của một Account có thể được gán cho một owner mới khi và chỉ khi vùng nhớ của Account đó được hoàn trả
Program Accounts không được lưu bất kỳ trạng thái.
Ví dụ, nếu bạn có một chương trình đếm trên một Program Account và cho phép tăng bộ đếm lên sau mỗi lần tương tác, bạn phải tạo tối thiểu 2 Account. Trong đó, một cho Program Account để lưu code thực thi, và một cho Data Account để lưu dữ liệu bộ đếm.
Để tránh việc một Account bị xoá, bạn phải trả chi phí để thuê vùng nhớ cho Account đó.
Thuê
Lưu trữ dữ liệu vào Account và duy trì Account đó sẽ phát sinh chi phí SOL. Chi phí này được gọi là chi phí thuê. Nếu chi phí thuê được duy trì ở mức tối thiểu là 2 năm cho Account đó, thì bạn sẽ được miễn phí lưu trữ. Bạn cũng có thể thu hồi lại phí cọc bằng cách đóng Account. Số lamports cọc sẽ được hoàn trả về địa chỉ ví của bạn.
Chi phí thuê được tính toán và chi trả ở 2 thời điểm khác nhau:
- Khi có bất kỳ giao dịch nào có tham khảo đến Account đó.
- Định kỳ mỗi epoch.
Một phần của chi phí thuê thu được sẽ được tiêu huỷ, trong khi phần còn lại sẽ được phân chia cho các Vote Account sau mỗi slot.
Nếu một Account không đủ cọc để chi trả phí thuê, Account đó sẽ bị thu hồi và toàn bộ dữ liệu sẽ bị xoá.
Các nguồn tài liệu khác
Lời cảm ơn
Khái niệm căn bản này được đóng góp của Pencilflip. Theo dõi anh ấy trên Twitter.