mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-03-07 03:45:02 +00:00
internal/ethapi: add timestamp to logs in eth_simulate (#32831)
Adds blockTimestamp to the logs in response of eth_simulateV1. --------- Co-authored-by: Sina Mahmoodi <itz.s1na@gmail.com>
This commit is contained in:
parent
1e4b39ed12
commit
477ee5873b
3 changed files with 30 additions and 23 deletions
|
|
@ -1327,10 +1327,11 @@ func TestSimulateV1(t *testing.T) {
|
|||
validation = true
|
||||
)
|
||||
type log struct {
|
||||
Address common.Address `json:"address"`
|
||||
Topics []common.Hash `json:"topics"`
|
||||
Data hexutil.Bytes `json:"data"`
|
||||
BlockNumber hexutil.Uint64 `json:"blockNumber"`
|
||||
Address common.Address `json:"address"`
|
||||
Topics []common.Hash `json:"topics"`
|
||||
Data hexutil.Bytes `json:"data"`
|
||||
BlockNumber hexutil.Uint64 `json:"blockNumber"`
|
||||
BlockTimestamp hexutil.Uint64 `json:"blockTimestamp"`
|
||||
// Skip txHash
|
||||
//TxHash common.Hash `json:"transactionHash" gencodec:"required"`
|
||||
TxIndex hexutil.Uint `json:"transactionIndex"`
|
||||
|
|
@ -1677,10 +1678,11 @@ func TestSimulateV1(t *testing.T) {
|
|||
Calls: []callRes{{
|
||||
ReturnValue: "0x",
|
||||
Logs: []log{{
|
||||
Address: randomAccounts[2].addr,
|
||||
Topics: []common.Hash{common.HexToHash("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")},
|
||||
BlockNumber: hexutil.Uint64(11),
|
||||
Data: hexutil.Bytes{},
|
||||
Address: randomAccounts[2].addr,
|
||||
Topics: []common.Hash{common.HexToHash("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")},
|
||||
BlockNumber: hexutil.Uint64(11),
|
||||
BlockTimestamp: hexutil.Uint64(0x70),
|
||||
Data: hexutil.Bytes{},
|
||||
}},
|
||||
GasUsed: "0x5508",
|
||||
Status: "0x1",
|
||||
|
|
@ -1853,8 +1855,9 @@ func TestSimulateV1(t *testing.T) {
|
|||
addressToHash(accounts[0].addr),
|
||||
addressToHash(randomAccounts[0].addr),
|
||||
},
|
||||
Data: hexutil.Bytes(common.BigToHash(big.NewInt(50)).Bytes()),
|
||||
BlockNumber: hexutil.Uint64(11),
|
||||
Data: hexutil.Bytes(common.BigToHash(big.NewInt(50)).Bytes()),
|
||||
BlockNumber: hexutil.Uint64(11),
|
||||
BlockTimestamp: hexutil.Uint64(0x70),
|
||||
}, {
|
||||
Address: transferAddress,
|
||||
Topics: []common.Hash{
|
||||
|
|
@ -1862,9 +1865,10 @@ func TestSimulateV1(t *testing.T) {
|
|||
addressToHash(randomAccounts[0].addr),
|
||||
addressToHash(fixedAccount.addr),
|
||||
},
|
||||
Data: hexutil.Bytes(common.BigToHash(big.NewInt(100)).Bytes()),
|
||||
BlockNumber: hexutil.Uint64(11),
|
||||
Index: hexutil.Uint(1),
|
||||
Data: hexutil.Bytes(common.BigToHash(big.NewInt(100)).Bytes()),
|
||||
BlockNumber: hexutil.Uint64(11),
|
||||
BlockTimestamp: hexutil.Uint64(0x70),
|
||||
Index: hexutil.Uint(1),
|
||||
}},
|
||||
Status: "0x1",
|
||||
}},
|
||||
|
|
|
|||
|
|
@ -53,15 +53,17 @@ type tracer struct {
|
|||
count int
|
||||
traceTransfers bool
|
||||
blockNumber uint64
|
||||
blockTimestamp uint64
|
||||
blockHash common.Hash
|
||||
txHash common.Hash
|
||||
txIdx uint
|
||||
}
|
||||
|
||||
func newTracer(traceTransfers bool, blockNumber uint64, blockHash, txHash common.Hash, txIndex uint) *tracer {
|
||||
func newTracer(traceTransfers bool, blockNumber uint64, blockTimestamp uint64, blockHash, txHash common.Hash, txIndex uint) *tracer {
|
||||
return &tracer{
|
||||
traceTransfers: traceTransfers,
|
||||
blockNumber: blockNumber,
|
||||
blockTimestamp: blockTimestamp,
|
||||
blockHash: blockHash,
|
||||
txHash: txHash,
|
||||
txIdx: txIndex,
|
||||
|
|
@ -115,14 +117,15 @@ func (t *tracer) onLog(log *types.Log) {
|
|||
|
||||
func (t *tracer) captureLog(address common.Address, topics []common.Hash, data []byte) {
|
||||
t.logs[len(t.logs)-1] = append(t.logs[len(t.logs)-1], &types.Log{
|
||||
Address: address,
|
||||
Topics: topics,
|
||||
Data: data,
|
||||
BlockNumber: t.blockNumber,
|
||||
BlockHash: t.blockHash,
|
||||
TxHash: t.txHash,
|
||||
TxIndex: t.txIdx,
|
||||
Index: uint(t.count),
|
||||
Address: address,
|
||||
Topics: topics,
|
||||
Data: data,
|
||||
BlockNumber: t.blockNumber,
|
||||
BlockTimestamp: t.blockTimestamp,
|
||||
BlockHash: t.blockHash,
|
||||
TxHash: t.txHash,
|
||||
TxIndex: t.txIdx,
|
||||
Index: uint(t.count),
|
||||
})
|
||||
t.count++
|
||||
}
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ func (sim *simulator) processBlock(ctx context.Context, block *simBlock, header,
|
|||
callResults = make([]simCallResult, len(block.Calls))
|
||||
receipts = make([]*types.Receipt, len(block.Calls))
|
||||
// Block hash will be repaired after execution.
|
||||
tracer = newTracer(sim.traceTransfers, blockContext.BlockNumber.Uint64(), common.Hash{}, common.Hash{}, 0)
|
||||
tracer = newTracer(sim.traceTransfers, blockContext.BlockNumber.Uint64(), blockContext.Time, common.Hash{}, common.Hash{}, 0)
|
||||
vmConfig = &vm.Config{
|
||||
NoBaseFee: !sim.validate,
|
||||
Tracer: tracer.Hooks(),
|
||||
|
|
|
|||
Loading…
Reference in a new issue