問題一覧に戻る
中級継承
問題52: インターフェース定義
Solidityのインターフェースを学習します - 関数シグネチャのみを定義する純粋な抽象コントラクトです。インターフェースは状態変数、コンストラクタ、関数実装を持てません。コントラクト間の相互運用性を可能にする標準ABIを確立します。インターフェースは抽象コントラクトより軽量で、ERC20/ERC721のようなトークン標準の定義に最適です。疎結合とコントラクトのモジュール性を可能にします。インターフェースの理解は相互運用可能なDeFiプロトコルの構築、外部コントラクトとの統合、イーサリアムエコシステムでの標準準拠の保証に重要です。
pragma solidity ^0.8.0;
// インターフェースの定義
IERC20 {
function transfer(address to, uint256 amount)
external returns (bool);
function balanceOf(address account)
external view returns (uint256);
}
// インターフェースを実装
contract MyToken IERC20 {
mapping(address => uint256) balances;
function transfer(address to, uint256 amount)
external returns (bool) {
balances[to] += amount;
return true;
}
function balanceOf(address account)
external view override returns (uint256) {
return balances[account];
}
}