堅牢性-特別な変数
特別な変数はグローバルに利用可能な変数であり、ブロックチェーンに関する情報を提供します。以下は特別な変数のリストです-
シニア番号 | 特別な変数と説明 |
---|---|
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"
}