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.