From 8e9e014b45e544b2e5921dccaf151b57868ebfe8 Mon Sep 17 00:00:00 2001 From: painterpuppets Date: Wed, 20 Sep 2023 04:33:14 +0800 Subject: [PATCH] feat: ckb halving page --- src/assets/block-rewards.png | Bin 0 -> 20856 bytes src/assets/ckb_base_issuance_trend.jpg | Bin 0 -> 115791 bytes src/assets/twitter.svg | 3 + .../BannerFallback/HalvingBanner.tsx | 48 ++++ .../BannerFallback/index.module.scss | 42 +++- src/components/BannerFallback/index.tsx | 2 +- src/locales/en.json | 72 ++++++ src/locales/zh.json | 72 ++++++ src/pages/Halving/HalvingTable.tsx | 174 +++++++++++++ src/pages/Halving/index.module.scss | 43 ++++ src/pages/Halving/index.tsx | 234 ++++++++++++++++++ src/pages/Halving/styled.tsx | 144 +++++++++++ src/pages/Home/Banner/index.tsx | 3 +- src/routes/index.tsx | 7 + src/utils/hook.ts | 48 ++++ src/utils/string.ts | 4 + 16 files changed, 893 insertions(+), 3 deletions(-) create mode 100644 src/assets/block-rewards.png create mode 100644 src/assets/ckb_base_issuance_trend.jpg create mode 100644 src/assets/twitter.svg create mode 100644 src/components/BannerFallback/HalvingBanner.tsx create mode 100644 src/pages/Halving/HalvingTable.tsx create mode 100644 src/pages/Halving/index.module.scss create mode 100644 src/pages/Halving/index.tsx create mode 100644 src/pages/Halving/styled.tsx diff --git a/src/assets/block-rewards.png b/src/assets/block-rewards.png new file mode 100644 index 0000000000000000000000000000000000000000..aee406a385eb5b4894bd2e147b816539c2f40191 GIT binary patch literal 20856 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 B7GnSa literal 0 HcmV?d00001 diff --git a/src/assets/ckb_base_issuance_trend.jpg b/src/assets/ckb_base_issuance_trend.jpg new file mode 100644 index 0000000000000000000000000000000000000000..91ed6142e391dac7aae8985f05adc622fb344052 GIT binary patch literal 115791 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 + + \ No newline at end of file diff --git a/src/components/BannerFallback/HalvingBanner.tsx b/src/components/BannerFallback/HalvingBanner.tsx new file mode 100644 index 000000000..276099967 --- /dev/null +++ b/src/components/BannerFallback/HalvingBanner.tsx @@ -0,0 +1,48 @@ +import classnames from 'classnames' +import styles from './index.module.scss' +import SimpleButton from '../SimpleButton' +import { useCountdown, useHalving } from '../../utils/hook' +import i18n from '../../utils/i18n' +import { capitalizeFirstLetter } from '../../utils/string' + +export const HalvingBanner = () => { + const { estimatedDate, nextHalvingCount } = useHalving() + const [days, hours, minutes, seconds] = useCountdown(estimatedDate) + + const shortCountdown = () => { + if (days > 0) { + return `${days}${i18n.t('symbol.char_space')}${capitalizeFirstLetter(i18n.t('unit.days'))}` + } + if (hours > 0) { + return `${hours}${i18n.t('symbol.char_space')}${capitalizeFirstLetter(i18n.t('unit.hours'))}` + } + if (minutes > 0) { + return `${minutes}${i18n.t('symbol.char_space')}${capitalizeFirstLetter(i18n.t('unit.minutes'))}` + } + if (seconds > 0) { + return `${seconds}${i18n.t('symbol.char_space')}${capitalizeFirstLetter(i18n.t('unit.seconds'))}` + } + return `${capitalizeFirstLetter(i18n.t('halving.halving'))}!` + } + + return ( +
+
+
+ {nextHalvingCount === 1 ? ( +
+ Nervos CKB Layer 1 {i18n.t('halving.halving_countdown')} +
{shortCountdown()}
+
+ ) : ( +
{i18n.t('halving.first_congratulation')}
+ )} + + + {i18n.t('halving.learn_more')} + +
+
+
+ ) +} diff --git a/src/components/BannerFallback/index.module.scss b/src/components/BannerFallback/index.module.scss index e98dc92b9..6857d564d 100644 --- a/src/components/BannerFallback/index.module.scss +++ b/src/components/BannerFallback/index.module.scss @@ -1,6 +1,6 @@ $backgroudColor: #232323; -.Root { +.root { width: 100%; background-color: $backgroudColor; height: 200px; @@ -13,3 +13,43 @@ $backgroudColor: #232323; background-image: url('../../assets/ckb_explorer_banner_phone.svg'); } } + +.HalvingBannerShadow { + width: 100%; + background-color: rgba(0, 0, 0, 0.3); + height: 100%; +} + +.HalvingBanner { + height: 100%; + color: white; + display: flex; + align-items: center; + justify-content: center; +} + +.HalvingBannerText { + align-items: baseline; + display: flex; + font-size: 24px; + font-weight: bold; +} + +.HalvingBannerCount { + font-size: 36px; + margin-left: 24px; +} + +.LearnMoreButton { + border: 1px solid white; + color: white; + transition: all 0.3s; + padding: 16px 24px; + margin-left: auto; + user-select: none; + + &:hover { + border-color: var(--primary-color); + color: var(--primary-color); + } +} diff --git a/src/components/BannerFallback/index.tsx b/src/components/BannerFallback/index.tsx index f4272ebf7..49017fcaf 100644 --- a/src/components/BannerFallback/index.tsx +++ b/src/components/BannerFallback/index.tsx @@ -1,3 +1,3 @@ import styles from './index.module.scss' -export default () =>
+export default () =>
diff --git a/src/locales/en.json b/src/locales/en.json index 763bbb8db..ff50ed746 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -19,6 +19,78 @@ "minaraTime": "Est May 10th 2022", "miranaAlive": "MIRANA IS LIVE" }, + "unit": { + "days": "days", + "hours": "hours", + "minutes": "minutes", + "seconds": "seconds" + }, + "symbol": { + "char_space": " " + }, + "ordinal": { + "first": "first", + "second": "second", + "1st": "1st", + "2nd": "2nd", + "3rd": "3rd", + "4th": "4th", + "5th": "5th", + "6th": "6th", + "7th": "7th", + "8th": "8th", + "9th": "9th", + "10th": "10th" + }, + "halving": { + "halving": "halving", + "and": "and", + "halving_countdown": "Halving Countdown", + "learn_more": "Learn More", + "first_congratulation": "Congratulations! The first CKB halving is atived.", + "countdown_tooltip_section1": "How is the countdown estimated?", + "countdown_tooltip_section2": "[Target Epoch - Current Epoch]*Single Epoch Average Time - Current Epoch Used Time", + "countdown_tooltip_section3": "*Single Epoch Average Time takes the average time of nearly 1000 epochs.", + "halving_desc_prefix": "will have a halving event every 4 years according to the mechanism, at which time the", + "base_issuance_rewards": "base issuance rewards", + "halving_desc_suffix": "will be halved.", + "current_block": "Current Block", + "current_epoch": "Current Epoch", + "target_epoch": "Target Epoch", + "estimated_time": "Estimated Time", + "share_tooltip": "Share CKB Halving Event to Twitter", + "halving_event": "What is a Halving Event?", + "halving_event_section_1": "In the Nervos ecosystem, mining is used to secure the network and distribute tokens in the form of block rewards. A total of 33.6 billion CKB tokens will be created through primary issuance over a period of approximately 84 years to incentivize the miners that secure the network.", + "halving_event_section_2": "Every epoch, a period of approximately four hours, a fixed amount of 1,917,808 CKB is introduced. Every 8,760 epochs, a period of approximately four years, this amount is cut in half. This event is called a halving and it is the point where the mining rewards from primary issuance are permanently reduced by 50%. This halving process will continue every four years until the year 2103, after which point all block rewards from primary issuance will cease completely.", + "significance": "What is the Significance of a Halving?", + "significance_section_1": "Each time a halving occurs, it causes a sharp decrease in the rewards generated per block. The supply of new CKB entering circulation is lowered, dramatically reducing the rate of inflation. This is important because it creates a shift in the underlying market equilibrium and forces a reevaluation of what is considered fair market value.", + "significance_section_2": "Halving events occur on a predetermined issuance schedule that cannot be changed, postponed, or delayed. Investors and community members often look forward to a halving event as something to celebrate since it marks an important milestone in the history of the project.", + "how_does_work": "How does the CKByte-Halving work?", + "how_does_work_section_1": "In order to make the halving plan work as expected, a concept of time called epoch was introduced.", + "how_does_work_section_2": "An epoch is a period of time for a set of blocks.", + "how_does_work_section_3": "In Nervos, the PoW difficulty changes on a new epoch. All the blocks in the same epoch share the same difficulty target. The difficulty adjustment algorithm aims to stabilize the orphan block rate at 2.5% and the epoch duration at 4 hours.", + "how_does_work_section_4": "Epochs per halving is", + "how_does_work_section_5": "and the Nth halving of CKBytes firstly occurs on epoch", + "how_does_work_section_6": "So, The CKByte halving event occurs on the specified epoch, e.g. 8760, 17520.", + "when": "When will CKByte be halved?", + "when_section_1": "The following table details the schedule for several upcoming CKB halvings and their corresponding base issuance rewards:", + "when_section_2": "Note that CKB block rewards include ", + "when_section_3": "Base (issuance) reward, Secondary (issuance) reward, Commit reward", + "when_section_4": "Proposal reward", + "when_section_5": "However, when we are discussing CKB halving, it only relates to ", + "when_section_6": ". Therefore, the block rewards listed in the table only include the portion of rewards from base issuance to help with understanding.", + "table_event": "Event", + "table_date": "Date", + "table_epoch_number": "Epoch number", + "table_epoch_reward": "Epoch reward", + "table_block_reward": "Block reward(Calculated based on 1800 blocks per epoch)", + "table_daily_reward": "Daily reward", + "table_total": "Total new CKB between events", + "table_launches": "Nervos launches", + "genesis_epoch": "genesis epoch", + "expected": "Expected", + "twitter_text": "📢 @NervosNetwork CKB Expected {{times}} halving on {{date}}🚀,\n\n📅There are {{countdown}} left in the countdown to the halving.\n\n🔗 Click 👉 https://explorer.nervos.org know more" + }, "glossary": { "block_height": "Also known as Block Number. The block height, which indicates the length of the blockchain, increases after the addition of the new block.", "cell": "CKB adopts cell model, which is more generic than UTXO model. A transaction destroys some outputs created in previous transactions and creates some new outputs. Every transaction's output is a cell.", diff --git a/src/locales/zh.json b/src/locales/zh.json index 02e6d8622..758e83e46 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -19,6 +19,78 @@ "minaraTime": "美国东部时间: 2022 年 05 月 10 日", "miranaAlive": "MIRANA 已经激活" }, + "unit": { + "days": "天", + "hours": "小时", + "minutes": "分钟", + "seconds": "秒" + }, + "symbol": { + "char_space": "" + }, + "ordinal": { + "first": "第 1 次", + "second": "第 2 次", + "1st": "第 1 次", + "2nd": "第 2 次", + "3rd": "第 3 次", + "4th": "第 4 次", + "5th": "第 5 次", + "6th": "第 6 次", + "7th": "第 7 次", + "8th": "第 8 次", + "9th": "第 9 次", + "10th": "第 10 次" + }, + "halving": { + "halving": "减半", + "and": "和", + "halving_countdown": "减半倒计时", + "learn_more": "了解更多", + "first_congratulation": "CKB 首次减半生效!", + "countdown_tooltip_section1": "倒计时是如何估算的?", + "countdown_tooltip_section2": "[目标Epoch- 当前Epoch]*单个Epoch平均用时 - 当前Epoch已用时间", + "countdown_tooltip_section3": "*单个Epoch平均用时取近1000个Epoch的平均用时.", + "halving_desc_prefix": "根据机制将每4年发生一次减半事件,届时", + "base_issuance_rewards": "基础发行奖励", + "halving_desc_suffix": "将减半。", + "current_block": "当前区块", + "current_epoch": "当前 Epoch", + "target_epoch": "目标 Epoch", + "estimated_time": "预计时间", + "share_tooltip": "分享CKB减半事件到Twitter", + "halving_event": "什么是减半事件?", + "halving_event_section_1": "在 Nervos 生态系统中,挖矿用于确保网络安全,并以区块奖励的形式分配代币。在大约 84 年的时间里,将通过首次发行创造总计 336 亿个 CKB 代币,以奖励确保网络安全的矿工。", + "halving_event_section_2": "每个Epoch(约 4 个小时)推出 1,917,808 CKB 的固定金额。每 8,760 个Epoch,即大约四年的时间,这一数额会减半。这一事件被称为减半,也就是初级发行的挖矿奖励永久减少 50%。这种减半过程将每四年持续一次,直到 2103 年。", + "significance": "减半的意义是什么?", + "significance_section_1": "每次减半都会导致每个区块产生的奖励急剧下降。进入流通的新 CKB 供应量减少,通货膨胀率大幅下降。这一点非常重要,因为它改变了潜在的市场平衡,迫使人们重新评估什么是公平的市场价值。", + "significance_section_2": "减半活动按照预定的发行时间表进行,不能更改、推迟或延迟。投资者和社区成员通常期待着减半事件的发生,因为这标志着项目历史上的一个重要里程碑,值得庆祝。", + "how_does_work": "CKB减半是如何运行的?", + "how_does_work_section_1": "为了使减半计划按预期运行,我们引入了一个名为 \"Epoch\"的时间概念。", + "how_does_work_section_2": "一个Epoch是一组区块的一段时间。", + "how_does_work_section_3": "在 Nervos 中,PoW 难度在新的Epoch中发生变化。同一Epoch中的所有区块共享相同的难度目标。难度调整算法旨在将孤块率稳定在 2.5%,将Epoch稳定在 4 小时。", + "how_does_work_section_4": "每次减半的Epoch为", + "how_does_work_section_5": "CKBytes 的第 N 次减半首先发生在Epoch上", + "how_does_work_section_6": "因此,CKByte 减半事件发生在指定的Epoch,例如 8760、17520。", + "when": "CKB何时减半?", + "when_section_1": "下表详细列出了即将进行的 10 次 CKB 半价及其相应的基本发行奖励的时间表:", + "when_section_2": "注意,CKB 块奖励包括", + "when_section_3": "基础(发行)奖励、二级(发行)奖励、提交奖励", + "when_section_4": "提案奖励", + "when_section_5": "但是,当我们讨论 CKB 减半时,它只与", + "when_section_6": "有关。因此,表中列出的区块奖励只包括基础发行奖励的部分,以帮助理解。", + "table_event": "事件", + "table_date": "日期", + "table_epoch_number": "Epoch序号", + "table_epoch_reward": "每个Epoch挖矿产出", + "table_block_reward": "区块奖励(按每epoch有1800个区块计算)", + "table_daily_reward": "每日挖矿产出", + "table_total": "期间累计挖矿产出", + "table_launches": "Nervos 主网上线", + "genesis_epoch": "创世纪元", + "expected": "预计", + "twitter_text": "📢 @NervosNetwork CKB 预计于 {{date}} 迎来{{times}}减半🚀,\n\n📅距离减半倒计时还有 {{countdown}}。\n\n🔗 访问👉 https://explorer.nervos.org 了解更多" + }, "glossary": { "block_height": "区块高度,又称为区块编号,表示区块链的长度,在添加新区块后会增加。", "cell": "CKB 采用了更通用的 Cell 模型,而不是 UTXO 模型。交易会销毁先前交易中创建的某些输出,并创建一些新的输出。每个交易的输出都是一个 Cell。", diff --git a/src/pages/Halving/HalvingTable.tsx b/src/pages/Halving/HalvingTable.tsx new file mode 100644 index 000000000..8accdcbb2 --- /dev/null +++ b/src/pages/Halving/HalvingTable.tsx @@ -0,0 +1,174 @@ +import i18n from '../../utils/i18n' +import { capitalizeFirstLetter } from '../../utils/string' +import styles from './index.module.scss' + +export const HalvingTable = () => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{i18n.t('halving.table_event')}{i18n.t('halving.table_date')}{i18n.t('halving.table_epoch_number')}{i18n.t('halving.table_epoch_reward')}{i18n.t('halving.table_block_reward')}{i18n.t('halving.table_daily_reward')}{i18n.t('halving.table_total')}
{i18n.t('halving.table_launches')}16 Nov 20190 ({i18n.t('halving.genesis_epoch')})1,917,808 CKB1,065 CKB11,506,849 CKB16,800,000,000 CKB
+ + {capitalizeFirstLetter(i18n.t('ordinal.first'))} + {i18n.t('symbol.char_space')} + {i18n.t('halving.halving')} + + + {i18n.t('halving.expected')} 19 Nov 2023 + + 8,760 + + 958,904 CKB + + 533 CKB + + 5,753,424 CKB + + 8,400,000,000 CKB +
+ {capitalizeFirstLetter(i18n.t('ordinal.second'))} + {i18n.t('symbol.char_space')} + {i18n.t('halving.halving')} + {i18n.t('halving.expected')} November 202717,520479,452 CKB266 CKB2,876,712 CKB4,200,000,000 CKB
+ {capitalizeFirstLetter(i18n.t('ordinal.3rd'))} + {i18n.t('symbol.char_space')} + {i18n.t('halving.halving')} + {i18n.t('halving.expected')} November 203126,280239,726 CKB133 CKB1,438,356 CKB2,100,000,000 CKB
+ {capitalizeFirstLetter(i18n.t('ordinal.4th'))} + {i18n.t('symbol.char_space')} + {i18n.t('halving.halving')} + {i18n.t('halving.expected')} November 203535,040119,863 CKB67 CKB719,178 CKB1,050,000,000 CKB
+ {capitalizeFirstLetter(i18n.t('ordinal.5th'))} + {i18n.t('symbol.char_space')} + {i18n.t('halving.halving')} + {i18n.t('halving.expected')} November 203943,80059,932 CKB33.5 CKB359,589 CKB525,000,000 CKB
+ {capitalizeFirstLetter(i18n.t('ordinal.6th'))} + {i18n.t('symbol.char_space')} + {i18n.t('halving.halving')} + {i18n.t('halving.expected')} November 204352,56029,966 CKB16.75 CKB179,794.5 CKB262,500,000 CKB
+ {capitalizeFirstLetter(i18n.t('ordinal.7th'))} + {i18n.t('symbol.char_space')} + {i18n.t('halving.halving')} + {i18n.t('halving.expected')} November 204761,32014,983 CKB8.375 CKB89,897.25 CKB131,250,000 CKB
+ {capitalizeFirstLetter(i18n.t('ordinal.8th'))} + {i18n.t('symbol.char_space')} + {i18n.t('halving.halving')} + {i18n.t('halving.expected')} November 205170,0807,491 CKB4.1875 CKB44,948.625 CKB65,625,000 CKB
+ {capitalizeFirstLetter(i18n.t('ordinal.9th'))} + {i18n.t('symbol.char_space')} + {i18n.t('halving.halving')} + {i18n.t('halving.expected')} November 205578,8403,746 CKB2.09375 CKB22,474.3125 CKB32,812,500 CKB
+ {capitalizeFirstLetter(i18n.t('ordinal.10th'))} + {i18n.t('symbol.char_space')} + {i18n.t('halving.halving')} + {i18n.t('halving.expected')} November 205987,6001,873 CKB1.046875 CKB11,237.15625 CKB16,406,250 CKB
+) diff --git a/src/pages/Halving/index.module.scss b/src/pages/Halving/index.module.scss new file mode 100644 index 000000000..37cc61f77 --- /dev/null +++ b/src/pages/Halving/index.module.scss @@ -0,0 +1,43 @@ +.twitterShareWrapper { + position: fixed; + bottom: 10px; + right: 60px; +} + +.twitterIconBg { + display: flex; + background: rgb(90, 169, 232); + box-shadow: rgba(77, 77, 77, 0.2) 0px 2px 6px 0px; + border-radius: 6px; + padding: 8px; +} + +.halvingTable { + display: block; + width: 100%; + width: max-content; + max-width: 100%; + overflow: auto; + border-spacing: 0; + border-collapse: collapse; + thead { + display: table-header-group; + vertical-align: middle; + border-color: inherit; + background-color: rgba(0, 0, 0, 0.03); + } + tr { + border-top: 1px solid rgb(216, 222, 228); + &:nth-child(2n) { + background-color: rgba(0, 0, 0, 0.03); + } + } + th { + padding: 6px 13px; + border: 1px solid rgb(208, 215, 222); + } + td { + padding: 6px 13px; + border: 1px solid rgb(208, 215, 222); + } +} diff --git a/src/pages/Halving/index.tsx b/src/pages/Halving/index.tsx new file mode 100644 index 000000000..2e47a38a6 --- /dev/null +++ b/src/pages/Halving/index.tsx @@ -0,0 +1,234 @@ +import { Progress, Tooltip } from 'antd' +import moment from 'moment' +import Content from '../../components/Content' +import LogoIcon from '../../assets/ckb_dark.png' +import HelpIcon from '../../assets/qa_help.png' +import baseIssuance from '../../assets/ckb_base_issuance_trend.jpg' +import blockRewards from '../../assets/block-rewards.png' +import { ReactComponent as TwitterIcon } from '../../assets/twitter.svg' +import i18n from '../../utils/i18n' +import { + HalvingTitle, + Paragraph, + StrongText, + HalvingPanel, + HalvingPanelTitle, + HalvingDocuments, + HalvingCountdown, + HalvingCountdownItem, + HalvingCountdownValue, + HalvingLogo, + EpochInfoItem, + EpochInfo, + Separate, + Secondary, + Container, + HalvingCountdownName, + Blockquote, + Code, + Panel, + Img, +} from './styled' +import { HalvingTable } from './HalvingTable' +import { useAppState } from '../../contexts/providers' +import { useCountdown, useHalving } from '../../utils/hook' +import { capitalizeFirstLetter } from '../../utils/string' +import { getPrimaryColor } from '../../constants/common' +import styles from './index.module.scss' + +function numberToOrdinal(number: number) { + switch (number) { + case 1: + return 'first' + case 2: + return 'second' + default: + break + } + + switch (number % 10) { + case 1: + return `${number}st` + case 2: + return `${number}nd` + case 3: + return `${number}rd` + default: + return `${number}th` + } +} + +export const HalvingCountdownPage = () => { + const { statistics } = useAppState() + const { + currentEpoch, + targetEpoch, + estimatedDate, + singleEpochAverageTime, + currentEpochUsedTime, + EPOCHS_PER_HALVING, + nextHalvingCount, + } = useHalving() + const percent = + ((currentEpoch * singleEpochAverageTime - currentEpochUsedTime) / (EPOCHS_PER_HALVING * singleEpochAverageTime)) * + 100 + const [days, hours, minutes, seconds] = useCountdown(estimatedDate) + + const shortCountdown = () => { + if (days > 0) { + return `${days}${i18n.t('symbol.char_space')}${i18n.t('unit.days')}` + } + if (hours > 0) { + return `${hours}${i18n.t('symbol.char_space')}${i18n.t('unit.hours')}` + } + if (minutes > 0) { + return `${minutes}${i18n.t('symbol.char_space')}${i18n.t('unit.minutes')}` + } + return `${seconds}${i18n.t('symbol.char_space')}${i18n.t('unit.seconds')}` + } + + const shareText = i18n.t('halving.twitter_text', { + times: i18n.t(`ordinal.${numberToOrdinal(nextHalvingCount)}`), + date: estimatedDate.toUTCString(), + countdown: shortCountdown(), + }) + + const shareUrl = `https://twitter.com/share?text=${encodeURIComponent(shareText)}&hashtags=CKB%2CPoW%2CHalving` + const utcOffset = moment().utcOffset() / 60 + + return ( + + + Nervos CKB Layer 1 {i18n.t('halving.halving_countdown')} + + Nervos CKB Layer 1 {i18n.t('halving.halving_desc_prefix')}{' '} + {i18n.t('halving.base_issuance_rewards')} {i18n.t('halving.halving_desc_suffix')} + + + + {capitalizeFirstLetter(i18n.t(`ordinal.${numberToOrdinal(nextHalvingCount)}`))} + {i18n.t('symbol.char_space')} + {capitalizeFirstLetter(i18n.t('halving.halving'))} + + + + + {days} + {i18n.t('common.days')} + + + {hours} + {i18n.t('common.hours')} + + + {minutes} + {i18n.t('common.minutes')} + + + {seconds} + {i18n.t('common.seconds')} + + + + {i18n.t('halving.countdown_tooltip_section1')} + + {i18n.t('halving.countdown_tooltip_section2')} + + {i18n.t('halving.countdown_tooltip_section3')} + + } + > + halving help + + + + + +
{i18n.t('halving.current_block')}
+ {statistics.tipBlockNumber} +
+ + +
{i18n.t('halving.current_epoch')}
+ + {currentEpoch} + + {statistics.epochInfo.index} / {statistics.epochInfo.epochLength} + + +
+ + + +
{i18n.t('halving.target_epoch')}
+ {targetEpoch} +
+ + + +
{i18n.t('halving.estimated_time')}
+ 0 ? `+ ${utcOffset}` : utcOffset}`}> + {moment(estimatedDate).format('YYYY.MM.DD hh:mm:ss')} + +
+
+
+ + +

{i18n.t('halving.halving_event')}

+ {i18n.t('halving.halving_event_section_1')} + {i18n.t('halving.halving_event_section_2')} +
+ +

{i18n.t('halving.significance')}

+ {i18n.t('halving.significance_section_1')} + {i18n.t('halving.significance_section_2')} +
+ +

{i18n.t('halving.how_does_work')}

+ {i18n.t('halving.how_does_work_section_1')} +
+ {i18n.t('halving.how_does_work_section_2')} + {i18n.t('halving.how_does_work_section_3')} +
+ + {i18n.t('halving.how_does_work_section_4')} 4 * 365 * (24 / 4) = 8760,{' '} + {i18n.t('halving.how_does_work_section_5')}: the_Nth_halving_epoch = 8760 * N . + + {i18n.t('halving.how_does_work_section_6')} +
+ + +

{i18n.t('halving.when')}

+ {i18n.t('halving.when_section_1')} + + ckb base issuance trend + + ⚠️ {i18n.t('halving.when_section_2')} + {i18n.t('halving.when_section_3')}, {i18n.t('halving.and')}{' '} + {i18n.t('halving.when_section_4')}: + + block rewards + + {i18n.t('halving.when_section_5')} + {i18n.t('halving.base_issuance_rewards')} + {i18n.t('halving.when_section_6')} + +
+
+
+ + +
+ +
+
+
+
+ ) +} + +export default HalvingCountdownPage diff --git a/src/pages/Halving/styled.tsx b/src/pages/Halving/styled.tsx new file mode 100644 index 000000000..835637fd9 --- /dev/null +++ b/src/pages/Halving/styled.tsx @@ -0,0 +1,144 @@ +import styled from 'styled-components' + +export const HalvingTitle = styled.div` + text-align: center; + font-weight: 700; + font-size: 24px; + margin-bottom: 16px; +` + +export const StrongText = styled.span` + font-weight: bold; +` + +export const Container = styled.div` + margin-top: 32px; + margin-bottom: 64px; +` + +export const Paragraph = styled.p`` + +export const Blockquote = styled.blockquote` + padding: 0 16px; + border-left: 2px solid rgba(160, 160, 160); + color: rgba(85, 85, 85); +` + +export const Code = styled.code` + background-color: rgb(246, 247, 248); + border-radius: 6px; + border: 1px solid rgba(0, 0, 0, 0.1); +` + +export const Panel = styled.div` + background: #fff; + border-radius: 6px; + box-shadow: 0 2px 6px 0 rgba(77, 77, 77, 0.2); + padding: 16px 16px 32px 16px; +` +export const Img = styled.img` + max-width: 100%; +` + +export const HalvingPanel = styled.div` + background: #fff; + border-radius: 6px; + box-shadow: 0 2px 6px 0 rgba(77, 77, 77, 0.2); + padding: 16px 16px 32px 16px; + gap: 16px; + display: flex; + flex-direction: column; + margin-bottom: 32px; +` + +export const HalvingPanelTitle = styled.div` + font-weight: 700; + font-size: 16px; +` + +export const HalvingCountdown = styled.div` + align-items: center; + flex-wrap: wrap; + justify-content: center; + display: flex; + gap: 16px; + + @media (max-width: 1440px) { + } + + @media (max-width: 1200px) { + flex-direction: row; + } + + @media (max-width: 750px) { + flex-direction: column; + } +` +export const HalvingCountdownItem = styled.div` + border-radius: 6px; + box-shadow: 0 2px 6px 0 rgba(77, 77, 77, 0.2); + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + min-width: 100px; + height: 100px; + overflow: hidden; +` + +export const HalvingCountdownName = styled.div` + font-weight: bold; + font-size: 16px; + line-height: 32px; +` + +export const HalvingCountdownValue = styled.div` + background: ${props => props.theme.primary}; + color: white; + flex: 1; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + font-weight: bold; + font-size: 24px; +` + +export const HalvingLogo = styled.img` + height: 100px; +` + +export const HalvingDescription = styled.div` + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; +` + +export const HalvingDocuments = styled.div` + display: flex; + flex-direction: column; + gap: 16px; +` + +export const EpochInfo = styled.div` + height: 44px; + display: flex; + justify-content: space-between; +` + +export const EpochInfoItem = styled.div` + display: flex; + flex-direction: column; +` + +export const Separate = styled.div` + height: 90%; + background: rgb(234, 234, 234); + width: 1px; +` + +export const Secondary = styled.span` + font-size: 12px; + color: rgb(85, 85, 85); +` diff --git a/src/pages/Home/Banner/index.tsx b/src/pages/Home/Banner/index.tsx index 0a8be3f72..589beba4e 100644 --- a/src/pages/Home/Banner/index.tsx +++ b/src/pages/Home/Banner/index.tsx @@ -6,6 +6,7 @@ import styles from './index.module.scss' import { useIsMobile, usePrevious } from '../../../utils/hook' import { isMainnet as isMainnetFunc } from '../../../utils/chain' import BannerFallback from '../../../components/BannerFallback' +import { HalvingBanner } from '../../../components/BannerFallback/HalvingBanner' const GPUTier = { MIN_TIER: 2, @@ -81,5 +82,5 @@ const _Banner: FC<{ latestBlock?: State.Block }> = ({ latestBlock }) => { */ const isMainnet = isMainnetFunc() export const Banner = isMainnet - ? BannerFallback + ? HalvingBanner : memo(_Banner, (a, b) => a.latestBlock?.number === b.latestBlock?.number) diff --git a/src/routes/index.tsx b/src/routes/index.tsx index e81b25a9b..7b820a6c0 100644 --- a/src/routes/index.tsx +++ b/src/routes/index.tsx @@ -28,6 +28,7 @@ const ErrorPage = lazy(() => import('../pages/Error')) const SearchFail = lazy(() => import('../pages/SearchFail')) const StatisticsChart = lazy(() => import('../pages/StatisticsChart')) const Tokens = lazy(() => import('../pages/Tokens')) +const Halving = lazy(() => import('../pages/Halving')) const DifficultyHashRateChart = lazy(() => import('../pages/StatisticsChart/mining/DifficultyHashRate')) const DifficultyUncleRateEpochChart = lazy(() => import('../pages/StatisticsChart/mining/DifficultyUncleRateEpoch')) const DifficultyChart = lazy(() => import('../pages/StatisticsChart/mining/Difficulty')) @@ -65,6 +66,12 @@ const Containers: CustomRouter.Route[] = [ exact: true, comp: Home, }, + { + name: 'Halving', + path: '/halving', + exact: true, + comp: Halving, + }, { name: 'BlockList', path: '/block/list', diff --git a/src/utils/hook.ts b/src/utils/hook.ts index c0f124ec6..dd5053526 100644 --- a/src/utils/hook.ts +++ b/src/utils/hook.ts @@ -12,6 +12,7 @@ import { useQuery } from 'react-query' import { useResizeDetector } from 'react-resize-detector' import { interval, share } from 'rxjs' import { AppCachedKeys } from '../constants/cache' +import { useAppState } from '../contexts/providers' import { deprecatedAddrToNewAddr } from './util' import { startEndEllipsis } from './string' import { ListPageParams, PageParams } from '../constants/common' @@ -578,6 +579,53 @@ export function useParsedDate(timestamp: number): string { return parseDate(timestamp, now) } +export const useCountdown = (targetDate: Date) => { + const countdownDate = new Date(targetDate).getTime() + + const [countdown, setCountdown] = useState(countdownDate - new Date().getTime()) + + useEffect(() => { + const interval = setInterval(() => { + setCountdown(countdownDate - new Date().getTime()) + }, 1000) + + return () => clearInterval(interval) + }, [countdownDate]) + + const days = Math.floor(countdown / (1000 * 60 * 60 * 24)) + const hours = Math.floor((countdown % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)) + const minutes = Math.floor((countdown % (1000 * 60 * 60)) / (1000 * 60)) + const seconds = Math.floor((countdown % (1000 * 60)) / 1000) + + return [days, hours, minutes, seconds] +} + +export const useHalving = () => { + const { statistics } = useAppState() + + const EPOCHS_PER_HALVING = 8760 + const currentEpoch = Number(statistics.epochInfo.epochNumber) + const nextHalvingCount = Math.ceil(currentEpoch / EPOCHS_PER_HALVING) + const targetEpoch = EPOCHS_PER_HALVING * nextHalvingCount + const singleEpochAverageTime = Number(statistics.estimatedEpochTime) + const currentEpochUsedTime = + (Number(statistics.epochInfo.index) / Number(statistics.epochInfo.epochLength)) * singleEpochAverageTime + + const estimatedTime = (targetEpoch - currentEpoch) * singleEpochAverageTime - currentEpochUsedTime + + const estimatedDate = useMemo(() => new Date(new Date().getTime() + estimatedTime), [estimatedTime]) + + return { + EPOCHS_PER_HALVING, + currentEpoch, + targetEpoch, + nextHalvingCount, + singleEpochAverageTime, + currentEpochUsedTime, + estimatedDate, + } +} + export default { useInterval, useTimeout, diff --git a/src/utils/string.ts b/src/utils/string.ts index 84acb6618..60631adfc 100644 --- a/src/utils/string.ts +++ b/src/utils/string.ts @@ -145,3 +145,7 @@ export const handleBigNumberFloor = (value: BigNumber | string | number, decimal } export const sliceNftName = (name?: string) => (name && name.length > 32 ? `${name.slice(0, 32)}...` : name) + +export function capitalizeFirstLetter(str: string) { + return str.charAt(0).toUpperCase() + str.slice(1) +}