¿Podría alguien explicar en detalle qué está haciendo este contrato de Ethereum?

Soy nuevo en la tecnología ethereum y blockchain y trato de entender algunas cosas (Etheruem, Truffle, DApps, etc.) aquí y allá desde Internet. Del sitio web oficial de Ethereum,

Crear un contrato de criptomonedas en Ethereum

Estoy tratando de entender específicamente estas funciones

approve(address _spender, uint _value) returns (bool success) {...}

approveAndCall(address _spender, uint _value, bytes _extraData) returns (bool success) {...}

transferFrom(address _from, address _to, uint _value) returns (bool success) {...}

y por ultimo estofunction() {throw;}

Este código de contrato

contrato tokenRecipient {
  función recibirAprobación(dirección _de, uint _valor, dirección _token, bytes _extraData);
}

y esta declaraciónmapping (address => mapping (address => uint) ) public allowance;

El es un ejemplo que muestra cómo funcionan el token transfer(...)y approve(...)las transferFrom(...)funciones en theethereum.wiki/w/index.php/… .
@BokkyPooBah Gracias por el enlace. Lo entendí mejor.

Respuestas (1)

approve(address _spender, uint _value) returns (bool success) {...}

Esta función solo se usa para hacer una entrada a la matriz de asignación cuando otro contrato quiere gastar algunas fichas. _ gastador es la dirección del contrato que lo va a utilizar. _value denota la cantidad de tokens que se gastarán.

approveAndCall(address _spender, uint _value, bytes _extraData) returns (bool success) {...}

si approve()la función devuelve verdadero, invocará la receiveApproval()función del contrato tokenRecipient.

transferFrom(address _from, address _to, uint _value) returns (bool success) {...}

Esta función se utilizará para transferir tokens de una dirección a otra. Las variables se explican por sí mismas.

function() {throw;}

Esta es la función de reserva. Según su funcionalidad, esta función se ejecutará cuando alguien intente enviar el ether al contrato. throw;evita el envío accidental de éter.

contract tokenRecipient { function receiveApproval(address _from, uint _value, address _token, bytes _extraData); }

Esto le dice al MyTokencontrato que la función receiveApprovaldel contrato tokenRecipientse puede invocar en algún lugar de este código.

mapping (address => mapping (address => uint) ) public allowance;

Y, por último, esta línea es una forma de declarar una matriz definiendo el tipo de clave y valor. El valor además puede contener una matriz. Puede asumir que es una matriz 2D. Esto se está utilizando aquí para mantener el registro de los usuarios que solicitan la aprobación para gastar el token en los otros contratos.

Este contrato cumple con ERC20 ya que implementa las funciones de aprobación (...), transferencia (...) y transferencia de (...).
Para más detalles: https://theethereum.wiki/w/index.php/ERC20_Token_Standard#How_Does_A_Token_Contract_Work.3F

Creo que la respuesta mejoraría si mencionara que las funciones y approveson parte del estándar de token ERC 20. Eso es algo muy importante a tener en cuenta, creo. transfertransferFrom
¿Alguien podría ayudarme con ethereum.stackexchange.com/questions/12848/… duda mía?
¿Puedes explicar el bytes _extraDataparámetro de applyAndCall?
Esa es una información opcional que puede enviar al contrato que está siendo aprobado como gastador de token.