Skip to content

feat!: demote multi_call_entrypoint to non-protocol contract#23197

Merged
dbanks12 merged 8 commits into
merge-train/fairiesfrom
dbanks12/demote-multicall-entrypoint
May 29, 2026
Merged

feat!: demote multi_call_entrypoint to non-protocol contract#23197
dbanks12 merged 8 commits into
merge-train/fairiesfrom
dbanks12/demote-multicall-entrypoint

Conversation

@dbanks12

@dbanks12 dbanks12 commented May 12, 2026

Copy link
Copy Markdown
Contributor

Demotes multi_call_entrypoint from protocol contract.

Stacked on #23217.

@dbanks12 dbanks12 changed the base branch from cb/e468a77822a0 to graphite-base/23197 May 12, 2026 16:05
@dbanks12 dbanks12 changed the base branch from graphite-base/23197 to pr-23106 May 12, 2026 16:05

dbanks12 commented May 12, 2026

Copy link
Copy Markdown
Contributor Author

@dbanks12 dbanks12 changed the base branch from pr-23106 to cb/e468a77822a0 May 12, 2026 16:05
@dbanks12 dbanks12 marked this pull request as draft May 12, 2026 16:09
@dbanks12 dbanks12 force-pushed the dbanks12/demote-multicall-entrypoint branch from 997ab10 to 2ce0150 Compare May 12, 2026 17:27
@dbanks12 dbanks12 force-pushed the dbanks12/demote-multicall-entrypoint branch from 2ce0150 to 0476d27 Compare May 12, 2026 18:19
@dbanks12 dbanks12 changed the base branch from cb/e468a77822a0 to dbanks12/demote-public-checks May 12, 2026 18:20
@dbanks12 dbanks12 force-pushed the dbanks12/demote-public-checks branch from 707496c to d4e3d99 Compare May 12, 2026 18:29
@dbanks12 dbanks12 force-pushed the dbanks12/demote-multicall-entrypoint branch from 0476d27 to 46bc9fb Compare May 12, 2026 18:29
@dbanks12 dbanks12 force-pushed the dbanks12/demote-public-checks branch from d4e3d99 to f510541 Compare May 12, 2026 18:51
@dbanks12 dbanks12 force-pushed the dbanks12/demote-multicall-entrypoint branch from 46bc9fb to a7a90ef Compare May 12, 2026 18:51
@dbanks12 dbanks12 force-pushed the dbanks12/demote-multicall-entrypoint branch from a7a90ef to f693923 Compare May 12, 2026 19:24
@dbanks12 dbanks12 force-pushed the dbanks12/demote-public-checks branch from ab09d50 to 9c6cad3 Compare May 12, 2026 19:28
@dbanks12 dbanks12 force-pushed the dbanks12/demote-multicall-entrypoint branch from f693923 to eff36bd Compare May 12, 2026 19:28
@dbanks12 dbanks12 force-pushed the dbanks12/demote-public-checks branch from 9c6cad3 to 17e5f5b Compare May 12, 2026 19:31
@dbanks12 dbanks12 force-pushed the dbanks12/demote-multicall-entrypoint branch from eff36bd to d7df886 Compare May 12, 2026 19:31
@dbanks12 dbanks12 force-pushed the dbanks12/demote-multicall-entrypoint branch from 91d3f24 to 9899a9f Compare May 26, 2026 18:27
@dbanks12 dbanks12 force-pushed the dbanks12/demote-public-checks branch from cd50c58 to 67a7803 Compare May 26, 2026 18:59
@dbanks12 dbanks12 force-pushed the dbanks12/demote-multicall-entrypoint branch from 9899a9f to 0c7eca5 Compare May 26, 2026 18:59
@dbanks12 dbanks12 force-pushed the dbanks12/demote-public-checks branch from 67a7803 to 3ac3449 Compare May 26, 2026 19:15
@dbanks12 dbanks12 force-pushed the dbanks12/demote-multicall-entrypoint branch 2 times, most recently from 0eac468 to fd0b6c5 Compare May 26, 2026 19:28
@dbanks12 dbanks12 force-pushed the dbanks12/demote-public-checks branch 2 times, most recently from 8764f28 to 85eadfe Compare May 26, 2026 19:35
Comment thread yarn-project/entrypoints/src/default_multi_call_entrypoint.ts
Comment thread yarn-project/standard-contracts/src/contract_data.ts Outdated
Comment thread yarn-project/wallets/src/embedded/entrypoints/browser.ts Outdated
Comment thread yarn-project/wallets/src/embedded/entrypoints/node.ts Outdated
Comment thread yarn-project/pxe/src/pxe.ts Outdated
Comment thread yarn-project/pxe/src/pxe.ts Outdated
Comment thread yarn-project/wallets/src/embedded/entrypoints/browser.ts Outdated
dbanks12 added 8 commits May 29, 2026 16:56
…ad provider method

EmbeddedWallet now registers the MultiCallEntrypoint instance with PXE on
creation (mirroring registerAuthRegistry), so DefaultMultiCallEntrypoint
works post-demotion. Removed unused getMulticallContract from the account
contracts provider interface and impls.
multi_call_entrypoint is now a standard (non-protocol) contract. The SDK's
self-paid account deploy flow (DeployAccountMethod with from = NO_FROM) routes
its payload through the multi-call entrypoint, so a PXE that does not know about
it fails contract sync with an opaque "no contract instance" error.

The PXE now preloads the multi-call entrypoint at init via an injected
MultiCallEntrypointProvider, registered through registerContract right after the
protocol contracts. Routing through registerContract (rather than writing to the
contract store directly) also registers the contract's public function
signatures with the node, keeping that invariant intact.

Includes the supporting changes that were split across the squashed commits:
- rename standard-contracts multi-call-entrypoint/address.ts -> constants.ts and
  export STANDARD_MULTI_CALL_ENTRYPOINT_SALT
- stamp the multi-call entrypoint address into the Noir standard_addresses
  constants
- preload the multi-call entrypoint in EmbeddedWallet (and parallelize its
  registration)
- refresh yarn.lock after the rebase
…actsProvider

Address review feedback on the multi-call entrypoint demotion:
- Replace MultiCallEntrypointProvider with a generic PreloadedContractsProvider that
  returns a list of contracts to preload, so a wallet can supply its own provider with
  additional contracts.
- Run the protocol-contract and preloaded-contract registration concurrently in
  PXE.create, and parallelize the per-contract registration loops.
- Drop the now-duplicated registerMultiCallEntrypoint from EmbeddedWallet (browser/node)
  and remove the dead wallet method, since the PXE preloads it.
…beddedWallet preloads multicall + AuthRegistry

- Add an optional preloadedContractsProvider to PXECreationOptions. createPXE uses it directly, or
  falls back to the default (the standard multi-call entrypoint).
- EmbeddedWallet supplies a complete provider (multi-call entrypoint + AuthRegistry), replacing the
  post-construction registerAuthRegistry call. The dead registerAuthRegistry method is removed.
- Fix splitPxeOptions dropping hooks and preloadedContractsProvider from the unified pxe option.
…-train/fairies

The message-signing/fallback-keys change (PublicKeys.mspk_m_hash) shifts
PublicKeys.default(), which feeds the contract instance address hash, so the
standard contract instance addresses move. Class IDs are unchanged (artifact
bytecode/VKs are identical). The regenerated AuthRegistry and PublicChecks
addresses match merge-train/fairies exactly.
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.

2 participants