downloads hero and linter

This commit is contained in:
Corwin Smith 2022-11-02 13:50:35 -06:00
parent 876034749f
commit 45e42fa095
12 changed files with 140 additions and 107 deletions

@ -17,12 +17,10 @@ export const Header: FC = () => {
p={4}
justifyContent='center'
alignItems='flex-start'
borderRight={{ base: 'none', sm: '2px solid #11866f'}}
borderRight={{ base: 'none', sm: '2px solid #11866f' }}
flexGrow={2}
>
<Text textStyle='header-font'>
go-ethereum
</Text>
<Text textStyle='header-font'>go-ethereum</Text>
</Stack>
<Flex>
@ -92,10 +90,7 @@ export const Header: FC = () => {
</Stack>
{/* DARK MODE SWITCH */}
<Box
p={4}
borderRight={{ base: '2px solid #11866f', md: 'none' }}
>
<Box p={4} borderRight={{ base: '2px solid #11866f', md: 'none' }}>
<MoonIcon />
</Box>

@ -1,4 +1,15 @@
import { Box, Button, Image, Link, Stack, HStack, Text } from '@chakra-ui/react';
import {
Box,
Center,
Button,
Flex,
Grid,
Image,
Link,
Stack,
HStack,
Text
} from '@chakra-ui/react';
import { FC } from 'react';
import NextLink from 'next/link';
@ -29,61 +40,92 @@ export const DownloadsHero: FC<DownloadsHero> = ({
DOWNLOAD_HEADER_BUTTONS.sourceCode.buildURL = sourceCodeURL;
return (
<Stack border='3px solid' borderColor='brand.light.primary' py={4} px={4}>
<Stack alignItems='center'>
<Image src='/images/pages/gopher-downloads-front-light.svg' alt='Gopher plugged in' />
</Stack>
<Flex border='3px solid' borderColor='brand.light.primary' py={4} px={4} flexDirection='row'>
<Flex flexDirection='column'>
<Flex mb={4} direction={{ base: 'column', md: 'row-reverse' }}>
<Flex
py={{ base: 0 }}
px={{ base: 8 }}
flex={{ base: 'none' }}
display={{ base: '', lg: 'none' }}
>
<Center>
<Image
src='/images/pages/gopher-downloads-front-light.svg'
alt='Gopher plugged in'
w={{ md: 72 }}
/>
</Center>
</Flex>
<Box mb={4}>
<Box as='h1' textStyle='h1'>
Download go-ethereum
</Box>
<Flex flexDirection={{ base: 'column' }} alignItems={{ base: 'flex-start' }}>
<Box as='h1' textStyle='h1'>
Download go-ethereum
</Box>
<Text
// TODO: move text style to theme
fontFamily='"JetBrains Mono", monospace'
lineHeight='21px'
mb={8}
>
{currentBuildName} ({currentBuildVersion})
</Text>
<Text
// TODO: move text style to theme
fontFamily='"JetBrains Mono", monospace'
lineHeight='21px'
mb={8}
>
{currentBuildName} ({currentBuildVersion})
</Text>
<Text mb={4}>
You can download the latest 64-bit stable release of Geth for our primary platforms below.
Packages for all supported platforms, as well as develop builds, can be found further down
the page. If you&apos;re looking to install Geth and/or associated tools via your favorite
package manager, please check our installation guide.
</Text>
<Text mb={4}>
You can download the latest 64-bit stable release of Geth for our primary platforms
below. Packages for all supported platforms, as well as develop builds, can be found
further down the page. If you&apos;re looking to install Geth and/or associated tools
via your favorite package manager, please check our installation guide.
</Text>
</Flex>
</Flex>
{Object.keys(DOWNLOAD_HEADER_BUTTONS).map((key: string) => {
return (
<NextLink key={key} href={DOWNLOAD_HEADER_BUTTONS[key].buildURL} passHref>
<Button as='a' variant='primary' width={{ base: '100%' }} p={8} mb={4}>
<HStack spacing={4}>
<Stack alignItems='center'>
<Image
src={DOWNLOAD_HEADER_BUTTONS[key].image}
alt={DOWNLOAD_HEADER_BUTTONS[key].imageAlt}
/>
</Stack>
<Box>
<Text textStyle='downloads-button-label'>
For {DOWNLOAD_HEADER_BUTTONS[key].name}
</Text>
<Text textStyle='downloads-button-label'>geth {currentBuildName}</Text>
</Box>
</HStack>
</Button>
</NextLink>
);
})}
<Grid templateColumns={{ base: 'repeat(1, 1fr)', md: 'repeat(2, 1fr)' }} gap={4} mb={4}>
{Object.keys(DOWNLOAD_HEADER_BUTTONS).map((key: string) => {
return (
<NextLink key={key} href={DOWNLOAD_HEADER_BUTTONS[key].buildURL} passHref>
<Button as='a' variant='primary' width={{ base: '100%' }} p={8}>
<HStack spacing={4}>
<Stack alignItems='center'>
<Image
src={DOWNLOAD_HEADER_BUTTONS[key].image}
alt={DOWNLOAD_HEADER_BUTTONS[key].imageAlt}
/>
</Stack>
<Box>
<Text textStyle='downloads-button-label'>
For {DOWNLOAD_HEADER_BUTTONS[key].name}
</Text>
<Text textStyle='downloads-button-label'>geth {currentBuildName}</Text>
</Box>
</HStack>
</Button>
</NextLink>
);
})}
</Grid>
<Box textAlign={'center'}>
<Link href={releaseNotesURL} isExternal variant='light'>
Release notes for {currentBuildName} {currentBuildVersion}
</Link>
</Box>
</Box>
</Stack>
</Flex>
<Flex
py={{ base: 0 }}
px={{ base: 8 }}
flex={{ base: 'none' }}
display={{ base: 'none', lg: 'flex' }}
>
<Center>
<Image
src='/images/pages/gopher-downloads-front-light.svg'
alt='Gopher plugged in'
w={96}
/>
</Center>
</Flex>
</Flex>
);
};

@ -19,7 +19,7 @@ export const HomeHero: FC = () => {
textStyle='h1'
mb={{ base: 2, md: 4 }}
textAlign={{ base: 'center', md: 'left' }}
fontSize={{ base: '3rem', md: '6rem'}}
fontSize={{ base: '3rem', md: '6rem' }}
lineHeight={{ md: '6rem' }}
fontWeight='500'
>

@ -2,10 +2,13 @@ import { createIcon } from '@chakra-ui/icons';
export const DiscordIcon = createIcon({
displayName: 'DiscordIcon',
viewBox:"0 0 32 24",
viewBox: '0 0 32 24',
path: (
<svg width="32" height="24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M26.9846 2.02697C26.9758 2.01 26.9612 1.99671 26.9435 1.98947C24.8961 1.05243 22.7354 0.384243 20.5157 0.00163895C20.4955 -0.00210093 20.4747 0.000597065 20.4561 0.00934923C20.4376 0.0181014 20.4223 0.0324621 20.4124 0.0503891C20.1182 0.583045 19.8511 1.13017 19.6122 1.68968C17.2194 1.32737 14.7855 1.32737 12.3927 1.68968C12.1522 1.12875 11.8808 0.581488 11.5799 0.0503891C11.5696 0.0328517 11.5542 0.0188217 11.5357 0.0101264C11.5173 0.0014311 11.4967 -0.0015265 11.4765 0.00163895C9.25655 0.38344 7.09577 1.05167 5.0486 1.98952C5.03107 1.99693 5.01629 2.00958 5.00628 2.02573C0.912331 8.12422 -0.209155 14.0728 0.341008 19.9476C0.342556 19.962 0.346991 19.976 0.354049 19.9886C0.361107 20.0013 0.370644 20.0124 0.382093 20.0213C2.76596 21.7819 5.43234 23.1259 8.26746 23.9957C8.28743 24.0017 8.30875 24.0014 8.32855 23.9949C8.34836 23.9885 8.36571 23.9761 8.37825 23.9595C8.98718 23.133 9.52673 22.2579 9.99142 21.3429C9.9978 21.3304 10.0014 21.3166 10.0021 21.3026C10.0028 21.2885 10.0005 21.2745 9.99528 21.2614C9.99011 21.2483 9.98221 21.2364 9.97212 21.2266C9.96202 21.2167 9.94994 21.2091 9.93669 21.2043C9.08586 20.8796 8.26216 20.4881 7.47331 20.0336C7.45898 20.0252 7.44695 20.0134 7.43827 19.9993C7.42959 19.9851 7.42454 19.9691 7.42356 19.9525C7.42257 19.936 7.42569 19.9194 7.43264 19.9044C7.43958 19.8893 7.45014 19.8762 7.46338 19.8661C7.6289 19.7424 7.79453 19.6138 7.95258 19.4838C7.96662 19.4723 7.98362 19.4649 8.00164 19.4624C8.01967 19.46 8.03802 19.4627 8.05462 19.4701C13.2227 21.8228 18.8178 21.8228 23.9247 19.4701C23.9414 19.4622 23.9599 19.4592 23.9782 19.4614C23.9965 19.4636 24.0138 19.4709 24.028 19.4826C24.1861 19.6125 24.3517 19.7424 24.5185 19.8661C24.5318 19.8761 24.5424 19.8891 24.5495 19.9041C24.5565 19.9191 24.5598 19.9356 24.5589 19.9522C24.5581 19.9687 24.5531 19.9848 24.5446 19.999C24.536 20.0132 24.524 20.0251 24.5098 20.0336C23.7227 20.4919 22.8983 20.8832 22.0452 21.2031C22.032 21.2081 22.0199 21.2159 22.0099 21.2259C21.9999 21.2358 21.9921 21.2478 21.987 21.261C21.9819 21.2742 21.9797 21.2884 21.9805 21.3025C21.9813 21.3166 21.985 21.3304 21.9915 21.3429C22.464 22.2528 23.0027 23.1268 23.6034 23.958C23.6156 23.9751 23.6329 23.9879 23.6528 23.9946C23.6727 24.0014 23.6942 24.0017 23.7142 23.9955C26.5544 23.1287 29.2255 21.7846 31.6123 20.0213C31.624 20.0128 31.6336 20.002 31.6407 19.9895C31.6478 19.977 31.6521 19.9632 31.6534 19.9489C32.3121 13.1569 30.5507 7.25711 26.9846 2.02697ZM10.7632 16.3704C9.20726 16.3704 7.92519 14.9461 7.92519 13.1969C7.92519 11.4477 9.18239 10.0233 10.7632 10.0233C12.3564 10.0233 13.6261 11.4601 13.6012 13.1968C13.6012 14.9461 12.344 16.3704 10.7632 16.3704ZM21.2563 16.3704C19.7004 16.3704 18.4183 14.9461 18.4183 13.1969C18.4183 11.4477 19.6755 10.0233 21.2563 10.0233C22.8496 10.0233 24.1192 11.4601 24.0943 13.1968C24.0943 14.9461 22.8496 16.3704 21.2563 16.3704Z" fill="#11866F"/>
<svg width='32' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'>
<path
d='M26.9846 2.02697C26.9758 2.01 26.9612 1.99671 26.9435 1.98947C24.8961 1.05243 22.7354 0.384243 20.5157 0.00163895C20.4955 -0.00210093 20.4747 0.000597065 20.4561 0.00934923C20.4376 0.0181014 20.4223 0.0324621 20.4124 0.0503891C20.1182 0.583045 19.8511 1.13017 19.6122 1.68968C17.2194 1.32737 14.7855 1.32737 12.3927 1.68968C12.1522 1.12875 11.8808 0.581488 11.5799 0.0503891C11.5696 0.0328517 11.5542 0.0188217 11.5357 0.0101264C11.5173 0.0014311 11.4967 -0.0015265 11.4765 0.00163895C9.25655 0.38344 7.09577 1.05167 5.0486 1.98952C5.03107 1.99693 5.01629 2.00958 5.00628 2.02573C0.912331 8.12422 -0.209155 14.0728 0.341008 19.9476C0.342556 19.962 0.346991 19.976 0.354049 19.9886C0.361107 20.0013 0.370644 20.0124 0.382093 20.0213C2.76596 21.7819 5.43234 23.1259 8.26746 23.9957C8.28743 24.0017 8.30875 24.0014 8.32855 23.9949C8.34836 23.9885 8.36571 23.9761 8.37825 23.9595C8.98718 23.133 9.52673 22.2579 9.99142 21.3429C9.9978 21.3304 10.0014 21.3166 10.0021 21.3026C10.0028 21.2885 10.0005 21.2745 9.99528 21.2614C9.99011 21.2483 9.98221 21.2364 9.97212 21.2266C9.96202 21.2167 9.94994 21.2091 9.93669 21.2043C9.08586 20.8796 8.26216 20.4881 7.47331 20.0336C7.45898 20.0252 7.44695 20.0134 7.43827 19.9993C7.42959 19.9851 7.42454 19.9691 7.42356 19.9525C7.42257 19.936 7.42569 19.9194 7.43264 19.9044C7.43958 19.8893 7.45014 19.8762 7.46338 19.8661C7.6289 19.7424 7.79453 19.6138 7.95258 19.4838C7.96662 19.4723 7.98362 19.4649 8.00164 19.4624C8.01967 19.46 8.03802 19.4627 8.05462 19.4701C13.2227 21.8228 18.8178 21.8228 23.9247 19.4701C23.9414 19.4622 23.9599 19.4592 23.9782 19.4614C23.9965 19.4636 24.0138 19.4709 24.028 19.4826C24.1861 19.6125 24.3517 19.7424 24.5185 19.8661C24.5318 19.8761 24.5424 19.8891 24.5495 19.9041C24.5565 19.9191 24.5598 19.9356 24.5589 19.9522C24.5581 19.9687 24.5531 19.9848 24.5446 19.999C24.536 20.0132 24.524 20.0251 24.5098 20.0336C23.7227 20.4919 22.8983 20.8832 22.0452 21.2031C22.032 21.2081 22.0199 21.2159 22.0099 21.2259C21.9999 21.2358 21.9921 21.2478 21.987 21.261C21.9819 21.2742 21.9797 21.2884 21.9805 21.3025C21.9813 21.3166 21.985 21.3304 21.9915 21.3429C22.464 22.2528 23.0027 23.1268 23.6034 23.958C23.6156 23.9751 23.6329 23.9879 23.6528 23.9946C23.6727 24.0014 23.6942 24.0017 23.7142 23.9955C26.5544 23.1287 29.2255 21.7846 31.6123 20.0213C31.624 20.0128 31.6336 20.002 31.6407 19.9895C31.6478 19.977 31.6521 19.9632 31.6534 19.9489C32.3121 13.1569 30.5507 7.25711 26.9846 2.02697ZM10.7632 16.3704C9.20726 16.3704 7.92519 14.9461 7.92519 13.1969C7.92519 11.4477 9.18239 10.0233 10.7632 10.0233C12.3564 10.0233 13.6261 11.4601 13.6012 13.1968C13.6012 14.9461 12.344 16.3704 10.7632 16.3704ZM21.2563 16.3704C19.7004 16.3704 18.4183 14.9461 18.4183 13.1969C18.4183 11.4477 19.6755 10.0233 21.2563 10.0233C22.8496 10.0233 24.1192 11.4601 24.0943 13.1968C24.0943 14.9461 22.8496 16.3704 21.2563 16.3704Z'
fill='#11866F'
/>
</svg>
)
});
});

@ -2,10 +2,13 @@ import { createIcon } from '@chakra-ui/icons';
export const GitHubIcon = createIcon({
displayName: 'GitHubIcon',
viewBox:"0 0 26 24",
viewBox: '0 0 26 24',
path: (
<svg width="26" height="24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.82878 19.3248C8.82878 19.424 8.71193 19.5034 8.56459 19.5034C8.39693 19.5183 8.28007 19.4389 8.28007 19.3248C8.28007 19.2255 8.39693 19.1461 8.54427 19.1461C8.69669 19.1312 8.82878 19.2106 8.82878 19.3248ZM7.2487 19.1014C7.21314 19.2007 7.31475 19.3148 7.46717 19.3446C7.59927 19.3942 7.75169 19.3446 7.78217 19.2454C7.81265 19.1461 7.71612 19.032 7.5637 18.9873C7.43161 18.9526 7.28427 19.0022 7.2487 19.1014ZM9.49435 19.0171C9.34701 19.0518 9.2454 19.1461 9.26064 19.2603C9.27588 19.3595 9.40798 19.424 9.5604 19.3893C9.70774 19.3545 9.80935 19.2603 9.79411 19.161C9.77886 19.0667 9.64169 19.0022 9.49435 19.0171ZM12.8374 0C5.79056 0 0.399994 5.22573 0.399994 12.109C0.399994 17.6126 3.94628 22.3222 9.01169 23.9798C9.66201 24.0939 9.89064 23.7019 9.89064 23.3793C9.89064 23.0716 9.8754 21.3744 9.8754 20.3322C9.8754 20.3322 6.31895 21.0766 5.57209 18.8533C5.57209 18.8533 4.9929 17.4092 4.15967 17.037C4.15967 17.037 2.9962 16.2578 4.24096 16.2727C4.24096 16.2727 5.50604 16.372 6.20209 17.5531C7.31475 19.4687 9.17935 18.9178 9.90588 18.5903C10.0227 17.7963 10.353 17.2454 10.7188 16.9179C7.8787 16.6102 5.01322 16.2082 5.01322 11.4341C5.01322 10.0693 5.39935 9.38447 6.21225 8.51103C6.08015 8.18846 5.6483 6.85846 6.34435 5.14136C7.4062 4.81878 9.84999 6.48129 9.84999 6.48129C10.8661 6.20338 11.9585 6.05946 13.0406 6.05946C14.1228 6.05946 15.2152 6.20338 16.2313 6.48129C16.2313 6.48129 18.6751 4.81382 19.7369 5.14136C20.433 6.86342 20.0011 8.18846 19.869 8.51103C20.6819 9.38943 21.1798 10.0743 21.1798 11.4341C21.1798 16.2231 18.1873 16.6052 15.3473 16.9179C15.8147 17.3099 16.211 18.0543 16.211 19.2205C16.211 20.893 16.1957 22.9624 16.1957 23.3694C16.1957 23.6919 16.4294 24.084 17.0747 23.9699C22.1553 22.3222 25.6 17.6126 25.6 12.109C25.6 5.22573 19.8843 0 12.8374 0ZM5.33838 17.1164C5.27233 17.166 5.28757 17.2801 5.37395 17.3744C5.45524 17.4538 5.57209 17.4886 5.63814 17.424C5.70419 17.3744 5.68895 17.2603 5.60257 17.166C5.52128 17.0866 5.40443 17.0518 5.33838 17.1164ZM4.78967 16.7144C4.75411 16.7789 4.80491 16.8583 4.90653 16.9079C4.98782 16.9576 5.08943 16.9427 5.12499 16.8732C5.16056 16.8087 5.10975 16.7293 5.00814 16.6796C4.90653 16.6499 4.82524 16.6648 4.78967 16.7144ZM6.4358 18.4811C6.35451 18.5456 6.38499 18.6945 6.50185 18.7888C6.6187 18.9029 6.76604 18.9178 6.83209 18.8384C6.89814 18.7739 6.86765 18.625 6.76604 18.5307C6.65427 18.4166 6.50185 18.4017 6.4358 18.4811ZM5.85661 17.7516C5.77532 17.8012 5.77532 17.9302 5.85661 18.0444C5.9379 18.1585 6.07507 18.2082 6.14112 18.1585C6.22241 18.094 6.22241 17.965 6.14112 17.8508C6.06999 17.7367 5.9379 17.6871 5.85661 17.7516Z" fill="#11866F"/>
<svg width='26' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'>
<path
d='M8.82878 19.3248C8.82878 19.424 8.71193 19.5034 8.56459 19.5034C8.39693 19.5183 8.28007 19.4389 8.28007 19.3248C8.28007 19.2255 8.39693 19.1461 8.54427 19.1461C8.69669 19.1312 8.82878 19.2106 8.82878 19.3248ZM7.2487 19.1014C7.21314 19.2007 7.31475 19.3148 7.46717 19.3446C7.59927 19.3942 7.75169 19.3446 7.78217 19.2454C7.81265 19.1461 7.71612 19.032 7.5637 18.9873C7.43161 18.9526 7.28427 19.0022 7.2487 19.1014ZM9.49435 19.0171C9.34701 19.0518 9.2454 19.1461 9.26064 19.2603C9.27588 19.3595 9.40798 19.424 9.5604 19.3893C9.70774 19.3545 9.80935 19.2603 9.79411 19.161C9.77886 19.0667 9.64169 19.0022 9.49435 19.0171ZM12.8374 0C5.79056 0 0.399994 5.22573 0.399994 12.109C0.399994 17.6126 3.94628 22.3222 9.01169 23.9798C9.66201 24.0939 9.89064 23.7019 9.89064 23.3793C9.89064 23.0716 9.8754 21.3744 9.8754 20.3322C9.8754 20.3322 6.31895 21.0766 5.57209 18.8533C5.57209 18.8533 4.9929 17.4092 4.15967 17.037C4.15967 17.037 2.9962 16.2578 4.24096 16.2727C4.24096 16.2727 5.50604 16.372 6.20209 17.5531C7.31475 19.4687 9.17935 18.9178 9.90588 18.5903C10.0227 17.7963 10.353 17.2454 10.7188 16.9179C7.8787 16.6102 5.01322 16.2082 5.01322 11.4341C5.01322 10.0693 5.39935 9.38447 6.21225 8.51103C6.08015 8.18846 5.6483 6.85846 6.34435 5.14136C7.4062 4.81878 9.84999 6.48129 9.84999 6.48129C10.8661 6.20338 11.9585 6.05946 13.0406 6.05946C14.1228 6.05946 15.2152 6.20338 16.2313 6.48129C16.2313 6.48129 18.6751 4.81382 19.7369 5.14136C20.433 6.86342 20.0011 8.18846 19.869 8.51103C20.6819 9.38943 21.1798 10.0743 21.1798 11.4341C21.1798 16.2231 18.1873 16.6052 15.3473 16.9179C15.8147 17.3099 16.211 18.0543 16.211 19.2205C16.211 20.893 16.1957 22.9624 16.1957 23.3694C16.1957 23.6919 16.4294 24.084 17.0747 23.9699C22.1553 22.3222 25.6 17.6126 25.6 12.109C25.6 5.22573 19.8843 0 12.8374 0ZM5.33838 17.1164C5.27233 17.166 5.28757 17.2801 5.37395 17.3744C5.45524 17.4538 5.57209 17.4886 5.63814 17.424C5.70419 17.3744 5.68895 17.2603 5.60257 17.166C5.52128 17.0866 5.40443 17.0518 5.33838 17.1164ZM4.78967 16.7144C4.75411 16.7789 4.80491 16.8583 4.90653 16.9079C4.98782 16.9576 5.08943 16.9427 5.12499 16.8732C5.16056 16.8087 5.10975 16.7293 5.00814 16.6796C4.90653 16.6499 4.82524 16.6648 4.78967 16.7144ZM6.4358 18.4811C6.35451 18.5456 6.38499 18.6945 6.50185 18.7888C6.6187 18.9029 6.76604 18.9178 6.83209 18.8384C6.89814 18.7739 6.86765 18.625 6.76604 18.5307C6.65427 18.4166 6.50185 18.4017 6.4358 18.4811ZM5.85661 17.7516C5.77532 17.8012 5.77532 17.9302 5.85661 18.0444C5.9379 18.1585 6.07507 18.2082 6.14112 18.1585C6.22241 18.094 6.22241 17.965 6.14112 17.8508C6.06999 17.7367 5.9379 17.6871 5.85661 17.7516Z'
fill='#11866F'
/>
</svg>
)
});
});

