feat!: demote multi_call_entrypoint to non-protocol contract#23197
Merged
dbanks12 merged 8 commits intoMay 29, 2026
Conversation
Contributor
Author
This stack of pull requests is managed by Graphite. Learn more about stacking. |
997ab10 to
2ce0150
Compare
2ce0150 to
0476d27
Compare
707496c to
d4e3d99
Compare
0476d27 to
46bc9fb
Compare
d4e3d99 to
f510541
Compare
46bc9fb to
a7a90ef
Compare
This was referenced May 12, 2026
Merged
a7a90ef to
f693923
Compare
ab09d50 to
9c6cad3
Compare
f693923 to
eff36bd
Compare
9c6cad3 to
17e5f5b
Compare
eff36bd to
d7df886
Compare
91d3f24 to
9899a9f
Compare
cd50c58 to
67a7803
Compare
9899a9f to
0c7eca5
Compare
67a7803 to
3ac3449
Compare
0eac468 to
fd0b6c5
Compare
8764f28 to
85eadfe
Compare
Thunkar
reviewed
May 27, 2026
Thunkar
reviewed
May 27, 2026
Thunkar
reviewed
May 28, 2026
Thunkar
reviewed
May 28, 2026
Thunkar
reviewed
May 28, 2026
Thunkar
reviewed
May 29, 2026
Thunkar
reviewed
May 29, 2026
Thunkar
reviewed
May 29, 2026
Thunkar
approved these changes
May 29, 2026
…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.
This was referenced May 29, 2026
Closed
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.

Demotes multi_call_entrypoint from protocol contract.
Stacked on #23217.