Skip to content

feat(app): scaffold precompile direct-caller chain upgrade#345

Closed
phenix3443 wants to merge 1 commit into
precompile-integrationfrom
precompile/direct-caller-upgrade
Closed

feat(app): scaffold precompile direct-caller chain upgrade#345
phenix3443 wants to merge 1 commit into
precompile-integrationfrom
precompile/direct-caller-upgrade

Conversation

@phenix3443

Copy link
Copy Markdown
Contributor

⚠️ HITL — do not merge without sign-off

Subtask 8. Scaffold only — pairs with the direct-caller change (#344, also held). Opened for review.

What

  • app/upgrades/precompile_direct_caller.go — the v2.1.0-precompile-direct-caller upgrade handler, with rationale, the pending gating-mechanism decision, and a delivery checklist.
  • app/app.go — registers the handler.
  • app/upgrades/PRECOMPILE_DIRECT_CALLER.md — SDK / CLI / contract-integrator migration notes.

What it does NOT do (by design)

  • No gating implemented. The precompile-side EOA-only guard removal (feat(evm): remove EOA-only guard, allow contract calls (direct caller) #344) is currently unconditional. Making it conditional on this upgrade — so pre-upgrade blocks keep EOA-only and only post-upgrade blocks allow contract callers — is a pending design decision (on-chain param flag vs height gate). The handler only runs standard module migrations until that mechanism is chosen.
  • The upgrade cannot be "executed" from here. Choosing the height, cutting the binary, governance MsgSoftwareUpgrade, and testnet fork/replay are chain-ops steps (see the checklist).

Tests

  • go build ./... → ok; go vet ./app/upgrades/ clean; golangci-lint → 0 issues.
  • Base branch is precompile-integration.

Next decision (yours)

Pick the gating mechanism (param flag recommended); then #344 is reworked to gate on it, and this handler flips it at the upgrade height.

Add the v2.1.0-precompile-direct-caller upgrade handler and integrator
migration notes for activating the direct-caller precompile semantics
(removal of EOA-only, contract callers allowed).

This is a SCAFFOLD only: the precompile-side gating (making the EOA-only
guard conditional on the upgrade) is a pending design decision documented in
upgrades.PrecompileDirectCaller (on-chain param flag vs height gate). The
handler currently only runs standard module migrations; it performs no
direct-caller state change until the gating mechanism is chosen.

- app/upgrades/precompile_direct_caller.go: handler + rationale + delivery
  checklist
- app/app.go: register the handler
- app/upgrades/PRECOMPILE_DIRECT_CALLER.md: SDK/CLI/contract-integrator notes
@phenix3443

Copy link
Copy Markdown
Contributor Author

Closing together with #344. This upgrade scaffold only makes sense once the direct-caller change is reworked on top of #332 and the gating mechanism is chosen. Premature until then; the migration-notes doc and handler skeleton stay on the branch for reference when direct-caller is revisited.

@phenix3443 phenix3443 closed this Jul 14, 2026
@phenix3443 phenix3443 deleted the precompile/direct-caller-upgrade branch July 14, 2026 08:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant