Commit c1829e8d authored by tom's avatar tom

genesis block

parent d301754e
...@@ -5,7 +5,13 @@ import type { Block } from 'types/api/block'; ...@@ -5,7 +5,13 @@ import type { Block } from 'types/api/block';
export default function getBlockReward(block: Block) { export default function getBlockReward(block: Block) {
const txFees = utils.parseUnits(block.tx_fees || '0', 'wei'); const txFees = utils.parseUnits(block.tx_fees || '0', 'wei');
const burntFees = utils.parseUnits(String(block.burnt_fees || '0'), 'wei'); const burntFees = utils.parseUnits(String(block.burnt_fees || '0'), 'wei');
const totalReward = utils.parseUnits(String(block.rewards?.find(({ type }) => type === 'Miner Reward' || type === 'Validator Reward')?.reward || '0'), 'wei'); const totalReward = utils.parseUnits(
String(
block.rewards?.find(({ type }) => type === 'Miner Reward' || type === 'Validator Reward')?.reward ||
'0',
),
'wei',
);
const staticReward = totalReward.sub(txFees).add(burntFees); const staticReward = totalReward.sub(txFees).add(burntFees);
return { return {
......
import { Grid, GridItem, Text, Icon, Link, Box, Tooltip, Alert } from '@chakra-ui/react'; import { Grid, GridItem, Text, Icon, Link, Box, Tooltip, Alert } from '@chakra-ui/react';
import { useQuery } from '@tanstack/react-query'; import { useQuery } from '@tanstack/react-query';
import { utils } from 'ethers'; import { utils, constants } from 'ethers';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import React from 'react'; import React from 'react';
import { scroller, Element } from 'react-scroll'; import { scroller, Element } from 'react-scroll';
...@@ -75,12 +75,13 @@ const BlockDetails = () => { ...@@ -75,12 +75,13 @@ const BlockDetails = () => {
hint="The block height of a particular block is defined as the number of blocks preceding it in the blockchain." hint="The block height of a particular block is defined as the number of blocks preceding it in the blockchain."
> >
{ data.height } { data.height }
{ data.height === 0 && <Text whiteSpace="pre"> - Genesis Block</Text> }
<PrevNext <PrevNext
ml={ 6 } ml={ 6 }
onClick={ handlePrevNextClick } onClick={ handlePrevNextClick }
prevLabel="View previous block" prevLabel="View previous block"
nextLabel="View next block" nextLabel="View next block"
isPrevDisabled={ router.query.id === '0' } isPrevDisabled={ data.height === 0 }
/> />
</DetailsInfoItem> </DetailsInfoItem>
<DetailsInfoItem <DetailsInfoItem
...@@ -116,6 +117,7 @@ const BlockDetails = () => { ...@@ -116,6 +117,7 @@ const BlockDetails = () => {
{ /* api doesn't return the block processing time yet */ } { /* api doesn't return the block processing time yet */ }
{ /* <Text>{ dayjs.duration(block.minedIn, 'second').humanize(true) }</Text> */ } { /* <Text>{ dayjs.duration(block.minedIn, 'second').humanize(true) }</Text> */ }
</DetailsInfoItem> </DetailsInfoItem>
{ !totalReward.eq(constants.Zero) && (
<DetailsInfoItem <DetailsInfoItem
title="Block reward" title="Block reward"
hint={ hint={
...@@ -125,20 +127,31 @@ const BlockDetails = () => { ...@@ -125,20 +127,31 @@ const BlockDetails = () => {
columnGap={ 1 } columnGap={ 1 }
> >
<Text>{ utils.formatUnits(totalReward) } { network?.currency }</Text> <Text>{ utils.formatUnits(totalReward) } { network?.currency }</Text>
{ (!txFees.eq(constants.Zero) || !burntFees.eq(constants.Zero)) && (
<Text variant="secondary" whiteSpace="break-spaces">( <Text variant="secondary" whiteSpace="break-spaces">(
<Tooltip label="Static block reward"> <Tooltip label="Static block reward">
<span>{ utils.formatUnits(staticReward) }</span> <span>{ utils.formatUnits(staticReward) }</span>
</Tooltip> </Tooltip>
{ !txFees.eq(constants.Zero) && (
<>
{ space }+{ space } { space }+{ space }
<Tooltip label="Txn fees"> <Tooltip label="Txn fees">
<span>{ utils.formatUnits(txFees) }</span> <span>{ utils.formatUnits(txFees) }</span>
</Tooltip> </Tooltip>
</>
) }
{ !burntFees.eq(constants.Zero) && (
<>
{ space }-{ space } { space }-{ space }
<Tooltip label="Burnt fees"> <Tooltip label="Burnt fees">
<span>{ utils.formatUnits(burntFees) }</span> <span>{ utils.formatUnits(burntFees) }</span>
</Tooltip> </Tooltip>
</>
) }
)</Text> )</Text>
) }
</DetailsInfoItem> </DetailsInfoItem>
) }
{ sectionGap } { sectionGap }
...@@ -172,7 +185,6 @@ const BlockDetails = () => { ...@@ -172,7 +185,6 @@ const BlockDetails = () => {
</Text> </Text>
</DetailsInfoItem> </DetailsInfoItem>
) } ) }
{ data.burnt_fees && (
<DetailsInfoItem <DetailsInfoItem
title="Burnt fees" title="Burnt fees"
hint={ hint={
...@@ -182,7 +194,7 @@ const BlockDetails = () => { ...@@ -182,7 +194,7 @@ const BlockDetails = () => {
> >
<Icon as={ flameIcon } boxSize={ 5 } color="gray.500"/> <Icon as={ flameIcon } boxSize={ 5 } color="gray.500"/>
<Text ml={ 1 }>{ utils.formatUnits(burntFees) } { network?.currency }</Text> <Text ml={ 1 }>{ utils.formatUnits(burntFees) } { network?.currency }</Text>
{ data.tx_fees && ( { !txFees.eq(constants.Zero) && (
<Tooltip label="Burnt fees / Txn fees * 100%"> <Tooltip label="Burnt fees / Txn fees * 100%">
<Box> <Box>
<Utilization <Utilization
...@@ -193,7 +205,6 @@ const BlockDetails = () => { ...@@ -193,7 +205,6 @@ const BlockDetails = () => {
</Tooltip> </Tooltip>
) } ) }
</DetailsInfoItem> </DetailsInfoItem>
) }
{ /* api doesn't support extra data yet */ } { /* api doesn't support extra data yet */ }
{ /* <DetailsInfoItem { /* <DetailsInfoItem
title="Extra data" title="Extra data"
...@@ -272,7 +283,9 @@ const BlockDetails = () => { ...@@ -272,7 +283,9 @@ const BlockDetails = () => {
> >
{ data.nonce } { data.nonce }
</DetailsInfoItem> </DetailsInfoItem>
{ data.rewards?.map(({ type, reward }) => ( { data.rewards
?.filter(({ type }) => type !== 'Validator Reward' && type !== 'Miner Reward')
.map(({ type, reward }) => (
<DetailsInfoItem <DetailsInfoItem
key={ type } key={ type }
title={ type } title={ type }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment