Skip to content

op-node: Use unmetered L1 Attributes Transaction#3157

Merged
mergify[bot] merged 17 commits intodevelopfrom
jg/unmetered_l1_attributes
Aug 4, 2022
Merged

op-node: Use unmetered L1 Attributes Transaction#3157
mergify[bot] merged 17 commits intodevelopfrom
jg/unmetered_l1_attributes

Conversation

@trianglesphere
Copy link
Contributor

@trianglesphere trianglesphere commented Aug 2, 2022

Description
This enables the IsSystemTransaction flag in the L1 Attributes
deposit & updates to the latest version of geth.

@changeset-bot
Copy link

changeset-bot bot commented Aug 2, 2022

🦋 Changeset detected

Latest commit: 1a543cf

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 9 packages
Name Type
@eth-optimism/contracts-bedrock Patch
@eth-optimism/core-utils Patch
@eth-optimism/sdk Patch
@eth-optimism/common-ts Patch
@eth-optimism/contracts Patch
@eth-optimism/data-transport-layer Patch
@eth-optimism/drippie-mon Patch
@eth-optimism/message-relayer Patch
@eth-optimism/replica-healthcheck Patch

Not sure what this means? Click here to learn what changesets are.

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

@trianglesphere trianglesphere requested review from protolambda and tynes and removed request for protolambda August 2, 2022 15:20
@mergify
Copy link
Contributor

mergify bot commented Aug 2, 2022

This PR changes implementation code, but doesn't include a changeset. Did you forget to add one?

@trianglesphere trianglesphere force-pushed the jg/unmetered_l1_attributes branch from 007ab5f to 9b7aecb Compare August 2, 2022 15:23
This enables the IsSystemTransaction flag in the L1 Attributes
deposit & updates to the latest version of geth.
Copy link
Contributor

@protolambda protolambda left a comment

Choose a reason for hiding this comment

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

Can you update the specs?

deposits doc needs the system tx format bool: https://github.com/ethereum-optimism/optimism/blob/develop/specs/deposits.md

and derivation doc needs to set it to true for block info, false for user deposits: https://github.com/ethereum-optimism/optimism/blob/develop/specs/derivation.md

Copy link
Contributor

@protolambda protolambda left a comment

Choose a reason for hiding this comment

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

need to rerun CI, op-e2e seems to have failed to start / output anything.

Copy link
Collaborator

@mslipper mslipper left a comment

Choose a reason for hiding this comment

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

CI is flagging a real bug, so requesting change until we fix it.

@protolambda
Copy link
Contributor

Ah, I think this breaks the deposit hash calculation in TS (used in devnet test), because of the new deposit systemTx field.

The op-e2e timing out happens sometimes in CI though, I think that's unrelated.

@github-actions github-actions bot added the A-pkg-core-utils Area: packages/core-utils label Aug 3, 2022
@protolambda
Copy link
Contributor

The devnet ethereumoptimism/reference-optimistic-geth:latest image may still need to be updated. We switched from optimism-prototype to optimism branch as default in the reference-optimistic-geth repo. Both to keep the audit branch nice and stable, as well as to get rid of the -prototype suffix: it's not a prototype anymore, we're about to enter alpha public testnet.

@protolambda
Copy link
Contributor

Cancelled CI, devnet was running for 2h, we should add a timeout on that job. I think we just need to update the L2 reference geth docker image to point to the new branch that this PR introduces.

@protolambda
Copy link
Contributor

Geth repo nows builds docker images for the new default optimism branch, including the updates required for this PR. I don't think the devnet is using a specific docker tag, but just uses the latest, so other CI might temporarily break until we merge this in.

@tynes
Copy link
Contributor

tynes commented Aug 3, 2022

We need to merge this because its breaking the devnet for other PRs

@protolambda
Copy link
Contributor

I think either the CI is running an older docker image, or my JS change is not good, I'm seeing this in CI logs:

Sending from 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
Depositing 1 ETH to 0xB79f76EF2c5F0286176833E7B2eEe103b1CC3244
0xB79f76EF2c5F0286176833E7B2eEe103b1CC3244 has 0.0 ETH on L2
Got TX hash 0x4b6f7e960d69276ef9c9a431e8acf27b8ced8a01a6b83bf8b61ec3f518a9e025. Waiting...
Included in block 0xc00acaa964fcdfa65490c20b2c92c6baeadcf28efdb710fd041e27403a26e102
Deposit has log index 1
Waiting for L2 TX hash 0x67251c1f210dd63a82eb58aaf2f0317f66bc72aec1a9fddd8b35834ab6b61743
Unexpected balance increase without detecting deposit transaction
latest block 211:0x7c59d94d829089088090d3acb3d64d4c4b839798eb2e441266ad84715766d50a
Unexpected balance increase without detecting deposit transaction
latest block 236:0x965047b4588d06a40b7c52f7d1682bc36c727ee02fdb3dd8a1b20de0fafe93d4

Which I think is because of the depsit-tx hash computation not matching between Go and JS. cc @tynes

@tynes
Copy link
Contributor

tynes commented Aug 3, 2022

I think either the CI is running an older docker image, or my JS change is not good, I'm seeing this in CI logs:

