- To ensure fair distribution of Basenames, all names have a temporary premium starting at
- 100 ETH that then decays exponentially to 0 over 36 hours.
+ To ensure fair distribution of recently expired Basenames, all names have a price premium
+ which starts at 100 ETH that then decays exponentially to 0 over 21 days.
@@ -147,7 +149,7 @@ export function PremiumExplainerModal({
// @ts-expect-error type wants an unnecessary prop
}
/>
diff --git a/apps/web/src/components/Basenames/RegistrationForm/index.tsx b/apps/web/src/components/Basenames/RegistrationForm/index.tsx
index cae6463d344..e98515ce293 100644
--- a/apps/web/src/components/Basenames/RegistrationForm/index.tsx
+++ b/apps/web/src/components/Basenames/RegistrationForm/index.tsx
@@ -138,7 +138,7 @@ export default function RegistrationForm() {
const usdPrice = hasResolvedUSDPrice ? formatUsdPrice(price, ethUsdPrice) : '--.--';
const nameIsFree = !hasRegisteredWithDiscount && price === 0n;
- const { seconds, timestamp: premiumEndTimestamp } = usePremiumEndDurationRemaining();
+ const { seconds, timestamp: premiumEndTimestamp } = usePremiumEndDurationRemaining(selectedName);
const isPremiumActive = Boolean(premiumPrice && premiumPrice !== 0n && seconds !== 0n);
const mainRegistrationElementClasses = classNames(
@@ -331,6 +331,7 @@ export default function RegistrationForm() {
baseSingleYearEthCost={singleYearBasePrice}
isOpen={premiumExplainerModalOpen}
toggleModal={togglePremiumExplainerModal}
+ name={selectedName}
/>
)}
>
diff --git a/apps/web/src/data/usernamePriceDecayTable.json b/apps/web/src/data/usernamePriceDecayTable.json
index 2c19c152a85..4edc14e425a 100644
--- a/apps/web/src/data/usernamePriceDecayTable.json
+++ b/apps/web/src/data/usernamePriceDecayTable.json
@@ -1,1446 +1,846 @@
[
{
- "hours": 0,
- "premium": 99.99999404
+ "days": 0,
+ "premium": 100
},
{
- "hours": 0.1,
- "premium": 95.48415443
+ "days": 0.1,
+ "premium": 93.30329915
},
{
- "hours": 0.2,
- "premium": 91.1722429
+ "days": 0.2,
+ "premium": 87.05505633
},
{
- "hours": 0.3,
- "premium": 87.05505037
+ "days": 0.3,
+ "premium": 81.22523964
},
{
- "hours": 0.4,
- "premium": 83.12378365
+ "days": 0.4,
+ "premium": 75.78582833
},
{
- "hours": 0.5,
- "premium": 79.37004664
+ "days": 0.5,
+ "premium": 70.71067812
},
{
- "hours": 0.6,
- "premium": 75.78582237
+ "days": 0.6,
+ "premium": 65.97539554
},
{
- "hours": 0.7,
- "premium": 72.36345591
+ "days": 0.7,
+ "premium": 61.55722067
},
{
- "hours": 0.8,
- "premium": 69.09563804
+ "days": 0.8,
+ "premium": 57.43491775
},
{
- "hours": 0.9,
- "premium": 65.97538958
+ "days": 0.9,
+ "premium": 53.58867313
},
{
- "hours": 1,
- "premium": 62.99604653
+ "days": 1,
+ "premium": 50
},
{
- "hours": 1.1,
- "premium": 60.15124584
+ "days": 1.1,
+ "premium": 46.65164958
},
{
- "hours": 1.2,
- "premium": 57.43491179
+ "days": 1.2,
+ "premium": 43.52752816
},
{
- "hours": 1.3,
- "premium": 54.84124302
+ "days": 1.3,
+ "premium": 40.61261982
},
{
- "hours": 1.4,
- "premium": 52.36470018
+ "days": 1.4,
+ "premium": 37.89291416
},
{
- "hours": 1.5,
- "premium": 49.99999404
+ "days": 1.5,
+ "premium": 35.35533906
},
{
- "hours": 1.6,
- "premium": 47.74207424
+ "days": 1.6,
+ "premium": 32.98769777
},
{
- "hours": 1.7,
- "premium": 45.58611847
+ "days": 1.7,
+ "premium": 30.77861033
},
{
- "hours": 1.8,
- "premium": 43.5275222
+ "days": 1.8,
+ "premium": 28.71745887
},
{
- "hours": 1.9,
- "premium": 41.56188885
+ "days": 1.9,
+ "premium": 26.79433656
},
{
- "hours": 2,
- "premium": 39.68502034
+ "days": 2,
+ "premium": 25
},
{
- "hours": 2.1,
- "premium": 37.8929082
+ "days": 2.1,
+ "premium": 23.32582479
},
{
- "hours": 2.2,
- "premium": 36.18172498
+ "days": 2.2,
+ "premium": 21.76376408
},
{
- "hours": 2.3,
- "premium": 34.54781604
+ "days": 2.3,
+ "premium": 20.30630991
},
{
- "hours": 2.4,
- "premium": 32.98769181
+ "days": 2.4,
+ "premium": 18.94645708
},
{
- "hours": 2.5,
- "premium": 31.49802029
+ "days": 2.5,
+ "premium": 17.67766953
},
{
- "hours": 2.6,
- "premium": 30.07561994
+ "days": 2.6,
+ "premium": 16.49384888
},
{
- "hours": 2.7,
- "premium": 28.71745291
+ "days": 2.7,
+ "premium": 15.38930517
},
{
- "hours": 2.8,
- "premium": 27.42061853
+ "days": 2.8,
+ "premium": 14.35872944
},
{
- "hours": 2.9,
- "premium": 26.18234711
+ "days": 2.9,
+ "premium": 13.39716828
},
{
- "hours": 3,
- "premium": 24.99999404
+ "days": 3,
+ "premium": 12.5
},
{
- "hours": 3.1,
- "premium": 23.87103414
+ "days": 3.1,
+ "premium": 11.66291239
},
{
- "hours": 3.2,
- "premium": 22.79305625
+ "days": 3.2,
+ "premium": 10.88188204
},
{
- "hours": 3.3,
- "premium": 21.76375812
+ "days": 3.3,
+ "premium": 10.15315495
},
{
- "hours": 3.4,
- "premium": 20.78094144
+ "days": 3.4,
+ "premium": 9.47322854
},
{
- "hours": 3.5,
- "premium": 19.84250719
+ "days": 3.5,
+ "premium": 8.83883476
},
{
- "hours": 3.6,
- "premium": 18.94645112
+ "days": 3.6,
+ "premium": 8.24692444
},
{
- "hours": 3.7,
- "premium": 18.09085951
+ "days": 3.7,
+ "premium": 7.69465258
},
{
- "hours": 3.8,
- "premium": 17.27390504
+ "days": 3.8,
+ "premium": 7.17936472
},
{
- "hours": 3.9,
- "premium": 16.49384292
+ "days": 3.9,
+ "premium": 6.69858414
},
{
- "hours": 4,
- "premium": 15.74900716
+ "days": 4,
+ "premium": 6.25
},
{
- "hours": 4.1,
- "premium": 15.03780699
+ "days": 4.1,
+ "premium": 5.8314562
},
{
- "hours": 4.2,
- "premium": 14.35872348
+ "days": 4.2,
+ "premium": 5.44094102
},
{
- "hours": 4.3,
- "premium": 13.71030629
+ "days": 4.3,
+ "premium": 5.07657748
},
{
- "hours": 4.4,
- "premium": 13.09117057
+ "days": 4.4,
+ "premium": 4.73661427
},
{
- "hours": 4.5,
- "premium": 12.49999404
+ "days": 4.5,
+ "premium": 4.41941738
},
{
- "hours": 4.6,
- "premium": 11.93551409
+ "days": 4.6,
+ "premium": 4.12346222
},
{
- "hours": 4.7,
- "premium": 11.39652515
+ "days": 4.7,
+ "premium": 3.84732629
},
{
- "hours": 4.8,
- "premium": 10.88187608
+ "days": 4.8,
+ "premium": 3.58968236
},
{
- "hours": 4.9,
- "premium": 10.39046774
+ "days": 4.9,
+ "premium": 3.34929207
},
{
- "hours": 5,
- "premium": 9.921250614
+ "days": 5,
+ "premium": 3.125
},
{
- "hours": 5.1,
- "premium": 9.47322258
+ "days": 5.1,
+ "premium": 2.9157281
},
{
- "hours": 5.2,
- "premium": 9.045426774
+ "days": 5.2,
+ "premium": 2.72047051
},
{
- "hours": 5.3,
- "premium": 8.636949539
+ "days": 5.3,
+ "premium": 2.53828874
},
{
- "hours": 5.4,
- "premium": 8.246918482
+ "days": 5.4,
+ "premium": 2.36830714
},
{
- "hours": 5.5,
- "premium": 7.874500601
+ "days": 5.5,
+ "premium": 2.20970869
},
{
- "hours": 5.6,
- "premium": 7.518900515
+ "days": 5.6,
+ "premium": 2.06173111
},
{
- "hours": 5.7,
- "premium": 7.179358758
+ "days": 5.7,
+ "premium": 1.92366315
},
{
- "hours": 5.8,
- "premium": 6.855150163
+ "days": 5.8,
+ "premium": 1.79484118
},
{
- "hours": 5.9,
- "premium": 6.545582307
+ "days": 5.9,
+ "premium": 1.67464604
},
{
- "hours": 6,
- "premium": 6.24999404
+ "days": 6,
+ "premium": 1.5625
},
{
- "hours": 6.1,
- "premium": 5.967754064
+ "days": 6.1,
+ "premium": 1.45786405
},
{
- "hours": 6.2,
- "premium": 5.698259593
+ "days": 6.2,
+ "premium": 1.36023526
},
{
- "hours": 6.3,
- "premium": 5.44093506
+ "days": 6.3,
+ "premium": 1.26914437
},
{
- "hours": 6.4,
- "premium": 5.19523089
+ "days": 6.4,
+ "premium": 1.18415357
},
{
- "hours": 6.5,
- "premium": 4.960622327
+ "days": 6.5,
+ "premium": 1.10485435
},
{
- "hours": 6.6,
- "premium": 4.73660831
+ "days": 6.6,
+ "premium": 1.03086556
},
{
- "hours": 6.7,
- "premium": 4.522710407
+ "days": 6.7,
+ "premium": 0.96183157
},
{
- "hours": 6.8,
- "premium": 4.318471789
+ "days": 6.8,
+ "premium": 0.89742059
},
{
- "hours": 6.9,
- "premium": 4.123456261
+ "days": 6.9,
+ "premium": 0.83732302
},
{
- "hours": 7,
- "premium": 3.93724732
+ "days": 7,
+ "premium": 0.78125
},
{
- "hours": 7.1,
- "premium": 3.759447277
+ "days": 7.1,
+ "premium": 0.72893202
},
{
- "hours": 7.2,
- "premium": 3.589676399
+ "days": 7.2,
+ "premium": 0.68011763
},
{
- "hours": 7.3,
- "premium": 3.427572101
+ "days": 7.3,
+ "premium": 0.63457218
},
{
- "hours": 7.4,
- "premium": 3.272788173
+ "days": 7.4,
+ "premium": 0.59207678
},
{
- "hours": 7.5,
- "premium": 3.12499404
+ "days": 7.5,
+ "premium": 0.55242717
},
{
- "hours": 7.6,
- "premium": 2.983874052
+ "days": 7.6,
+ "premium": 0.51543278
},
{
- "hours": 7.7,
- "premium": 2.849126816
+ "days": 7.7,
+ "premium": 0.48091579
},
{
- "hours": 7.8,
- "premium": 2.72046455
+ "days": 7.8,
+ "premium": 0.44871029
},
{
- "hours": 7.9,
- "premium": 2.597612465
+ "days": 7.9,
+ "premium": 0.41866151
},
{
- "hours": 8,
- "premium": 2.480308183
+ "days": 8,
+ "premium": 0.390625
},
{
- "hours": 8.1,
- "premium": 2.368301175
+ "days": 8.1,
+ "premium": 0.36446601
},
{
- "hours": 8.2,
- "premium": 2.261352223
+ "days": 8.2,
+ "premium": 0.34005881
},
{
- "hours": 8.3,
- "premium": 2.159232914
+ "days": 8.3,
+ "premium": 0.31728609
},
{
- "hours": 8.4,
- "premium": 2.06172515
+ "days": 8.4,
+ "premium": 0.29603839
},
{
- "hours": 8.5,
- "premium": 1.96862068
+ "days": 8.5,
+ "premium": 0.27621359
},
{
- "hours": 8.6,
- "premium": 1.879720658
+ "days": 8.6,
+ "premium": 0.25771639
},
{
- "hours": 8.7,
- "premium": 1.794835219
+ "days": 8.7,
+ "premium": 0.24045789
},
{
- "hours": 8.8,
- "premium": 1.71378307
+ "days": 8.8,
+ "premium": 0.22435515
},
{
- "hours": 8.9,
- "premium": 1.636391106
+ "days": 8.9,
+ "premium": 0.20933075
},
{
- "hours": 9,
- "premium": 1.56249404
+ "days": 9,
+ "premium": 0.1953125
},
{
- "hours": 9.1,
- "premium": 1.491934046
+ "days": 9.1,
+ "premium": 0.18223301
},
{
- "hours": 9.2,
- "premium": 1.424560428
+ "days": 9.2,
+ "premium": 0.17002941
},
{
- "hours": 9.3,
- "premium": 1.360229295
+ "days": 9.3,
+ "premium": 0.15864305
},
{
- "hours": 9.4,
- "premium": 1.298803252
+ "days": 9.4,
+ "premium": 0.1480192
},
{
- "hours": 9.5,
- "premium": 1.240151111
+ "days": 9.5,
+ "premium": 0.13810679
},
{
- "hours": 9.6,
- "premium": 1.184147607
+ "days": 9.6,
+ "premium": 0.12885819
},
{
- "hours": 9.7,
- "premium": 1.130673131
+ "days": 9.7,
+ "premium": 0.12022895
},
{
- "hours": 9.8,
- "premium": 1.079613477
+ "days": 9.8,
+ "premium": 0.11217757
},
{
- "hours": 9.9,
- "premium": 1.030859595
+ "days": 9.9,
+ "premium": 0.10466538
},
{
- "hours": 10,
- "premium": 0.9843073598
+ "days": 10,
+ "premium": 0.09765625
},
{
- "hours": 10.1,
- "premium": 0.939857349
+ "days": 10.1,
+ "premium": 0.0911165
},
{
- "hours": 10.2,
- "premium": 0.8974146294
+ "days": 10.2,
+ "premium": 0.0850147
},
{
- "hours": 10.3,
- "premium": 0.8568885549
+ "days": 10.3,
+ "premium": 0.07932152
},
{
- "hours": 10.4,
- "premium": 0.818192573
+ "days": 10.4,
+ "premium": 0.0740096
},
{
- "hours": 10.5,
- "premium": 0.7812440395
+ "days": 10.5,
+ "premium": 0.0690534
},
{
- "hours": 10.6,
- "premium": 0.7459640426
+ "days": 10.6,
+ "premium": 0.0644291
},
{
- "hours": 10.7,
- "premium": 0.7122772337
+ "days": 10.7,
+ "premium": 0.06011447
},
{
- "hours": 10.8,
- "premium": 0.6801116671
+ "days": 10.8,
+ "premium": 0.05608879
},
{
- "hours": 10.9,
- "premium": 0.6493986459
+ "days": 10.9,
+ "premium": 0.05233269
},
{
- "hours": 11,
- "premium": 0.6200725755
+ "days": 11,
+ "premium": 0.04882812
},
{
- "hours": 11.1,
- "premium": 0.5920708233
+ "days": 11.1,
+ "premium": 0.04555825
},
{
- "hours": 11.2,
- "premium": 0.5653335854
+ "days": 11.2,
+ "premium": 0.04250735
},
{
- "hours": 11.3,
- "premium": 0.5398037583
+ "days": 11.3,
+ "premium": 0.03966076
},
{
- "hours": 11.4,
- "premium": 0.5154268172
+ "days": 11.4,
+ "premium": 0.0370048
},
{
- "hours": 11.5,
- "premium": 0.4921506997
+ "days": 11.5,
+ "premium": 0.0345267
},
{
- "hours": 11.6,
- "premium": 0.4699256943
+ "days": 11.6,
+ "premium": 0.03221455
},
{
- "hours": 11.7,
- "premium": 0.4487043345
+ "days": 11.7,
+ "premium": 0.03005724
},
{
- "hours": 11.8,
- "premium": 0.4284412972
+ "days": 11.8,
+ "premium": 0.02804439
},
{
- "hours": 11.9,
- "premium": 0.4090933063
+ "days": 11.9,
+ "premium": 0.02616634
},
{
- "hours": 12,
- "premium": 0.3906190395
+ "days": 12,
+ "premium": 0.02441406
},
{
- "hours": 12.1,
- "premium": 0.3729790411
+ "days": 12.1,
+ "premium": 0.02277913
},
{
- "hours": 12.2,
- "premium": 0.3561356366
+ "days": 12.2,
+ "premium": 0.02125368
},
{
- "hours": 12.3,
- "premium": 0.3400528533
+ "days": 12.3,
+ "premium": 0.01983038
},
{
- "hours": 12.4,
- "premium": 0.3246963427
+ "days": 12.4,
+ "premium": 0.0185024
},
{
- "hours": 12.5,
- "premium": 0.3100333075
+ "days": 12.5,
+ "premium": 0.01726335
},
{
- "hours": 12.6,
- "premium": 0.2960324314
+ "days": 12.6,
+ "premium": 0.01610727
},
{
- "hours": 12.7,
- "premium": 0.2826638125
+ "days": 12.7,
+ "premium": 0.01502862
},
{
- "hours": 12.8,
- "premium": 0.2698988989
+ "days": 12.8,
+ "premium": 0.0140222
},
{
- "hours": 12.9,
- "premium": 0.2577104284
+ "days": 12.9,
+ "premium": 0.01308317
},
{
- "hours": 13,
- "premium": 0.2460723696
+ "days": 13,
+ "premium": 0.01220703
},
{
- "hours": 13.1,
- "premium": 0.2349598669
+ "days": 13.1,
+ "premium": 0.01138956
},
{
- "hours": 13.2,
- "premium": 0.224349187
+ "days": 13.2,
+ "premium": 0.01062684
},
{
- "hours": 13.3,
- "premium": 0.2142176684
+ "days": 13.3,
+ "premium": 0.00991519
},
{
- "hours": 13.4,
- "premium": 0.2045436729
+ "days": 13.4,
+ "premium": 0.0092512
},
{
- "hours": 13.5,
- "premium": 0.1953065395
+ "days": 13.5,
+ "premium": 0.00863167
},
{
- "hours": 13.6,
- "premium": 0.1864865403
+ "days": 13.6,
+ "premium": 0.00805364
},
{
- "hours": 13.7,
- "premium": 0.1780648381
+ "days": 13.7,
+ "premium": 0.00751431
},
{
- "hours": 13.8,
- "premium": 0.1700234464
+ "days": 13.8,
+ "premium": 0.0070111
},
{
- "hours": 13.9,
- "premium": 0.1623451911
+ "days": 13.9,
+ "premium": 0.00654159
},
{
- "hours": 14,
- "premium": 0.1550136735
+ "days": 14,
+ "premium": 0.00610352
},
{
- "hours": 14.1,
- "premium": 0.1480132355
+ "days": 14.1,
+ "premium": 0.00569478
},
{
- "hours": 14.2,
- "premium": 0.141328926
+ "days": 14.2,
+ "premium": 0.00531342
},
{
- "hours": 14.3,
- "premium": 0.1349464692
+ "days": 14.3,
+ "premium": 0.0049576
},
{
- "hours": 14.4,
- "premium": 0.1288522339
+ "days": 14.4,
+ "premium": 0.0046256
},
{
- "hours": 14.5,
- "premium": 0.1230332046
+ "days": 14.5,
+ "premium": 0.00431584
},
{
- "hours": 14.6,
- "premium": 0.1174769532
+ "days": 14.6,
+ "premium": 0.00402682
},
{
- "hours": 14.7,
- "premium": 0.1121716133
+ "days": 14.7,
+ "premium": 0.00375715
},
{
- "hours": 14.8,
- "premium": 0.107105854
+ "days": 14.8,
+ "premium": 0.00350555
},
{
- "hours": 14.9,
- "premium": 0.1022688562
+ "days": 14.9,
+ "premium": 0.00327079
},
{
- "hours": 15,
- "premium": 0.09765028954
+ "days": 15,
+ "premium": 0.00305176
},
{
- "hours": 15.1,
- "premium": 0.09324028992
+ "days": 15.1,
+ "premium": 0.00284739
},
{
- "hours": 15.2,
- "premium": 0.08902943881
+ "days": 15.2,
+ "premium": 0.00265671
},
{
- "hours": 15.3,
- "premium": 0.08500874298
+ "days": 15.3,
+ "premium": 0.0024788
},
{
- "hours": 15.4,
- "premium": 0.08116961533
+ "days": 15.4,
+ "premium": 0.0023128
},
{
- "hours": 15.5,
- "premium": 0.07750385653
+ "days": 15.5,
+ "premium": 0.00215792
},
{
- "hours": 15.6,
- "premium": 0.07400363751
+ "days": 15.6,
+ "premium": 0.00201341
},
{
- "hours": 15.7,
- "premium": 0.07066148277
+ "days": 15.7,
+ "premium": 0.00187858
},
{
- "hours": 15.8,
- "premium": 0.06747025438
+ "days": 15.8,
+ "premium": 0.00175277
},
{
- "hours": 15.9,
- "premium": 0.06442313674
+ "days": 15.9,
+ "premium": 0.0016354
},
{
- "hours": 16,
- "premium": 0.06151362205
+ "days": 16,
+ "premium": 0.00152588
},
{
- "hours": 16.1,
- "premium": 0.05873549638
+ "days": 16.1,
+ "premium": 0.0014237
},
{
- "hours": 16.2,
- "premium": 0.0560828264
+ "days": 16.2,
+ "premium": 0.00132835
},
{
- "hours": 16.3,
- "premium": 0.05354994675
+ "days": 16.3,
+ "premium": 0.0012394
},
{
- "hours": 16.4,
- "premium": 0.05113144788
+ "days": 16.4,
+ "premium": 0.0011564
},
{
- "hours": 16.5,
- "premium": 0.04882216454
+ "days": 16.5,
+ "premium": 0.00107896
},
{
- "hours": 16.6,
- "premium": 0.04661716473
+ "days": 16.6,
+ "premium": 0.0010067
},
{
- "hours": 16.7,
- "premium": 0.04451173917
+ "days": 16.7,
+ "premium": 0.00093929
},
{
- "hours": 16.8,
- "premium": 0.04250139126
+ "days": 16.8,
+ "premium": 0.00087639
},
{
- "hours": 16.9,
- "premium": 0.04058182743
+ "days": 16.9,
+ "premium": 0.0008177
},
{
- "hours": 17,
- "premium": 0.03874894803
+ "days": 17,
+ "premium": 0.00076294
},
{
- "hours": 17.1,
- "premium": 0.03699883852
+ "days": 17.1,
+ "premium": 0.00071185
},
{
- "hours": 17.2,
- "premium": 0.03532776115
+ "days": 17.2,
+ "premium": 0.00066418
},
{
- "hours": 17.3,
- "premium": 0.03373214696
+ "days": 17.3,
+ "premium": 0.0006197
},
{
- "hours": 17.4,
- "premium": 0.03220858814
+ "days": 17.4,
+ "premium": 0.0005782
},
{
- "hours": 17.5,
- "premium": 0.03075383079
+ "days": 17.5,
+ "premium": 0.00053948
},
{
- "hours": 17.6,
- "premium": 0.02936476796
+ "days": 17.6,
+ "premium": 0.00050335
},
{
- "hours": 17.7,
- "premium": 0.02803843297
+ "days": 17.7,
+ "premium": 0.00046964
},
{
- "hours": 17.8,
- "premium": 0.02677199314
+ "days": 17.8,
+ "premium": 0.00043819
},
{
- "hours": 17.9,
- "premium": 0.02556274371
+ "days": 17.9,
+ "premium": 0.00040885
},
{
- "hours": 18,
- "premium": 0.02440810204
+ "days": 18,
+ "premium": 0.00038147
},
{
- "hours": 18.1,
- "premium": 0.02330560213
+ "days": 18.1,
+ "premium": 0.00035592
},
{
- "hours": 18.2,
- "premium": 0.02225288935
+ "days": 18.2,
+ "premium": 0.00033209
},
{
- "hours": 18.3,
- "premium": 0.0212477154
+ "days": 18.3,
+ "premium": 0.00030985
},
{
- "hours": 18.4,
- "premium": 0.02028793348
+ "days": 18.4,
+ "premium": 0.0002891
},
{
- "hours": 18.5,
- "premium": 0.01937149378
+ "days": 18.5,
+ "premium": 0.00026974
},
{
- "hours": 18.6,
- "premium": 0.01849643903
+ "days": 18.6,
+ "premium": 0.00025168
},
{
- "hours": 18.7,
- "premium": 0.01766090034
+ "days": 18.7,
+ "premium": 0.00023482
},
{
- "hours": 18.8,
- "premium": 0.01686309325
+ "days": 18.8,
+ "premium": 0.0002191
},
{
- "hours": 18.9,
- "premium": 0.01610131384
+ "days": 18.9,
+ "premium": 0.00020442
},
{
- "hours": 19,
- "premium": 0.01537393516
+ "days": 19,
+ "premium": 0.00019073
},
{
- "hours": 19.1,
- "premium": 0.01467940375
+ "days": 19.1,
+ "premium": 0.00017796
},
{
- "hours": 19.2,
- "premium": 0.01401623625
+ "days": 19.2,
+ "premium": 0.00016604
},
{
- "hours": 19.3,
- "premium": 0.01338301634
+ "days": 19.3,
+ "premium": 0.00015492
},
{
- "hours": 19.4,
- "premium": 0.01277839162
+ "days": 19.4,
+ "premium": 0.00014455
},
{
- "hours": 19.5,
- "premium": 0.01220107079
+ "days": 19.5,
+ "premium": 0.00013487
},
{
- "hours": 19.6,
- "premium": 0.01164982083
+ "days": 19.6,
+ "premium": 0.00012584
},
{
- "hours": 19.7,
- "premium": 0.01112346444
+ "days": 19.7,
+ "premium": 0.00011741
},
{
- "hours": 19.8,
- "premium": 0.01062087747
+ "days": 19.8,
+ "premium": 0.00010955
},
{
- "hours": 19.9,
- "premium": 0.01014098651
+ "days": 19.9,
+ "premium": 0.00010221
},
{
- "hours": 20,
- "premium": 0.009682766659
+ "days": 20,
+ "premium": 0.00009537
},
{
- "hours": 20.1,
- "premium": 0.009245239282
+ "days": 20.1,
+ "premium": 0.00008898
},
{
- "hours": 20.2,
- "premium": 0.00882746994
+ "days": 20.2,
+ "premium": 0.00008302
},
{
- "hours": 20.3,
- "premium": 0.008428566391
+ "days": 20.3,
+ "premium": 0.00007746
},
{
- "hours": 20.4,
- "premium": 0.008047676686
+ "days": 20.4,
+ "premium": 0.00007227
},
{
- "hours": 20.5,
- "premium": 0.00768398735
+ "days": 20.5,
+ "premium": 0.00006743
},
{
- "hours": 20.6,
- "premium": 0.007336721641
+ "days": 20.6,
+ "premium": 0.00006292
},
{
- "hours": 20.7,
- "premium": 0.007005137894
+ "days": 20.7,
+ "premium": 0.00005871
},
{
- "hours": 20.8,
- "premium": 0.006688527937
+ "days": 20.8,
+ "premium": 0.00005477
},
{
- "hours": 20.9,
- "premium": 0.006386215578
+ "days": 20.9,
+ "premium": 0.00005111
},
{
- "hours": 21,
- "premium": 0.006097555161
- },
- {
- "hours": 21.1,
- "premium": 0.005821930184
- },
- {
- "hours": 21.2,
- "premium": 0.00555875199
- },
- {
- "hours": 21.3,
- "premium": 0.005307458501
- },
- {
- "hours": 21.4,
- "premium": 0.005067513023
- },
- {
- "hours": 21.5,
- "premium": 0.004838403097
- },
- {
- "hours": 21.6,
- "premium": 0.004619639409
- },
- {
- "hours": 21.7,
- "premium": 0.004410754738
- },
- {
- "hours": 21.8,
- "premium": 0.004211302963
- },
- {
- "hours": 21.9,
- "premium": 0.004020858111
- },
- {
- "hours": 22,
- "premium": 0.003839013443
- },
- {
- "hours": 22.1,
- "premium": 0.003665380588
- },
- {
- "hours": 22.2,
- "premium": 0.003499588715
- },
- {
- "hours": 22.3,
- "premium": 0.003341283736
- },
- {
- "hours": 22.4,
- "premium": 0.003190127557
- },
- {
- "hours": 22.5,
- "premium": 0.003045797348
- },
- {
- "hours": 22.6,
- "premium": 0.00290798486
- },
- {
- "hours": 22.7,
- "premium": 0.002776395763
- },
- {
- "hours": 22.8,
- "premium": 0.002650749018
- },
- {
- "hours": 22.9,
- "premium": 0.002530776279
- },
- {
- "hours": 23,
- "premium": 0.002416221316
- },
- {
- "hours": 23.1,
- "premium": 0.002306839472
- },
- {
- "hours": 23.2,
- "premium": 0.002202397137
- },
- {
- "hours": 23.3,
- "premium": 0.002102671249
- },
- {
- "hours": 23.4,
- "premium": 0.002007448823
- },
- {
- "hours": 23.5,
- "premium": 0.001916526489
- },
- {
- "hours": 23.6,
- "premium": 0.001829710062
- },
- {
- "hours": 23.7,
- "premium": 0.001746814125
- },
- {
- "hours": 23.8,
- "premium": 0.001667661636
- },
- {
- "hours": 23.9,
- "premium": 0.001592083546
- },
- {
- "hours": 24,
- "premium": 0.001519918442
- },
- {
- "hours": 24.1,
- "premium": 0.001451012198
- },
- {
- "hours": 24.2,
- "premium": 0.001385217649
- },
- {
- "hours": 24.3,
- "premium": 0.001322394277
- },
- {
- "hours": 24.4,
- "premium": 0.001262407907
- },
- {
- "hours": 24.5,
- "premium": 0.001205130426
- },
- {
- "hours": 24.6,
- "premium": 0.001150439504
- },
- {
- "hours": 24.7,
- "premium": 0.001098218336
- },
- {
- "hours": 24.8,
- "premium": 0.001048355392
- },
- {
- "hours": 24.9,
- "premium": 0.001000744179
- },
- {
- "hours": 25,
- "premium": 0.0009552830123
- },
- {
- "hours": 25.1,
- "premium": 0.0009118747986
- },
- {
- "hours": 25.2,
- "premium": 0.0008704268303
- },
- {
- "hours": 25.3,
- "premium": 0.0008308505857
- },
- {
- "hours": 25.4,
- "premium": 0.0007930615408
- },
- {
- "hours": 25.5,
- "premium": 0.0007569789886
- },
- {
- "hours": 25.6,
- "premium": 0.0007225258666
- },
- {
- "hours": 25.7,
- "premium": 0.0006896285923
- },
- {
- "hours": 25.8,
- "premium": 0.0006582169062
- },
- {
- "hours": 25.9,
- "premium": 0.0006282237214
- },
- {
- "hours": 26,
- "premium": 0.0005995849808
- },
- {
- "hours": 26.1,
- "premium": 0.0005722395197
- },
- {
- "hours": 26.2,
- "premium": 0.0005461289358
- },
- {
- "hours": 26.3,
- "premium": 0.000521197464
- },
- {
- "hours": 26.4,
- "premium": 0.0004973918574
- },
- {
- "hours": 26.5,
- "premium": 0.0004746612739
- },
- {
- "hours": 26.6,
- "premium": 0.0004529571671
- },
- {
- "hours": 26.7,
- "premium": 0.0004322331829
- },
- {
- "hours": 26.8,
- "premium": 0.0004124450606
- },
- {
- "hours": 26.9,
- "premium": 0.0003935505382
- },
- {
- "hours": 27,
- "premium": 0.0003755092621
- },
- {
- "hours": 27.1,
- "premium": 0.0003582827011
- },
- {
- "hours": 27.2,
- "premium": 0.0003418340639
- },
- {
- "hours": 27.3,
- "premium": 0.0003261282209
- },
- {
- "hours": 27.4,
- "premium": 0.0003111316285
- },
- {
- "hours": 27.5,
- "premium": 0.0002968122581
- },
- {
- "hours": 27.6,
- "premium": 0.0002831395276
- },
- {
- "hours": 27.7,
- "premium": 0.0002700842357
- },
- {
- "hours": 27.8,
- "premium": 0.0002576184997
- },
- {
- "hours": 27.9,
- "premium": 0.0002457156965
- },
- {
- "hours": 28,
- "premium": 0.0002343504047
- },
- {
- "hours": 28.1,
- "premium": 0.0002234983513
- },
- {
- "hours": 28.2,
- "premium": 0.0002131363592
- },
- {
- "hours": 28.3,
- "premium": 0.0002032422981
- },
- {
- "hours": 28.4,
- "premium": 0.0001937950369
- },
- {
- "hours": 28.5,
- "premium": 0.0001847743988
- },
- {
- "hours": 28.6,
- "premium": 0.0001761611183
- },
- {
- "hours": 28.7,
- "premium": 0.0001679367997
- },
- {
- "hours": 28.8,
- "premium": 0.0001600838782
- },
- {
- "hours": 28.9,
- "premium": 0.000152585582
- },
- {
- "hours": 29,
- "premium": 0.0001454258968
- },
- {
- "hours": 29.1,
- "premium": 0.0001385895316
- },
- {
- "hours": 29.2,
- "premium": 0.0001320618856
- },
- {
- "hours": 29.3,
- "premium": 0.0001258290176
- },
- {
- "hours": 29.4,
- "premium": 0.000119877616
- },
- {
- "hours": 29.5,
- "premium": 0.0001141949701
- },
- {
- "hours": 29.6,
- "premium": 0.0001087689434
- },
- {
- "hours": 29.7,
- "premium": 0.0001035879474
- },
- {
- "hours": 29.8,
- "premium": 0.00009864091679
- },
- {
- "hours": 29.9,
- "premium": 0.00009391728619
- },
- {
- "hours": 30,
- "premium": 0.00008940696716
- },
- {
- "hours": 30.1,
- "premium": 0.00008510032691
- },
- {
- "hours": 30.2,
- "premium": 0.00008098816763
- },
- {
- "hours": 30.3,
- "premium": 0.00007706170686
- },
- {
- "hours": 30.4,
- "premium": 0.00007331255876
- },
- {
- "hours": 30.5,
- "premium": 0.00006973271618
- },
- {
- "hours": 30.6,
- "premium": 0.00006631453354
- },
- {
- "hours": 30.7,
- "premium": 0.00006305071056
- },
- {
- "hours": 30.8,
- "premium": 0.00005993427658
- },
- {
- "hours": 30.9,
- "premium": 0.00005695857576
- },
- {
- "hours": 31,
- "premium": 0.00005411725282
- },
- {
- "hours": 31.1,
- "premium": 0.00005140423947
- },
- {
- "hours": 31.2,
- "premium": 0.00004881374144
- },
- {
- "hours": 31.3,
- "premium": 0.00004634022616
- },
- {
- "hours": 31.4,
- "premium": 0.00004397841085
- },
- {
- "hours": 31.5,
- "premium": 0.00004172325134
- },
- {
- "hours": 31.6,
- "premium": 0.00003956993122
- },
- {
- "hours": 31.7,
- "premium": 0.00003751385157
- },
- {
- "hours": 31.8,
- "premium": 0.00003555062119
- },
- {
- "hours": 31.9,
- "premium": 0.00003367604714
- },
- {
- "hours": 32,
- "premium": 0.00003188612585
- },
- {
- "hours": 32.1,
- "premium": 0.00003017703453
- },
- {
- "hours": 32.2,
- "premium": 0.00002854512304
- },
- {
- "hours": 32.3,
- "premium": 0.00002698690605
- },
- {
- "hours": 32.4,
- "premium": 0.00002549905564
- },
- {
- "hours": 32.5,
- "premium": 0.00002407839417
- },
- {
- "hours": 32.6,
- "premium": 0.00002272188749
- },
- {
- "hours": 32.7,
- "premium": 0.00002142663848
- },
- {
- "hours": 32.8,
- "premium": 0.00002018988084
- },
- {
- "hours": 32.9,
- "premium": 0.00001900897319
- },
- {
- "hours": 33,
- "premium": 0.00001788139343
- },
- {
- "hours": 33.1,
- "premium": 0.00001680473337
- },
- {
- "hours": 33.2,
- "premium": 0.00001577669355
- },
- {
- "hours": 33.3,
- "premium": 0.00001479507836
- },
- {
- "hours": 33.4,
- "premium": 0.00001385779133
- },
- {
- "hours": 33.5,
- "premium": 0.00001296283069
- },
- {
- "hours": 33.6,
- "premium": 0.00001210828503
- },
- {
- "hours": 33.7,
- "premium": 0.00001129232928
- },
- {
- "hours": 33.8,
- "premium": 0.00001051322079
- },
- {
- "hours": 33.9,
- "premium": 0.000009769295582
- },
- {
- "hours": 34,
- "premium": 0.000009058964847
- },
- {
- "hours": 34.1,
- "premium": 0.000008380711508
- },
- {
- "hours": 34.2,
- "premium": 0.000007733087003
- },
- {
- "hours": 34.3,
- "premium": 0.000007114708181
- },
- {
- "hours": 34.4,
- "premium": 0.000006524254355
- },
- {
- "hours": 34.5,
- "premium": 0.000005960464477
- },
- {
- "hours": 34.6,
- "premium": 0.000005422134446
- },
- {
- "hours": 34.7,
- "premium": 0.000004908114535
- },
- {
- "hours": 34.8,
- "premium": 0.000004417306939
- },
- {
- "hours": 34.9,
- "premium": 0.000003948663427
- },
- {
- "hours": 35,
- "premium": 0.000003501183104
- },
- {
- "hours": 35.1,
- "premium": 0.000003073910275
- },
- {
- "hours": 35.2,
- "premium": 0.000002665932401
- },
- {
- "hours": 35.3,
- "premium": 0.000002276378154
- },
- {
- "hours": 35.4,
- "premium": 0.000001904415552
- },
- {
- "hours": 35.5,
- "premium": 0.000001549250184
- },
- {
- "hours": 35.6,
- "premium": 0.000001210123515
- },
- {
- "hours": 35.7,
- "premium": 8.86311262e-7
- },
- {
- "hours": 35.8,
- "premium": 5.77121852e-7
- },
- {
- "hours": 35.9,
- "premium": 2.81894939e-7
- },
- {
- "hours": 36,
+ "days": 21,
"premium": 0
}
]
diff --git a/apps/web/src/hooks/useActiveEthPremiumAmount.ts b/apps/web/src/hooks/useActiveEthPremiumAmount.ts
index 8fb0c9726b9..f1456efc52a 100644
--- a/apps/web/src/hooks/useActiveEthPremiumAmount.ts
+++ b/apps/web/src/hooks/useActiveEthPremiumAmount.ts
@@ -1,11 +1,11 @@
-import { useBasenamesLaunchTime } from 'apps/web/src/hooks/useBasenamesLaunchTime';
+import { useBasenamesNameExpires } from 'apps/web/src/hooks/useBasenamesNameExpires';
import { useState } from 'react';
import { useInterval } from 'usehooks-ts';
const SECONDS_IN_A_MINUTE = 60;
const SECONDS_IN_AN_HOUR = 60 * SECONDS_IN_A_MINUTE;
const SECONDS_IN_A_DAY = 24 * SECONDS_IN_AN_HOUR;
-const THIRTY_SIX_HOURS_IN_SECONDS = 36 * SECONDS_IN_AN_HOUR;
+const TWENTY_ONE_DAYS_IN_SECONDS = 21 * SECONDS_IN_A_DAY;
function formatTimeUnit(unit: number): string {
return unit.toString().padStart(2, '0');
@@ -22,15 +22,15 @@ function calculateTimeLeft(differenceInSeconds: number): string {
)}:${formatTimeUnit(seconds)}`;
}
-export function usePremiumEndDurationRemaining() {
+export function usePremiumEndDurationRemaining(name: string) {
const [timeLeft, setTimeLeft] = useState(null);
- const { data: launchTimeSeconds } = useBasenamesLaunchTime();
+ const { data: auctionStartTimeSeconds } = useBasenamesNameExpires(name);
useInterval(() => {
- if (!launchTimeSeconds) return;
+ if (!auctionStartTimeSeconds) return;
const currentTimeInSeconds = Math.floor(Date.now() / 1000);
- const endTimeInSeconds = Number(launchTimeSeconds) + THIRTY_SIX_HOURS_IN_SECONDS;
+ const endTimeInSeconds = Number(auctionStartTimeSeconds) + TWENTY_ONE_DAYS_IN_SECONDS;
const timeDifference = endTimeInSeconds - currentTimeInSeconds;
if (timeDifference > 0) {
@@ -40,5 +40,5 @@ export function usePremiumEndDurationRemaining() {
}
}, 1000);
- return { seconds: launchTimeSeconds, timestamp: timeLeft };
+ return { seconds: auctionStartTimeSeconds, timestamp: timeLeft };
}
diff --git a/apps/web/src/hooks/useActivePremiumAmount.ts b/apps/web/src/hooks/useActivePremiumAmount.ts
deleted file mode 100644
index 391ec9ba720..00000000000
--- a/apps/web/src/hooks/useActivePremiumAmount.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import ExponentialPremiumPriceOracleABI from 'apps/web/src/abis/ExponentialPremiumPriceOracleAbi';
-import { EXPONENTIAL_PREMIUM_PRICE_ORACLE } from 'apps/web/src/addresses/usernames';
-import { useBasenamesLaunchTime } from 'apps/web/src/hooks/useBasenamesLaunchTime';
-import { useMemo } from 'react';
-import { useReadContract } from 'wagmi';
-import { base } from 'viem/chains';
-
-export function useActiveEthPremiumAmount() {
- const { data: launchTimeSeconds } = useBasenamesLaunchTime();
-
- const timeSinceLaunch = useMemo(
- () => (launchTimeSeconds ? BigInt(Math.floor(Date.now() / 1000)) - launchTimeSeconds : null),
- [launchTimeSeconds],
- );
-
- return useReadContract({
- abi: ExponentialPremiumPriceOracleABI,
- address: EXPONENTIAL_PREMIUM_PRICE_ORACLE[base.id],
- functionName: 'decayedPremium',
- args: [timeSinceLaunch as bigint],
- query: {
- enabled: typeof timeSinceLaunch === 'bigint',
- },
- });
-}
diff --git a/apps/web/src/hooks/useBasenamesLaunchTime.ts b/apps/web/src/hooks/useBasenamesLaunchTime.ts
deleted file mode 100644
index 93529a54d1a..00000000000
--- a/apps/web/src/hooks/useBasenamesLaunchTime.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export function useBasenamesLaunchTime() {
- // Temporarily hardcoded from RegistrarController
- return { data: 1724184000n };
-}
diff --git a/apps/web/src/hooks/useBasenamesNameExpires.ts b/apps/web/src/hooks/useBasenamesNameExpires.ts
new file mode 100644
index 00000000000..24aa4b1234e
--- /dev/null
+++ b/apps/web/src/hooks/useBasenamesNameExpires.ts
@@ -0,0 +1,32 @@
+import { useReadContract } from 'wagmi';
+import BaseRegistrarAbi from 'apps/web/src/abis/BaseRegistrarAbi';
+import { USERNAME_BASE_REGISTRAR_ADDRESSES } from 'apps/web/src/addresses/usernames';
+import {
+ getTokenIdFromBasename,
+ formatBaseEthDomain,
+ getChainForBasename,
+ GRACE_PERIOD_DURATION_SECONDS,
+} from 'apps/web/src/utils/usernames';
+import { Basename } from '@coinbase/onchainkit/identity';
+
+export function useBasenamesNameExpires(name: string) {
+ // Convert name to full basename format
+ const fullBasename = name.includes('.') ? (name as Basename) : formatBaseEthDomain(name, 8453); // Base mainnet
+ const chain = getChainForBasename(fullBasename);
+ const tokenId = getTokenIdFromBasename(fullBasename);
+
+ const { data: nameExpiresTimestamp } = useReadContract({
+ abi: BaseRegistrarAbi,
+ address: USERNAME_BASE_REGISTRAR_ADDRESSES[chain.id],
+ functionName: 'nameExpires',
+ args: [tokenId],
+ chainId: chain.id,
+ });
+
+ // Add 90 days (grace period) to get the auction start time
+ const auctionStartTime = nameExpiresTimestamp
+ ? nameExpiresTimestamp + BigInt(GRACE_PERIOD_DURATION_SECONDS)
+ : undefined;
+
+ return { data: auctionStartTime };
+}
diff --git a/apps/web/src/utils/usernames.ts b/apps/web/src/utils/usernames.ts
index d410ce8eb3c..2af1a89cc87 100644
--- a/apps/web/src/utils/usernames.ts
+++ b/apps/web/src/utils/usernames.ts
@@ -831,8 +831,9 @@ export const REGISTER_CONTRACT_ADDRESSES = UPGRADEABLE_REGISTRAR_CONTROLLER_ADDR
export const isBasenameRenewalsKilled = process.env.NEXT_PUBLIC_KILL_BASENAMES_RENEWALS === 'true';
-// Grace period duration in seconds (90 days)
-export const GRACE_PERIOD_DURATION_MS = 90 * 24 * 60 * 60 * 1000;
+// Grace period duration (90 days)
+export const GRACE_PERIOD_DURATION_SECONDS = 90 * 24 * 60 * 60;
+export const GRACE_PERIOD_DURATION_MS = GRACE_PERIOD_DURATION_SECONDS * 1000;
/**
* Check if a basename is in its grace period (expired but still renewable)