• Matthew Slipper's avatar
    Add support for pre-existing OPSM (#12099) · 06f1406e
    Matthew Slipper authored
    * Add support for pre-existing OPSM
    
    This PR adds support for deploying OP Chains against an existing OPSM deployment. It adds a new `OPSMAddress` field to the intent to hold the address of the OPSM. When specified, the `ContractsRelease` field is ignored. In the future, this field will be pulled from the Superchain Registry.
    
    Since the Go Forge tooling doesn't support forking yet, the deployment is performed using a raw call to `eth_sendRawTransaction`. Data about the Superchain deployments is pulled from the OPSM itself via `eth_call`. To expose the deployment output following the Superchain deployment, I updated the `Deployed` event to emit the ABI-encoded bytes of the `DeployOutput` struct to avoid stack-too-deep errors. This isn't ideal, but at least it gets me all of the fields I need in a log event without more invasive changes.
    
    * chore: add version identifer to Deployed event
    
    * chore: emit msg.sender in Deployed event
    
    * Fix merge issues
    
    * test: fix specs test
    
    * semver-lock
    
    * code review updates
    
    ---------
    Co-authored-by: default avatarMatt Solomon <matt@mattsolomon.dev>
    06f1406e
init.go 3.35 KB