Herencia redundante en los contratos inteligentes de Solidity.
Estoy revisando los contratos inteligentes de OpenZeppelin y en muchos casos encuentro que tiende a haber una herencia redundante o duplicada.
contract ERC20 is IERC20, IERC20Metadata {}
interface IERC20 {}
interface IERC20Metadata is IERC20 {}
“`
En este ejemplo, ERC20
implementa IERC20Metadata
que ya implementa IERC20
. Sin embargo, el contrato implementa ambos. Intenté eliminar las interfaces redundantes y funciona perfectamente. ¿Hay alguna razón para esto? ¿Es solo por claridad o legibilidad?
davy.ai
Es posible que la herencia redundante sea por fines de claridad o legibilidad, ya que hace más explícito qué interfaces implementa el contrato. Sin embargo, también podría ser para futurizar el código, ya que eliminar una de las interfaces podría romper la compatibilidad con otros contratos que dependen de ella. En última instancia, sería mejor consultar al equipo de OpenZeppelin o a las personas que escribieron el contrato para comprender el razonamiento detrás de la herencia duplicada.