@ -2,10 +2,13 @@ import { createIcon } from '@chakra-ui/icons';
export const TwitterIcon = createIcon({
displayName: 'TwitterIcon',
viewBox:"0 0 28 22",
viewBox: '0 0 28 22',
path: (
<svg width="28" height="22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24.7247 5.48279C24.7418 5.72341 24.7418 5.96407 24.7418 6.20469C24.7418 13.5437 19.1739 22 8.99749 22C5.86232 22 2.94989 21.089 0.5 19.5078C0.945449 19.5594 1.37371 19.5766 1.83629 19.5766C4.42319 19.5766 6.80458 18.7 8.70624 17.2047C6.27349 17.1531 4.23477 15.5547 3.53234 13.3547C3.87501 13.4062 4.21763 13.4406 4.57744 13.4406C5.07425 13.4406 5.57112 13.3718 6.03365 13.2516C3.49812 12.7359 1.5964 10.5016 1.5964 7.80312V7.73439C2.33305 8.14689 3.18973 8.4047 4.09766 8.43904C2.60717 7.44214 1.63068 5.7406 1.63068 3.81559C1.63068 2.78436 1.90474 1.83904 2.38447 1.01404C5.10848 4.38278 9.20305 6.58275 13.7944 6.82341C13.7087 6.41091 13.6573 5.98127 13.6573 5.55157C13.6573 2.49216 16.1244 0 19.191 0C20.7843 0 22.2233 0.670311 23.2341 1.75312C24.4847 1.51251 25.684 1.04843 26.7462 0.412503C26.335 1.70159 25.4613 2.78441 24.3135 3.47186C25.4271 3.35161 26.5064 3.04216 27.5 2.61252C26.7463 3.71247 25.804 4.69212 24.7247 5.48279Z" fill="#11866F"/>
<svg width='28' height='22' fill='none' xmlns='http://www.w3.org/2000/svg'>
<path
d='M24.7247 5.48279C24.7418 5.72341 24.7418 5.96407 24.7418 6.20469C24.7418 13.5437 19.1739 22 8.99749 22C5.86232 22 2.94989 21.089 0.5 19.5078C0.945449 19.5594 1.37371 19.5766 1.83629 19.5766C4.42319 19.5766 6.80458 18.7 8.70624 17.2047C6.27349 17.1531 4.23477 15.5547 3.53234 13.3547C3.87501 13.4062 4.21763 13.4406 4.57744 13.4406C5.07425 13.4406 5.57112 13.3718 6.03365 13.2516C3.49812 12.7359 1.5964 10.5016 1.5964 7.80312V7.73439C2.33305 8.14689 3.18973 8.4047 4.09766 8.43904C2.60717 7.44214 1.63068 5.7406 1.63068 3.81559C1.63068 2.78436 1.90474 1.83904 2.38447 1.01404C5.10848 4.38278 9.20305 6.58275 13.7944 6.82341C13.7087 6.41091 13.6573 5.98127 13.6573 5.55157C13.6573 2.49216 16.1244 0 19.191 0C20.7843 0 22.2233 0.670311 23.2341 1.75312C24.4847 1.51251 25.684 1.04843 26.7462 0.412503C26.335 1.70159 25.4613 2.78441 24.3135 3.47186C25.4271 3.35161 26.5064 3.04216 27.5 2.61252C26.7463 3.71247 25.804 4.69212 24.7247 5.48279Z'
fill='#11866F'
/>
</svg>
)
});
});

