From a291512d955c21a80bb0b8a5c2cdd6ec9cbe3227 Mon Sep 17 00:00:00 2001 From: Mohammed Sohail Date: Mon, 24 Apr 2023 07:25:25 +0000 Subject: [PATCH] feat: add timestamp and txType to event payload * closes #39 --- internal/filter/gas_filter.go | 3 +++ internal/filter/register_filter.go | 17 ++++++++++------- internal/filter/token_index_filter.go | 3 +++ internal/filter/transfer_filter.go | 7 +++++++ internal/pub/jetstream.go | 2 ++ 5 files changed, 25 insertions(+), 7 deletions(-) diff --git a/internal/filter/gas_filter.go b/internal/filter/gas_filter.go index 6d073f5..67a6293 100644 --- a/internal/filter/gas_filter.go +++ b/internal/filter/gas_filter.go @@ -4,6 +4,7 @@ import ( "context" "github.com/celo-org/celo-blockchain/common" + "github.com/celo-org/celo-blockchain/common/hexutil" "github.com/grassrootseconomics/celoutils" "github.com/grassrootseconomics/cic-chain-events/internal/pub" "github.com/grassrootseconomics/cic-chain-events/pkg/fetch" @@ -53,9 +54,11 @@ func (f *GasFilter) Execute(_ context.Context, transaction *fetch.Transaction) ( giveToEvent := &pub.MinimalTxInfo{ Block: transaction.Block.Number, ContractAddress: celoutils.ChecksumAddress(transaction.To.Address), + Timestamp: hexutil.MustDecodeUint64(transaction.Block.Timestamp), To: address.Hex(), TxHash: transaction.Hash, TxIndex: transaction.Index, + TXType: "gas", } if transaction.Status == 1 { diff --git a/internal/filter/register_filter.go b/internal/filter/register_filter.go index f87e8ec..81a3d94 100644 --- a/internal/filter/register_filter.go +++ b/internal/filter/register_filter.go @@ -4,6 +4,7 @@ import ( "context" "github.com/celo-org/celo-blockchain/common" + "github.com/celo-org/celo-blockchain/common/hexutil" "github.com/grassrootseconomics/celoutils" "github.com/grassrootseconomics/cic-chain-events/internal/pub" "github.com/grassrootseconomics/cic-chain-events/pkg/fetch" @@ -21,25 +22,25 @@ var ( type ( RegisterFilterOpts struct { - Logg logf.Logger - Pub *pub.Pub + Logg logf.Logger + Pub *pub.Pub } RegisterFilter struct { - logg logf.Logger - pub *pub.Pub + logg logf.Logger + pub *pub.Pub } ) func NewRegisterFilter(o RegisterFilterOpts) Filter { return &RegisterFilter{ - logg: o.Logg, - pub: o.Pub, + logg: o.Logg, + pub: o.Pub, } } func (f *RegisterFilter) Execute(_ context.Context, transaction *fetch.Transaction) (bool, error) { - if len(transaction.InputData) < 10 { + if len(transaction.InputData) < 10 { return true, nil } @@ -53,9 +54,11 @@ func (f *RegisterFilter) Execute(_ context.Context, transaction *fetch.Transacti addEvent := &pub.MinimalTxInfo{ Block: transaction.Block.Number, ContractAddress: celoutils.ChecksumAddress(transaction.To.Address), + Timestamp: hexutil.MustDecodeUint64(transaction.Block.Timestamp), To: address.Hex(), TxHash: transaction.Hash, TxIndex: transaction.Index, + TXType: "register", } if transaction.Status == 1 { diff --git a/internal/filter/token_index_filter.go b/internal/filter/token_index_filter.go index d3a4cb9..8a5597f 100644 --- a/internal/filter/token_index_filter.go +++ b/internal/filter/token_index_filter.go @@ -6,6 +6,7 @@ import ( "sync" "github.com/celo-org/celo-blockchain/common" + "github.com/celo-org/celo-blockchain/common/hexutil" "github.com/grassrootseconomics/celoutils" "github.com/grassrootseconomics/cic-chain-events/internal/pub" "github.com/grassrootseconomics/cic-chain-events/pkg/fetch" @@ -60,9 +61,11 @@ func (f *TokenIndexFilter) Execute(_ context.Context, transaction *fetch.Transac addEvent := &pub.MinimalTxInfo{ Block: transaction.Block.Number, ContractAddress: celoutils.ChecksumAddress(transaction.To.Address), + Timestamp: hexutil.MustDecodeUint64(transaction.Block.Timestamp), To: address.Hex(), TxHash: transaction.Hash, TxIndex: transaction.Index, + TXType: "tokenAdd", } if transaction.Status == 1 { diff --git a/internal/filter/transfer_filter.go b/internal/filter/transfer_filter.go index 73a0d6c..eb818f4 100644 --- a/internal/filter/transfer_filter.go +++ b/internal/filter/transfer_filter.go @@ -5,6 +5,7 @@ import ( "math/big" "github.com/celo-org/celo-blockchain/common" + "github.com/celo-org/celo-blockchain/common/hexutil" "github.com/grassrootseconomics/celoutils" "github.com/grassrootseconomics/cic-chain-events/internal/pub" "github.com/grassrootseconomics/cic-chain-events/pkg/fetch" @@ -60,10 +61,12 @@ func (f *TransferFilter) Execute(_ context.Context, transaction *fetch.Transacti transferEvent := &pub.MinimalTxInfo{ Block: transaction.Block.Number, From: celoutils.ChecksumAddress(transaction.From.Address), + Timestamp: hexutil.MustDecodeUint64(transaction.Block.Timestamp), To: to.Hex(), ContractAddress: celoutils.ChecksumAddress(transaction.To.Address), TxHash: transaction.Hash, TxIndex: transaction.Index, + TXType: "transfer", Value: value.Uint64(), } @@ -94,10 +97,12 @@ func (f *TransferFilter) Execute(_ context.Context, transaction *fetch.Transacti transferEvent := &pub.MinimalTxInfo{ Block: transaction.Block.Number, From: from.Hex(), + Timestamp: hexutil.MustDecodeUint64(transaction.Block.Timestamp), To: to.Hex(), ContractAddress: celoutils.ChecksumAddress(transaction.To.Address), TxHash: transaction.Hash, TxIndex: transaction.Index, + TXType: "transferFrom", Value: value.Uint64(), } @@ -127,10 +132,12 @@ func (f *TransferFilter) Execute(_ context.Context, transaction *fetch.Transacti transferEvent := &pub.MinimalTxInfo{ Block: transaction.Block.Number, From: celoutils.ChecksumAddress(transaction.From.Address), + Timestamp: hexutil.MustDecodeUint64(transaction.Block.Timestamp), To: to.Hex(), ContractAddress: celoutils.ChecksumAddress(transaction.To.Address), TxHash: transaction.Hash, TxIndex: transaction.Index, + TXType: "mintTo", Value: value.Uint64(), } diff --git a/internal/pub/jetstream.go b/internal/pub/jetstream.go index 36f58b3..6df1813 100644 --- a/internal/pub/jetstream.go +++ b/internal/pub/jetstream.go @@ -31,8 +31,10 @@ type ( To string `json:"to"` ContractAddress string `json:"contractAddress"` Success bool `json:"success"` + Timestamp uint64 `json:"timestamp"` TxHash string `json:"transactionHash"` TxIndex uint `json:"transactionIndex"` + TXType string `json:"txType"` Value uint64 `json:"value"` } )