Skip to content

fix(smtchecker): stop ICE on TRON crypto builtins#121

Merged
CodeNinjaEvan merged 1 commit into
tronprotocol:release_0.8.28from
yanghang8612:fix/smtchecker-tron-builtins
Jun 25, 2026
Merged

fix(smtchecker): stop ICE on TRON crypto builtins#121
CodeNinjaEvan merged 1 commit into
tronprotocol:release_0.8.28from
yanghang8612:fix/smtchecker-tron-builtins

Conversation

@yanghang8612

Copy link
Copy Markdown

Summary

Running the SMTChecker on any contract that calls one of the six TRON crypto/zk builtins crashes the compiler with an internal error.

Problem

SMTEncoder::endVisit(FunctionCall) routes validatemultisign, batchvalidatesign, verifyMintProof, verifyBurnProof, verifyTransferProof and pedersenHash into visitCryptoFunction(), but that function only handles KECCAK256 / SHA256 / RIPEMD160 / ECRecover and solAssert(false)s on anything else — raising an InternalCompilerError. As a result solc --model-checker-engine all ICEs on, for example, a shielded-TRC20 contract using verifyMintProof / pedersenHash.

Fix

Let those six TRON builtins fall through to the default branch — the same "Assertion checker does not yet implement this type of function call" warning that the other ~30 TRON builtins already get — instead of routing them into visitCryptoFunction(). The four upstream crypto builtins are unaffected.

Verification

solc --model-checker-engine all no longer ICEs on a contract calling validatemultisign / verifyMintProof; the upstream crypto builtins still go through visitCryptoFunction.

Targets release_0.8.28.

🤖 Generated with Claude Code

The 6 TRON crypto/zk builtins were routed into visitCryptoFunction, which
solAssert(false)s on them, crashing the model checker. Let them fall to the
default unsupported-call warning like the other TRON builtins.
@github-actions

Copy link
Copy Markdown

Thank you for your contribution to the Solidity compiler! A team member will follow up shortly.

If you haven't read our contributing guidelines and our review checklist before, please do it now, this makes the reviewing process and accepting your contribution smoother.

If you have any questions or need our help, feel free to post them in the PR or talk to us directly on the #solidity-dev channel on Matrix.

@yanghang8612 yanghang8612 marked this pull request as ready for review June 25, 2026 07:50
@CodeNinjaEvan CodeNinjaEvan merged commit 1587dd0 into tronprotocol:release_0.8.28 Jun 25, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants