tests: use 'sender' in state tests if present (#28023)

A while back, statetests started coming with sender baked in, which at least 
evmone makes use of. Let's make use of that too, and save some cycles.
This commit is contained in:
Martin Holst Swende 2023-08-29 04:36:10 +02:00 committed by GitHub
parent fe24d22a62
commit b8adb4cb0c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 2 deletions

@ -27,6 +27,7 @@ func (s stTransaction) MarshalJSON() ([]byte, error) {
GasLimit []math.HexOrDecimal64 `json:"gasLimit"` GasLimit []math.HexOrDecimal64 `json:"gasLimit"`
Value []string `json:"value"` Value []string `json:"value"`
PrivateKey hexutil.Bytes `json:"secretKey"` PrivateKey hexutil.Bytes `json:"secretKey"`
Sender *common.Address `json:"sender"`
BlobVersionedHashes []common.Hash `json:"blobVersionedHashes,omitempty"` BlobVersionedHashes []common.Hash `json:"blobVersionedHashes,omitempty"`
BlobGasFeeCap *math.HexOrDecimal256 `json:"maxFeePerBlobGas,omitempty"` BlobGasFeeCap *math.HexOrDecimal256 `json:"maxFeePerBlobGas,omitempty"`
} }
@ -46,6 +47,7 @@ func (s stTransaction) MarshalJSON() ([]byte, error) {
} }
enc.Value = s.Value enc.Value = s.Value
enc.PrivateKey = s.PrivateKey enc.PrivateKey = s.PrivateKey
enc.Sender = s.Sender
enc.BlobVersionedHashes = s.BlobVersionedHashes enc.BlobVersionedHashes = s.BlobVersionedHashes
enc.BlobGasFeeCap = (*math.HexOrDecimal256)(s.BlobGasFeeCap) enc.BlobGasFeeCap = (*math.HexOrDecimal256)(s.BlobGasFeeCap)
return json.Marshal(&enc) return json.Marshal(&enc)
@ -64,6 +66,7 @@ func (s *stTransaction) UnmarshalJSON(input []byte) error {
GasLimit []math.HexOrDecimal64 `json:"gasLimit"` GasLimit []math.HexOrDecimal64 `json:"gasLimit"`
Value []string `json:"value"` Value []string `json:"value"`
PrivateKey *hexutil.Bytes `json:"secretKey"` PrivateKey *hexutil.Bytes `json:"secretKey"`
Sender *common.Address `json:"sender"`
BlobVersionedHashes []common.Hash `json:"blobVersionedHashes,omitempty"` BlobVersionedHashes []common.Hash `json:"blobVersionedHashes,omitempty"`
BlobGasFeeCap *math.HexOrDecimal256 `json:"maxFeePerBlobGas,omitempty"` BlobGasFeeCap *math.HexOrDecimal256 `json:"maxFeePerBlobGas,omitempty"`
} }
@ -104,6 +107,9 @@ func (s *stTransaction) UnmarshalJSON(input []byte) error {
if dec.PrivateKey != nil { if dec.PrivateKey != nil {
s.PrivateKey = *dec.PrivateKey s.PrivateKey = *dec.PrivateKey
} }
if dec.Sender != nil {
s.Sender = dec.Sender
}
if dec.BlobVersionedHashes != nil { if dec.BlobVersionedHashes != nil {
s.BlobVersionedHashes = dec.BlobVersionedHashes s.BlobVersionedHashes = dec.BlobVersionedHashes
} }

@ -115,6 +115,7 @@ type stTransaction struct {
GasLimit []uint64 `json:"gasLimit"` GasLimit []uint64 `json:"gasLimit"`
Value []string `json:"value"` Value []string `json:"value"`
PrivateKey []byte `json:"secretKey"` PrivateKey []byte `json:"secretKey"`
Sender *common.Address `json:"sender"`
BlobVersionedHashes []common.Hash `json:"blobVersionedHashes,omitempty"` BlobVersionedHashes []common.Hash `json:"blobVersionedHashes,omitempty"`
BlobGasFeeCap *big.Int `json:"maxFeePerBlobGas,omitempty"` BlobGasFeeCap *big.Int `json:"maxFeePerBlobGas,omitempty"`
} }
@ -359,9 +360,12 @@ func (t *StateTest) genesis(config *params.ChainConfig) *core.Genesis {
} }
func (tx *stTransaction) toMessage(ps stPostState, baseFee *big.Int) (*core.Message, error) { func (tx *stTransaction) toMessage(ps stPostState, baseFee *big.Int) (*core.Message, error) {
// Derive sender from private key if present.
var from common.Address var from common.Address
if len(tx.PrivateKey) > 0 { // If 'sender' field is present, use that
if tx.Sender != nil {
from = *tx.Sender
} else if len(tx.PrivateKey) > 0 {
// Derive sender from private key if needed.
key, err := crypto.ToECDSA(tx.PrivateKey) key, err := crypto.ToECDSA(tx.PrivateKey)
if err != nil { if err != nil {
return nil, fmt.Errorf("invalid private key: %v", err) return nil, fmt.Errorf("invalid private key: %v", err)