時価総額: $2.1233T 1.14%
ボリューム(24時間): $72.5048B -56.86%
恐怖と貪欲の指数:

15 - 極度の恐怖

  • 時価総額: $2.1233T 1.14%
  • ボリューム(24時間): $72.5048B -56.86%
  • 恐怖と貪欲の指数:
  • 時価総額: $2.1233T 1.14%
暗号
トピック
暗号化
ニュース
暗号造園
動画
トップクリプトスペディア

言語を選択する

言語を選択する

通貨の選択

暗号
トピック
暗号化
ニュース
暗号造園
動画

Solidity のパブリック、プライベート、内部、外部関数の違いは何ですか?

Solidity's function visibility specifiers—public, private, internal, and external—control access to functions, impacting security, inheritance, and gas costs in smart contracts.

2025/11/20 22:39

Solidity での関数の可視性を理解する

Ethereum スマート コントラクトの主要なプログラミング言語である Solidity は、関数可視性指定子を通じて厳密なアクセス制御を強制します。これらの指定子は、コントラクト内、派生コントラクト、または外部から関数を呼び出すことができるユーザーを決定します。パブリック、プライベート、内部、外部の 4 つのタイプは、アクセシビリティの範囲を定義し、コントラクト ロジックを保護する上で重要な役割を果たします。

公的行事

1. パブリック関数には、コントラクト内、派生コントラクト内、およびトランザクションまたは呼び出しを介した外部から、どこからでもアクセスできます。

2. 関数がパブリックとしてマークされている場合、それが状態変数である場合、またはコントラクト インターフェイスを介した直接呼び出しを許可する場合、Solidity はゲッター関数を自動的に生成します。

3. これらの関数はコントラクトの ABI (アプリケーション バイナリ インターフェイス) の一部となり、ウォレット、dApp、その他のスマート コントラクトから呼び出し可能になります。

4. 外部呼び出しのオーバーヘッドとデータ エンコード要件により、公共の機能ではガスのコストが高くなる場合があります。

5. 一般的な使用例には、ERC-20 コントラクトでのトークン転送や残高チェックなどのユーザー向け機能が含まれます。

プライベート関数

1. プライベート関数は同じコントラクト内からのみ呼び出すことができ、派生コントラクトや外部エンティティからはまったくアクセスできません。

2. 公開またはオーバーライドすべきではない機密性の高いロジックをカプセル化するのに最適です。

3. プライベート関数は外部インターフェイスの一部ではないため、ABI には表示されません。

4. 開発者は多くの場合、パブリックまたは内部の操作をサポートする内部検証、ハッシュ、またはクリーンアップ ルーチンにこれらを使用します。

5. 非公開であるにもかかわらず、コードは依然としてオンチェーンで表示されます。プライバシーとは、ソースの隠蔽ではなく、実行アクセスのみを指します。

内部関数

1. 内部関数は、定義するコントラクトおよびそれを継承するコントラクト内でアクセスできます。

2. アドレスベースの対話を通じてであっても、外部アカウントや無関係なコントラクトから直接呼び出すことはできません。

3. 継承階層は、再利用可能なロジックを公開せずに共有する内部関数に大きく依存しています。

4. プライベート関数と同様に、これらはコントラクトの外部 ABI には寄与しません。

5. 例には、OpenZeppelin の SafeMath ライブラリのユーティリティ関数、または複数のメソッドにわたって前提条件を強制する修飾子が含まれています。

外部関数

1. 外部関数は、コントラクトの外部から、つまり別のコントラクトまたは EOA (外部所有アカウント) からのみ呼び出すことができます。

2. コントラクト自体でも、独自の外部関数を呼び出すためにthis.functionName()構文を使用する必要があり、これによりメッセージ呼び出しのオーバーヘッドが発生します。

3. この可視性は、関数が内部で実行されないようにしたい場合に便利で、モジュール性を促進し、ガスの誤用を減らします。

4. 外部関数は ABI に含まれており、トランザクション呼び出しまたは契約間の呼び出しを通じて呼び出すことができます。

5. calldata (外部関数によって使用される) により、内部呼び出しに関連するメモリ コピーのコストが回避されるため、これらは一般に大規模なデータ入力に使用されます。

よくある質問

