Web3 assignment representing an exchange smart contract with onChain orderBook
You are required to develop an OnChain OrderBook that is fully functional. The user should be able to create orders, fill an existing order, cancel his orders and check all existing orders. The smart contract should also contain all respective events, in addition to all the security measures needed. The contract should also be deployed to the Goerli network and verified. In addition, all appropriate unit tests should be implemented.
HINT: Start by implementing an order schema with all useful fields that would facilitate the functionality of the smart contract.
Additional Features:
- Automated Fill for the Order.
- Upradeable contracts.