All the require
calls are made to validate input. assert
and revert
are not used in the project.
All the modifier
are used for validation of data. They are all using a require
and running the function if it passes.
All the function names have distinctive names, not resembling any variable that could be shadowed
The contract doesn't use tx.origin in any of the code. It uses msg.sender instead.