pub async fn update_versions(&mut self) -> anyhow::Result<()> {
        // Skip update if the update interval hasn't passed yet
        if let Some(time) = self.last_update {
            if time.elapsed() < Self::update_interval() {
                return Ok(());
            }
        }

        let response = self.http_client.get(SOLC_BUILDS_URL).send().await?;
        let response: Response = response.json().await?;
        for build in response.builds {
            // Skip prerelease versions
            if build.prerelease.is_none() {
                self.solc_long_versions
                    .insert(build.version, build.long_version);
            }
        }
        self.last_update = Some(Instant::now());
        tracing::info!("Successfully updated solc long versions");
        Ok(())
    }
Updates solc long versions from the official solc-bin repository. Internally cached so the actual update will
happen only once per update interval.
core/lib/contract_verifier/src/etherscan/solc_versions_fetcher.rs