Solidity - ตัวแปรพิเศษ
ตัวแปรพิเศษเป็นตัวแปรที่มีอยู่ทั่วโลกและให้ข้อมูลเกี่ยวกับบล็อกเชน ต่อไปนี้เป็นรายการตัวแปรพิเศษ -
ซีเนียร์ | ตัวแปรพิเศษและคำอธิบาย |
---|---|
1 | blockhash(uint blockNumber) returns (bytes32) แฮชของบล็อกที่ระบุ - ใช้ได้เฉพาะกับ 256 บล็อกล่าสุดไม่รวมบล็อกปัจจุบัน |
2 | block.coinbase (address payable) ที่อยู่ของคนงานเหมืองบล็อกปัจจุบัน |
3 | block.difficulty (uint) ความยากของบล็อกปัจจุบัน |
4 | block.gaslimit (uint) แก๊สลิมิตบล็อกปัจจุบัน |
5 | block.number (uint) หมายเลขบล็อกปัจจุบัน |
6 | block.timestamp การประทับเวลาบล็อกปัจจุบันเป็นวินาทีนับตั้งแต่ยุคยูนิกซ์ |
7 | gasleft() returns (uint256) ก๊าซที่เหลืออยู่ |
8 | msg.data (bytes calldata) กรอก calldata |
9 | msg.sender (address payable) ผู้ส่งข้อความ (สายปัจจุบัน) |
10 | msg.sig (bytes4) สี่ไบต์แรกของ calldata (เช่นตัวระบุฟังก์ชัน) |
11 | msg.value (uint) จำนวน wei ที่ส่งมาพร้อมข้อความ |
12 | now (uint) การประทับเวลาบล็อกปัจจุบัน (นามแฝงสำหรับ block.timestamp) |
13 | tx.gasprice (uint) ราคาก๊าซของธุรกรรม |
14 | tx.origin (address payable) ผู้ส่งธุรกรรม (เครือข่ายการโทรแบบเต็ม) |
ตัวอย่าง
ลองใช้รหัสต่อไปนี้เพื่อดูการใช้ msg ซึ่งเป็นตัวแปรพิเศษเพื่อรับที่อยู่ผู้ส่งใน 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));
}
}
เรียกใช้โปรแกรมข้างต้นโดยใช้ขั้นตอนที่ให้ไว้ในบทSolidity First Application
คลิกครั้งแรก updateBalance ปุ่มเพื่อตั้งค่าเป็น 10 จากนั้นดูในบันทึกซึ่งจะแสดงเอาต์พุตที่ถอดรหัสเป็น -
เอาต์พุต
{
"0": "uint256: 10"
}