Public deployment record for the CertaelCore commitment registry on BOT Chain Mainnet.
NEXT_PUBLIC_* values are inlined by Next.js at build time; wrangler.jsonc
vars are runtime-only and do NOT reach the client bundle. A Cloudflare
production build must therefore set these in the build environment (CI or
wrangler build invocation), not only in worker vars:
| Variable | Value |
|---|---|
NEXT_PUBLIC_CERTAEL_DATA_SOURCE |
live (production) or fixture (demo build) |
NEXT_PUBLIC_BOT_CHAIN_ID |
677 |
NEXT_PUBLIC_BOT_CHAIN_NAME |
BOT Chain Mainnet |
NEXT_PUBLIC_BOT_RPC_URLS |
https://rpc.botchain.ai |
NEXT_PUBLIC_BOT_EXPLORER_URLS |
https://scan.botchain.ai |
NEXT_PUBLIC_BOT_CURRENCY_NAME / SYMBOL |
BOT / BOT |
NEXT_PUBLIC_BOT_CURRENCY_DECIMALS |
18 |
NEXT_PUBLIC_CERTAEL_CORE_ADDRESS |
0x24f59bd890Ad703c0402D062a42d9ab7dBc422f9 |
All values above are public parameters; none are secrets. With
NEXT_PUBLIC_CERTAEL_DATA_SOURCE=live, a build that cannot construct the
production adapter (D1 binding missing, BOT deployment unverified) renders
the disconnected state — it never falls back to fixtures.
The live data path reads persisted records from Cloudflare D1 behind the
repository ports (src/backend/persistence/d1). The binding is
server-side only — it is never exposed to the browser.
wrangler.jsonc declares the binding with a placeholder database id. Remote
setup requires one manual, account-level command, then the migration:
npx wrangler d1 create certael-db
# paste the returned database_id into wrangler.jsonc (d1_databases[0].database_id)
npx wrangler d1 migrations apply certael-db --remoteLocal development and tests need none of this: npx wrangler d1 migrations apply certael-db --local uses the local D1 state, and the repository test
suite runs against an isolated SQLite-backed fake of the binding with the
checked-in migration as the schema source of truth.
No deployment has been performed from this repository.
| Field | Value |
|---|---|
| Network | BOT Chain Mainnet |
| Chain ID | 677 (0x2a5) |
| RPC | https://rpc.botchain.ai |
| Explorer | https://scan.botchain.ai |
| Native currency | BOT |
Verify these values against the official BOT Chain documentation before relying on them
(https://dev-docs.botchain.ai, ChainList entry for chain 677).
| Field | Value |
|---|---|
| Contract | CertaelCore |
| Address | 0x24f59bd890Ad703c0402D062a42d9ab7dBc422f9 |
| Explorer | https://scan.botchain.ai/address/0x24f59bd890Ad703c0402D062a42d9ab7dBc422f9 |
| Deployment tx | https://scan.botchain.ai/tx/0x8b1fb8fec5587464c7837f6a4091bdd6d59a2a4d4b0a21d929a54ea534c58419 |
| Field | Value |
|---|---|
| Deployment block | 20582860 |
| Deployment tx | 0x8b1fb8fec5587464c7837f6a4091bdd6d59a2a4d4b0a21d929a54ea534c58419 |
| Deployer | 0x17D9AFf0F1aFfD6b290625BDE2250d6917712410 |
| Initial admin | 0x17D9AFf0F1aFfD6b290625BDE2250d6917712410 (constructor argument) |
| Status | Finalized |
Verified onchain via eth_call against the deployed contract:
hasRole(DEFAULT_ADMIN_ROLE, 0x17D9AFf0F1aFfD6b290625BDE2250d6917712410) → true
DEFAULT_ADMIN_ROLE is 0x00. Re-run the check at any time:
# cast call --rpc-url https://rpc.botchain.ai <contract> "hasRole(bytes32,address)(bool)" \
# 0x0000000000000000000000000000000000000000000000000000000000000000 \
# 0x17D9AFf0F1aFfD6b290625BDE2250d6917712410| Field | Value |
|---|---|
| Solidity | 0.8.30 |
| Optimizer | enabled |
| Optimizer runs | 200 |
| Repository default EVM target | intentionally unpinned (foundry.toml deliberately leaves |
evm_version unset for contract-only development) |
|
| Deployed artifact EVM target | paris (this deployment was explicitly compiled and |
broadcast with --evm-version paris) |
Source: src/contracts/CertaelCore.sol, interface src/contracts/interfaces/ICertaelCore.sol.
- The repository default does not pin an EVM revision; contract-only development intentionally
leaves it to the compiler default. This BOT Mainnet deployment was compiled and broadcast
with an explicit
--evm-version parisflag, so the deployed artifact corresponds to Solidity0.8.30, optimizer enabled at 200 runs, EVM targetparis. - The explorer does not currently carry a verified source match for this address. The
deployment bytecode can be reproduced locally with
forge buildusing the configuration above (pinevm_version = "paris"in the deployment profile); compare the deployedinitcode/runtime bytecode before trusting any derived analysis. eth_getLogsis disabled on the official BOT Mainnet RPC endpoints (see BOT Chain developer documentation); use an indexed explorer or third-party endpoint for log pulls.- This record contains public deployment facts only. Keystores, keys, and signing material are never committed to this repository.