Release/0.4.x#8
Conversation
Co-authored-by: GingerLiu123 <gingerliu123@gmail.com>
Co-authored-by: Segue <huoda.china@163.com> Co-authored-by: GingerLiu123 <gingerliu123@gmail.com>
Update mainnet deploy configs
Fix start height of derivation
update go-ethereum dependency
Lido gateway and some optimizations
- Fixed blob fee calculation logic in Blob transaction type - Added judgment for weiAmt being nil to avoid potential null pointer exceptions
Fix audit issues and clean up keys
Co-authored-by: Agnar Song <agnar.song@morphl2.io>
Co-authored-by: Agnar Song <agnar.song@morphl2.io> Co-authored-by: kukoomomo <kukoomomo@gmail.com>
Co-authored-by: Agnar Song <agnar.song@morphl2.io> Co-authored-by: songyaoshun <songyaoshun@gmail.com> Co-authored-by: vincent <vincent.ch.cn@gmail.com> Co-authored-by: chengwenxi <22697326+chengwenxi@users.noreply.github.com> Co-authored-by: WorldDogs <33647825+WorldDogs@users.noreply.github.com>
Co-authored-by: vincent <vincent.ch.cn@gmail.com> Co-authored-by: chengwenxi <22697326+chengwenxi@users.noreply.github.com> Co-authored-by: curryxbo <curryx1992@gmail.com> Co-authored-by: WorldDogs <33647825+WorldDogs@users.noreply.github.com>
Co-authored-by: corey <curryx1992@gmail.com>
Co-authored-by: WorldDogs <noreply.io>
There was a problem hiding this comment.
Actionable comments posted: 0
♻️ Duplicate comments (2)
MakefileEks.mk (2)
107-118: LGTM! The secret-manager-wrapper issue is resolved.The hoodi token-price-oracle build target now correctly downloads and extracts the secret-manager-wrapper from S3 (lines 112-113), matching the pattern used by other targets. The start target properly invokes the wrapper.
120-128: Missing secret-manager-wrapper download for mainnet token-price-oracle.The build target
build-bk-prod-morph-prod-mainnet-to-morph-token-price-oracledoes not download or extract thesecret-manager-wrapper.tar.gzfrom S3, but the corresponding start target at line 127 expects/data/secret-manager-wrapperto exist. Compare with the mainnet gas-price-oracle target at lines 10-15, mainnet staking-oracle at lines 75-80, or the qanet/hoodi token-price-oracle targets at lines 101-102 and 112-113.🔎 Proposed fix
build-bk-prod-morph-prod-mainnet-to-morph-token-price-oracle: if [ ! -d dist ]; then mkdir -p dist; fi env GO111MODULE=on CGO_LDFLAGS="-ldl" CGO_ENABLED=1 go build -v $(LDFLAGS) -o token-price-oracle/token-price-oracle ./token-price-oracle/cmd cp token-price-oracle/token-price-oracle dist/ + aws s3 cp s3://morph-0582-morph-technical-department-mainnet-data/morph-setup/secret-manager-wrapper.tar.gz ./ + tar -xvzf secret-manager-wrapper.tar.gz
🧹 Nitpick comments (1)
MakefileEks.mk (1)
96-106: LGTM with minor formatting note.The qanet token-price-oracle build and start targets are correctly structured. The build target downloads and extracts the secret-manager-wrapper, and the start target invokes it as expected.
Minor formatting inconsistency: Line 105 has an extra leading space before
/data/secret-manager-wrapper(compare with other start targets like line 32, 46, 59, etc.).🔎 Optional formatting fix
start-bk-test-morph-test-qanet-to-morph-token-price-oracle: - /data/secret-manager-wrapper ./token-price-oracle + /data/secret-manager-wrapper ./token-price-oracle
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
prover/Cargo.lockis excluded by!**/*.lock
📒 Files selected for processing (8)
MakefileEks.mkcontracts/src/deploy-config/holesky.tscontracts/src/deploy-config/hoodi.tscontracts/src/deploy-config/l1.tscontracts/src/deploy-config/qanetl1.tscontracts/src/deploy-config/sepolia.tscontracts/src/deploy-config/testnetl1.tsprover/bin/client/elf/riscv32im-succinct-zkvm-elf
🔇 Additional comments (1)
MakefileEks.mk (1)
143-156: LGTM!The hoodi gas-price-oracle build and start targets are correctly structured, following the established pattern of downloading and extracting the secret-manager-wrapper in the build target and invoking it in the start target.
Co-authored-by: corey <corey.zhang@bitget.com>
Co-authored-by: corey <corey.zhang@bitget.com>
Nonce checking and external sign
There was a problem hiding this comment.
Actionable comments posted: 1
Fix all issues with AI Agents 🤖
In @MakefileEks.mk:
- Around line 104-105: The Makefile target
start-bk-test-morph-test-qanet-to-morph-token-price-oracle has an extra leading
space before the recipe command (/data/secret-manager-wrapper) which breaks
consistency with other start targets; remove the stray space so the command
begins immediately after the required tab (aligning with other targets like the
ones around lines 94, 117, 129) ensuring the recipe line starts with a single
tab then "/data/secret-manager-wrapper ./token-price-oracle".
🧹 Nitpick comments (1)
MakefileEks.mk (1)
120-130: LGTM! Secret-manager-wrapper issue resolved.The mainnet token-price-oracle targets now correctly download and extract the secret-manager-wrapper (lines 124-125), addressing the previously flagged issue.
For consistency with other sections (lines 96, 107, 145), consider adding a comment header before line 120, e.g.,
# token-price-oracleand# mainnet.
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
MakefileEks.mk
🔇 Additional comments (2)
MakefileEks.mk (2)
107-118: LGTM! Secret-manager-wrapper issue resolved.The hoodi testnet token-price-oracle targets now correctly download and extract the secret-manager-wrapper (lines 112-113), addressing the previously flagged issue. The implementation follows the established pattern consistently.
145-157: LGTM! Properly structured hoodi gas-price-oracle targets.The hoodi gas-price-oracle targets are correctly implemented with proper secret-manager-wrapper handling and follow the established pattern for gas-price-oracle deployments.
| start-bk-test-morph-test-qanet-to-morph-token-price-oracle: | ||
| /data/secret-manager-wrapper ./token-price-oracle |
There was a problem hiding this comment.
Fix inconsistent spacing in start command.
The start target has an extra leading space before /data/secret-manager-wrapper, which is inconsistent with other start targets in the file (e.g., lines 94, 117, 129).
🔎 Proposed fix
start-bk-test-morph-test-qanet-to-morph-token-price-oracle:
- /data/secret-manager-wrapper ./token-price-oracle
+ /data/secret-manager-wrapper ./token-price-oracle📝 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.
| start-bk-test-morph-test-qanet-to-morph-token-price-oracle: | |
| /data/secret-manager-wrapper ./token-price-oracle | |
| start-bk-test-morph-test-qanet-to-morph-token-price-oracle: | |
| /data/secret-manager-wrapper ./token-price-oracle |
🤖 Prompt for AI Agents
In @MakefileEks.mk around lines 104-105, The Makefile target
start-bk-test-morph-test-qanet-to-morph-token-price-oracle has an extra leading
space before the recipe command (/data/secret-manager-wrapper) which breaks
consistency with other start targets; remove the stray space so the command
begins immediately after the required tab (aligning with other targets like the
ones around lines 94, 117, 129) ensuring the recipe line starts with a single
tab then "/data/secret-manager-wrapper ./token-price-oracle".
Co-authored-by: corey <corey.zhang@bitget.com>
Derivation support altfeetx type (#852)
Co-authored-by: vincent <vincent.ch.cn@gmail.com>
bump tendermint to version v0.3.3
feature: block tag support(safe&finalize)
feature: block tag
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@bindings/bin/l1messagequeuewithgaspriceoracle_deployed.hex`:
- Line 1: The deployed hex artifact and the Go binding constant are out of sync:
update the Go constant L1MessageQueueWithGasPriceOracleDeployedBin to exactly
match the hex in bindings/bin/l1messagequeuewithgaspriceoracle_deployed.hex (or
re-run your binding generation tool such as abigen to regenerate the bindings),
replacing the current 11862-character value with the correct 11134-character
bytecode string and verify the lengths match so deployments use the correct
bytecode.
♻️ Duplicate comments (2)
Makefile (1)
74-74: Clarify why oracle linting remains disabled.The oracle lint step is still commented out. If intentional, add an inline comment explaining the reason (e.g., known issues, WIP) or reference a tracking issue. If unintended, uncomment the line.
contracts/contracts/l1/rollup/L1MessageQueueWithGasPriceOracle.sol (1)
261-268: Returningblock.timestampcan hide backlog or legacy timestamps.
When the queue is empty (or the first pending message predates this upgrade), returning “now” misrepresents the enqueue time and can mask delays. Prefer a sentinel (e.g.,0) or a revert, and document the behavior so monitors can interpret it correctly.🐛 Suggested fix (use a sentinel for “none/unknown”)
function getFirstUnfinalizedMessageEnqueueTime() external view returns (uint256 timestamp) { - if (pendingQueueIndex < messageQueue.length && messageEnqueueTime[pendingQueueIndex] != 0) { - // has pending messages and return enqueue time - return messageEnqueueTime[pendingQueueIndex]; - } - // no pending messages, return current timestamp - return block.timestamp; + if (pendingQueueIndex < messageQueue.length) { + // 0 means "unknown/legacy" for pre-upgrade entries + return messageEnqueueTime[pendingQueueIndex]; + } + // no pending messages + return 0; }
🧹 Nitpick comments (3)
Makefile (1)
43-49: Consider adding error handling for submodule operations.The conditional logic is appropriate, but
git fetch --tagsandgit checkoutcan fail silently due to network issues or missing tags. Consider addingset -eor explicit error checks to surface failures early.♻️ Optional: Add error handling
submodules: git submodule update --init `@if` [ -d "go-ethereum" ]; then \ echo "Updating go-ethereum submodule to tag $(ETHEREUM_SUBMODULE_COMMIT_OR_TAG)..."; \ cd go-ethereum && \ - git fetch --tags && \ - git checkout $(ETHEREUM_SUBMODULE_COMMIT_OR_TAG) && \ + git fetch --tags || { echo "Failed to fetch tags"; exit 1; } && \ + git checkout $(ETHEREUM_SUBMODULE_COMMIT_OR_TAG) || { echo "Failed to checkout $(ETHEREUM_SUBMODULE_COMMIT_OR_TAG)"; exit 1; } && \ cd ..; \ ficontracts/contracts/l1/rollup/IL1MessageQueue.sol (1)
60-63: Clarify empty-queue semantics for the enqueue-time getter.
The interface doesn’t specify what to return when the queue is empty or timestamps are unavailable (legacy messages). Consider documenting a sentinel (e.g.,0) so callers can distinguish “none” from a real enqueue time.contracts/contracts/l1/rollup/Rollup.sol (1)
103-106: Ensure rollupDelayPeriod is initialized during upgrades.
rollupDelayPerioddefaults to0untilinitialize3runs, but it is already consumed by batch delay gating. Please confirm upgrade/migration flows always callinitialize3with a non‑zero value and that this is recorded in deployment config/runbooks.Also applies to: 190-196, 475-482
| @@ -1 +1 @@ | |||
| 0x608060405234801561000f575f80fd5b5060043610610184575f3560e01c8063a85006ca116100dd578063d99bc80e11610088578063e3176bd511610063578063e3176bd51461037a578063f2fde38b14610383578063fd0ad31e14610396575f80fd5b8063d99bc80e1461033a578063da35a26f1461034d578063e172d3a114610360575f80fd5b8063bdc6f0a0116100b8578063bdc6f0a0146102ed578063c276067714610300578063d5ad4a9714610327575f80fd5b8063a85006ca146102b1578063ae453cd5146102ba578063bb7862ca146102cd575f80fd5b80635f9cd92e1161013d5780638da5cb5b116101185780638da5cb5b14610259578063927ede2d146102775780639b1597821461029e575f80fd5b80635f9cd92e146101f2578063715018a6146102055780638770d7071461020d575f80fd5b80633e4cbbe61161016d5780633e4cbbe6146101c35780635ad9945a146101d65780635e45da23146101e9575f80fd5b806329aa604b146101885780633c7f5283146101ae575b5f80fd5b61019b610196366004611173565b61039e565b6040519081526020015b60405180910390f35b6101c16101bc36600461118a565b6103bd565b005b61019b6101d13660046111cd565b61052e565b61019b6101e436600461123a565b6105e2565b61019b60685481565b6101c16102003660046112b6565b6107d2565b6101c1610867565b6102347f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a5565b60335473ffffffffffffffffffffffffffffffffffffffff16610234565b6102347f000000000000000000000000000000000000000000000000000000000000000081565b6101c16102ac3660046112cf565b61087a565b61019b60675481565b61019b6102c8366004611173565b61095c565b606b546102349073ffffffffffffffffffffffffffffffffffffffff1681565b6101c16102fb366004611325565b6109d2565b6102347f000000000000000000000000000000000000000000000000000000000000000081565b6101c1610335366004611173565b610b03565b6101c1610348366004611173565b610b49565b6101c161035b366004611398565b610b8f565b61019b61036e3660046113c2565b60100261520801919050565b61019b60655481565b6101c16103913660046112b6565b610d48565b60665461019b565b606681815481106103ad575f80fd5b5f91825260209091200154905081565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16146104475760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c792063616c6c61626c652062792074686520726f6c6c7570000000000060448201526064015b60405180910390fd5b6101008111156104995760405162461bcd60e51b815260206004820152601560248201527f706f7020746f6f206d616e79206d657373616765730000000000000000000000604482015260640161043e565b81606754146104ea5760405162461bcd60e51b815260206004820152601460248201527f737461727420696e646578206d69736d61746368000000000000000000000000604482015260640161043e565b80820160675560408051838152602081018390527f3d48b97f20730c965868963266b0d25d8abe3f06babb60fc3b2b80c9e8907f2691015b60405180910390a15050565b606b546040517fefc7840100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301525f92169063efc7840190602401602060405180830381865afa15801561059c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c09190611401565b156105cc57505f6105dc565b6065546105d99083611427565b90505b92915050565b5f607e8161068c565b5f816105f957506001919050565b5b811561060f5760089190911c906001016105fa565b919050565b80608083106001811461064c5761062a846105eb565b60808101835360018301925084816020036008021b835280830192505061066d565b848415166001811461066057848353610665565b608083535b506001820191505b509392505050565b806094815360609290921b60018301525060150190565b6005604051018061069f60018c83610614565b90506106ad60018983610614565b90506106b98982610675565b90506106c760018b83610614565b9050600186146001811461072f576038871060018114610714576106ea886105eb565b8060b701845360018401935088816020036008021b84528084019350508789843791870191610729565b87608001835360018301925087898437918701915b50610740565b61073d5f89355f1a84610614565b91505b5061074b8c82610675565b90508181035f80603883106001811461077e57610767846105eb565b60f78101600882021b851793506001019150610789565b8360c0019250600191505b5086816008021b821791506001810190508060080292508451831c8284610100031b17915080850394505080845250508181038220925050508092505050979650505050505050565b6107da610de5565b606b5460405173ffffffffffffffffffffffffffffffffffffffff8084169216907ff91b2a410a89d46f14ee984a57e6d7892c217f116905371180998e20cef237e5905f90a3606b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61086f610de5565b6108785f610e4c565b565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16146109255760405162461bcd60e51b815260206004820152602b60248201527f4f6e6c792063616c6c61626c6520627920746865204c3143726f7373446f6d6160448201527f696e4d657373656e676572000000000000000000000000000000000000000000606482015260840161043e565b610930838383610ec2565b337311110000000000000000000000000000000011110161095581865f878787610fbe565b5050505050565b6066545f9082106109af5760405162461bcd60e51b815260206004820152601a60248201527f6d65737361676520696e646578206f7574206f662072616e6765000000000000604482015260640161043e565b606682815481106109c2576109c2611463565b905f5260205f2001549050919050565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610a7d5760405162461bcd60e51b815260206004820152602660248201527f4f6e6c792063616c6c61626c652062792074686520456e666f7263656454784760448201527f6174657761790000000000000000000000000000000000000000000000000000606482015260840161043e565b73ffffffffffffffffffffffffffffffffffffffff86163b15610ae25760405162461bcd60e51b815260206004820152600860248201527f6f6e6c7920454f41000000000000000000000000000000000000000000000000604482015260640161043e565b610aed838383610ec2565b610afb868686868686610fbe565b505050505050565b610b0b610de5565b606880549082905560408051828152602081018490527fa030881e03ff723954dd0d35500564afab9603555d09d4456a32436f2b2373c59101610522565b610b51610de5565b606580549082905560408051828152602081018490527fc5271ba80b67178cc31f04a3755325121400925878dc608432b6fcaead3663299101610522565b5f54610100900460ff1615808015610bad57505f54600160ff909116105b80610bc65750303b158015610bc657505f5460ff166001145b610c385760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161043e565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610c94575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610c9c61106f565b6068839055606b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790558015610d43575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610d50610de5565b73ffffffffffffffffffffffffffffffffffffffff8116610dd95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161043e565b610de281610e4c565b50565b60335473ffffffffffffffffffffffffffffffffffffffff1633146108785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161043e565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b606854831115610f3a5760405162461bcd60e51b815260206004820152602560248201527f476173206c696d6974206d757374206e6f7420657863656564206d617847617360448201527f4c696d6974000000000000000000000000000000000000000000000000000000606482015260840161043e565b601081026152080180841015610fb85760405162461bcd60e51b815260206004820152603360248201527f496e73756666696369656e7420676173206c696d69742c206d7573742062652060448201527f61626f766520696e7472696e7369632067617300000000000000000000000000606482015260840161043e565b50505050565b6066545f610fd18883888a8989896105e2565b606680546001810182555f919091527f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e943540181905560405190915073ffffffffffffffffffffffffffffffffffffffff80891691908a16907f69cfcb8e6d4192b8aba9902243912587f37e550d75c1fa801491fce26717f37e9061105d908a9087908b908b908b90611490565b60405180910390a35050505050505050565b5f54610100900460ff166110eb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161043e565b6108785f54610100900460ff1661116a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161043e565b61087833610e4c565b5f60208284031215611183575f80fd5b5035919050565b5f806040838503121561119b575f80fd5b50508035926020909101359150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461060f575f80fd5b5f80604083850312156111de575f80fd5b6111e7836111aa565b946020939093013593505050565b5f8083601f840112611205575f80fd5b50813567ffffffffffffffff81111561121c575f80fd5b602083019150836020828501011115611233575f80fd5b9250929050565b5f805f805f805f60c0888a031215611250575f80fd5b611259886111aa565b96506020880135955060408801359450611275606089016111aa565b93506080880135925060a088013567ffffffffffffffff811115611297575f80fd5b6112a38a828b016111f5565b989b979a50959850939692959293505050565b5f602082840312156112c6575f80fd5b6105d9826111aa565b5f805f80606085870312156112e2575f80fd5b6112eb856111aa565b935060208501359250604085013567ffffffffffffffff81111561130d575f80fd5b611319878288016111f5565b95989497509550505050565b5f805f805f8060a0878903121561133a575f80fd5b611343876111aa565b9550611351602088016111aa565b94506040870135935060608701359250608087013567ffffffffffffffff81111561137a575f80fd5b61138689828a016111f5565b979a9699509497509295939492505050565b5f80604083850312156113a9575f80fd5b823591506113b9602084016111aa565b90509250929050565b5f80602083850312156113d3575f80fd5b823567ffffffffffffffff8111156113e9575f80fd5b6113f5858286016111f5565b90969095509350505050565b5f60208284031215611411575f80fd5b81518015158114611420575f80fd5b9392505050565b80820281158282048414176105dc577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b85815267ffffffffffffffff8516602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010194935050505056fea164736f6c6343000818000a | |||
| 0x608060405234801561000f575f80fd5b50600436106101a5575f3560e01c8063ae453cd5116100e8578063d99bc80e11610093578063e3176bd51161006e578063e3176bd5146103c2578063f2fde38b146103cb578063f7ca0c51146103de578063fd0ad31e146103fd575f80fd5b8063d99bc80e14610382578063da35a26f14610395578063e172d3a1146103a8575f80fd5b8063bdc6f0a0116100c3578063bdc6f0a014610335578063c276067714610348578063d5ad4a971461036f575f80fd5b8063ae453cd5146102fa578063b59b1a781461030d578063bb7862ca14610315575f80fd5b8063715018a6116101535780638dc73d871161012e5780638dc73d8714610298578063927ede2d146102b75780639b159782146102de578063a85006ca146102f1575f80fd5b8063715018a6146102265780638770d7071461022e5780638da5cb5b1461027a575f80fd5b80635ad9945a116101835780635ad9945a146101f75780635e45da231461020a5780635f9cd92e14610213575f80fd5b806329aa604b146101a95780633c7f5283146101cf5780633e4cbbe6146101e4575b5f80fd5b6101bc6101b7366004611229565b610405565b6040519081526020015b60405180910390f35b6101e26101dd366004611240565b610424565b005b6101bc6101f2366004611283565b610595565b6101bc6102053660046112f0565b610649565b6101bc60685481565b6101e261022136600461136c565b610839565b6101e26108ce565b6102557f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c6565b60335473ffffffffffffffffffffffffffffffffffffffff16610255565b6101bc6102a6366004611229565b606c6020525f908152604090205481565b6102557f000000000000000000000000000000000000000000000000000000000000000081565b6101e26102ec366004611385565b6108e1565b6101bc60675481565b6101bc610308366004611229565b6109c3565b6101bc610a39565b606b546102559073ffffffffffffffffffffffffffffffffffffffff1681565b6101e26103433660046113db565b610a7c565b6102557f000000000000000000000000000000000000000000000000000000000000000081565b6101e261037d366004611229565b610bad565b6101e2610390366004611229565b610bf3565b6101e26103a336600461144e565b610c39565b6101bc6103b6366004611478565b60100261520801919050565b6101bc60655481565b6101e26103d936600461136c565b610df2565b6101bc6103ec366004611229565b5f908152606c602052604090205490565b6066546101bc565b60668181548110610414575f80fd5b5f91825260209091200154905081565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16146104ae5760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c792063616c6c61626c652062792074686520726f6c6c7570000000000060448201526064015b60405180910390fd5b6101008111156105005760405162461bcd60e51b815260206004820152601560248201527f706f7020746f6f206d616e79206d65737361676573000000000000000000000060448201526064016104a5565b81606754146105515760405162461bcd60e51b815260206004820152601460248201527f737461727420696e646578206d69736d6174636800000000000000000000000060448201526064016104a5565b80820160675560408051838152602081018390527f3d48b97f20730c965868963266b0d25d8abe3f06babb60fc3b2b80c9e8907f2691015b60405180910390a15050565b606b546040517fefc7840100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301525f92169063efc7840190602401602060405180830381865afa158015610603573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062791906114b7565b1561063357505f610643565b60655461064090836114dd565b90505b92915050565b5f607e816106f3565b5f8161066057506001919050565b5b81156106765760089190911c90600101610661565b919050565b8060808310600181146106b35761069184610652565b60808101835360018301925084816020036008021b83528083019250506106d4565b84841516600181146106c7578483536106cc565b608083535b506001820191505b509392505050565b806094815360609290921b60018301525060150190565b6005604051018061070660018c8361067b565b90506107146001898361067b565b905061072089826106dc565b905061072e60018b8361067b565b9050600186146001811461079657603887106001811461077b5761075188610652565b8060b701845360018401935088816020036008021b84528084019350508789843791870191610790565b87608001835360018301925087898437918701915b506107a7565b6107a45f89355f1a8461067b565b91505b506107b28c826106dc565b90508181035f8060388310600181146107e5576107ce84610652565b60f78101600882021b8517935060010191506107f0565b8360c0019250600191505b5086816008021b821791506001810190508060080292508451831c8284610100031b17915080850394505080845250508181038220925050508092505050979650505050505050565b610841610e8f565b606b5460405173ffffffffffffffffffffffffffffffffffffffff8084169216907ff91b2a410a89d46f14ee984a57e6d7892c217f116905371180998e20cef237e5905f90a3606b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6108d6610e8f565b6108df5f610ef6565b565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161461098c5760405162461bcd60e51b815260206004820152602b60248201527f4f6e6c792063616c6c61626c6520627920746865204c3143726f7373446f6d6160448201527f696e4d657373656e67657200000000000000000000000000000000000000000060648201526084016104a5565b610997838383610f6c565b33731111000000000000000000000000000000001111016109bc81865f878787611068565b5050505050565b6066545f908210610a165760405162461bcd60e51b815260206004820152601a60248201527f6d65737361676520696e646578206f7574206f662072616e676500000000000060448201526064016104a5565b60668281548110610a2957610a29611519565b905f5260205f2001549050919050565b6066546067545f91118015610a5d57506067545f908152606c602052604090205415155b15610a7757506067545f908152606c602052604090205490565b504290565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610b275760405162461bcd60e51b815260206004820152602660248201527f4f6e6c792063616c6c61626c652062792074686520456e666f7263656454784760448201527f617465776179000000000000000000000000000000000000000000000000000060648201526084016104a5565b73ffffffffffffffffffffffffffffffffffffffff86163b15610b8c5760405162461bcd60e51b815260206004820152600860248201527f6f6e6c7920454f4100000000000000000000000000000000000000000000000060448201526064016104a5565b610b97838383610f6c565b610ba5868686868686611068565b505050505050565b610bb5610e8f565b606880549082905560408051828152602081018490527fa030881e03ff723954dd0d35500564afab9603555d09d4456a32436f2b2373c59101610589565b610bfb610e8f565b606580549082905560408051828152602081018490527fc5271ba80b67178cc31f04a3755325121400925878dc608432b6fcaead3663299101610589565b5f54610100900460ff1615808015610c5757505f54600160ff909116105b80610c705750303b158015610c7057505f5460ff166001145b610ce25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104a5565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610d3e575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610d46611125565b6068839055606b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790558015610ded575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610dfa610e8f565b73ffffffffffffffffffffffffffffffffffffffff8116610e835760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104a5565b610e8c81610ef6565b50565b60335473ffffffffffffffffffffffffffffffffffffffff1633146108df5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a5565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b606854831115610fe45760405162461bcd60e51b815260206004820152602560248201527f476173206c696d6974206d757374206e6f7420657863656564206d617847617360448201527f4c696d697400000000000000000000000000000000000000000000000000000060648201526084016104a5565b6010810261520801808410156110625760405162461bcd60e51b815260206004820152603360248201527f496e73756666696369656e7420676173206c696d69742c206d7573742062652060448201527f61626f766520696e7472696e736963206761730000000000000000000000000060648201526084016104a5565b50505050565b6066545f61107b8883888a898989610649565b60668054600181019091557f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354018190555f838152606c6020526040908190204290555190915073ffffffffffffffffffffffffffffffffffffffff80891691908a16907f69cfcb8e6d4192b8aba9902243912587f37e550d75c1fa801491fce26717f37e90611113908a9087908b908b908b90611546565b60405180910390a35050505050505050565b5f54610100900460ff166111a15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104a5565b6108df5f54610100900460ff166112205760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104a5565b6108df33610ef6565b5f60208284031215611239575f80fd5b5035919050565b5f8060408385031215611251575f80fd5b50508035926020909101359150565b803573ffffffffffffffffffffffffffffffffffffffff81168114610676575f80fd5b5f8060408385031215611294575f80fd5b61129d83611260565b946020939093013593505050565b5f8083601f8401126112bb575f80fd5b50813567ffffffffffffffff8111156112d2575f80fd5b6020830191508360208285010111156112e9575f80fd5b9250929050565b5f805f805f805f60c0888a031215611306575f80fd5b61130f88611260565b9650602088013595506040880135945061132b60608901611260565b93506080880135925060a088013567ffffffffffffffff81111561134d575f80fd5b6113598a828b016112ab565b989b979a50959850939692959293505050565b5f6020828403121561137c575f80fd5b61064082611260565b5f805f8060608587031215611398575f80fd5b6113a185611260565b935060208501359250604085013567ffffffffffffffff8111156113c3575f80fd5b6113cf878288016112ab565b95989497509550505050565b5f805f805f8060a087890312156113f0575f80fd5b6113f987611260565b955061140760208801611260565b94506040870135935060608701359250608087013567ffffffffffffffff811115611430575f80fd5b61143c89828a016112ab565b979a9699509497509295939492505050565b5f806040838503121561145f575f80fd5b8235915061146f60208401611260565b90509250929050565b5f8060208385031215611489575f80fd5b823567ffffffffffffffff81111561149f575f80fd5b6114ab858286016112ab565b90969095509350505050565b5f602082840312156114c7575f80fd5b815180151581146114d6575f80fd5b9392505050565b8082028115828204841417610643577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b85815267ffffffffffffffff8516602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010194935050505056fea164736f6c6343000818000a | |||
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
# First, let's find the relevant Go binding files
find . -name "*l1messagequeuewithgaspriceoracle*" -type f 2>/dev/null | head -20Repository: chengwenxi/morph
Length of output: 237
🏁 Script executed:
# Also check the bindings directory structure
ls -la bindings/ 2>/dev/null | head -20Repository: chengwenxi/morph
Length of output: 1001
🏁 Script executed:
# Look for Go files with the constant
rg "L1MessageQueueWithGasPriceOracleDeployedBin" --type go -l 2>/dev/nullRepository: chengwenxi/morph
Length of output: 118
🏁 Script executed:
# Now let's verify the hex artifact matches the Go constant
python - <<'PY'
import re
import pathlib
import sys
hex_file = pathlib.Path("bindings/bin/l1messagequeuewithgaspriceoracle_deployed.hex")
go_file = pathlib.Path("bindings/bindings/l1messagequeuewithgaspriceoracle_more.go")
# Read hex artifact
hex_data = hex_file.read_text().strip()
print(f"Hex artifact length: {len(hex_data)}")
print(f"Hex artifact (first 100 chars): {hex_data[:100]}")
# Read Go source
go_src = go_file.read_text()
# Find the constant
m = re.search(r'L1MessageQueueWithGasPriceOracleDeployedBin = "([^"]+)"', go_src)
if not m:
print("ERROR: Constant L1MessageQueueWithGasPriceOracleDeployedBin not found in Go file")
sys.exit(1)
go_constant = m.group(1)
print(f"Go constant length: {len(go_constant)}")
print(f"Go constant (first 100 chars): {go_constant[:100]}")
# Compare
if hex_data == go_constant:
print("\n✓ MATCH: Hex artifact matches Go constant")
sys.exit(0)
else:
print("\n✗ MISMATCH: Hex artifact does NOT match Go constant")
# Show where they differ
for i, (c1, c2) in enumerate(zip(hex_data, go_constant)):
if c1 != c2:
print(f"First difference at position {i}: hex='{c1}' vs go='{c2}'")
break
if len(hex_data) != len(go_constant):
print(f"Length mismatch: hex={len(hex_data)}, go={len(go_constant)}")
sys.exit(1)
PYRepository: chengwenxi/morph
Length of output: 146
🏁 Script executed:
# Let's try a simpler approach - read file sizes first
wc -c bindings/bin/l1messagequeuewithgaspriceoracle_deployed.hex bindings/bindings/l1messagequeuewithgaspriceoracle_more.goRepository: chengwenxi/morph
Length of output: 201
🏁 Script executed:
# Get just the first and last parts of each to spot check
echo "=== HEX FILE ==="
head -c 200 bindings/bin/l1messagequeuewithgaspriceoracle_deployed.hex
echo ""
echo "=== GO FILE (searching for constant) ==="
grep -n "L1MessageQueueWithGasPriceOracleDeployedBin" bindings/bindings/l1messagequeuewithgaspriceoracle_more.go | head -1Repository: chengwenxi/morph
Length of output: 12236
🏁 Script executed:
# Let's extract and compare the actual hex content vs the Go constant more carefully
# First, read the hex file
HEX_CONTENT=$(cat bindings/bin/l1messagequeuewithgaspriceoracle_deployed.hex)
echo "Hex file length: ${`#HEX_CONTENT`}"
# Extract just the constant value from the Go file (without the "0x" prefix for comparison)
GO_CONSTANT=$(sed -n 's/.*L1MessageQueueWithGasPriceOracleDeployedBin = "\(.*\)"/\1/p' bindings/bindings/l1messagequeuewithgaspriceoracle_more.go)
echo "Go constant length: ${`#GO_CONSTANT`}"
# Compare
if [ "$HEX_CONTENT" = "$GO_CONSTANT" ]; then
echo "✓ MATCH"
else
echo "✗ MISMATCH"
echo ""
echo "First 150 chars of hex file:"
echo "${HEX_CONTENT:0:150}"
echo ""
echo "First 150 chars of Go constant:"
echo "${GO_CONSTANT:0:150}"
echo ""
echo "Last 100 chars of hex file:"
echo "${HEX_CONTENT: -100}"
echo ""
echo "Last 100 chars of Go constant:"
echo "${GO_CONSTANT: -100}"
fiRepository: chengwenxi/morph
Length of output: 747
🏁 Script executed:
# Let's find where they diverge
HEX_CONTENT=$(cat bindings/bin/l1messagequeuewithgaspriceoracle_deployed.hex)
GO_CONSTANT=$(sed -n 's/.*L1MessageQueueWithGasPriceOracleDeployedBin = "\(.*\)"/\1/p' bindings/bindings/l1messagequeuewithgaspriceoracle_more.go)
# Find the divergence point
python3 << 'EOF'
hex_file = open('bindings/bin/l1messagequeuewithgaspriceoracle_deployed.hex').read().strip()
go_file_text = open('bindings/bindings/l1messagequeuewithgaspriceoracle_more.go').read()
import re
m = re.search(r'L1MessageQueueWithGasPriceOracleDeployedBin = "([^"]+)"', go_file_text)
go_constant = m.group(1) if m else ""
print(f"Hex file length: {len(hex_file)}")
print(f"Go constant length: {len(go_constant)}")
print(f"Difference: {len(go_constant) - len(hex_file)} chars")
# Find where they diverge
for i in range(min(len(hex_file), len(go_constant))):
if hex_file[i] != go_constant[i]:
print(f"\nFirst difference at position {i}:")
print(f"Hex file: ...{hex_file[max(0,i-50):i+50]}...")
print(f"Go constant: ...{go_constant[max(0,i-50):i+50]}...")
break
else:
# If one is shorter
if len(hex_file) < len(go_constant):
print(f"\nHex file ends at position {len(hex_file)}")
print(f"Go constant continues: ...{go_constant[len(hex_file):len(hex_file)+100]}...")
EOFRepository: chengwenxi/morph
Length of output: 146
🏁 Script executed:
# Let's use a simpler approach - check file sizes and compare with grep
echo "=== File Comparison ==="
echo "Hex file:"
head -c 100 bindings/bin/l1messagequeuewithgaspriceoracle_deployed.hex
echo ""
echo ""
echo "Go constant (first line only):"
sed -n '16p' bindings/bindings/l1messagequeuewithgaspriceoracle_more.go | head -c 200Repository: chengwenxi/morph
Length of output: 427
🏁 Script executed:
# Check how many lines the Go constant spans
sed -n '16,/^"/p' bindings/bindings/l1messagequeuewithgaspriceoracle_more.go | tail -5Repository: chengwenxi/morph
Length of output: 259
🏁 Script executed:
# Let's confirm the mismatch by checking the last part of the Go constant
tail -20 bindings/bindings/l1messagequeuewithgaspriceoracle_more.goRepository: chengwenxi/morph
Length of output: 16430
Hex artifact does not match the Go binding constant — bytecodes are out of sync.
The hex file is 11134 characters but L1MessageQueueWithGasPriceOracleDeployedBin in bindings/bindings/l1messagequeuewithgaspriceoracle_more.go is 11862 characters. This mismatch will cause deployment failures or incorrect contract behavior.
🤖 Prompt for AI Agents
In `@bindings/bin/l1messagequeuewithgaspriceoracle_deployed.hex` at line 1, The
deployed hex artifact and the Go binding constant are out of sync: update the Go
constant L1MessageQueueWithGasPriceOracleDeployedBin to exactly match the hex in
bindings/bin/l1messagequeuewithgaspriceoracle_deployed.hex (or re-run your
binding generation tool such as abigen to regenerate the bindings), replacing
the current 11862-character value with the correct 11134-character bytecode
string and verify the lengths match so deployments use the correct bytecode.
fix: remove L1 eth rpc flag check
fix: remove l1 rpc flag check
Co-authored-by: corey <corey.zhang@bitget.com> Co-authored-by: kukoomomo <kukoomomo@gmail.com> Co-authored-by: FletcherMan <fanciture@163.com> Co-authored-by: fletcher.fan <fletcher.fan@bitget.com>
Co-authored-by: corey <corey.zhang@bitget.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
release: MPT migration
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
Makefile (1)
14-16:⚠️ Potential issue | 🟠 Major
sed -i ''is macOS-specific — will break on Linux/CI.BSD
sed(macOS) usessed -i ''for in-place editing, but GNUsed(Linux) usessed -iwithout the empty string argument. This will fail in CI environments running Linux.Portable alternative
- sed -i '' -e "s|$(ETHEREUM_MODULE_NAME) v[0-9][^[:space:]]*|$(ETHEREUM_MODULE_NAME) $(ETHEREUM_TARGET_VERSION)|" $(MODULE)/go.mod; \ + sed -i"" -e "s|$(ETHEREUM_MODULE_NAME) v[0-9][^[:space:]]*|$(ETHEREUM_MODULE_NAME) $(ETHEREUM_TARGET_VERSION)|" $(MODULE)/go.mod; \Or use a temp file approach for full portability:
- sed -i '' -e "s|$(ETHEREUM_MODULE_NAME) v[0-9][^[:space:]]*|$(ETHEREUM_MODULE_NAME) $(ETHEREUM_TARGET_VERSION)|" $(MODULE)/go.mod; \ + sed -e "s|$(ETHEREUM_MODULE_NAME) v[0-9][^[:space:]]*|$(ETHEREUM_MODULE_NAME) $(ETHEREUM_TARGET_VERSION)|" $(MODULE)/go.mod > $(MODULE)/go.mod.tmp && mv $(MODULE)/go.mod.tmp $(MODULE)/go.mod; \Note: This applies to lines 18-20 as well.
🤖 Fix all issues with AI agents
In `@Makefile`:
- Around line 44-50: The Makefile currently attempts to git checkout
$(ETHEREUM_SUBMODULE_COMMIT_OR_TAG) in the go-ethereum submodule which fails
because the tag morph-v2.1.2 doesn't exist; update this by either setting
ETHEREUM_SUBMODULE_COMMIT_OR_TAG to a valid commit hash or a branch name that
exists in the go-ethereum submodule, or change the Makefile logic around the git
checkout (the block that cd's into go-ethereum and runs git fetch --tags && git
checkout $(ETHEREUM_SUBMODULE_COMMIT_OR_TAG)) to verify the ref exists and fall
back to fetching the desired branch/commit (e.g., check git show-ref or git
rev-parse before checkout and use origin/<branch> or a known commit if the tag
is missing).
| @if [ -d "go-ethereum" ]; then \ | ||
| echo "Updating go-ethereum submodule to tag $(ETHEREUM_SUBMODULE_COMMIT_OR_TAG)..."; \ | ||
| cd go-ethereum && \ | ||
| git fetch --tags && \ | ||
| git checkout $(ETHEREUM_SUBMODULE_COMMIT_OR_TAG) && \ | ||
| cd ..; \ | ||
| fi |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
echo "=== Checking go-ethereum submodule remote and tags ==="
if [ -d "go-ethereum" ]; then
cd go-ethereum
echo "Remote URL:"
git remote -v
echo -e "\nAvailable tags matching morph-v2:"
git tag | grep "morph-v2" || echo "No matching tags found locally"
echo -e "\nTotal tags:"
git tag | wc -l
else
echo "go-ethereum submodule not initialized"
fiRepository: chengwenxi/morph
Length of output: 328
The morph-v2.1.2 tag does not exist in the go-ethereum submodule and will cause git checkout on line 48 to fail.
The tag verification confirms that no tags matching morph-v2 are available. Without this tag, running make submodules will fail. Either ensure the tag exists in the go-ethereum submodule, point to a commit hash that exists, or use a branch reference instead of a tag.
🤖 Prompt for AI Agents
In `@Makefile` around lines 44 - 50, The Makefile currently attempts to git
checkout $(ETHEREUM_SUBMODULE_COMMIT_OR_TAG) in the go-ethereum submodule which
fails because the tag morph-v2.1.2 doesn't exist; update this by either setting
ETHEREUM_SUBMODULE_COMMIT_OR_TAG to a valid commit hash or a branch name that
exists in the go-ethereum submodule, or change the Makefile logic around the git
checkout (the block that cd's into go-ethereum and runs git fetch --tags && git
checkout $(ETHEREUM_SUBMODULE_COMMIT_OR_TAG)) to verify the ref exists and fall
back to fetching the desired branch/commit (e.g., check git show-ref or git
rev-parse before checkout and use origin/<branch> or a known commit if the tag
is missing).
Summary by CodeRabbit
New Features
Bug Fixes & Improvements
Chores