Commit b232cf41 authored by Mark Tyneway's avatar Mark Tyneway

op-bindings: add test coverage of the L1 fee constants

`TestL1BlockSlots` will ensure that the values in the
committed storage layout matches the values that are
hard coded in `op-geth`. This is important to handle
because the storage layout may accidentally change in the
future. This will make it very obvious is there are
issues with the storage layout changing.
parent 63e3bec9
package predeploys package predeploys
import ( import (
"math/big"
"testing" "testing"
"github.com/ethereum-optimism/optimism/op-bindings/bindings"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/types"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
) )
...@@ -12,3 +15,26 @@ func TestGethAddresses(t *testing.T) { ...@@ -12,3 +15,26 @@ func TestGethAddresses(t *testing.T) {
// we import geth in the monorepo, and do not want to import op-bindings into geth. // we import geth in the monorepo, and do not want to import op-bindings into geth.
require.Equal(t, L1BlockAddr, types.L1BlockAddr) require.Equal(t, L1BlockAddr, types.L1BlockAddr)
} }
// TestL1BlockSlots ensures that the storage layout of the L1Block
// contract matches the hardcoded values in `op-geth`.
func TestL1BlockSlots(t *testing.T) {
layout, err := bindings.GetStorageLayout("L1Block")
require.NoError(t, err)
var l1BaseFeeSlot, overHeadSlot, scalarSlot common.Hash
for _, entry := range layout.Storage {
switch entry.Label {
case "l1FeeOverhead":
overHeadSlot = common.BigToHash(big.NewInt(int64(entry.Slot)))
case "l1FeeScalar":
scalarSlot = common.BigToHash(big.NewInt(int64(entry.Slot)))
case "basefee":
l1BaseFeeSlot = common.BigToHash(big.NewInt(int64(entry.Slot)))
}
}
require.Equal(t, types.OverheadSlot, overHeadSlot)
require.Equal(t, types.ScalarSlot, scalarSlot)
require.Equal(t, types.L1BaseFeeSlot, l1BaseFeeSlot)
}
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