Hi @Yorkemartin,
One of the biggest issues with ERC20 is the approve/transferFrom two transaction workflow. There has been several attempts at a lightweight standard to implement an approve and call mechanism. ERC777 solves this with hooks. There is potential for a standard based on DAI’s permit (Add ERC20 permit() function)
I see ERC777 as a powerful upgrade to ERC20. Though reentrancy is something to be very aware of (e.g. Uniswap V1: https://blog.openzeppelin.com/exploiting-uniswap-from-reentrancy-to-actual-profit/)
PoolTogether uses ERC777 and you could look at the audit report and PoolTogether’s audit disclosures.
@miohtama decided to go with ERC777. (see their thoughts: Emerging standards and recommendations for approveAndCall, transferAndCall EIP-777 and so on)
I put together a Simple ERC777 token example and also an OpenZeppelin Contracts 3 example: Simple ERC777 token example using OpenZeppelin Contracts 3.x
@madness thanks again for the detailed input to the discussion .