Skip to content

fix(core): Remove ZkLogin and JWK#10737

Draft
jkrvivian wants to merge 20 commits intodevelopfrom
node/remove-zklogin
Draft

fix(core): Remove ZkLogin and JWK#10737
jkrvivian wants to merge 20 commits intodevelopfrom
node/remove-zklogin

Conversation

@jkrvivian
Copy link
Copy Markdown
Contributor

@jkrvivian jkrvivian commented Mar 17, 2026

Description of change

  • Remove ZkLogin authentication and JWK consensus update support from the codebase.
  • Protocol config fields for zklogin are preserved to maintain compatibility with historical protocol versions.
  • ZkLogin variants in enums and consensus transaction kinds are kept, ensuring existing data can still be deserialized.

[run-ci]

Links to any relevant issues

None

How the change has been tested

  • Basic tests (linting, compilation, formatting, unit/integration tests)
  • Patch-specific tests (correctness, functionality coverage)
  • I have added tests that prove my fix is effective or that my feature works
  • I have checked that new and existing unit tests pass locally with my changes

Release Notes

  • Protocol:
    • Removed zkLogin authentication support entirely
    • zkLogin signatures (including within multisig) are now rejected
    • JWK consensus updates no longer occur
  • Nodes (Validators and Full nodes):
    • Removed jwk_fetch_interval_seconds and zklogin_oauth_providers config options
    • Removed JWK periodic fetching and consensus submission
  • Indexer:
  • JSON-RPC:
    • Deprecated ZkLoginAuthenticator and ZkLoginPublicIdentifier schemas
  • GraphQL:
    • Removed verifyZkloginSignature query
    • Removed ZkLoginIntentScope enum and ZkLoginVerifyResult type
  • CLI:
    • Removed keytool commands: zk-login-sign-and-execute-tx, zk-login-enter-token, zk-login-sig-verify, zk-login-insecure-sign-personal-message
    • decode-or-verify-tx now shows "zkLogin is not supported" for zkLogin transactions
  • Rust SDK:
  • REST API:

@jkrvivian jkrvivian added the node Issues related to the Core Node team label Mar 17, 2026
@vercel

This comment was marked as duplicate.

@github-actions github-actions bot added the documentation Improvements or additions to documentation label Mar 17, 2026
@github-actions

This comment was marked as duplicate.

@jkrvivian jkrvivian force-pushed the node/remove-zklogin branch from 96d7e8f to d9767c6 Compare March 25, 2026 10:08
@github-actions

This comment was marked as duplicate.

@github-actions

This comment was marked as duplicate.

@github-actions

This comment was marked as duplicate.

@alexsporn alexsporn added this to the v1.20.0 milestone Mar 25, 2026
@github-actions

This comment was marked as duplicate.

@muXxer muXxer modified the milestones: v1.20.0, v1.21.0 Mar 26, 2026
@jkrvivian jkrvivian self-assigned this Mar 30, 2026
@jkrvivian jkrvivian force-pushed the node/remove-zklogin branch from a3e6154 to 96643a0 Compare March 30, 2026 11:52
@github-actions

This comment was marked as duplicate.

@jkrvivian jkrvivian force-pushed the node/remove-zklogin branch from 96643a0 to 7a723b9 Compare March 30, 2026 13:10
@github-actions

This comment was marked as duplicate.

@jkrvivian jkrvivian force-pushed the node/remove-zklogin branch from 7a723b9 to 571942e Compare March 31, 2026 10:00
@github-actions

This comment was marked as duplicate.

@muXxer muXxer force-pushed the node/remove-zklogin branch from 571942e to fc1e22c Compare March 31, 2026 12:38
@github-actions

This comment was marked as duplicate.

@github-actions

This comment was marked as duplicate.

@jkrvivian jkrvivian force-pushed the node/remove-zklogin branch from c8d757e to dfdda09 Compare April 7, 2026 09:32
@github-actions

This comment was marked as duplicate.

@jkrvivian jkrvivian force-pushed the node/remove-zklogin branch from ed92479 to c868b4f Compare April 14, 2026 17:01
@github-actions
Copy link
Copy Markdown
Contributor

✅ Vercel Preview Deployment is ready!

View Preview

@jkrvivian jkrvivian force-pushed the node/remove-zklogin branch from c868b4f to 97f2f1b Compare April 14, 2026 22:00
@github-actions

This comment was marked as duplicate.

@github-actions
Copy link
Copy Markdown
Contributor

✅ Vercel Preview Deployment is ready!

View Preview

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please, remove the whole file

Comment on lines -1155 to -1159
// zklogin::check_zklogin_id
check_zklogin_id_cost_base: Option<u64>,
// zklogin::check_zklogin_issuer
check_zklogin_issuer_cost_base: Option<u64>,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope

Comment on lines -1155 to -1159
// zklogin::check_zklogin_id
check_zklogin_id_cost_base: Option<u64>,
// zklogin::check_zklogin_issuer
check_zklogin_issuer_cost_base: Option<u64>,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should be marked as deprecated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to be removed from the feature flag list:

  • zklogin_auth
  • enable_jwk_consensus_updates
  • accept_zklogin_in_multisig

in the new protocol version (v25) these should be set to None

  • zklogin_max_epoch_upper_bound_delta
  • max_jwk_votes_per_validator_per_epoch
  • max_age_of_jwk_in_epochs
  • check_zklogin_id_cost_base
  • check_zklogin_issuer_cost_base

Then, remove all the related set functions

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@iotaledger/vm-language TODO: check if these native functions and maybe the whole file can be removed.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can remove it in the next release, the compatibility test test_protocol_upgrade_compatibility_imp failed due to old version still have the zk function, and the VM will look up the native function table at module linking. So we still need the stubs now, otherwise it produced this error:

VMError { major_status: MISSING_DEPENDENCY, ...,
  location: Module(ModuleId { address: 0x2, name: "zklogin_verified_id" }),
  indices: [(FunctionHandle, 0)] }

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the GenericSignature enum, the ZKLogin variant should be kept, but maybe the inner type can be removed (making it possible to delete the zk_login_authenticator.rs file).

@github-actions
Copy link
Copy Markdown
Contributor

✅ Vercel Preview Deployment is ready!

View Preview

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core-protocol documentation Improvements or additions to documentation node Issues related to the Core Node team ts-sdk Issues related to the TS SDK

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants