# Gancho (Hook)

Os ganchos são certas funções descritas no código de um [contrato inteligente](https://pt.glossario.w3d.community/c/contrato-inteligente). Os ganchos são chamados quando os *tokens* são enviados ou recebidos por meio do contrato. Isso permite que um contrato inteligente reaja a *tokens* de entrada ou saída. Os ganchos permitem enviar *tokens* para um contrato e notificá-lo em uma única transação, diferentemente do [ERC-20](https://pt.glossario.w3d.community/e/erc-20), que requer uma chamada dupla para conseguir isso. Os contratos que não possuem ganchos declarados são incompatíveis com o [ERC-777](https://pt.glossario.w3d.community/e/erc-777). O contrato de envio abortará a transação quando o contrato de recebimento não tiver registrado um gancho. Isso evita transferências acidentais para contratos inteligentes que não são ERC-777. Ganchos também podem rejeitar transações, se necessário.
