Uso de anulación de funciones en Solidity

Estoy tratando de aprender de otros contratos y he visto un ejemplo que no entiendo. En este ejemplo, un primer contrato se define de la siguiente manera, pero parece que las funciones en realidad no hacen nada. (Por cierto, este es el contrato inteligente etherdelta...)

contract Token {

  //part of the contract functions goes here

  function transfer(address _to, uint256 _value) returns (bool success) {}

  // other part of the contract functions goes here
}

Luego, se define un nuevo contrato, que parece referirse al primer contrato:

contract StandardToken is Token {

  function transfer(address _to, uint256 _value) returns (bool success) {
    //Default assumes totalSupply can't be over max (2^256 - 1).
    //If your token leaves out totalSupply and can issue more tokens as time goes on, you need to check if it doesn't wrap.
    //Replace the if with this one instead.
    if (balances[msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
    //if (balances[msg.sender] >= _value && _value > 0) {
      balances[msg.sender] -= _value;
      balances[_to] += _value;
      Transfer(msg.sender, _to, _value);
      return true;
    } else { return false; }
  }

¿Alguien puede explicarme por favor qué hace esto?

Respuestas (1)

El Token estándar del contrato se deriva de Token. Este concepto se llama herencia .

La solidez como lenguaje de programación orientado a contratos permite la herencia que permite que los nuevos contratos adquieran las propiedades de los contratos existentes.

Las funciones pueden ser anuladas por otra función con el mismo nombre y el mismo número/tipos de entradas.

Aquí la transferfunción en Token se anula en su contrato derivado StandardToken.

Esto es útil para el polimorfismo, donde puede definir diferentes implementaciones concretas para diferentes usos, pero aun así brindar la misma interfaz para todos.

En el código publicado anteriormente, el contrato tokendefine una función transferpero no implementa su comportamiento. Pero todos los demás tipos de tokens (incluidos standardtokenaquí y pueden haber algunos otros) se pueden derivar del tokencontrato y dentro de ellos implementan el comportamiento específico de ellos en consecuencia. Los usuarios solo tendrán que saber que hay una función llamada transferpara usar cualquier tipo de contrato de token derivado de tokenproporcionar una interfaz común.

Consulte aquí también.

Muchas gracias por la rápida respuesta, que lo explica perfectamente. Sin embargo, lo que no he entendido es por qué lo hacen así.
eso es básicamente para el polimorfismo, que permite diferentes implementaciones concretas de la misma interfaz abstracta.
Muchas gracias. No, solo soy un programador aficionado y no me he encontrado con este concepto antes.
No ;-) Pero intentaré buscarlo y ver qué significa.
de nada, consulte esta pregunta también :)
¿Qué sucede con los modificadores de funciones heredadas? ¿También se heredan?