Skip to content

Commit 667b719

Browse files
authored
Merge branch 'dev' into dappworld
2 parents af476b9 + 55c8fa4 commit 667b719

File tree

12 files changed

+128
-53
lines changed

12 files changed

+128
-53
lines changed

.all-contributorsrc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4810,7 +4810,8 @@
48104810
"profile": "http://www.technobunnies.com",
48114811
"contributions": [
48124812
"doc",
4813-
"maintenance"
4813+
"maintenance",
4814+
"content"
48144815
]
48154816
},
48164817
{

.storybook/i18next.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export const baseLocales = {
1313
export const ns = [
1414
"common",
1515
"glossary",
16+
"glossary-tooltip",
1617
"learn-quizzes",
1718
"page-about",
1819
"page-index",

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -837,7 +837,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
837837
<td align="center" valign="top" width="14.28%"><a href="https://o.zgur.org"><img src="https://avatars.githubusercontent.com/u/375834?v=4?s=100" width="100px;" alt="Ozgur"/><br /><sub><b>Ozgur</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=rootqa" title="Documentation">📖</a></td>
838838
<td align="center" valign="top" width="14.28%"><a href="https://github.com/adilanchian"><img src="https://avatars.githubusercontent.com/u/13204620?v=4?s=100" width="100px;" alt="Alec Dilanchian"/><br /><sub><b>Alec Dilanchian</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=adilanchian" title="Documentation">📖</a></td>
839839
<td align="center" valign="top" width="14.28%"><a href="http://horacio.eth"><img src="https://avatars.githubusercontent.com/u/7662728?v=4?s=100" width="100px;" alt="Horacio Bertorello"/><br /><sub><b>Horacio Bertorello</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=horacio" title="Documentation">📖</a></td>
840-
<td align="center" valign="top" width="14.28%"><a href="http://www.technobunnies.com"><img src="https://avatars.githubusercontent.com/u/20266893?v=4?s=100" width="100px;" alt="m4sterbunny"/><br /><sub><b>m4sterbunny</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=m4sterbunny" title="Documentation">📖</a> <a href="#maintenance-m4sterbunny" title="Maintenance">🚧</a></td>
840+
<td align="center" valign="top" width="14.28%"><a href="http://www.technobunnies.com"><img src="https://avatars.githubusercontent.com/u/20266893?v=4?s=100" width="100px;" alt="m4sterbunny"/><br /><sub><b>m4sterbunny</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=m4sterbunny" title="Documentation">📖</a> <a href="#maintenance-m4sterbunny" title="Maintenance">🚧</a> <a href="#content-m4sterbunny" title="Content">🖋</a></td>
841841
<td align="center" valign="top" width="14.28%"><a href="https://yutingzhao1991.github.io/"><img src="https://avatars.githubusercontent.com/u/1061968?v=4?s=100" width="100px;" alt="愚指导"/><br /><sub><b>愚指导</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=yutingzhao1991" title="Documentation">📖</a></td>
842842
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rayjasson98"><img src="https://avatars.githubusercontent.com/u/48130098?v=4?s=100" width="100px;" alt="Ray Jasson"/><br /><sub><b>Ray Jasson</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=rayjasson98" title="Documentation">📖</a></td>
843843
</tr>

public/content/developers/docs/nodes-and-clients/index.md

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,12 @@ This table summarizes the different clients. All of them pass [client tests](htt
135135

136136
| Client | Language | Operating systems | Networks | Sync strategies | State pruning |
137137
| ------------------------------------------------------------------------ | ---------- | --------------------- | ------------------------- | ---------------------------------- | --------------- |
138-
| [Geth](https://geth.ethereum.org/) | Go | Linux, Windows, macOS | Mainnet, Sepolia, Holesky | Snap, Full | Archive, Pruned |
139-
| [Nethermind](http://nethermind.io/) | C#, .NET | Linux, Windows, macOS | Mainnet, Sepolia, Holesky | Snap (without serving), Fast, Full | Archive, Pruned |
140-
| [Besu](https://besu.hyperledger.org/en/stable/) | Java | Linux, Windows, macOS | Mainnet, Sepolia, Holesky | Snap, Fast, Full | Archive, Pruned |
141-
| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux, Windows, macOS | Mainnet, Sepolia, Holesky | Full | Archive, Pruned |
142-
| [Reth](https://github.com/paradigmxyz/reth) _(beta)_ | Rust | Linux, Windows, macOS | Mainnet, Sepolia, Holesky | Full | Archive, Pruned |
143-
| [EthereumJS](https://github.com/ethereumjs/ethereumjs-monorepo) _(beta)_ | TypeScript | Linux, Windows, macOS | Sepolia, Holesky | Full | Pruned |
138+
| [Geth](https://geth.ethereum.org/) | Go | Linux, Windows, macOS | Mainnet, Sepolia, Holesky | [Snap](#snap-sync), [Full](#full-sync) | Archive, Pruned |
139+
| [Nethermind](http://nethermind.io/) | C#, .NET | Linux, Windows, macOS | Mainnet, Sepolia, Holesky | [Snap](#snap-sync) (without serving), Fast, [Full](#full-sync) | Archive, Pruned |
140+
| [Besu](https://besu.hyperledger.org/en/stable/) | Java | Linux, Windows, macOS | Mainnet, Sepolia, Holesky | [Snap](#snap-sync), [Fast](#fast-sync), [Full](#full-sync) | Archive, Pruned |
141+
| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux, Windows, macOS | Mainnet, Sepolia, Holesky | [Full](#full-sync) | Archive, Pruned |
142+
| [Reth](https://github.com/paradigmxyz/reth) _(beta)_ | Rust | Linux, Windows, macOS | Mainnet, Sepolia, Holesky | [Full](#full-sync) | Archive, Pruned |
143+
| [EthereumJS](https://github.com/ethereumjs/ethereumjs-monorepo) _(beta)_ | TypeScript | Linux, Windows, macOS | Sepolia, Holesky | [Full](#full-sync) | Pruned |
144144

145145
For more on supported networks, read up on [Ethereum networks](/developers/docs/networks/).
146146

@@ -234,21 +234,32 @@ Synchronization modes represent different approaches to this process with variou
234234

235235
### Execution layer sync modes {#execution-layer-sync-modes}
236236

237-
#### Full archive sync {#full-sync}
237+
The execution layer may be run in different modes to suit different use cases, from re-executing the blockchain's world state to only syncing with the tip of the chain from a trusted checkpoint.
238238

239-
Full sync downloads all blocks (including headers, transactions, and receipts) and generates the state of the blockchain incrementally by executing every block from genesis.
239+
#### Full sync {#full-sync}
240+
241+
A full sync downloads all blocks (including headers and block bodies) and regenerates the state of the blockchain incrementally by executing every block from genesis.
240242

241243
- Minimizes trust and offers the highest security by verifying every transaction.
242244
- With an increasing number of transactions, it can take days to weeks to process all transactions.
243245

244-
#### Full snap sync {#snap-sync}
246+
[Archive nodes](#archive-node) perform a full sync to build (and retain) a complete history of the state changes made by every transaction in every block.
247+
248+
#### Fast sync {#fast-sync}
249+
250+
Like a full sync, a fast sync downloads all blocks (including headers, transactions, and receipts). However, instead of re-processing the historical transactions, a fast sync relies on the receipts until it reaches a recent head, when it switches to importing and processing blocks to provide a full node.
245251

246-
Snap sync verifies the chain block-by-block, just like a full archive sync; however, instead of starting at the genesis block, it starts at a more recent 'trusted' checkpoint that is known to be part of the true blockchain. The node saves periodic checkpoints while deleting data older than a certain age. Those snapshots are used to regenerate state data when it is needed, rather than having to store it all forever.
252+
- Fast sync strategy.
253+
- Reduces processing demand in favor of bandwidth usage.
247254

248-
- Fastest sync strategy, currently default in Ethereum mainnet
249-
- Saves a lot of disk usage and network bandwidth without sacrificing security
255+
#### Snap sync {#snap-sync}
250256

251-
[More on snap sync](https://github.com/ethereum/devp2p/blob/master/caps/snap.md)
257+
Snap syncs also verify the chain block-by-block. However, instead of starting at the genesis block, a snap sync starts at a more recent 'trusted' checkpoint that is known to be part of the true blockchain. The node saves periodic checkpoints while deleting data older than a certain age. These snapshots are used to regenerate state data as needed, rather than storing it forever.
258+
259+
- Fastest sync strategy, currently default in Ethereum Mainnet.
260+
- Saves a lot of disk usage and network bandwidth without sacrificing security.
261+
262+
[More on snap sync](https://github.com/ethereum/devp2p/blob/master/caps/snap.md).
252263

253264
#### Light sync {#light-sync}
254265

@@ -271,16 +282,14 @@ Optimistic sync is a post-merge synchronization strategy designed to be opt-in a
271282

272283
#### Checkpoint sync {#checkpoint-sync}
273284

274-
Checkpoint sync, also known as weak subjectivity sync, creates a superior user experience for syncing Beacon Node. It's based on assumptions of [weak subjectivity](/developers/docs/consensus-mechanisms/pos/weak-subjectivity/) which enables syncing Beacon Chain from a recent weak subjectivity checkpoint instead of genesis. Checkpoint sync makes the initial sync time significantly faster with similar trust assumptions as syncing from [genesis](/glossary/#genesis-block).
285+
A checkpoint sync, also known as weak subjectivity sync, creates a superior user experience for syncing a Beacon Node. It's based on assumptions of [weak subjectivity](/developers/docs/consensus-mechanisms/pos/weak-subjectivity/) which enables syncing the Beacon Chain from a recent weak subjectivity checkpoint instead of genesis. Checkpoint syncs make the initial sync time significantly faster with similar trust assumptions as syncing from [genesis](/glossary/#genesis-block).
275286

276-
In practice, this means your node connects to a remote service to download recent finalized states and continues verifying data from that point. Third party providing the data is trusted and should be picked carefully.
287+
In practice, this means your node connects to a remote service to download recent finalized states and continues verifying data from that point. The third party providing the data is trusted and should be picked carefully.
277288

278289
More on [checkpoint sync](https://notes.ethereum.org/@djrtwo/ws-sync-in-practice)
279290

280291
## Further reading {#further-reading}
281292

282-
There is a lot of information about Ethereum clients on the internet. Here are few resources that might be helpful.
283-
284293
- [Ethereum 101 - Part 2 - Understanding Nodes](https://kauri.io/ethereum-101-part-2-understanding-nodes/48d5098292fd4f11b251d1b1814f0bba/a) _– Wil Barnes, 13 February 2019_
285294
- [Running Ethereum Full Nodes: A Guide for the Barely Motivated](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux, 7 November 2019_
286295

public/images/dev-tools/atlas.png

42.9 KB
Loading

src/components/Glossary/GlossaryDefinition/index.tsx

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { ComponentProps } from "react"
2-
import { Box, type HeadingProps, Text } from "@chakra-ui/react"
2+
import { Box, type HeadingProps, Text, VStack } from "@chakra-ui/react"
33

4+
import Heading from "@/components/Heading"
45
import IdAnchor from "@/components/IdAnchor"
56
import InlineLink from "@/components/Link"
6-
import OldHeading from "@/components/OldHeading"
77
import Translation from "@/components/Translation"
88

99
import { DEFAULT_GLOSSARY_NS } from "@/lib/constants"
@@ -36,27 +36,17 @@ const GlossaryDefinition = ({
3636
position: "relative",
3737
} as HeadingProps
3838
}
39-
const commonHeadingProps = (id?: string): HeadingProps => ({
40-
fontWeight: 700,
41-
lineHeight: 1.4,
42-
...headingPropsForAnchor(id),
43-
})
44-
const Heading3 = ({ id, children, ...rest }: HeadingProps) => (
45-
<OldHeading as="h3" {...commonHeadingProps(id)} fontSize="2xl" {...rest}>
46-
<IdAnchor id={id} />
47-
{children}
48-
</OldHeading>
49-
)
5039

5140
return (
52-
<Box textAlign="start">
53-
<Heading3 id={term}>
41+
<VStack spacing={4} align="stretch" textAlign="start" mb={8}>
42+
<Heading size="md" {...headingPropsForAnchor(term)}>
43+
<IdAnchor id={term} />
5444
<Translation
5545
id={term + "-term"}
5646
options={options}
5747
transform={components}
5848
/>
59-
</Heading3>
49+
</Heading>
6050
{/**
6151
* `as="span"` prevents hydration warnings for strings that contain
6252
* elements that cannot be nested inside `p` tags, like `ul` tags
@@ -70,7 +60,7 @@ const GlossaryDefinition = ({
7060
transform={components}
7161
/>
7262
</Text>
73-
</Box>
63+
</VStack>
7464
)
7565
}
7666

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,33 @@
1+
import { Center } from "@chakra-ui/react"
12
import { Meta, StoryObj } from "@storybook/react"
23

34
import GlossaryTooltipComponent from "."
45

56
const meta = {
67
title: "Molecules / Overlay Content / Glossary Tooltip",
78
component: GlossaryTooltipComponent,
9+
args: {
10+
termKey: "bridge",
11+
children: "bridge",
12+
},
13+
decorators: [
14+
(Story) => (
15+
<Center boxSize="md">
16+
<Story />
17+
</Center>
18+
),
19+
],
820
} satisfies Meta<typeof GlossaryTooltipComponent>
921

1022
export default meta
1123

12-
export const GlossaryTooltip: StoryObj<typeof meta> = {
24+
type Story = StoryObj<typeof meta>
25+
26+
export const Basic: Story = {}
27+
28+
// for chromatic story snapshot showing the rendered popover
29+
export const OnOpen: Story = {
1330
args: {
14-
termKey: "big-endian",
15-
children: "big-endian",
31+
isOpen: true,
1632
},
1733
}

src/components/Glossary/GlossaryTooltip/index.tsx

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,58 @@
11
import React, { ReactNode } from "react"
22
import { useRouter } from "next/router"
3-
import { Box, Text } from "@chakra-ui/react"
3+
import { Box, Text, VStack } from "@chakra-ui/react"
44

5-
import GlossaryDefinition from "@/components/Glossary/GlossaryDefinition"
6-
import Tooltip from "@/components/Tooltip"
5+
import Heading from "@/components/Heading"
6+
import InlineLink from "@/components/Link"
7+
import Tooltip, { type TooltipProps } from "@/components/Tooltip"
8+
import Translation from "@/components/Translation"
79

810
import { trackCustomEvent } from "@/lib/utils/matomo"
911
import { cleanPath } from "@/lib/utils/url"
1012

11-
type GlossaryTooltipProps = {
13+
type GlossaryTooltipProps = Omit<TooltipProps, "content"> & {
1214
children: ReactNode
1315
termKey: string
1416
}
1517

16-
const GlossaryTooltip = ({ children, termKey }: GlossaryTooltipProps) => {
18+
const components = {
19+
a: InlineLink,
20+
}
21+
22+
const GlossaryTooltip = ({
23+
children,
24+
termKey,
25+
...props
26+
}: GlossaryTooltipProps) => {
1727
const { asPath } = useRouter()
1828

1929
return (
2030
<Box as="span" display="inline-block">
2131
<Tooltip
32+
{...props}
2233
content={
23-
<GlossaryDefinition
24-
term={termKey}
25-
size="sm"
26-
options={{ ns: "glossary-tooltip" }}
27-
/>
34+
<VStack spacing={2} align="stretch" textAlign="start">
35+
<Heading as="h6">
36+
<Translation
37+
id={termKey + "-term"}
38+
options={{ ns: "glossary-tooltip" }}
39+
transform={components}
40+
/>
41+
</Heading>
42+
{/**
43+
* `as="span"` prevents hydration warnings for strings that contain
44+
* elements that cannot be nested inside `p` tags, like `ul` tags
45+
* (found in some Glossary definition).
46+
* TODO: Develop a better solution to handle this case.
47+
*/}
48+
<Text as="span">
49+
<Translation
50+
id={termKey + "-definition"}
51+
options={{ ns: "glossary-tooltip" }}
52+
transform={components}
53+
/>
54+
</Text>
55+
</VStack>
2856
}
2957
onBeforeOpen={() => {
3058
trackCustomEvent({

src/components/Nav/index.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,26 @@ import { EthHomeIcon } from "@/components/icons"
66
import { BaseLink } from "@/components/Link"
77
import Search from "@/components/Search"
88

9-
import { isMobile } from "@/lib/utils/isMobile"
9+
import { isDesktop } from "@/lib/utils/isDesktop"
1010

1111
import { NAV_PY } from "@/lib/constants"
1212

1313
import DesktopNavMenu from "./Desktop"
1414
import Menu from "./Menu"
1515
import { useNav } from "./useNav"
1616

17+
import { useIsClient } from "@/hooks/useIsClient"
18+
1719
const MobileNavMenu = lazy(() => import("./Mobile"))
1820

1921
// TODO display page title on mobile
2022
const Nav = () => {
2123
const { toggleColorMode, linkSections, mobileNavProps } = useNav()
2224
const { t } = useTranslation("common")
23-
const isDesktop = !isMobile()
2425
const searchModalDisclosure = useDisclosure()
2526
const navWrapperRef = useRef(null)
27+
const isClient = useIsClient()
28+
const isDesktopFlag = isDesktop()
2629

2730
return (
2831
<Box position="sticky" top={0} zIndex="sticky" width="full">
@@ -60,7 +63,12 @@ const Nav = () => {
6063
ms={{ base: 3, xl: 8 }}
6164
>
6265
{/* avoid rendering desktop Menu version on mobile */}
63-
{isDesktop && <Menu hideBelow="md" sections={linkSections} />}
66+
67+
{isClient && isDesktopFlag ? (
68+
<Menu hideBelow="md" sections={linkSections} />
69+
) : (
70+
<Box />
71+
)}
6472

6573
<Flex alignItems="center" /* justifyContent="space-between" */>
6674
{/* Desktop */}

src/intl/en/page-developers-learning-tools.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,12 @@
3030
"page-learning-tools-game-tutorials-desc": "Learn while you play. These tutorials get you through the basics using gameplay.",
3131
"page-learning-tools-meta-desc": "Web-based coding tools and interactive learning experiences to help you experiment with Ethereum development.",
3232
"page-learning-tools-meta-title": "Developer learning tools",
33+
"page-learning-tools-atlas-logo-alt": "Atlas logo",
34+
"page-learning-tools-atlas-description": "Write, test, and deploy smart contracts in minutes with the Atlas IDE.",
3335
"page-learning-tools-questbook-description": "Self paced tutorials to learn Web 3.0 by building",
3436
"page-learning-tools-questbook-logo-alt": "Questbook logo",
3537
"page-learning-tools-remix-description": "Develop, deploy and administer smart contracts for Ethereum. Follow tutorials with the LearnEth plugin.",
36-
"page-learning-tools-remix-description-2": "Remix, Replit, and ChainIDE aren't just sandboxes—developers can write, compile and deploy their smart contracts using them.",
38+
"page-learning-tools-remix-description-2": "Remix, Replit, ChainIDE, and Atlas aren't just sandboxes—developers can write, compile and deploy their smart contracts using them.",
3739
"page-learning-tools-replit-description": "A customizable development environment for Ethereum with hot reloading, error checking, and first-class testnet support.",
3840
"page-learning-tools-chainIDE-description": "Get started on your journey to Web3 by writing smart contracts for Ethereum with ChainIDE. Use the built-in templates to learn and save time.",
3941
"page-learning-tools-chainIDE-logo-alt": "ChainIDE logo",

0 commit comments

Comments
 (0)