-
Notifications
You must be signed in to change notification settings - Fork 262
How do use cast
to relay messages
#1589
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
base: main
Are you sure you want to change the base?
Conversation
✅ Deploy Preview for docs-optimism ready!Built without sensitive environment variables
To edit notification comments on pull requests, go to your Netlify site configuration. |
📝 Walkthrough## Walkthrough
This change introduces a new manual relay transaction tutorial for blockchain interoperability using the Foundry `cast` tool. It adds a metadata JSON file (`_meta.json`) describing the tutorial, a detailed Markdown tutorial file (`relay-with-cast.mdx`), and a shell script (`setup-for-manual-relay.sh`) that automates the setup of a local cross-chain messaging environment. The shell script creates and deploys two Solidity contracts—`Greeter` and `GreetingSender`—on separate local chains, sets up the necessary dependencies, and provides a helper script (`sendAndRelay.sh`) to demonstrate sending and manually relaying a cross-chain message. The tutorial guides users through the entire process, including event log extraction, relay message construction, and access list generation, culminating in the successful relay of a message between two chains.
## Sequence Diagram(s)
```mermaid
sequenceDiagram
participant User
participant ChainA
participant ChainB
participant SupersimRPC
User->>ChainA: Deploy GreetingSender contract
User->>ChainB: Deploy Greeter contract
User->>ChainA: Call setGreeting() on GreetingSender
ChainA-->>User: Emit SentMessage event
User->>User: Extract event log and construct payload
User->>SupersimRPC: Request access list for relay tx
SupersimRPC-->>User: Return access list
User->>ChainB: Call relayMessage() on CrossDomainMessenger with payload and access list
ChainB-->>User: Greeter greeting updated Possibly related PRs
Suggested reviewers
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
🧹 Nitpick comments (5)
public/tutorials/setup-for-manual-relay.sh (2)
86-90
: Add error handling for directory changes
Similar to the initialcd
, wrapcd lib
andcd ..
with|| exit 1
or set strict mode so failed directory changes abort:- cd lib + cd lib || exit 1 ... - cd .. + cd .. || exit 1🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 86-86: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
91-93
: Use a more robust download command
Replacewget
with a fail-safecurl
invocation (or ensurewget -q
errors are caught):- wget https://raw.githubusercontent.com/.../IL2ToL2CrossDomainMessenger.sol + curl -fsSL https://raw.githubusercontent.com/.../IL2ToL2CrossDomainMessenger.sol -o IL2ToL2CrossDomainMessenger.solpages/interop/tutorials/message-passing/relay-with-cast.mdx (3)
24-28
: Remove unused import
Callout
is imported but never used. Please remove the unused import to keep the code clean:- import { Callout } from 'nextra/components'
59-59
: Use sentence case for H3 headings
Change “### What You'll Build” to:### What you'll build
to comply with sentence-case rules for headers.
101-102
: Avoid exposing private key in docs snippet
Displaying the hardcoded private key in the tutorial may confuse readers or leak test credentials. Replace it with a placeholder or instruct the user to set their own:- PRIVATE_KEY=0xac0974bec39a... + PRIVATE_KEY=<YOUR_SUPERSIM_PRIVATE_KEY>🧰 Tools
🪛 Gitleaks (8.21.2)
101-101: 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
📒 Files selected for processing (3)
pages/interop/tutorials/message-passing/_meta.json
(1 hunks)pages/interop/tutorials/message-passing/relay-with-cast.mdx
(1 hunks)public/tutorials/setup-for-manual-relay.sh
(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:
- 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] ---
- 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] ---
- 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:
- Use sentence case, capitalizing only the first word.
- 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.
- 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/message-passing/relay-with-cast.mdx
🪛 Biome (1.9.4)
pages/interop/tutorials/message-passing/_meta.json
[error] 2-3: Expected a property but instead found '}'.
Expected a property here.
(parse)
🪛 Gitleaks (8.21.2)
pages/interop/tutorials/message-passing/relay-with-cast.mdx
101-101: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
(generic-api-key)
public/tutorials/setup-for-manual-relay.sh
7-7: 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-manual-relay.sh
[warning] 5-5: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
[warning] 86-86: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
[warning] 97-97: Use semicolon or linefeed before 'done' (or quote to make it literal).
(SC1010)
⏰ 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)
public/tutorials/setup-for-manual-relay.sh (2)
13-53
: ContractGreeter
implementation looks solid
The SPDX license, pragma, imports, and event logic for cross-domain messaging are all correctly defined and follow best practices.
55-83
: ContractGreetingSender
implementation looks good
Constructor arguments and thesetGreeting
relay logic usingabi.encodeCall
are appropriately implemented.
#! /bin/sh | ||
|
||
rm -rf manual-relay | ||
mkdir manual-relay | ||
cd manual-relay | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Ensure safe script execution and error handling
Add strict mode and handle cd
failures to prevent the script from continuing on error. For example, right after the shebang add:
+ set -euo pipefail
and change:
- cd manual-relay
+ cd manual-relay || exit 1
🧰 Tools
🪛 Shellcheck (0.10.0)
[warning] 5-5: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
(SC2164)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@qbzzt added some comments.
Co-authored-by: Blessing Krofegha <bkrofegha@gmail.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
♻️ Duplicate comments (1)
pages/interop/tutorials/message-passing/relay-with-cast.mdx (1)
29-29
: Align H1 with frontmatter title
The frontmattertitle
is Manual relay transaction tutorial (singular) but the H1 reads “Manual relay transactions tutorial” (plural). Please make them consistent.
🧹 Nitpick comments (2)
pages/interop/tutorials/message-passing/relay-with-cast.mdx (2)
60-60
: Use sentence case for section heading
Change “### What You'll Build” to “### What you'll build” so only the first word is capitalized (sentence case).
102-102
: Add disclaimer for example private key
The tutorial hard-codes a default private key (0xac0974…
). Note that this is an example key only (e.g., Anvil’s default) and must not be used in production. Consider adding a comment or note to warn users.🧰 Tools
🪛 Gitleaks (8.21.2)
102-102: 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
📒 Files selected for processing (2)
pages/interop/tutorials/message-passing/_meta.json
(1 hunks)pages/interop/tutorials/message-passing/relay-with-cast.mdx
(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- pages/interop/tutorials/message-passing/_meta.json
🧰 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:
- 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] ---
- 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] ---
- 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:
- Use sentence case, capitalizing only the first word.
- 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.
- 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/message-passing/relay-with-cast.mdx
🪛 LanguageTool
pages/interop/tutorials/message-passing/relay-with-cast.mdx
[uncategorized] ~188-~188: It appears that hyphens are missing.
Context: ...-chain messaging and prevent potential [denial of service attacks]((https://github.com/ethereum-o...
(DENIAL_OF_SERVICE_ATTACK)
🪛 Gitleaks (8.21.2)
pages/interop/tutorials/message-passing/relay-with-cast.mdx
102-102: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
(generic-api-key)
There was a problem hiding this 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 (6)
pages/interop/tutorials/message-passing/relay-with-cast.mdx (6)
49-50
: Clarify conditional phrasing in learning objectives
The bullet reads:How to use
cast
to relay transactions with autorelay does not work
It should be:
How to usecast
to relay transactions when autorelay does not work
60-62
: Sentence case for H2 header
The header “What You’ll Build” should use sentence case:- ### What You’ll Build + ### What you'll build
111-112
: Fix duplicated wording in explanation
The sentence is redundant:The greeter addresses are the same because the nonce for the user address' nonce is the same.
Consider revising to:- The greeter addresses are the same because the nonce for the user address' nonce is the same. + The greeter addresses are identical because the user address has the same nonce on both chains.
124-126
: Avoid personal pronouns
Replace “Here we look for those messages, but get only the last one.” with an imperative description, e.g.:- Here we look for those messages, but get only the last one. + Extract only the latest `SendMessage` event from the logs.
188-188
: Hyphenate compound adjective
Change “[denial of service attacks]” to “[denial-of-service attacks]”:- prevent potential [denial of service attacks](https://github.com/…) + prevent potential [denial-of-service attacks](https://github.com/…)🧰 Tools
🪛 LanguageTool
[uncategorized] ~188-~188: It appears that hyphens are missing.
Context: ...-chain messaging and prevent potential [denial of service attacks](https://github.com/ethereum-op...(DENIAL_OF_SERVICE_ATTACK)
195-195
: Fix comma splice
The sentence contains two independent clauses joined by a comma. Consider:- In contrast, the `admin_getAccessListByMsgHash` RPC call is not a pure function, it is dependent on system state and therefore less flexible in these situations. + In contrast, the `admin_getAccessListByMsgHash` RPC call is not a pure function; it depends on system state and is therefore less flexible in these situations.
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
pages/interop/tutorials/message-passing/_meta.json
(1 hunks)pages/interop/tutorials/message-passing/relay-with-cast.mdx
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- pages/interop/tutorials/message-passing/_meta.json
🧰 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:
- 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] ---
- 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] ---
- 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:
- Use sentence case, capitalizing only the first word.
- 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.
- 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/message-passing/relay-with-cast.mdx
🪛 LanguageTool
pages/interop/tutorials/message-passing/relay-with-cast.mdx
[uncategorized] ~188-~188: It appears that hyphens are missing.
Context: ...-chain messaging and prevent potential [denial of service attacks](https://github.com/ethereum-op...
(DENIAL_OF_SERVICE_ATTACK)
⏰ Context from checks skipped due to timeout of 90000ms (1)
- GitHub Check: pr-workflow
🔇 Additional comments (4)
pages/interop/tutorials/message-passing/relay-with-cast.mdx (4)
1-22
: Frontmatter completeness and validity
All required metadata fields (title, lang, description, topic, personas, categories, content_type) are present and non-empty. Thecontent_type: tutorial
is valid.
24-28
: Import statements
Component imports (Callout
,Steps
,InteropCallout
,AutorelayCallout
) are correct and aligned with project conventions.
29-31
: H1 header consistency
The H1 (“Relay transactions manually”) matches the frontmatter title and follows sentence case rules.
35-38
: Overview section clarity
The overview succinctly describes the tutorial’s purpose and aligns with the title.
There was a problem hiding this 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 (5)
pages/interop/tutorials/message-passing/relay-with-cast.mdx (5)
24-25
: Remove unused import
Callout
is imported fromnextra/components
but not used in this file. Consider removing the import to clean up dead code.
60-63
: Heading case: sentence case
The heading "What you'll Build" should use sentence case for consistency. Consider changing to "What you'll build".
102-102
: Clarify test private key usage
The tutorial includes a hardcoded private key (0xac0974...
). Please clarify that this key is a default local testing key (e.g., Foundry’s Anvil) and should not be used in production environments.🧰 Tools
🪛 Gitleaks (8.21.2)
102-102: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
(generic-api-key)
148-151
: Consider usingjq
for JSON parsing
The shell pipeline usesgrep
,awk
, andsed
to parse the log-entry. For improved reliability, you might leveragejq
to extracttopics
directly:-TOPICS=`cat log-entry | grep -A4 topics | awk '{print $1}' | tail -4 | sed 's/0x//'` -TOPICS=`echo $TOPICS | sed 's/ //g'` +TOPICS=$(jq -r '.topics[]' log-entry | sed 's/0x//g' | tr -d '\n')
193-196
: Improve sentence clarity
The comparison sentence could be split for readability:- In contrast, the `admin_getAccessListByMsgHash` RPC call is not a pure function, it is dependent on system state and therefore less flexible in these situations. + In contrast, the `admin_getAccessListByMsgHash` RPC call is not a pure function. It is dependent on system state and therefore less flexible in these situations.
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
pages/interop/tutorials/message-passing/relay-with-cast.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:
- 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] ---
- 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] ---
- 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:
- Use sentence case, capitalizing only the first word.
- 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.
- 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/message-passing/relay-with-cast.mdx
🪛 Gitleaks (8.21.2)
pages/interop/tutorials/message-passing/relay-with-cast.mdx
102-102: 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 (21)
pages/interop/tutorials/message-passing/relay-with-cast.mdx (21)
1-22
: Metadata verification
Frontmatter is complete and includes all required fields (title
,lang
,description
,topic
,personas
,categories
,content_type
). No missing metadata.
29-34
: H1 consistency with frontmatter
The H1 (# Relay transactions manually
) matches thetitle
in frontmatter and correctly reflects the tutorial purpose.
35-38
: Overview section clarity
The overview succinctly describes the tutorial's goal. The heading and content use proper sentence case and maintain consistency in tone.
39-58
: Prerequisites and requirements
The "About this tutorial" section effectively outlines prerequisites and environment requirements. Headings use sentence case and content is clear and concise.
64-88
: Setup instructions clarity
The setup steps are well-structured using<Steps>
and provide clear instructions for initializing Supersim and preparing the state. Links and commands are correctly formatted.
92-96
: Verify tutorial script path
The script reference./manual-relay/sendAndRelay.sh
should correspond to the actual repository path. Please ensure this path is accurate or provide the correct relative path to the tutorial script.
98-109
: Explanation section structure
The "Explanation" heading and configuration block clearly introduce the script variables. The notes about the greeter addresses are helpful.🧰 Tools
🪛 Gitleaks (8.21.2)
102-102: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
(generic-api-key)
114-116
: Command syntax for sending message
Thecast send
command is configured correctly with flags and placeholders. The use of$$
to reference the process ID is well explained.
120-122
: Extracting log entry
Usingcast logs
piped totail
for log extraction is clear and works as intended.
124-126
: Event extraction explanation
The explanation of usingSentMessage
event emission and extracting the latest event is clear and references the official contract source.
127-146
: Example log-entry display
The YAML snippet in the<details>
block accurately represents the structure of aSentMessage
log entry. Code fencing and indentation are correct.
152-154
: Explanation of topic consolidation
The guidance on consolidating log topics into a single hex string is clear and correctly describes the purpose.
155-162
: Reading log entry fields
The extraction oforigin
,blockNumber
,logIndex
,timestamp
, andchainId
from the log entry is well-documented and uses appropriate commands.
167-167
: Consolidating full log entry
The assembly ofLOG_ENTRY
by concatenatingTOPICS
and message data is correct.
172-183
: RPC parameters construction
The use of a here-document to buildRPC_PARAMS
JSON is clear and correctly formatted for the subsequent RPC call.
185-185
: Access list retrieval
Thecast rpc admin_getAccessListForIdentifier
invocation correctly retrieves the access list, and piping tojq .accessList
is appropriate.
188-190
: Security explanation clarity
The explanation of how access lists prevent denial-of-service attacks is accurate, with proper hyphenation and a valid link to the design doc.
197-200
: Pre-relay greeting check
Theecho
andcast call greet()
steps correctly show the state before relaying.
205-207
: Relay transaction command
Thecast send
invocation forrelayMessage
is correctly constructed with parameters, access list, RPC URL, and private key.
211-214
: Post-relay greeting verification
The final greeting check is clear and validates successful relay.
219-224
: Next steps suggestions
The "Next steps" section provides logical follow-up resources and encourages further exploration.
Description
A separate tutorial because this is a rare edge case.
Tests
N/A
Additional context
Remove https://docs.optimism.io/interop/tutorials/relay-messages-cast and https://docs.optimism.io/interop/tutorials/relay-messages-viem because they are redundant.
After #1581 is merged, it would be a good idea to move https://docs.optimism.io/interop/tutorials/message-passing#implement-manual-message-relaying to the same place as the
cast
tutorial - they are very similar.Metadata
N/A