Conversation
Safe contracts on TRON are not deployed at the canonical addresses, so the seeder never flagged the real MultiSendCallOnly/SignMessageLib as trusted for delegate call and the CGW rejected TX Builder batches with "Delegate call is disabled". Add SAFE_DEPLOYMENTS_OVERRIDES with the current TRON Mainnet (728126428) and Shasta (2494104990) 1.4.1 deployments. Override chains seed only their own contracts (and are seeded even on an empty database); canonical rows that already exist on an override chain lose their trusted flag, since no code lives at those addresses there. ABI lookup is scoped per chain. Non-override chains are unchanged. CONTRACTS_TRUSTED_FOR_DELEGATE_CALL is untouched (MultiSend stays untrusted, as upstream). Ported from tron-staging ac39dcf onto the staging seeder.
feat: seed per-chain Safe deployment overrides for TRON
ElvisKrop
reviewed
Sep 14, 2026
Comment on lines
+23
to
+24
| TRON_SHASTA_CHAIN_ID = 2494104990 | ||
| TRON_MAINNET_CHAIN_ID = 728126428 |
Member
There was a problem hiding this comment.
@nick8319 I'd suggest using the chan ids from safe-eth-py:
ElvisKrop
approved these changes
Sep 14, 2026
ElvisKrop
left a comment
Member
There was a problem hiding this comment.
Left one non-blocking item above about reusing the chain ID constants from safe-eth-py instead of redefining them locally. Nothing else blocking - good to merge.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings the Tron deployment overrides from
stagingtoproduction.Required for the Tron rollout on the production shared UI: without it, the decoder seeds canonical EVM addresses as trusted on the Tron chain id, and the Tron
MultiSendCallOnly/SignMessageLibnever become trusted for delegate call. The result is "Delegate call is disabled" (422) on any Transaction Builder batch.What it does
app/config.py: addsSAFE_DEPLOYMENTS_OVERRIDES, a per-chain map of contract name to addresses, populated with the eight Tron contracts for Mainnet (728126428) and Shasta (2494104990).app/services/safe_contracts_service.py:update_safe_contracts_infonow iterates over the union of chain ids in the database and chain ids in the overrides. For an override chain only the overridden addresses are seeded;_revoke_stale_canonical_trustclears trust from canonical addresses previously seeded on that chain.CONTRACTS_TRUSTED_FOR_DELEGATE_CALL, so on TronMultiSendCallOnlyandSignMessageLibbecome trusted andMultiSenddoes not.Verification on staging
Deployed as
8b1f431ondecoder.stage.safe.protofire.io. After the seeding cron ran:MultiSendCallOnlyandSignMessageLibtrusted,MultiSendandSafeL2not trusted.Batch execution verified end to end on Tron Mainnet: tx
0xd4bd8a1bb67225fd1fe3ec16e69574146c4bf75e94134f21c3ffceb615b3aad8, block 86066156.Notes
productionis currently at7565131, the direct parent of the merge onstaging, so this is a fast-forward with no conflicts. 10 tests added, all passing.