Trong Solidity, sự khác biệt giữa hàm view và pure là gì? Tại sao việc sử dụng đúng các từ khóa này lại quan trọng đối với hiệu năng hệ thống?
Phân biệt
- view: Hàm được phép đọc dữ liệu từ trạng thái (storage) của contract nhưng không được phép thay đổi trạng thái đó.
- pure: Hàm không được phép đọc cũng như không được phép thay đổi trạng thái của contract. Nó chỉ thực hiện tính toán dựa trên các tham số đầu vào.
Tầm quan trọng đối với hiệu năng
- Khi gọi các hàm này từ bên ngoài (off-chain) thông qua các node, chúng không tốn gas vì không cần tạo giao dịch trên mạng lưới.
- Việc khai báo đúng giúp trình biên dịch tối ưu hóa mã bytecode và giúp các công cụ phân tích bảo mật hiểu rõ hành vi của hàm.
Ví dụ
uint256 public value;
function getValue() public view returns (uint256) { return value; } // Đọc storage
function add(uint256 a, uint256 b) public pure returns (uint256) { return a + b; } // Chỉ tính toán
Lưu ý
Nếu bạn khai báo hàm là view hoặc pure nhưng lại thực hiện ghi dữ liệu (ví dụ: thay đổi giá trị biến state), trình biên dịch sẽ báo lỗi.
Làm Chủ Phỏng Vấn & Nâng Cao Trình Độ Chuyên Nghiệp
Hệ thống khóa học thực chiến chuẩn Enterprise giúp bạn tự tin chinh phục mọi kỳ phỏng vấn kỹ thuật và thăng tiến thu nhập.
Tải Tuyển Tập 100+ Câu Hỏi Phỏng Vấn Chuyên Sâu (PDF)
Bộ tài liệu chuẩn Senior do Unicode Academy tuyển chọn & biên soạn, hỗ trợ tải về định dạng PDF chuẩn in ấn.
Cần Mentor Phỏng Vấn Thử 1-1 & Tối Ưu CV?
Mô phỏng phỏng vấn kỹ thuật thực tế 1-1 qua Google Meet, nhận xét chi tiết điểm mạnh/yếu và sửa CV trực tiếp cùng giảng viên Unicode.
Kiểm Tra CV Chuẩn ATS Miễn Phí
Tải CV của bạn lên để hệ thống AI rà soát từ khóa kỹ năng, định dạng và tính điểm chuẩn nhà tuyển dụng.
Câu hỏi blockchain liên quan cùng chủ đề
- Làm thế nào để triển khai và tối ưu hóa thuật toán hoặc cấu trúc dữ liệu liên quan đến Smart Contracts trong chủ đề Blockchain? Entry
- Trong Solidity, tại sao việc sử dụng tx.origin để xác thực quyền sở hữu (Authentication) lại tiềm ẩn rủi ro bảo mật nghiêm trọng? Junior
- Giải thích khái niệm Shadowing trong Solidity và tại sao nó lại gây ra các lỗi logic khó phát hiện trong quá trình phát triển Smart Contract? Junior
- Trong kiến trúc Blockchain, tại sao việc sử dụng các hàm tạo số ngẫu nhiên (Random Number Generation) trực tiếp trong Smart Contract lại không an toàn? Junior
- Sự khác biệt giữa việc sử dụng Event và lưu trữ dữ liệu trực tiếp vào Storage trong Smart Contract về mặt chi phí Gas là gì? Junior


