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,15 +853,23 @@ 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.
|
// SimulateCallResult is the result of a simulated call.
|
||||||
type SimulateCallResult struct {
|
type SimulateCallResult struct {
|
||||||
ReturnValue hexutil.Bytes `json:"returnData"`
|
ReturnValue []byte `json:"returnData"`
|
||||||
Logs []*types.Log `json:"logs"`
|
Logs []*types.Log `json:"logs"`
|
||||||
GasUsed hexutil.Uint64 `json:"gasUsed"`
|
GasUsed uint64 `json:"gasUsed"`
|
||||||
Status hexutil.Uint64 `json:"status"`
|
Status uint64 `json:"status"`
|
||||||
Error *CallError `json:"error,omitempty"`
|
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.
|
// CallError represents an error from a simulated call.
|
||||||
type CallError struct {
|
type CallError struct {
|
||||||
Code int `json:"code"`
|
Code int `json:"code"`
|
||||||
|
|
@ -869,18 +877,28 @@ type CallError struct {
|
||||||
Data string `json:"data,omitempty"`
|
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.
|
// SimulateBlockResult represents the result of a simulated block.
|
||||||
type SimulateBlockResult struct {
|
type SimulateBlockResult struct {
|
||||||
Number hexutil.Uint64 `json:"number"`
|
Number uint64 `json:"number"`
|
||||||
Hash common.Hash `json:"hash"`
|
Hash common.Hash `json:"hash"`
|
||||||
Timestamp hexutil.Uint64 `json:"timestamp"`
|
Timestamp uint64 `json:"timestamp"`
|
||||||
GasLimit hexutil.Uint64 `json:"gasLimit"`
|
GasLimit uint64 `json:"gasLimit"`
|
||||||
GasUsed hexutil.Uint64 `json:"gasUsed"`
|
GasUsed uint64 `json:"gasUsed"`
|
||||||
FeeRecipient common.Address `json:"miner"`
|
FeeRecipient common.Address `json:"miner"`
|
||||||
BaseFeePerGas *hexutil.Big `json:"baseFeePerGas,omitempty"`
|
BaseFeePerGas *big.Int `json:"baseFeePerGas,omitempty"`
|
||||||
Calls []SimulateCallResult `json:"calls"`
|
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.
|
// SimulateV1 executes transactions on top of a base state.
|
||||||
func (ec *Client) SimulateV1(ctx context.Context, opts SimulateOptions, blockNrOrHash *rpc.BlockNumberOrHash) ([]SimulateBlockResult, error) {
|
func (ec *Client) SimulateV1(ctx context.Context, opts SimulateOptions, blockNrOrHash *rpc.BlockNumberOrHash) ([]SimulateBlockResult, error) {
|
||||||
var result []SimulateBlockResult
|
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