Replies: 21 comments 47 replies
-
Explore - Fixing op-geth 'State not available' IssueClick to read moreDescription of the problemop-geth log: op-node log: Cause of the problemSolutionstep-by-step solution for the problem:protolambda's comments Testing the solutionAdditionallyI found the following content in the go-ethereum documentation, perhaps there's an alternative solution; let's consider including it in the plan.
|
Beta Was this translation helpful? Give feedback.
-
Transactions stuck in mempoolUser transactions get stuck in the mempool due to being underpriced. This issue would affect all OP Stack chains. Cause of the problem
SolutionThis solution is generally aimed at wallet developers
|
Beta Was this translation helpful? Give feedback.
-
A Quick Way to Check if the OP Stack Chain is SynchronizedClick to read moreop-node log:
This indicates that during the synchronization process, you can get a rough idea of the synchronization progress by comparing Two common errors caused by incomplete synchronization:proposer: |
Beta Was this translation helpful? Give feedback.
-
Setting up Optimism Source Code Without Cloning the RepositoryClick to read moreWhen downloading and using the source code of Optimism (Release op-node v1.7.1) without directly pulling from the Optimism repository, you may encounter errors during the build process due to missing submodules.First and foremost, it is recommended to clone the Optimism repository and then switch to the corresponding tag. This approach avoids the issue of missing submodules. After choosing to clone the Optimism repository, the following content can be disregarded To address this issue, you can follow these steps:
|
Beta Was this translation helpful? Give feedback.
-
[Summary] Creating Your Own L2 Rollup Testnet - Temporary Solutions to Some IssuesClick to read more
if this working, go on.
|
Beta Was this translation helpful? Give feedback.
-
[Sharing] One way of adding Replica Nodes to Your Own L2 Rollup TestnetClick to read moreWarning: This article is intended for informational sharing only. It does not represent an ideal scenario, nor does it offer any recommendations, advice, or suggestions that this method should be followed. Assuming you have successfully created your own L2 Rollup Testnet following the documentation, this tutorial will focus on configuring replica nodes to achieve p2p synchronization in a specific manner. Documentation locations: Additional Notes:
Steps1. Remove
|
Beta Was this translation helpful? Give feedback.
-
[Sharing] One way of activating span
|
Beta Was this translation helpful? Give feedback.
-
[Sharing] Configuring Node Monitoring Dashboard with Prometheus and GrafanaClick to read moreThis tutorial serves as an implementation example for the documentation found at Step 1: Configure the Node for Metrics CollectionFirst, configure your node to expose metrics by running the following command:
Step 2: Create a Prometheus Configuration File LocallyNext, create a Prometheus configuration file (
Replace and with your Grafana Cloud username and API token. You can obtain these by registering at Grafana, navigating to My Account > Prometheus > Details. Start Prometheus LocallyRun Prometheus in a Docker container using the configuration file you created:
Step 4: Set Up Grafana Cloud
Example : |
Beta Was this translation helpful? Give feedback.
-
[Sharing] some possible third-party RPC provider for beacon(blob fetching) rpcClick to read moreAre you receiving missing l1.beacon, or do you want to find an option besides self-host and quicknode(which has been written in docs)? we found some RPC providers listed on chainlist, and here's the list
|
Beta Was this translation helpful? Give feedback.
-
[Share] Supporting Fault Proofs - Creating Your Own L2 Rollup Testnet-Part 1Deploying L1 ContractsThe tutorial Creating Your Own L2 Rollup Testnet does not currently provide guidance on enabling fault proof features. Two possible approaches are upgrading the testnet created through the tutorial to support fault proofs or establishing a testnet with built-in fault proof support. This discussion will focus on the latter. Relevant Resources:Note: This is a personal knowledge sharing. If you find any issues, please add a comment. Steps:
Troubleshooting:If you encounter a bytes memory initData = abi.encodeCall(
Safe.setup, (_owners, _threshold, address(0), hex"", address(0), address(0), 0, payable(address(0)))
);
addr_ = address(
safeProxyFactory.createProxyWithNonce(
address(safeSingleton), initData, uint256(keccak256(abi.encode(_name)))
)
); Follow-up content:Part 2 Part 3 |
Beta Was this translation helpful? Give feedback.
-
[Share] Supporting Fault Proofs - Creating Your Own L2 Rollup Testnet-Part 2Generate the L2 Config FilesHere, I will demonstrate how to generate the L2 configuration files using version 1.7.7 components.
Preceding content: Part 1Follow-up content:part 3 |
Beta Was this translation helpful? Give feedback.
-
[Share] Supporting Fault Proofs - Creating Your Own L2 Rollup Testnet-Part 3Start OP Stack chain testnetAfter completing Part 2, you can start
Preceding content: Part 1 Part 2Follow-up content:Additional: I would like to thank @joohhnnn for his help in debugging. |
Beta Was this translation helpful? Give feedback.
-
[Share] Blockscout with Your Own L2 Rollup TestnetClick to read moreWe'll discuss some related content from the Deploying a Block Explorer section of the documentation. My insights are based on the issues I encountered and resolved while using Blockscout. I haven't deeply investigated Blockscout, so if you find any errors, please feel free to add comments. Part 1: Modify
|
Beta Was this translation helpful? Give feedback.
-
[Share] Supporting Fault Proofs - Creating Your Own L2 Rollup Testnet-Part 4Withdrawal ProcessHere discusses the withdrawal process using the Related Documentation Resources:Step 1: Using the Optimism SDKFirst, let's set up a project and install the necessary dependencies: mkdir op-sdk-sample-project
cd op-sdk-sample-project
pnpm init
pnpm add @eth-optimism/sdk
pnpm add ethers@^5
node Next, let's set up our providers using the Optimism SDK and Ethers.js: const optimism = require("@eth-optimism/sdk")
const ethers = require("ethers")
const l1Provider = new ethers.providers.StaticJsonRpcProvider("https://rpc.ankr.com/eth_sepolia")
const l2Provider = new ethers.providers.StaticJsonRpcProvider("<Your own chain rpc>") Note:If you created an L2 testnet following the previous steps, then Find Contract Addresses does not apply. You can find contract addresses in const AddressManager = '0xA...'
const L1CrossDomainMessenger = '0x0...'
const L1StandardBridge = '0x0...'
const OptimismPortal = '0xe...'
const OptimismPortal2 ='0xe...'
const DisputeGameFactory = '0x4...'
const L2OutputOracle ='0x6...' Get the chain IDs for L1 and L2: const l1ChainId = await l1Provider.getNetwork().then(network => network.chainId)
const l2ChainId = await l2Provider.getNetwork().then(network => network.chainId)
const privateKey = "0xc..."
const l1Wallet = new ethers.Wallet(privateKey, l1Provider)
const l2Wallet = new ethers.Wallet(privateKey, l2Provider)
const messenger = new optimism.CrossChainMessenger({
l1ChainId: l1ChainId,
l2ChainId: l2ChainId,
l1SignerOrProvider: l1Wallet,
l2SignerOrProvider: l2Wallet,
// This is the only part that differs from natively included chains.
contracts: {
l1: {
AddressManager,
L1CrossDomainMessenger,
L1StandardBridge,
OptimismPortal2,
OptimismPortal,
DisputeGameFactory,
L2OutputOracle,
// Need to be set to zero for this version of the SDK.
StateCommitmentChain: ethers.constants.AddressZero,
CanonicalTransactionChain: ethers.constants.AddressZero,
BondManager: ethers.constants.AddressZero,
}
}
}) Now, start your withdrawal on L2: const withdrawal = await messenger.withdrawETH(ethers.utils.parseEther('0.004269'))
await withdrawal.wait() Wait until the withdrawal is ready to prove: await messenger.waitForMessageStatus(withdrawal.hash, optimism.MessageStatus.READY_TO_PROVE) Prove the withdrawal on L1: await messenger.proveMessage(withdrawal.hash) If successful, the withdrawal will enter the challenge period. In previous chapters, I set the challenge period to 7 days using faultGameWithdrawalDelay. Step 2: Resolving the Specified Dispute GameL2 Withdrawal Hash: 0xd68f93cdebcc04f9b4748090878494feeca5e4d56b68f87bf1422ad23a1859e9 Obtain the Withdrawal Hash from the Prove Transaction Log Example Prove Transaction Hash: 0xa78be8b5d8beff0f3841f7e1872ea84bbde4ff931f80671518816e9e8253a40b Retrieve the
Check and Resolve the Dispute Game Status
Step 3: Return to the Optimism SDK
Preceding content: Part 1 Part 2 Part 3Follow-up content: |
Beta Was this translation helpful? Give feedback.
-
[Share] Supporting Fault Proofs - Creating Your Own L2 Rollup Testnet-Part 5Configure op-challengerIn this section, we discuss how to launch the Related Documentation Resources:Steps:1. Switch to the Specified BranchIn Part 1, we referred to the configuration of "faultGameAbsolutePrestate": "0x037ef3c1a487960b0e633d3e513df020c43432769f41a634d18a9595cbf53c55" Switch to the appropriate branch: git checkout op-program/v1.0.0 2. Build the ComponentsNavigate to the cd optimism
make op-challenger op-program cannon op-dispute-mon 3. Generate the Required
|
Beta Was this translation helpful? Give feedback.
-
[Share] L3-Setting Up an L3 on op-sepolia Networkclick to read moreHere I created an L3 on Related Resources
Steps
"Many configuration values are in terms of L1 blocks. You might need to multiply them by 6, though a base config for reference is not available." -- soyboy
"What's your l1.http-poll-interval value? The default is 12, so if you change it to 2 (assuming 2 second block time for the target chain), the warning should go away” -- arshsingh
Increase the value for
Additional“The OP Stack isn't tuned for L3 support at the moment, so it's kind of a hack.” -- soyboy curl --request POST \
--url <your L3 rpc> \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '{
"id": 1,
"jsonrpc": "2.0",
"method": "eth_getBlockByNumber",
"params": [
"finalized",
false
]
}' Glossary |
Beta Was this translation helpful? Give feedback.
-
[Share] Setting Up a Custom Gas Token Chainclick to read moreIn this post, I will share my experience of setting up a Related Resources:
Steps:The steps follow the
address _to, // your address
uint256 _mint, // for example, 500000000000000000000
uint256 _value, // for example, 500000000000000000000
uint64 _gasLimit, // for example, 100000
bool _isCreation, // false
bytes memory _data // 0x |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
Hey @opfocus what are the steps that i could take to reduce gas fees on l1 one of those is using blobs on l1 reducing the frequency of transactions posted to L1 can you please provide some resources to me i wanted to know the safe limits to reduce in getting-started.json config file |
Beta Was this translation helpful? Give feedback.
-
Description
This thread is a place to share helpful debugging and problem solving resources. When these resources are polished, we can migrate them into the documentation website.
Guidelines
A troubleshooting post should be limited to identifying a common problem for one particular product or service. To maintain consistency, please use the following structure:
[insert: Common Problem Title]
[insert: description of the problem]
Cause of the problem
[insert: describe the cause of the problem and symptom of the problem (system response, logs, screenshots etc.]
Solution
[insert: step-by-step solution for the problem]
Beta Was this translation helpful? Give feedback.
All reactions