mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-05-18 13:59:26 +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
|
validation = true
|
||||||
)
|
)
|
||||||
type log struct {
|
type log struct {
|
||||||
Address common.Address `json:"address"`
|
Address common.Address `json:"address"`
|
||||||
Topics []common.Hash `json:"topics"`
|
Topics []common.Hash `json:"topics"`
|
||||||
Data hexutil.Bytes `json:"data"`
|
Data hexutil.Bytes `json:"data"`
|
||||||
BlockNumber hexutil.Uint64 `json:"blockNumber"`
|
BlockNumber hexutil.Uint64 `json:"blockNumber"`
|
||||||
|
BlockTimestamp hexutil.Uint64 `json:"blockTimestamp"`
|
||||||
// Skip txHash
|
// Skip txHash
|
||||||
//TxHash common.Hash `json:"transactionHash" gencodec:"required"`
|
//TxHash common.Hash `json:"transactionHash" gencodec:"required"`
|
||||||
TxIndex hexutil.Uint `json:"transactionIndex"`
|
TxIndex hexutil.Uint `json:"transactionIndex"`
|
||||||
|
|
@ -1677,10 +1678,11 @@ func TestSimulateV1(t *testing.T) {
|
||||||
Calls: []callRes{{
|
Calls: []callRes{{
|
||||||
ReturnValue: "0x",
|
ReturnValue: "0x",
|
||||||
Logs: []log{{
|
Logs: []log{{
|
||||||
Address: randomAccounts[2].addr,
|
Address: randomAccounts[2].addr,
|
||||||
Topics: []common.Hash{common.HexToHash("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")},
|
Topics: []common.Hash{common.HexToHash("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")},
|
||||||
BlockNumber: hexutil.Uint64(11),
|
BlockNumber: hexutil.Uint64(11),
|
||||||
Data: hexutil.Bytes{},
|
BlockTimestamp: hexutil.Uint64(0x70),
|
||||||
|
Data: hexutil.Bytes{},
|
||||||
}},
|
}},
|
||||||
GasUsed: "0x5508",
|
GasUsed: "0x5508",
|
||||||
Status: "0x1",
|
Status: "0x1",
|
||||||
|
|
@ -1853,8 +1855,9 @@ func TestSimulateV1(t *testing.T) {
|
||||||
addressToHash(accounts[0].addr),
|
addressToHash(accounts[0].addr),
|
||||||
addressToHash(randomAccounts[0].addr),
|
addressToHash(randomAccounts[0].addr),
|
||||||
},
|
},
|
||||||
Data: hexutil.Bytes(common.BigToHash(big.NewInt(50)).Bytes()),
|
Data: hexutil.Bytes(common.BigToHash(big.NewInt(50)).Bytes()),
|
||||||
BlockNumber: hexutil.Uint64(11),
|
BlockNumber: hexutil.Uint64(11),
|
||||||
|
BlockTimestamp: hexutil.Uint64(0x70),
|
||||||
}, {
|
}, {
|
||||||
Address: transferAddress,
|
Address: transferAddress,
|
||||||
Topics: []common.Hash{
|
Topics: []common.Hash{
|
||||||
|
|
@ -1862,9 +1865,10 @@ func TestSimulateV1(t *testing.T) {
|
||||||
addressToHash(randomAccounts[0].addr),
|
addressToHash(randomAccounts[0].addr),
|
||||||
addressToHash(fixedAccount.addr),
|
addressToHash(fixedAccount.addr),
|
||||||
},
|
},
|
||||||
Data: hexutil.Bytes(common.BigToHash(big.NewInt(100)).Bytes()),
|
Data: hexutil.Bytes(common.BigToHash(big.NewInt(100)).Bytes()),
|
||||||
BlockNumber: hexutil.Uint64(11),
|
BlockNumber: hexutil.Uint64(11),
|
||||||
Index: hexutil.Uint(1),
|
BlockTimestamp: hexutil.Uint64(0x70),
|
||||||
|
Index: hexutil.Uint(1),
|
||||||
}},
|
}},
|
||||||
Status: "0x1",
|
Status: "0x1",
|
||||||
}},
|
}},
|
||||||
|
|
|
||||||
|
|
@ -53,15 +53,17 @@ type tracer struct {
|
||||||
count int
|
count int
|
||||||
traceTransfers bool
|
traceTransfers bool
|
||||||
blockNumber uint64
|
blockNumber uint64
|
||||||
|
blockTimestamp uint64
|
||||||
blockHash common.Hash
|
blockHash common.Hash
|
||||||
txHash common.Hash
|
txHash common.Hash
|
||||||
txIdx uint
|
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{
|
return &tracer{
|
||||||
traceTransfers: traceTransfers,
|
traceTransfers: traceTransfers,
|
||||||
blockNumber: blockNumber,
|
blockNumber: blockNumber,
|
||||||
|
blockTimestamp: blockTimestamp,
|
||||||
blockHash: blockHash,
|
blockHash: blockHash,
|
||||||
txHash: txHash,
|
txHash: txHash,
|
||||||
txIdx: txIndex,
|
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) {
|
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{
|
t.logs[len(t.logs)-1] = append(t.logs[len(t.logs)-1], &types.Log{
|
||||||
Address: address,
|
Address: address,
|
||||||
Topics: topics,
|
Topics: topics,
|
||||||
Data: data,
|
Data: data,
|
||||||
BlockNumber: t.blockNumber,
|
BlockNumber: t.blockNumber,
|
||||||
BlockHash: t.blockHash,
|
BlockTimestamp: t.blockTimestamp,
|
||||||
TxHash: t.txHash,
|
BlockHash: t.blockHash,
|
||||||
TxIndex: t.txIdx,
|
TxHash: t.txHash,
|
||||||
Index: uint(t.count),
|
TxIndex: t.txIdx,
|
||||||
|
Index: uint(t.count),
|
||||||
})
|
})
|
||||||
t.count++
|
t.count++
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -244,7 +244,7 @@ func (sim *simulator) processBlock(ctx context.Context, block *simBlock, header,
|
||||||
callResults = make([]simCallResult, len(block.Calls))
|
callResults = make([]simCallResult, len(block.Calls))
|
||||||
receipts = make([]*types.Receipt, len(block.Calls))
|
receipts = make([]*types.Receipt, len(block.Calls))
|
||||||
// Block hash will be repaired after execution.
|
// 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{
|
vmConfig = &vm.Config{
|
||||||
NoBaseFee: !sim.validate,
|
NoBaseFee: !sim.validate,
|
||||||
Tracer: tracer.Hooks(),
|
Tracer: tracer.Hooks(),
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue