Browse Source

miner: Show percentage of period

refactor
Hampus Sjöberg 4 years ago
parent
commit
aeaf0bc19f
  1. 16
      blocks/index.ts
  2. 20
      frontend/pages/miners.tsx

16
blocks/index.ts

@ -6,10 +6,9 @@ import { hexToAscii } from "../utils.ts";
export interface IBlock {
height: number;
// hash: string;
signals: boolean | undefined;
coinbase: string | undefined;
miner: string | undefined;
minerWebsite: string | undefined;
}
let blocks: IBlock[] = [];
@ -23,16 +22,16 @@ async function createBlock(height: number): Promise<IBlock> {
const payoutAddress = generationTransaction.vout[0]?.scriptPubKey?.addresses?.[0] ?? "";
const coinbase = hexToAscii(generationTransaction.vin?.[0]?.coinbase ?? "");
const miner = (() => {
const minerData = (() => {
for (const [tag, minerInfo] of Object.entries(miners.coinbase_tags)) {
if (coinbase.includes(tag)) {
return minerInfo.name;
return { name: minerInfo.name, website: minerInfo.link };
}
}
for (const [tag, minerInfo] of Object.entries(miners.payout_addresses)) {
if (payoutAddress == tag) {
return minerInfo.name;
return { name: minerInfo.name, website: minerInfo.link };
}
}
@ -40,10 +39,9 @@ async function createBlock(height: number): Promise<IBlock> {
})();
return {
coinbase,
miner,
miner: minerData?.name,
minerWebsite: minerData?.website,
height: block.height,
// hash: blockheader.hash,
signals: (block.version & (config.fork.versionBit + 1)) === config.fork.versionBit + 1,
};
}
@ -56,8 +54,8 @@ async function setupPeriod(blockCount: number, startHeight: number, endHeight: n
blocks.push({
height: i,
signals: undefined,
coinbase: undefined,
miner: undefined,
minerWebsite: undefined,
});
continue;
}

20
frontend/pages/miners.tsx

@ -50,6 +50,9 @@ const TableHeader = styled.th`
const Cell = styled.td`
color: #f0f0f0;
> a {
color: #f0f0f0;
}
padding: 17px;
`;
@ -62,6 +65,8 @@ interface IMinerData {
[key: string]: {
name: string;
signals: boolean;
website: string | undefined;
numBlocks: number;
};
}
@ -86,8 +91,11 @@ export default function Miners() {
prev[currBlock.miner] = {
name: currBlock.miner,
signals: currBlock.signals ?? false,
website: currBlock.minerWebsite,
numBlocks: 1,
};
}
prev[currBlock.miner].numBlocks++;
return prev;
}, {} as IMinerData);
}, [blocks]);
@ -104,15 +112,25 @@ export default function Miners() {
<TableHead>
<TableRow>
<TableHeader>Miner name</TableHeader>
<TableHeader>Share</TableHeader>
<TableHeader>Signals</TableHeader>
</TableRow>
</TableHead>
<TableBody>
{Object.entries(miners).map(([_, miner]) => {
console.log(miner.numBlocks / 2016);
return (
<TableRow>
<Cell>{miner.name}</Cell>
<Cell>
{miner.website && (
<a href={miner.website} target="_blank">
{miner.name}
</a>
)}
{!miner.website && miner.name}
</Cell>
<Cell>{((miner.numBlocks / 2016) * 100).toFixed(1)}%</Cell>
<SignallingCell>
{miner.signals && <></>}
{!miner.signals && <>🚫</>}

Loading…
Cancel
Save