Skip to content

Commit 197b734

Browse files
PLEX-1843: add node balances to beholder
1 parent 1497009 commit 197b734

File tree

5 files changed

+60
-41
lines changed

5 files changed

+60
-41
lines changed

go.mod

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,31 +23,31 @@ require (
2323
github.com/pelletier/go-toml v1.9.5
2424
github.com/pelletier/go-toml/v2 v2.2.4
2525
github.com/pkg/errors v0.9.1
26-
github.com/prometheus/client_golang v1.22.0
26+
github.com/prometheus/client_golang v1.23.2
2727
github.com/prometheus/client_model v0.6.2
28-
github.com/prometheus/common v0.65.0
28+
github.com/prometheus/common v0.66.1
2929
github.com/shopspring/decimal v1.4.0
3030
github.com/smartcontractkit/chain-selectors v1.0.67
3131
github.com/smartcontractkit/chainlink-common v0.9.6-0.20251001150007-98903c79c124
3232
github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20250827130336-5922343458be
3333
github.com/smartcontractkit/chainlink-framework/capabilities v0.0.0-20250818175541-3389ac08a563
3434
github.com/smartcontractkit/chainlink-framework/chains v0.0.0-20250717121125-2350c82883e2
35-
github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20250717121125-2350c82883e2
35+
github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20251017205617-4193b48df489
3636
github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20250729142306-508e798f6a5d
3737
github.com/smartcontractkit/chainlink-protos/svr v1.1.0
3838
github.com/smartcontractkit/chainlink-tron/relayer v0.0.11-0.20250815105909-75499abc4335
3939
github.com/smartcontractkit/libocr v0.0.0-20250707144819-babe0ec4e358
40-
github.com/stretchr/testify v1.10.0
40+
github.com/stretchr/testify v1.11.1
4141
github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a
4242
github.com/tidwall/gjson v1.18.0
4343
github.com/ugorji/go/codec v1.2.12
4444
go.opentelemetry.io/otel v1.37.0
4545
go.opentelemetry.io/otel/metric v1.37.0
4646
go.uber.org/multierr v1.11.0
4747
go.uber.org/zap v1.27.0
48-
golang.org/x/crypto v0.40.0
48+
golang.org/x/crypto v0.41.0
4949
golang.org/x/exp v0.0.0-20250711185948-6ae5c78190dc
50-
google.golang.org/protobuf v1.36.7
50+
google.golang.org/protobuf v1.36.8
5151
gopkg.in/guregu/null.v4 v4.0.0
5252
)
5353

