Skip to content

Tutorial: custom bridges (also how do have SuperchainERC20 equivalence without using the same addresses) #1574

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 24 commits into
base: main
Choose a base branch
from

Conversation

qbzzt
Copy link
Contributor

@qbzzt qbzzt commented Apr 14, 2025

Description

How to make a custom bridge, and how to use that when you can upgrade your ERC-20 but you can't create ERC-20 in the same address elsewhere.

Tests

N/A

Additional context

N/A

Metadata

This should be merged after #1525

@qbzzt qbzzt changed the title Tutorial: custom bridges (also Tutorial: custom bridges (also how do have SuperchainERC20 equivalence without using the same addresses) Apr 14, 2025
Copy link

netlify bot commented Apr 14, 2025

Deploy Preview for docs-optimism ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit f33ceff
🔍 Latest deploy log https://app.netlify.com/sites/docs-optimism/deploys/6806a1a806d0e000089ffbd6
😎 Deploy Preview https://deploy-preview-1574--docs-optimism.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@qbzzt qbzzt marked this pull request as ready for review April 17, 2025 19:38
@qbzzt qbzzt requested a review from a team as a code owner April 17, 2025 19:38
Copy link
Contributor

coderabbitai bot commented Apr 17, 2025

📝 Walkthrough

Walkthrough

This change introduces a new tutorial and supporting resources for creating a custom ERC20 token bridge across Superchain networks when token contract addresses differ between chains. It adds a detailed tutorial article in the interoperability section explaining how to use beacon proxies and upgradeable beacons to manage contract upgrades and cross-chain interoperability. Two new Solidity contracts are included: InteropToken, an upgradeable ERC20 token with cross-chain minting and burning capabilities, and CustomBridge, a cross-chain bridge contract that handles token burning, cross-domain messaging, and minting on the destination chain. A shell script automates the deployment of upgradeable ERC20 tokens and beacon proxies on different networks. Additionally, metadata JSON files are added or updated to register the new tutorial, and minor formatting changes are made to an unrelated tutorial and a word list file.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant CustomBridge (Chain A)
    participant L2ToL2Messenger
    participant CustomBridge (Chain B)
    participant InteropToken (Chain A)
    participant InteropToken (Chain B)

    User->>CustomBridge (Chain A): sendERC20(_to, _amount)
    CustomBridge (Chain A)->>InteropToken (Chain A): crosschainBurn(User, _amount)
    CustomBridge (Chain A)->>L2ToL2Messenger: send message (relayERC20)
    L2ToL2Messenger->>CustomBridge (Chain B): relayERC20(_from, _to, _amount)
    CustomBridge (Chain B)->>InteropToken (Chain B): crosschainMint(_to, _amount)
Loading

Suggested labels

flag:merge-pending-release

Suggested reviewers

  • cpengilly
  • krofax
  • bradleycamacho

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.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai 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:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

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

Documentation and Community

  • 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
Contributor

@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: 3

🧹 Nitpick comments (16)
public/tutorials/InteropToken.sol (3)

16-25: Consider adding protection against zero-address transfers.

The crosschainMint function has appropriate access control but lacks validation for zero addresses.

function crosschainMint(address _to, uint256 _amount) external {
    require(msg.sender == PredeployAddresses.SUPERCHAIN_TOKEN_BRIDGE, "Unauthorized");
+   require(_to != address(0), "Cannot mint to zero address");

    _mint(_to, _amount);

    emit CrosschainMint(_to, _amount, msg.sender);
}

38-42: Consider removing 'virtual' from supportsInterface.

The supportsInterface method is marked as virtual but isn't meant to be overridden since this is a concrete implementation.

- function supportsInterface(bytes4 _interfaceId) public view virtual returns (bool) {
+ function supportsInterface(bytes4 _interfaceId) public view returns (bool) {
    return _interfaceId == type(IERC7802).interfaceId || _interfaceId == type(IERC20).interfaceId
        || _interfaceId == type(IERC165).interfaceId;
}

9-43: Consider adding bridge address update capability.

The contract has the bridge address hard-coded via PredeployAddresses.SUPERCHAIN_TOKEN_BRIDGE. Consider adding a function for the owner to update this address if needed for future flexibility.

contract InteropToken is Initializable, ERC20Upgradeable, OwnableUpgradeable, IERC7802 {
+   address public bridgeAddress;

    function initialize(string memory name, string memory symbol, uint256 initialSupply) public initializer {
        __ERC20_init(name, symbol);
        __Ownable_init(msg.sender);
        _mint(msg.sender, initialSupply);
+       bridgeAddress = PredeployAddresses.SUPERCHAIN_TOKEN_BRIDGE;
    }

+   /// @notice Allows the owner to update the bridge address
+   /// @param _newBridgeAddress New address for the bridge
+   function updateBridgeAddress(address _newBridgeAddress) external onlyOwner {
+       require(_newBridgeAddress != address(0), "Invalid bridge address");
+       bridgeAddress = _newBridgeAddress;
+   }

    /// @notice Allows the SuperchainTokenBridge to mint tokens.
    /// @param _to     Address to mint tokens to.
    /// @param _amount Amount of tokens to mint.
    function crosschainMint(address _to, uint256 _amount) external {
-       require(msg.sender == PredeployAddresses.SUPERCHAIN_TOKEN_BRIDGE, "Unauthorized");
+       require(msg.sender == bridgeAddress, "Unauthorized");

        _mint(_to, _amount);

        emit CrosschainMint(_to, _amount, msg.sender);
    }

    /// @notice Allows the SuperchainTokenBridge to burn tokens.
    /// @param _from   Address to burn tokens from.
    /// @param _amount Amount of tokens to burn.
    function crosschainBurn(address _from, uint256 _amount) external {
-       require(msg.sender == PredeployAddresses.SUPERCHAIN_TOKEN_BRIDGE, "Unauthorized");
+       require(msg.sender == bridgeAddress, "Unauthorized");

        _burn(_from, _amount);

        emit CrosschainBurn(_from, _amount, msg.sender);
    }
public/tutorials/setup-for-erc20-upgrade.sh (4)

20-20: Unused variable detected.

The USER_ADDRESS variable is defined but not used in the script.

Either remove this line or use the variable in the script.

🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 20-20: USER_ADDRESS appears unused. Verify use (or export if used externally).

(SC2034)


69-69: Add error handling for the forge script command.

The script should check if the forge command succeeds.

-forge script script/LabSetup.s.sol --rpc-url $URL_CHAIN_A --broadcast --private-key $PRIVATE_KEY --tc LabSetup | tee setup_output
+forge script script/LabSetup.s.sol --rpc-url $URL_CHAIN_A --broadcast --private-key $PRIVATE_KEY --tc LabSetup | tee setup_output || { echo "Forge script failed"; exit 1; }

58-61: Consider making chain ID conditions more maintainable.

The hardcoded chain IDs in the conditional expression may become difficult to maintain as more chains are added.

Consider defining the chain IDs as named variables at the top of the script or creating a function that returns the initial supply based on chain ID.


74-76: Consider exporting variables automatically.

Instead of just printing commands to export variables, consider exporting them directly in the script.

-echo Run these commands to store the configuration:
-echo BEACON_ADDRESS=$BEACON_ADDRESS
-echo export ERC20_ADDRESS=$ERC20_ADDRESS
+echo "Exporting variables automatically..."
+export BEACON_ADDRESS=$BEACON_ADDRESS
+export ERC20_ADDRESS=$ERC20_ADDRESS
+echo "Exported BEACON_ADDRESS=$BEACON_ADDRESS"
+echo "Exported ERC20_ADDRESS=$ERC20_ADDRESS"
+echo "You can use these variables in your current shell session"
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (7)

1-5: Improve description grammar for clarity
“…The example is a bridge when the addresses of the ERC20 contracts are not the same.” reads awkwardly. Re‑phrase to something like “Example bridge for cases where the ERC‑20 contract addresses differ across chains.”


34-39: Avoid comma before an essential ‘because’ clause

“…we don't have it on most pages, because this tutorial…”

Remove the comma to satisfy the COMMA_BEFORE_BECAUSE lint warning.


150-152: Typo: “nonoce” → “nonce”
Heading currently reads “Advance the user's nonoce on chain B”.

-### Advance the user's nonoce on chain B
+### Advance the user's nonce on chain B

152-160: Insert comma after introductory clause
“To simulate this situation we send …” → add a comma after “situation” to improve readability and resolve the IN_ORDER_TO_VB_COMMA hint.

🧰 Tools
🪛 LanguageTool

[typographical] ~153-~153: It seems that a comma is missing.
Context: ...tract was installed. To simulate this situation we send a few meaningless transactions ...

(IN_ORDER_TO_VB_COMMA)


184-187: Repeated sentence opener “We” – vary wording
Three consecutive sentences start with “We …”. Consider re‑phrasing to avoid a monotone style (ENGLISH_WORD_REPEAT_BEGINNING_RULE).

🧰 Tools
🪛 LanguageTool

[style] ~184-~184: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...t we need to create the other three. We have an interesting [chicken-and-egg](h...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


282-283: Remove comma before essential ‘because’ clause

“…or the chain ID on the other side, because they are hardwired…”

Delete the comma.

🧰 Tools
🪛 LanguageTool

[formatting] ~282-~282: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...dress, or the chain ID on the other side, because they are hardwired in this bridge. ...

(COMMA_BEFORE_BECAUSE)


338-340: Double determiner: “The A chain”
Use either “Chain A” or “The chain A”. Suggested:

-See the new balances. The A chain should have 0.9 tokens, and the B chain should have 0.1 tokens.
+See the new balances. Chain A should have 0.9 tokens and chain B should have 0.1 tokens.
🧰 Tools
🪛 LanguageTool

[grammar] ~338-~338: Two determiners in a row. Choose either “The” or “A”.
Context: ... ``` 4. See the new balances. The A chain should have 0.9 tokens, and the B...

(DT_DT)

public/tutorials/CustomBridge.sol (2)

8-9: Unused IERC165 import
IERC165 is imported but never referenced, which produces a compiler warning.

-import { IERC7802, IERC165 } from "interop-lib/src/interfaces/IERC7802.sol";
+import { IERC7802 } from "interop-lib/src/interfaces/IERC7802.sol";

66-74: Validate non‑zero transfer amount
sendERC20 allows _amount == 0, resulting in a no‑op burn and cross‑chain message that still consumes gas.

if (_to == address(0)) revert ZeroAddress();
+if (_amount == 0) revert("AmountZero");

(Define an error AmountZero(); for consistency.)

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e51a1d8 and bb9a679.

📒 Files selected for processing (6)
  • pages/interop/tutorials/upgrade-to-superchain-erc20/_meta.json (1 hunks)
  • pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (1 hunks)
  • public/tutorials/CustomBridge.sol (1 hunks)
  • public/tutorials/InteropToken.sol (1 hunks)
  • public/tutorials/setup-for-erc20-upgrade.sh (1 hunks)
  • words.txt (8 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`**/*.mdx`: "ALWAYS review Markdown content THOROUGHLY with the following criteria: - First, check the frontmatter section at the top of the file: 1. For regular pages, ensure AL...

**/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • First, check the frontmatter section at the top of the file:
    1. For regular pages, ensure ALL these fields are present and not empty:
    ---
    title: [non-empty]
    lang: [non-empty]
    description: [non-empty]
    topic: [non-empty]
    personas: [non-empty array]
    categories: [non-empty array]
    content_type: [valid type]
    ---
    1. For landing pages (index.mdx or files with ), only these fields are required:
    ---
    title: [non-empty]
    lang: [non-empty]
    description: [non-empty]
    topic: [non-empty]
    ---
    1. If any required fields are missing or empty, comment:
      'This file appears to be missing required metadata. Please check keywords.config.yaml for valid options and add the required fields manually. You can validate your changes by running:
    pnpm validate-metadata
    ```'
  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
  • pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx
🪛 LanguageTool
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx

[formatting] ~43-~43: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ere, when we don't have it on most pages, because this tutorial has code that is a lot mo...

(COMMA_BEFORE_BECAUSE)


[typographical] ~153-~153: It seems that a comma is missing.
Context: ...tract was installed. To simulate this situation we send a few meaningless transactions ...

(IN_ORDER_TO_VB_COMMA)


[style] ~184-~184: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...t we need to create the other three. We have an interesting [chicken-and-egg](h...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~206-~206: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...` ### Deploy ERC7802 contracts We need to replace the ERC20 contracts with contra...

(REP_NEED_TO_VB)


[typographical] ~210-~210: Consider adding a comma after ‘Normally’ for more clarity.
Context: ... address to mint and burn tokens. Normally this is `PredeployAddresses.SUPERCHAIN_...

(RB_LY_COMMA)


[formatting] ~282-~282: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...dress, or the chain ID on the other side, because they are hardwired in this bridge. ...

(COMMA_BEFORE_BECAUSE)


[grammar] ~338-~338: Two determiners in a row. Choose either “The” or “A”.
Context: ... ``` 4. See the new balances. The A chain should have 0.9 tokens, and the B...

(DT_DT)

words.txt

[duplication] ~2-~2: Možný preklep: zopakovali ste slovo
Context: ACCOUNTQUEUE accountqueue ACCOUNTSLOTS accountslots ACDC ADDI ADDIU ADDU airgap Allnodes al...

(WORD_REPEAT_RULE)


[duplication] ~11-~11: Možný preklep: zopakovali ste slovo
Context: ... ADDI ADDIU ADDU airgap Allnodes allocs Alphanet alphanet Alphanets alphanets altda ANDI Ankr Ape...

(WORD_REPEAT_RULE)


[duplication] ~13-~13: Možný preklep: zopakovali ste slovo
Context: ...irgap Allnodes allocs Alphanet alphanet Alphanets alphanets altda ANDI Ankr Apeworx Arweave authrpc...

(WORD_REPEAT_RULE)


[duplication] ~21-~21: Možný preklep: zopakovali ste slovo
Context: ...altda ANDI Ankr Apeworx Arweave authrpc Autorelay autorelay autorelayer basefee Betanet betanet Bet...

(WORD_REPEAT_RULE)


[duplication] ~25-~25: Možný preklep: zopakovali ste slovo
Context: ...Autorelay autorelay autorelayer basefee Betanet betanet Betanets betanets BGEZ BGTZ Biconomy BL...

(WORD_REPEAT_RULE)


[duplication] ~27-~27: Možný preklep: zopakovali ste slovo
Context: ...lay autorelayer basefee Betanet betanet Betanets betanets BGEZ BGTZ Biconomy BLEZ BLOBPOOL blobpo...

(WORD_REPEAT_RULE)


[duplication] ~33-~33: Možný preklep: zopakovali ste slovo
Context: ...tanets betanets BGEZ BGTZ Biconomy BLEZ BLOBPOOL blobpool blobspace Blockdaemon Blockdaemon's blo...

(WORD_REPEAT_RULE)


[duplication] ~36-~36: Možný preklep: zopakovali ste slovo
Context: ...conomy BLEZ BLOBPOOL blobpool blobspace Blockdaemon Blockdaemon's blockhash blocklists BLOCKLOGS blockl...

(WORD_REPEAT_RULE)


[duplication] ~40-~40: Možný preklep: zopakovali ste slovo
Context: ...emon Blockdaemon's blockhash blocklists BLOCKLOGS blocklogs BLOCKPROFILERATE blockprofilerate Block...

(WORD_REPEAT_RULE)


[duplication] ~42-~42: Možný preklep: zopakovali ste slovo
Context: ...lockhash blocklists BLOCKLOGS blocklogs BLOCKPROFILERATE blockprofilerate Blockscout Blockspace blockspace blockt...

(WORD_REPEAT_RULE)


[duplication] ~45-~45: Možný preklep: zopakovali ste slovo
Context: ...PROFILERATE blockprofilerate Blockscout Blockspace blockspace blocktime Blocktimes blocktimes BLOOMFI...

(WORD_REPEAT_RULE)


[duplication] ~48-~48: Možný preklep: zopakovali ste slovo
Context: ...ckscout Blockspace blockspace blocktime Blocktimes blocktimes BLOOMFILTER bloomfilter BLTZ Bootcamp b...

(WORD_REPEAT_RULE)


[duplication] ~50-~50: Možný preklep: zopakovali ste slovo
Context: ...ckspace blocktime Blocktimes blocktimes BLOOMFILTER bloomfilter BLTZ Bootcamp bootnode BOOTNODES Bootno...

(WORD_REPEAT_RULE)


[duplication] ~55-~55: Možný preklep: zopakovali ste slovo
Context: ...LTER bloomfilter BLTZ Bootcamp bootnode BOOTNODES Bootnodes bootnodes bottlenecked Brotli brotli Ca...

(WORD_REPEAT_RULE)


[duplication] ~59-~59: Možný preklep: zopakovali ste slovo
Context: ...TNODES Bootnodes bootnodes bottlenecked Brotli brotli Callouts callouts CCIP Celestia Celesti...

(WORD_REPEAT_RULE)


[duplication] ~61-~61: Možný preklep: zopakovali ste slovo
Context: ...es bootnodes bottlenecked Brotli brotli Callouts callouts CCIP Celestia Celestia's chainid Chainl...

(WORD_REPEAT_RULE)


[duplication] ~78-~78: Možný preklep: zopakovali ste slovo
Context: ...alized collateralized compr Comprensive COMPUTEPENDINGBLOCK computependingblock confs Consen corsdomain counterfactuall...

(WORD_REPEAT_RULE)


[duplication] ~84-~84: Možný preklep: zopakovali ste slovo
Context: ...onfs Consen corsdomain counterfactually Crosschain crosschain Crossmint Dapphub daserver DATACAP data...

(WORD_REPEAT_RULE)


[duplication] ~89-~89: Možný preklep: zopakovali ste slovo
Context: ...n crosschain Crossmint Dapphub daserver DATACAP datacap DATADIR datadir Devnet devnet Devnets d...

(WORD_REPEAT_RULE)


[duplication] ~91-~91: Možný preklep: zopakovali ste slovo
Context: ...ssmint Dapphub daserver DATACAP datacap DATADIR datadir Devnet devnet Devnets devnets Devs dire...

(WORD_REPEAT_RULE)


[duplication] ~93-~93: Možný preklep: zopakovali ste slovo
Context: ...aserver DATACAP datacap DATADIR datadir Devnet devnet Devnets devnets Devs direnv DISABLETXPO...

(WORD_REPEAT_RULE)


[duplication] ~95-~95: Možný preklep: zopakovali ste slovo
Context: ...P datacap DATADIR datadir Devnet devnet Devnets devnets Devs direnv DISABLETXPOOLGOSSIP disable...

(WORD_REPEAT_RULE)


[duplication] ~99-~99: Možný preklep: zopakovali ste slovo
Context: ...vnet devnet Devnets devnets Devs direnv DISABLETXPOOLGOSSIP disabletxpoolgossip Discv discv DIVU Drand dripcheck Drippi...

(WORD_REPEAT_RULE)


[duplication] ~101-~101: Možný preklep: zopakovali ste slovo
Context: ...DISABLETXPOOLGOSSIP disabletxpoolgossip Discv discv DIVU Drand dripcheck Drippie Eigen EIPs...

(WORD_REPEAT_RULE)


[duplication] ~109-~109: Možný preklep: zopakovali ste slovo
Context: ...DIVU Drand dripcheck Drippie Eigen EIPs ENABLEDEPRECATEDPERSONAL enabledeprecatedpersonal enginekind Erigon erigon ETHERBASE ethe...

(WORD_REPEAT_RULE)


[duplication] ~112-~112: Možný preklep: zopakovali ste slovo
Context: ...NAL enabledeprecatedpersonal enginekind Erigon erigon ETHERBASE etherbase Ethernity Ethernow ...

(WORD_REPEAT_RULE)


[duplication] ~114-~114: Možný preklep: zopakovali ste slovo
Context: ...ecatedpersonal enginekind Erigon erigon ETHERBASE etherbase Ethernity Ethernow ETHSTATS ethstats EV...

(WORD_REPEAT_RULE)


[duplication] ~118-~118: Možný preklep: zopakovali ste slovo
Context: ... ETHERBASE etherbase Ethernity Ethernow ETHSTATS ethstats EVMTIMEOUT evmtimeout excercise executa...

(WORD_REPEAT_RULE)


[duplication] ~120-~120: Možný preklep: zopakovali ste slovo
Context: ...se Ethernity Ethernow ETHSTATS ethstats EVMTIMEOUT evmtimeout excercise executability exfiltrate EXIT...

(WORD_REPEAT_RULE)


[duplication] ~125-~125: Možný preklep: zopakovali ste slovo
Context: ...eout excercise executability exfiltrate EXITWHENSYNCED exitwhensynced EXTRADATA extradata Farcaster Faultproo...

(WORD_REPEAT_RULE)


[duplication] ~127-~127: Možný preklep: zopakovali ste slovo
Context: ...xfiltrate EXITWHENSYNCED exitwhensynced EXTRADATA extradata Farcaster Faultproof FDLIMIT fdlimit Fl...

(WORD_REPEAT_RULE)


[duplication] ~131-~131: Možný preklep: zopakovali ste slovo
Context: ...XTRADATA extradata Farcaster Faultproof FDLIMIT fdlimit Flashblocks Flashbots forkable forkchoi...

(WORD_REPEAT_RULE)


[duplication] ~146-~146: Možný preklep: zopakovali ste slovo
Context: ... Funct gameplay GASCAP gascap gaslessly GCMODE gcmode Gelato gifs GLOBALQUEUE globalqueue GLO...

(WORD_REPEAT_RULE)


[duplication] ~150-~150: Možný preklep: zopakovali ste slovo
Context: ...cap gaslessly GCMODE gcmode Gelato gifs GLOBALQUEUE globalqueue GLOBALSLOTS globalslots gokzg growthepi...

(WORD_REPEAT_RULE)


[duplication] ~152-~152: Možný preklep: zopakovali ste slovo
Context: ...ode Gelato gifs GLOBALQUEUE globalqueue GLOBALSLOTS globalslots gokzg growthepie hardfork hardforks HEA...

(WORD_REPEAT_RULE)


[duplication] ~158-~158: Možný preklep: zopakovali ste slovo
Context: ...ots gokzg growthepie hardfork hardforks HEALTHCHECK healthcheck healthchecks HISTORICALRPC historicalrp...

(WORD_REPEAT_RULE)


[duplication] ~161-~161: Možný preklep: zopakovali ste slovo
Context: ...ks HEALTHCHECK healthcheck healthchecks HISTORICALRPC historicalrpc HISTORICALRPCTIMEOUT historicalrpctimeo...

(WORD_REPEAT_RULE)


[duplication] ~163-~163: Možný preklep: zopakovali ste slovo
Context: ...ealthchecks HISTORICALRPC historicalrpc HISTORICALRPCTIMEOUT historicalrpctimeout HOLESKY Holesky holesky IERC IGNOREPRIC...

(WORD_REPEAT_RULE)


[duplication] ~165-~165: Možný preklep: zopakovali ste slovo
Context: ...STORICALRPCTIMEOUT historicalrpctimeout HOLESKY Holesky holesky IERC IGNOREPRICE ignoreprice Im...

(WORD_REPEAT_RULE)


[duplication] ~169-~169: Možný preklep: zopakovali ste slovo
Context: ...rpctimeout HOLESKY Holesky holesky IERC IGNOREPRICE ignoreprice Immunefi Inator inator INFLUXDBV influx...

(WORD_REPEAT_RULE)


[duplication] ~172-~172: Možný preklep: zopakovali ste slovo
Context: ...y IERC IGNOREPRICE ignoreprice Immunefi Inator inator INFLUXDBV influxdbv initcode IPCDISABLE...

(WORD_REPEAT_RULE)


[duplication] ~174-~174: Možný preklep: zopakovali ste slovo
Context: ...RICE ignoreprice Immunefi Inator inator INFLUXDBV influxdbv initcode IPCDISABLE ipcdisable ipcfile ...

(WORD_REPEAT_RULE)


[duplication] ~177-~177: Možný preklep: zopakovali ste slovo
Context: ...tor inator INFLUXDBV influxdbv initcode IPCDISABLE ipcdisable ipcfile IPCPATH ipcpath IPFS Isthumus J...

(WORD_REPEAT_RULE)


[duplication] ~180-~180: Možný preklep: zopakovali ste slovo
Context: ... initcode IPCDISABLE ipcdisable ipcfile IPCPATH ipcpath IPFS Isthumus JALR JOURNALREMOTES journ...

(WORD_REPEAT_RULE)


[duplication] ~185-~185: Možný preklep: zopakovali ste slovo
Context: ...file IPCPATH ipcpath IPFS Isthumus JALR JOURNALREMOTES journalremotes JSPATH jspath jwtsecret Keccak leveldb ...

(WORD_REPEAT_RULE)


[duplication] ~187-~187: Možný preklep: zopakovali ste slovo
Context: ...umus JALR JOURNALREMOTES journalremotes JSPATH jspath jwtsecret Keccak leveldb lightkdf Lisk ...

(WORD_REPEAT_RULE)


[duplication] ~196-~196: Možný preklep: zopakovali ste slovo
Context: ...ak leveldb lightkdf Lisk logfile logfmt MAXAGE maxage MAXBACKUPS maxbackups MAXPEERS maxpeers...

(WORD_REPEAT_RULE)


[duplication] ~198-~198: Možný preklep: zopakovali ste slovo
Context: ...htkdf Lisk logfile logfmt MAXAGE maxage MAXBACKUPS maxbackups MAXPEERS maxpeers MAXPENDPEERS maxpendp...

(WORD_REPEAT_RULE)


[duplication] ~200-~200: Možný preklep: zopakovali ste slovo
Context: ...fmt MAXAGE maxage MAXBACKUPS maxbackups MAXPEERS maxpeers MAXPENDPEERS maxpendpeers MAXPRICE maxp...

(WORD_REPEAT_RULE)


[duplication] ~202-~202: Možný preklep: zopakovali ste slovo
Context: ...MAXBACKUPS maxbackups MAXPEERS maxpeers MAXPENDPEERS maxpendpeers MAXPRICE maxprice MEMPROFILERATE mempro...

(WORD_REPEAT_RULE)


[duplication] ~204-~204: Možný preklep: zopakovali ste slovo
Context: ...EERS maxpeers MAXPENDPEERS maxpendpeers MAXPRICE maxprice MEMPROFILERATE memprofilerate Merkle me...

(WORD_REPEAT_RULE)


[duplication] ~206-~206: Možný preklep: zopakovali ste slovo
Context: ...ENDPEERS maxpendpeers MAXPRICE maxprice MEMPROFILERATE memprofilerate Merkle merkle MFHI MFLO Mgas Minato MIN...

(WORD_REPEAT_RULE)


[duplication] ~208-~208: Možný preklep: zopakovali ste slovo
Context: ... maxprice MEMPROFILERATE memprofilerate Merkle merkle MFHI MFLO Mgas Minato MINFREEDISK minfr...

(WORD_REPEAT_RULE)


[duplication] ~214-~214: Možný preklep: zopakovali ste slovo
Context: ...ate Merkle merkle MFHI MFLO Mgas Minato MINFREEDISK minfreedisk MINSUGGESTEDPRIORITYFEE minsuggestedpri...

(WORD_REPEAT_RULE)


[duplication] ~216-~216: Možný preklep: zopakovali ste slovo
Context: ...FLO Mgas Minato MINFREEDISK minfreedisk MINSUGGESTEDPRIORITYFEE minsuggestedpriorityfee Mintable Mintplex MIPSEVM Mitigations M...

(WORD_REPEAT_RULE)


[duplication] ~222-~222: Možný preklep: zopakovali ste slovo
Context: ...e Mintable Mintplex MIPSEVM Mitigations Monitorism monitorism Moralis Mordor mountpoint MOVN MOVZ MTH...

(WORD_REPEAT_RULE)


[duplication] ~239-~239: Možný preklep: zopakovali ste slovo
Context: ... multiclient multisigs MULTU nethermind NETRESTRICT netrestrict NETWORKID networkid NEWPAYLOAD newpaylo...

(WORD_REPEAT_RULE)


[duplication] ~241-~241: Možný preklep: zopakovali ste slovo
Context: ...ULTU nethermind NETRESTRICT netrestrict NETWORKID networkid NEWPAYLOAD newpayload nextra NOCOMPACTI...

(WORD_REPEAT_RULE)


[duplication] ~243-~243: Možný preklep: zopakovali ste slovo
Context: ...ESTRICT netrestrict NETWORKID networkid NEWPAYLOAD newpayload nextra NOCOMPACTION nocompaction NODEKE...

(WORD_REPEAT_RULE)


[duplication] ~246-~246: Možný preklep: zopakovali ste slovo
Context: ... networkid NEWPAYLOAD newpayload nextra NOCOMPACTION nocompaction NODEKEY nodekey NODEKEYHEX nodekeyhex n...

(WORD_REPEAT_RULE)


[duplication] ~248-~248: Možný preklep: zopakovali ste slovo
Context: ...ayload nextra NOCOMPACTION nocompaction NODEKEY nodekey NODEKEYHEX nodekeyhex nodename NODISCOV...

(WORD_REPEAT_RULE)


[duplication] ~250-~250: Možný preklep: zopakovali ste slovo
Context: ...COMPACTION nocompaction NODEKEY nodekey NODEKEYHEX nodekeyhex nodename NODISCOVER nodiscover NOLOCALS...

(WORD_REPEAT_RULE)


[duplication] ~253-~253: Možný preklep: zopakovali ste slovo
Context: ... nodekey NODEKEYHEX nodekeyhex nodename NODISCOVER nodiscover NOLOCALS nolocals nonoce NOPREFETCH nop...

(WORD_REPEAT_RULE)


[duplication] ~255-~255: Možný preklep: zopakovali ste slovo
Context: ...dekeyhex nodename NODISCOVER nodiscover NOLOCALS nolocals nonoce NOPREFETCH noprefetch NOPRUNING ...

(WORD_REPEAT_RULE)


[duplication] ~258-~258: Možný preklep: zopakovali ste slovo
Context: ...VER nodiscover NOLOCALS nolocals nonoce NOPREFETCH noprefetch NOPRUNING nopruning NOSYNCSERVE nosyncs...

(WORD_REPEAT_RULE)


[duplication] ~260-~260: Možný preklep: zopakovali ste slovo
Context: ...S nolocals nonoce NOPREFETCH noprefetch NOPRUNING nopruning NOSYNCSERVE nosyncserve Numba Offchain ...

(WORD_REPEAT_RULE)


[duplication] ~262-~262: Možný preklep: zopakovali ste slovo
Context: ...PREFETCH noprefetch NOPRUNING nopruning NOSYNCSERVE nosyncserve Numba Offchain offchain opchaina opchai...

(WORD_REPEAT_RULE)


[duplication] ~265-~265: Možný preklep: zopakovali ste slovo
Context: ...nopruning NOSYNCSERVE nosyncserve Numba Offchain offchain opchaina opchainb OPCM Openfort oplabs ...

(WORD_REPEAT_RULE)


[duplication] ~279-~279: Možný preklep: zopakovali ste slovo
Context: ...bility pcscdpath Pectra pectra Pectra's Peerstore peerstore peerstores Permissioned permissioned Pe...

(WORD_REPEAT_RULE)


[duplication] ~282-~282: Možný preklep: zopakovali ste slovo
Context: ...Pectra's Peerstore peerstore peerstores Permissioned permissioned Permissionless permissionless permissio...

(WORD_REPEAT_RULE)


[duplication] ~284-~284: Možný preklep: zopakovali ste slovo
Context: ...re peerstores Permissioned permissioned Permissionless permissionless permissionlessly Perps Peta Pimlico POA...

(WORD_REPEAT_RULE)


[duplication] ~292-~292: Možný preklep: zopakovali ste slovo
Context: ...ionlessly Perps Peta Pimlico POAP POAPs PPROF pprof Precommitments precommitments preconfig...

(WORD_REPEAT_RULE)


[duplication] ~294-~294: Možný preklep: zopakovali ste slovo
Context: ...rps Peta Pimlico POAP POAPs PPROF pprof Precommitments precommitments preconfigured predeploy Predeployed pre...

(WORD_REPEAT_RULE)


[duplication] ~298-~298: Možný preklep: zopakovali ste slovo
Context: ... precommitments preconfigured predeploy Predeployed predeployed Predeploys predeploys prefunded Preimag...

(WORD_REPEAT_RULE)


[duplication] ~300-~300: Možný preklep: zopakovali ste slovo
Context: ...gured predeploy Predeployed predeployed Predeploys predeploys prefunded Preimage preimage PREIMAGES p...

(WORD_REPEAT_RULE)


[duplication] ~303-~303: Možný preklep: zopakovali ste slovo
Context: ...eployed Predeploys predeploys prefunded Preimage preimage PREIMAGES preimages preinstall Preinsta...

(WORD_REPEAT_RULE)


[duplication] ~305-~305: Možný preklep: zopakovali ste slovo
Context: ... predeploys prefunded Preimage preimage PREIMAGES preimages preinstall Preinstalls preinstalls Pres...

(WORD_REPEAT_RULE)


[duplication] ~308-~308: Možný preklep: zopakovali ste slovo
Context: ...preimage PREIMAGES preimages preinstall Preinstalls preinstalls Prestate prestate prestates PREVRANDAO ...

(WORD_REPEAT_RULE)


[duplication] ~310-~310: Možný preklep: zopakovali ste slovo
Context: ...ages preinstall Preinstalls preinstalls Prestate prestate prestates PREVRANDAO PRICEBUMP pricebum...

(WORD_REPEAT_RULE)


[duplication] ~314-~314: Možný preklep: zopakovali ste slovo
Context: ... Prestate prestate prestates PREVRANDAO PRICEBUMP pricebump PRICELIMIT pricelimit productionize pro...

(WORD_REPEAT_RULE)


[duplication] ~316-~316: Možný preklep: zopakovali ste slovo
Context: ...restates PREVRANDAO PRICEBUMP pricebump PRICELIMIT pricelimit productionize productionized Protip Pro...

(WORD_REPEAT_RULE)


[duplication] ~322-~322: Možný preklep: zopakovali ste slovo
Context: ...uctionize productionized Protip Proxied Proxyd proxyd Pyth Pyth's QRNG Quicknode quicknode qu...

(WORD_REPEAT_RULE)


[duplication] ~324-~324: Možný preklep: zopakovali ste slovo
Context: ...uctionized Protip Proxied Proxyd proxyd Pyth Pyth's QRNG Quicknode quicknode quickstarts ...

(WORD_REPEAT_RULE)


[duplication] ~327-~327: Možný preklep: zopakovali ste slovo
Context: ... Proxied Proxyd proxyd Pyth Pyth's QRNG Quicknode quicknode quickstarts rebalancing Regenesis regen...

(WORD_REPEAT_RULE)


[duplication] ~331-~331: Možný preklep: zopakovali ste slovo
Context: ...knode quicknode quickstarts rebalancing Regenesis regenesis Reimagine REJOURNAL rejournal REMOTEDB ...

(WORD_REPEAT_RULE)


[duplication] ~334-~334: Možný preklep: zopakovali ste slovo
Context: ...balancing Regenesis regenesis Reimagine REJOURNAL rejournal REMOTEDB remotedb Reown Reown's replaya...

(WORD_REPEAT_RULE)


[duplication] ~336-~336: Možný preklep: zopakovali ste slovo
Context: ...regenesis Reimagine REJOURNAL rejournal REMOTEDB remotedb Reown Reown's replayability replayor re...

(WORD_REPEAT_RULE)


[duplication] ~338-~338: Možný preklep: zopakovali ste slovo
Context: ...e REJOURNAL rejournal REMOTEDB remotedb Reown Reown's replayability replayor reposts reprov...

(WORD_REPEAT_RULE)


[duplication] ~344-~344: Možný preklep: zopakovali ste slovo
Context: ...replayability replayor reposts reproven REQUIREDBLOCKS requiredblocks rollouts Rollups rollups Routescan rpck...

(WORD_REPEAT_RULE)


[duplication] ~347-~347: Možný preklep: zopakovali ste slovo
Context: ... REQUIREDBLOCKS requiredblocks rollouts Rollups rollups Routescan rpckind RPCPREFIX rpcprefix r...

(WORD_REPEAT_RULE)


[duplication] ~351-~351: Možný preklep: zopakovali ste slovo
Context: ...louts Rollups rollups Routescan rpckind RPCPREFIX rpcprefix rpcs RPGF Runbooks runbooks RWAs safedb...

(WORD_REPEAT_RULE)


[duplication] ~355-~355: Možný preklep: zopakovali ste slovo
Context: ...n rpckind RPCPREFIX rpcprefix rpcs RPGF Runbooks runbooks RWAs safedb Schnorr SEPOLIA Sepolia sep...

(WORD_REPEAT_RULE)


[duplication] ~360-~360: Možný preklep: zopakovali ste slovo
Context: ...F Runbooks runbooks RWAs safedb Schnorr SEPOLIA Sepolia sepolia seqnr SEQUENCERHTTP sequencerht...

(WORD_REPEAT_RULE)


[duplication] ~364-~364: Možný preklep: zopakovali ste slovo
Context: ...b Schnorr SEPOLIA Sepolia sepolia seqnr SEQUENCERHTTP sequencerhttp serv signup SLLV SLTI SLTIU SLTU smartc...

(WORD_REPEAT_RULE)


[duplication] ~382-~382: Možný preklep: zopakovali ste slovo
Context: ...olana Soneium soyboy Spearbit SRAV SRLV Stablecoins stablecoins statefulset subcomponents subgame subhe...

(WORD_REPEAT_RULE)


[duplication] ~391-~391: Možný preklep: zopakovali ste slovo
Context: ...ame subheaders subsecond SUBU Sunnyside SUPERCHAIN Superchain superchain Superchain's superchainerc S...

(WORD_REPEAT_RULE)


[duplication] ~393-~393: Možný preklep: zopakovali ste slovo
Context: ...nd SUBU Sunnyside SUPERCHAIN Superchain superchain Superchain's superchainerc Superlend Superloans Su...

(WORD_REPEAT_RULE)


[duplication] ~399-~399: Možný preklep: zopakovali ste slovo
Context: ...chainerc Superlend Superloans Superscan Supersim supersim SYNCMODE syncmode SYNCTARGET synctarget...

(WORD_REPEAT_RULE)


[duplication] ~401-~401: Možný preklep: zopakovali ste slovo
Context: ... Superloans Superscan Supersim supersim SYNCMODE syncmode SYNCTARGET synctarget syscalls thirdweb...

(WORD_REPEAT_RULE)


[duplication] ~403-~403: Možný preklep: zopakovali ste slovo
Context: ...can Supersim supersim SYNCMODE syncmode SYNCTARGET synctarget syscalls thirdweb threadcreate timeseri...

(WORD_REPEAT_RULE)


[duplication] ~431-~431: Možný preklep: zopakovali ste slovo
Context: ...ubmitted UPNP upstreaming VERKLE verkle VHOSTS vhosts Viem viem Viem's viem's VMDEBUG vmdebug...

(WORD_REPEAT_RULE)


[duplication] ~433-~433: Možný preklep: zopakovali ste slovo
Context: ...upstreaming VERKLE verkle VHOSTS vhosts Viem viem Viem's viem's VMDEBUG vmdebug VMODULE v...

(WORD_REPEAT_RULE)


[duplication] ~437-~437: Možný preklep: zopakovali ste slovo
Context: ...e VHOSTS vhosts Viem viem Viem's viem's VMDEBUG vmdebug VMODULE vmodule xlarge XORI ZKPs ZKVM Z...

(WORD_REPEAT_RULE)


[duplication] ~439-~439: Možný preklep: zopakovali ste slovo
Context: ...Viem viem Viem's viem's VMDEBUG vmdebug VMODULE vmodule xlarge XORI ZKPs ZKVM Zora zora

(WORD_REPEAT_RULE)


[duplication] ~445-~445: Možný preklep: zopakovali ste slovo
Context: ...g VMODULE vmodule xlarge XORI ZKPs ZKVM Zora zora

(WORD_REPEAT_RULE)

🪛 Shellcheck (0.10.0)
public/tutorials/setup-for-erc20-upgrade.sh

[warning] 5-5: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)


[warning] 17-17: URL_CHAIN_B appears unused. Verify use (or export if used externally).

(SC2034)


[warning] 20-20: USER_ADDRESS appears unused. Verify use (or export if used externally).

(SC2034)

🪛 Gitleaks (8.21.2)
public/tutorials/setup-for-erc20-upgrade.sh

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

(generic-api-key)

🔇 Additional comments (7)
pages/interop/tutorials/upgrade-to-superchain-erc20/_meta.json (1)

1-3: LGTM: Valid JSON structure for page metadata.

This metadata file correctly maps the "custom-bridge" key to its display title for the tutorial section.

words.txt (1)

2-445: LGTM: Consistent word capitalization patterns.

The changes normalize capitalization by pairing uppercase and lowercase variants of technical terms used throughout the documentation. This improves consistency for spell-checking and terminology recognition.

🧰 Tools
🪛 LanguageTool

[duplication] ~2-~2: Možný preklep: zopakovali ste slovo
Context: ACCOUNTQUEUE accountqueue ACCOUNTSLOTS accountslots ACDC ADDI ADDIU ADDU airgap Allnodes al...

(WORD_REPEAT_RULE)


[duplication] ~11-~11: Možný preklep: zopakovali ste slovo
Context: ... ADDI ADDIU ADDU airgap Allnodes allocs Alphanet alphanet Alphanets alphanets altda ANDI Ankr Ape...

(WORD_REPEAT_RULE)


[duplication] ~13-~13: Možný preklep: zopakovali ste slovo
Context: ...irgap Allnodes allocs Alphanet alphanet Alphanets alphanets altda ANDI Ankr Apeworx Arweave authrpc...

(WORD_REPEAT_RULE)


[duplication] ~21-~21: Možný preklep: zopakovali ste slovo
Context: ...altda ANDI Ankr Apeworx Arweave authrpc Autorelay autorelay autorelayer basefee Betanet betanet Bet...

(WORD_REPEAT_RULE)


[duplication] ~25-~25: Možný preklep: zopakovali ste slovo
Context: ...Autorelay autorelay autorelayer basefee Betanet betanet Betanets betanets BGEZ BGTZ Biconomy BL...

(WORD_REPEAT_RULE)


[duplication] ~27-~27: Možný preklep: zopakovali ste slovo
Context: ...lay autorelayer basefee Betanet betanet Betanets betanets BGEZ BGTZ Biconomy BLEZ BLOBPOOL blobpo...

(WORD_REPEAT_RULE)


[duplication] ~33-~33: Možný preklep: zopakovali ste slovo
Context: ...tanets betanets BGEZ BGTZ Biconomy BLEZ BLOBPOOL blobpool blobspace Blockdaemon Blockdaemon's blo...

(WORD_REPEAT_RULE)


[duplication] ~36-~36: Možný preklep: zopakovali ste slovo
Context: ...conomy BLEZ BLOBPOOL blobpool blobspace Blockdaemon Blockdaemon's blockhash blocklists BLOCKLOGS blockl...

(WORD_REPEAT_RULE)


[duplication] ~40-~40: Možný preklep: zopakovali ste slovo
Context: ...emon Blockdaemon's blockhash blocklists BLOCKLOGS blocklogs BLOCKPROFILERATE blockprofilerate Block...

(WORD_REPEAT_RULE)


[duplication] ~42-~42: Možný preklep: zopakovali ste slovo
Context: ...lockhash blocklists BLOCKLOGS blocklogs BLOCKPROFILERATE blockprofilerate Blockscout Blockspace blockspace blockt...

(WORD_REPEAT_RULE)


[duplication] ~45-~45: Možný preklep: zopakovali ste slovo
Context: ...PROFILERATE blockprofilerate Blockscout Blockspace blockspace blocktime Blocktimes blocktimes BLOOMFI...

(WORD_REPEAT_RULE)


[duplication] ~48-~48: Možný preklep: zopakovali ste slovo
Context: ...ckscout Blockspace blockspace blocktime Blocktimes blocktimes BLOOMFILTER bloomfilter BLTZ Bootcamp b...

(WORD_REPEAT_RULE)


[duplication] ~50-~50: Možný preklep: zopakovali ste slovo
Context: ...ckspace blocktime Blocktimes blocktimes BLOOMFILTER bloomfilter BLTZ Bootcamp bootnode BOOTNODES Bootno...

(WORD_REPEAT_RULE)


[duplication] ~55-~55: Možný preklep: zopakovali ste slovo
Context: ...LTER bloomfilter BLTZ Bootcamp bootnode BOOTNODES Bootnodes bootnodes bottlenecked Brotli brotli Ca...

(WORD_REPEAT_RULE)


[duplication] ~59-~59: Možný preklep: zopakovali ste slovo
Context: ...TNODES Bootnodes bootnodes bottlenecked Brotli brotli Callouts callouts CCIP Celestia Celesti...

(WORD_REPEAT_RULE)


[duplication] ~61-~61: Možný preklep: zopakovali ste slovo
Context: ...es bootnodes bottlenecked Brotli brotli Callouts callouts CCIP Celestia Celestia's chainid Chainl...

(WORD_REPEAT_RULE)


[duplication] ~64-~64: Možný preklep: zopakovali ste slovo
Context: ...ed Brotli brotli Callouts callouts CCIP Celestia Celestia's chainid Chainlink chainlist Chainstac...

(WORD_REPEAT_RULE)


[duplication] ~74-~74: Možný preklep: zopakovali ste slovo
Context: ...ck chaosnet Chugsplash Clabby codebases Collateralized collateralized compr Comprensive COMPUTEPENDINGBLOCK c...

(WORD_REPEAT_RULE)


[duplication] ~78-~78: Možný preklep: zopakovali ste slovo
Context: ...alized collateralized compr Comprensive COMPUTEPENDINGBLOCK computependingblock confs Consen corsdomain counterfactuall...

(WORD_REPEAT_RULE)


[duplication] ~84-~84: Možný preklep: zopakovali ste slovo
Context: ...onfs Consen corsdomain counterfactually Crosschain crosschain Crossmint Dapphub daserver DATACAP data...

(WORD_REPEAT_RULE)


[duplication] ~89-~89: Možný preklep: zopakovali ste slovo
Context: ...n crosschain Crossmint Dapphub daserver DATACAP datacap DATADIR datadir Devnet devnet Devnets d...

(WORD_REPEAT_RULE)


[duplication] ~91-~91: Možný preklep: zopakovali ste slovo
Context: ...ssmint Dapphub daserver DATACAP datacap DATADIR datadir Devnet devnet Devnets devnets Devs dire...

(WORD_REPEAT_RULE)


[duplication] ~93-~93: Možný preklep: zopakovali ste slovo
Context: ...aserver DATACAP datacap DATADIR datadir Devnet devnet Devnets devnets Devs direnv DISABLETXPO...

(WORD_REPEAT_RULE)


[duplication] ~95-~95: Možný preklep: zopakovali ste slovo
Context: ...P datacap DATADIR datadir Devnet devnet Devnets devnets Devs direnv DISABLETXPOOLGOSSIP disable...

(WORD_REPEAT_RULE)


[duplication] ~99-~99: Možný preklep: zopakovali ste slovo
Context: ...vnet devnet Devnets devnets Devs direnv DISABLETXPOOLGOSSIP disabletxpoolgossip Discv discv DIVU Drand dripcheck Drippi...

(WORD_REPEAT_RULE)


[duplication] ~101-~101: Možný preklep: zopakovali ste slovo
Context: ...DISABLETXPOOLGOSSIP disabletxpoolgossip Discv discv DIVU Drand dripcheck Drippie Eigen EIPs...

(WORD_REPEAT_RULE)


[duplication] ~109-~109: Možný preklep: zopakovali ste slovo
Context: ...DIVU Drand dripcheck Drippie Eigen EIPs ENABLEDEPRECATEDPERSONAL enabledeprecatedpersonal enginekind Erigon erigon ETHERBASE ethe...

(WORD_REPEAT_RULE)


[duplication] ~112-~112: Možný preklep: zopakovali ste slovo
Context: ...NAL enabledeprecatedpersonal enginekind Erigon erigon ETHERBASE etherbase Ethernity Ethernow ...

(WORD_REPEAT_RULE)


[duplication] ~114-~114: Možný preklep: zopakovali ste slovo
Context: ...ecatedpersonal enginekind Erigon erigon ETHERBASE etherbase Ethernity Ethernow ETHSTATS ethstats EV...

(WORD_REPEAT_RULE)


[duplication] ~118-~118: Možný preklep: zopakovali ste slovo
Context: ... ETHERBASE etherbase Ethernity Ethernow ETHSTATS ethstats EVMTIMEOUT evmtimeout excercise executa...

(WORD_REPEAT_RULE)


[duplication] ~120-~120: Možný preklep: zopakovali ste slovo
Context: ...se Ethernity Ethernow ETHSTATS ethstats EVMTIMEOUT evmtimeout excercise executability exfiltrate EXIT...

(WORD_REPEAT_RULE)


[duplication] ~125-~125: Možný preklep: zopakovali ste slovo
Context: ...eout excercise executability exfiltrate EXITWHENSYNCED exitwhensynced EXTRADATA extradata Farcaster Faultproo...

(WORD_REPEAT_RULE)


[duplication] ~127-~127: Možný preklep: zopakovali ste slovo
Context: ...xfiltrate EXITWHENSYNCED exitwhensynced EXTRADATA extradata Farcaster Faultproof FDLIMIT fdlimit Fl...

(WORD_REPEAT_RULE)


[duplication] ~131-~131: Možný preklep: zopakovali ste slovo
Context: ...XTRADATA extradata Farcaster Faultproof FDLIMIT fdlimit Flashblocks Flashbots forkable forkchoi...

(WORD_REPEAT_RULE)


[duplication] ~143-~143: Možný preklep: zopakovali ste slovo
Context: ...s Fraxtal funcationality Funct gameplay GASCAP gascap gaslessly GCMODE gcmode Gelato gifs GLO...

(WORD_REPEAT_RULE)


[duplication] ~146-~146: Možný preklep: zopakovali ste slovo
Context: ... Funct gameplay GASCAP gascap gaslessly GCMODE gcmode Gelato gifs GLOBALQUEUE globalqueue GLO...

(WORD_REPEAT_RULE)


[duplication] ~150-~150: Možný preklep: zopakovali ste slovo
Context: ...cap gaslessly GCMODE gcmode Gelato gifs GLOBALQUEUE globalqueue GLOBALSLOTS globalslots gokzg growthepi...

(WORD_REPEAT_RULE)


[duplication] ~152-~152: Možný preklep: zopakovali ste slovo
Context: ...ode Gelato gifs GLOBALQUEUE globalqueue GLOBALSLOTS globalslots gokzg growthepie hardfork hardforks HEA...

(WORD_REPEAT_RULE)


[duplication] ~158-~158: Možný preklep: zopakovali ste slovo
Context: ...ots gokzg growthepie hardfork hardforks HEALTHCHECK healthcheck healthchecks HISTORICALRPC historicalrp...

(WORD_REPEAT_RULE)


[duplication] ~161-~161: Možný preklep: zopakovali ste slovo
Context: ...ks HEALTHCHECK healthcheck healthchecks HISTORICALRPC historicalrpc HISTORICALRPCTIMEOUT historicalrpctimeo...

(WORD_REPEAT_RULE)


[duplication] ~163-~163: Možný preklep: zopakovali ste slovo
Context: ...ealthchecks HISTORICALRPC historicalrpc HISTORICALRPCTIMEOUT historicalrpctimeout HOLESKY Holesky holesky IERC IGNOREPRIC...

(WORD_REPEAT_RULE)


[duplication] ~165-~165: Možný preklep: zopakovali ste slovo
Context: ...STORICALRPCTIMEOUT historicalrpctimeout HOLESKY Holesky holesky IERC IGNOREPRICE ignoreprice Im...

(WORD_REPEAT_RULE)


[duplication] ~169-~169: Možný preklep: zopakovali ste slovo
Context: ...rpctimeout HOLESKY Holesky holesky IERC IGNOREPRICE ignoreprice Immunefi Inator inator INFLUXDBV influx...

(WORD_REPEAT_RULE)


[duplication] ~172-~172: Možný preklep: zopakovali ste slovo
Context: ...y IERC IGNOREPRICE ignoreprice Immunefi Inator inator INFLUXDBV influxdbv initcode IPCDISABLE...

(WORD_REPEAT_RULE)


[duplication] ~174-~174: Možný preklep: zopakovali ste slovo
Context: ...RICE ignoreprice Immunefi Inator inator INFLUXDBV influxdbv initcode IPCDISABLE ipcdisable ipcfile ...

(WORD_REPEAT_RULE)


[duplication] ~177-~177: Možný preklep: zopakovali ste slovo
Context: ...tor inator INFLUXDBV influxdbv initcode IPCDISABLE ipcdisable ipcfile IPCPATH ipcpath IPFS Isthumus J...

(WORD_REPEAT_RULE)


[duplication] ~180-~180: Možný preklep: zopakovali ste slovo
Context: ... initcode IPCDISABLE ipcdisable ipcfile IPCPATH ipcpath IPFS Isthumus JALR JOURNALREMOTES journ...

(WORD_REPEAT_RULE)


[duplication] ~185-~185: Možný preklep: zopakovali ste slovo
Context: ...file IPCPATH ipcpath IPFS Isthumus JALR JOURNALREMOTES journalremotes JSPATH jspath jwtsecret Keccak leveldb ...

(WORD_REPEAT_RULE)


[duplication] ~187-~187: Možný preklep: zopakovali ste slovo
Context: ...umus JALR JOURNALREMOTES journalremotes JSPATH jspath jwtsecret Keccak leveldb lightkdf Lisk ...

(WORD_REPEAT_RULE)


[duplication] ~196-~196: Možný preklep: zopakovali ste slovo
Context: ...ak leveldb lightkdf Lisk logfile logfmt MAXAGE maxage MAXBACKUPS maxbackups MAXPEERS maxpeers...

(WORD_REPEAT_RULE)


[duplication] ~198-~198: Možný preklep: zopakovali ste slovo
Context: ...htkdf Lisk logfile logfmt MAXAGE maxage MAXBACKUPS maxbackups MAXPEERS maxpeers MAXPENDPEERS maxpendp...

(WORD_REPEAT_RULE)


[duplication] ~200-~200: Možný preklep: zopakovali ste slovo
Context: ...fmt MAXAGE maxage MAXBACKUPS maxbackups MAXPEERS maxpeers MAXPENDPEERS maxpendpeers MAXPRICE maxp...

(WORD_REPEAT_RULE)


[duplication] ~202-~202: Možný preklep: zopakovali ste slovo
Context: ...MAXBACKUPS maxbackups MAXPEERS maxpeers MAXPENDPEERS maxpendpeers MAXPRICE maxprice MEMPROFILERATE mempro...

(WORD_REPEAT_RULE)


[duplication] ~204-~204: Možný preklep: zopakovali ste slovo
Context: ...EERS maxpeers MAXPENDPEERS maxpendpeers MAXPRICE maxprice MEMPROFILERATE memprofilerate Merkle me...

(WORD_REPEAT_RULE)


[duplication] ~206-~206: Možný preklep: zopakovali ste slovo
Context: ...ENDPEERS maxpendpeers MAXPRICE maxprice MEMPROFILERATE memprofilerate Merkle merkle MFHI MFLO Mgas Minato MIN...

(WORD_REPEAT_RULE)


[duplication] ~208-~208: Možný preklep: zopakovali ste slovo
Context: ... maxprice MEMPROFILERATE memprofilerate Merkle merkle MFHI MFLO Mgas Minato MINFREEDISK minfr...

(WORD_REPEAT_RULE)


[duplication] ~214-~214: Možný preklep: zopakovali ste slovo
Context: ...ate Merkle merkle MFHI MFLO Mgas Minato MINFREEDISK minfreedisk MINSUGGESTEDPRIORITYFEE minsuggestedpri...

(WORD_REPEAT_RULE)


[duplication] ~216-~216: Možný preklep: zopakovali ste slovo
Context: ...FLO Mgas Minato MINFREEDISK minfreedisk MINSUGGESTEDPRIORITYFEE minsuggestedpriorityfee Mintable Mintplex MIPSEVM Mitigations M...

(WORD_REPEAT_RULE)


[duplication] ~222-~222: Možný preklep: zopakovali ste slovo
Context: ...e Mintable Mintplex MIPSEVM Mitigations Monitorism monitorism Moralis Mordor mountpoint MOVN MOVZ MTH...

(WORD_REPEAT_RULE)


[duplication] ~233-~233: Možný preklep: zopakovali ste slovo
Context: ...oint MOVN MOVZ MTHI MTLO MULT multiaddr Multichain multichain multiclient multisigs MULTU nethermind ...

(WORD_REPEAT_RULE)


[duplication] ~239-~239: Možný preklep: zopakovali ste slovo
Context: ... multiclient multisigs MULTU nethermind NETRESTRICT netrestrict NETWORKID networkid NEWPAYLOAD newpaylo...

(WORD_REPEAT_RULE)


[duplication] ~241-~241: Možný preklep: zopakovali ste slovo
Context: ...ULTU nethermind NETRESTRICT netrestrict NETWORKID networkid NEWPAYLOAD newpayload nextra NOCOMPACTI...

(WORD_REPEAT_RULE)


[duplication] ~243-~243: Možný preklep: zopakovali ste slovo
Context: ...ESTRICT netrestrict NETWORKID networkid NEWPAYLOAD newpayload nextra NOCOMPACTION nocompaction NODEKE...

(WORD_REPEAT_RULE)


[duplication] ~246-~246: Možný preklep: zopakovali ste slovo
Context: ... networkid NEWPAYLOAD newpayload nextra NOCOMPACTION nocompaction NODEKEY nodekey NODEKEYHEX nodekeyhex n...

(WORD_REPEAT_RULE)


[duplication] ~248-~248: Možný preklep: zopakovali ste slovo
Context: ...ayload nextra NOCOMPACTION nocompaction NODEKEY nodekey NODEKEYHEX nodekeyhex nodename NODISCOV...

(WORD_REPEAT_RULE)


[duplication] ~250-~250: Možný preklep: zopakovali ste slovo
Context: ...COMPACTION nocompaction NODEKEY nodekey NODEKEYHEX nodekeyhex nodename NODISCOVER nodiscover NOLOCALS...

(WORD_REPEAT_RULE)


[duplication] ~253-~253: Možný preklep: zopakovali ste slovo
Context: ... nodekey NODEKEYHEX nodekeyhex nodename NODISCOVER nodiscover NOLOCALS nolocals nonoce NOPREFETCH nop...

(WORD_REPEAT_RULE)


[duplication] ~255-~255: Možný preklep: zopakovali ste slovo
Context: ...dekeyhex nodename NODISCOVER nodiscover NOLOCALS nolocals nonoce NOPREFETCH noprefetch NOPRUNING ...

(WORD_REPEAT_RULE)


[duplication] ~258-~258: Možný preklep: zopakovali ste slovo
Context: ...VER nodiscover NOLOCALS nolocals nonoce NOPREFETCH noprefetch NOPRUNING nopruning NOSYNCSERVE nosyncs...

(WORD_REPEAT_RULE)


[duplication] ~260-~260: Možný preklep: zopakovali ste slovo
Context: ...S nolocals nonoce NOPREFETCH noprefetch NOPRUNING nopruning NOSYNCSERVE nosyncserve Numba Offchain ...

(WORD_REPEAT_RULE)


[duplication] ~262-~262: Možný preklep: zopakovali ste slovo
Context: ...PREFETCH noprefetch NOPRUNING nopruning NOSYNCSERVE nosyncserve Numba Offchain offchain opchaina opchai...

(WORD_REPEAT_RULE)


[duplication] ~265-~265: Možný preklep: zopakovali ste slovo
Context: ...nopruning NOSYNCSERVE nosyncserve Numba Offchain offchain opchaina opchainb OPCM Openfort oplabs ...

(WORD_REPEAT_RULE)


[duplication] ~276-~276: Možný preklep: zopakovali ste slovo
Context: ... opnode's opstack Pausability pcscdpath Pectra pectra Pectra's Peerstore peerstore peerstores...

(WORD_REPEAT_RULE)


[duplication] ~279-~279: Možný preklep: zopakovali ste slovo
Context: ...bility pcscdpath Pectra pectra Pectra's Peerstore peerstore peerstores Permissioned permissioned Pe...

(WORD_REPEAT_RULE)


[duplication] ~282-~282: Možný preklep: zopakovali ste slovo
Context: ...Pectra's Peerstore peerstore peerstores Permissioned permissioned Permissionless permissionless permissio...

(WORD_REPEAT_RULE)


[duplication] ~284-~284: Možný preklep: zopakovali ste slovo
Context: ...re peerstores Permissioned permissioned Permissionless permissionless permissionlessly Perps Peta Pimlico POA...

(WORD_REPEAT_RULE)


[duplication] ~292-~292: Možný preklep: zopakovali ste slovo
Context: ...ionlessly Perps Peta Pimlico POAP POAPs PPROF pprof Precommitments precommitments preconfig...

(WORD_REPEAT_RULE)


[duplication] ~294-~294: Možný preklep: zopakovali ste slovo
Context: ...rps Peta Pimlico POAP POAPs PPROF pprof Precommitments precommitments preconfigured predeploy Predeployed pre...

(WORD_REPEAT_RULE)


[duplication] ~298-~298: Možný preklep: zopakovali ste slovo
Context: ... precommitments preconfigured predeploy Predeployed predeployed Predeploys predeploys prefunded Preimag...

(WORD_REPEAT_RULE)


[duplication] ~300-~300: Možný preklep: zopakovali ste slovo
Context: ...gured predeploy Predeployed predeployed Predeploys predeploys prefunded Preimage preimage PREIMAGES p...

(WORD_REPEAT_RULE)


[duplication] ~303-~303: Možný preklep: zopakovali ste slovo
Context: ...eployed Predeploys predeploys prefunded Preimage preimage PREIMAGES preimages preinstall Preinsta...

(WORD_REPEAT_RULE)


[duplication] ~305-~305: Možný preklep: zopakovali ste slovo
Context: ... predeploys prefunded Preimage preimage PREIMAGES preimages preinstall Preinstalls preinstalls Pres...

(WORD_REPEAT_RULE)


[duplication] ~308-~308: Možný preklep: zopakovali ste slovo
Context: ...preimage PREIMAGES preimages preinstall Preinstalls preinstalls Prestate prestate prestates PREVRANDAO ...

(WORD_REPEAT_RULE)


[duplication] ~310-~310: Možný preklep: zopakovali ste slovo
Context: ...ages preinstall Preinstalls preinstalls Prestate prestate prestates PREVRANDAO PRICEBUMP pricebum...

(WORD_REPEAT_RULE)


[duplication] ~314-~314: Možný preklep: zopakovali ste slovo
Context: ... Prestate prestate prestates PREVRANDAO PRICEBUMP pricebump PRICELIMIT pricelimit productionize pro...

(WORD_REPEAT_RULE)


[duplication] ~316-~316: Možný preklep: zopakovali ste slovo
Context: ...restates PREVRANDAO PRICEBUMP pricebump PRICELIMIT pricelimit productionize productionized Protip Pro...

(WORD_REPEAT_RULE)


[duplication] ~322-~322: Možný preklep: zopakovali ste slovo
Context: ...uctionize productionized Protip Proxied Proxyd proxyd Pyth Pyth's QRNG Quicknode quicknode qu...

(WORD_REPEAT_RULE)


[duplication] ~324-~324: Možný preklep: zopakovali ste slovo
Context: ...uctionized Protip Proxied Proxyd proxyd Pyth Pyth's QRNG Quicknode quicknode quickstarts ...

(WORD_REPEAT_RULE)


[duplication] ~327-~327: Možný preklep: zopakovali ste slovo
Context: ... Proxied Proxyd proxyd Pyth Pyth's QRNG Quicknode quicknode quickstarts rebalancing Regenesis regen...

(WORD_REPEAT_RULE)


[duplication] ~331-~331: Možný preklep: zopakovali ste slovo
Context: ...knode quicknode quickstarts rebalancing Regenesis regenesis Reimagine REJOURNAL rejournal REMOTEDB ...

(WORD_REPEAT_RULE)


[duplication] ~334-~334: Možný preklep: zopakovali ste slovo
Context: ...balancing Regenesis regenesis Reimagine REJOURNAL rejournal REMOTEDB remotedb Reown Reown's replaya...

(WORD_REPEAT_RULE)


[duplication] ~336-~336: Možný preklep: zopakovali ste slovo
Context: ...regenesis Reimagine REJOURNAL rejournal REMOTEDB remotedb Reown Reown's replayability replayor re...

(WORD_REPEAT_RULE)


[duplication] ~338-~338: Možný preklep: zopakovali ste slovo
Context: ...e REJOURNAL rejournal REMOTEDB remotedb Reown Reown's replayability replayor reposts reprov...

(WORD_REPEAT_RULE)


[duplication] ~344-~344: Možný preklep: zopakovali ste slovo
Context: ...replayability replayor reposts reproven REQUIREDBLOCKS requiredblocks rollouts Rollups rollups Routescan rpck...

(WORD_REPEAT_RULE)


[duplication] ~347-~347: Možný preklep: zopakovali ste slovo
Context: ... REQUIREDBLOCKS requiredblocks rollouts Rollups rollups Routescan rpckind RPCPREFIX rpcprefix r...

(WORD_REPEAT_RULE)


[duplication] ~351-~351: Možný preklep: zopakovali ste slovo
Context: ...louts Rollups rollups Routescan rpckind RPCPREFIX rpcprefix rpcs RPGF Runbooks runbooks RWAs safedb...

(WORD_REPEAT_RULE)


[duplication] ~355-~355: Možný preklep: zopakovali ste slovo
Context: ...n rpckind RPCPREFIX rpcprefix rpcs RPGF Runbooks runbooks RWAs safedb Schnorr SEPOLIA Sepolia sep...

(WORD_REPEAT_RULE)


[duplication] ~360-~360: Možný preklep: zopakovali ste slovo
Context: ...F Runbooks runbooks RWAs safedb Schnorr SEPOLIA Sepolia sepolia seqnr SEQUENCERHTTP sequencerht...

(WORD_REPEAT_RULE)


[duplication] ~364-~364: Možný preklep: zopakovali ste slovo
Context: ...b Schnorr SEPOLIA Sepolia sepolia seqnr SEQUENCERHTTP sequencerhttp serv signup SLLV SLTI SLTIU SLTU smartc...

(WORD_REPEAT_RULE)


[duplication] ~374-~374: Možný preklep: zopakovali ste slovo
Context: ...V SLTI SLTIU SLTU smartcard snapshotlog Snapsync snapsync Solana Soneium soyboy Spearbit SRAV SRL...

(WORD_REPEAT_RULE)


[duplication] ~382-~382: Možný preklep: zopakovali ste slovo
Context: ...olana Soneium soyboy Spearbit SRAV SRLV Stablecoins stablecoins statefulset subcomponents subgame subhe...

(WORD_REPEAT_RULE)


[duplication] ~391-~391: Možný preklep: zopakovali ste slovo
Context: ...ame subheaders subsecond SUBU Sunnyside SUPERCHAIN Superchain superchain Superchain's superchainerc S...

(WORD_REPEAT_RULE)


[duplication] ~393-~393: Možný preklep: zopakovali ste slovo
Context: ...nd SUBU Sunnyside SUPERCHAIN Superchain superchain Superchain's superchainerc Superlend Superloans Su...

(WORD_REPEAT_RULE)


[duplication] ~399-~399: Možný preklep: zopakovali ste slovo
Context: ...chainerc Superlend Superloans Superscan Supersim supersim SYNCMODE syncmode SYNCTARGET synctarget...

(WORD_REPEAT_RULE)


[duplication] ~401-~401: Možný preklep: zopakovali ste slovo
Context: ... Superloans Superscan Supersim supersim SYNCMODE syncmode SYNCTARGET synctarget syscalls thirdweb...

(WORD_REPEAT_RULE)


[duplication] ~403-~403: Možný preklep: zopakovali ste slovo
Context: ...can Supersim supersim SYNCMODE syncmode SYNCTARGET synctarget syscalls thirdweb threadcreate timeseri...

(WORD_REPEAT_RULE)


[duplication] ~416-~416: Možný preklep: zopakovali ste slovo
Context: ...essly trustrpc Twei txfeecap txmgr txns TXPOOL txpool txproxy txproxyd uncensorable uncounter...

(WORD_REPEAT_RULE)


[duplication] ~429-~429: Možný preklep: zopakovali ste slovo
Context: ... Unprotect unsubmitted UPNP upstreaming VERKLE verkle VHOSTS vhosts Viem viem Viem's viem's V...

(WORD_REPEAT_RULE)


[duplication] ~431-~431: Možný preklep: zopakovali ste slovo
Context: ...ubmitted UPNP upstreaming VERKLE verkle VHOSTS vhosts Viem viem Viem's viem's VMDEBUG vmdebug...

(WORD_REPEAT_RULE)


[duplication] ~433-~433: Možný preklep: zopakovali ste slovo
Context: ...upstreaming VERKLE verkle VHOSTS vhosts Viem viem Viem's viem's VMDEBUG vmdebug VMODULE v...

(WORD_REPEAT_RULE)


[duplication] ~437-~437: Možný preklep: zopakovali ste slovo
Context: ...e VHOSTS vhosts Viem viem Viem's viem's VMDEBUG vmdebug VMODULE vmodule xlarge XORI ZKPs ZKVM Z...

(WORD_REPEAT_RULE)


[duplication] ~439-~439: Možný preklep: zopakovali ste slovo
Context: ...Viem viem Viem's viem's VMDEBUG vmdebug VMODULE vmodule xlarge XORI ZKPs ZKVM Zora zora

(WORD_REPEAT_RULE)


[duplication] ~445-~445: Možný preklep: zopakovali ste slovo
Context: ...g VMODULE vmodule xlarge XORI ZKPs ZKVM Zora zora

(WORD_REPEAT_RULE)

public/tutorials/InteropToken.sol (3)

1-7: LGTM: Appropriate imports and solidity version.

The contract uses a recent Solidity version and imports the necessary OpenZeppelin upgradeable contracts and interop interfaces.


9-14: LGTM: Correct upgradeable pattern implementation.

The contract properly inherits from required interfaces and implements the initializer pattern for upgradeable contracts.


27-36: LGTM: Properly implemented crosschainBurn function.

The function correctly enforces bridge authorization, burns tokens, and emits the required event.

public/tutorials/setup-for-erc20-upgrade.sh (1)

25-67: LGTM: Well-structured Solidity deployment script.

The generated Solidity script properly implements the upgradeable pattern with a token implementation, beacon, and proxy.

public/tutorials/CustomBridge.sol (1)

15-18: tokenAddressThere is currently unused
The variable is stored but never read, which triggers the unused‑state‑variable Solidity warning. Either remove it or integrate it (e.g., emit in events or add future‑proof validation).

@qbzzt qbzzt requested a review from zainbacchus April 17, 2025 19:44
Copy link
Contributor

@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: 0

🧹 Nitpick comments (8)
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (8)

34-39: Remove italic emphasis for consistency
Avoid using italics for emphasis in documentation. Replace *not* with plain text.

-  The code on the documentation site is sample code, *not* production code.
+  The code on the documentation site is sample code, not production code.

41-47: Remove internal author comment block
The commented JSX block is not rendered and clutters the source. It should be removed to keep the MDX clean.

- {/* 
- I put this warning here, when we don't have it on most pages, because this tutorial
- has code that is a lot more likely to be used in production. It doesn't just
- show what is possible, it does the exact job needed.
-
- */}
🧰 Tools
🪛 LanguageTool

[formatting] ~43-~43: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ere, when we don't have it on most pages, because this tutorial has code that is a lot mo...

(COMMA_BEFORE_BECAUSE)


184-187: Use impersonal or imperative voice instead of 'we'
Avoid first‑person pronouns and maintain an instructional tone.

- We have an interesting [chicken-and-egg](https://en.wikipedia.org/wiki/Chicken_or_the_egg) issue here.
- To create a proxy, we need the address of the implementation contract, the one with the actual code.
- However, the bridge and ERC20 code needs to have the proxy addresses.
- One possible solution is to choose a pre-existing contract, and use that as the implementation contract until we can upgrade.
+ There is an interesting [chicken-and-egg](https://en.wikipedia.org/wiki/Chicken_or_the_egg) issue when deploying proxies.
+ Creating a proxy requires the address of the implementation contract (the one with the actual code).
+ However, the bridge and ERC20 contracts must include the proxy addresses.
+ One solution is to use a pre-existing contract as the implementation until an upgrade is possible.
🧰 Tools
🪛 LanguageTool

[style] ~184-~184: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...t we need to create the other three. We have an interesting [chicken-and-egg](h...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


206-207: Use imperative phrasing for step instructions
Switch to the imperative mood for clarity in tutorials.

-  We need to replace the ERC20 contracts with contracts that:
+  Replace the ERC20 contracts with contracts that:
🧰 Tools
🪛 LanguageTool

[style] ~206-~206: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...` ### Deploy ERC7802 contracts We need to replace the ERC20 contracts with contra...

(REP_NEED_TO_VB)


210-210: Add comma after 'Normally'
Insert a comma after the introductory adverb for proper punctuation.

-      Normally this is `PredeployAddresses.SUPERCHAIN_TOKEN_BRIDGE`, but in our case it would be the bridge proxy address, which we'll store in `bridgeAddress`.
+      Normally, this is `PredeployAddresses.SUPERCHAIN_TOKEN_BRIDGE`, but in our case it will be the bridge proxy address stored in `bridgeAddress`.
🧰 Tools
🪛 LanguageTool

[typographical] ~210-~210: Consider adding a comma after ‘Normally’ for more clarity.
Context: ... address to mint and burn tokens. Normally this is `PredeployAddresses.SUPERCHAIN_...

(RB_LY_COMMA)


281-283: Remove unnecessary comma before 'because'
When the 'because' clause is essential, omit the comma preceding it.

-  We don't need to specify the token address, or the chain ID on the other side, because they are hardwired in this bridge.
+  We don't need to specify the token address or the chain ID on the other side because they are hardwired in this bridge.
🧰 Tools
🪛 LanguageTool

[formatting] ~282-~282: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...dress, or the chain ID on the other side, because they are hardwired in this bridge. ...

(COMMA_BEFORE_BECAUSE)


338-338: Correct determiner usage for chain references
Avoid double determiners; refer to chains by name.

-  The A chain should have 0.9 tokens, and the B chain should have 0.1 tokens.
+  Chain A should have 0.9 tokens, and Chain B should have 0.1 tokens.
🧰 Tools
🪛 LanguageTool

[grammar] ~338-~338: Two determiners in a row. Choose either “The” or “A”.
Context: ... ``` 4. See the new balances. The A chain should have 0.9 tokens, and the B...

(DT_DT)


132-133: Use placeholder for private keys in documentation
Avoid publishing actual private keys. Use a placeholder variable to prompt users to insert their own.

-      PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
+      PRIVATE_KEY=<YOUR_PRIVATE_KEY>
🧰 Tools
🪛 Gitleaks (8.21.2)

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

(generic-api-key)

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bb9a679 and 200de29.

📒 Files selected for processing (2)
  • pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (1 hunks)
  • words.txt (0 hunks)
💤 Files with no reviewable changes (1)
  • words.txt
🧰 Additional context used
📓 Path-based instructions (1)
`**/*.mdx`: "ALWAYS review Markdown content THOROUGHLY with the following criteria: - First, check the frontmatter section at the top of the file: 1. For regular pages, ensure AL...

**/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • First, check the frontmatter section at the top of the file:
    1. For regular pages, ensure ALL these fields are present and not empty:
    ---
    title: [non-empty]
    lang: [non-empty]
    description: [non-empty]
    topic: [non-empty]
    personas: [non-empty array]
    categories: [non-empty array]
    content_type: [valid type]
    ---
    1. For landing pages (index.mdx or files with ), only these fields are required:
    ---
    title: [non-empty]
    lang: [non-empty]
    description: [non-empty]
    topic: [non-empty]
    ---
    1. If any required fields are missing or empty, comment:
      'This file appears to be missing required metadata. Please check keywords.config.yaml for valid options and add the required fields manually. You can validate your changes by running:
    pnpm validate-metadata
    ```'
  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
  • pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx
🪛 LanguageTool
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx

[formatting] ~43-~43: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ere, when we don't have it on most pages, because this tutorial has code that is a lot mo...

(COMMA_BEFORE_BECAUSE)


[style] ~184-~184: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...t we need to create the other three. We have an interesting [chicken-and-egg](h...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~206-~206: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...` ### Deploy ERC7802 contracts We need to replace the ERC20 contracts with contra...

(REP_NEED_TO_VB)


[typographical] ~210-~210: Consider adding a comma after ‘Normally’ for more clarity.
Context: ... address to mint and burn tokens. Normally this is `PredeployAddresses.SUPERCHAIN_...

(RB_LY_COMMA)


[formatting] ~282-~282: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...dress, or the chain ID on the other side, because they are hardwired in this bridge. ...

(COMMA_BEFORE_BECAUSE)


[grammar] ~338-~338: Two determiners in a row. Choose either “The” or “A”.
Context: ... ``` 4. See the new balances. The A chain should have 0.9 tokens, and the B...

(DT_DT)

🪛 Gitleaks (8.21.2)
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx

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

(generic-api-key)


215-215: 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 (3)
  • GitHub Check: Redirect rules - docs-optimism
  • GitHub Check: Header rules - docs-optimism
  • GitHub Check: Pages changed - docs-optimism
🔇 Additional comments (2)
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (2)

1-9: Frontmatter is complete and valid
All required metadata fields (title, lang, description, topic, personas, categories, content_type) are present and non-empty.


11-12: Import statement
The imported Steps, Callout, and Tabs components from nextra/components are used appropriately.

Copy link
Member

@bradleycamacho bradleycamacho left a comment

Choose a reason for hiding this comment

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

This looks really good! Pushed up a small fix and made some suggestions

Co-authored-by: Bradley Camacho <[email protected]>
Copy link
Contributor

@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: 5

🧹 Nitpick comments (3)
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (3)

185-185: Fix subject‑verb agreement
The compound subject “bridge and ERC20 code” should take the plural verb “need.”

Diff:

-  However, the bridge and ERC20 code needs to have the proxy addresses.
+  However, the bridge and ERC20 code need to have the proxy addresses.

281-283: Remove comma before “because”
Per style guidelines, drop the comma before a necessary “because” clause.

Diff:

-  We don't need to specify the token address, or the chain ID on the other side, because they are hardwired in this bridge.
+  We don't need to specify the token address or the chain ID on the other side because they are hardwired in this bridge.
🧰 Tools
🪛 LanguageTool

[formatting] ~282-~282: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...dress, or the chain ID on the other side, because they are hardwired in this bridge. ...

(COMMA_BEFORE_BECAUSE)


132-132: Use a placeholder for private keys
Replace the hard‑coded example key with a clear placeholder to avoid confusion.

Diff:

-      PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
+      PRIVATE_KEY=<YOUR_PRIVATE_KEY>
🧰 Tools
🪛 Gitleaks (8.21.2)

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

(generic-api-key)

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8d6f41f and 2fcc9d7.

📒 Files selected for processing (1)
  • pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`**/*.mdx`: "ALWAYS review Markdown content THOROUGHLY with the following criteria: - First, check the frontmatter section at the top of the file: 1. For regular pages, ensure AL...

**/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • First, check the frontmatter section at the top of the file:
    1. For regular pages, ensure ALL these fields are present and not empty:
    ---
    title: [non-empty]
    lang: [non-empty]
    description: [non-empty]
    topic: [non-empty]
    personas: [non-empty array]
    categories: [non-empty array]
    content_type: [valid type]
    ---
    1. For landing pages (index.mdx or files with ), only these fields are required:
    ---
    title: [non-empty]
    lang: [non-empty]
    description: [non-empty]
    topic: [non-empty]
    ---
    1. If any required fields are missing or empty, comment:
      'This file appears to be missing required metadata. Please check keywords.config.yaml for valid options and add the required fields manually. You can validate your changes by running:
    pnpm validate-metadata
    ```'
  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
  • pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx
🪛 LanguageTool
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx

[formatting] ~43-~43: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ere, when we don't have it on most pages, because this tutorial has code that is a lot mo...

(COMMA_BEFORE_BECAUSE)


[uncategorized] ~168-~168: This verb may not be in the correct tense. Consider changing the tense to fit the context better.
Context: ...` ### Create a Foundry project We create a [Foundry](https://book.getfoundry.sh/...

(AI_EN_LECTOR_REPLACEMENT_VERB_TENSE)


[uncategorized] ~168-~168: This verb may not be in the correct tense. Consider changing the tense to fit the context better.
Context: ...ttps://book.getfoundry.sh/) project and import the [OpenZeppelin](https://www.openzepp...

(AI_EN_LECTOR_REPLACEMENT_VERB_TENSE)


[style] ~184-~184: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...t we need to create the other three. We have an interesting [chicken-and-egg](h...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~206-~206: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...` ### Deploy ERC7802 contracts We need to replace the ERC20 contracts with contra...

(REP_NEED_TO_VB)


[typographical] ~210-~210: Consider adding a comma after ‘Normally’ for more clarity.
Context: ... address to mint and burn tokens. Normally this is `PredeployAddresses.SUPERCHAIN_...

(RB_LY_COMMA)


[formatting] ~282-~282: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...dress, or the chain ID on the other side, because they are hardwired in this bridge. ...

(COMMA_BEFORE_BECAUSE)


[grammar] ~338-~338: Two determiners in a row. Choose either “The” or “A”.
Context: ... ``` 4. See the new balances. The A chain should have 0.9 tokens, and the B...

(DT_DT)

🪛 Gitleaks (8.21.2)
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx

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

(generic-api-key)


215-215: 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 (3)
  • GitHub Check: Redirect rules - docs-optimism
  • GitHub Check: Header rules - docs-optimism
  • GitHub Check: Pages changed - docs-optimism
🔇 Additional comments (1)
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (1)

1-9: Frontmatter metadata completeness
All required frontmatter fields (title, lang, description, topic, personas, categories, content_type) are present and non-empty.

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Copy link
Contributor

@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: 1

🧹 Nitpick comments (3)
public/tutorials/setup-for-erc20-upgrade.sh (3)

1-5: Add strict error handling and normalize the shell interpreter
It’s best practice to fail fast and avoid subtle bugs by enabling strict mode and using a consistent shell. Consider switching to Bash with #!/usr/bin/env bash (if you rely on pipefail) and adding set -euo pipefail (or at least set -e for POSIX).

-#! /bin/sh
+#!/usr/bin/env bash
+set -euo pipefail  # Exit on error, unset variable, or failed pipe
 rm -rf upgrade-erc20 || { echo "Failed to remove directory"; exit 1; }
 mkdir upgrade-erc20 || { echo "Failed to create directory"; exit 1; }
 cd upgrade-erc20 || { echo "Failed to change directory"; exit 1; }

21-21: Remove or use the derived user address
USER_ADDRESS=$(cast wallet address --private-key "$PRIVATE_KEY") is never consumed later (SC2034). Remove it if not needed, or export/print it for downstream steps.

🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 21-21: USER_ADDRESS appears unused. Verify use (or export if used externally).

(SC2034)


70-73: Simplify address extraction & modernize subshell syntax
Backticks are deprecated—use $( … ). You can also target the exact log prefix for clarity. For example:

-BEACON_ADDRESS=`cat setup_output | awk '/Beacon:/ {print $2}'`
-ERC20_ADDRESS=`cat setup_output | awk '/Proxy:/ {print $2}'`
+BEACON_ADDRESS=$(awk '/UpgradeableBeacon:/ {print $2}' setup_output)
+ERC20_ADDRESS=$(awk '/Proxy:/           {print $2}' setup_output)

This reduces unnecessary cat and tightens your grep patterns.

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2fcc9d7 and 4fd1d18.

📒 Files selected for processing (2)
  • public/tutorials/CustomBridge.sol (1 hunks)
  • public/tutorials/setup-for-erc20-upgrade.sh (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • public/tutorials/CustomBridge.sol
🧰 Additional context used
🪛 Gitleaks (8.21.2)
public/tutorials/setup-for-erc20-upgrade.sh

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

(generic-api-key)

🪛 Shellcheck (0.10.0)
public/tutorials/setup-for-erc20-upgrade.sh

[warning] 18-18: URL_CHAIN_B appears unused. Verify use (or export if used externally).

(SC2034)


[warning] 21-21: USER_ADDRESS appears unused. Verify use (or export if used externally).

(SC2034)

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Redirect rules - docs-optimism
  • GitHub Check: Header rules - docs-optimism
  • GitHub Check: Pages changed - docs-optimism
🔇 Additional comments (3)
public/tutorials/setup-for-erc20-upgrade.sh (3)

23-24: Initialization commands look good
forge init and forge install OpenZeppelin/openzeppelin-contracts-upgradeable correctly scaffold the project and pull in the upgradeable contracts.


26-68: Verify generated Solidity imports and paths
The heredoc generates LabSetup.s.sol with imports from lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/.... Please confirm these paths match the layout produced by forge install. If the beacon/proxy contracts live under contracts/, the import might need to be:

import {UpgradeableBeacon} from "openzeppelin-contracts-upgradeable/contracts/proxy/beacon/UpgradeableBeacon.sol";
import {BeaconProxy}      from "openzeppelin-contracts-upgradeable/contracts/proxy/beacon/BeaconProxy.sol";

This will prevent compilation errors at forge script.


75-78: Echo configuration commands
The final echo statements correctly instruct the user how to export the deployed addresses. No changes needed here.

Copy link
Contributor

@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: 1

♻️ Duplicate comments (4)
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (4)

34-39: Remove italic emphasis in callout
Per style guidelines, avoid italics for emphasis. Convert *not* to plain text.

<Callout type="warning">
-  The code on the documentation site is sample code, *not* production code.
+  The code on the documentation site is sample code, not production code.

98-98: Correct verb form in heading
Use “Set up” instead of “Setup” in the heading.

- ### Setup the ERC20 token on chain A
+ ### Set up the ERC20 token on chain A

166-169: Avoid first‑person plural in tutorial steps
Line 168 uses “We create…”. Convert to imperative:

- We create a [Foundry](https://book.getfoundry.sh/) project and import the [OpenZeppelin](https://www.openzeppelin.com/solidity-contracts) contracts…
+ Create a [Foundry](https://book.getfoundry.sh/) project and import the [OpenZeppelin](https://www.openzeppelin.com/solidity-contracts) contracts…
🧰 Tools
🪛 LanguageTool

[uncategorized] ~168-~168: This verb may not be in the correct tense. Consider changing the tense to fit the context better.
Context: ...` ### Create a Foundry project We create a [Foundry](https://book.getfoundry.sh/...

(AI_EN_LECTOR_REPLACEMENT_VERB_TENSE)


[uncategorized] ~168-~168: This verb may not be in the correct tense. Consider changing the tense to fit the context better.
Context: ...ttps://book.getfoundry.sh/) project and import the [OpenZeppelin](https://www.openzepp...

(AI_EN_LECTOR_REPLACEMENT_VERB_TENSE)


206-210: Streamline ERC7802 contract replacement instruction
Line 206 starts with “We need to replace…”. Use imperative and fix comma after “Normally”:

- We need to replace the ERC20 contracts with contracts that:
+ Replace the ERC20 contracts with versions that:
...
-   Normally this is `PredeployAddresses.SUPERCHAIN_TOKEN_BRIDGE`, but in our case it would be the bridge proxy address, which we'll store in `bridgeAddress`.
+   Normally, this is `PredeployAddresses.SUPERCHAIN_TOKEN_BRIDGE`, but in this scenario it is the bridge proxy address stored in `bridgeAddress`.
🧰 Tools
🪛 LanguageTool

[style] ~206-~206: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...` ### Deploy ERC7802 contracts We need to replace the ERC20 contracts with contra...

(REP_NEED_TO_VB)


[typographical] ~210-~210: Consider adding a comma after ‘Normally’ for more clarity.
Context: ... address to mint and burn tokens. Normally this is `PredeployAddresses.SUPERCHAIN_...

(RB_LY_COMMA)

🧹 Nitpick comments (10)
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (10)

15-20: Avoid personal pronouns in explanatory text
Line 19 uses “we can still use interop…”; switch to direct imperative or third‑person to maintain consistency. For example:

- However, if the original ERC20 contract is behind a proxy (so we can add [ERC7802] support), we can still use interop by writing our own bridge.
+ However, when the original ERC20 contract is behind a proxy (enabling [ERC7802] support), you can still leverage interop by writing a custom bridge.

21-32: Prefer avoiding contractions
Line 26 uses “you'll”. For clarity and formality in documentation, expand to “you will”:

- **What you'll learn**
+ **What you will learn**

83-84: Eliminate “you want” phrasing
Avoid second‑person phrasing. For instance:

- Some steps depend on whether you want to deploy on [Supersim](/interop/tools/supersim) or on the [development network](/interop/tools/devnet).
+ Some steps depend on whether the target environment is [Supersim](/interop/tools/supersim) or the [development network](/interop/tools/devnet).

88-94: Use imperative mood for instructions
Line 88 starts with “If you are going to use Supersim…”. Convert to direct instruction:

- If you are going to use Supersim, follow these instructions to install and run Supersim.
+ To use Supersim, follow these instructions to install and run it:

90-96: Refine callout phrasing
Line 91 could be more direct:

- Make sure to run Supersim with autorelay on.
+ Ensure Supersim is run with `--interop.autorelay true`.

108-112: Avoid “you want” and personal pronouns
Line 108 uses “If you want to deploy…”. Change to imperative:

- If you want to deploy to the [development networks](/interop/tools/devnet), provide `setup-for-erc20-upgrade.sh` with the private key…
+ To deploy to the [development networks](/interop/tools/devnet), provide `setup-for-erc20-upgrade.sh` with the private key…

125-126: Remove “we” from usage description
Line 125:

- Specify these variables, which we use later:
+ Specify these variables for later use:

181-184: Use imperative and remove pronouns
Lines 181–182 use “We need” and “We already have”. Suggest:

- We need two contracts on each chain: an ERC20 and a bridge, and to enable future upgrades, we want to install each of those contracts behind a proxy.
- We already have one contract, the ERC20 on chain A, but we need to create the other three.
+ Deploy two contracts on each chain—an ERC20 and a bridge—behind beacon proxies for future upgrades. One ERC20 on chain A already exists; create the other three.
🧰 Tools
🪛 LanguageTool

[style] ~184-~184: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...t we need to create the other three. We have an interesting [chicken-and-egg](h...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


282-282: Avoid pronouns and refine comma before “because”
Line 282 could be clearer:

- We don't need to specify the token address, or the chain ID on the other side, because they are hardwired in this bridge.
+ The token address and the chain ID on the other side are hardwired in this bridge.
🧰 Tools
🪛 LanguageTool

[formatting] ~282-~282: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...dress, or the chain ID on the other side, because they are hardwired in this bridge. ...

(COMMA_BEFORE_BECAUSE)


338-338: Fix redundant determiner in verification text
Convert “The A chain” to “Chain A” for clarity:

- The A chain should have 0.9 tokens, and the B chain should have 0.1 tokens.
+ Chain A should have 0.9 tokens, and Chain B should have 0.1 tokens.
🧰 Tools
🪛 LanguageTool

[grammar] ~338-~338: Two determiners in a row. Choose either “The” or “A”.
Context: ... ``` 4. See the new balances. The A chain should have 0.9 tokens, and the B...

(DT_DT)

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4fd1d18 and bb44dfd.

📒 Files selected for processing (1)
  • pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`**/*.mdx`: "ALWAYS review Markdown content THOROUGHLY with the following criteria: - First, check the frontmatter section at the top of the file: 1. For regular pages, ensure AL...

**/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • First, check the frontmatter section at the top of the file:
    1. For regular pages, ensure ALL these fields are present and not empty:
    ---
    title: [non-empty]
    lang: [non-empty]
    description: [non-empty]
    topic: [non-empty]
    personas: [non-empty array]
    categories: [non-empty array]
    content_type: [valid type]
    ---
    1. For landing pages (index.mdx or files with ), only these fields are required:
    ---
    title: [non-empty]
    lang: [non-empty]
    description: [non-empty]
    topic: [non-empty]
    ---
    1. If any required fields are missing or empty, comment:
      'This file appears to be missing required metadata. Please check keywords.config.yaml for valid options and add the required fields manually. You can validate your changes by running:
    pnpm validate-metadata
    ```'
  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
  • pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx
🪛 LanguageTool
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx

[formatting] ~43-~43: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ere, when we don't have it on most pages, because this tutorial has code that is a lot mo...

(COMMA_BEFORE_BECAUSE)


[uncategorized] ~168-~168: This verb may not be in the correct tense. Consider changing the tense to fit the context better.
Context: ...` ### Create a Foundry project We create a [Foundry](https://book.getfoundry.sh/...

(AI_EN_LECTOR_REPLACEMENT_VERB_TENSE)


[uncategorized] ~168-~168: This verb may not be in the correct tense. Consider changing the tense to fit the context better.
Context: ...ttps://book.getfoundry.sh/) project and import the [OpenZeppelin](https://www.openzepp...

(AI_EN_LECTOR_REPLACEMENT_VERB_TENSE)


[style] ~184-~184: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...t we need to create the other three. We have an interesting [chicken-and-egg](h...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~206-~206: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...` ### Deploy ERC7802 contracts We need to replace the ERC20 contracts with contra...

(REP_NEED_TO_VB)


[typographical] ~210-~210: Consider adding a comma after ‘Normally’ for more clarity.
Context: ... address to mint and burn tokens. Normally this is `PredeployAddresses.SUPERCHAIN_...

(RB_LY_COMMA)


[formatting] ~282-~282: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...dress, or the chain ID on the other side, because they are hardwired in this bridge. ...

(COMMA_BEFORE_BECAUSE)


[grammar] ~338-~338: Two determiners in a row. Choose either “The” or “A”.
Context: ... ``` 4. See the new balances. The A chain should have 0.9 tokens, and the B...

(DT_DT)

🪛 Gitleaks (8.21.2)
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx

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

(generic-api-key)


215-215: 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 (3)
  • GitHub Check: Redirect rules - docs-optimism
  • GitHub Check: Header rules - docs-optimism
  • GitHub Check: Pages changed - docs-optimism
🔇 Additional comments (4)
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (4)

1-9: Frontmatter completeness check
All required metadata fields are present (title, lang, description, topic, personas, categories, content_type) and non-empty.


11-12: Imports look correct
The MDX imports from nextra/components are necessary for the UI elements used below.


13-13: Heading style
The H1 Building a custom bridge uses sentence case and is appropriately capitalized.


49-50: Section header check
The H2 How beacon proxies work follows sentence case and is appropriate.

qbzzt and others added 6 commits April 21, 2025 12:51
…dge.mdx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
…dge.mdx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
…dge.mdx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
…dge.mdx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Copy link
Contributor

@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: 1

🧹 Nitpick comments (4)
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (4)

17-20: Avoid personal pronouns; use a direct instruction
Replace “we can still use interop by writing our own bridge” with a declarative or imperative phrasing. For example:

- However, if the original ERC20 contract is behind a proxy (so we can add ERC7802 support), we can still use interop by writing our own bridge.
+ However, if the original ERC20 contract is behind a proxy (so it supports ERC7802), write a custom bridge to enable interoperability.

36-36: Avoid personal pronouns in callouts
To maintain an impersonal tone, rephrase “we ran it” in the warning callout. For example:

- This means that we ran it, and it works as advertised.
+ This means that it has been run and works as advertised.

209-210: Add comma after introductory adverb
For clarity, insert a comma after “Normally”:

- Normally this is `PredeployAddresses.SUPERCHAIN_TOKEN_BRIDGE`, but in our case it would be the bridge proxy address...
+ Normally, this is `PredeployAddresses.SUPERCHAIN_TOKEN_BRIDGE`, but in our case it is the bridge proxy address...
🧰 Tools
🪛 LanguageTool

[typographical] ~210-~210: Consider adding a comma after ‘Normally’ for more clarity.
Context: ... address to mint and burn tokens. Normally this is `PredeployAddresses.SUPERCHAIN_...

(RB_LY_COMMA)


336-336: Improve determiners for clarity
Avoid the double-determiner construction “The A chain” / “the B chain.” Use “Chain A” and “Chain B” instead:

- The A chain should have 0.9 tokens, and the B chain should have 0.1 tokens.
+ Chain A should have 0.9 tokens, and Chain B should have 0.1 tokens.
🧰 Tools
🪛 LanguageTool

[grammar] ~336-~336: Two determiners in a row. Choose either “The” or “A”.
Context: ... ``` 4. See the new balances. The A chain should have 0.9 tokens, and the B...

(DT_DT)

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bb44dfd and 3efad2f.

📒 Files selected for processing (1)
  • pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`**/*.mdx`: "ALWAYS review Markdown content THOROUGHLY with the following criteria: - First, check the frontmatter section at the top of the file: 1. For regular pages, ensure AL...

**/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • First, check the frontmatter section at the top of the file:
    1. For regular pages, ensure ALL these fields are present and not empty:
    ---
    title: [non-empty]
    lang: [non-empty]
    description: [non-empty]
    topic: [non-empty]
    personas: [non-empty array]
    categories: [non-empty array]
    content_type: [valid type]
    ---
    1. For landing pages (index.mdx or files with ), only these fields are required:
    ---
    title: [non-empty]
    lang: [non-empty]
    description: [non-empty]
    topic: [non-empty]
    ---
    1. If any required fields are missing or empty, comment:
      'This file appears to be missing required metadata. Please check keywords.config.yaml for valid options and add the required fields manually. You can validate your changes by running:
    pnpm validate-metadata
    ```'
  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
  • pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx
🧠 Learnings (1)
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (1)
Learnt from: qbzzt
PR: ethereum-optimism/docs#1574
File: pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx:34-38
Timestamp: 2025-04-21T17:52:52.231Z
Learning: In warning callouts about sample code vs. production code, emphasis (italics) on the word "not" is intentionally used to highlight this important distinction, especially when advising users about code that works but hasn't been through rigorous audits.
🪛 LanguageTool
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx

[formatting] ~43-~43: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ere, when we don't have it on most pages, because this tutorial has code that is a lot mo...

(COMMA_BEFORE_BECAUSE)


[typographical] ~210-~210: Consider adding a comma after ‘Normally’ for more clarity.
Context: ... address to mint and burn tokens. Normally this is `PredeployAddresses.SUPERCHAIN_...

(RB_LY_COMMA)


[grammar] ~336-~336: Two determiners in a row. Choose either “The” or “A”.
Context: ... ``` 4. See the new balances. The A chain should have 0.9 tokens, and the B...

(DT_DT)

🪛 Gitleaks (8.21.2)
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx

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

(generic-api-key)


215-215: 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 (4)
  • GitHub Check: Redirect rules - docs-optimism
  • GitHub Check: Header rules - docs-optimism
  • GitHub Check: Pages changed - docs-optimism
  • GitHub Check: pr-workflow
🔇 Additional comments (1)
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (1)

1-9: Frontmatter metadata validation
All required frontmatter fields are present (title, lang, description, topic, personas, categories, content_type) and non-empty, matching the project’s documentation guidelines.

Comment on lines +181 to +183
We need two contracts on each chain: an ERC20 and a bridge, and to enable future upgrades, we want to install each of those contracts behind a proxy.
You already have one contract—the ERC20 on chain A—but need to create the other three.

Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Use imperative form; remove “We need”
Change the explanatory sentence into a direct instruction. For example:

- We need two contracts on each chain: an ERC20 and a bridge, and to enable future upgrades, we want to install each of those contracts behind a proxy.
+ Deploy two contracts on each chain—a token contract and a bridge—each installed behind an upgradeable proxy.
📝 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
We need two contracts on each chain: an ERC20 and a bridge, and to enable future upgrades, we want to install each of those contracts behind a proxy.
You already have one contract—the ERC20 on chain A—but need to create the other three.
Deploy two contracts on each chain—a token contract and a bridgeeach installed behind an upgradeable proxy.
You already have one contract—the ERC20 on chain A—but need to create the other three.

Copy link
Contributor

@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: 0

🧹 Nitpick comments (4)
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (4)

19-20: Avoid first-person pronouns in prose
Refactor the sentence to remove “we” and shift to neutral or imperative tone. For example:

- However, if the original ERC20 contract is behind a proxy (so we can add ERC7802 support), we can still use interop by writing our own bridge.
+ However, if the original ERC20 contract is behind a proxy (to add ERC7802 support), it's still possible to enable interoperability by writing a custom bridge.

181-183: Use imperative tone and remove personal pronouns
Change from “We need … we want” to direct instructions. For example:

- We need two contracts on each chain: an ERC20 and a bridge, and to enable future upgrades, we want to install each of those contracts behind a proxy.
+ Deploy two contracts on each chain—a token contract and a bridge—each installed behind an upgradeable proxy to support future upgrades.

210-210: Add missing comma for introductory adverb
Insert a comma after “Normally” for improved readability:

- *   Normally this is `PredeployAddresses.SUPERCHAIN_TOKEN_BRIDGE`, but in our case it would be the bridge proxy address...
+ *   Normally, this is `PredeployAddresses.SUPERCHAIN_TOKEN_BRIDGE`, but in our case it would be the bridge proxy address...
🧰 Tools
🪛 LanguageTool

[typographical] ~210-~210: Consider adding a comma after ‘Normally’ for more clarity.
Context: ... address to mint and burn tokens. Normally this is `PredeployAddresses.SUPERCHAIN_...

(RB_LY_COMMA)


336-336: Simplify chain reference and remove double determiners
Replace “The A chain” and “the B chain” with “Chain A” and “Chain B” for clarity:

- 4.  See the new balances. The A chain should have 0.9 tokens, and the B chain should have 0.1 tokens.
+ 4.  See the new balances. Chain A should have 0.9 tokens, and Chain B should have 0.1 tokens.
🧰 Tools
🪛 LanguageTool

[grammar] ~336-~336: Two determiners in a row. Choose either “The” or “A”.
Context: ... ``` 4. See the new balances. The A chain should have 0.9 tokens, and the B...

(DT_DT)

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3efad2f and f33ceff.

📒 Files selected for processing (1)
  • pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`**/*.mdx`: "ALWAYS review Markdown content THOROUGHLY with the following criteria: - First, check the frontmatter section at the top of the file: 1. For regular pages, ensure AL...

**/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • First, check the frontmatter section at the top of the file:
    1. For regular pages, ensure ALL these fields are present and not empty:
    ---
    title: [non-empty]
    lang: [non-empty]
    description: [non-empty]
    topic: [non-empty]
    personas: [non-empty array]
    categories: [non-empty array]
    content_type: [valid type]
    ---
    1. For landing pages (index.mdx or files with ), only these fields are required:
    ---
    title: [non-empty]
    lang: [non-empty]
    description: [non-empty]
    topic: [non-empty]
    ---
    1. If any required fields are missing or empty, comment:
      'This file appears to be missing required metadata. Please check keywords.config.yaml for valid options and add the required fields manually. You can validate your changes by running:
    pnpm validate-metadata
    ```'
  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
  • pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx
🧠 Learnings (1)
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx (1)
Learnt from: qbzzt
PR: ethereum-optimism/docs#1574
File: pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx:34-38
Timestamp: 2025-04-21T17:52:52.231Z
Learning: In warning callouts about sample code vs. production code, emphasis (italics) on the word "not" is intentionally used to highlight this important distinction, especially when advising users about code that works but hasn't been through rigorous audits.
🪛 LanguageTool
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx

[formatting] ~43-~43: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ere, when we don't have it on most pages, because this tutorial has code that is a lot mo...

(COMMA_BEFORE_BECAUSE)


[typographical] ~210-~210: Consider adding a comma after ‘Normally’ for more clarity.
Context: ... address to mint and burn tokens. Normally this is `PredeployAddresses.SUPERCHAIN_...

(RB_LY_COMMA)


[grammar] ~336-~336: Two determiners in a row. Choose either “The” or “A”.
Context: ... ``` 4. See the new balances. The A chain should have 0.9 tokens, and the B...

(DT_DT)

🪛 Gitleaks (8.21.2)
pages/interop/tutorials/upgrade-to-superchain-erc20/custom-bridge.mdx

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

(generic-api-key)


215-215: 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 (3)
  • GitHub Check: Redirect rules - docs-optimism
  • GitHub Check: Header rules - docs-optimism
  • GitHub Check: Pages changed - docs-optimism

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.

3 participants