@ -1,6 +1,6 @@
export * from './DiscordIcon'
export * from './GitHubIcon'
export * from './DiscordIcon';
export * from './GitHubIcon';
export * from './HamburguerIcon';
export * from './LensIcon';
export * from './MoonIcon';
export * from './TwitterIcon'
export * from './TwitterIcon';

@ -8,23 +8,16 @@ import {
GETH_DISCORD_URL,
GETH_REPO_URL,
GETH_TWITTER_URL
} from '../../constants'
} from '../../constants';
import {
DiscordIcon,
GitHubIcon,
TwitterIcon
} from '../UI/icons';
import { DiscordIcon, GitHubIcon, TwitterIcon } from '../UI/icons';
export const Footer: FC = () => {
return (
<Flex
mt={4}
direction={{ base: 'column', lg: 'row'}}
>
<Flex mt={4} direction={{ base: 'column', lg: 'row' }}>
<Flex
direction={{ base: 'column', md: 'row'}}
justifyContent={{md: 'space-between'}}
direction={{ base: 'column', md: 'row' }}
justifyContent={{ md: 'space-between' }}
border='2px solid'
borderColor='brand.light.primary'
>
@ -52,7 +45,6 @@ export const Footer: FC = () => {
</Link>
</NextLink>
<NextLink href={DOCS_PAGE} passHref>
<Link
flex={1}
@ -88,9 +80,8 @@ export const Footer: FC = () => {
lg: 'none'
}}
borderColor='brand.light.primary !important'
_hover={{
bg: 'brand.light.primary',
bg: 'brand.light.primary'
}}
justifyContent='center'
>
@ -100,7 +91,7 @@ export const Footer: FC = () => {
margin='auto'
_groupHover={{
svg: {
path:{fill: 'yellow.50 !important'}
path: { fill: 'yellow.50 !important' }
}
}}
/>
@ -110,12 +101,12 @@ export const Footer: FC = () => {
<NextLink href={GETH_DISCORD_URL} passHref>
<Link
isExternal
p={4}
data-group
p={4}
data-group
display='flex'
flex={1}
_hover={{
bg: 'brand.light.primary',
bg: 'brand.light.primary'
}}
justifyContent='center'
borderWidth='2px'
@ -124,10 +115,10 @@ export const Footer: FC = () => {
>
<DiscordIcon
w={6}
height={6}
height={6}
_groupHover={{
svg: {
path:{fill: 'yellow.50 !important'}
path: { fill: 'yellow.50 !important' }
}
}}
/>
@ -142,16 +133,16 @@ export const Footer: FC = () => {
flex={1}
display='flex'
_hover={{
bg: 'brand.light.primary',
bg: 'brand.light.primary'
}}
justifyContent='center'
>
<GitHubIcon
w={6}
height={6}
height={6}
_groupHover={{
svg: {
path:{fill: 'yellow.50 !important'}
path: { fill: 'yellow.50 !important' }
}
}}
/>
@ -175,5 +166,5 @@ export const Footer: FC = () => {
<Text textStyle='footer-text'>© 20132022. The go-ethereum Authors.</Text>
</Stack>
</Flex>
)
}
);
};

@ -4,7 +4,7 @@ import { FC } from 'react';
// Components
import { Header } from '../UI';
import { Footer } from './Footer'
import { Footer } from './Footer';
interface Props {
children?: React.ReactNode;

@ -159,7 +159,6 @@ The sync can be confirmed using [`eth.syncing`](https://ethereum.org/en/develope
}
```
There are other log messages that are commonly seen during syncing. For example:
```sh
@ -207,10 +206,10 @@ WARN [10-03 |13:10:26.499] Beacon client online, but never received consensus up
The message above indicates that a consensus client is present but not working correctly. The most likely reason for this is that the client is not yet in sync. Waiting for the consensus client to sync should solve the issue.
```sh
WARN [10-03 | 13:15:56.543] Dropping unsynced node during sync id = e2fdc0d92d70953 conn = ...
```
This message indicates that a peer is being dropped because it is not fully synced. This is normal - the necessary data will be requested from an alternative peer instead.
## Summary

@ -3,7 +3,7 @@ title: Sync modes
description: Introduction to Geth's sync modes
---
Syncing is the process by which Geth catches up to the latest Ethereum block and current global state. There are several ways to sync a Geth node that differ in their speed, storage requirements and trust assumptions. Now that Ethereum uses proof-of-stake based consensus, a consensus client is required for Geth to sync.
Syncing is the process by which Geth catches up to the latest Ethereum block and current global state. There are several ways to sync a Geth node that differ in their speed, storage requirements and trust assumptions. Now that Ethereum uses proof-of-stake based consensus, a consensus client is required for Geth to sync.
## Full nodes
@ -13,7 +13,7 @@ There are two types of full node that use different mechanisms to sync up to the
A snap sync'd node holds the most recent 128 block states in memory, so transactions in that range are always quickly accessible. However, snap-sync only starts processing from a relatively recent block (as opposed to genesis for a full node). Between the initial sync block and the 128 most recent blocks, the node stores occasional checkpoints that can be used to rebuild the state on-the-fly. This means transactions can be traced back as far as the block that was used for the initial sync. Tracing a single transaction requires reexecuting all preceding transactions in the same block **and** all preceding blocks until the previous stored snapshot. Snap-sync'd nodes are therefore full nodes, with the only difference being the initial synchronization required a checkpoint block to sync from instead of independently verifying the chain all the way from genesis. Snap sync then only verifies the proof-of-work and ancestor-child block progression and assumes that the state transitions are correct rather than re-executing the transactions in each block to verify the state changes. Snap sync is much faster than block-by-block sync. To start a node with snap sync pass `--syncmode snap` at startup.
Snap sync starts by downloading the headers for a chunk of blocks. Once the headers have been verified, the block bodies and receipts for those blocks are downloaded. In parallel, Geth also sync begins state-sync. In state-sync, Geth first downloads the leaves of the state trie for each block without the intermediate nodes along with a range proof. The state trie is then regenerated locally. The state download is the part of the snap-sync that takes the most time to complete and the progress can be monitored using the ETA values in the log messages. However, the blockchain is also progressing at the same time and invalidating some of the regenerated state data. This means it is also necessary to have a 'healing' phase where errors in the state are fixed. It is not possible to monitor the progress of the state heal because the extent of the errors cannot be known until the current state has already been regenerated. Geth regularly reports `Syncing, state heal in progress` regularly during state heal - this informs the user that state heal has not finished. It is also possible to confirm this using `eth.syncing` - if this command returns `false` then the node is in sync. If it returns anything other than `false` then syncing is still in progress.
Snap sync starts by downloading the headers for a chunk of blocks. Once the headers have been verified, the block bodies and receipts for those blocks are downloaded. In parallel, Geth also sync begins state-sync. In state-sync, Geth first downloads the leaves of the state trie for each block without the intermediate nodes along with a range proof. The state trie is then regenerated locally. The state download is the part of the snap-sync that takes the most time to complete and the progress can be monitored using the ETA values in the log messages. However, the blockchain is also progressing at the same time and invalidating some of the regenerated state data. This means it is also necessary to have a 'healing' phase where errors in the state are fixed. It is not possible to monitor the progress of the state heal because the extent of the errors cannot be known until the current state has already been regenerated. Geth regularly reports `Syncing, state heal in progress` regularly during state heal - this informs the user that state heal has not finished. It is also possible to confirm this using `eth.syncing` - if this command returns `false` then the node is in sync. If it returns anything other than `false` then syncing is still in progress.
The healing has to outpace the growth of the blockchain, otherwise the node will never catch up to the current state. There are some hardware factors that determine the speed of the state healing (speed of disk read/write and internet connection) and also the total gas used in each block (more gas means more changes to the state that have to be handled).
@ -23,10 +23,8 @@ To summarize, snap sync progresses in the following sequence:
- download block bodies and receipts. In parallel, download raw state data and build state trie
- heal state trie to account for newly arriving data
**Note** Snap sync is the default behaviour, so if the `--syncmode` value is not passed to Geth at startup, Geth will use snap sync. A node that is started using `snap` will switch to block-by-block sync once it has caught up to the head of the chain.
### Full
A full sync generates the current state by executing every block starting from the genesis block. A full sync indendently verifies proof-of-work and block provenance as well as all state transitions by re-executing the transactions in the entire historical sequence of blocks. Only the most recent 128 block states are stored in a full node - older block states are pruned periodically and represented as a series of checkpoints from which any previous state can be regenerated on request. 128 blocks is about 25.6 minutes of history with a block time of 12 seconds.
@ -65,7 +63,6 @@ Alternatively, the consensus client can grab a checkpoint from a trusted source
Please see the pages on [syncing](/docs/interface/sync-modes.md) for more detail. For troubleshooting, please see the `Syncing` section on the [console log messages](/docs/interface/logs.md) page.
## Summary
There are several ways to sync a Geth node. The default is to use snap sync to create a full node. This verifies all blocks using some recent block that is old enough to be safe from re-orgs as a sync target. A trust-minimized alternative is full-sync, which verifies every block since genesis. These modes drop state data older than 128 blocks, keeping only checkpoints that enable on-request regeneration of historical states. For rapid queries of historical data an archive node is required. Archive nodes keep local copies of all historical data right back to genesis - currently about 12 TB and growing. The opposite extreme is a light node that doesn't store any blockchain data - it requests everything from full nodes. These configurations are controlled by passing `full`, `snap` or `light` to `--syncmode` at startup. For an archive node, `--syncmode` should be `full` and `--gcmode` should be set to `archive`. Currently, due to the transition to proof-of-stake, light-sync does not work (new light client protocols are being developed).

@ -3,8 +3,7 @@ title: eth Namespace
description: Documentation for the JSON-RPC API "eth" namespace
---
Documentation for the API methods in the `eth` namespace can be found on [ethereum.org](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_protocolversion). Geth provides several extensions to the standard "eth" JSON-RPC namespace that are defined below.
Documentation for the API methods in the `eth` namespace can be found on [ethereum.org](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_protocolversion). Geth provides several extensions to the standard "eth" JSON-RPC namespace that are defined below.
### eth_subscribe, eth_unsubscribe
@ -65,6 +64,7 @@ Example:
The method returns a single `Binary` consisting the return value of the executed contract call.
#### Simple example
**note that this example uses the Rinkeby network, which is now deprecated**
With a synced Rinkeby node with RPC exposed on localhost (`geth --rinkeby --http`) we can make a call against the [CheckpointOracle](https://rinkeby.etherscan.io/address/0xebe8efa441b9302a0d7eaecc277c09d20d684540) to retrieve the list of administrators: