Skip to content

Conversation

arr00
Copy link
Contributor

@arr00 arr00 commented Jun 16, 2025

Summary by CodeRabbit

  • Documentation
    • Clarified token standard support (ERC-20, ERC-721, ERC-1155, ERC-6909) and removed promotional text.
    • Expanded ERC-20 voting guide with a minimal example and cross-reference.
    • Numerous grammar, wording, and structural improvements across access control, accounts, governance, utilities, cryptography, and guides.
  • Refactor
    • Renamed mock function enableRentrancy → enableReentrancy (public test helper).
  • Tests
    • Switched assertions to use .to.be.revertedWithCustomError and updated tests to reflect the renamed mock function.

Copy link

changeset-bot bot commented Jun 16, 2025

⚠️ No Changeset found

Latest commit: 4ccb299

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@Amxx Amxx requested a review from a team as a code owner June 17, 2025 12:18
@arr00 arr00 removed the request for review from a team June 20, 2025 13:31
@ernestognw ernestognw mentioned this pull request Aug 4, 2025
3 tasks
Copy link

coderabbitai bot commented Aug 28, 2025

Walkthrough

Editorial and minor code edits across contracts, docs, scripts, and tests: README token wording and Defender promo removed; import switched to IERC165; Strings.escapeJSON loop counter initialized; local var queueidqueueId; mock public method renamed enableRentrancyenableReentrancy with corresponding test updates. No behavioral changes.

Changes

