Commit 8c7baa13 authored by Joshua Gutow's avatar Joshua Gutow Committed by GitHub

go: Update contract bindings (#2579)

* Add tools to regenerate bindings

* Generate new bindings

Renames the package type and updates some names.

* op-*: Rename bedrock contracts and update import path
parent 888a0f49
SHELL := /bin/bash SHELL := /bin/bash
CONTRACTS_PATH := "../contracts-bedrock/"
all: bindings deployed all: bindings deployed
bindings: bindings-l1-block-info bindings-optimism-portal bindings-L2ToL1MessagePasser bindings-l2-output-oracle bindings: l1block-bindings l2-to-l1-message-passer-bindings optimism-portal-bindings l2-output-oracle-bindings
deployed: deployed-bin-l1-block-info deployed-bin-optimism-portal deployed-bin-L2ToL1MessagePasser deployed: l1-block-deployed optimism-portal-deployed l2-to-l1-message-passer-deployed
# Deployed bindings are split because they depend on the bin file
# TODO: Can probably do this with recipes
deployed-bin-l1-block-info: bindings-l1-block-info
$(eval deployedBytecode := $(shell cat bin/l1block_deployed.hex))
echo "// Code generated - DO NOT EDIT." > l1block/l1_block_info_deployed.go
echo "// This file is a generated binding and any manual changes will be lost." >> l1block/l1_block_info_deployed.go
echo "package l1block" >> l1block/l1_block_info_deployed.go
echo "var L1blockDeployedBin = \"$(deployedBytecode)\"" >> l1block/l1_block_info_deployed.go
gofmt -s -w l1block/l1_block_info_deployed.go
deployed-bin-optimism-portal: bindings-optimism-portal
$(eval deployedBytecode := $(shell cat bin/portal_deployed.hex))
echo "// Code generated - DO NOT EDIT." > deposit/optimism_portal_deployed.go
echo "// This file is a generated binding and any manual changes will be lost." >> deposit/optimism_portal_deployed.go
echo "package deposit" >> deposit/optimism_portal_deployed.go
echo "var OptimismPortalDeployedBin = \"$(deployedBytecode)\"" >> deposit/optimism_portal_deployed.go
gofmt -s -w deposit/optimism_portal_deployed.go
deployed-bin-L2ToL1MessagePasser: bindings-L2ToL1MessagePasser
$(eval deployedBytecode := $(shell cat bin/l2_to_l1_message_passer.hex))
echo "// Code generated - DO NOT EDIT." > withdrawer/withdrawer_deployed.go
echo "// This file is a generated binding and any manual changes will be lost." >> withdrawer/withdrawer_deployed.go
echo "package withdrawer" >> withdrawer/withdrawer_deployed.go
echo "var WithdrawerDeployedBin = \"$(deployedBytecode)\"" >> withdrawer/withdrawer_deployed.go
gofmt -s -w withdrawer/withdrawer_deployed.go
bindings-l1-block-info: l1-block-deployed: l1block-bindings
$(eval temp := $(shell mktemp -d)) ./gen_deployed_bytecode.sh L1Block bindings
$(eval cwd := $(shell pwd))
mkdir -p bin
cd $(CONTRACTS_PATH); \
forge build \
&& forge inspect L1Block abi > $(temp)/L1Block.abi \
&& forge inspect L1Block bytecode > $(temp)/L1Block.bin \
&& forge inspect L1Block deployedBytecode > $(cwd)/bin/l1block_deployed.hex
abigen \
--abi $(temp)/L1Block.abi \
--bin $(temp)/L1Block.bin \
--pkg l1block \
--type L1Block \
--out ./l1block/l1_block_info_raw.go
bindings-L2ToL1MessagePasser: optimism-portal-deployed: optimism-portal-bindings
$(eval temp := $(shell mktemp -d)) ./gen_deployed_bytecode.sh OptimismPortal bindings
$(eval cwd := $(shell pwd))
mkdir -p bin
cd $(CONTRACTS_PATH); \
forge build \
&& forge inspect L2ToL1MessagePasser abi > $(temp)/Withdrawer.abi \
&& forge inspect L2ToL1MessagePasser bytecode > $(temp)/Withdrawer.bin \
&& forge inspect L2ToL1MessagePasser deployedBytecode > $(cwd)/bin/l2_to_l1_message_passer.hex
abigen \
--abi $(temp)/Withdrawer.abi \
--bin $(temp)/Withdrawer.bin \
--pkg withdrawer \
--type Withdrawer \
--out ./withdrawer/withdrawer_raw.go
l2-to-l1-message-passer-deployed: l2-to-l1-message-passer-bindings
./gen_deployed_bytecode.sh L2ToL1MessagePasser bindings
l1block-bindings:
./gen_bindings.sh L1Block bindings
bindings-optimism-portal: l2-to-l1-message-passer-bindings:
$(eval temp := $(shell mktemp -d)) ./gen_bindings.sh L2ToL1MessagePasser bindings
$(eval cwd := $(shell pwd))
mkdir -p bin
cd $(CONTRACTS_PATH); \
forge build \
&& forge inspect OptimismPortal abi > $(temp)/OptimismPortal.abi \
&& forge inspect OptimismPortal bytecode > $(temp)/OptimismPortal.bin \
&& forge inspect OptimismPortal deployedBytecode > $(cwd)/bin/portal_deployed.hex
abigen \
--abi $(temp)/OptimismPortal.abi \
--bin $(temp)/OptimismPortal.bin \
--pkg deposit \
--type OptimismPortal \
--out ./deposit/deposit_feed_raw.go
optimism-portal-bindings:
./gen_bindings.sh OptimismPortal bindings
l2-output-oracle-bindings:
./gen_bindings.sh L2OutputOracle bindings
bindings-l2-output-oracle:
$(eval temp := $(shell mktemp -d))
$(eval cwd := $(shell pwd))
cd $(CONTRACTS_PATH); \
forge build \
&& forge inspect L2OutputOracle abi > $(temp)/L2OutputOracle.abi \
&& forge inspect L2OutputOracle bytecode > $(temp)/L2OutputOracle.bin \
&& forge inspect L2OutputOracle deployedBytecode > $(cwd)/bin/l2_output_oracle_deployed.hex
abigen \
--abi $(temp)/L2OutputOracle.abi \
--bin $(temp)/L2OutputOracle.bin \
--pkg l2oo \
--type L2OutputOracle \
--out ./l2oo/l2_output_oracle.go
// Code generated - DO NOT EDIT. // Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost. // This file is a generated binding and any manual changes will be lost.
package l1block package bindings
import ( import (
"errors" "errors"
......
// Code generated - DO NOT EDIT. // Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost. // This file is a generated binding and any manual changes will be lost.
package l1block package bindings
var L1blockDeployedBin = "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806364ca23ef1161005b57806364ca23ef146100bc5780638381f58a146100e9578063b80777ea146100fd578063e591b2821461011d57600080fd5b8063042c2f571461008257806309bd5a60146100975780635cf24969146100b3575b600080fd5b61009561009036600461024c565b61015d565b005b6100a060025481565b6040519081526020015b60405180910390f35b6100a060015481565b6003546100d09067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016100aa565b6000546100d09067ffffffffffffffff1681565b6000546100d09068010000000000000000900467ffffffffffffffff1681565b61013873deaddeaddeaddeaddeaddeaddeaddeaddead000181565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100aa565b3373deaddeaddeaddeaddeaddeaddeaddeaddead0001146101aa576040517fce8c104800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805467ffffffffffffffff9687167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090911617680100000000000000009587169590950294909417909355600191909155600255600380547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001691909216179055565b803567ffffffffffffffff8116811461024757600080fd5b919050565b600080600080600060a0868803121561026457600080fd5b61026d8661022f565b945061027b6020870161022f565b935060408601359250606086013591506102976080870161022f565b9050929550929590935056fea164736f6c634300080a000a" var L1BlockDeployedBin = "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806364ca23ef1161005b57806364ca23ef146100bc5780638381f58a146100e9578063b80777ea146100fd578063e591b2821461011d57600080fd5b8063042c2f571461008257806309bd5a60146100975780635cf24969146100b3575b600080fd5b61009561009036600461024c565b61015d565b005b6100a060025481565b6040519081526020015b60405180910390f35b6100a060015481565b6003546100d09067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016100aa565b6000546100d09067ffffffffffffffff1681565b6000546100d09068010000000000000000900467ffffffffffffffff1681565b61013873deaddeaddeaddeaddeaddeaddeaddeaddead000181565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100aa565b3373deaddeaddeaddeaddeaddeaddeaddeaddead0001146101aa576040517fce8c104800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805467ffffffffffffffff9687167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090911617680100000000000000009587169590950294909417909355600191909155600255600380547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001691909216179055565b803567ffffffffffffffff8116811461024757600080fd5b919050565b600080600080600060a0868803121561026457600080fd5b61026d8661022f565b945061027b6020870161022f565b935060408601359250606086013591506102976080870161022f565b9050929550929590935056fea164736f6c634300080a000a"
// Code generated - DO NOT EDIT. // Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost. // This file is a generated binding and any manual changes will be lost.
package l2oo package bindings
import ( import (
"errors" "errors"
......
// Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost.
package bindings
var L2ToL1MessagePasserDeployedBin = "0x6080604052600436106100435760003560e01c806344df8e701461006c57806382e3702d14610081578063affed0e0146100c6578063c2b3e5ac146100ea57600080fd5b366100675761006533620186a0604051806020016040528060008152506100f8565b005b600080fd5b34801561007857600080fd5b506100656101ae565b34801561008d57600080fd5b506100b161009c366004610256565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156100d257600080fd5b506100dc60015481565b6040519081526020016100bd565b6100656100f836600461029e565b600061010a600154338634878761020b565b6000818152602081905260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915554905191925073ffffffffffffffffffffffffffffffffffffffff8616913391907f87bf7b546c8de873abb0db5b579ec131f8d0cf5b14f39933551cf9ced23a6136906101989034908990899061040d565b60405180910390a4505060018054810190555050565b604051479081906101be9061024a565b6040518091039082f09050801580156101db573d6000803e3d6000fd5b505060405181907f7967de617a5ac1cc7eba2d6f37570a0135afa950d8bb77cdd35f0d0b4e85a16f90600090a250565b600086868686868660405160200161022896959493929190610435565b6040516020818303038152906040528051906020012090509695505050505050565b60088061048d83390190565b60006020828403121561026857600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000606084860312156102b357600080fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146102d757600080fd5b925060208401359150604084013567ffffffffffffffff808211156102fb57600080fd5b818601915086601f83011261030f57600080fd5b8135818111156103215761032161026f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156103675761036761026f565b8160405282815289602084870101111561038057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b818110156103c8576020818501810151868301820152016103ac565b818111156103da576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b83815282602082015260606040820152600061042c60608301846103a2565b95945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a083015261048060c08301846103a2565b9897505050505050505056fe608060405230fffea164736f6c634300080a000a"
// Code generated - DO NOT EDIT. // Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost. // This file is a generated binding and any manual changes will be lost.
package deposit package bindings
import ( import (
"errors" "errors"
......
#/bin/bash
set -eu
CONTRACTS_PATH="../contracts-bedrock/"
if [ "$#" -ne 2 ]; then
echo "This script takes 2 arguments - CONTRACT_NAME PACKAGE"
exit 1
fi
TYPE=$1
PACKAGE=$2
# Convert to lower case to respect golang package naming conventions
TYPE_LOWER=$(echo ${TYPE} | tr '[:upper:]' '[:lower:]')
FILENAME="${TYPE_LOWER}_deployed.go"
mkdir -p bin
TEMP=$(mktemp -d)
CWD=$(pwd)
# Build contracts
cd ${CONTRACTS_PATH}
forge build
forge inspect ${TYPE} abi > ${TEMP}/${TYPE}.abi
forge inspect ${TYPE} bytecode > ${TEMP}/${TYPE}.bin
forge inspect ${TYPE} deployedBytecode > ${CWD}/bin/${TYPE_LOWER}_deployed.hex
# Run ABIGEN
cd ${CWD}
abigen \
--abi ${TEMP}/${TYPE}.abi \
--bin ${TEMP}/${TYPE}.bin \
--pkg ${PACKAGE} \
--type ${TYPE} \
--out ./${PACKAGE}/${TYPE_LOWER}.go
#/bin/bash
set -eu
if [ "$#" -ne 2 ]; then
echo "This script takes 2 arguments - CONTRACT_NAME PACKAGE"
exit 1
fi
TYPE=$1
PACKAGE=$2
# Convert to lower case to respect golang package naming conventions
TYPE_LOWER=$(echo ${TYPE} | tr '[:upper:]' '[:lower:]')
FILENAME="${TYPE_LOWER}_deployed.go"
FILE="${PACKAGE}/${FILENAME}"
DEPLOYED_BYTECODE=$(cat "bin/${TYPE_LOWER}_deployed.hex")
echo "// Code generated - DO NOT EDIT." > ${FILE}
echo "// This file is a generated binding and any manual changes will be lost." >> ${FILE}
echo "package ${PACKAGE}" >> ${FILE}
echo "var ${TYPE}DeployedBin = \"${DEPLOYED_BYTECODE}\"" >> ${FILE}
gofmt -s -w ${FILE}
// Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost.
package withdrawer
var WithdrawerDeployedBin = "0x6080604052600436106100435760003560e01c806344df8e701461006c57806382e3702d14610081578063affed0e0146100c6578063c2b3e5ac146100ea57600080fd5b366100675761006533620186a0604051806020016040528060008152506100f8565b005b600080fd5b34801561007857600080fd5b506100656101ae565b34801561008d57600080fd5b506100b161009c366004610256565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156100d257600080fd5b506100dc60015481565b6040519081526020016100bd565b6100656100f836600461029e565b600061010a600154338634878761020b565b6000818152602081905260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915554905191925073ffffffffffffffffffffffffffffffffffffffff8616913391907f87bf7b546c8de873abb0db5b579ec131f8d0cf5b14f39933551cf9ced23a6136906101989034908990899061040d565b60405180910390a4505060018054810190555050565b604051479081906101be9061024a565b6040518091039082f09050801580156101db573d6000803e3d6000fd5b505060405181907f7967de617a5ac1cc7eba2d6f37570a0135afa950d8bb77cdd35f0d0b4e85a16f90600090a250565b600086868686868660405160200161022896959493929190610435565b6040516020818303038152906040528051906020012090509695505050505050565b60088061048d83390190565b60006020828403121561026857600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000606084860312156102b357600080fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146102d757600080fd5b925060208401359150604084013567ffffffffffffffff808211156102fb57600080fd5b818601915086601f83011261030f57600080fd5b8135818111156103215761032161026f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156103675761036761026f565b8160405282815289602084870101111561038057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b818110156103c8576020818501810151868301820152016103ac565b818111156103da576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b83815282602082015260606040820152600061042c60608301846103a2565b95945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a083015261048060c08301846103a2565b9897505050505050505056fe608060405230fffea164736f6c634300080a000a"
...@@ -10,10 +10,7 @@ import ( ...@@ -10,10 +10,7 @@ import (
"time" "time"
bss "github.com/ethereum-optimism/optimism/op-batcher" bss "github.com/ethereum-optimism/optimism/op-batcher"
"github.com/ethereum-optimism/optimism/op-bindings/deposit" "github.com/ethereum-optimism/optimism/op-bindings/bindings"
"github.com/ethereum-optimism/optimism/op-bindings/l1block"
"github.com/ethereum-optimism/optimism/op-bindings/l2oo"
"github.com/ethereum-optimism/optimism/op-bindings/withdrawer"
rollupNode "github.com/ethereum-optimism/optimism/op-node/node" rollupNode "github.com/ethereum-optimism/optimism/op-node/node"
"github.com/ethereum-optimism/optimism/op-node/p2p" "github.com/ethereum-optimism/optimism/op-node/p2p"
"github.com/ethereum-optimism/optimism/op-node/predeploy" "github.com/ethereum-optimism/optimism/op-node/predeploy"
...@@ -233,8 +230,8 @@ func (cfg SystemConfig) start() (*System, error) { ...@@ -233,8 +230,8 @@ func (cfg SystemConfig) start() (*System, error) {
l2Alloc[addr] = core.GenesisAccount{Balance: balance} l2Alloc[addr] = core.GenesisAccount{Balance: balance}
} }
l2Alloc[cfg.L1InfoPredeployAddress] = core.GenesisAccount{Code: common.FromHex(l1block.L1blockDeployedBin), Balance: common.Big0} l2Alloc[cfg.L1InfoPredeployAddress] = core.GenesisAccount{Code: common.FromHex(bindings.L1BlockDeployedBin), Balance: common.Big0}
l2Alloc[predeploy.WithdrawalContractAddress] = core.GenesisAccount{Code: common.FromHex(withdrawer.WithdrawerDeployedBin), Balance: common.Big0} l2Alloc[predeploy.WithdrawalContractAddress] = core.GenesisAccount{Code: common.FromHex(bindings.L2ToL1MessagePasserDeployedBin), Balance: common.Big0}
genesisTimestamp := uint64(time.Now().Unix()) genesisTimestamp := uint64(time.Now().Unix())
...@@ -383,7 +380,7 @@ func (cfg SystemConfig) start() (*System, error) { ...@@ -383,7 +380,7 @@ func (cfg SystemConfig) start() (*System, error) {
} }
// Deploy contracts // Deploy contracts
sys.L2OOContractAddr, _, _, err = l2oo.DeployL2OutputOracle( sys.L2OOContractAddr, _, _, err = bindings.DeployL2OutputOracle(
opts, opts,
l1Client, l1Client,
sys.cfg.L2OOCfg.SubmissionFrequency, sys.cfg.L2OOCfg.SubmissionFrequency,
...@@ -398,7 +395,7 @@ func (cfg SystemConfig) start() (*System, error) { ...@@ -398,7 +395,7 @@ func (cfg SystemConfig) start() (*System, error) {
return nil, err return nil, err
} }
var tx *types.Transaction var tx *types.Transaction
sys.DepositContractAddr, tx, _, err = deposit.DeployOptimismPortal( sys.DepositContractAddr, tx, _, err = bindings.DeployOptimismPortal(
opts, opts,
l1Client, l1Client,
sys.cfg.DepositCFG.L2Oracle, sys.cfg.DepositCFG.L2Oracle,
......
...@@ -8,10 +8,7 @@ import ( ...@@ -8,10 +8,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/ethereum-optimism/optimism/op-bindings/deposit" "github.com/ethereum-optimism/optimism/op-bindings/bindings"
"github.com/ethereum-optimism/optimism/op-bindings/l1block"
"github.com/ethereum-optimism/optimism/op-bindings/l2oo"
"github.com/ethereum-optimism/optimism/op-bindings/withdrawer"
"github.com/ethereum-optimism/optimism/op-node/l2" "github.com/ethereum-optimism/optimism/op-node/l2"
"github.com/ethereum-optimism/optimism/op-node/node" "github.com/ethereum-optimism/optimism/op-node/node"
rollupNode "github.com/ethereum-optimism/optimism/op-node/node" rollupNode "github.com/ethereum-optimism/optimism/op-node/node"
...@@ -152,7 +149,7 @@ func TestL2OutputSubmitter(t *testing.T) { ...@@ -152,7 +149,7 @@ func TestL2OutputSubmitter(t *testing.T) {
rollupClient := rollupclient.NewRollupClient(rollupRPCClient) rollupClient := rollupclient.NewRollupClient(rollupRPCClient)
// StateRootOracle is already deployed // StateRootOracle is already deployed
l2OutputOracle, err := l2oo.NewL2OutputOracleCaller(sys.L2OOContractAddr, l1Client) l2OutputOracle, err := bindings.NewL2OutputOracleCaller(sys.L2OOContractAddr, l1Client)
require.Nil(t, err) require.Nil(t, err)
initialSroTimestamp, err := l2OutputOracle.LatestBlockTimestamp(&bind.CallOpts{}) initialSroTimestamp, err := l2OutputOracle.LatestBlockTimestamp(&bind.CallOpts{})
...@@ -239,7 +236,7 @@ func TestSystemE2E(t *testing.T) { ...@@ -239,7 +236,7 @@ func TestSystemE2E(t *testing.T) {
fromAddr := common.HexToAddress("0x30ec912c5b1d14aa6d1cb9aa7a6682415c4f7eb0") fromAddr := common.HexToAddress("0x30ec912c5b1d14aa6d1cb9aa7a6682415c4f7eb0")
// Find deposit contract // Find deposit contract
depositContract, err := deposit.NewOptimismPortal(sys.DepositContractAddr, l1Client) depositContract, err := bindings.NewOptimismPortal(sys.DepositContractAddr, l1Client)
require.Nil(t, err) require.Nil(t, err)
l1Node := sys.nodes["l1"] l1Node := sys.nodes["l1"]
...@@ -322,7 +319,7 @@ func TestMintOnRevertedDeposit(t *testing.T) { ...@@ -322,7 +319,7 @@ func TestMintOnRevertedDeposit(t *testing.T) {
l2Verif := sys.Clients["verifier"] l2Verif := sys.Clients["verifier"]
// Find deposit contract // Find deposit contract
depositContract, err := deposit.NewOptimismPortal(sys.DepositContractAddr, l1Client) depositContract, err := bindings.NewOptimismPortal(sys.DepositContractAddr, l1Client)
require.Nil(t, err) require.Nil(t, err)
l1Node := sys.nodes["l1"] l1Node := sys.nodes["l1"]
...@@ -442,7 +439,7 @@ func TestMissingBatchE2E(t *testing.T) { ...@@ -442,7 +439,7 @@ func TestMissingBatchE2E(t *testing.T) {
require.NotEqual(t, block.Hash(), receipt.BlockHash, "L2 Sequencer did not reorg out transaction on it's safe chain") require.NotEqual(t, block.Hash(), receipt.BlockHash, "L2 Sequencer did not reorg out transaction on it's safe chain")
} }
func L1InfoFromState(ctx context.Context, contract *l1block.L1Block, l2Number *big.Int) (derive.L1BlockInfo, error) { func L1InfoFromState(ctx context.Context, contract *bindings.L1Block, l2Number *big.Int) (derive.L1BlockInfo, error) {
var err error var err error
var out derive.L1BlockInfo var out derive.L1BlockInfo
opts := bind.CallOpts{ opts := bind.CallOpts{
...@@ -576,16 +573,16 @@ func TestL1InfoContract(t *testing.T) { ...@@ -576,16 +573,16 @@ func TestL1InfoContract(t *testing.T) {
endSeqBlock, err := waitForBlock(endSeqBlockNumber, l2Seq, time.Minute) endSeqBlock, err := waitForBlock(endSeqBlockNumber, l2Seq, time.Minute)
require.Nil(t, err) require.Nil(t, err)
seqL1Info, err := l1block.NewL1Block(cfg.L1InfoPredeployAddress, l2Seq) seqL1Info, err := bindings.NewL1Block(cfg.L1InfoPredeployAddress, l2Seq)
require.Nil(t, err) require.Nil(t, err)
verifL1Info, err := l1block.NewL1Block(cfg.L1InfoPredeployAddress, l2Verif) verifL1Info, err := bindings.NewL1Block(cfg.L1InfoPredeployAddress, l2Verif)
require.Nil(t, err) require.Nil(t, err)
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute) ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute)
defer cancel() defer cancel()
fillInfoLists := func(start *types.Block, contract *l1block.L1Block, client *ethclient.Client) ([]derive.L1BlockInfo, []derive.L1BlockInfo) { fillInfoLists := func(start *types.Block, contract *bindings.L1Block, client *ethclient.Client) ([]derive.L1BlockInfo, []derive.L1BlockInfo) {
var txList, stateList []derive.L1BlockInfo var txList, stateList []derive.L1BlockInfo
for b := start; ; { for b := start; ; {
var infoFromTx derive.L1BlockInfo var infoFromTx derive.L1BlockInfo
...@@ -685,7 +682,7 @@ func TestWithdrawals(t *testing.T) { ...@@ -685,7 +682,7 @@ func TestWithdrawals(t *testing.T) {
fromAddr := crypto.PubkeyToAddress(ethPrivKey.PublicKey) fromAddr := crypto.PubkeyToAddress(ethPrivKey.PublicKey)
// Find deposit contract // Find deposit contract
depositContract, err := deposit.NewOptimismPortal(sys.DepositContractAddr, l1Client) depositContract, err := bindings.NewOptimismPortal(sys.DepositContractAddr, l1Client)
require.Nil(t, err) require.Nil(t, err)
// Create L1 signer // Create L1 signer
...@@ -708,7 +705,7 @@ func TestWithdrawals(t *testing.T) { ...@@ -708,7 +705,7 @@ func TestWithdrawals(t *testing.T) {
require.Nil(t, err, "Waiting for deposit tx on L1") require.Nil(t, err, "Waiting for deposit tx on L1")
// Bind L2 Withdrawer Contract // Bind L2 Withdrawer Contract
l2withdrawer, err := withdrawer.NewWithdrawer(predeploy.WithdrawalContractAddress, l2Seq) l2withdrawer, err := bindings.NewL2ToL1MessagePasser(predeploy.WithdrawalContractAddress, l2Seq)
require.Nil(t, err, "binding withdrawer on L2") require.Nil(t, err, "binding withdrawer on L2")
// Wait for deposit to arrive // Wait for deposit to arrive
...@@ -771,7 +768,7 @@ func TestWithdrawals(t *testing.T) { ...@@ -771,7 +768,7 @@ func TestWithdrawals(t *testing.T) {
require.Nil(t, err) require.Nil(t, err)
// Wait for finalization and then create the Finalized Withdrawal Transaction // Wait for finalization and then create the Finalized Withdrawal Transaction
l2OutputOracle, err := l2oo.NewL2OutputOracleCaller(sys.L2OOContractAddr, l1Client) l2OutputOracle, err := bindings.NewL2OutputOracleCaller(sys.L2OOContractAddr, l1Client)
require.Nil(t, err) require.Nil(t, err)
ctx, cancel = context.WithTimeout(context.Background(), 10*time.Duration(cfg.L1BlockTime)*time.Second) ctx, cancel = context.WithTimeout(context.Background(), 10*time.Duration(cfg.L1BlockTime)*time.Second)
...@@ -797,7 +794,7 @@ func TestWithdrawals(t *testing.T) { ...@@ -797,7 +794,7 @@ func TestWithdrawals(t *testing.T) {
params, err := withdrawals.FinalizeWithdrawalParameters(context.Background(), l2client, tx.Hash(), header) params, err := withdrawals.FinalizeWithdrawalParameters(context.Background(), l2client, tx.Hash(), header)
require.Nil(t, err) require.Nil(t, err)
portal, err := deposit.NewOptimismPortal(sys.DepositContractAddr, l1Client) portal, err := bindings.NewOptimismPortal(sys.DepositContractAddr, l1Client)
require.Nil(t, err) require.Nil(t, err)
opts.Value = nil opts.Value = nil
......
...@@ -5,8 +5,7 @@ import ( ...@@ -5,8 +5,7 @@ import (
"math/big" "math/big"
"testing" "testing"
"github.com/ethereum-optimism/optimism/op-bindings/deposit" "github.com/ethereum-optimism/optimism/op-bindings/bindings"
"github.com/ethereum-optimism/optimism/op-bindings/l1block"
"github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/rawdb"
...@@ -22,8 +21,8 @@ var ( ...@@ -22,8 +21,8 @@ var (
addr = common.Address{0x42, 0xff} addr = common.Address{0x42, 0xff}
opts, _ = bind.NewKeyedTransactorWithChainID(pk, common.Big1) opts, _ = bind.NewKeyedTransactorWithChainID(pk, common.Big1)
from = crypto.PubkeyToAddress(pk.PublicKey) from = crypto.PubkeyToAddress(pk.PublicKey)
portalContract, _ = deposit.NewOptimismPortal(addr, nil) portalContract, _ = bindings.NewOptimismPortal(addr, nil)
l1BlockInfoContract, _ = l1block.NewL1Block(addr, nil) l1BlockInfoContract, _ = bindings.NewL1Block(addr, nil)
) )
func cap_byte_slice(b []byte, c int) []byte { func cap_byte_slice(b []byte, c int) []byte {
...@@ -174,7 +173,7 @@ func FuzzUnmarshallLogEvent(f *testing.F) { ...@@ -174,7 +173,7 @@ func FuzzUnmarshallLogEvent(f *testing.F) {
t.Fatal(err) t.Fatal(err)
} }
state.SetBalance(from, BytesToBigInt([]byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff})) state.SetBalance(from, BytesToBigInt([]byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}))
state.SetCode(addr, common.FromHex(deposit.OptimismPortalDeployedBin)) state.SetCode(addr, common.FromHex(bindings.OptimismPortalDeployedBin))
_, err = state.Commit(false) _, err = state.Commit(false)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
...@@ -208,7 +207,7 @@ func FuzzUnmarshallLogEvent(f *testing.F) { ...@@ -208,7 +207,7 @@ func FuzzUnmarshallLogEvent(f *testing.F) {
t.Fatalf("Could not unmarshal log that was emitted by the deposit contract: %v", err) t.Fatalf("Could not unmarshal log that was emitted by the deposit contract: %v", err)
} }
reconstructed := &deposit.OptimismPortalTransactionDeposited{ reconstructed := &bindings.OptimismPortalTransactionDeposited{
From: dep.From, From: dep.From,
Value: dep.Value, Value: dep.Value,
GasLimit: dep.Gas, GasLimit: dep.Gas,
...@@ -229,7 +228,7 @@ func FuzzUnmarshallLogEvent(f *testing.F) { ...@@ -229,7 +228,7 @@ func FuzzUnmarshallLogEvent(f *testing.F) {
t.Fatalf("The deposit tx did not match. tx: %v. actual: %v", reconstructed, depositEvent) t.Fatalf("The deposit tx did not match. tx: %v. actual: %v", reconstructed, depositEvent)
} }
inputArgs := &deposit.OptimismPortalTransactionDeposited{ inputArgs := &bindings.OptimismPortalTransactionDeposited{
From: from, From: from,
To: to, To: to,
Mint: mint, Mint: mint,
......
...@@ -7,9 +7,7 @@ import ( ...@@ -7,9 +7,7 @@ import (
"math/big" "math/big"
"time" "time"
"github.com/ethereum-optimism/optimism/op-bindings/deposit" "github.com/ethereum-optimism/optimism/op-bindings/bindings"
"github.com/ethereum-optimism/optimism/op-bindings/l2oo"
"github.com/ethereum-optimism/optimism/op-bindings/withdrawer"
"github.com/ethereum-optimism/optimism/op-node/predeploy" "github.com/ethereum-optimism/optimism/op-node/predeploy"
"github.com/ethereum/go-ethereum/accounts/abi" "github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/accounts/abi/bind"
...@@ -30,7 +28,7 @@ func WaitForFinalizationPeriod(ctx context.Context, client *ethclient.Client, po ...@@ -30,7 +28,7 @@ func WaitForFinalizationPeriod(ctx context.Context, client *ethclient.Client, po
opts := &bind.CallOpts{Context: ctx} opts := &bind.CallOpts{Context: ctx}
timestampBig := new(big.Int).SetUint64(timestamp) timestampBig := new(big.Int).SetUint64(timestamp)
portal, err := deposit.NewOptimismPortalCaller(portalAddr, client) portal, err := bindings.NewOptimismPortalCaller(portalAddr, client)
if err != nil { if err != nil {
return 0, err return 0, err
} }
...@@ -38,7 +36,7 @@ func WaitForFinalizationPeriod(ctx context.Context, client *ethclient.Client, po ...@@ -38,7 +36,7 @@ func WaitForFinalizationPeriod(ctx context.Context, client *ethclient.Client, po
if err != nil { if err != nil {
return 0, err return 0, err
} }
l2OO, err := l2oo.NewL2OutputOracleCaller(l2OOAddress, client) l2OO, err := bindings.NewL2OutputOracleCaller(l2OOAddress, client)
if err != nil { if err != nil {
return 0, err return 0, err
} }
...@@ -142,7 +140,7 @@ type FinalizedWithdrawalParameters struct { ...@@ -142,7 +140,7 @@ type FinalizedWithdrawalParameters struct {
GasLimit *big.Int GasLimit *big.Int
Timestamp *big.Int Timestamp *big.Int
Data []byte Data []byte
OutputRootProof deposit.WithdrawalVerifierOutputRootProof OutputRootProof bindings.WithdrawalVerifierOutputRootProof
WithdrawalProof []byte // RLP Encoded list of trie nodes to prove L2 storage WithdrawalProof []byte // RLP Encoded list of trie nodes to prove L2 storage
} }
...@@ -198,7 +196,7 @@ func FinalizeWithdrawalParameters(ctx context.Context, l2client ProofClient, txH ...@@ -198,7 +196,7 @@ func FinalizeWithdrawalParameters(ctx context.Context, l2client ProofClient, txH
GasLimit: ev.GasLimit, GasLimit: ev.GasLimit,
Timestamp: new(big.Int).SetUint64(header.Time), Timestamp: new(big.Int).SetUint64(header.Time),
Data: ev.Data, Data: ev.Data,
OutputRootProof: deposit.WithdrawalVerifierOutputRootProof{ OutputRootProof: bindings.WithdrawalVerifierOutputRootProof{
Version: [32]byte{}, // Empty for version 1 Version: [32]byte{}, // Empty for version 1
StateRoot: header.Root, StateRoot: header.Root,
WithdrawerStorageRoot: p.StorageHash, WithdrawerStorageRoot: p.StorageHash,
...@@ -220,7 +218,7 @@ var ( ...@@ -220,7 +218,7 @@ var (
// - I don't like having to use the ABI Generated struct // - I don't like having to use the ABI Generated struct
// - There should be a better way to run the ABI encoding // - There should be a better way to run the ABI encoding
// - These needs to be fuzzed against the solidity // - These needs to be fuzzed against the solidity
func WithdrawalHash(ev *withdrawer.WithdrawerWithdrawalInitiated) (common.Hash, error) { func WithdrawalHash(ev *bindings.L2ToL1MessagePasserWithdrawalInitiated) (common.Hash, error) {
// abi.encode(nonce, msg.sender, _target, msg.value, _gasLimit, _data) // abi.encode(nonce, msg.sender, _target, msg.value, _gasLimit, _data)
args := abi.Arguments{ args := abi.Arguments{
{Name: "nonce", Type: Uint256Type}, {Name: "nonce", Type: Uint256Type},
...@@ -238,8 +236,8 @@ func WithdrawalHash(ev *withdrawer.WithdrawerWithdrawalInitiated) (common.Hash, ...@@ -238,8 +236,8 @@ func WithdrawalHash(ev *withdrawer.WithdrawerWithdrawalInitiated) (common.Hash,
} }
// ParseWithdrawalInitiated parses // ParseWithdrawalInitiated parses
func ParseWithdrawalInitiated(receipt *types.Receipt) (*withdrawer.WithdrawerWithdrawalInitiated, error) { func ParseWithdrawalInitiated(receipt *types.Receipt) (*bindings.L2ToL1MessagePasserWithdrawalInitiated, error) {
contract, err := withdrawer.NewWithdrawer(common.Address{}, nil) contract, err := bindings.NewL2ToL1MessagePasser(common.Address{}, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
......
...@@ -7,7 +7,7 @@ import ( ...@@ -7,7 +7,7 @@ import (
"math/big" "math/big"
"strings" "strings"
"github.com/ethereum-optimism/optimism/op-bindings/l2oo" "github.com/ethereum-optimism/optimism/op-bindings/bindings"
"github.com/ethereum-optimism/optimism/op-node/l2" "github.com/ethereum-optimism/optimism/op-node/l2"
"github.com/ethereum-optimism/optimism/op-proposer/rollupclient" "github.com/ethereum-optimism/optimism/op-proposer/rollupclient"
"github.com/ethereum/go-ethereum/accounts/abi" "github.com/ethereum/go-ethereum/accounts/abi"
...@@ -35,14 +35,14 @@ type Config struct { ...@@ -35,14 +35,14 @@ type Config struct {
type Driver struct { type Driver struct {
cfg Config cfg Config
l2ooContract *l2oo.L2OutputOracle l2ooContract *bindings.L2OutputOracle
rawL2ooContract *bind.BoundContract rawL2ooContract *bind.BoundContract
walletAddr common.Address walletAddr common.Address
l log.Logger l log.Logger
} }
func NewDriver(cfg Config) (*Driver, error) { func NewDriver(cfg Config) (*Driver, error) {
l2ooContract, err := l2oo.NewL2OutputOracle( l2ooContract, err := bindings.NewL2OutputOracle(
cfg.L2OOAddr, cfg.L1Client, cfg.L2OOAddr, cfg.L1Client,
) )
if err != nil { if err != nil {
...@@ -50,7 +50,7 @@ func NewDriver(cfg Config) (*Driver, error) { ...@@ -50,7 +50,7 @@ func NewDriver(cfg Config) (*Driver, error) {
} }
parsed, err := abi.JSON(strings.NewReader( parsed, err := abi.JSON(strings.NewReader(
l2oo.L2OutputOracleMetaData.ABI, bindings.L2OutputOracleMetaData.ABI,
)) ))
if err != nil { if err != nil {
return nil, err return nil, err
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment