Commit e4b9e3b8 authored by clabby's avatar clabby

Fix challenger absolute prestate type

parent cbb13433
...@@ -159,7 +159,7 @@ func (g *GamePlayer) logGameStatus(ctx context.Context, status types.GameStatus) ...@@ -159,7 +159,7 @@ func (g *GamePlayer) logGameStatus(ctx context.Context, status types.GameStatus)
} }
type PrestateLoader interface { type PrestateLoader interface {
FetchAbsolutePrestateHash(ctx context.Context) ([]byte, error) FetchAbsolutePrestateHash(ctx context.Context) (common.Hash, error)
} }
// ValidateAbsolutePrestate validates the absolute prestate of the fault game. // ValidateAbsolutePrestate validates the absolute prestate of the fault game.
...@@ -173,7 +173,7 @@ func ValidateAbsolutePrestate(ctx context.Context, trace types.TraceProvider, lo ...@@ -173,7 +173,7 @@ func ValidateAbsolutePrestate(ctx context.Context, trace types.TraceProvider, lo
if err != nil { if err != nil {
return fmt.Errorf("failed to get the onchain absolute prestate: %w", err) return fmt.Errorf("failed to get the onchain absolute prestate: %w", err)
} }
if !bytes.Equal(providerPrestateHash, onchainPrestate) { if !bytes.Equal(providerPrestateHash, onchainPrestate[:]) {
return fmt.Errorf("trace provider's absolute prestate does not match onchain absolute prestate") return fmt.Errorf("trace provider's absolute prestate does not match onchain absolute prestate")
} }
return nil return nil
......
...@@ -120,7 +120,7 @@ func TestValidateAbsolutePrestate(t *testing.T) { ...@@ -120,7 +120,7 @@ func TestValidateAbsolutePrestate(t *testing.T) {
prestate := []byte{0x00, 0x01, 0x02, 0x03} prestate := []byte{0x00, 0x01, 0x02, 0x03}
prestateHash := crypto.Keccak256(prestate) prestateHash := crypto.Keccak256(prestate)
mockTraceProvider := newMockTraceProvider(false, prestate) mockTraceProvider := newMockTraceProvider(false, prestate)
mockLoader := newMockPrestateLoader(false, prestateHash) mockLoader := newMockPrestateLoader(false, common.BytesToHash(prestateHash))
err := ValidateAbsolutePrestate(context.Background(), mockTraceProvider, mockLoader) err := ValidateAbsolutePrestate(context.Background(), mockTraceProvider, mockLoader)
require.NoError(t, err) require.NoError(t, err)
}) })
...@@ -128,7 +128,7 @@ func TestValidateAbsolutePrestate(t *testing.T) { ...@@ -128,7 +128,7 @@ func TestValidateAbsolutePrestate(t *testing.T) {
t.Run("TraceProviderErrors", func(t *testing.T) { t.Run("TraceProviderErrors", func(t *testing.T) {
prestate := []byte{0x00, 0x01, 0x02, 0x03} prestate := []byte{0x00, 0x01, 0x02, 0x03}
mockTraceProvider := newMockTraceProvider(true, prestate) mockTraceProvider := newMockTraceProvider(true, prestate)
mockLoader := newMockPrestateLoader(false, prestate) mockLoader := newMockPrestateLoader(false, common.BytesToHash(prestate))
err := ValidateAbsolutePrestate(context.Background(), mockTraceProvider, mockLoader) err := ValidateAbsolutePrestate(context.Background(), mockTraceProvider, mockLoader)
require.ErrorIs(t, err, mockTraceProviderError) require.ErrorIs(t, err, mockTraceProviderError)
}) })
...@@ -136,14 +136,14 @@ func TestValidateAbsolutePrestate(t *testing.T) { ...@@ -136,14 +136,14 @@ func TestValidateAbsolutePrestate(t *testing.T) {
t.Run("LoaderErrors", func(t *testing.T) { t.Run("LoaderErrors", func(t *testing.T) {
prestate := []byte{0x00, 0x01, 0x02, 0x03} prestate := []byte{0x00, 0x01, 0x02, 0x03}
mockTraceProvider := newMockTraceProvider(false, prestate) mockTraceProvider := newMockTraceProvider(false, prestate)
mockLoader := newMockPrestateLoader(true, prestate) mockLoader := newMockPrestateLoader(true, common.BytesToHash(prestate))
err := ValidateAbsolutePrestate(context.Background(), mockTraceProvider, mockLoader) err := ValidateAbsolutePrestate(context.Background(), mockTraceProvider, mockLoader)
require.ErrorIs(t, err, mockLoaderError) require.ErrorIs(t, err, mockLoaderError)
}) })
t.Run("PrestateMismatch", func(t *testing.T) { t.Run("PrestateMismatch", func(t *testing.T) {
mockTraceProvider := newMockTraceProvider(false, []byte{0x00, 0x01, 0x02, 0x03}) mockTraceProvider := newMockTraceProvider(false, []byte{0x00, 0x01, 0x02, 0x03})
mockLoader := newMockPrestateLoader(false, []byte{0x00}) mockLoader := newMockPrestateLoader(false, common.BytesToHash([]byte{0x00}))
err := ValidateAbsolutePrestate(context.Background(), mockTraceProvider, mockLoader) err := ValidateAbsolutePrestate(context.Background(), mockTraceProvider, mockLoader)
require.Error(t, err) require.Error(t, err)
}) })
...@@ -210,20 +210,25 @@ func (m *mockTraceProvider) AbsolutePreState(ctx context.Context) ([]byte, error ...@@ -210,20 +210,25 @@ func (m *mockTraceProvider) AbsolutePreState(ctx context.Context) ([]byte, error
return m.prestate, nil return m.prestate, nil
} }
// StateHash computes the state-hash of the given state, or returns an error if the state is invalid.
func (m *mockTraceProvider) StateHash(ctx context.Context, state []byte) (common.Hash, error) {
panic("not implemented")
}
type mockLoader struct { type mockLoader struct {
prestateError bool prestateError bool
prestate []byte prestate common.Hash
} }
func newMockPrestateLoader(prestateError bool, prestate []byte) *mockLoader { func newMockPrestateLoader(prestateError bool, prestate common.Hash) *mockLoader {
return &mockLoader{ return &mockLoader{
prestateError: prestateError, prestateError: prestateError,
prestate: prestate, prestate: prestate,
} }
} }
func (m *mockLoader) FetchAbsolutePrestateHash(ctx context.Context) ([]byte, error) { func (m *mockLoader) FetchAbsolutePrestateHash(ctx context.Context) (common.Hash, error) {
if m.prestateError { if m.prestateError {
return nil, mockLoaderError return common.Hash{}, mockLoaderError
} }
return m.prestate, nil return m.prestate, nil
} }
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