docs: cut the CREATE2, front-running and registry essays from the interface - #253
Open
thedavidmeister wants to merge 6 commits into
Open
thedavidmeister wants to merge 6 commits into
thedavidmeister wants to merge 6 commits into
Conversation
`CREATE` derives `keccak256(rlp([deployer, nonce]))[12:]` — no chain id — so the same deployer at the same nonce lands at the identical address on every chain. The sentence asserted the opposite as the justification for the necessary condition stated just above it, which stands on its own. Closes #133 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The clause forbade only entry points taking caller-supplied initialization data, so one reaching the same effective-salt image while initializing from a constant, from storage, or not at all was conformant and still occupied the pinned address with a clone the address does not describe. The property is agreement between the `data` hashed into the salt and the bytes `initialize` receives. Closes #165 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…'2026-09-21-issue-165-open-salt-must-not-property' into 2026-09-21-issue-125-interface-natspec-essay
The interface carried ~175 lines of NatSpec on two functions, structured with markdown headings around three rationale blocks: a tutorial on why cross-chain CREATE2 identity needs matching factory and implementation addresses, a Zoltu analogy about a different deployment scheme, and a worked design discussion of another repo's address registry. The normative statements they buried stay; the headings go with them. Merges the #133 and #165 branches, which rewrite lines this cut removes or abuts. Closes #125 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…interface-natspec-essay
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Warning Review limit reachedNext included review available in 40 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (1)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This branch has not been deployed
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.
Closes #125
ICloneableFactoryV4was 240 lines, ~175 of them NatSpec prose, structured as adocument with markdown
#headings inside comment blocks, attached to atwo-function interface. Three blocks argued rather than described:
cross-chain
CREATE2identity needs matching factory AND implementationaddresses — EVM mechanics, not a property of this interface;
the front-running bullets have already stated the property;
repo's product and reasoning about its rebinding windows.
Cut. What survives is the normative content they buried: the exact salt
preimages, the MUST-NOT-mix-caller-derived-values rule, the atomic-initialize
chain, the
tx.originand gas obligations on implementations, the permittedshape of resolving names from
data, and the disjointness property. The four#headings go with them; the paragraphs stand without.
The cross-network statement is kept as one line, because
predictDeterministicAddressOpenSaltpoints at it, and the "reproduce the exactdatabytes, ABI encoding and all" caveat is kept as the consumer-facing cost ofopen-salt.
Branch shape
Branched off
origin/mainand merges2026-09-21-issue-133-create-address-chain-claimand
2026-09-21-issue-165-open-salt-must-not-property. This cut deletes thesentence #133 rewrites and removes the heading immediately above the clause #165
rewrites, so it cannot land independently of either without conflicting. Their
diffs appear here unchanged.
Overlap with open PRs on this file
front-running block. Only the Zoltu analogy ahead of it is deleted here, so
docs: the open-salt address fixes the implementation's address, not its code #191's replacement survives the merge; resolve in its favour.
exactly as
mainhas it so nothing here pre-empts docs: scope the open-salt safety property to the transaction, not the block #189's correction; resolve bytaking docs: scope the open-salt safety property to the transaction, not the block #189's sentence and keeping the registry discussion deleted. docs: scope the open-salt safety property to the transaction, not the block #189 also
adds a bullet after the one deleted here — keep it.
@devat the top of the file anddoes not overlap.
Comment-only. No source, ABI or bytecode change.
QA
text.
to mutate.
src/lib/LibICloneableFactoryV4.sol— every surviving normativestatement was checked against the implementation it constrains
(
effectiveSalt/effectiveOpenSalt,predictCloneAddress,cloneAndInitialize). The deleted blocks constrained nothing in this repo.Swept the whole file for the shape: no markdown headings remain in any comment
block in
src/interface/ICloneableFactoryV4.sol, and the surviving prose isstatements about this interface's own functions.
src/lib/LibICloneableFactoryV4.soland the remaining
src/interface/*.solcarry their own instances, filedseparately ([F22] [LOW] Library header names only the predictions as reading
address(this), butcloneAndInitializereads it too #126, [F23] [LOW]DelegatedImplementationname and doc assert EIP-7702, but the condition is any0xef-leading code #127, [F30] [LOW] Library header claims the derivation "cannot drift from the spec"; only the tag is shared, the preimage shape is duplicated #134, [F45] [INFO] LibICloneableFactoryV4's @notice narrates the repo split by issue number and claims test coverage #149, [F46] [INFO] ICloneableV2.initialize NatSpec is a rationale essay on ABI erasure and delegatecall patterns #150, [F51] [INFO] predictDeterministicAddressOpenSalt NatSpec calls the deployer/data swap "the entire difference" from predictDeterministicAddress, omitting the distinct domain tag #155).src/interface/deprecated/**is frozen.
🤖 Generated with Claude Code