{"id":14958512,"url":"https://github.com/ethereum/cryptography-research-website","last_synced_at":"2025-04-09T10:08:36.310Z","repository":{"id":37552735,"uuid":"420141223","full_name":"ethereum/cryptography-research-website","owner":"ethereum","description":"Ethereum Foundation Cryptography Research Website","archived":false,"fork":false,"pushed_at":"2024-12-30T12:42:16.000Z","size":45108,"stargazers_count":47,"open_issues_count":4,"forks_count":23,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-04-02T03:31:35.637Z","etag":null,"topics":["cryptography","ethereum","nextjs","react"],"latest_commit_sha":null,"homepage":"https://crypto.ethereum.org/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ethereum.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-22T15:02:21.000Z","updated_at":"2025-02-15T21:49:57.000Z","dependencies_parsed_at":"2024-06-27T19:24:52.047Z","dependency_job_id":"94f5e725-378a-4ed4-8bcd-626e2402debe","html_url":"https://github.com/ethereum/cryptography-research-website","commit_stats":{"total_commits":495,"total_committers":14,"mean_commits":"35.357142857142854","dds":0.507070707070707,"last_synced_commit":"ca9c3fb29c39e4aacf9d95a9d5ee79dc1576384b"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fcryptography-research-website","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fcryptography-research-website/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fcryptography-research-website/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fcryptography-research-website/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ethereum","download_url":"https://codeload.github.com/ethereum/cryptography-research-website/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248018060,"owners_count":21034048,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cryptography","ethereum","nextjs","react"],"created_at":"2024-09-24T13:17:15.282Z","updated_at":"2025-04-09T10:08:36.278Z","avatar_url":"https://github.com/ethereum.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Netlify Status](https://api.netlify.com/api/v1/badges/5d7b96c5-01cc-4feb-867f-109a2e2c9277/deploy-status)](https://app.netlify.com/sites/cryptography-research/deploys)\n\n\u003ch1 align=\"center\"\u003e\n  Ethereum Foundation Cryptography Research\n\u003c/h1\u003e\n\nThe Ethereum Foundation leads research into cryptographic protocols that are useful within\nthe greater Ethereum community and more generally. Cryptography is a key tool that enables\ngreater functionality, security, efficiency, and auditability in decentralized settings.\nWe are currently conducting research into verifiable delay functions, multiparty\ncomputation, vector commitments, and zero-knowledge proofs etc. We have a culture of open\nsource and no patents are put on any work that we produce.\n\nThis repository holds the codebase to our website, [crypto.ethereum.org](crypto.ethereum.org)\n\n## Stack\n\nThe main stack used in the project includes:\n\n- [Next.js](https://nextjs.org/).\n- [TypeScript](https://www.typescriptlang.org/).\n- [ChakraUI](https://chakra-ui.com/) as component library.\n- [KaTeX](https://katex.org/) to render LaTeX math syntax.\n\n## Local development\n\nThe project is bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app), with a custom scaffolding.\n\n### Getting Started\n\nFirst, run the development server:\n\n```bash\nnpm run dev\n# or\nyarn dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\nYou can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file.\n\n## Project Structure\n\nThe following list describes the main elements of the project structure:\n\n- `public`: contains static assets like fonts and images.\n- `src`: contains the source code.\n  - `components`: React components.\n    - components with state are directly located inside `/components`.\n    - `layout`: components used to contain and apply different layouts to different pages.\n    - `UI`: stateless (functional) components.\n  - `pages`: includes components that renders to pages and [NextJS API Routes](https://nextjs.org/docs/api-routes/introduction).\n  - `posts`: markdown blog posts.\n  - `styles`: css stylesheets.\n    - `global.css`: global stylesheet.\n  - `theme`: contains the [Chakra UI custom theme](https://chakra-ui.com/docs/styled-system/theming/customize-theme), organized in `foundations` and `components` for better scaling.\n  - `utils`: utilitary stuff.\n  - `constants.ts`: this is the _global_ constants file, containg URLs and lists of elements we use across the site.\n  - `types.ts`: contains the custom defined TypeScript types and interfaces.\n\n## Markdown \u0026 LaTex support on blog posts\n\n### Markdown\n\nSupport for [GitHub Flavored Markdown](https://github.github.com/gfm/), which is a superset of CommonMark and adds supports to other features like tables.\n\n### LaTeX\n\nThe site uses [KaTeX](https://katex.org) to render LaTeX/math and inside `/research` publications abstracts. LaTeX-rendering libs are not 100% compatible with LaTex yet, so please check the [support table](https://katex.org/docs/support_table.html) if you are having issues with some expression.\n\n## How to add a new blog post\n\nThe site supports both _internal_ and _external_ blog posts.\n\n- **Internal posts**: to add a new one, just create a new markdown (`.md`) file under `src/posts` (make sure first this directory exists, otherwise create it first, under `/src`). The name of the file should follow the [kebab case](https://www.theserverside.com/definition/Kebab-case) convention, as it will be used to generate the url to the post. You also have to add some [Front Matter](https://frontmatter.codes/docs/markdown) metadata, like the post `title`, `author(s)` and `date`, which are required.\n\nMetadata example:\n\n```\n---\ntitle: 'VDF Proving with SnarkPack'\ndescription 'Some awesome description for social media snippets, under 160 characters'\nauthor: 'Mary Maller'\ndate: '2022-03-16'\n---\n```\n\nPost titles should be under 60 characters. [Learn more on title tags](https://moz.com/learn/seo/title-tag).\n\nPost descriptions should be under 160 characters. [Learn more on meta descriptions](https://moz.com/learn/seo/meta-description).\n\n- **External posts**: you can also link to an external post from the `/blog` page by appending an object with the required data (`title`, `date`, `link`) to the `externalLinks` list from the `src/pages/blog/index.tsx` file. See the example below:\n\n```\nconst externalLinks = [\n  {\n    title: 'Ethereum Merge: Run the majority client at your own peril!',\n    date: '2022-03-24',\n    link: 'https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html'\n  }\n];\n```\n\n### How to add images to a local post\n\nImage files should be placed inside `/public/images/` and the path to the image will be referenced as `/images/${filename}`. For example, we can insert the EF logo in a post by using\n\n```\n![EF logo](/images/ef-logo-bg-white.png \"EF logo\")\n```\n\nTake into account that images are automatically centered, no need to add extra HTML.\n\n### How to add footnotes to a local post\n\nFollow [this syntax](https://github.blog/changelog/2021-09-30-footnotes-now-supported-in-markdown-fields/).\n\n## How to deploy changes succesfully\n\n- **Locally**: **Make sure the site builds** locally, otherwise the build will break and the new version of the site (e.g.: adding a new post) will not be generated. To be sure of this, run the `yarn build` command locally and check that you get no errors.\n- **On GitHub**: check that the `Deploy Preview` passes succesfully.\n\n## Bounties pages\n\nThe source files (`.md`) for the bounties pages are located at `/src/bounties-data-source`. If you need to update the content from a certain bounty, just modify the corresponding file. LaTeX/math is also supported here.\n\nFor a better organization, images used in bounties pages are placed inside `/public/images/bounties/` and the path to the image have to be referenced as `/images/bounties/${filename}` (check `/src/bounties-data-source/rsa/assumptions.md` as example).\n\n## How to add a new entry (Publication) on Research page\n\nThe best way is to just follow the current `Publication` structure you can find in `/src/pages/research.tsx` and use any other existent entry as example. For publications that are not associated to a conference, just use the `year` prop, with a numeric value, like the example below:\n\n```\n\u003cPublication\n  title='Fast amortized KZG proofs'\n  authors='Dankrad Feist, Dmitry Khovratovich'\n  year={2023}\n  link='https://eprint.iacr.org/2023/033'\n\u003e\n  \u003cText mb={4} fontSize='sm'\u003e\n    \u003cem\u003e\n      In this note we explain how to compute n KZG proofs for a polynomial of degree d in\n      time superlinear of (n+d). Our technique is used in lookup arguments and vector\n      commitment schemes.\n    \u003c/em\u003e\n  \u003c/Text\u003e\n\u003c/Publication\u003e\n```\n\nFor publications associated to a conference, use the `conference` property instead, with a text value. Don't use `year` in this case, just include it as part of the `conference` value, as you can see in the example below:\n\n```\n\u003cPublication\n  title='Aggregatable subvector commitments for stateless cryptocurrencies'\n  authors='Alin Tomescu, Ittai Abraham, Vitalik Buterin, Justin Drake, Dankrad Feist, Dmitry\n  Khovratovich'\n  conference='SCN 2020.'\n  link='https://eprint.iacr.org/2020/527.pdf'\n\u003e\n  \u003cText fontSize='sm'\u003e\n    \u003cem\u003e\n      An aggregatable subvector commitment (aSVC) scheme is a vector commitment (VC)\n      scheme that can aggregate multiple proofs into a single, small subvector proof. In\n      this paper, we formalize aSVCs and give a construction from constant-sized\n      polynomial commitments. Our construction is unique in that it has linear-sized\n      public parameters, it can compute all constant-sized proofs in quasilinear time, it\n      updates proofs in constant time and it can aggregate multiple proofs into a\n      constant-sized subvector proof. Furthermore, our concrete proof sizes are small due\n      to our use of pairing-friendly groups. We use our aSVC to obtain a payments-only\n      stateless cryptocurrency with very low communication and computation overheads.\n      Specifically, our constant-sized, aggregatable proofs reduce each block\u0026apos;s proof\n      overhead to a single group element, which is optimal. Furthermore, our subvector\n      proofs speed up block verification and our smaller public parameters further reduce\n      block size.\n    \u003c/em\u003e\n  \u003c/Text\u003e\n\u003c/Publication\u003e\n```\n\n## How to add a new entry on Events page\n\nFollow the current `Event` structure you can find in `/src/pages/events.tsx` and use any other existent entry as example, like the example below:\n\n```\n\u003cEvent\n  conference='Cryptographic Frontier 2022, Trondheim'\n  workshop='Open Problems in Decentralized Computation at Eurocrypt 2022'\n  url='https://sites.google.com/view/cryptographic-frontier-2022/'\n\u003e\n  this workshop brings the most interesting and challenging open cryptographic questions\n  that Ethereum, Filecoin and other blockchain systems face, to the attention of academia.\n  We will cover a large spectrum of research topics, such as vector commitments, SNARKs,\n  shuffles, authenticated data structures and more. We will start the day with an update\n  on to the problems discussed at last year\u0026apos;s workshop.\n\u003c/Event\u003e\n```\n\nBe sure to provide a value for `conference`, `workshop` and the correct `url`.\n\n### Notes\n\n- Dates should follow the `yyyy-mm-dd` format (for both internal and external posts), like `date: '2022-03-16'`\n- Blog posts are sorted automatically by date, regardless the order of insertion.\n- Check the current sample posts on `src/posts`.\n\n## Tutorials\n\n### Learning NextJS\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.\n\n### Adding ChakraUI to a NextJS project\n\n[This](https://chakra-ui.com/guides/getting-started/nextjs-guide) is a very clear and step-by-step guide on it.\n\n### Learning ChakraUI\n\nWe recommend checking the [official docs](https://chakra-ui.com/docs/getting-started).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethereum%2Fcryptography-research-website","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fethereum%2Fcryptography-research-website","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethereum%2Fcryptography-research-website/lists"}