> For the complete documentation index, see [llms.txt](https://my-organization-23.gitbook.io/solidity-basic/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://my-organization-23.gitbook.io/solidity-basic/nato-1.md).

# 特別な変数と関数 1

#### Block and Transaction Properties

| 変数名              | 型               | 説明                                                                                       |
| ---------------- | --------------- | ---------------------------------------------------------------------------------------- |
| block.basefee    | uint            | 現在のブロックのベース料金（EIP-3198およびEIP-1559）                                                       |
| block.chainid    | uint            | 現在のチェーンID                                                                                |
| block.coinbase   | address payable | 現在のブロックのマイナーアドレス                                                                         |
| block.difficulty | uint            | 現在のブロックの難易度（EVM < Paris）。他のEVMバージョンでは、block.prevrandao（EIP-4399のエイリアス）の非推奨エイリアスとして機能します。 |
| block.gaslimit   | uint            | 現在のブロックのガスリミット                                                                           |
| block.number     | uint            | 現在のブロック番号                                                                                |
| block.prevrandao | uint            | ビーコンチェーンによって提供されるランダムな数値（EVM >= Paris）                                                   |
| block.timestamp  | uint            | 現在のブロックのタイムスタンプ（UNIXエポックからの秒数）                                                           |
| gasleft()        | uint256         | 残りのガス                                                                                    |
| msg.data         | bytes calldata  | 完全なコールデータ                                                                                |
| msg.sender       | address         | メッセージの送信者（現在の呼び出し）                                                                       |
| msg.sig          | bytes4          | コールデータの最初の4バイト（関数識別子）                                                                    |
| msg.value        | uint            | メッセージとともに送信されたweiの数量                                                                     |
| tx.gasprice      | uint            | トランザクションのガス価格                                                                            |
| tx.origin        | address         | トランザクションの送信者（完全な呼び出しチェーン）                                                                |

#### ABI Encoding and Decoding

| 関数/メソッド                                               | 戻り値の型        | 説明                                                                                                                                        |
| ----------------------------------------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------- |
| abi.decode(bytes memory encodedData, (...))           | (...)        | 与えられたデータをABIデコードします。タイプは第二引数として括弧内に指定されます。例: (uint a, uint\[2] memory b, bytes memory c) = abi.decode(data, (uint, uint\[2], bytes))      |
| abi.encode(...)                                       | bytes memory | 与えられた引数をABIエンコードします。                                                                                                                      |
| abi.encodePacked(...)                                 | bytes memory | 与えられた引数のパックエンコードを実行します。ただし、パックエンコードは曖昧になる可能性があります。                                                                                        |
| abi.encodeWithSelector(bytes4 selector, ...)          | bytes memory | 与えられた引数をセカンド引数以降からABIエンコードし、与えられた4バイトセレクタを前置します。                                                                                          |
| abi.encodeWithSignature(string memory signature, ...) | bytes memory | abi.encodeWithSelector(bytes4(keccak256(bytes(signature))), ...)に相当します。                                                                   |
| abi.encodeCall(function functionPointer, (...))       | bytes memory | タプル内に見つかる引数を使用して、functionPointerへのコールをABIエンコードします。関数のシグネチャと一致することを確認します。結果はabi.encodeWithSelector(functionPointer.selector, (...))に等しいです。 |

#### Member of Bytes

```solidity
bytes.concat(...) returns (bytes memory)
```

#### Member of String

```solidity
string.concat(...) returns (string memory)
```

#### Error Handling

<pre class="language-solidity"><code class="lang-solidity"><strong>// 条件が満たされない場合にPanicエラーを引き起こし、したがって内部エラーのための状態の変更を元に戻します。
</strong><strong>assert(bool condition)
</strong><strong>
</strong><strong>// 条件が満たされない場合にPanicエラーを引き起こし、したがって内部エラーのための状態の変更を元に戻します。
</strong><strong>require(bool condition)
</strong>require(bool condition, string memory message)

// 実行を中止し、状態の変更を元に戻します。
revert()
revert(string memory reason)
</code></pre>
