こんにちは!
フリーランス&ブロックチェーンエンジニアの関口大樹(@daiki_sekiguchi)です。
今日はSolidityにおける「単位とグローバル変数とは」をテーマとし、金額や時間の単位とSolidity内で予め用意されているグローバル変数について解説していきます。
Contents
Ether(通貨)の単位
Ethereumにおけるトークン(通貨に近い概念)の単位は以下の表通りです。
この記事を公開した2018年7月14日時点で、1 ether = 約49,000円となっています。
| wei | 1 wei | 1 wei |
|---|---|---|
| szabo | 10^12 wei | 1,000,000,000,000 wei |
| finney | 10^15 wei | 1,000,000,000,000,000 wei |
| ether | 10^18 wei | 1,000,000,000,000,000,000 wei |
また、プログラミングを行う場合、数値の後ろに単位を表す文字列を付与することで、wei単位の数字を表現することができます。
時間の単位
続いて、Solidityにおける時間の単位です。
| seconds | 1 seconds |
|---|---|
| minutes | 60 seconds |
| hours | 3600 seconds |
| days | 86400 seconds |
| weeks | 604800 seconds |
| years | 31536000 seconds |
こちらもEtherと同様、数値の後ろに時間の単位を表す文字列を付与することで、秒単位の数字を表現することができます。
グローバル変数
最後に、Solidityにおけるグローバル変数です。
ブロックチェーンに刻まれた、ブロックナンバーやタイムスタンプについては、グローバル変数として取得することができます。
ここではよく使われる代表的なものについて、表に記載します。
| block.blockhash(uint blockNumber) | 指定したブロックのハッシュ値をbyte32型で取得 |
|---|---|
| block.coinbase | 現在のブロックを掘り当てたマイナーのアドレス |
| block.number | 現在のブロックナンバー |
| block.timestamp | 現在のブロックのタイムスタンプ |
| block.difficulty | 現在のブロックのdifficulty |
| msg.sender | 送信者のアドレス |
| msg.value | 送金額 |
| now | block.timestampのエイリアス |