Cohort / File(s) Summary
Repo README & docs
README.md, contracts/token/ERC20/README.adoc, contracts/utils/cryptography/README.adoc, docs/modules/ROOT/pages/*
Removed Defender promotional line; Tokens bullet now lists supported ERCs (ERC‑20, ERC‑721, ERC‑1155, ERC‑6909); multiple grammar/wording fixes and minor structural doc edits (links, headers, notes).
Access Control
contracts/access/extensions/AccessControlDefaultAdminRules.sol, contracts/access/extensions/IAccessControlDefaultAdminRules.sol
Import path changed to IERC165.sol; doc formatting/grammar tweaks; no API/behavior changes.
Access manager interfaces
contracts/access/manager/AccessManager.sol, contracts/access/manager/IAccessManager.sol
Doc comment grammar fixes only; public API unchanged.
Accounts / AA
contracts/account/extensions/draft-ERC7821.sol, contracts/account/utils/EIP7702Utils.sol
Documentation typos fixed; no logic changes.
Governance
contracts/governance/Governor.sol, contracts/governance/IGovernor.sol, contracts/governance/extensions/GovernorStorage.sol, contracts/governance/extensions/GovernorTimelockControl.sol
Doc grammar fixes; local variable rename queueidqueueId in state(); logic unchanged.
Finance
contracts/finance/VestingWallet.sol
Doc comment grammar fix in release().
Interfaces
contracts/interfaces/IERC3156FlashLender.sol
Doc wording corrected (“lended”→“lent”); signature unchanged.
MetaTx
contracts/metatx/ERC2771Context.sol
Doc wording correction only.
Mocks & tests (reentrancy)
contracts/mocks/TimelockReentrant.sol, test/governance/TimelockController.test.js
Public function renamed enableRentrancyenableReentrancy; tests updated to call the new name.
ERC‑721 docs & utils
contracts/token/ERC721/extensions/ERC721Consecutive.sol, contracts/token/ERC721/utils/ERC721Utils.sol
Documentation grammar fixes; no behavior changes.
Utilities
contracts/utils/Base64.sol, contracts/utils/Bytes.sol, contracts/utils/SlotDerivation.sol, contracts/utils/Strings.sol, contracts/utils/cryptography/ECDSA.sol, contracts/utils/cryptography/draft-ERC7739Utils.sol, contracts/utils/draft-InteroperableAddress.sol, contracts/utils/math/Math.sol, contracts/utils/structs/CircularBuffer.sol, contracts/utils/types/Time.sol
Doc cleanups across many files; Strings.escapeJSON loop now explicitly initializes i = 0; no semantic changes.
Scripts
scripts/generate/templates/SlotDerivation.js
Example updated to using SlotDerivation for *;.
Tests — assertion style
test/account/AccountMultiSigner.test.js, test/token/ERC20/ERC20.behavior.js
Chai assertion chains adjusted to .to.be.revertedWithCustomError(...); semantics unchanged.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Poem

A rabbit taps keys with a twinkle, so neat,
Polishing words where the comments all meet.
A loop gets a zero, a name learns an “e,”
Docs point the way, as tidy as can be.
Hop-hop—no logic disturbed, just sweeter to read.


📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between f32cfdb and 4ccb299.

📒 Files selected for processing (4)
  • docs/modules/ROOT/pages/account-abstraction.adoc (4 hunks)
  • docs/modules/ROOT/pages/accounts.adoc (2 hunks)
  • docs/modules/ROOT/pages/eoa-delegation.adoc (1 hunks)
  • docs/modules/ROOT/pages/erc721.adoc (1 hunks)
✅ Files skipped from review due to trivial changes (3)
  • docs/modules/ROOT/pages/eoa-delegation.adoc
  • docs/modules/ROOT/pages/erc721.adoc
  • docs/modules/ROOT/pages/accounts.adoc
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/modules/ROOT/pages/account-abstraction.adoc
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: tests-foundry
  • GitHub Check: tests-upgradeable
  • GitHub Check: tests
  • GitHub Check: coverage
✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch typo-fixes

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.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbit in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbit in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbit gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbit read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbit help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbit ignore or @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbit summary or @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbit or @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
contracts/utils/cryptography/draft-ERC7739Utils.sol (2)

64-66: Repair broken sentence in NOTE.

Second line “data instead.” is dangling; fold into a single clear sentence.

Apply this diff:

- * NOTE: This function returns empty if the input format is invalid instead of reverting.
- * data instead.
+ * NOTE: This function returns empty values if the input format is invalid instead of reverting.

102-103: Grammar: “used to simulate”, not “used to simulates”.

Tighten phrasing in the personal_sign note.

Apply this diff:

- * This is used to simulates the `personal_sign` RPC method in the context of smart contracts.
+ * This is used to simulate the `personal_sign` RPC method in the context of smart contracts.
🧹 Nitpick comments (4)
contracts/mocks/docs/ERC4626Fees.sol (1)

48-61: Fix doc cross-references to point to ERC4626 hooks, not IERC4626

IERC4626 doesn’t define _deposit/_withdraw; these are ERC4626 internals. Update the links to avoid broken references.

-    /// @dev Send entry fee to {_entryFeeRecipient}. See {IERC4626-_deposit}.
+    /// @dev Send entry fee to {_entryFeeRecipient}. See {ERC4626-_deposit}.
@@
-    /// @dev Send exit fee to {_exitFeeRecipient}. See {IERC4626-_deposit}.
+    /// @dev Send exit fee to {_exitFeeRecipient}. See {ERC4626-_withdraw}.
contracts/token/ERC20/README.adoc (1)

24-24: Tighten phrasing and align with list style (avoid parenthetical inside link).

Consider inlining the cross-reference and rendering contract names monospace for consistency.

-* {ERC20Votes}: support for voting and vote delegation. xref:governance.adoc#token[See the governance guide for a minimal example (with the required overrides when combining ERC20 + ERC20Permit + ERC20Votes)].
+* {ERC20Votes}: support for voting and vote delegation; see xref:governance.adoc#token[the governance guide] for a minimal example with the required overrides when combining `ERC20`, `ERC20Permit`, and `ERC20Votes`.
contracts/access/extensions/IAccessControlDefaultAdminRules.sol (1)

189-189: Minor grammar nit: use “e.g.”

Prefer “e.g.” over “eg.” in parenthetical.

Apply this diff:

-     * possibility of human intervention in the case of an input error (eg. set milliseconds instead of seconds).
+     * possibility of human intervention in the case of an input error (e.g. set milliseconds instead of seconds).
contracts/mocks/TimelockReentrant.sol (1)

9-9: Visibility consistency nit.

Other state vars here are private; make _reentered private for consistency.

-    bool _reentered;
+    bool private _reentered;
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 53bb340 and f32cfdb.

📒 Files selected for processing (39)
  • README.md (1 hunks)
  • contracts/access/extensions/AccessControlDefaultAdminRules.sol (2 hunks)
  • contracts/access/extensions/IAccessControlDefaultAdminRules.sol (1 hunks)
  • contracts/access/manager/AccessManager.sol (1 hunks)
  • contracts/access/manager/IAccessManager.sol (3 hunks)
  • contracts/account/extensions/draft-ERC7821.sol (1 hunks)
  • contracts/account/utils/EIP7702Utils.sol (1 hunks)
  • contracts/finance/VestingWallet.sol (1 hunks)
  • contracts/governance/Governor.sol (1 hunks)
  • contracts/governance/IGovernor.sol (1 hunks)
  • contracts/governance/extensions/GovernorStorage.sol (1 hunks)
  • contracts/governance/extensions/GovernorTimelockControl.sol (2 hunks)
  • contracts/interfaces/IERC3156FlashLender.sol (1 hunks)
  • contracts/metatx/ERC2771Context.sol (1 hunks)
  • contracts/mocks/TimelockReentrant.sol (1 hunks)
  • contracts/mocks/docs/ERC4626Fees.sol (1 hunks)
  • contracts/token/ERC20/README.adoc (1 hunks)
  • contracts/token/ERC721/extensions/ERC721Consecutive.sol (1 hunks)
  • contracts/token/ERC721/utils/ERC721Utils.sol (1 hunks)
  • contracts/utils/Base64.sol (1 hunks)
  • contracts/utils/Bytes.sol (1 hunks)
  • contracts/utils/SlotDerivation.sol (1 hunks)
  • contracts/utils/Strings.sol (1 hunks)
  • contracts/utils/cryptography/ECDSA.sol (1 hunks)
  • contracts/utils/cryptography/README.adoc (1 hunks)
  • contracts/utils/cryptography/draft-ERC7739Utils.sol (1 hunks)
  • contracts/utils/draft-InteroperableAddress.sol (1 hunks)
  • contracts/utils/math/Math.sol (1 hunks)
  • contracts/utils/structs/CircularBuffer.sol (1 hunks)
  • contracts/utils/types/Time.sol (1 hunks)
  • docs/modules/ROOT/pages/access-control.adoc (1 hunks)
  • docs/modules/ROOT/pages/account-abstraction.adoc (3 hunks)
  • docs/modules/ROOT/pages/accounts.adoc (1 hunks)
  • docs/modules/ROOT/pages/erc6909.adoc (2 hunks)
  • docs/modules/ROOT/pages/utilities.adoc (1 hunks)
  • scripts/generate/templates/SlotDerivation.js (1 hunks)
  • test/account/AccountMultiSigner.test.js (1 hunks)
  • test/governance/TimelockController.test.js (2 hunks)
  • test/token/ERC20/ERC20.behavior.js (1 hunks)
🧰 Additional context used
🪛 LanguageTool
README.md

[grammar] ~69-~69: There might be a mistake here.
Context: ...ERC-20, ERC-721, ERC-1155, and ERC-6909. * [Utilities](https://docs.openzeppelin.com...

(QB_NEW_EN)

🪛 Gitleaks (8.27.2)
test/token/ERC20/ERC20.behavior.js

81-81: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: halmos
  • GitHub Check: tests-upgradeable
  • GitHub Check: coverage
  • GitHub Check: slither
  • GitHub Check: tests-foundry
  • GitHub Check: tests
🔇 Additional comments (46)
contracts/utils/Base64.sol (1)

36-39: LGTM: Correct “licence” → “license”.

Doc typo fix reads well; no functional impact.

contracts/finance/VestingWallet.sol (1)

109-112: Doc comment grammar fix LGTM.

“has already vested” is correct here. No functional changes introduced.

contracts/mocks/docs/ERC4626Fees.sol (1)

36-36: Typo fix LGTM

“withdrawal” is the correct noun; matches the style of nearby comments.

contracts/utils/cryptography/draft-ERC7739Utils.sol (1)

62-62: Typo fix looks good.

Removal of the duplicated “the” improves clarity. No behavior impact.

contracts/utils/Strings.sol (1)

469-486: Explicit loop initialization improves clarity; LGTM

Initializing i to 0 explicitly makes intent clear and keeps style consistent with other loops in this file. No behavioral or gas impact.

contracts/account/utils/EIP7702Utils.sol (1)

15-16: Typo fix LGTM.

Grammar correction reads well; no functional impact.

docs/modules/ROOT/pages/access-control.adoc (1)

126-126: Grammar fix LGTM.

Subject–verb agreement is correct; reads smoothly.

scripts/generate/templates/SlotDerivation.js (1)

20-21: Broadened example usage is correct.

using SlotDerivation for *; better reflects extension across types and compiles under ^0.8.20.

contracts/metatx/ERC2771Context.sol (1)

11-16: Wording fix LGTM.

“Rely on” is correct; clarity improved.

contracts/token/ERC721/utils/ERC721Utils.sol (1)

10-10: Doc grammar fix looks good.

No functional changes; comment reads correctly.

docs/modules/ROOT/pages/erc6909.adoc (2)

3-3: Subject–verb agreement fix is correct.

“are” matches the plural “goals.”


17-17: Typos corrected.

“will be minted” reads correctly and improves clarity.

contracts/governance/extensions/GovernorStorage.sol (1)

9-9: Doc wording corrected.

“module” singular is correct; no behavioral change.

docs/modules/ROOT/pages/utilities.adoc (1)

267-267: Spelling fix LGTM.

“comparator function” is correct.

contracts/utils/draft-InteroperableAddress.sol (1)

24-24: All ERC-7930 references are consistent across the repo.

No stale ERC-7390 mentions found; approving changes.

test/token/ERC20/ERC20.behavior.js (2)

81-82: Assertion chain fix is correct and consistent with chai style.

.to.be.revertedWithCustomError reads better and matches other tests in this file.


80-82: Ignore gitleaks false positive at this location.

This is an assertion chain, not a credential. No action needed.

contracts/utils/Bytes.sol (1)

171-171: Doc wording nit fixed correctly.

“Inspired by” is the proper phrasing. No code impact.

contracts/utils/math/Math.sol (1)

137-141: Ternary doc corrected to match parameters.

“condition ? a : b” now aligns with the function signature. Implementation unchanged.

contracts/token/ERC721/extensions/ERC721Consecutive.sol (1)

23-24: Grammar fix reads correctly.

“tokens are minted in batch” improves clarity; no behavioral change.

contracts/utils/cryptography/README.adoc (1)

4-4: Docs link updated; verify anchor resolves.

The anchor #cryptography looks right; please confirm the rendered docs resolve to the intended section after publish.

contracts/utils/types/Time.sol (1)

40-41: LGTM: grammar fix.

Docstring reads correctly now (“transition happens”).

contracts/utils/cryptography/ECDSA.sol (1)

57-59: LGTM: doc readability.

Blank line improves the list separation without affecting Natspec parsing.

test/account/AccountMultiSigner.test.js (2)

179-182: Assertion style update is correct.

.to.be.revertedWithCustomError matches chai style used elsewhere; args (2, 3) remain intact.


184-187: Consistent revert style for zero-threshold case.

Switch aligns with suite-wide convention.

contracts/access/extensions/IAccessControlDefaultAdminRules.sol (1)

185-185: Typo fix LGTM.

"be overrode" → "be overridden" is correct.

contracts/utils/SlotDerivation.sol (1)

19-19: Doc example improvement LGTM.

Using SlotDerivation for * better reflects available overloads (bytes32, string, bytes).

contracts/interfaces/IERC3156FlashLender.sol (1)

14-14: Grammar fix LGTM.

“lended” → “lent” is correct.

contracts/account/extensions/draft-ERC7821.sol (1)

13-13: Duplicate word fix LGTM.

“supports supports” → “supports”.

contracts/mocks/TimelockReentrant.sol (1)

15-18: Rename complete: no enableRentrancy occurrences remain.

test/governance/TimelockController.test.js (1)

421-421: Approve enableReentrancy rename
No remaining enableRentrancy calls found in the codebase.

contracts/utils/structs/CircularBuffer.sol (1)

24-24: Doc typo fix acknowledged.

Removed stray asterisk; comment reads cleanly.

docs/modules/ROOT/pages/account-abstraction.adoc (3)

31-31: Improved NOTE on preVerificationGas; LGTM.


39-39: Minor grammar tweak; LGTM.


86-86: Wording fix in Paymaster section; LGTM.

contracts/access/extensions/AccessControlDefaultAdminRules.sol (3)

11-11: Use IERC165, not ERC165, for the inheritdoc reference; good fix.


360-360: Comment polish; LGTM.


367-367: Comment polish; LGTM.

contracts/access/manager/IAccessManager.sol (3)

126-126: Grammar fix (“event of an”); LGTM.


173-173: Pluralization fix (“operations”); LGTM.


379-379: Pluralization/wording fix; LGTM.

contracts/access/manager/AccessManager.sol (1)

72-72: LGTM — grammar fix only

Comment corrected; no code or storage layout impact.

contracts/governance/IGovernor.sol (1)

337-347: LGTM — clarify “Vote starts after a delay”

Docstring now reads cleanly; API and behavior unchanged.

contracts/governance/Governor.sol (1)

662-664: LGTM — doc grammar (“executes actions”)

Comment fix only; no functional changes.

contracts/governance/extensions/GovernorTimelockControl.sol (2)

12-12: LGTM — doc clarity on timelock delay

Wording now accurately reflects that the delay applies to successful proposals.


50-54: LGTM — local variable rename to queueId

Improves readability; references updated consistently; logic unchanged.

Comment on lines 59 to 61
* - `APP_DOMAIN_SEPARATOR` is the EIP-712 {EIP712-_domainSeparatorV4} of the application smart contract that is
* requesting the signature verification (though ERC-1271).
* - `contentsHash` is the hash of the underlying data structure or message.
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Fix preposition: “through ERC-1271”, not “though”.

Minor doc grammar issue within the bullet describing APP_DOMAIN_SEPARATOR.

Apply this diff:

- *   requesting the signature verification (though ERC-1271).
+ *   requesting the signature verification (through ERC-1271).
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
* - `APP_DOMAIN_SEPARATOR` is the EIP-712 {EIP712-_domainSeparatorV4} of the application smart contract that is
* requesting the signature verification (though ERC-1271).
* - `contentsHash` is the hash of the underlying data structure or message.
* - `APP_DOMAIN_SEPARATOR` is the EIP-712 {EIP712-_domainSeparatorV4} of the application smart contract that is
* requesting the signature verification (through ERC-1271).
* - `contentsHash` is the hash of the underlying data structure or message.
🤖 Prompt for AI Agents
In contracts/utils/cryptography/draft-ERC7739Utils.sol around lines 59 to 61,
the documentation has a typo using "though ERC-1271" instead of the correct
preposition "through ERC-1271"; update the comment to read "through ERC-1271" to
fix the grammar.

@@ -95,6 +95,6 @@ To process a bundle of `UserOperations`, bundlers call xref:api:account.adoc#Acc

These rules outline the requirements for operations to be processed by the canonical mempool.

Accounts can access its own storage during the validation phase, they might easily violate ERC-7562 storage access rules in undirect ways. For example, most accounts access their public keys from storage when validating a signature, limiting the ability of having accounts that validate operations for other accounts (e.g. via ERC-1271)
Accounts can access their own storage during the validation phase, they might easily violate ERC-7562 storage access rules in indirect ways. For example, most accounts access their public keys from storage when validating a signature, limiting the ability of having accounts that validate operations for other accounts (e.g. via https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]))
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Fix extra closing parenthesis in link.

There’s an extra ) after the ERC-1271 link.

-Accounts can access their own storage during the validation phase, they might easily violate ERC-7562 storage access rules in indirect ways. For example, most accounts access their public keys from storage when validating a signature, limiting the ability of having accounts that validate operations for other accounts (e.g. via https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]))
+Accounts can access their own storage during the validation phase, they might easily violate ERC-7562 storage access rules in indirect ways. For example, most accounts access their public keys from storage when validating a signature, limiting the ability of having accounts that validate operations for other accounts (e.g. via https://eips.ethereum.org/EIPS/eip-1271[ERC-1271])
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Accounts can access their own storage during the validation phase, they might easily violate ERC-7562 storage access rules in indirect ways. For example, most accounts access their public keys from storage when validating a signature, limiting the ability of having accounts that validate operations for other accounts (e.g. via https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]))
Accounts can access their own storage during the validation phase, they might easily violate ERC-7562 storage access rules in indirect ways. For example, most accounts access their public keys from storage when validating a signature, limiting the ability of having accounts that validate operations for other accounts (e.g. via https://eips.ethereum.org/EIPS/eip-1271[ERC-1271])
🤖 Prompt for AI Agents
In docs/modules/ROOT/pages/account-abstraction.adoc around line 98, there is an
extra closing parenthesis after the ERC-1271 link; remove the stray ')' so the
sentence ends with the link only (e.g. change "via
https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]))" to "via
https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]").

@@ -33,7 +33,7 @@ TIP: Given xref:api:utils/cryptography.adoc#SignerERC7913[`SignerERC7913`] provi

==== Accounts factory

The first time you send an user operation, your account will be created deterministically (i.e. its code and address can be predicted) using the the `initCode` field in the UserOperation. This field contains both the address of a smart contract (the factory) and the data required to call it and create your smart account.
The first time you send an user operation, your account will be created deterministically (i.e. its code and address can be predicted) using the `initCode` field in the UserOperation. This field contains both the address of a smart contract (the factory) and the data required to call it and create your smart account.
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Fix article usage (“a user operation”).

“User” starts with a consonant sound; use “a,” not “an.”

Apply this diff:

-The first time you send an user operation, your account will be created deterministically (i.e. its code and address can be predicted) using the `initCode` field in the UserOperation. This field contains both the address of a smart contract (the factory) and the data required to call it and create your smart account.
+The first time you send a user operation, your account will be created deterministically (i.e. its code and address can be predicted) using the `initCode` field in the UserOperation. This field contains both the address of a smart contract (the factory) and the data required to call it and create your smart account.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
The first time you send an user operation, your account will be created deterministically (i.e. its code and address can be predicted) using the `initCode` field in the UserOperation. This field contains both the address of a smart contract (the factory) and the data required to call it and create your smart account.
The first time you send a user operation, your account will be created deterministically (i.e. its code and address can be predicted) using the `initCode` field in the UserOperation. This field contains both the address of a smart contract (the factory) and the data required to call it and create your smart account.
🤖 Prompt for AI Agents
In docs/modules/ROOT/pages/accounts.adoc around line 36, the article before
"user operation" is incorrect ("an user operation"); change it to "a user
operation" so the sentence reads "...the first time you send a user
operation..." and update any identical occurrences in the file for consistency.

README.md Outdated
@@ -68,7 +66,7 @@ To keep your system secure, you should **always** use the installed code as-is,
The guides in the [documentation site](https://docs.openzeppelin.com/contracts) will teach about different concepts, and how to use the related contracts that OpenZeppelin Contracts provides:

* [Access Control](https://docs.openzeppelin.com/contracts/access-control): decide who can perform each of the actions on your system.
* [Tokens](https://docs.openzeppelin.com/contracts/tokens): create tradeable assets or collectives, and distribute them via [Crowdsales](https://docs.openzeppelin.com/contracts/crowdsales).
* [Tokens](https://docs.openzeppelin.com/contracts/tokens): create tradeable assets or collectives for popular ERC standards like ERC-20, ERC-721, ERC-1155, and ERC-6909.
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Typo: “collectives” → “collectibles”.

Correct terminology for token items.

-* [Tokens](https://docs.openzeppelin.com/contracts/tokens): create tradeable assets or collectives for popular ERC standards like ERC-20, ERC-721, ERC-1155, and ERC-6909.
+* [Tokens](https://docs.openzeppelin.com/contracts/tokens): create tradeable assets or collectibles for popular ERC standards like ERC-20, ERC-721, ERC-1155, and ERC-6909.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
* [Tokens](https://docs.openzeppelin.com/contracts/tokens): create tradeable assets or collectives for popular ERC standards like ERC-20, ERC-721, ERC-1155, and ERC-6909.
* [Tokens](https://docs.openzeppelin.com/contracts/tokens): create tradeable assets or collectibles for popular ERC standards like ERC-20, ERC-721, ERC-1155, and ERC-6909.
🧰 Tools
🪛 LanguageTool

[grammar] ~69-~69: There might be a mistake here.
Context: ...ERC-20, ERC-721, ERC-1155, and ERC-6909. * [Utilities](https://docs.openzeppelin.com...

(QB_NEW_EN)

🤖 Prompt for AI Agents
In README.md around line 69, the word "collectives" is a typo and should be
"collectibles"; update the sentence to use "collectibles" so it reads "...create
tradeable assets or collectibles for popular ERC standards..." ensuring correct
terminology for token items.

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

Successfully merging this pull request may close these issues.