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,addressheader. 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 onhttps://scan.bohr.life/api/v2:
Try one by hand:
check-one.sh
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
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 printsduring event: nowith an empty time; check those by hand.
Troubleshooting
HTTP Error 429 or timeouts
HTTP Error 429 or timeouts
The public API is being rate limited or is slow. Increase the
time.sleep value to 1 or 2 seconds and run again.KeyError: 'address' or 'team'
KeyError: 'address' or 'team'
The CSV header must be exactly
team,address. Rename the columns in your export.A team says their contract is verified, but the script says NOT verified
A team says their contract is verified, but the script says NOT verified
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.