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"
}