verifyContract
Verifies a contract by performing the following steps:
- Resolves the implementation of the contract. 
- Extracts the IPFS URI from the contract bytecode. 
- Downloads the contract source code from the IPFS URI. 
- Fetches the source files from the compiler metadata. 
- Compiles the contract source code using the Solidity compiler. 
- Fetches the constructor parameters if not provided. 
- Sends a request to the contract verification API to verify the contract source code.