派生コントラクトでプライベート関数をオーバーライドできますか?いいえ、派生コントラクトによってプライベート関数にアクセスしたりオーバーライドしたりすることはできません。 virtual および override キーワードを使用してオーバーライドできるのは、内部関数とパブリック関数のみです。

可視性修飾子を指定しないとどうなりますか?可視性が指定されていない場合、Solidity は関数に対してデフォルトで public になります。状態変数の場合、デフォルトは内部です。セキュリティと明確さの理由から、デフォルトに依存することはお勧めできません。

内部関数呼び出しと外部関数呼び出しの間にパフォーマンスの違いはありますか?はい。内部呼び出しは同じコントラクト コンテキスト内で実行され、ガスの使用は最小限に抑えられます。外部呼び出しは、自己参照の場合でもメッセージ呼び出しを必要とし、スタックの分離と ABI エンコードによりガス消費量が増加します。

外部関数は状態変数を変更できますか?はい、外部関数は、view や pure などの他の修飾子によって制限されない限り、状態変数を変更できます。ストレージを変更する能力は、可視性ではなくロジックに依存します。

免責事項:info@kdj.com

提供される情報は取引に関するアドバイスではありません。 kdj.com は、この記事で提供される情報に基づいて行われた投資に対して一切の責任を負いません。暗号通貨は変動性が高いため、十分な調査を行った上で慎重に投資することを強くお勧めします。

このウェブサイトで使用されているコンテンツが著作権を侵害していると思われる場合は、直ちに当社 (info@kdj.com) までご連絡ください。速やかに削除させていただきます。

関連知識

Bybit で BTC 取引を行う場合、リニア永久契約とインバース永久契約のどちらを選択すればよいですか?

Bybit で BTC 取引を行う場合、リニア永久契約とインバース永久契約のどちらを選択すればよいですか?

2026-06-06 02:54:55

契約決済の仕組み1. Bybit のリニア無期限契約は USDT で決済されます。これは、すべての損益計算、証拠金要件、清算閾値がステーブルコイン単位で表示されることを意味します。 2. 逆永久契約は BTC 自体で決済されるため、すべての取引はトレーダーの BTC 残高に直接影響します。利益があれ...

ストップハントやなりすましなどの先物市場操作を特定して回避するにはどうすればよいでしょうか?

ストップハントやなりすましなどの先物市場操作を特定して回避するにはどうすればよいでしょうか?

2026-06-07 14:20:10

Bitcoin 半減力学1. Bitcoin のプロトコルは、ブロック報酬が約 210,000 ブロックごとに半分になる固定発行スケジュールを強制します。 2. このイベントはおよそ 4 年ごとに発生し、流通する新しい BTC の数を直接減少させます。 3. マイナーは、2020 年の半減期の時点で...

Bybit で 1 日の最大損失を制限するリスク管理ルールを設定するにはどうすればよいですか?

Bybit で 1 日の最大損失を制限するリスク管理ルールを設定するにはどうすればよいですか?

2026-06-04 16:40:15

アカウントレベルの損失制限の設定1. 2 要素認証を使用して、Web またはモバイル アプリケーション経由で Bybit アカウントにログインします。 2. 「資産」セクションに移動し、左側のメニューから「リスク管理」を選択します。 3. 「日次損失制限」を選択し、機能をオンに切り替えてコントロール...

Binance でポートフォリオ証拠金モードを有効にして証拠金要件を減らすにはどうすればよいですか?

Binance でポートフォリオ証拠金モードを有効にして証拠金要件を減らすにはどうすればよいですか?

2026-06-05 04:59:43

Bitcoin 半減力学1. Bitcoin のプロトコルは、ブロック報酬が約 210,000 ブロックごとに半分になる固定発行スケジュールを強制します。 2. このイベントはおよそ 4 年ごとに発生し、ブロックごとに流通する新しい BTC の数を直接減少させます。 3. マイナーは、2020 年の...

オープン先物ポジションをクローズせずに Binance から Bybit に移行するにはどうすればよいですか?

オープン先物ポジションをクローズせずに Binance から Bybit に移行するにはどうすればよいですか?

2026-06-04 03:59:47

