堅牢性-特別な変数

特別な変数はグローバルに利用可能な変数であり、ブロックチェーンに関する情報を提供します。以下は特別な変数のリストです-

シニア番号 特別な変数と説明
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

UNIXエポックからの秒数としての現在のブロックタイムスタンプ。

7

gasleft() returns (uint256)

残りのガス。

8

msg.data (bytes calldata)

完全なcalldata。

9

msg.sender (address payable)

メッセージの送信者(現在の通話)。

10

msg.sig (bytes4)

calldataの最初の4バイト(つまり関数識別子)

11

msg.value (uint)

メッセージとともに送信されたweiの数。

12

now (uint)

現在のブロックタイムスタンプ(block.timestampのエイリアス)。

13

tx.gasprice (uint)

取引のガス価格。

14

tx.origin (address payable)

トランザクションの送信者(完全なコールチェーン)。

次のコードを試して、Solidityで送信者アドレスを取得するための特別な変数であるmsgの使用を確認してください。

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