Skip to content

Commit 4bb6e7c

Browse files
montycheeseclaude
andcommitted
fix(vibenet): remove 200ms Blocks feature card — not live on vibenet yet
The "200ms Blocks" card was added to the Vibenet landing page in #48 as a preview of the Denim upgrade, but the underlying protocol change has not shipped to vibenet. Verified against https://rpc.vibes.base.org today: - consecutive blocks are 2s apart, not 200ms; - `eth_getBlockByNumber` returns no `timestampMs` field; - the BaseTime predeploy at 0x42..0030 is an uninitialized proxy (`eth_call timestampMs()` reverts with "implementation not initialized"). So all three capability highlights on the card are currently false, and its "Explore Blocks" CTA sends people to an explorer with no millisecond support. Also drops the unconditional BaseTime row that the same PR injected into the vibenet contracts list, for the same reason — it advertises a predeploy that is not initialized on this network. The Denim changelog entry (/upgrades/changelog/200ms-blocks) is unchanged: that page is the roadmap surface and is correctly marked as upcoming. Add the feature card back in the same PR that turns 200ms blocks on for vibenet. Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 6bd03ae commit 4bb6e7c

2 files changed

Lines changed: 6 additions & 43 deletions

File tree

app/vibenet/data/contracts.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,21 @@ import type { ContractMeta, ResolvedContract } from '../library/types';
88
// - `hidden` keeps internal/demo deployments out of the public list;
99
// - `watch` adds an "add to wallet" affordance for tokens.
1010
export const CONTRACT_REGISTRY: Record<string, ContractMeta> = {
11-
baseTime: { label: 'BaseTime (predeploy)' },
1211
usdv: { label: 'USDV (ERC-20)', watch: { type: 'ERC20', symbol: 'USDV', decimals: 6 } },
1312
nfv: { label: 'NFV (ERC-721)' },
1413
// Internal/demo deployments intentionally omitted from the public list.
1514
faucetAddress: { label: 'Faucet', hidden: true },
1615
vibecheck: { label: 'Vibecheck', hidden: true },
1716
};
1817

19-
const BASE_TIME_ADDRESS = '0x4200000000000000000000000000000000000030';
20-
2118
// Turn the raw contracts map into a display list: keep only real addresses,
2219
// drop hidden entries, and layer on registry metadata (or a humanized label).
2320
// Returns null while the contracts payload hasn't loaded yet.
2421
export function resolveContracts(
2522
contracts: Record<string, unknown> | null,
2623
): ResolvedContract[] | null {
2724
if (!contracts) return null;
28-
return Object.entries({ ...contracts, baseTime: BASE_TIME_ADDRESS })
25+
return Object.entries(contracts)
2926
.filter((entry): entry is [string, string] => isAddress(entry[1]))
3027
.filter(([key]) => !CONTRACT_REGISTRY[key]?.hidden)
3128
.map(([key, address]) => {

app/vibenet/data/features.ts

Lines changed: 5 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -35,45 +35,11 @@ export const FEATURES: VibenetFeature[] = [
3535
secondaryCta: { label: 'Build Your Own', href: 'https://docs.base.org/base-chain/specs/upgrades/cobalt/eip-8130', external: true },
3636
links: [{ label: 'EIP-8130', href: 'https://eip.tools/eip/8130', external: true }],
3737
},
38-
{
39-
id: '200ms-canonical-blocks',
40-
tag: '200ms',
41-
title: '200ms Blocks',
42-
summary:
43-
'Native blocks at a 200ms cadence, each with its own hash, state, receipts, and finality lifecycle.',
44-
status: 'preview',
45-
availability: 'Coming soon in ',
46-
availabilityLabel: 'Base Denim',
47-
highlights: [
48-
{
49-
title: 'Native Blocks Every 200ms',
50-
detail: 'Full blocks, not partial pending-state updates or Flashblocks.',
51-
},
52-
{
53-
title: 'Millisecond RPC Timestamps',
54-
detail: 'Read exact block time from timestampMs and blockTimestampMs fields.',
55-
},
56-
{
57-
title: 'Onchain Millisecond Time',
58-
detail: 'Contracts can read the current full timestamp from the BaseTime predeploy.',
59-
},
60-
{
61-
title: 'Ethereum Compatible',
62-
detail: 'Header timestamps and EVM block.timestamp remain in whole seconds.',
63-
},
64-
],
65-
cta: {
66-
label: 'Explore Blocks',
67-
href: '/vibenet/explorer',
68-
},
69-
links: [
70-
{
71-
label: 'Protocol source',
72-
href: 'https://github.com/base/contracts/blob/4848ec70d8f1062fec59470d6e731e13ece8a728/src/L2/BaseTime.sol',
73-
external: true,
74-
},
75-
],
76-
},
38+
// 200ms Blocks is intentionally absent: it is a Denim roadmap item that has
39+
// not landed on vibenet yet (blocks are still ~2s, `timestampMs` is not on
40+
// the RPC payload, and the BaseTime predeploy is an uninitialized proxy).
41+
// It stays documented under /upgrades/changelog/200ms-blocks until it ships
42+
// here — add the feature card back in the same PR that enables it.
7743
];
7844

7945
// Raw feature shape as it appears in the API `config` payload.

0 commit comments

Comments
 (0)