Hàm trong Solidity
Hàm trong Solidity là các khối mã thực hiện các tác vụ cụ thể. Chúng có thể được gọi từ bên trong hợp đồng hoặc từ bên ngoài. Dưới đây là một số khái niệm cơ bản về hàm trong Solidity.
Định nghĩa Hàm
Hàm được định nghĩa bằng từ khóa function, theo sau là tên hàm, danh sách tham số, và phần thân hàm.
function set(uint256 x) public {
storedData = x;
}Các Loại Hàm
-
Public Functions: Có thể được gọi từ bên ngoài hợp đồng và từ các hàm khác trong hợp đồng.
function set(uint256 x) public { storedData = x; } -
Private Functions: Chỉ có thể được gọi từ bên trong hợp đồng.
function _internalFunction() private { // logic } -
Internal Functions: Tương tự như private, nhưng có thể được gọi từ các hợp đồng kế thừa.
function _internalFunction() internal { // logic } -
External Functions: Chỉ có thể được gọi từ bên ngoài hợp đồng.
function externalFunction() external { // logic }
Các Từ Khóa Quan Trọng
-
View Functions: Không sửa đổi trạng thái của hợp đồng, chỉ đọc dữ liệu.
function get() public view returns (uint256) { return storedData; } -
Pure Functions: Không đọc hoặc sửa đổi trạng thái của hợp đồng.
function add(uint256 a, uint256 b) public pure returns (uint256) { return a + b; } -
Payable Functions: Có thể nhận Ether khi được gọi.
function deposit() public payable { // logic }
Modifiers
Modifiers là các khối mã có thể được sử dụng để thay đổi hành vi của hàm. Chúng thường được sử dụng để kiểm tra điều kiện trước khi thực hiện hàm.
modifier onlyOwner() {
require(msg.sender == owner, "Not the contract owner");
;
}
function restrictedFunction() public onlyOwner {
// logic
}Fallback và Receive Functions
-
Fallback Function: Được gọi khi một giao dịch không khớp với bất kỳ hàm nào khác hoặc khi dữ liệu không được cung cấp.
fallback() external { // logic } -
Receive Function: Được gọi khi hợp đồng nhận Ether mà không có dữ liệu.
receive() external payable { // logic }
Hàm trong Solidity là một phần quan trọng của hợp đồng thông minh, cho phép bạn thực hiện các tác vụ và tương tác với dữ liệu trên blockchain. Bạn có thể sử dụng các loại hàm và từ khóa khác nhau để tối ưu hóa và bảo mật hợp đồng của mình.