-
bitcoin $77146.398531 USD
-0.23% -
ethereum $2514.088317 USD
-0.37% -
tether $0.999674 USD
0.00% -
bnb $722.500739 USD
-1.34% -
xrp $1.361192 USD
-0.23% -
usd-coin $0.999776 USD
-0.01% -
solana $101.320251 USD
-0.42% -
tron $0.339801 USD
0.16% -
hyperliquid $78.899137 USD
-0.02% -
zcash $1141.149289 USD
-0.18% -
dogecoin $0.084480 USD
-0.05% -
monero $530.834712 USD
-1.66% -
chainlink $11.453705 USD
-0.73% -
unus-sed-leo $9.056535 USD
-0.61% -
cardano $0.207439 USD
-0.31%
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) までご連絡ください。速やかに削除させていただきます。
- 未確認の話題: 金網クジラ、1,000 万リンク、そして 17% の修正 - 実際に何が起こっているのでしょうか?
- 2026-09-13 16:55:01
- Cardano 価格の予測、分析、および動き: 市場のボラティリティと将来の可能性をナビゲートする
- 2026-09-13 16:25:01
- Revolut データ侵害: 偽の政府要求がセキュリティのギャップを悪用し、顧客データを暴露
- 2026-09-13 09:00:02
- ブロックストリーム、リキッドネットワーク、ビットコイン:「盗まれた」資金をめぐる対立
- 2026-09-13 08:35:01
- リップル RLUSD の流通額が 24 億ドルに達: ステーブルコインの軌跡を詳しく見る
- 2026-09-13 04:50:01
- XRPミリオネアの夢: 10,000 XRPで20年以内に金持ちになれるでしょうか?
- 2026-09-13 04:50:01
関連知識
DOGE 先物の出来高と建玉を確認するにはどうすればよいですか?
2026-09-12 08:39:38
DOGE 先物ボリュームを理解する1. 先物取引高とは、特定の時間枠内で取引される DOGE 件の先物契約の総数を指し、通常は 1 日または 1 時間ごとに測定されます。 2. 出来高が多いということは、多くの場合、市場への参加が強力であることを示しており、価格変動の状況に応じてトレンドの継続または...
BTC先物の出来高と建玉を確認するにはどうすればよいですか?
2026-09-12 15:19:55
BTC先物指標のデータソース1. CoinGlass API v4 は、30 以上の取引所にわたるリアルタイムの資金調達レート、清算ヒートマップ、および詳細な建玉の内訳を提供します。 2. Binance Futures API は、ビッドアスク深度、契約固有の出来高履歴、マージン率スナップショット...
DOGEUSDT 無期限契約チャートの見方
2026-09-11 19:19:48
DOGEUSDT 無期限チャートの価格アクションを理解する1. ローソク足の形成は、当面の市場センチメントを明らかにします。緑のローソクは買い優勢を示し、赤のローソクはその期間中の売り圧力を示します。 2. 本体の上下の芯は、価格の高値または低値の拒否を示します。不安定なミームコイン市場では、長い上...
Binance の ETHUSDT 先物チャートを読むには?
2026-09-13 05:20:26
Bitcoin 半減力学1. 210,000 ブロックごとに、Bitcoin 名のマイナーのブロック報酬が半分になります。 2. このイベントは約 4 年ごとに発生し、Bitcoin のプロトコルにハードコードされています。 3. 最新の半減により、報酬はブロックあたり 6.25 BTC から 3....
Binance の Bitcoin 先物ファンディング手数料を確認するにはどうすればよいですか?
2026-09-13 18:00:17
Bitcoin 半減力学1. Bitcoin のプロトコルは、ブロック報酬が約 210,000 ブロックごとに半分になる固定発行スケジュールを強制します。 2. このイベントはおよそ 4 年ごとに発生し、流通する新しい BTC の数を直接減少させます。 3. マイナーは、2020 年の半減期の時点で...
BinanceでBTC先物ファンディング手数料を確認するにはどうすればよいですか?
2026-09-10 08:00:06
ファンディングレート表示の場所1. Binance Futures 取引インターフェイスに移動し、BTCUSDT 無期限契約を選択します。 2. 価格チャートの直下またはオーダーブックに隣接する領域を観察します。この領域には、「資金調達レート」とマークされたラベル付きボックスが含まれています。 3....
DOGE 先物の出来高と建玉を確認するにはどうすればよいですか?
2026-09-12 08:39:38
DOGE 先物ボリュームを理解する1. 先物取引高とは、特定の時間枠内で取引される DOGE 件の先物契約の総数を指し、通常は 1 日または 1 時間ごとに測定されます。 2. 出来高が多いということは、多くの場合、市場への参加が強力であることを示しており、価格変動の状況に応じてトレンドの継続または...
BTC先物の出来高と建玉を確認するにはどうすればよいですか?
2026-09-12 15:19:55
BTC先物指標のデータソース1. CoinGlass API v4 は、30 以上の取引所にわたるリアルタイムの資金調達レート、清算ヒートマップ、および詳細な建玉の内訳を提供します。 2. Binance Futures API は、ビッドアスク深度、契約固有の出来高履歴、マージン率スナップショット...
DOGEUSDT 無期限契約チャートの見方
2026-09-11 19:19:48
DOGEUSDT 無期限チャートの価格アクションを理解する1. ローソク足の形成は、当面の市場センチメントを明らかにします。緑のローソクは買い優勢を示し、赤のローソクはその期間中の売り圧力を示します。 2. 本体の上下の芯は、価格の高値または低値の拒否を示します。不安定なミームコイン市場では、長い上...
Binance の ETHUSDT 先物チャートを読むには?
2026-09-13 05:20:26
Bitcoin 半減力学1. 210,000 ブロックごとに、Bitcoin 名のマイナーのブロック報酬が半分になります。 2. このイベントは約 4 年ごとに発生し、Bitcoin のプロトコルにハードコードされています。 3. 最新の半減により、報酬はブロックあたり 6.25 BTC から 3....
Binance の Bitcoin 先物ファンディング手数料を確認するにはどうすればよいですか?
2026-09-13 18:00:17
Bitcoin 半減力学1. Bitcoin のプロトコルは、ブロック報酬が約 210,000 ブロックごとに半分になる固定発行スケジュールを強制します。 2. このイベントはおよそ 4 年ごとに発生し、流通する新しい BTC の数を直接減少させます。 3. マイナーは、2020 年の半減期の時点で...
BinanceでBTC先物ファンディング手数料を確認するにはどうすればよいですか?
2026-09-10 08:00:06
ファンディングレート表示の場所1. Binance Futures 取引インターフェイスに移動し、BTCUSDT 無期限契約を選択します。 2. 価格チャートの直下またはオーダーブックに隣接する領域を観察します。この領域には、「資金調達レート」とマークされたラベル付きボックスが含まれています。 3....
すべての記事を見る














