Skip to content

Commit

Permalink
Merge branch 'fastnet' into x1-fastnet-txtracing
Browse files Browse the repository at this point in the history
  • Loading branch information
nibty committed Mar 26, 2024
2 parents fc0911a + 982bc7b commit d94e8d6
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 8 deletions.
39 changes: 34 additions & 5 deletions ethapi/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@ const (
)

var (
noUncles = []evmcore.EvmHeader{}
noUncles = []evmcore.EvmHeader{}
startTime = time.Now()
)

// PublicEthereumAPI provides an API to access Ethereum related information.
Expand Down Expand Up @@ -175,6 +176,34 @@ func (s *PublicEthereumAPI) Syncing() (interface{}, error) {
}, nil
}

// Health returns true if node is healthy and synced
func (s *PublicEthereumAPI) Health(blockTimeSecThreshold uint64, uptimeSecThreshold uint, peerCountThreshold uint) (interface{}, error) {
blockTime := time.Duration(blockTimeSecThreshold) * time.Second
uptimeThreshold := time.Duration(uptimeSecThreshold) * time.Second
uptime := time.Since(startTime)
progress := s.b.Progress()
peerCount := s.b.PeerCount()
log.Debug("Health check", "peerCount", peerCount, "peerCountThreshold", peerCountThreshold, "uptime", uptime, "uptimeThreshold", uptimeThreshold, "progress", progress, "currentBlockTime", time.Since(progress.CurrentBlockTime.Time()), "blockTime", blockTime)

if uptime < uptimeThreshold {
return false, errors.New(fmt.Sprintf("Uptime threshold not reached"))
}

if progress.CurrentBlock < progress.HighestBlock {
return false, errors.New(fmt.Sprintf("The current block is less than the highest block"))
}

if peerCount < int(peerCountThreshold) {
return false, errors.New(fmt.Sprintf("Peer count threshold not reached"))
}

if blockTime > 0 && time.Since(progress.CurrentBlockTime.Time()) > blockTime {
return false, errors.New("block time threshold exceeded")
}

return true, nil
}

// PublicTxPoolAPI offers and API for the transaction pool. It only operates on data that is non confidential.
type PublicTxPoolAPI struct {
b Backend
Expand Down Expand Up @@ -812,10 +841,10 @@ func (s *PublicBlockChainAPI) calculateExtBlockApi(ctx context.Context, blkNumbe
}

// GetBlockByNumber returns the requested canonical block.
// * When blockNr is -1 the chain head is returned.
// * When blockNr is -2 the pending chain head is returned.
// * When fullTx is true all transactions in the block are returned, otherwise
// only the transaction hash is returned.
// - When blockNr is -1 the chain head is returned.
// - When blockNr is -2 the pending chain head is returned.
// - When fullTx is true all transactions in the block are returned, otherwise
// only the transaction hash is returned.
func (s *PublicBlockChainAPI) GetBlockByNumber(ctx context.Context, number rpc.BlockNumber, fullTx bool) (map[string]interface{}, error) {
block, err := s.b.BlockByNumber(ctx, number)
if block != nil && err == nil {
Expand Down
1 change: 1 addition & 0 deletions ethapi/backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ type PeerProgress struct {
type Backend interface {
// General Ethereum API
Progress() PeerProgress
PeerCount() int
SuggestGasTipCap(ctx context.Context, certainty uint64) *big.Int
EffectiveMinGasPrice(ctx context.Context) *big.Int
ChainDb() ethdb.Database
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,6 @@ require (
gopkg.in/urfave/cli.v1 v1.20.0
)

replace github.com/ethereum/go-ethereum => github.com/Fantom-foundation/go-ethereum v1.10.8-ftm-rc9
replace github.com/ethereum/go-ethereum => github.com/faircrypto/go-ethereum v1.10.8-ftm-rc9.0.20240326165528-4d2aa2159de9

replace github.com/dvyukov/go-fuzz => github.com/guzenok/go-fuzz v0.0.0-20210103140116-f9104dfb626f
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,6 @@ github.com/CloudyKit/jet v2.1.3-0.20180809161101-62edd43e4f88+incompatible/go.mo
github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ=
github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
github.com/Fantom-foundation/go-ethereum v1.10.8-ftm-rc9 h1:aB5yATSn4a2SmEr717Tq/YBWHcobLnRgAjXuLnqt420=
github.com/Fantom-foundation/go-ethereum v1.10.8-ftm-rc9/go.mod h1:IeQDjWCNBj/QiWIPosfF6/kRC6pHPNs7W7LfBzjj+P4=
github.com/Fantom-foundation/lachesis-base v0.0.0-20221101131534-22299068014e h1:MrNcnBTl5UOn7d1qVb+BfKx+BPZDdfQm1CUDzQkOhEg=
github.com/Fantom-foundation/lachesis-base v0.0.0-20221101131534-22299068014e/go.mod h1:CFMonaK1v/QHwpjLszuycFDgLXNazZqZxciwhKwXDVQ=
github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY=
Expand Down Expand Up @@ -164,6 +162,8 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7
github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw=
github.com/evalphobia/logrus_sentry v0.8.2 h1:dotxHq+YLZsT1Bb45bB5UQbfCh3gM/nFFetyN46VoDQ=
github.com/evalphobia/logrus_sentry v0.8.2/go.mod h1:pKcp+vriitUqu9KiWj/VRFbRfFNUwz95/UkgG8a6MNc=
github.com/faircrypto/go-ethereum v1.10.8-ftm-rc9.0.20240326165528-4d2aa2159de9 h1:0V03X2gNOx60uRKxjWX1HnmWYt+QaM0Isr9S804jD+c=
github.com/faircrypto/go-ethereum v1.10.8-ftm-rc9.0.20240326165528-4d2aa2159de9/go.mod h1:IeQDjWCNBj/QiWIPosfF6/kRC6pHPNs7W7LfBzjj+P4=
github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8=
github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
Expand Down
4 changes: 4 additions & 0 deletions gossip/ethapi_backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -564,3 +564,7 @@ func (b *EthAPIBackend) SealedEpochTiming(ctx context.Context) (start inter.Time
es := b.svc.store.GetEpochState()
return es.PrevEpochStart, es.EpochStart
}

func (b *EthAPIBackend) PeerCount() int {
return b.svc.handler.peers.Len()
}

0 comments on commit d94e8d6

Please sign in to comment.