Sending from 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
Depositing 1 ETH to 0xB79f76EF2c5F0286176833E7B2eEe103b1CC3244
0xB79f76EF2c5F0286176833E7B2eEe103b1CC3244 has 0.0 ETH on L2
Got TX hash 0x4b6f7e960d69276ef9c9a431e8acf27b8ced8a01a6b83bf8b61ec3f518a9e025. Waiting...
Included in block 0xc00acaa964fcdfa65490c20b2c92c6baeadcf28efdb710fd041e27403a26e102
Deposit has log index 1
Waiting for L2 TX hash 0x67251c1f210dd63a82eb58aaf2f0317f66bc72aec1a9fddd8b35834ab6b61743
Unexpected balance increase without detecting deposit transaction
latest block 211:0x7c59d94d829089088090d3acb3d64d4c4b839798eb2e441266ad84715766d50a
Unexpected balance increase without detecting deposit transaction
latest block 236:0x965047b4588d06a40b7c52f7d1682bc36c727ee02fdb3dd8a1b20de0fafe93d4

Which I think is because of the depsit-tx hash computation not matching between Go and JS. cc @tynes

This means the JS isn't computing the hash of the deposit tx correctly

@protolambda
Copy link
Contributor

Just checked the CI logs. Pulled down the exact docker image that is being used, and grepped the symbols in the geth binary to make sure it includes the latest updates, and it does. So it's some code in our testing that can't find the deposit correctly. Likely JS/solidity updates I missed.

@protolambda
Copy link
Contributor

protolambda commented Aug 3, 2022

Devnet stuck due to *remaining fixes, cancelled CI job because it didn't time out automatically (1h...)

@protolambda
Copy link
Contributor

Fixed a bug in deposit tx decoding (it was still skipping an extra byte, from when deposits had a version byte) + fixed encoding/decoding of the new boolean.

…and encoding to handle isSystemTransaction bool
@github-actions github-actions bot added 2-reviewers A-pkg-contracts-bedrock Area: packages/contracts-bedrock labels Aug 4, 2022
@protolambda protolambda requested a review from mslipper August 4, 2022 13:29
@mergify
Copy link
Contributor

mergify bot commented Aug 4, 2022

This PR has been added to the merge queue, and will be merged soon.

@mergify mergify bot merged commit 8ae3915 into develop Aug 4, 2022
@mergify mergify bot deleted the jg/unmetered_l1_attributes branch August 4, 2022 16:37
@mergify
Copy link
Contributor

mergify bot commented Aug 4, 2022

This PR is next in line to be merged, and will be merged as soon as checks pass.

@mergify mergify bot removed the on-merge-train label Aug 4, 2022
@mslipper mslipper mentioned this pull request Aug 4, 2022
roninjin10 pushed a commit that referenced this pull request Aug 26, 2022
* op-node: Use unmetered L1 Attributes Transaction

This enables the IsSystemTransaction flag in the L1 Attributes
deposit & updates to the latest version of geth.

* specs updates

* Update specs/deposits.md

* feat: bedrock deposit transaction type update

* bedrock: update geth dependency

* fix(core-utils): bedrock deposit tx encode/decode typescript fixes

* feat(packages/contracts-bedrock): update UserDepositTransaction type and encoding to handle isSystemTransaction bool

* contracts-bedrock: update differential deposit tx solidity <> js fuzzing

* core-utils

* contracts-bedrock

* contracts-bedrock: fix test

* contracts-bedrock: fix differential tests

* contracts-bedrock: fix broken test

* contracts-bedrock: gas snapshot

Co-authored-by: protolambda <proto@protolambda.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
maurelian pushed a commit that referenced this pull request Sep 15, 2022
* op-node: Use unmetered L1 Attributes Transaction

This enables the IsSystemTransaction flag in the L1 Attributes
deposit & updates to the latest version of geth.

* specs updates

* Update specs/deposits.md

* feat: bedrock deposit transaction type update

* bedrock: update geth dependency

* fix(core-utils): bedrock deposit tx encode/decode typescript fixes

* feat(packages/contracts-bedrock): update UserDepositTransaction type and encoding to handle isSystemTransaction bool

* contracts-bedrock: update differential deposit tx solidity <> js fuzzing

* core-utils

* contracts-bedrock

* contracts-bedrock: fix test

* contracts-bedrock: fix differential tests

* contracts-bedrock: fix broken test

* contracts-bedrock: gas snapshot

Co-authored-by: protolambda <proto@protolambda.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
sam-goldman pushed a commit that referenced this pull request Sep 15, 2022
* op-node: Use unmetered L1 Attributes Transaction

This enables the IsSystemTransaction flag in the L1 Attributes
deposit & updates to the latest version of geth.

* specs updates

* Update specs/deposits.md

* feat: bedrock deposit transaction type update

* bedrock: update geth dependency

* fix(core-utils): bedrock deposit tx encode/decode typescript fixes

* feat(packages/contracts-bedrock): update UserDepositTransaction type and encoding to handle isSystemTransaction bool

* contracts-bedrock: update differential deposit tx solidity <> js fuzzing

* core-utils

* contracts-bedrock

* contracts-bedrock: fix test

* contracts-bedrock: fix differential tests

* contracts-bedrock: fix broken test

* contracts-bedrock: gas snapshot

Co-authored-by: protolambda <proto@protolambda.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-pkg-contracts-bedrock Area: packages/contracts-bedrock A-pkg-core-utils Area: packages/core-utils

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants