Skip to content
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

Bedrock -> Develop #2563

Merged
merged 709 commits into from
May 16, 2022
Merged

Bedrock -> Develop #2563

merged 709 commits into from
May 16, 2022

Conversation

mslipper
Copy link
Collaborator

  • Create README.md
  • Update README.md
  • initial specs
  • Update overview.md
  • Update overview.md
  • update overview
  • add high level diagram; update overview
  • add l1 contracts goals
  • update wording for strategy requirements
  • rename rollup synchronizer to rollup client
  • update title
  • node instead of client
  • This is a combination of 3 commits.
  • add: roadmap doc & diagram
  • Update README.md
  • Update README.md
  • Update README.md
  • Update README.md
  • Update README.md
  • Update spec to use block oracle term
  • fix: typos and make newline usage consistent
  • Add link to dispute game repo
  • add: diagrams
  • add: roadmap goals
  • Move the ToC to the top of readme (Add a GitHub workflow for publishing to NPM #24)
  • update: roadmap progress & readme (YAS-163 Library Support #26)
  • Add high level intro section (Refactor tests and test EXTCODECOPY Failure Behavior #25)
  • fix(introduction): minor clarifications around sequencer
  • feat(overview): update overview with improved design goals and resolved caveats
  • feat(components): add exec-engine details
  • feat(components): add README with 5 sub-components of a rollup node
  • feat(components): outline basic L1 sync logic for consensus layer
  • feat(components): add basic replicator service logic
  • fix(rollup_node): address PR feedback
  • feat(overview): updated diagram and explanations
  • Apply suggestions from code review
  • Update roadmap diagram (Make CALLs Revert Properly #28)
  • Add block generation writeup
  • Edit algorithm for improved clarity
  • Add fraud proof VM & program writeup
  • Update roadmap progress bars (Fix evm_increaseTime bugs #36)
  • Use better words (Optimizing JUMP table PUSH32s #37)
  • Add glossary
  • Update glossary.md
  • Update glossary.md
  • Update glossary.md
  • Update definition of epoch
  • s/ie./e.g.
  • Update rollup node readme, replicator -> p2p sync, clarify services
  • initial L2 network spec
  • rollup node readme: address PR feedback from norswap, part 1
  • rollup node / p2p: more PR review updates
  • Reset repo to restart from scratch
  • explain exactly what we're specifying
  • reformat, remove typo, add norswap to contacts
  • Add linting and formatting with markdownlint
  • Add linting workflow for github actions
  • Update to markdownlint json config
  • Spec Execution Engine behavior
  • Exec engine: address review and suggestions from @norswap
  • .gitignore and lint line-length fix
  • exec engine: doc formatting
  • rollup node spec draft
  • fix formatting snafu, add glossary link, eth 2 block time is 12s not 14s
  • don't try to legislate on which transaction types are allowed, follow L1
  • specify random
  • small changes from review feedback
  • make the l1 attributes a predeploy instead of a precompile
  • remove block gossip, which doesn't make sense at the deposits-only stage
  • it's a receipt root
  • mention finalization guarantees
  • fix links
  • add TODO for handling error conditions
  • l2 deposit feed contract -> deposit feed contract
  • misc small fixes from reviews
  • excise 'L2 derivation inputs' from the spec
  • basic linting
  • refill text to 120 character lines
  • add more linting exemptions
  • make lint commands compatible with Windows quote expansion
  • add yarn-error.log to .gitignore
  • First pass at Deposits spec
  • Add ToC to glossary
  • Add Transaction Type to glossary
  • Move deposit transaction prefix rationale to deposit spec
  • Rename file to deposits.md
  • Clean up deposits file
  • Add isCreation flag
  • change Ethereum JSON-RPC API link
  • add specification links + fix typos
  • link execution-engine spec, specify how sync can help in case of re-orgs, indicate errors are not supposed to happen
  • Specify authorization and validation for deposit transactions
  • Add payable to deposit contract
  • Add gasLimit
  • Specify EE initialization
  • Clean up deposits file
  • Polish with review feedback
  • Clarify rationale for only one new tx type
  • clarify range notation
  • Add contracts package with hardhat and associated tooling
  • Add DepositFeed contract
  • Update deposit specs
  • Move specs into subdir
  • Only lint specs package
  • Add L1Block values contract
  • Move L1Block attributes contract ref-impl out of specs
  • Fix markdown header naming collision
  • Split 'value' into 'depositValue' and 'sendValue'
  • Rename sendValue -> value, depositValue -> mint
  • Add a build script
  • Add missing auth test to L1Block spec
  • fix formatting
  • Use custom errors in L1Block contract
  • User custom errors in DepositFeed contract
  • s/Optimistic Ethereum/Optimism
  • make rollup node spec consistent with deposit spec
  • ref impl: Go linting + tests in CI
  • ref impl: opnode base
  • ref impl: eth utils - watch head, hash/height id type, RPC source interfaces
  • ref impl: parallelized downloader for L1 block + receipts
  • specs: Add README with design goals
  • specs: Add ToC to README
  • ref impl: downloader - implement review suggestions from @norswap
  • ref impl: downloader Close func
  • ref impl: implement eth utils review suggestions by @norswap
  • Reference implementation license
  • Move specs license to specs, clarify MIT applies to all reference software sources
  • ref impl: cancel download task on eviction
  • add code coverage reporting for go in CI
  • ref impl: more doc comments in downloader
  • fix broken links
  • automate link checking with lychee
  • make lychee work with absolute links
  • fixes from review
  • fix more broken link refs, add fork choice rule definition
  • remove link to generated file
  • expand lychee linting and make CI similar to local
  • ref impl: execution engine API client-bindings
  • ref impl: execution engine API client-bindings
  • ref impl: input derivation and reading l1-info
  • ref impl: fix data minimum length, bug found by @trianglesphere
  • ref impl: fix deposit data padding handling
  • ref impl: derive outputs and run driver step
  • ref impl: find starting point of sync, given L1 and L2 interfaces
  • ref impl: test FindSyncStart
  • ref impl: sync start genesis and diff height edge cases, more tests
  • ref impl: sync start genesis L1 check test fixed
  • ref impl: test sync start with offset L2 genesis
  • ref impl: no timeouts, called responsible instead
  • ref impl: clarify sync-start and sync-ref comments
  • ref impl: sync start finding - lint imports
  • specs/rollup-node: update & de-duplicate driver process description
  • specs/rollup-node: update sync algorithm
  • specs/exec-engine: clarify sync section, refer to rollup node spec
  • ref impl: return both refL1 and nextRefL1 for driver
  • ref impl: driver agent: respond to head events and stay in sync
  • ref impl: no ctx in driver struct
  • ref impl: driver - fix naming of nextRefL1 in driver, clarify head update
  • ref impl: undo extra refL1 return param
  • Add revert on failed call in Dummy contract
  • Add missing test cases
  • Fix broken test
  • Ignore .deps folder
  • ref impl: refactor driver into separate engine, loop and state
  • ref impl: include testlog for testing
  • ref impl: test requestSync of driver state
  • specs/rollup-node: fix typo
  • ref impl: document the l2 StateMachine and Driver interfaces
  • ref impl: implement rollup node main process, connect to sources/engines, starts drivers, handle shutdown
  • ref impl: readme
  • ref impl: pass context to Drive instead of into engine-driver struct. And remove unnecessary type conversion
  • ref impl: rename mergeSub to handleUnsubscribe
  • ref impl: adapt node to driver actions/state separation refactor
  • deposit feed test: rm old comment
  • Forward full balance from Dummy contract
  • Lint test script
  • add new terms to glossary, fixing internal links but not yet external links
  • add table of contents to deposit spec
  • update deposits.md to use standardized terms
  • add g-prefix to glossary links in deposits.md
  • rewrite rollup node spec to standardize terminology, add pseudocode and clarify content
  • update execution engine specs
  • simplify/clarify sync start algorithm
  • lint
  • switch glossary links in rollup node spec to use g-prefix
  • add specifications for markdown style
  • ref impl: reduce command running boilerplate
  • ref impl: Go contract bindings
  • add lychee information to meta/linting.md
  • ref impl: E2E Test in go
  • ref impl: Generate contract bindings
  • ref impl: Slow down L1 block speed during the test
  • ref impl: Use make to generate contract bindings
  • ref impl: Use auto-generated bytecode
  • ref impl: Increase L1 timeout to match block time
  • ref impl: Save deployed bytecode
  • ref impl: Use deployed bytecode in e2e test
  • add instructions for running go tests
  • ref impl: Small cleanups
  • terminology quickfix
  • add precisions regarding the re-org past genesis scenario
  • Document release process
  • add syntax highlighting to pseudocode
  • Move most of the l2 package to rollup
  • Subdivide the rollup package
  • l2: Add short godoc to package
  • Rename Catalyst -> Engine API
  • Rename input/output to Payload Attributes/Execution
  • opnode: Add Dockerfile/Makefile
  • Ref impl: Remove OpNodeCmd
  • chore: add basic editorconfig file
  • Update documentation to correct commands
  • ref impl: Return node.Stop() error
  • ref impl: Fix lint
  • automate toc building
  • CI: enforce TOC to be up to date
  • meta: update lint docs with doctoc link
  • chore: newline and end of makefile
  • meta: clean up toc script
  • ref impl: Hardcode own version
  • ref impl: Provide logger to Node
  • ref impl: Better Hex2Hash Function
  • ref impl: Remove combined L1 sources
  • glossary: update Merkle Patricia Trie definition
  • specs: l2 output root / merkle root wording fixes
  • glossary: update merkle patricia trie references
  • rollup node spec: update l2 output root specs with review suggestions from @norswap
  • proposals: separate l2 output root proposals section
  • rollup-node/proposals/glossary: linting fixes, add TOC
  • ref impl: Cleanup driver package
  • Remove function adapter for CanonicalChain
  • ref impl: More driver cleanup
  • Clean up interfaces
  • ref impl: Remove stateMachine
  • ref impl: Fix lint in node
  • Remove commented out interface
  • ref impl: Remove stored context
  • ref impl: Set timeouts for all driver loop operations
  • ref impl: Remove dead comments
  • ref impl: Fix for resubscription bug
  • ref impl/driver: Don't use error return channel
  • ref impl: Track code coverage across packages (Lower SafetyChecker gas to below 1.5 million #214)
  • ref impl: Add L1HeadRef function
  • ref impl: Add SyncReferenceV2 interface
  • ref impl: New sync start algorithms
  • ref impl: Use new implementation of sync start
  • feat: add vim swap files to gitignore
  • feat: copy stripped down EIP-1559 BSS
  • feat: add SRO contract, bindings, and l2output driver
  • feat: hook up l2output driver to config options
  • feat: use require for test assertions
  • feat: integrate L2 Output submitter in E2E test
  • ref impl: Mock new downloader interface
  • ref impl: Expose L2 Head and L1 Range methods
  • ref impl: Small fix to FindL1Range
  • ref impl: Move L1/L2 nodes to eth package
  • ref impl: Return eth.L2Node from derive.BlockReferences
  • ref impl: Clean up the sync package
  • ref impl: Remove HeadBlockLink
  • ref impl: Update sync/start comments
  • ref impl: Reduce duplication in L1NodeByNumber/L1HeadNode
  • ref impl: PR cleanup
  • ref impl: Implement FetchL1Info as well
  • fix dead link
  • fix deposit specs to account for contract creation (isCreation & null to field)
  • ref impl: PR Review comments
  • ref impl: Switch to much simpler downloader (Fix sent to finalized batch send failure condition #221)
  • ref impl: Add rollup config
  • ref impl: Sequence Ready Payload attributes function
  • ref impl: Use window sequencing in the driver
  • ref impl: Lift rollup configuration
  • ref impl: Refactor the rollup driver
  • ref impl: Fix L2 derivation in the case of 0 batches
  • ref impl: Switch HeadSignal to L1Node
  • ref impl: Increase timeout in e2e test
  • ref impl: Small fix for L1Range function
  • ref impl: Small fixes to driver/state
  • ref impl: Better driver testing
  • ref impl: Driver cleanup
  • ref impl: More logging
  • ref impl: Add new driver testcase
  • ref impl: Fix bug in driver.step
  • ref impl: Handle re-orgs in the rollup driver
  • ref impl: Fix rollup driver tests
  • ref impl: Cleanup comments
  • ref impl: Rename eth L1/L2 Node struct
  • Sequencing spec: seq window, derivation from batches, slight sync adjustment
  • ref impl: Clean up testing code
  • ref impl: Implement sequence spec
  • ref impl: Include L1Info in every L2 block
  • ref impl: Rename Node -> BlockRef
  • ref impl: Remove dead TODO comment
  • Add slither to gh actions
  • Address slither warnings
  • Update golang version to 1.17 for CI
  • Update golang dependencies
  • update Engine API bindings to match L2 geth
  • ref impl: Add simple batch serialization
  • rollup/derive: encode/decode multiple batches (l2 blocks) per sequencer transaction
  • ref impl: Simple batch submitter
  • update batch submitter to submit bundles of batches
  • specs/rollup-node: define encoding for bundle of batches, and how we apply compression to a whole bundle of batches (algorithm TBD)
  • specs/rollup-node: explicitly exclude deposit-type transactions from batches
  • specs: clarify deposits position in block and why we repeat l1-info txs
  • opnode/rollup/derive: batch ReadFull and comment fix
  • ref impl: Sequencing (ovm-toolchain: check waffle provider defined #249)
  • opnode: rollup config from JSON file, clean cli
  • opnode/rollup: json encode/decode rollup config
  • opnode/rollup: improve Config.Check
  • Demo setup and fixes
  • remove R&D calls
  • Add forge
  • Convert L1Block test from ts to sol
  • Clean up workflow configuration
  • Squashed cleanup (Fix formatting issues in erc20-tutorial #256)
  • ref impl: Flatten source interfaces
  • fix: test_basefee now tests basefee
  • ref impl: Address PR Comments
  • opnode/rollup/derive,specs: verify batch does not contain deposit tx type, sanity-check receipts, use l2 block height for deposits, update specs
  • opnode: Add a makefile
  • opnode: Fix misspells
  • l2os: Fix misspells
  • opnode: Rename strat to strategy
  • opnode: Pull in version info from ld flags
  • opnode: Specify lints and add misspell
  • opnode: Quiet logging during testing
  • Bump golangci-lint version
  • Require go 1.18
  • opnode: Speed up bss
  • Parallelize solidity CI checks
  • specs: Add L2 output submitter service
  • Change optimism_outputAtBlock param to L2 blocknum
  • Replace submissionFrequency with submissionInterval
  • Address PR comments on output submission spec
  • Run CI on feat/* branches
  • Fix linting
  • Rename MockL2OutputOracle to L2OutputOracle
  • Address review comments
  • Update optimism_outputAtBlock method spec
  • Move definitions to end of doc
  • forge install: openzeppelin-contracts
  • Add l2OutputAppended event
  • Add l2OutputOracle tests
  • Add comments and improve variables names
  • Add sad path tests for appendL2Output
  • Add blockhash check
  • Improve ordering of tests
  • Fix off-by one error in computeL2BlockNumber
  • Import forge-std for HEVM interface
  • Fix slither warnings
  • Add foundry.toml
  • Fix typo and event declaration ordering
  • Add getL2Output function and make mapping internal
  • Update spec to match implementation
  • Rename reorg protection vars to with L1 prefix
  • fix: linter ignore node_modules in sub dirs
  • Implement opnode RPC server (provider: include txmeta in transaction response #282)
  • l2os: Submit l2 output root via opnode
  • opnode: New blockref format (Accounting for 66-byte signatures #285)
  • create rollupclient package; fix flag name
  • Add devnet docs + deposit task (Docs: fix small typo #269)
  • Migrate DepositFeed spec to forge test contract
  • ref impl: new l1 downloader with batching and caching
  • opnode/l1: confirugable limit of concurrent requests to l1 source
  • lint DepositFeed spec; update package.json
  • contracts: clean up L1Block test file
  • contracts: Add gas snapshot script and output
  • fix: capitalization in test function
  • docs: fix typo in deposits.md
  • opnode: Extend sync algorithm to SafeHead (Fix Oversized Data transaction error #299)
  • opnode: Reconcile epochs and handle reorgs (Correcting Fraudulent State Roots Off-Chain #309)
  • go.mod: update to squashed l2 geth diff d5e1fc1a74bda3cbe5715d5732621460f9e00908
  • opnode/rollup: use L2 block height in L1-info deposit tx block-height field (tx field, not info field) for uniqueness of deposit tx hash on L2
  • feat: DepositFeed receive function
  • Update slither db
  • Add solidity test on df.receive() function
  • Add warning message on DepositFeed.receive()
  • specs: Add Withdrawals specification
  • contracts: Add withdrawor and start of tests
  • ops: Add withdrawor predeploy to docker setup
  • Add gaslimit to withdrawal encoding
  • test(contracts): Withdrawal creation and proof gen
  • deps: install entire goddamn monorepo using forge.
  • Add output root inclusion proof
  • Add storage inclusion proof
  • Improve testing against L2 node
  • Add finalizationWindow var to WithdrawalVerifier
  • Add WithdrawalVerified event
  • Remove unused constructor argument
  • Clean up Forge test of WithdrawalVerifier
  • ops: Docker get l2 genesis hash on startup
  • contracts: ignore dirty submodules
  • Don't run hardhat tests in CI
  • Create Optimism Portal contract
  • Move receive function to OptimismPortal
  • specs: Add overview page (Padding signature V value to submit in rollup tx batch #286)
  • Convert WithdrawalVerifier to a library
  • contracts: Rename Withdrawor to Withdrawer
  • specs: define timestamp bounds of derivation process, clear up block derivation, define missing noTxPool field
  • opnode/rollup: implement new timestamp bounds on block derivation batch filtering and filling
  • opnode: fix sequencer L1 origin advancing, and fix e2e genesis time
  • contracts: Add burn function to the Withdrawer contract
  • contracts: Add natspec comments
  • contracts: Remove timestamp from OutputRootProof
  • contracts: undoL1ToL2Alias on withdrawals from a contract
  • specs/rollup-node: improve spec based on review suggestions from @norswap
  • opnode/rollup: implement review suggestions from @trianglesphere
  • specs/rollup-node: document timestamp invariant between L2 and L1 origin
  • opnode/rollup/driver: continue sequencing on current epoch if next L1 origin timestamp is not reached yet
  • opnode/rollup: fix maxL2Time excl bound, and return adjusted maxL2time in long L1 gap case
  • contracts: Add withdrawer tests
  • Rename Finalization Window to Finalization Period
  • contracts: Validate output root proof in portal
  • contracts: Use solidity custom errors
  • contracts: Use unchecked math when safe
  • contracts: Add section dividers to contract layout
  • specs: Update withdrawals spec to match impl
  • contracts: Fix ETH burning in the withdrawer contract
  • specs: Address review comments
  • ops: Address review comments
  • Update Dockerfile.opnode
  • ops: Fix devnet
  • Update opnode/rollup/driver/state.go
  • Update rollup.json
  • Update predeploy addresses
  • tests: Add tests for batch requests when the parent request fails
  • opnode: Don't start sequencing blocks until past the L1 genesis (Backwards compatibility for Authenticated Addresses #325)
  • opnode: update to latest L2 geth
  • readme: fix typos and break lines (xdomain messenger: authenticate target address #327)
  • Update ref optimistic geth image (Revert Mock changes  #328)
  • ci: Improve timestamp management in devnet (Messenger deploy + test script for Phase B #329)
  • contracts: Move withdrawal logic into abstract contract
  • contracts: Move withdrawal hashing logic into library
  • contracts: Update .gas-snapshot
  • contracts: silence compiler warnings
  • feat: expose debug http api (Add updated batch submitter #334)
  • opnode: Use l2 safe head instead of l2 head
  • opnode: Clear l1WindowBuf on insertEpoch failure
  • hardhat: clean up the hardhat deposit task
  • fix: oe => optimism (Add better genesis block handling in tests #338)
  • opnode: Rework state test to build on safe head
  • opnode: fix setL1BlockValues selector used for deposits (Use rollup_getInfo endpoint for ctc address & more #339)
  • rollup: fix address of the L1 Block Attributes contracts
  • fix: typo in l1InfoPredeployAddress
  • fix: gofmt and goimports
  • opnode: Import constants
  • ops: fix formatting, add docker buildkit support
  • ops: prune volumes on devnet-down
  • fix: replace fraud with fault (Make Batch Submitter executable #337)
  • opnode: Fix bug in block creation (workflows: update #345)
  • opnode: Don't allow arbitrary mints (github actions: fix docker push #346)
  • opnode,specs: deposit tx-hash uniqueness based on L1
  • opnode/l1: verify critical receipt/log info we get from RPC
  • opnode/test: reconstruct deposit hash in e2e test, fetch l2 deposit receipt
  • opnode/l1: fix panic on channel send after close, sema channel can stay open
  • go.mod: l2 geth update with improved deposit tx hash
  • README: remove alpha branch + update description (docker: temp fix for deps #332)
  • allow building everything from top-level makefile
  • allow testing from top level makefile
  • Update Makefile
  • opnode/l1: wrap errors and fmt test imports
  • opnode: don't expose types.Block to derive or driver packages, prefer l2.ExecutionPayload
  • opnode: add comments, fix genesis base case to get l1 origin
  • init: integration tests (Fix mock messengers #344)
  • opnode: Fix possible panic in sequencer batch creation (Bump version #342)
  • opnode: Test Utilities (gh actions: auto bump #319)
  • Fix sync-start bug + improve sync-start comments (Provider L1BlockNumber should never be null #355)
  • feat: deposit tx js helpers (provider: 0.0.1-alpha.8 #352)
  • devnet: Hardcode deposit feed bytecode (provider: 0.0.1-alpha.12 #359)
  • opnode,l2os: Better lifecycle management (Fix provider encoding #358)
  • style: clean up and comments for state.go (provider: 0.0.1-alpha.9 #356)
  • opnode: Parameterize deposit contract address (v2 Upgrade and publish #361)
  • opnode/test: Add reverted deposit with mint test
  • fix(ci): use Foundry GHA (provider: update readme #367)
  • opnode/test: check nonce increment in deposit fail
  • integration-tests: End-to-end withdrawal test (Move l1BlockNum update into sequencer batch append #362)
  • go.mod: bump l2geth version
  • opnode: Update and deploy contracts (Contracts-v2 Toolchain Integration #360)
  • specs: Update output root derivation (Temp fix lastL1BlockNum & small off by 1 #357)
  • opnode: libp2p setup
  • p2p flags, config, and libp2p + discv5 setup
  • specs: initial rollup node p2p spec
  • specs: Fix definition of output root
  • solidity: fail if updated gas snapshot isn't included
  • p2p setup: implement review suggestions, fix toc, fix lint
  • opnode/p2p: test with require instead of assert
  • contracts: Fix reentrancy attack in WithdrawalsRelay (Bump ini from 1.3.5 to 1.3.8 #378)
  • contracts: Output oracle improvements (Pull addresses from address manager #370)
  • Clean up withdrawals itest (Fix bug where we weren't submitting last state root #372)
  • fix dead anchor link
  • higher difficulty rather than number
  • 'L1 attributes block' is not a thing + add link
  • try to align sentences with lines
  • ci: Add automated docker builds for opnode and l2 output submitter (pkg/message relayer init #369)
  • contracts: Add deleteL2Output function
  • specs: Add deleteL2Output
  • ci: Update Docker version in CircleCi (Fix multi-timestamp batch #381)
  • contracts: reuse code (Clean up pretty much everything #380)
  • opnode: Better parsing of the TransactionDepositedEvent (Only commit fraud once #382)
  • Makefile,ops: docker compose up instead of run to make devnet-down work, and fix makefile label (Fix broken links #385)
  • opnode: Do not drop all deposits on parsing error (rollup: disable queue batch append flag #383)
  • opnode/test: Provide flag to access geth logs (core-utils: v0.0.1-alpha.31 #389)
  • opnode: Fix L1 Info Transactions
  • contracts: import messengers (added "from" in allowedTransactionKeys list #393)
  • contracts: fix abi encoding in proof verification (package: add engines >= 10 #395)
  • contracts: don't unalias on L2->L1
  • opnode: attach p2p host and discovery to rollup node, update e2e test (dockerfile.dev: delete dead file #388)
  • deps: update forge-std
  • contracts: fix build
  • build: fix bindings build
  • fix: builds
  • forge install: ds-test
  • build: fix for good
  • l2os: update bindings
  • opnode: add seq nr to l1-info to fix driver bug
  • feat: create opnode/predeploy package
  • opnode: refactor RPC server / config, prototype batch serving
  • feat: enforce size contraints on batch bundles
  • feat: add BundleBuilder helper class
  • fix: typo in l2os config docs
  • feat: add GetBatchBundle method to rollupclient.RollupClient
  • feat: simplify l2os rollupclient init
  • feat: reduce BSS poll interval
  • feat: add sequencer history db
  • feat: add sequencer BSS driver to submit batches
  • feat: add bss configuration
  • feat: add LOG_TERMINAL flag to l2os, use non-global log instance
  • feat: enable standalone bss, disable simple bss
  • feat: remove simple bss
  • feat: add bss to devnet
  • fix: ci build bindings (core-utils: ethsign signature hashing #406)
  • opnode: Avoid busy-waiting while L2 head is behind L1
  • opnode: Fix Incorrect error handling when creating an L2 block (provider: v0.0.1-alpha.13 #391)
  • opnode: Fuzz manual ABI parsing (Fix batch submitter monotonicity #384)
  • fix: DepositFeed.sol link
  • opnode: gossip blocks topic validator and subscriber
  • opnode/l2: ExecutionPayload SSZ encoding/decoding
  • opnode/l2: check payload block hash consistency
  • opnode/p2p,specs: update p2p block gossip validation
  • opnode: refactor node initialization, change l1-head fan out, implement l2 payload driver receiver, setup block signing, update config / cli / e2e
  • opnode/l2,opnode/rollup/driver: process incoming unsafe L2 blocks
  • specs/rollup-node-p2p: fix toc
  • opnode/p2p: compress published messages
  • specs/rollup-node-p2p: clarify hardfork version start
  • opnode/node: fix l1 head notify timeout bug
  • opnode: fix receive p2p payload timeout bug, fix publishing buffer missing reset
  • opnode: fix/improve new loggers
  • opnode: fix p2p block distribution
  • opnode/test: connect peers only after starting p2p application-layer protocols
  • ops,opnode/p2p: fix opnode start up in devnet
  • opnode/l2: use common.Big0 instead of big.NewInt(0), thx mark
  • opnode: Add debug tracer to geth in e2e test (feat: hardhat-deploy #418)
  • Update reference geth entrypoint with variable parameters
  • opnode: fix imports and code newlines style
  • opnode,specs: gossip blocks validation seen cache fixes
  • opnode/rollup/driver: no heuristics in driver, rely more on engine to handle reorgs
  • opnode: tracer to watch node events during testing
  • opnode,specs: clarify gossip params
  • opnode/l2/ssz: fix lousy copy range
  • opnode/rollup/driver/state: fix doc typo
  • Add version RPC (fix: bring the batch submitter last to avoid CI flakiness #432)
  • refactor: new messengers (Pull in example repositories #421)
  • opnode: p2p RPC, fix static-peers
  • StateViz: Visualize rollup state changes (Add More Integration Tests #419)
  • contracts: add backup logic for deposits
  • contracts: add base gas to sent messages
  • contracts: use clearer message encoding
  • contracts: add L1BlockNumber predeploy
  • opnode: p2p rpc client bindings, test update, minor p2p flag update
  • opnode/p2p: set up connection notification before starting host B
  • opnode/p2p: bundle p2p components into p2p node for separate testing
  • opnode/p2p: minor style fix + rename
  • opnode/p2p: add method to get peer info about self
  • Fix SRI on stateviz (test: estimate gas for wETH transfer #440)
  • Fix L2 Output Timestamps (Only package left is watcher #416)
  • opnode: Withdrawal E2E test in go (Implement CI release pipeline #423)
  • Adopt go.work, rename modules to prep for monorepo (perf: do not compile contracts on docker-compose #441)
  • remove git submodules
  • optimistic-specs: monorepo merge, mv into protocol dir
  • bedrock contracts dependencies
  • monorepo merge: fix Go env
  • monorepo merge: move contracts-bedrock into non-Lerna package
  • monorepo merge: bring back CI
  • outline bedrock dirs, rm stale protocol repo files (bedrock: outline repo dirs, rm stale protocol repo files #2562)

trianglesphere and others added 30 commits April 4, 2022 19:20
* opnode: Switch to uint64 in FindL2Heads function

* opnode: Properly initialize state loop

This properly sets the L1 head, L2 Head, and L2 Unsafe Head during
`state.Start()` in normal operation and when the current L1 head
has not reached the L1 genesis.

* opnode: Rename output functions

The old names where not good.
In addition, this standardizes the order of arguements and extends the
returns. The returns are not fully used, but will be.

* opnode: Add sanity check to L1 window in insertEpoch

This make sure that the L1 window starts at the correct block.

* opnode: Split out loop

Now each action occurs in a seperate function. The state loop is
still responsible for sequencing follow-up actions, but is not
responsible for setting state.

* opnode: Better name for batch prepare functions

This name indicates that it provides missing batches.

* opnode: Verify epochs as sequencer

Sequencers now verify epochs and will reorg if they see that verified
epochs do not match what they created.

* opnode: Mute driver test

* opnode: Set L2 Geth forkchoice on reorg

This is required to handle L1 reorgs (rather than just missing
batches).

* opnode: Bump op-geth version

Needed to fix a bug where the L2 geth node was missing the `mint` field
in deposit transactions when returning them over the JSON RPC server.

* opnode: Don't incorrectly advance safehead

There is some L2 block that is possible to fully derive from L1;
however, if it is ahead of the current state's safe head, do not
advance the current state's safehead because the chain has not
been verified up to that point.

* opnode: Don't rebuild L1 Genesis Block ID

Co-authored-by: Diederik Loerakker <proto@protolambda.com>

* opnode: More comments

Co-authored-by: Diederik Loerakker <proto@protolambda.com>

* opnode: Don't cast slice

Co-authored-by: Diederik Loerakker <proto@protolambda.com>

* opnode: PR comments

* opnode: Better error reason in attributesMatch

Include the details of the mismatched fields in addition to what
field it was. Will make diagnosing errors much easier.

Co-authored-by: Diederik Loerakker <proto@protolambda.com>
… field (tx field, not info field) for uniqueness of deposit tx hash on L2
It is convenient for users to be able to deposit funds
directly to L2 by simply doing an ETH send to an address.
The prevents needing an ABI.
ops: Add contract code to Makefile and Dockerfile
I needed the trie contracts over here, so now the whole monorepo
is a submodule of the specs repo. Happy now @norswap?

Why, you ask, did I do this rather than the alternatives available to
me?
1. Copying and pasting is gross.
2. `yarn add` would have installed a smaller dep, but it's also gross.
3. git submodules, while also gross in their own right, is at least
   consistent with how we're currently handling other dependencies, so
   I went with that.
Adds a check to ensure that withdrawal root is included in the
l2 output root.
Adds a check to ensure that the withdrawal message hash is included
  in the mapping of withdrawals in the withdrawer contract
This changes the WithdrawalVerifier to be stateless, and moves all
checks into the OptimismPortal
mslipper and others added 7 commits May 14, 2022 18:07
Known issues:

- There are broken links that `lychee` picks up on. These still need to be updated.
- Slither returns errors, both here and in `optimistic-specs`.
- `go-bip39` was updated to a newer version. The newer version broke a `bss-core` test, which had to be fixed.
- Forge is not compatible with Lerna. As a result, the `contracts-bedrock` package had to be moved out of the `packages` hierarchy.
- The devnet itests don't work because the Go modules aren't on the default branch. We need to decide if we merge to develop, or stay on a feature branch before fixing this.
@changeset-bot
Copy link

changeset-bot bot commented May 16, 2022

⚠️ No Changeset found

Latest commit: 940cfac

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

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

@github-actions github-actions bot added 2-reviewers A-cannon Area: cannon A-ops Area: ops labels May 16, 2022
@mergify mergify bot requested review from cfromknecht and Inphi May 16, 2022 16:28
@mergify
Copy link
Contributor

mergify bot commented May 16, 2022

Hey @mslipper! This PR has merge conflicts. Please fix them before continuing review.

@mergify mergify bot added the conflict label May 16, 2022
@mergify
Copy link
Contributor

mergify bot commented May 16, 2022

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

Copy link
Contributor

@smartcontracts smartcontracts left a comment

Choose a reason for hiding this comment

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

Looks good, couldn't see anything obviously missing

@mergify
Copy link
Contributor

mergify bot commented May 16, 2022

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

@mergify mergify bot merged commit 1b7e41f into develop May 16, 2022
@mergify mergify bot deleted the bedrock branch May 16, 2022 21:43
@mergify
Copy link
Contributor

mergify bot commented May 16, 2022

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

@maurelian maurelian restored the bedrock branch June 8, 2022 12:39
@mergify mergify bot removed the on-merge-train label Jun 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-cannon Area: cannon A-ops Area: ops
Projects
None yet
Development

Successfully merging this pull request may close these issues.