Bitcoin 半減力学1. Bitcoin のプロトコルは、ブロック報酬が約 210,000 ブロックごとに半分になる固定発行スケジュールを強制します。 2. このイベントはおよそ 4 年ごとに発生し、流通する新しい BTC の数を直接減少させます。 3. マイナーは、2020 年の半減期の時点で...

米国における仮想通貨先物取引の利益による税金への影響をどのように処理すればよいでしょうか?

米国における仮想通貨先物取引の利益による税金への影響をどのように処理すればよいでしょうか?

2026-05-29 18:19:59

Bitcoin 半減力学1. Bitcoin のプロトコルでは、ブロック報酬を通じて新しいユニットが導入され、2,100 万コインの固定供給上限が強制されます。 2. 210,000 ブロックごと、つまり約 4 年ごとに、ブロック報酬は半分に減ります。これは半減として知られるプロセスです。 3. 最...

Bybit で BTC 取引を行う場合、リニア永久契約とインバース永久契約のどちらを選択すればよいですか?

Bybit で BTC 取引を行う場合、リニア永久契約とインバース永久契約のどちらを選択すればよいですか?

2026-06-06 02:54:55

契約決済の仕組み1. Bybit のリニア無期限契約は USDT で決済されます。これは、すべての損益計算、証拠金要件、清算閾値がステーブルコイン単位で表示されることを意味します。 2. 逆永久契約は BTC 自体で決済されるため、すべての取引はトレーダーの BTC 残高に直接影響します。利益があれ...

ストップハントやなりすましなどの先物市場操作を特定して回避するにはどうすればよいでしょうか?

ストップハントやなりすましなどの先物市場操作を特定して回避するにはどうすればよいでしょうか?

2026-06-07 14:20:10

Bitcoin 半減力学1. Bitcoin のプロトコルは、ブロック報酬が約 210,000 ブロックごとに半分になる固定発行スケジュールを強制します。 2. このイベントはおよそ 4 年ごとに発生し、流通する新しい BTC の数を直接減少させます。 3. マイナーは、2020 年の半減期の時点で...

Bybit で 1 日の最大損失を制限するリスク管理ルールを設定するにはどうすればよいですか?

Bybit で 1 日の最大損失を制限するリスク管理ルールを設定するにはどうすればよいですか?

2026-06-04 16:40:15

アカウントレベルの損失制限の設定1. 2 要素認証を使用して、Web またはモバイル アプリケーション経由で Bybit アカウントにログインします。 2. 「資産」セクションに移動し、左側のメニューから「リスク管理」を選択します。 3. 「日次損失制限」を選択し、機能をオンに切り替えてコントロール...

Binance でポートフォリオ証拠金モードを有効にして証拠金要件を減らすにはどうすればよいですか?

Binance でポートフォリオ証拠金モードを有効にして証拠金要件を減らすにはどうすればよいですか?

2026-06-05 04:59:43

Bitcoin 半減力学1. Bitcoin のプロトコルは、ブロック報酬が約 210,000 ブロックごとに半分になる固定発行スケジュールを強制します。 2. このイベントはおよそ 4 年ごとに発生し、ブロックごとに流通する新しい BTC の数を直接減少させます。 3. マイナーは、2020 年の...

オープン先物ポジションをクローズせずに Binance から Bybit に移行するにはどうすればよいですか?

オープン先物ポジションをクローズせずに Binance から Bybit に移行するにはどうすればよいですか?

2026-06-04 03:59:47

Bitcoin 半減力学1. Bitcoin のプロトコルは、ブロック報酬が約 210,000 ブロックごとに半分になる固定発行スケジュールを強制します。 2. このイベントはおよそ 4 年ごとに発生し、流通する新しい BTC の数を直接減少させます。 3. マイナーは、2020 年の半減期の時点で...

米国における仮想通貨先物取引の利益による税金への影響をどのように処理すればよいでしょうか?

米国における仮想通貨先物取引の利益による税金への影響をどのように処理すればよいでしょうか?

2026-05-29 18:19:59

Bitcoin 半減力学1. Bitcoin のプロトコルでは、ブロック報酬を通じて新しいユニットが導入され、2,100 万コインの固定供給上限が強制されます。 2. 210,000 ブロックごと、つまり約 4 年ごとに、ブロック報酬は半分に減ります。これは半減として知られるプロセスです。 3. 最...

すべての記事を見る

User not found or password invalid

Your input is correct