├── src ├── katex.d.ts ├── components │ ├── layout │ │ ├── index.ts │ │ └── Layout.tsx │ ├── styles │ │ ├── index.ts │ │ └── PostTheme.tsx │ ├── UI │ │ ├── icons │ │ │ ├── index.ts │ │ │ ├── HamburguerIcon.tsx │ │ │ └── CloseIcon.tsx │ │ ├── index.ts │ │ ├── ResearchArea.tsx │ │ ├── Footer.tsx │ │ ├── Abstract.tsx │ │ ├── Event.tsx │ │ ├── Header.tsx │ │ ├── ExternalPost.tsx │ │ ├── InternalPost.tsx │ │ ├── Publication.tsx │ │ ├── BountyCard.tsx │ │ ├── Bounty.tsx │ │ └── PageMetadata.tsx │ └── Nav.tsx ├── styles │ └── globals.css ├── utils │ ├── isLastItem.ts │ ├── index.ts │ ├── getParsedDate.ts │ └── sortByDate.ts ├── theme │ ├── foundations │ │ ├── index.ts │ │ ├── colors.ts │ │ ├── breakpoints.ts │ │ └── fonts.ts │ └── index.ts ├── types.ts ├── pages │ ├── bounties │ │ ├── zk-hash.tsx │ │ ├── mimc-hash-challenge.tsx │ │ └── index.tsx │ ├── _app.tsx │ ├── index.tsx │ ├── blog │ │ ├── [slug].tsx │ │ └── index.tsx │ ├── events.tsx │ └── team.tsx ├── constants.ts ├── bounties-data-source │ ├── mimc-hash-challenge.md │ └── zk-hash.md └── posts │ ├── algorand-hash-analysis.md │ ├── zkalc.md │ ├── pq-ssle.md │ ├── nist-pqc-standard.md │ └── schnorr-threshold-blogpost.md ├── .eslintignore ├── .prettierignore ├── public ├── instances │ ├── 0.bin │ ├── 1.bin │ ├── 2.bin │ ├── 3.bin │ ├── 4.bin │ └── test.bin ├── images │ ├── favicon.png │ ├── ef-logo-bg-white.png │ ├── posts │ │ ├── algorand-hash │ │ │ └── gb-small.jpg │ │ ├── zkalc │ │ │ ├── zkalc_psychedelic.png │ │ │ ├── extrapolation.svg │ │ │ ├── points.svg │ │ │ └── interpolation.svg │ │ ├── groth-sahai-explainer │ │ │ ├── figure-1.png │ │ │ ├── figure-2.png │ │ │ ├── figure-3.png │ │ │ ├── figure-4.png │ │ │ ├── figure-5.png │ │ │ ├── armchairs.png │ │ │ ├── illustrations.xopp │ │ │ └── code-completeness.png │ │ └── schnorr-threshold │ │ │ └── schnorr-assumptions.png │ └── ef-logo.svg ├── events │ └── minrootanalysis2023.pdf ├── robots.txt ├── sitemap.xml └── sitemap-0.xml ├── next-sitemap.js ├── netlify.toml ├── .eslintrc.json ├── next.config.js ├── next-env.d.ts ├── .prettierrc ├── .gitignore ├── .github └── CODEOWNERS ├── tsconfig.json ├── package.json └── README.md /src/katex.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'react-katex'; 2 | -------------------------------------------------------------------------------- /src/components/layout/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Layout'; 2 | -------------------------------------------------------------------------------- /src/components/styles/index.ts: -------------------------------------------------------------------------------- 1 | export * from './PostTheme'; 2 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | .next 2 | dist 3 | node_modules/ 4 | src/posts 5 | -------------------------------------------------------------------------------- /src/styles/globals.css: -------------------------------------------------------------------------------- 1 | html { 2 | scroll-behavior: smooth; 3 | } 4 | -------------------------------------------------------------------------------- /src/components/UI/icons/index.ts: -------------------------------------------------------------------------------- 1 | export * from './CloseIcon'; 2 | export * from './HamburguerIcon'; 3 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .next 2 | node_modules 3 | yarn.lock 4 | package-lock.json 5 | public 6 | build 7 | src/posts 8 | -------------------------------------------------------------------------------- /public/instances/0.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/instances/0.bin -------------------------------------------------------------------------------- /public/instances/1.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/instances/1.bin -------------------------------------------------------------------------------- /public/instances/2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/instances/2.bin -------------------------------------------------------------------------------- /public/instances/3.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/instances/3.bin -------------------------------------------------------------------------------- /public/instances/4.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/instances/4.bin -------------------------------------------------------------------------------- /src/utils/isLastItem.ts: -------------------------------------------------------------------------------- 1 | export const isLastItem = (idx: number, listLength: number) => idx === listLength - 1; 2 | -------------------------------------------------------------------------------- /next-sitemap.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | siteUrl: 'https://crypto.ethereum.org', 3 | generateRobotsTxt: true 4 | }; 5 | -------------------------------------------------------------------------------- /public/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/images/favicon.png -------------------------------------------------------------------------------- /public/instances/test.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/instances/test.bin -------------------------------------------------------------------------------- /src/theme/foundations/index.ts: -------------------------------------------------------------------------------- 1 | export * from './breakpoints'; 2 | export * from './colors'; 3 | export * from './fonts'; 4 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | command = "yarn build" 3 | publish = ".next" 4 | 5 | [build.environment] 6 | NODE_VERSION = "16.14.0" 7 | 8 | -------------------------------------------------------------------------------- /public/images/ef-logo-bg-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/images/ef-logo-bg-white.png -------------------------------------------------------------------------------- /public/events/minrootanalysis2023.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/events/minrootanalysis2023.pdf -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "prettier"], 3 | "rules": { 4 | "react/no-unescaped-entities": "off" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | reactStrictMode: true, 4 | } 5 | 6 | module.exports = nextConfig 7 | -------------------------------------------------------------------------------- /public/images/posts/algorand-hash/gb-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/images/posts/algorand-hash/gb-small.jpg -------------------------------------------------------------------------------- /public/images/posts/zkalc/zkalc_psychedelic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/images/posts/zkalc/zkalc_psychedelic.png -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export { isLastItem } from './isLastItem'; 2 | export { sortByDate } from './sortByDate'; 3 | export { getParsedDate } from './getParsedDate'; 4 | -------------------------------------------------------------------------------- /src/theme/foundations/colors.ts: -------------------------------------------------------------------------------- 1 | export const colors = { 2 | brand: { 3 | blue: '#667bbe', 4 | lightblue: '#14add2', 5 | orange: '#f38b75' 6 | } 7 | }; 8 | -------------------------------------------------------------------------------- /public/images/posts/groth-sahai-explainer/figure-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/images/posts/groth-sahai-explainer/figure-1.png -------------------------------------------------------------------------------- /public/images/posts/groth-sahai-explainer/figure-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/images/posts/groth-sahai-explainer/figure-2.png -------------------------------------------------------------------------------- /public/images/posts/groth-sahai-explainer/figure-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/images/posts/groth-sahai-explainer/figure-3.png -------------------------------------------------------------------------------- /public/images/posts/groth-sahai-explainer/figure-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/images/posts/groth-sahai-explainer/figure-4.png -------------------------------------------------------------------------------- /public/images/posts/groth-sahai-explainer/figure-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/images/posts/groth-sahai-explainer/figure-5.png -------------------------------------------------------------------------------- /public/images/posts/groth-sahai-explainer/armchairs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/images/posts/groth-sahai-explainer/armchairs.png -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # * 2 | User-agent: * 3 | Allow: / 4 | 5 | # Host 6 | Host: https://crypto.ethereum.org 7 | 8 | # Sitemaps 9 | Sitemap: https://crypto.ethereum.org/sitemap.xml 10 | -------------------------------------------------------------------------------- /public/images/posts/groth-sahai-explainer/illustrations.xopp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/images/posts/groth-sahai-explainer/illustrations.xopp -------------------------------------------------------------------------------- /public/images/posts/schnorr-threshold/schnorr-assumptions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/images/posts/schnorr-threshold/schnorr-assumptions.png -------------------------------------------------------------------------------- /public/images/posts/groth-sahai-explainer/code-completeness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ethereum/cryptography-research-website/HEAD/public/images/posts/groth-sahai-explainer/code-completeness.png -------------------------------------------------------------------------------- /public/sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | https://crypto.ethereum.org/sitemap-0.xml 4 | -------------------------------------------------------------------------------- /src/theme/foundations/breakpoints.ts: -------------------------------------------------------------------------------- 1 | export const breakpoints = { 2 | xs: '320px', 3 | sm: '360px', 4 | md: '768px', 5 | lg: '1024px', 6 | xl: '1440px', 7 | xl2: '1600px', 8 | xl3: '2000px' 9 | }; 10 | -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 100, 3 | "trailingComma": "none", 4 | "semi": true, 5 | "arrowParens": "avoid", 6 | "singleQuote": true, 7 | "jsxSingleQuote": true, 8 | "tabWidth": 2, 9 | "useTabs": false 10 | } 11 | -------------------------------------------------------------------------------- /src/theme/foundations/fonts.ts: -------------------------------------------------------------------------------- 1 | import { theme as base } from '@chakra-ui/react'; 2 | 3 | export const fonts = { 4 | // set base fonts as fallback 5 | heading: `Libre Franklin, ${base.fonts?.heading}`, 6 | body: `Libre Franklin, ${base.fonts?.body}` 7 | }; 8 | -------------------------------------------------------------------------------- /src/utils/getParsedDate.ts: -------------------------------------------------------------------------------- 1 | export const getParsedDate = (date: string) => { 2 | const dateOptions = { year: 'numeric', month: 'long', day: 'numeric', timeZone: 'UTC' } as const; 3 | 4 | return new Date(date).toLocaleDateString('en-US', dateOptions); 5 | }; 6 | -------------------------------------------------------------------------------- /src/utils/sortByDate.ts: -------------------------------------------------------------------------------- 1 | export const sortByDate = (a: JSX.Element, b: JSX.Element) => { 2 | if (a.props.date < b.props.date) { 3 | return 1; 4 | } 5 | if (a.props.date > b.props.date) { 6 | return -1; 7 | } 8 | 9 | return 0; 10 | }; 11 | -------------------------------------------------------------------------------- /src/theme/index.ts: -------------------------------------------------------------------------------- 1 | import { extendTheme } from '@chakra-ui/react'; 2 | 3 | import { breakpoints, colors, fonts } from './foundations'; 4 | 5 | const overrides = { 6 | breakpoints, 7 | colors, 8 | fonts 9 | }; 10 | 11 | export default extendTheme(overrides); 12 | -------------------------------------------------------------------------------- /src/components/UI/icons/HamburguerIcon.tsx: -------------------------------------------------------------------------------- 1 | import { createIcon } from '@chakra-ui/icons'; 2 | 3 | export const HamburgerIcon = createIcon({ 4 | displayName: 'HamburgerIcon', 5 | viewBox: '0 0 32 25', 6 | path: 7 | }); 8 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | export type MarkdownPost = { 2 | slug: string; 3 | frontmatter: { 4 | [key: string]: any; 5 | }; 6 | }; 7 | 8 | export type ExternalPost = { 9 | title: string; 10 | date: string; 11 | link: string; 12 | }; 13 | 14 | export interface MarkdownBounty { 15 | frontmatter: { 16 | [key: string]: any; 17 | }; 18 | content: string; 19 | } 20 | -------------------------------------------------------------------------------- /src/components/UI/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Abstract'; 2 | export * from './Bounty'; 3 | export * from './BountyCard'; 4 | export * from './Event'; 5 | export * from './ExternalPost'; 6 | export * from './Footer'; 7 | export * from './Header'; 8 | export * from './InternalPost'; 9 | export * from './PageMetadata'; 10 | export * from './Publication'; 11 | export * from './ResearchArea'; 12 | -------------------------------------------------------------------------------- /src/components/UI/ResearchArea.tsx: -------------------------------------------------------------------------------- 1 | import { Heading, Stack, StackProps } from '@chakra-ui/react'; 2 | import { FC } from 'react'; 3 | 4 | interface Props { 5 | subtitle: string; 6 | } 7 | 8 | export const ResearchArea: FC = ({ subtitle, children, ...props }) => { 9 | return ( 10 | 11 | 12 | {subtitle} 13 | 14 | 15 | {children} 16 | 17 | ); 18 | }; 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env.local 29 | .env.development.local 30 | .env.test.local 31 | .env.production.local 32 | 33 | # vercel 34 | .vercel 35 | 36 | # typescript 37 | *.tsbuildinfo 38 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # This file defines the code owners of the repository 2 | # Code owners are automatically requested for review when someone opens a PR that modifies code that they own 3 | # Each line is a file pattern followed by one or more owners. Learn more here: 4 | # https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners 5 | 6 | # These owners will be the default owners for everything in 7 | # the repo. Unless a later match takes precedence, 8 | * @nhsz 9 | 10 | # Owners of specific files 11 | /src/posts/* @msimkin -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "noEmit": true, 10 | "esModuleInterop": true, 11 | "module": "esnext", 12 | "moduleResolution": "node", 13 | "resolveJsonModule": true, 14 | "isolatedModules": true, 15 | "jsx": "preserve", 16 | "incremental": true 17 | }, 18 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], 19 | "exclude": ["node_modules"] 20 | } 21 | -------------------------------------------------------------------------------- /src/components/UI/Footer.tsx: -------------------------------------------------------------------------------- 1 | import { Link, Stack, Text } from '@chakra-ui/react'; 2 | import { FC } from 'react'; 3 | 4 | export const Footer: FC = () => { 5 | return ( 6 |
7 | 8 | 9 | 15 | cryptography@ethereum.org 16 | 17 | 18 | {`© ${new Date().getFullYear()} Ethereum Foundation. All rights reserved.`} 19 | 20 |
21 | ); 22 | }; 23 | -------------------------------------------------------------------------------- /src/components/UI/icons/CloseIcon.tsx: -------------------------------------------------------------------------------- 1 | import { createIcon } from '@chakra-ui/icons'; 2 | 3 | export const CloseIcon = createIcon({ 4 | displayName: 'CloseIcon', 5 | viewBox: '0 0 28 29', 6 | path: ( 7 | 8 | 16 | 24 | 25 | ) 26 | }); 27 | -------------------------------------------------------------------------------- /src/components/layout/Layout.tsx: -------------------------------------------------------------------------------- 1 | import { Box, Container, Stack } from '@chakra-ui/react'; 2 | import { FC } from 'react'; 3 | 4 | import { Footer, Header } from '../UI'; 5 | 6 | export const Layout: FC = ({ children }) => { 7 | return ( 8 | <> 9 | {/* */} 10 |
11 | {/* */} 12 | 13 | 18 | 19 | {children} 20 | 21 | 22 |