¿Cómo se pueden verificar las implementaciones del token ERC20?

El estándar de token ERC20 es excelente, ya que permite billeteras, intercambios e implementaciones de clientes para que los usuarios interactúen con una variedad de tokens de una manera común. Pero, ¿cómo puede uno de estos clientes verificar que la implementación subyacente de un token detrás de la interfaz realmente se ajusta a las expectativas definidas por el estándar?

Por ejemplo, cualquier contrato que implemente la interfaz ERC20 podría implementar la transfer(address to, uint256 value)función para simplemente ignorar el toparámetro y transferir a una dirección codificada.

Creo que una solución es verificar que el código de bytes del contrato del token realmente coincida con una implementación de referencia, y creo que esto es lo que Consensys ha hecho con su ejemplo HumanStandardTokenFactory.sol . Esto tiene mucho sentido.

Pero cuando observa ejemplos que desean ampliar la funcionalidad de un token, pero que aún se tratan con respeto al estándar, como Beercoin (que también es increíble)... es la única forma de verificar que esta implementación se ajusta a la estándar a través de la inspección social y la auditoría? ¿Los proveedores de billeteras, los intercambios, etc. realizan algún otro tipo de verificación comprobable antes de otorgar algo de "estado de token", o simplemente marcan la casilla que implementaron las pocas funciones de interfaz?

Respuestas (2)

Creo que, en última instancia, tiene que ser una verificación humana, a menos que coincida exactamente con un contrato existente que ya ha sido verificado por humanos. Incluso si todas las funciones que se supone que están en el estándar están ahí y hacen lo que se supone que deben hacer, no puede estar seguro de que alguien no haya hecho algo inesperado en una parte diferente del código .

Probablemente no sea seguro confiar en los intercambios para agregar un token determinado para auditar el código del contrato, aunque sería bueno tener algún tipo de proceso para esto.

En su caso, solo tenga un contrato de prueba simple para enviar una pequeña cantidad de ether o tokens enviados desde la función de transferencia del contrato original. Luego verifique el saldo de donde se suponía que debía enviarse, ¿sigue siendo cero? Eso significa que es un fraude.