Skip to content

Commit cb3d450

Browse files
authored
Merge pull request #8575 from ethereum/beaconchain-endpoint-patch
Use latest value from Beaconcha.in endpoint
2 parents 95e4c7c + 6793cc7 commit cb3d450

File tree

1 file changed

+19
-21
lines changed

1 file changed

+19
-21
lines changed

src/components/Staking/StakingStatsBox.tsx

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { getLocaleForNumberFormat } from "../../utils/translations"
1616
// Constants
1717
const NA_ERROR = "n/a"
1818
const ZERO = "0"
19+
const MAX_EFFECTIVE_BALANCE = 32
1920

2021
// Styled components
2122
const Container = styled.div`
@@ -73,11 +74,15 @@ const StyledIcon = styled(Icon)`
7374
}
7475
`
7576

76-
const BeaconchainTooltip = () => (
77+
// BeaconchainTooltip component
78+
const BeaconchainTooltip = ({ isEthStore }: { isEthStore?: boolean }) => (
7779
<Tooltip
7880
content={
7981
<div>
8082
<Translation id="data-provided-by" />{" "}
83+
{isEthStore && (
84+
<Link to="https://github.com/gobitfly/eth.store/">ETH.STORE, </Link>
85+
)}
8186
<Link to="https://beaconcha.in">Beaconcha.in</Link>
8287
</div>
8388
}
@@ -106,6 +111,7 @@ const StakingStatsBox: React.FC<IProps> = () => {
106111
intl.locale as Lang
107112
)
108113

114+
// Helper functions
109115
const formatInteger = (amount: number): string =>
110116
new Intl.NumberFormat(localeForStatsBoxNumbers).format(amount)
111117

@@ -116,35 +122,27 @@ const StakingStatsBox: React.FC<IProps> = () => {
116122
maximumSignificantDigits: 2,
117123
}).format(amount)
118124

125+
// API call, data formatting, and state setting
119126
;(async () => {
120127
try {
121128
const {
122-
data: { totalvalidatorbalance, validatorscount },
129+
data: { apr, effective_balances_sum_wei },
123130
} = await getData<{
124-
data: { totalvalidatorbalance: number; validatorscount: number }
125-
}>("https://mainnet.beaconcha.in/api/v1/epoch/latest")
126-
const valueTotalEth = formatInteger(
127-
Number((totalvalidatorbalance * 1e-9).toFixed(0))
131+
data: { apr: number; effective_balances_sum_wei: number }
132+
}>("https://beaconcha.in/api/v1/ethstore/latest")
133+
const totalEffectiveBalance: number = effective_balances_sum_wei * 1e-18
134+
const valueTotalEth = formatInteger(Math.floor(totalEffectiveBalance))
135+
const valueTotalValidators = formatInteger(
136+
totalEffectiveBalance / MAX_EFFECTIVE_BALANCE
128137
)
129-
const valueTotalValidators = formatInteger(validatorscount)
138+
const valueCurrentApr = formatPercentage(apr)
130139
setTotalEth(valueTotalEth)
131140
setTotalValidators(valueTotalValidators)
132-
} catch (error) {
133-
setTotalEth(null)
134-
setTotalValidators(null)
135-
}
136-
})()
137-
;(async () => {
138-
try {
139-
const {
140-
data: { apr },
141-
} = await getData<{
142-
data: { apr: number }
143-
}>("https://beaconcha.in/api/v1/ethstore/650")
144-
const valueCurrentApr = formatPercentage(apr)
145141
setCurrentApr(valueCurrentApr)
146142
} catch (error) {
143+
setTotalEth(null)
147144
setCurrentApr(null)
145+
setTotalValidators(null)
148146
}
149147
})()
150148
}, [intl.locale])
@@ -185,7 +183,7 @@ const StakingStatsBox: React.FC<IProps> = () => {
185183
)}
186184
<Label>
187185
<Translation id="page-staking-stats-box-metric-3" />
188-
<BeaconchainTooltip />
186+
<BeaconchainTooltip isEthStore />
189187
</Label>
190188
</Cell>
191189
</Container>

0 commit comments

Comments
 (0)