@@ -190,11 +190,12 @@ require (
190190
go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect
191191
go.opentelemetry.io/otel/trace v1.37.0 // indirect
192192
go.opentelemetry.io/proto/otlp v1.6.0 // indirect
193+
go.yaml.in/yaml/v2 v2.4.2 // indirect
193194
golang.org/x/mod v0.26.0 // indirect
194-
golang.org/x/net v0.42.0 // indirect
195+
golang.org/x/net v0.43.0 // indirect
195196
golang.org/x/sync v0.16.0 // indirect
196-
golang.org/x/sys v0.34.0 // indirect
197-
golang.org/x/text v0.27.0 // indirect
197+
golang.org/x/sys v0.35.0 // indirect
198+
golang.org/x/text v0.28.0 // indirect
198199
golang.org/x/time v0.12.0 // indirect
199200
golang.org/x/tools v0.35.0 // indirect
200201
golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect

go.sum

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -571,13 +571,13 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
571571
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
572572
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
573573
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
574-
github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
575-
github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
574+
github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o=
575+
github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg=
576576
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
577577
github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
578578
github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
579-
github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE=
580-
github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8=
579+
github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs=
580+
github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA=
581581
github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
582582
github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
583583
github.com/prysmaticlabs/gohashtree v0.0.4-beta h1:H/EbCuXPeTV3lpKeXGPpEV9gsUpkqOOVnWapUyeWro4=
@@ -630,8 +630,8 @@ github.com/smartcontractkit/chainlink-framework/capabilities v0.0.0-202508181755
630630
github.com/smartcontractkit/chainlink-framework/capabilities v0.0.0-20250818175541-3389ac08a563/go.mod h1:jP5mrOLFEYZZkl7EiCHRRIMSSHCQsYypm1OZSus//iI=
631631
github.com/smartcontractkit/chainlink-framework/chains v0.0.0-20250717121125-2350c82883e2 h1:JU1JUrkzdAUHsOYdS9DENPkJfmrxweFRPRSztad6oPM=
632632
github.com/smartcontractkit/chainlink-framework/chains v0.0.0-20250717121125-2350c82883e2/go.mod h1:+pRGfDej1r7cHMs1dYmuyPuOZzYB9Q+PKu0FvZOYlmw=
633-
github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20250717121125-2350c82883e2 h1:ysZjKH+BpWlQhF93kr/Lc668UlCvT9NjfcsGdZT19I8=
634-
github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20250717121125-2350c82883e2/go.mod h1:jo+cUqNcHwN8IF7SInQNXDZ8qzBsyMpnLdYbDswviFc=
633+
github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20251017205617-4193b48df489 h1:W9HT/VSgqHxXARPuYeavNzN9ST2PULfzo8CbdDBunbs=
634+
github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20251017205617-4193b48df489/go.mod h1:RIJyqN0xvuL+pIAvugGCImVIH2sNMEwULprF3ddyUNQ=
635635
github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20250729142306-508e798f6a5d h1:pTYIcsWHTMG5fAcbRUA8Qk5yscXKdSpopQ0DUEOjPik=
636636
github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20250729142306-508e798f6a5d/go.mod h1:2JTBNp3FlRdO/nHc4dsc9bfxxMClMO1Qt8sLJgtreBY=
637637
github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20250911124514-5874cc6d62b2 h1:1/KdO5AbUr3CmpLjMPuJXPo2wHMbfB8mldKLsg7D4M8=
@@ -677,8 +677,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO
677677
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
678678
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
679679
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
680-
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
681-
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
680+
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
681+
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
682682
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
683683
github.com/supranational/blst v0.3.14 h1:xNMoHRJOTwMn63ip6qoWJ2Ymgvj7E2b9jY2FAwY+qRo=
684684
github.com/supranational/blst v0.3.14/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw=
@@ -797,6 +797,8 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
797797
go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
798798
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
799799
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
800+
go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
801+
go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
800802
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
801803
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
802804
golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
@@ -814,8 +816,8 @@ golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98y
814816
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
815817
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
816818
golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ=
817-
golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM=
818-
golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY=
819+
golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
820+
golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
819821
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
820822
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
821823
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -909,8 +911,8 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
909911
golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
910912
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
911913
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
912-
golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs=
913-
golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8=
914+
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
915+
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
914916
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
915917
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
916918
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1010,8 +1012,8 @@ golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
10101012
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
10111013
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
10121014
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
1013-
golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
1014-
golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
1015+
golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
1016+
golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
10151017
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
10161018
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
10171019
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@@ -1036,8 +1038,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
10361038
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
10371039
golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
10381040
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
1039-
golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4=
1040-
golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU=
1041+
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
1042+
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
10411043
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
10421044
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
10431045
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -1226,8 +1228,8 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj
12261228
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
12271229
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
12281230
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
1229-
google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A=
1230-
google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
1231+
google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc=
1232+
google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
12311233
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
12321234
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
12331235
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=

pkg/chains/legacyevm/chain.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,10 @@ func newChain(cfg *config.ChainScoped, nodes []*toml.Node, opts ChainRelayOpts,
282282

283283
var balanceMonitor monitor.BalanceMonitor
284284
if opts.ChainConfigs.RPCEnabled() && cfg.EVM().BalanceMonitor().Enabled() {
285-
balanceMonitor = monitor.NewBalanceMonitor(cl, opts.KeyStore, l)
285+
balanceMonitor, err = monitor.NewBalanceMonitor(cl, opts.KeyStore, l)
286+
if err != nil {
287+
return nil, fmt.Errorf("failed to create balance monitor for chain with ID %s: %w", chainID, err)
288+
}
286289
headBroadcaster.Subscribe(balanceMonitor)
287290
}
288291

pkg/monitor/balance.go

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ type (
3939

4040
ethClient evmclient.Client
4141
chainIDStr string
42+
balanceMetrics metrics.GenericBalanceMetrics
4243
ethKeyStore keys.AddressLister
4344
ethBalances map[common.Address]*assets.Eth
4445
ethBalancesMtx sync.RWMutex
@@ -51,20 +52,26 @@ type (
5152
var _ BalanceMonitor = (*balanceMonitor)(nil)
5253

5354
// NewBalanceMonitor returns a new balanceMonitor
54-
func NewBalanceMonitor(ethClient evmclient.Client, ethKeyStore keys.AddressLister, lggr logger.Logger) *balanceMonitor {
55+
func NewBalanceMonitor(ethClient evmclient.Client, ethKeyStore keys.AddressLister, lggr logger.Logger) (*balanceMonitor, error) {
56+
balanceMetrics, err := metrics.NewGenericBalanceMetrics(metrics.EVM, ethClient.ConfiguredChainID().String())
57+
if err != nil {
58+
return nil, fmt.Errorf("failed to create balance metrics: %w", err)
59+
}
60+
5561
bm := &balanceMonitor{
56-
ethClient: ethClient,
57-
chainIDStr: ethClient.ConfiguredChainID().String(),
58-
ethKeyStore: ethKeyStore,
59-
ethBalances: make(map[common.Address]*assets.Eth),
62+
ethClient: ethClient,
63+
chainIDStr: ethClient.ConfiguredChainID().String(),
64+
balanceMetrics: balanceMetrics,
65+
ethKeyStore: ethKeyStore,
66+
ethBalances: make(map[common.Address]*assets.Eth),
6067
}
6168
bm.Service, bm.eng = services.Config{
6269
Name: "BalanceMonitor",
6370
Start: bm.start,
6471
Close: bm.close,
6572
}.NewServiceEngine(lggr)
6673
bm.sleeperTask = utils.NewSleeperTaskCtx(&worker{bm: bm})
67-
return bm
74+
return bm, nil
6875
}
6976

7077
func (bm *balanceMonitor) start(ctx context.Context) error {
@@ -134,7 +141,7 @@ func (bm *balanceMonitor) promUpdateEthBalance(balance *assets.Eth, from common.
134141
return
135142
}
136143

137-
metrics.NodeBalance.WithLabelValues(from.Hex(), bm.chainIDStr, metrics.EVM).Set(balanceFloat)
144+
bm.balanceMetrics.RecordNodeBalance(context.Background(), from.Hex(), balanceFloat)
138145
// TODO: Remove deprecated metric
139146
promETHBalance.WithLabelValues(from.Hex(), bm.chainIDStr).Set(balanceFloat)
140147
}

pkg/monitor/balance_test.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ func TestBalanceMonitor_Start(t *testing.T) {
3939
ethKeyStore := keystest.Addresses{k0Addr, k1Addr}
4040
ethClient := newEthClientMock(t)
4141

42-
bm := monitor.NewBalanceMonitor(ethClient, ethKeyStore, logger.Test(t))
42+
bm, err := monitor.NewBalanceMonitor(ethClient, ethKeyStore, logger.Test(t))
43+
require.NoError(t, err)
4344

4445
k0bal := big.NewInt(42)
4546
k1bal := big.NewInt(43)
@@ -64,7 +65,8 @@ func TestBalanceMonitor_Start(t *testing.T) {
6465
ethKeyStore := keystest.Addresses{k0Addr}
6566
ethClient := newEthClientMock(t)
6667

67-
bm := monitor.NewBalanceMonitor(ethClient, ethKeyStore, logger.Test(t))
68+
bm, err := monitor.NewBalanceMonitor(ethClient, ethKeyStore, logger.Test(t))
69+
require.NoError(t, err)
6870
k0bal := big.NewInt(42)
6971

7072
ethClient.On("BalanceAt", mock.Anything, k0Addr, nilBigInt).Once().Return(k0bal, nil)
@@ -81,7 +83,8 @@ func TestBalanceMonitor_Start(t *testing.T) {
8183
ethKeyStore := keystest.Addresses{k0Addr}
8284
ethClient := newEthClientMock(t)
8385

84-
bm := monitor.NewBalanceMonitor(ethClient, ethKeyStore, logger.Test(t))
86+
bm, err := monitor.NewBalanceMonitor(ethClient, ethKeyStore, logger.Test(t))
87+
require.NoError(t, err)
8588
ctxCancelledAwaiter := testutils.NewAwaiter()
8689

8790
ethClient.On("BalanceAt", mock.Anything, k0Addr, nilBigInt).Once().Run(func(args mock.Arguments) {
@@ -108,7 +111,8 @@ func TestBalanceMonitor_Start(t *testing.T) {
108111
ethKeyStore := keystest.Addresses{k0Addr}
109112
ethClient := newEthClientMock(t)
110113

111-
bm := monitor.NewBalanceMonitor(ethClient, ethKeyStore, logger.Test(t))
114+
bm, err := monitor.NewBalanceMonitor(ethClient, ethKeyStore, logger.Test(t))
115+
require.NoError(t, err)
112116

113117
ethClient.On("BalanceAt", mock.Anything, k0Addr, nilBigInt).
114118
Once().
@@ -131,7 +135,8 @@ func TestBalanceMonitor_OnNewLongestChain_UpdatesBalance(t *testing.T) {
131135
ethKeyStore := keystest.Addresses{k0Addr, k1Addr}
132136
ethClient := newEthClientMock(t)
133137

134-
bm := monitor.NewBalanceMonitor(ethClient, ethKeyStore, logger.Test(t))
138+
bm, err := monitor.NewBalanceMonitor(ethClient, ethKeyStore, logger.Test(t))
139+
require.NoError(t, err)
135140
k0bal := big.NewInt(42)
136141
// Deliberately larger than a 64 bit unsigned integer to test overflow
137142
k1bal := big.NewInt(0)
@@ -177,7 +182,8 @@ func TestBalanceMonitor_FewerRPCCallsWhenBehind(t *testing.T) {
177182
ethKeyStore := keystest.Addresses{testutils.NewAddress()}
178183
ethClient := newEthClientMock(t)
179184

180-
bm := monitor.NewBalanceMonitor(ethClient, ethKeyStore, logger.Test(t))
185+
bm, err := monitor.NewBalanceMonitor(ethClient, ethKeyStore, logger.Test(t))
186+
require.NoError(t, err)
181187
ethClient.On("BalanceAt", mock.Anything, mock.Anything, mock.Anything).
182188
Once().
183189
Return(big.NewInt(1), nil)

0 commit comments

Comments
 (0)