Skip to main content
Check that every team’s contract is deployed on BOT Chain testnet, verified on BOTScan and created during your event, using BOTScan’s public API.

What you’ll build

A script that reads a CSV of team names and contract addresses and prints, for each one, whether it’s a contract, whether its source is verified, its name and when it was deployed.

Prerequisites

  • Python 3.8 or later. The script uses only the standard library.
  • A CSV of submissions with a team,address header. Most form tools can export this.
  • No API key. BOTScan’s API is public. It doesn’t publish rate limits, so the script pauses between requests.

The API calls

The script uses two BOTScan (Blockscout v2) endpoints on https://scan.bohr.life/api/v2: Try one by hand:
check-one.sh
See Explorer API for more endpoints.

Steps

1

Export the submissions

Save the contract addresses as submissions.csv. If a team deployed more than one contract, give each its own row.
submissions.csv
2

Save the script

Set EVENT_START to when building started, in UTC.
check_submissions.py
3

Run it

Verify it worked

For the example CSV, on 2026-10-03 the script printed:
Output
How to read each status: Open any address at https://scan.bohr.life/address/ADDRESS to read the source and transactions yourself.

Limits of this check

  • It proves a contract exists and its source is published. It doesn’t prove the team wrote it. BOTScan verifies contracts automatically when their bytecode matches one already verified, so an unmodified template shows as verified too. Look at the source.
  • “Created during the event” uses the deployment transaction time. A team could deploy a copy of older code during the event.
  • Deployments through a factory contract may have no creation_transaction_hash. The script then prints during event: no with an empty time; check those by hand.

Troubleshooting

The public API is being rate limited or is slow. Increase the time.sleep value to 1 or 2 seconds and run again.
The CSV header must be exactly team,address. Rename the columns in your export.
Check the address in the CSV matches the one on BOTScan. Verification may also have been done on a different address, such as a proxy’s implementation.

Next steps

Judging rubric

Score the eligible projects.

Use the BOTScan API

More of what the explorer API can do.
Last modified on October 2, 2026