-
bitcoin $99097.524802 USD
-3.18% -
ethereum $3190.458287 USD
-7.51% -
tether $0.999648 USD
-0.03% -
xrp $2.309178 USD
-4.17% -
bnb $921.186688 USD
-3.96% -
solana $144.106489 USD
-6.12% -
usd-coin $0.999837 USD
-0.02% -
tron $0.291415 USD
-1.32% -
dogecoin $0.163935 USD
-4.54% -
cardano $0.526269 USD
-4.77% -
hyperliquid $37.814277 USD
-2.92% -
bitcoin-cash $509.826264 USD
-1.40% -
chainlink $14.448349 USD
-5.83% -
stellar $0.267630 USD
-4.87% -
unus-sed-leo $9.178879 USD
0.52%
Solidity の有料機能と非支払い機能の違いは何ですか?
In Solidity, only functions marked `payable` can receive Ether, preventing accidental or malicious fund transfers and ensuring secure contract design.
2025/11/14 13:59
Solidity の関数修飾子を理解する
Solidity では、スマート コントラクト内の関数に、Ether との対話方法を決定する特定の修飾子を割り当てることができます。これらの修飾子は、関数が実行中に資金を受け取ることができるかどうかを決定する上で重要な役割を果たします。支払い可能な機能と支払い不可能な機能の違いは、トランザクションの一部として Ether を受け入れることができるかどうかにあります。
Payable 機能: イーサ送金の受け入れ
1. Payable 関数にはPayable修飾子が明示的にマークされており、呼び出されたときに Ether を受信できるようになります。
- ユーザーが支払い可能な機能を呼び出すトランザクションとともに Ether を送信すると、資金が契約の残高に転送されます。
- payable 修飾子がないと、Ether を関数に送信しようとするとトランザクションが失敗します。
- 有料関数は、クラウドファンディング、寄付、またはユーザーが関数呼び出しを通じて直接資金を寄付するメカニズムなどの機能に不可欠です。
- Payable 関数内で、開発者は、受信した金額を保持するmsg.valueを使用して、送信された金額にアクセスできます。
非有料機能: 受信イーサの拒否
1. デフォルトでは、特に指定がない限り、Solidity の機能は支払い対象外です。
- トランザクションが支払い不能な機能に Ether を送信しようとすると、偶発的な資金の損失を防ぐためにトランザクション全体が元に戻されます。
- この動作により、ユーザーとコントラクト ロジックの両方が意図しない Ether 転送から保護されます。
- 支払い不要の関数は、財務入力を必要とせずに状態の変更またはデータの読み取りのみを行う操作に適しています。
- 関数が Ether を予期していない場合でも、支払い可能としてマークされていない場合、 msg.value > 0で関数を呼び出すと実行時例外が発生します。
スマートコントラクト設計における実際的な意味
1. 資金を受け入れる必要があるときに機能に支払い不能のラベルを付けると、トークンの購入やステーキング メカニズムなどのコア機能が壊れる可能性があります。
- 逆に、不要な関数を支払い可能としてマークすると、特にmsg.valueに関する適切な検証が欠落している場合、攻撃対象領域が増加します。
- 開発者は、Ether フローが正しく処理されていることを確認するために、すべての外部向け関数を注意深く監査する必要があります。
- 静的アナライザーやテスト フレームワークなどのツールは、展開前に Payable モディファイアーの誤った使用を検出するのに役立ちます。
- 複雑な契約では、資金の受け取りと公益事業の機能を区別することで、コードの明瞭さとセキュリティが向上します。
よくある質問
建設業者に報酬を支払うことはできますか?はい、コンストラクターを支払可能としてマークできます。これにより、展開中にコントラクトが Ether を受け入れることができるようになります。デプロイメント トランザクションに値の転送が含まれる場合、元に戻さないようにコンストラクターに支払いを行う必要があります。
Ether で支払い不要の関数を呼び出すとどうなりますか?トランザクションは自動的に元に戻り、状態の変化は発生しません。 Ethereum は、このルールを EVM レベルで強制して、Ether を処理するように設計されていない機能への偶発的な Ether 転送を防ぎます。
契約内のすべての機能をデフォルトで支払う方法はありますか?いいえ、各機能は個別に支払い可能として宣言する必要があります。すべての関数が Ether を受け入れるようにするためのグローバル設定はありません。この設計により、資金受け取りの意図的かつ安全な処理が保証されます。
支払いが不可能な場合、フォールバック関数は Ether を受け取ることができますか?いいえ、イーサを受け入れるには、フォールバック関数であっても支払い可能としてマークする必要があります。支払い不要のフォールバック関数は、関数呼び出しを指定せずにコントラクトに送信される受信 Ether を拒否します。
免責事項:info@kdj.com
提供される情報は取引に関するアドバイスではありません。 kdj.com は、この記事で提供される情報に基づいて行われた投資に対して一切の責任を負いません。暗号通貨は変動性が高いため、十分な調査を行った上で慎重に投資することを強くお勧めします。
このウェブサイトで使用されているコンテンツが著作権を侵害していると思われる場合は、直ちに当社 (info@kdj.com) までご連絡ください。速やかに削除させていただきます。
- 仮想通貨の大虐殺: 荒々しい市場での売却と清算を乗り切る
- 2025-11-14 16:50:01
- モハメッド・シラージの最初の呪文の悩み: インドのチームメイトの批判
- 2025-11-14 14:40:02
- BTC、ETH、アルトコインのおすすめ: 暗号通貨の状況をナビゲートする
- 2025-11-14 14:50:01
- コイントスの物語: テンバ・バヴマの賭けとインド対SAの対決
- 2025-11-14 12:50:01
- シャブマン・ギル、WTC 決勝、そしてコイントス: ニューヨーカーの見解
- 2025-11-14 15:05:01
- 飛行場が離陸: チェーン全体でイーサリアム DeFi の流動性を統合
- 2025-11-14 15:10:02
関連知識
スマート コントラクトにおけるサービス拒否 (DoS) 攻撃とは何ですか?また、その一般的な形式は何ですか?
2025-11-10 05:20:08
スマートコントラクトにおけるサービス拒否について理解する1. スマート コントラクトのコンテキストにおけるサービス拒否 (DoS) 攻撃とは、悪意のある攻撃者が正当なユーザーによるコントラクトの機能へのアクセスまたは使用を妨げるシナリオを指します。これは通常、攻撃者が重要な操作をブロックできるように...
トランザクション署名で使用される暗号化ナンスとは何ですか?
2025-11-11 05:59:39
ブロックチェーントランザクションにおける暗号化ナンスを理解する1. 暗号化ナンスは、ブロックチェーン ネットワーク内のトランザクション署名のコンテキストで 1 回だけ使用される乱数または擬似乱数です。その主な機能は、各トランザクションが一意であり、悪意のある行為者によって再実行できないことを保証する...
Solidity スマート コントラクトでは継承はどのように機能しますか?
2025-11-11 22:40:12
Solidity の継承: モジュール式スマート コントラクトの構築1. Solidity の継承により、あるコントラクトが別のコントラクトのプロパティと機能を採用できるようになり、コードの再利用と構造化設計が可能になります。派生コントラクトは、プライベートとしてマークされていない限り、基本コントラ...
外部所有アカウント (EOA) と契約アカウントの違いは何ですか?
2025-11-13 04:00:32
外部所有アカウント (EOA) について1. 外部所有アカウントは秘密キーによって直接制御されます。つまり、そのキーの所有者のみがアカウントからトランザクションを開始できます。 EOA には関連するコードがありません。これらは、ブロックチェーン上でトランザクションを送受信するために使用される単純なア...
ERC-2981 NFT ロイヤルティ標準とは何ですか?またどのように機能しますか?
2025-11-13 05:39:54
ERC-2981 NFT ロイヤルティ標準を理解する1. ERC-2981 標準は、非代替トークン (NFT) のロイヤルティ メカニズムを導入するイーサリアムのコメント要求です。ロイヤルティのサポートが組み込まれていない ERC-721 や ERC-1155 などの以前の NFT 標準とは異なり、...
Minimal Proxy Contract (EIP-1167) とは何ですか? また、導入時のガスをどのように節約しますか?
2025-11-12 11:39:42
最小プロキシ契約 (EIP-1167) とは何ですか? 1. イーサリアム改善提案 (EIP) 1167 に基づいて標準化されたミニマル プロキシ コントラクトは、呼び出しを既存の実装コントラクトに委任するように設計された軽量のコントラクトです。これは、ロジックを内部に保存せずに、すべての関数呼び出...
スマート コントラクトにおけるサービス拒否 (DoS) 攻撃とは何ですか?また、その一般的な形式は何ですか?
2025-11-10 05:20:08
スマートコントラクトにおけるサービス拒否について理解する1. スマート コントラクトのコンテキストにおけるサービス拒否 (DoS) 攻撃とは、悪意のある攻撃者が正当なユーザーによるコントラクトの機能へのアクセスまたは使用を妨げるシナリオを指します。これは通常、攻撃者が重要な操作をブロックできるように...
トランザクション署名で使用される暗号化ナンスとは何ですか?
2025-11-11 05:59:39
ブロックチェーントランザクションにおける暗号化ナンスを理解する1. 暗号化ナンスは、ブロックチェーン ネットワーク内のトランザクション署名のコンテキストで 1 回だけ使用される乱数または擬似乱数です。その主な機能は、各トランザクションが一意であり、悪意のある行為者によって再実行できないことを保証する...
Solidity スマート コントラクトでは継承はどのように機能しますか?
2025-11-11 22:40:12
Solidity の継承: モジュール式スマート コントラクトの構築1. Solidity の継承により、あるコントラクトが別のコントラクトのプロパティと機能を採用できるようになり、コードの再利用と構造化設計が可能になります。派生コントラクトは、プライベートとしてマークされていない限り、基本コントラ...
外部所有アカウント (EOA) と契約アカウントの違いは何ですか?
2025-11-13 04:00:32
外部所有アカウント (EOA) について1. 外部所有アカウントは秘密キーによって直接制御されます。つまり、そのキーの所有者のみがアカウントからトランザクションを開始できます。 EOA には関連するコードがありません。これらは、ブロックチェーン上でトランザクションを送受信するために使用される単純なア...
ERC-2981 NFT ロイヤルティ標準とは何ですか?またどのように機能しますか?
2025-11-13 05:39:54
ERC-2981 NFT ロイヤルティ標準を理解する1. ERC-2981 標準は、非代替トークン (NFT) のロイヤルティ メカニズムを導入するイーサリアムのコメント要求です。ロイヤルティのサポートが組み込まれていない ERC-721 や ERC-1155 などの以前の NFT 標準とは異なり、...
Minimal Proxy Contract (EIP-1167) とは何ですか? また、導入時のガスをどのように節約しますか?
2025-11-12 11:39:42
最小プロキシ契約 (EIP-1167) とは何ですか? 1. イーサリアム改善提案 (EIP) 1167 に基づいて標準化されたミニマル プロキシ コントラクトは、呼び出しを既存の実装コントラクトに委任するように設計された軽量のコントラクトです。これは、ロジックを内部に保存せずに、すべての関数呼び出...
すべての記事を見る














