mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-23 05:06:43 +00:00
use base types for simulate result struct
This commit is contained in:
parent
ab4049d119
commit
e16270055a
3 changed files with 169 additions and 10 deletions
|
|
@ -853,13 +853,21 @@ func (s SimulateBlock) MarshalJSON() ([]byte, error) {
|
|||
})
|
||||
}
|
||||
|
||||
//go:generate go run github.com/fjl/gencodec -type SimulateCallResult -field-override simulateCallResultMarshaling -out gen_simulate_call_result.go
|
||||
|
||||
// SimulateCallResult is the result of a simulated call.
|
||||
type SimulateCallResult struct {
|
||||
ReturnValue hexutil.Bytes `json:"returnData"`
|
||||
Logs []*types.Log `json:"logs"`
|
||||
GasUsed hexutil.Uint64 `json:"gasUsed"`
|
||||
Status hexutil.Uint64 `json:"status"`
|
||||
Error *CallError `json:"error,omitempty"`
|
||||
ReturnValue []byte `json:"returnData"`
|
||||
Logs []*types.Log `json:"logs"`
|
||||
GasUsed uint64 `json:"gasUsed"`
|
||||
Status uint64 `json:"status"`
|
||||
Error *CallError `json:"error,omitempty"`
|
||||
}
|
||||
|
||||
type simulateCallResultMarshaling struct {
|
||||
ReturnValue hexutil.Bytes
|
||||
GasUsed hexutil.Uint64
|
||||
Status hexutil.Uint64
|
||||
}
|
||||
|
||||
// CallError represents an error from a simulated call.
|
||||
|
|
@ -869,18 +877,28 @@ type CallError struct {
|
|||
Data string `json:"data,omitempty"`
|
||||
}
|
||||
|
||||
//go:generate go run github.com/fjl/gencodec -type SimulateBlockResult -field-override simulateBlockResultMarshaling -out gen_simulate_block_result.go
|
||||
|
||||
// SimulateBlockResult represents the result of a simulated block.
|
||||
type SimulateBlockResult struct {
|
||||
Number hexutil.Uint64 `json:"number"`
|
||||
Number uint64 `json:"number"`
|
||||
Hash common.Hash `json:"hash"`
|
||||
Timestamp hexutil.Uint64 `json:"timestamp"`
|
||||
GasLimit hexutil.Uint64 `json:"gasLimit"`
|
||||
GasUsed hexutil.Uint64 `json:"gasUsed"`
|
||||
Timestamp uint64 `json:"timestamp"`
|
||||
GasLimit uint64 `json:"gasLimit"`
|
||||
GasUsed uint64 `json:"gasUsed"`
|
||||
FeeRecipient common.Address `json:"miner"`
|
||||
BaseFeePerGas *hexutil.Big `json:"baseFeePerGas,omitempty"`
|
||||
BaseFeePerGas *big.Int `json:"baseFeePerGas,omitempty"`
|
||||
Calls []SimulateCallResult `json:"calls"`
|
||||
}
|
||||
|
||||
type simulateBlockResultMarshaling struct {
|
||||
Number hexutil.Uint64
|
||||
Timestamp hexutil.Uint64
|
||||
GasLimit hexutil.Uint64
|
||||
GasUsed hexutil.Uint64
|
||||
BaseFeePerGas *hexutil.Big
|
||||
}
|
||||
|
||||
// SimulateV1 executes transactions on top of a base state.
|
||||
func (ec *Client) SimulateV1(ctx context.Context, opts SimulateOptions, blockNrOrHash *rpc.BlockNumberOrHash) ([]SimulateBlockResult, error) {
|
||||
var result []SimulateBlockResult
|
||||
|
|
|
|||
80
ethclient/gen_simulate_block_result.go
Normal file
80
ethclient/gen_simulate_block_result.go
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
// Code generated by github.com/fjl/gencodec. DO NOT EDIT.
|
||||
|
||||
package ethclient
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math/big"
|
||||
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||
)
|
||||
|
||||
var _ = (*simulateBlockResultMarshaling)(nil)
|
||||
|
||||
// MarshalJSON marshals as JSON.
|
||||
func (s SimulateBlockResult) MarshalJSON() ([]byte, error) {
|
||||
type SimulateBlockResult struct {
|
||||
Number hexutil.Uint64 `json:"number"`
|
||||
Hash common.Hash `json:"hash"`
|
||||
Timestamp hexutil.Uint64 `json:"timestamp"`
|
||||
GasLimit hexutil.Uint64 `json:"gasLimit"`
|
||||
GasUsed hexutil.Uint64 `json:"gasUsed"`
|
||||
FeeRecipient common.Address `json:"miner"`
|
||||
BaseFeePerGas *hexutil.Big `json:"baseFeePerGas,omitempty"`
|
||||
Calls []SimulateCallResult `json:"calls"`
|
||||
}
|
||||
var enc SimulateBlockResult
|
||||
enc.Number = hexutil.Uint64(s.Number)
|
||||
enc.Hash = s.Hash
|
||||
enc.Timestamp = hexutil.Uint64(s.Timestamp)
|
||||
enc.GasLimit = hexutil.Uint64(s.GasLimit)
|
||||
enc.GasUsed = hexutil.Uint64(s.GasUsed)
|
||||
enc.FeeRecipient = s.FeeRecipient
|
||||
enc.BaseFeePerGas = (*hexutil.Big)(s.BaseFeePerGas)
|
||||
enc.Calls = s.Calls
|
||||
return json.Marshal(&enc)
|
||||
}
|
||||
|
||||
// UnmarshalJSON unmarshals from JSON.
|
||||
func (s *SimulateBlockResult) UnmarshalJSON(input []byte) error {
|
||||
type SimulateBlockResult struct {
|
||||
Number *hexutil.Uint64 `json:"number"`
|
||||
Hash *common.Hash `json:"hash"`
|
||||
Timestamp *hexutil.Uint64 `json:"timestamp"`
|
||||
GasLimit *hexutil.Uint64 `json:"gasLimit"`
|
||||
GasUsed *hexutil.Uint64 `json:"gasUsed"`
|
||||
FeeRecipient *common.Address `json:"miner"`
|
||||
BaseFeePerGas *hexutil.Big `json:"baseFeePerGas,omitempty"`
|
||||
Calls []SimulateCallResult `json:"calls"`
|
||||
}
|
||||
var dec SimulateBlockResult
|
||||
if err := json.Unmarshal(input, &dec); err != nil {
|
||||
return err
|
||||
}
|
||||
if dec.Number != nil {
|
||||
s.Number = uint64(*dec.Number)
|
||||
}
|
||||
if dec.Hash != nil {
|
||||
s.Hash = *dec.Hash
|
||||
}
|
||||
if dec.Timestamp != nil {
|
||||
s.Timestamp = uint64(*dec.Timestamp)
|
||||
}
|
||||
if dec.GasLimit != nil {
|
||||
s.GasLimit = uint64(*dec.GasLimit)
|
||||
}
|
||||
if dec.GasUsed != nil {
|
||||
s.GasUsed = uint64(*dec.GasUsed)
|
||||
}
|
||||
if dec.FeeRecipient != nil {
|
||||
s.FeeRecipient = *dec.FeeRecipient
|
||||
}
|
||||
if dec.BaseFeePerGas != nil {
|
||||
s.BaseFeePerGas = (*big.Int)(dec.BaseFeePerGas)
|
||||
}
|
||||
if dec.Calls != nil {
|
||||
s.Calls = dec.Calls
|
||||
}
|
||||
return nil
|
||||
}
|
||||
61
ethclient/gen_simulate_call_result.go
Normal file
61
ethclient/gen_simulate_call_result.go
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
// Code generated by github.com/fjl/gencodec. DO NOT EDIT.
|
||||
|
||||
package ethclient
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||
"github.com/ethereum/go-ethereum/core/types"
|
||||
)
|
||||
|
||||
var _ = (*simulateCallResultMarshaling)(nil)
|
||||
|
||||
// MarshalJSON marshals as JSON.
|
||||
func (s SimulateCallResult) MarshalJSON() ([]byte, error) {
|
||||
type SimulateCallResult struct {
|
||||
ReturnValue hexutil.Bytes `json:"returnData"`
|
||||
Logs []*types.Log `json:"logs"`
|
||||
GasUsed hexutil.Uint64 `json:"gasUsed"`
|
||||
Status hexutil.Uint64 `json:"status"`
|
||||
Error *CallError `json:"error,omitempty"`
|
||||
}
|
||||
var enc SimulateCallResult
|
||||
enc.ReturnValue = s.ReturnValue
|
||||
enc.Logs = s.Logs
|
||||
enc.GasUsed = hexutil.Uint64(s.GasUsed)
|
||||
enc.Status = hexutil.Uint64(s.Status)
|
||||
enc.Error = s.Error
|
||||
return json.Marshal(&enc)
|
||||
}
|
||||
|
||||
// UnmarshalJSON unmarshals from JSON.
|
||||
func (s *SimulateCallResult) UnmarshalJSON(input []byte) error {
|
||||
type SimulateCallResult struct {
|
||||
ReturnValue *hexutil.Bytes `json:"returnData"`
|
||||
Logs []*types.Log `json:"logs"`
|
||||
GasUsed *hexutil.Uint64 `json:"gasUsed"`
|
||||
Status *hexutil.Uint64 `json:"status"`
|
||||
Error *CallError `json:"error,omitempty"`
|
||||
}
|
||||
var dec SimulateCallResult
|
||||
if err := json.Unmarshal(input, &dec); err != nil {
|
||||
return err
|
||||
}
|
||||
if dec.ReturnValue != nil {
|
||||
s.ReturnValue = *dec.ReturnValue
|
||||
}
|
||||
if dec.Logs != nil {
|
||||
s.Logs = dec.Logs
|
||||
}
|
||||
if dec.GasUsed != nil {
|
||||
s.GasUsed = uint64(*dec.GasUsed)
|
||||
}
|
||||
if dec.Status != nil {
|
||||
s.Status = uint64(*dec.Status)
|
||||
}
|
||||
if dec.Error != nil {
|
||||
s.Error = dec.Error
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Loading…
Reference in a new issue