cmd/evm: set ExcessBlobGas from env (#27796)
Sets the `currentExcessBlobGas` from env, alternatively calculates it based on `parentExcessBlobGas` and `parentBlobGasUsed`. It then emits the `currentExcessBlobGas` and `currentBlobGasUsed` into the output, to be used as parent-values for a future iteration. Closes #27785 Closes #27783 --------- Signed-off-by: jsvisa <delweng@gmail.com> Co-authored-by: Martin Holst Swende <martin@swende.se>
This commit is contained in:
		
							parent
							
								
									7c95ebd63d
								
							
						
					
					
						commit
						f404a2d0f1
					
				| @ -24,6 +24,7 @@ import ( | ||||
| 	"github.com/ethereum/go-ethereum/common/math" | ||||
| 	"github.com/ethereum/go-ethereum/consensus/ethash" | ||||
| 	"github.com/ethereum/go-ethereum/consensus/misc" | ||||
| 	"github.com/ethereum/go-ethereum/consensus/misc/eip4844" | ||||
| 	"github.com/ethereum/go-ethereum/core" | ||||
| 	"github.com/ethereum/go-ethereum/core/rawdb" | ||||
| 	"github.com/ethereum/go-ethereum/core/state" | ||||
| @ -46,17 +47,19 @@ type Prestate struct { | ||||
| // ExecutionResult contains the execution status after running a state test, any
 | ||||
| // error that might have occurred and a dump of the final state if requested.
 | ||||
| type ExecutionResult struct { | ||||
| 	StateRoot       common.Hash           `json:"stateRoot"` | ||||
| 	TxRoot          common.Hash           `json:"txRoot"` | ||||
| 	ReceiptRoot     common.Hash           `json:"receiptsRoot"` | ||||
| 	LogsHash        common.Hash           `json:"logsHash"` | ||||
| 	Bloom           types.Bloom           `json:"logsBloom"        gencodec:"required"` | ||||
| 	Receipts        types.Receipts        `json:"receipts"` | ||||
| 	Rejected        []*rejectedTx         `json:"rejected,omitempty"` | ||||
| 	Difficulty      *math.HexOrDecimal256 `json:"currentDifficulty" gencodec:"required"` | ||||
| 	GasUsed         math.HexOrDecimal64   `json:"gasUsed"` | ||||
| 	BaseFee         *math.HexOrDecimal256 `json:"currentBaseFee,omitempty"` | ||||
| 	WithdrawalsRoot *common.Hash          `json:"withdrawalsRoot,omitempty"` | ||||
| 	StateRoot            common.Hash           `json:"stateRoot"` | ||||
| 	TxRoot               common.Hash           `json:"txRoot"` | ||||
| 	ReceiptRoot          common.Hash           `json:"receiptsRoot"` | ||||
| 	LogsHash             common.Hash           `json:"logsHash"` | ||||
| 	Bloom                types.Bloom           `json:"logsBloom"        gencodec:"required"` | ||||
| 	Receipts             types.Receipts        `json:"receipts"` | ||||
| 	Rejected             []*rejectedTx         `json:"rejected,omitempty"` | ||||
| 	Difficulty           *math.HexOrDecimal256 `json:"currentDifficulty" gencodec:"required"` | ||||
| 	GasUsed              math.HexOrDecimal64   `json:"gasUsed"` | ||||
| 	BaseFee              *math.HexOrDecimal256 `json:"currentBaseFee,omitempty"` | ||||
| 	WithdrawalsRoot      *common.Hash          `json:"withdrawalsRoot,omitempty"` | ||||
| 	CurrentExcessBlobGas *math.HexOrDecimal64  `json:"currentExcessBlobGas,omitempty"` | ||||
| 	CurrentBlobGasUsed   *math.HexOrDecimal64  `json:"currentBlobGasUsed,omitempty"` | ||||
| } | ||||
| 
 | ||||
| type ommer struct { | ||||
| @ -66,37 +69,43 @@ type ommer struct { | ||||
| 
 | ||||
| //go:generate go run github.com/fjl/gencodec -type stEnv -field-override stEnvMarshaling -out gen_stenv.go
 | ||||
| type stEnv struct { | ||||
| 	Coinbase         common.Address                      `json:"currentCoinbase"   gencodec:"required"` | ||||
| 	Difficulty       *big.Int                            `json:"currentDifficulty"` | ||||
| 	Random           *big.Int                            `json:"currentRandom"` | ||||
| 	ParentDifficulty *big.Int                            `json:"parentDifficulty"` | ||||
| 	ParentBaseFee    *big.Int                            `json:"parentBaseFee,omitempty"` | ||||
| 	ParentGasUsed    uint64                              `json:"parentGasUsed,omitempty"` | ||||
| 	ParentGasLimit   uint64                              `json:"parentGasLimit,omitempty"` | ||||
| 	GasLimit         uint64                              `json:"currentGasLimit"   gencodec:"required"` | ||||
| 	Number           uint64                              `json:"currentNumber"     gencodec:"required"` | ||||
| 	Timestamp        uint64                              `json:"currentTimestamp"  gencodec:"required"` | ||||
| 	ParentTimestamp  uint64                              `json:"parentTimestamp,omitempty"` | ||||
| 	BlockHashes      map[math.HexOrDecimal64]common.Hash `json:"blockHashes,omitempty"` | ||||
| 	Ommers           []ommer                             `json:"ommers,omitempty"` | ||||
| 	Withdrawals      []*types.Withdrawal                 `json:"withdrawals,omitempty"` | ||||
| 	BaseFee          *big.Int                            `json:"currentBaseFee,omitempty"` | ||||
| 	ParentUncleHash  common.Hash                         `json:"parentUncleHash"` | ||||
| 	Coinbase            common.Address                      `json:"currentCoinbase"   gencodec:"required"` | ||||
| 	Difficulty          *big.Int                            `json:"currentDifficulty"` | ||||
| 	Random              *big.Int                            `json:"currentRandom"` | ||||
| 	ParentDifficulty    *big.Int                            `json:"parentDifficulty"` | ||||
| 	ParentBaseFee       *big.Int                            `json:"parentBaseFee,omitempty"` | ||||
| 	ParentGasUsed       uint64                              `json:"parentGasUsed,omitempty"` | ||||
| 	ParentGasLimit      uint64                              `json:"parentGasLimit,omitempty"` | ||||
| 	GasLimit            uint64                              `json:"currentGasLimit"   gencodec:"required"` | ||||
| 	Number              uint64                              `json:"currentNumber"     gencodec:"required"` | ||||
| 	Timestamp           uint64                              `json:"currentTimestamp"  gencodec:"required"` | ||||
| 	ParentTimestamp     uint64                              `json:"parentTimestamp,omitempty"` | ||||
| 	BlockHashes         map[math.HexOrDecimal64]common.Hash `json:"blockHashes,omitempty"` | ||||
| 	Ommers              []ommer                             `json:"ommers,omitempty"` | ||||
| 	Withdrawals         []*types.Withdrawal                 `json:"withdrawals,omitempty"` | ||||
| 	BaseFee             *big.Int                            `json:"currentBaseFee,omitempty"` | ||||
| 	ParentUncleHash     common.Hash                         `json:"parentUncleHash"` | ||||
| 	ExcessBlobGas       *uint64                             `json:"excessBlobGas,omitempty"` | ||||
| 	ParentExcessBlobGas *uint64                             `json:"parentExcessBlobGas,omitempty"` | ||||
| 	ParentBlobGasUsed   *uint64                             `json:"parentBlobGasUsed,omitempty"` | ||||
| } | ||||
| 
 | ||||
| type stEnvMarshaling struct { | ||||
| 	Coinbase         common.UnprefixedAddress | ||||
| 	Difficulty       *math.HexOrDecimal256 | ||||
| 	Random           *math.HexOrDecimal256 | ||||
| 	ParentDifficulty *math.HexOrDecimal256 | ||||
| 	ParentBaseFee    *math.HexOrDecimal256 | ||||
| 	ParentGasUsed    math.HexOrDecimal64 | ||||
| 	ParentGasLimit   math.HexOrDecimal64 | ||||
| 	GasLimit         math.HexOrDecimal64 | ||||
| 	Number           math.HexOrDecimal64 | ||||
| 	Timestamp        math.HexOrDecimal64 | ||||
| 	ParentTimestamp  math.HexOrDecimal64 | ||||
| 	BaseFee          *math.HexOrDecimal256 | ||||
| 	Coinbase            common.UnprefixedAddress | ||||
| 	Difficulty          *math.HexOrDecimal256 | ||||
| 	Random              *math.HexOrDecimal256 | ||||
| 	ParentDifficulty    *math.HexOrDecimal256 | ||||
| 	ParentBaseFee       *math.HexOrDecimal256 | ||||
| 	ParentGasUsed       math.HexOrDecimal64 | ||||
| 	ParentGasLimit      math.HexOrDecimal64 | ||||
| 	GasLimit            math.HexOrDecimal64 | ||||
| 	Number              math.HexOrDecimal64 | ||||
| 	Timestamp           math.HexOrDecimal64 | ||||
| 	ParentTimestamp     math.HexOrDecimal64 | ||||
| 	BaseFee             *math.HexOrDecimal256 | ||||
| 	ExcessBlobGas       *math.HexOrDecimal64 | ||||
| 	ParentExcessBlobGas *math.HexOrDecimal64 | ||||
| 	ParentBlobGasUsed   *math.HexOrDecimal64 | ||||
| } | ||||
| 
 | ||||
| type rejectedTx struct { | ||||
| @ -153,6 +162,19 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, | ||||
| 		rnd := common.BigToHash(pre.Env.Random) | ||||
| 		vmContext.Random = &rnd | ||||
| 	} | ||||
| 	// If excessBlobGas is defined, add it to the vmContext.
 | ||||
| 	if pre.Env.ExcessBlobGas != nil { | ||||
| 		vmContext.ExcessBlobGas = pre.Env.ExcessBlobGas | ||||
| 	} else { | ||||
| 		// If it is not explicitly defined, but we have the parent values, we try
 | ||||
| 		// to calculate it ourselves.
 | ||||
| 		parentExcessBlobGas := pre.Env.ParentExcessBlobGas | ||||
| 		parentBlobGasUsed := pre.Env.ParentBlobGasUsed | ||||
| 		if parentExcessBlobGas != nil && parentBlobGasUsed != nil { | ||||
| 			excessBlobGas := eip4844.CalcExcessBlobGas(*parentExcessBlobGas, *parentBlobGasUsed) | ||||
| 			vmContext.ExcessBlobGas = &excessBlobGas | ||||
| 		} | ||||
| 	} | ||||
| 	// If DAO is supported/enabled, we need to handle it here. In geth 'proper', it's
 | ||||
| 	// done in StateProcessor.Process(block, ...), right before transactions are applied.
 | ||||
| 	if chainConfig.DAOForkSupport && | ||||
| @ -160,8 +182,14 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, | ||||
| 		chainConfig.DAOForkBlock.Cmp(new(big.Int).SetUint64(pre.Env.Number)) == 0 { | ||||
| 		misc.ApplyDAOHardFork(statedb) | ||||
| 	} | ||||
| 
 | ||||
| 	var blobGasUsed uint64 | ||||
| 	for i, tx := range txs { | ||||
| 		if tx.Type() == types.BlobTxType && vmContext.ExcessBlobGas == nil { | ||||
| 			errMsg := "blob tx used but field env.ExcessBlobGas missing" | ||||
| 			log.Warn("rejected tx", "index", i, "hash", tx.Hash(), "error", errMsg) | ||||
| 			rejectedTxs = append(rejectedTxs, &rejectedTx{i, errMsg}) | ||||
| 			continue | ||||
| 		} | ||||
| 		msg, err := core.TransactionToMessage(tx, signer, pre.Env.BaseFee) | ||||
| 		if err != nil { | ||||
| 			log.Warn("rejected tx", "index", i, "hash", tx.Hash(), "error", err) | ||||
| @ -191,6 +219,9 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, | ||||
| 			gaspool.SetGas(prevGas) | ||||
| 			continue | ||||
| 		} | ||||
| 		if tx.Type() == types.BlobTxType { | ||||
| 			blobGasUsed += params.BlobTxBlobGasPerBlob | ||||
| 		} | ||||
| 		includedTxs = append(includedTxs, tx) | ||||
| 		if hashError != nil { | ||||
| 			return nil, nil, NewError(ErrorMissingBlockhash, hashError) | ||||
| @ -286,6 +317,10 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, | ||||
| 		h := types.DeriveSha(types.Withdrawals(pre.Env.Withdrawals), trie.NewStackTrie(nil)) | ||||
| 		execRs.WithdrawalsRoot = &h | ||||
| 	} | ||||
| 	if vmContext.ExcessBlobGas != nil { | ||||
| 		execRs.CurrentExcessBlobGas = (*math.HexOrDecimal64)(vmContext.ExcessBlobGas) | ||||
| 		execRs.CurrentBlobGasUsed = (*math.HexOrDecimal64)(&blobGasUsed) | ||||
| 	} | ||||
| 	// Re-create statedb instance with new root upon the updated database
 | ||||
| 	// for accessing latest states.
 | ||||
| 	statedb, err = state.New(root, statedb.Database(), nil) | ||||
|  | ||||
| @ -17,22 +17,25 @@ var _ = (*stEnvMarshaling)(nil) | ||||
| // MarshalJSON marshals as JSON.
 | ||||
| func (s stEnv) MarshalJSON() ([]byte, error) { | ||||
| 	type stEnv struct { | ||||
| 		Coinbase         common.UnprefixedAddress            `json:"currentCoinbase"   gencodec:"required"` | ||||
| 		Difficulty       *math.HexOrDecimal256               `json:"currentDifficulty"` | ||||
| 		Random           *math.HexOrDecimal256               `json:"currentRandom"` | ||||
| 		ParentDifficulty *math.HexOrDecimal256               `json:"parentDifficulty"` | ||||
| 		ParentBaseFee    *math.HexOrDecimal256               `json:"parentBaseFee,omitempty"` | ||||
| 		ParentGasUsed    math.HexOrDecimal64                 `json:"parentGasUsed,omitempty"` | ||||
| 		ParentGasLimit   math.HexOrDecimal64                 `json:"parentGasLimit,omitempty"` | ||||
| 		GasLimit         math.HexOrDecimal64                 `json:"currentGasLimit"   gencodec:"required"` | ||||
| 		Number           math.HexOrDecimal64                 `json:"currentNumber"     gencodec:"required"` | ||||
| 		Timestamp        math.HexOrDecimal64                 `json:"currentTimestamp"  gencodec:"required"` | ||||
| 		ParentTimestamp  math.HexOrDecimal64                 `json:"parentTimestamp,omitempty"` | ||||
| 		BlockHashes      map[math.HexOrDecimal64]common.Hash `json:"blockHashes,omitempty"` | ||||
| 		Ommers           []ommer                             `json:"ommers,omitempty"` | ||||
| 		Withdrawals      []*types.Withdrawal                 `json:"withdrawals,omitempty"` | ||||
| 		BaseFee          *math.HexOrDecimal256               `json:"currentBaseFee,omitempty"` | ||||
| 		ParentUncleHash  common.Hash                         `json:"parentUncleHash"` | ||||
| 		Coinbase            common.UnprefixedAddress            `json:"currentCoinbase"   gencodec:"required"` | ||||
| 		Difficulty          *math.HexOrDecimal256               `json:"currentDifficulty"` | ||||
| 		Random              *math.HexOrDecimal256               `json:"currentRandom"` | ||||
| 		ParentDifficulty    *math.HexOrDecimal256               `json:"parentDifficulty"` | ||||
| 		ParentBaseFee       *math.HexOrDecimal256               `json:"parentBaseFee,omitempty"` | ||||
| 		ParentGasUsed       math.HexOrDecimal64                 `json:"parentGasUsed,omitempty"` | ||||
| 		ParentGasLimit      math.HexOrDecimal64                 `json:"parentGasLimit,omitempty"` | ||||
| 		GasLimit            math.HexOrDecimal64                 `json:"currentGasLimit"   gencodec:"required"` | ||||
| 		Number              math.HexOrDecimal64                 `json:"currentNumber"     gencodec:"required"` | ||||
| 		Timestamp           math.HexOrDecimal64                 `json:"currentTimestamp"  gencodec:"required"` | ||||
| 		ParentTimestamp     math.HexOrDecimal64                 `json:"parentTimestamp,omitempty"` | ||||
| 		BlockHashes         map[math.HexOrDecimal64]common.Hash `json:"blockHashes,omitempty"` | ||||
| 		Ommers              []ommer                             `json:"ommers,omitempty"` | ||||
| 		Withdrawals         []*types.Withdrawal                 `json:"withdrawals,omitempty"` | ||||
| 		BaseFee             *math.HexOrDecimal256               `json:"currentBaseFee,omitempty"` | ||||
| 		ParentUncleHash     common.Hash                         `json:"parentUncleHash"` | ||||
| 		ExcessBlobGas       *math.HexOrDecimal64                `json:"excessBlobGas,omitempty"` | ||||
| 		ParentExcessBlobGas *math.HexOrDecimal64                `json:"parentExcessBlobGas,omitempty"` | ||||
| 		ParentBlobGasUsed   *math.HexOrDecimal64                `json:"parentBlobGasUsed,omitempty"` | ||||
| 	} | ||||
| 	var enc stEnv | ||||
| 	enc.Coinbase = common.UnprefixedAddress(s.Coinbase) | ||||
| @ -51,28 +54,34 @@ func (s stEnv) MarshalJSON() ([]byte, error) { | ||||
| 	enc.Withdrawals = s.Withdrawals | ||||
| 	enc.BaseFee = (*math.HexOrDecimal256)(s.BaseFee) | ||||
| 	enc.ParentUncleHash = s.ParentUncleHash | ||||
| 	enc.ExcessBlobGas = (*math.HexOrDecimal64)(s.ExcessBlobGas) | ||||
| 	enc.ParentExcessBlobGas = (*math.HexOrDecimal64)(s.ParentExcessBlobGas) | ||||
| 	enc.ParentBlobGasUsed = (*math.HexOrDecimal64)(s.ParentBlobGasUsed) | ||||
| 	return json.Marshal(&enc) | ||||
| } | ||||
| 
 | ||||
| // UnmarshalJSON unmarshals from JSON.
 | ||||
| func (s *stEnv) UnmarshalJSON(input []byte) error { | ||||
| 	type stEnv struct { | ||||
| 		Coinbase         *common.UnprefixedAddress           `json:"currentCoinbase"   gencodec:"required"` | ||||
| 		Difficulty       *math.HexOrDecimal256               `json:"currentDifficulty"` | ||||
| 		Random           *math.HexOrDecimal256               `json:"currentRandom"` | ||||
| 		ParentDifficulty *math.HexOrDecimal256               `json:"parentDifficulty"` | ||||
| 		ParentBaseFee    *math.HexOrDecimal256               `json:"parentBaseFee,omitempty"` | ||||
| 		ParentGasUsed    *math.HexOrDecimal64                `json:"parentGasUsed,omitempty"` | ||||
| 		ParentGasLimit   *math.HexOrDecimal64                `json:"parentGasLimit,omitempty"` | ||||
| 		GasLimit         *math.HexOrDecimal64                `json:"currentGasLimit"   gencodec:"required"` | ||||
| 		Number           *math.HexOrDecimal64                `json:"currentNumber"     gencodec:"required"` | ||||
| 		Timestamp        *math.HexOrDecimal64                `json:"currentTimestamp"  gencodec:"required"` | ||||
| 		ParentTimestamp  *math.HexOrDecimal64                `json:"parentTimestamp,omitempty"` | ||||
| 		BlockHashes      map[math.HexOrDecimal64]common.Hash `json:"blockHashes,omitempty"` | ||||
| 		Ommers           []ommer                             `json:"ommers,omitempty"` | ||||
| 		Withdrawals      []*types.Withdrawal                 `json:"withdrawals,omitempty"` | ||||
| 		BaseFee          *math.HexOrDecimal256               `json:"currentBaseFee,omitempty"` | ||||
| 		ParentUncleHash  *common.Hash                        `json:"parentUncleHash"` | ||||
| 		Coinbase            *common.UnprefixedAddress           `json:"currentCoinbase"   gencodec:"required"` | ||||
| 		Difficulty          *math.HexOrDecimal256               `json:"currentDifficulty"` | ||||
| 		Random              *math.HexOrDecimal256               `json:"currentRandom"` | ||||
| 		ParentDifficulty    *math.HexOrDecimal256               `json:"parentDifficulty"` | ||||
| 		ParentBaseFee       *math.HexOrDecimal256               `json:"parentBaseFee,omitempty"` | ||||
| 		ParentGasUsed       *math.HexOrDecimal64                `json:"parentGasUsed,omitempty"` | ||||
| 		ParentGasLimit      *math.HexOrDecimal64                `json:"parentGasLimit,omitempty"` | ||||
| 		GasLimit            *math.HexOrDecimal64                `json:"currentGasLimit"   gencodec:"required"` | ||||
| 		Number              *math.HexOrDecimal64                `json:"currentNumber"     gencodec:"required"` | ||||
| 		Timestamp           *math.HexOrDecimal64                `json:"currentTimestamp"  gencodec:"required"` | ||||
| 		ParentTimestamp     *math.HexOrDecimal64                `json:"parentTimestamp,omitempty"` | ||||
| 		BlockHashes         map[math.HexOrDecimal64]common.Hash `json:"blockHashes,omitempty"` | ||||
| 		Ommers              []ommer                             `json:"ommers,omitempty"` | ||||
| 		Withdrawals         []*types.Withdrawal                 `json:"withdrawals,omitempty"` | ||||
| 		BaseFee             *math.HexOrDecimal256               `json:"currentBaseFee,omitempty"` | ||||
| 		ParentUncleHash     *common.Hash                        `json:"parentUncleHash"` | ||||
| 		ExcessBlobGas       *math.HexOrDecimal64                `json:"excessBlobGas,omitempty"` | ||||
| 		ParentExcessBlobGas *math.HexOrDecimal64                `json:"parentExcessBlobGas,omitempty"` | ||||
| 		ParentBlobGasUsed   *math.HexOrDecimal64                `json:"parentBlobGasUsed,omitempty"` | ||||
| 	} | ||||
| 	var dec stEnv | ||||
| 	if err := json.Unmarshal(input, &dec); err != nil { | ||||
| @ -130,5 +139,14 @@ func (s *stEnv) UnmarshalJSON(input []byte) error { | ||||
| 	if dec.ParentUncleHash != nil { | ||||
| 		s.ParentUncleHash = *dec.ParentUncleHash | ||||
| 	} | ||||
| 	if dec.ExcessBlobGas != nil { | ||||
| 		s.ExcessBlobGas = (*uint64)(dec.ExcessBlobGas) | ||||
| 	} | ||||
| 	if dec.ParentExcessBlobGas != nil { | ||||
| 		s.ParentExcessBlobGas = (*uint64)(dec.ParentExcessBlobGas) | ||||
| 	} | ||||
| 	if dec.ParentBlobGasUsed != nil { | ||||
| 		s.ParentBlobGasUsed = (*uint64)(dec.ParentBlobGasUsed) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| @ -259,6 +259,14 @@ func TestT8n(t *testing.T) { | ||||
| 			output: t8nOutput{alloc: true, result: true}, | ||||
| 			expOut: "exp.json", | ||||
| 		}, | ||||
| 		{ // Cancun tests
 | ||||
| 			base: "./testdata/28", | ||||
| 			input: t8nInput{ | ||||
| 				"alloc.json", "txs.rlp", "env.json", "Cancun", "", | ||||
| 			}, | ||||
| 			output: t8nOutput{alloc: true, result: true}, | ||||
| 			expOut: "exp.json", | ||||
| 		}, | ||||
| 	} { | ||||
| 		args := []string{"t8n"} | ||||
| 		args = append(args, tc.output.get()...) | ||||
|  | ||||
							
								
								
									
										16
									
								
								cmd/evm/testdata/28/alloc.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								cmd/evm/testdata/28/alloc.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | ||||
| { | ||||
|   "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { | ||||
|     "balance" : "0x016345785d8a0000", | ||||
|     "code" : "0x", | ||||
|     "nonce" : "0x00", | ||||
|     "storage" : { | ||||
|     } | ||||
|   }, | ||||
|   "0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { | ||||
|     "balance" : "0x016345785d8a0000", | ||||
|     "code" : "0x60004960015500", | ||||
|     "nonce" : "0x00", | ||||
|     "storage" : { | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										22
									
								
								cmd/evm/testdata/28/env.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								cmd/evm/testdata/28/env.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | ||||
| { | ||||
|     "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", | ||||
|     "currentNumber" : "0x01", | ||||
|     "currentTimestamp" : "0x079e", | ||||
|     "currentGasLimit" : "0x7fffffffffffffff", | ||||
|     "previousHash" : "0x3a9b485972e7353edd9152712492f0c58d89ef80623686b6bf947a4a6dce6cb6", | ||||
|     "currentBlobGasUsed" : "0x00", | ||||
|     "parentTimestamp" : "0x03b6", | ||||
|     "parentDifficulty" : "0x00", | ||||
|     "parentUncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", | ||||
|     "currentRandom" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", | ||||
|     "withdrawals" : [ | ||||
|     ], | ||||
|     "parentBaseFee" : "0x0a", | ||||
|     "parentGasUsed" : "0x00", | ||||
|     "parentGasLimit" : "0x7fffffffffffffff", | ||||
|     "parentExcessBlobGas" : "0x00", | ||||
|     "parentBlobGasUsed" : "0x00", | ||||
|     "blockHashes" : { | ||||
|         "0" : "0x3a9b485972e7353edd9152712492f0c58d89ef80623686b6bf947a4a6dce6cb6" | ||||
|     } | ||||
| } | ||||
							
								
								
									
										47
									
								
								cmd/evm/testdata/28/exp.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								cmd/evm/testdata/28/exp.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | ||||
| { | ||||
|   "alloc": { | ||||
|     "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba": { | ||||
|       "balance": "0x150ca" | ||||
|     }, | ||||
|     "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b": { | ||||
|       "balance": "0x16345785d80c3a9", | ||||
|       "nonce": "0x1" | ||||
|     }, | ||||
|     "0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b": { | ||||
|       "code": "0x60004960015500", | ||||
|       "storage": { | ||||
|         "0x0000000000000000000000000000000000000000000000000000000000000001": "0x01a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8" | ||||
|       }, | ||||
|       "balance": "0x16345785d8a0000" | ||||
|     } | ||||
|   }, | ||||
|   "result": { | ||||
|     "stateRoot": "0xa40cb3fab01848e922a48bd24191815df9f721ad4b60376edac75161517663e8", | ||||
|     "txRoot": "0x4409cc4b699384ba5f8248d92b784713610c5ff9c1de51e9239da0dac76de9ce", | ||||
|     "receiptsRoot": "0xbff643da765981266133094092d98c81d2ac8e9a83a7bbda46c3d736f1f874ac", | ||||
|     "logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", | ||||
|     "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", | ||||
|     "receipts": [ | ||||
|       { | ||||
|         "type": "0x3", | ||||
|         "root": "0x", | ||||
|         "status": "0x1", | ||||
|         "cumulativeGasUsed": "0xa865", | ||||
|         "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", | ||||
|         "logs": null, | ||||
|         "transactionHash": "0x7508d7139d002a4b3a26a4f12dec0d87cb46075c78bf77a38b569a133b509262", | ||||
|         "contractAddress": "0x0000000000000000000000000000000000000000", | ||||
|         "gasUsed": "0xa865", | ||||
|         "effectiveGasPrice": null, | ||||
|         "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", | ||||
|         "transactionIndex": "0x0" | ||||
|       } | ||||
|     ], | ||||
|     "currentDifficulty": null, | ||||
|     "gasUsed": "0xa865", | ||||
|     "currentBaseFee": "0x9", | ||||
|     "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", | ||||
|     "currentExcessBlobGas": "0x0", | ||||
|     "currentBlobGasUsed": "0x20000" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										1
									
								
								cmd/evm/testdata/28/txs.rlp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cmd/evm/testdata/28/txs.rlp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| "0xf88bb88903f8860180026483061a8094b94f5374fce5edbc8e2a8697c15331677e6ebf0b8080c00ae1a001a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d801a025e16bb498552165016751911c3608d79000ab89dc3100776e729e6ea13091c7a03acacff7fc0cff6eda8a927dec93ca17765e1ee6cbc06c5954ce102e097c01d2" | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user