mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2025-01-03 17:44:29 +00:00
add field timestamp
to eth_getLogs
response (#4950)
* add_abigen_error_handle * add abigen error type test code * add field timestamp in `eth_getLogs` api add field timestamp in `eth_getLogs` api
This commit is contained in:
parent
cce64f6a33
commit
bc7921a8ab
@ -191,6 +191,7 @@ func (api *APIImpl) GetLogs(ctx context.Context, crit filters.FilterCriteria) ([
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
timestamp := uint64(txn.Time().Unix())
|
||||||
txHash := txn.Hash()
|
txHash := txn.Hash()
|
||||||
msg, err := txn.AsMessage(*lastSigner, lastHeader.BaseFee, lastRules)
|
msg, err := txn.AsMessage(*lastSigner, lastHeader.BaseFee, lastRules)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -213,6 +214,7 @@ func (api *APIImpl) GetLogs(ctx context.Context, crit filters.FilterCriteria) ([
|
|||||||
filtered := filterLogs(ibs.GetLogs(txHash), crit.Addresses, crit.Topics)
|
filtered := filterLogs(ibs.GetLogs(txHash), crit.Addresses, crit.Topics)
|
||||||
for _, log := range filtered {
|
for _, log := range filtered {
|
||||||
log.BlockNumber = blockNum
|
log.BlockNumber = blockNum
|
||||||
|
log.Timestamp = timestamp
|
||||||
log.BlockHash = lastBlockHash
|
log.BlockHash = lastBlockHash
|
||||||
log.TxHash = txHash
|
log.TxHash = txHash
|
||||||
log.Index = 0
|
log.Index = 0
|
||||||
|
@ -19,6 +19,7 @@ func (l Log) MarshalJSON() ([]byte, error) {
|
|||||||
Topics []common.Hash `json:"topics" gencodec:"required"`
|
Topics []common.Hash `json:"topics" gencodec:"required"`
|
||||||
Data hexutil.Bytes `json:"data" gencodec:"required"`
|
Data hexutil.Bytes `json:"data" gencodec:"required"`
|
||||||
BlockNumber hexutil.Uint64 `json:"blockNumber"`
|
BlockNumber hexutil.Uint64 `json:"blockNumber"`
|
||||||
|
Timestamp hexutil.Uint64 `json:"timestamp"`
|
||||||
TxHash common.Hash `json:"transactionHash" gencodec:"required"`
|
TxHash common.Hash `json:"transactionHash" gencodec:"required"`
|
||||||
TxIndex hexutil.Uint `json:"transactionIndex"`
|
TxIndex hexutil.Uint `json:"transactionIndex"`
|
||||||
BlockHash common.Hash `json:"blockHash"`
|
BlockHash common.Hash `json:"blockHash"`
|
||||||
@ -30,6 +31,7 @@ func (l Log) MarshalJSON() ([]byte, error) {
|
|||||||
enc.Topics = l.Topics
|
enc.Topics = l.Topics
|
||||||
enc.Data = l.Data
|
enc.Data = l.Data
|
||||||
enc.BlockNumber = hexutil.Uint64(l.BlockNumber)
|
enc.BlockNumber = hexutil.Uint64(l.BlockNumber)
|
||||||
|
enc.Timestamp = hexutil.Uint64(l.Timestamp)
|
||||||
enc.TxHash = l.TxHash
|
enc.TxHash = l.TxHash
|
||||||
enc.TxIndex = hexutil.Uint(l.TxIndex)
|
enc.TxIndex = hexutil.Uint(l.TxIndex)
|
||||||
enc.BlockHash = l.BlockHash
|
enc.BlockHash = l.BlockHash
|
||||||
@ -45,6 +47,7 @@ func (l *Log) UnmarshalJSON(input []byte) error {
|
|||||||
Topics []common.Hash `json:"topics" gencodec:"required"`
|
Topics []common.Hash `json:"topics" gencodec:"required"`
|
||||||
Data *hexutil.Bytes `json:"data" gencodec:"required"`
|
Data *hexutil.Bytes `json:"data" gencodec:"required"`
|
||||||
BlockNumber *hexutil.Uint64 `json:"blockNumber"`
|
BlockNumber *hexutil.Uint64 `json:"blockNumber"`
|
||||||
|
Timestamp *hexutil.Uint64 `json:"timestamp"`
|
||||||
TxHash *common.Hash `json:"transactionHash" gencodec:"required"`
|
TxHash *common.Hash `json:"transactionHash" gencodec:"required"`
|
||||||
TxIndex *hexutil.Uint `json:"transactionIndex"`
|
TxIndex *hexutil.Uint `json:"transactionIndex"`
|
||||||
BlockHash *common.Hash `json:"blockHash"`
|
BlockHash *common.Hash `json:"blockHash"`
|
||||||
@ -70,6 +73,9 @@ func (l *Log) UnmarshalJSON(input []byte) error {
|
|||||||
if dec.BlockNumber != nil {
|
if dec.BlockNumber != nil {
|
||||||
l.BlockNumber = uint64(*dec.BlockNumber)
|
l.BlockNumber = uint64(*dec.BlockNumber)
|
||||||
}
|
}
|
||||||
|
if dec.Timestamp != nil {
|
||||||
|
l.Timestamp = uint64(*dec.Timestamp)
|
||||||
|
}
|
||||||
if dec.TxHash == nil {
|
if dec.TxHash == nil {
|
||||||
return errors.New("missing required field 'transactionHash' for Log")
|
return errors.New("missing required field 'transactionHash' for Log")
|
||||||
}
|
}
|
||||||
|
@ -41,6 +41,8 @@ type Log struct {
|
|||||||
// but not secured by consensus.
|
// but not secured by consensus.
|
||||||
// block in which the transaction was included
|
// block in which the transaction was included
|
||||||
BlockNumber uint64 `json:"blockNumber" codec:"-"`
|
BlockNumber uint64 `json:"blockNumber" codec:"-"`
|
||||||
|
|
||||||
|
Timestamp uint64 `json:"timestamp" codec:"-"`
|
||||||
// hash of the transaction
|
// hash of the transaction
|
||||||
TxHash common.Hash `json:"transactionHash" gencodec:"required" codec:"-"`
|
TxHash common.Hash `json:"transactionHash" gencodec:"required" codec:"-"`
|
||||||
// index of the transaction in the block
|
// index of the transaction in the block
|
||||||
|
@ -33,11 +33,12 @@ var unmarshalLogTests = map[string]struct {
|
|||||||
wantError error
|
wantError error
|
||||||
}{
|
}{
|
||||||
"ok": {
|
"ok": {
|
||||||
input: `{"address":"0xecf8f87f810ecf450940c9f60066b4a7a501d6a7","blockHash":"0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056","blockNumber":"0x1ecfa4","data":"0x000000000000000000000000000000000000000000000001a055690d9db80000","logIndex":"0x2","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x00000000000000000000000080b2c9d7cbbf30a1b0fc8983c647d754c6525615"],"transactionHash":"0x3b198bfd5d2907285af009e9ae84a0ecd63677110d89d7e030251acb87f6487e","transactionIndex":"0x3"}`,
|
input: `{"address":"0xecf8f87f810ecf450940c9f60066b4a7a501d6a7","blockHash":"0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056","blockNumber":"0x1ecfa4","timestamp":"0x57a53d3a","data":"0x000000000000000000000000000000000000000000000001a055690d9db80000","logIndex":"0x2","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x00000000000000000000000080b2c9d7cbbf30a1b0fc8983c647d754c6525615"],"transactionHash":"0x3b198bfd5d2907285af009e9ae84a0ecd63677110d89d7e030251acb87f6487e","transactionIndex":"0x3"}`,
|
||||||
want: &Log{
|
want: &Log{
|
||||||
Address: common.HexToAddress("0xecf8f87f810ecf450940c9f60066b4a7a501d6a7"),
|
Address: common.HexToAddress("0xecf8f87f810ecf450940c9f60066b4a7a501d6a7"),
|
||||||
BlockHash: common.HexToHash("0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056"),
|
BlockHash: common.HexToHash("0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056"),
|
||||||
BlockNumber: 2019236,
|
BlockNumber: 2019236,
|
||||||
|
Timestamp: 1470446906,
|
||||||
Data: hexutil.MustDecode("0x000000000000000000000000000000000000000000000001a055690d9db80000"),
|
Data: hexutil.MustDecode("0x000000000000000000000000000000000000000000000001a055690d9db80000"),
|
||||||
Index: 2,
|
Index: 2,
|
||||||
TxIndex: 3,
|
TxIndex: 3,
|
||||||
@ -49,11 +50,12 @@ var unmarshalLogTests = map[string]struct {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
"empty data": {
|
"empty data": {
|
||||||
input: `{"address":"0xecf8f87f810ecf450940c9f60066b4a7a501d6a7","blockHash":"0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056","blockNumber":"0x1ecfa4","data":"0x","logIndex":"0x2","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x00000000000000000000000080b2c9d7cbbf30a1b0fc8983c647d754c6525615"],"transactionHash":"0x3b198bfd5d2907285af009e9ae84a0ecd63677110d89d7e030251acb87f6487e","transactionIndex":"0x3"}`,
|
input: `{"address":"0xecf8f87f810ecf450940c9f60066b4a7a501d6a7","blockHash":"0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056","blockNumber":"0x1ecfa4","timestamp":"0x57a53d3a","data":"0x","logIndex":"0x2","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x00000000000000000000000080b2c9d7cbbf30a1b0fc8983c647d754c6525615"],"transactionHash":"0x3b198bfd5d2907285af009e9ae84a0ecd63677110d89d7e030251acb87f6487e","transactionIndex":"0x3"}`,
|
||||||
want: &Log{
|
want: &Log{
|
||||||
Address: common.HexToAddress("0xecf8f87f810ecf450940c9f60066b4a7a501d6a7"),
|
Address: common.HexToAddress("0xecf8f87f810ecf450940c9f60066b4a7a501d6a7"),
|
||||||
BlockHash: common.HexToHash("0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056"),
|
BlockHash: common.HexToHash("0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056"),
|
||||||
BlockNumber: 2019236,
|
BlockNumber: 2019236,
|
||||||
|
Timestamp: 1470446906,
|
||||||
Data: []byte{},
|
Data: []byte{},
|
||||||
Index: 2,
|
Index: 2,
|
||||||
TxIndex: 3,
|
TxIndex: 3,
|
||||||
@ -70,6 +72,7 @@ var unmarshalLogTests = map[string]struct {
|
|||||||
Address: common.HexToAddress("0xecf8f87f810ecf450940c9f60066b4a7a501d6a7"),
|
Address: common.HexToAddress("0xecf8f87f810ecf450940c9f60066b4a7a501d6a7"),
|
||||||
BlockHash: common.Hash{},
|
BlockHash: common.Hash{},
|
||||||
BlockNumber: 0,
|
BlockNumber: 0,
|
||||||
|
Timestamp: 0,
|
||||||
Data: []byte{},
|
Data: []byte{},
|
||||||
Index: 0,
|
Index: 0,
|
||||||
TxIndex: 3,
|
TxIndex: 3,
|
||||||
@ -80,11 +83,12 @@ var unmarshalLogTests = map[string]struct {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
"Removed: true": {
|
"Removed: true": {
|
||||||
input: `{"address":"0xecf8f87f810ecf450940c9f60066b4a7a501d6a7","blockHash":"0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056","blockNumber":"0x1ecfa4","data":"0x","logIndex":"0x2","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"],"transactionHash":"0x3b198bfd5d2907285af009e9ae84a0ecd63677110d89d7e030251acb87f6487e","transactionIndex":"0x3","removed":true}`,
|
input: `{"address":"0xecf8f87f810ecf450940c9f60066b4a7a501d6a7","blockHash":"0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056","blockNumber":"0x1ecfa4","timestamp":"0x57a53d3a","data":"0x","logIndex":"0x2","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"],"transactionHash":"0x3b198bfd5d2907285af009e9ae84a0ecd63677110d89d7e030251acb87f6487e","transactionIndex":"0x3","removed":true}`,
|
||||||
want: &Log{
|
want: &Log{
|
||||||
Address: common.HexToAddress("0xecf8f87f810ecf450940c9f60066b4a7a501d6a7"),
|
Address: common.HexToAddress("0xecf8f87f810ecf450940c9f60066b4a7a501d6a7"),
|
||||||
BlockHash: common.HexToHash("0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056"),
|
BlockHash: common.HexToHash("0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056"),
|
||||||
BlockNumber: 2019236,
|
BlockNumber: 2019236,
|
||||||
|
Timestamp: 1470446906,
|
||||||
Data: []byte{},
|
Data: []byte{},
|
||||||
Index: 2,
|
Index: 2,
|
||||||
TxIndex: 3,
|
TxIndex: 3,
|
||||||
@ -96,7 +100,7 @@ var unmarshalLogTests = map[string]struct {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
"missing data": {
|
"missing data": {
|
||||||
input: `{"address":"0xecf8f87f810ecf450940c9f60066b4a7a501d6a7","blockHash":"0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056","blockNumber":"0x1ecfa4","logIndex":"0x2","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x00000000000000000000000080b2c9d7cbbf30a1b0fc8983c647d754c6525615","0x000000000000000000000000f9dff387dcb5cc4cca5b91adb07a95f54e9f1bb6"],"transactionHash":"0x3b198bfd5d2907285af009e9ae84a0ecd63677110d89d7e030251acb87f6487e","transactionIndex":"0x3"}`,
|
input: `{"address":"0xecf8f87f810ecf450940c9f60066b4a7a501d6a7","blockHash":"0x656c34545f90a730a19008c0e7a7cd4fb3895064b48d6d69761bd5abad681056","blockNumber":"0x1ecfa4","timestamp":"0x57a53d3a","logIndex":"0x2","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x00000000000000000000000080b2c9d7cbbf30a1b0fc8983c647d754c6525615","0x000000000000000000000000f9dff387dcb5cc4cca5b91adb07a95f54e9f1bb6"],"transactionHash":"0x3b198bfd5d2907285af009e9ae84a0ecd63677110d89d7e030251acb87f6487e","transactionIndex":"0x3"}`,
|
||||||
wantError: fmt.Errorf("missing required field 'data' for Log"),
|
wantError: fmt.Errorf("missing required field 'data' for Log"),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user