Solidity - Các biến đặc biệt
Các biến đặc biệt là các biến có sẵn trên toàn cầu và cung cấp thông tin về blockchain. Sau đây là danh sách các biến đặc biệt:
Sr.No. | Biến & Mô tả Đặc biệt |
---|---|
1 | blockhash(uint blockNumber) returns (bytes32) Hash của khối đã cho - chỉ hoạt động cho 256 khối gần đây nhất, không bao gồm khối hiện tại. |
2 | block.coinbase (address payable) Địa chỉ của người khai thác khối hiện tại. |
3 | block.difficulty (uint) khó khăn khối hiện tại. |
4 | block.gaslimit (uint) Gaslimit khối hiện tại. |
5 | block.number (uint) Số khối hiện tại. |
6 | block.timestamp Dấu thời gian khối hiện tại dưới dạng giây kể từ kỷ nguyên unix. |
7 | gasleft() returns (uint256) Khí còn lại. |
số 8 | msg.data (bytes calldata) Calldata hoàn chỉnh. |
9 | msg.sender (address payable) Người gửi tin nhắn (cuộc gọi hiện tại). |
10 | msg.sig (bytes4) Bốn byte đầu tiên của calldata (tức là mã định danh hàm) |
11 | msg.value (uint) Số wei đã gửi cùng với tin nhắn. |
12 | now (uint) Dấu thời gian khối hiện tại (bí danh cho block.timestamp). |
13 | tx.gasprice (uint) Giá gas của giao dịch. |
14 | tx.origin (address payable) Người gửi giao dịch (chuỗi cuộc gọi đầy đủ). |
Thí dụ
Hãy thử đoạn mã sau để xem việc sử dụng msg, một biến đặc biệt để lấy địa chỉ người gửi trong Solidity.
pragma solidity ^0.5.0;
contract LedgerBalance {
mapping(address => uint) public balances;
function updateBalance(uint newBalance) public {
balances[msg.sender] = newBalance;
}
}
contract Updater {
function updateBalance() public returns (uint) {
LedgerBalance ledgerBalance = new LedgerBalance();
ledgerBalance.updateBalance(10);
return ledgerBalance.balances(address(this));
}
}
Chạy chương trình trên bằng các bước được cung cấp trong chương Ứng dụng đầu tiên của Solidity .
Lần nhấp đầu tiên updateBalance Nút để đặt giá trị là 10 sau đó nhìn vào nhật ký sẽ hiển thị đầu ra được giải mã dưới dạng:
Đầu ra
{
"0": "uint256: 10"
}