mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-18 09:53:48 +00:00
fix error code
This commit is contained in:
parent
0afc3dde89
commit
767801ac69
2 changed files with 23 additions and 12 deletions
|
|
@ -265,18 +265,6 @@ func ExecutableDataToBlockNoHash(data ExecutableData, versionedHashes []common.H
|
||||||
|
|
||||||
var requestsHash *common.Hash
|
var requestsHash *common.Hash
|
||||||
if requests != nil {
|
if requests != nil {
|
||||||
var last byte
|
|
||||||
for _, req := range requests {
|
|
||||||
// No empty requests.
|
|
||||||
if len(req) < 2 {
|
|
||||||
return nil, fmt.Errorf("empty request: %v", req)
|
|
||||||
}
|
|
||||||
// Check that requests are ordered by their type.
|
|
||||||
if req[0] < last {
|
|
||||||
return nil, fmt.Errorf("invalid request order: %v", req)
|
|
||||||
}
|
|
||||||
last = req[0]
|
|
||||||
}
|
|
||||||
h := types.CalcRequestsHash(requests)
|
h := types.CalcRequestsHash(requests)
|
||||||
requestsHash = &h
|
requestsHash = &h
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -638,6 +638,9 @@ func (api *ConsensusAPI) NewPayloadV4(params engine.ExecutableData, versionedHas
|
||||||
return engine.PayloadStatusV1{Status: engine.INVALID}, engine.UnsupportedFork.With(errors.New("newPayloadV4 must only be called for prague payloads"))
|
return engine.PayloadStatusV1{Status: engine.INVALID}, engine.UnsupportedFork.With(errors.New("newPayloadV4 must only be called for prague payloads"))
|
||||||
}
|
}
|
||||||
requests := convertRequests(executionRequests)
|
requests := convertRequests(executionRequests)
|
||||||
|
if err := validateRequests(requests); err != nil {
|
||||||
|
return engine.PayloadStatusV1{Status: engine.INVALID}, engine.InvalidParams.With(err)
|
||||||
|
}
|
||||||
return api.newPayload(params, versionedHashes, beaconRoot, requests, false)
|
return api.newPayload(params, versionedHashes, beaconRoot, requests, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -727,6 +730,9 @@ func (api *ConsensusAPI) NewPayloadWithWitnessV4(params engine.ExecutableData, v
|
||||||
return engine.PayloadStatusV1{Status: engine.INVALID}, engine.UnsupportedFork.With(errors.New("newPayloadWithWitnessV4 must only be called for prague payloads"))
|
return engine.PayloadStatusV1{Status: engine.INVALID}, engine.UnsupportedFork.With(errors.New("newPayloadWithWitnessV4 must only be called for prague payloads"))
|
||||||
}
|
}
|
||||||
requests := convertRequests(executionRequests)
|
requests := convertRequests(executionRequests)
|
||||||
|
if err := validateRequests(requests); err != nil {
|
||||||
|
return engine.PayloadStatusV1{Status: engine.INVALID}, engine.InvalidParams.With(err)
|
||||||
|
}
|
||||||
return api.newPayload(params, versionedHashes, beaconRoot, requests, true)
|
return api.newPayload(params, versionedHashes, beaconRoot, requests, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1287,3 +1293,20 @@ func convertRequests(hex []hexutil.Bytes) [][]byte {
|
||||||
}
|
}
|
||||||
return req
|
return req
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// validateRequests checks that requests are ordered by their type and are not empty.
|
||||||
|
func validateRequests(requests [][]byte) error {
|
||||||
|
var last byte
|
||||||
|
for _, req := range requests {
|
||||||
|
// No empty requests.
|
||||||
|
if len(req) < 2 {
|
||||||
|
return fmt.Errorf("empty request: %v", req)
|
||||||
|
}
|
||||||
|
// Check that requests are ordered by their type.
|
||||||
|
if req[0] < last {
|
||||||
|
return fmt.Errorf("invalid request order: %v", req)
|
||||||
|
}
|
||||||
|
last = req[0]
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue