- No matches
Verify a contract
UTN Scan compiles the source you submit and checks it against the bytecode on the network. The form is on the contract's page in Scan. Remix uses the same API.
Nothing on this chain was verified on 8 Oct 2026 (verified_smart_contracts was "0"). getabi for an unverified address returns status "0" and result: null.
In Scan
Open the address, then Verify & publish. Two inputs:
- Single file. Paste flattened source. Set the compiler, the EVM version, the contract name, the optimizer, and the license.
- Standard JSON input. Paste the JSON from Remix (Solidity compiler → Compilation details → Standard JSON input) or a
artifacts/build-info/file. Compiler, optimizer, and contract name are filled from that JSON.
For UmbroOrg26 the settings that match the compiler profile are solc 0.8.28, optimizer on, 200 runs, via IR on. Other contracts in @utn/umbro use the same compiler with via IR off.
Constructor arguments are hex, without a requirement to type them when Scan can detect them. The form sends both spellings the API accepts: constructorArguements and constructorArguments.
The API
Submit verification to the developer API at https://api.utn.network/api. That host accepts POST on /api directly, so a verify body is not cut by the 4 MB limit on the Vercel-hosted Scan site. Scan's form posts the same action.
bash
curl -s https://api.utn.network/api \
-F module=contract \
-F action=verifysourcecode \
-F codeformat=solidity-single-file \
-F contractaddress=0xYOUR_CONTRACT \
-F contractname=UmbroOrg26 \
-F compilerversion=v0.8.28+commit.YOUR_COMMIT \
-F sourceCode="$(cat Flattened.sol)" \
-F optimizationUsed=1 \
-F runs=200 \
-F evmversion=default \
-F licenseType=3compilerversion must be one of the strings from GET /api/v2/smart-contracts/verification/config (solidity_compiler_versions). licenseType is the number in that config's license_types (mit is 3, none is 1).
For Standard JSON, codeformat is solidity-standard-json-input and sourceCode is the JSON text. contractname is File.sol:ContractName when the JSON names a file.
A response with status "1" puts the guid in result. Poll it:
bash
curl -s "https://api.utn.network/api?module=contract&action=checkverifystatus&guid=YOUR_GUID"Scan treats a result that starts with Pass (or contains already verified) as success, and Fail as a mismatch. A guid of 0 returned result "Unknown UID" with status "1" on 8 Oct 2026, so status alone is not the success flag.
optimizationUsed is 1 or 0. Scan's single-file form can retry with the optimizer off and then on when you leave it on "Find it for me".
Field reference: Etherscan-compatible API.