set-up inclusion probability
This commit is contained in:
@@ -16,7 +16,7 @@ export const Settings = () => {
|
||||
const [selectedTab, setSelectedTab] = useState(0)
|
||||
|
||||
const { mixnodeDetails, showSettings, handleShowSettings, getBondDetails } = useContext(ClientContext)
|
||||
const { status, saturation, rewardEstimation } = useSettingsState(showSettings)
|
||||
const { status, saturation, rewardEstimation, inclusionProbability } = useSettingsState(showSettings)
|
||||
|
||||
const handleTabChange = (_: React.SyntheticEvent, newTab: number) => setSelectedTab(newTab)
|
||||
|
||||
@@ -46,6 +46,7 @@ export const Settings = () => {
|
||||
saturation={saturation}
|
||||
rewardEstimation={rewardEstimation}
|
||||
onUpdate={getBondDetails}
|
||||
inclusionProbability={inclusionProbability}
|
||||
/>
|
||||
)}
|
||||
{selectedTab === 2 && mixnodeDetails && <NodeStats mixnodeId={mixnodeDetails.mix_node.identity_key} />}
|
||||
|
||||
@@ -15,9 +15,9 @@ import { AccessTimeOutlined, PercentOutlined } from '@mui/icons-material'
|
||||
import { yupResolver } from '@hookform/resolvers/yup'
|
||||
import { useForm } from 'react-hook-form'
|
||||
import { InfoTooltip } from '../../components/InfoToolTip'
|
||||
import { TMixnodeBondDetails } from '../../types'
|
||||
import { InclusionProbabilityResponse, TMixnodeBondDetails } from '../../types'
|
||||
import { validationSchema } from './validationSchema'
|
||||
import { getGasFee, updateMixnode } from '../../requests'
|
||||
import { updateMixnode } from '../../requests'
|
||||
import { ClientContext, MAJOR_CURRENCY } from '../../context/main'
|
||||
import { Fee } from '../../components'
|
||||
|
||||
@@ -29,11 +29,13 @@ export const SystemVariables = ({
|
||||
mixnodeDetails,
|
||||
saturation,
|
||||
rewardEstimation,
|
||||
inclusionProbability,
|
||||
onUpdate,
|
||||
}: {
|
||||
mixnodeDetails: TMixnodeBondDetails['mix_node']
|
||||
saturation: number
|
||||
rewardEstimation: number
|
||||
inclusionProbability: InclusionProbabilityResponse
|
||||
onUpdate: () => void
|
||||
}) => {
|
||||
const [nodeUpdateResponse, setNodeUpdateResponse] = useState<'success' | 'failed'>()
|
||||
@@ -91,12 +93,12 @@ export const SystemVariables = ({
|
||||
<DataField
|
||||
title="Chance of being in the active set"
|
||||
info="Probability of getting selected in the reward set (active and standby nodes) in the next epoch. The more your stake, the higher the chances to be selected"
|
||||
Indicator={<Chip label="Coming soon" icon={<AccessTimeOutlined fontSize="small" />} />}
|
||||
Indicator={<PercentIndicator value={inclusionProbability.in_active} />}
|
||||
/>
|
||||
<DataField
|
||||
title="Chance of being in the standby set"
|
||||
info="Probability of getting selected in the reward set (active and standby nodes) in the next epoch. The more your stake, the higher the chances to be selected"
|
||||
Indicator={<Chip label="Coming soon" icon={<AccessTimeOutlined fontSize="small" />} />}
|
||||
Indicator={<PercentIndicator value={inclusionProbability.in_reserve} />}
|
||||
/>
|
||||
|
||||
<DataField
|
||||
|
||||
@@ -1,21 +1,25 @@
|
||||
import { useContext, useEffect, useState } from 'react'
|
||||
import { ClientContext } from '../../context/main'
|
||||
import {
|
||||
getMixnodeBondDetails,
|
||||
getMixnodeRewardEstimation,
|
||||
getMixnodeStakeSaturation,
|
||||
getMixnodeStatus,
|
||||
minorToMajor,
|
||||
getInclusionProbability,
|
||||
} from '../../requests'
|
||||
import { MixnodeStatus } from '../../types'
|
||||
import { MixnodeStatus, InclusionProbabilityResponse } from '../../types'
|
||||
|
||||
export const useSettingsState = (shouldUpdate: boolean) => {
|
||||
const [status, setStatus] = useState<MixnodeStatus>('not_found')
|
||||
const [saturation, setSaturation] = useState<number>(0)
|
||||
const [rewardEstimation, setRewardEstimation] = useState<number>(0)
|
||||
const [inclusionProbability, setInclusionProbability] = useState<InclusionProbabilityResponse>({
|
||||
in_active: 0,
|
||||
in_reserve: 0,
|
||||
})
|
||||
|
||||
const { mixnodeDetails } = useContext(ClientContext)
|
||||
|
||||
console.log(inclusionProbability)
|
||||
const getStatus = async () => {
|
||||
if (mixnodeDetails?.mix_node.identity_key) {
|
||||
const status = await getMixnodeStatus(mixnodeDetails?.mix_node.identity_key)
|
||||
@@ -43,11 +47,22 @@ export const useSettingsState = (shouldUpdate: boolean) => {
|
||||
}
|
||||
}
|
||||
|
||||
const getMixnodeInclusionProbability = async () => {
|
||||
if (mixnodeDetails?.mix_node.identity_key) {
|
||||
const probability = await getInclusionProbability(mixnodeDetails?.mix_node.identity_key)
|
||||
|
||||
if (probability) {
|
||||
setInclusionProbability(probability)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (shouldUpdate) {
|
||||
getStatus()
|
||||
getStakeSaturation()
|
||||
getRewardEstimation()
|
||||
getMixnodeInclusionProbability()
|
||||
}
|
||||
}, [shouldUpdate])
|
||||
|
||||
@@ -55,5 +70,6 @@ export const useSettingsState = (shouldUpdate: boolean) => {
|
||||
status,
|
||||
saturation,
|
||||
rewardEstimation,
|
||||
inclusionProbability,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import {
|
||||
DelegationResult,
|
||||
EnumNodeType,
|
||||
Gateway,
|
||||
InclusionProbabilityResponse,
|
||||
MixNode,
|
||||
MixnodeStatusResponse,
|
||||
Operation,
|
||||
@@ -98,3 +99,6 @@ export const getMixnodeStatus = async (identity: string): Promise<MixnodeStatusR
|
||||
|
||||
export const updateMixnode = async ({ profitMarginPercent }: { profitMarginPercent: number }) =>
|
||||
await invoke('update_mixnode', { profitMarginPercent })
|
||||
|
||||
export const getInclusionProbability = async (identity: string): Promise<InclusionProbabilityResponse> =>
|
||||
await invoke('mixnode_inclusion_probability', { identity })
|
||||
|
||||
@@ -14,3 +14,5 @@ export * from './mixnodestatusresponse'
|
||||
export * from './stakesaturaionresponse'
|
||||
export * from './rewardestimationresponse'
|
||||
export * from './mixnodestatus'
|
||||
export * from './mixnodestatusresponse'
|
||||
export * from './inclusionprobabilityresponse'
|
||||
|
||||
Reference in New Issue
Block a user