Coder Social home page Coder Social logo

doonnaaa / cryptography-research-website Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ethereum/cryptography-research-website

0.0 0.0 0.0 43.33 MB

Ethereum Foundation Cryptography Research Website

Home Page: https://crypto.ethereum.org/

JavaScript 0.14% TypeScript 99.83% CSS 0.02%

cryptography-research-website's Introduction

Netlify Status

Ethereum Foundation Cryptography Research

The Ethereum Foundation leads research into cryptographic protocols that are useful within the greater Ethereum community and more generally. Cryptography is a key tool that enables greater functionality, security, efficiency, and auditability in decentralized settings. We are currently conducting research into verifiable delay functions, multiparty computation, vector commitments, and zero-knowledge proofs etc. We have a culture of open source and no patents are put on any work that we produce.

This repository holds the codebase to our website, crypto.ethereum.org

Stack

The main stack used in the project includes:

Local development

The project is bootstrapped with create-next-app, with a custom scaffolding.

Getting Started

First, run the development server:

npm run dev
# or
yarn dev

Open http://localhost:3000 with your browser to see the result.

You can start editing the page by modifying pages/index.tsx. The page auto-updates as you edit the file.

Project Structure

The following list describes the main elements of the project structure:

  • public: contains static assets like fonts and images.
  • src: contains the source code.
    • components: React components.
      • components with state are directly located inside /components.
      • layout: components used to contain and apply different layouts to different pages.
      • UI: stateless (functional) components.
    • pages: includes components that renders to pages and NextJS API Routes.
    • posts: markdown blog posts.
    • styles: css stylesheets.
      • global.css: global stylesheet.
    • theme: contains the Chakra UI custom theme, organized in foundations and components for better scaling.
    • utils: utilitary stuff.
    • constants.ts: this is the global constants file, containg URLs and lists of elements we use across the site.
    • types.ts: contains the custom defined TypeScript types and interfaces.

Markdown & LaTex support on blog posts

Markdown

Support for GitHub Flavored Markdown, which is a superset of CommonMark and adds supports to other features like tables.

LaTeX

The site uses KaTeX 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 if you are having issues with some expression.

How to add a new blog post

The site supports both internal and external blog posts.

  • 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 convention, as it will be used to generate the url to the post. You also have to add some Front Matter metadata, like the post title, author(s) and date, which are required.

Metadata example:

---
title: 'VDF Proving with SnarkPack'
description 'Some awesome description for social media snippets, under 160 characters'
author: 'Mary Maller'
date: '2022-03-16'
---

Post titles should be under 60 characters. Learn more on title tags.

Post descriptions should be under 160 characters. Learn more on meta descriptions.

  • 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:
const externalLinks = [
  {
    title: 'Ethereum Merge: Run the majority client at your own peril!',
    date: '2022-03-24',
    link: 'https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html'
  }
];

How to add images to a local post

Image 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

![EF logo](/images/ef-logo-bg-white.png "EF logo")

Take into account that images are automatically centered, no need to add extra HTML.

How to add footnotes to a local post

Follow this syntax.

How to deploy changes succesfully

  • 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.
  • On GitHub: check that the Deploy Preview passes succesfully.

Bounties pages

The 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.

For 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).

How to add a new entry (Publication) on Research page

The 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:

<Publication
  title='Fast amortized KZG proofs'
  authors='Dankrad Feist, Dmitry Khovratovich'
  year={2023}
  link='https://eprint.iacr.org/2023/033'
>
  <Text mb={4} fontSize='sm'>
    <em>
      In this note we explain how to compute n KZG proofs for a polynomial of degree d in
      time superlinear of (n+d). Our technique is used in lookup arguments and vector
      commitment schemes.
    </em>
  </Text>
</Publication>

For 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:

<Publication
  title='Aggregatable subvector commitments for stateless cryptocurrencies'
  authors='Alin Tomescu, Ittai Abraham, Vitalik Buterin, Justin Drake, Dankrad Feist, Dmitry
  Khovratovich'
  conference='SCN 2020.'
  link='https://eprint.iacr.org/2020/527.pdf'
>
  <Text fontSize='sm'>
    <em>
      An aggregatable subvector commitment (aSVC) scheme is a vector commitment (VC)
      scheme that can aggregate multiple proofs into a single, small subvector proof. In
      this paper, we formalize aSVCs and give a construction from constant-sized
      polynomial commitments. Our construction is unique in that it has linear-sized
      public parameters, it can compute all constant-sized proofs in quasilinear time, it
      updates proofs in constant time and it can aggregate multiple proofs into a
      constant-sized subvector proof. Furthermore, our concrete proof sizes are small due
      to our use of pairing-friendly groups. We use our aSVC to obtain a payments-only
      stateless cryptocurrency with very low communication and computation overheads.
      Specifically, our constant-sized, aggregatable proofs reduce each block&apos;s proof
      overhead to a single group element, which is optimal. Furthermore, our subvector
      proofs speed up block verification and our smaller public parameters further reduce
      block size.
    </em>
  </Text>
</Publication>

Notes

  • Dates should follow the yyyy-mm-dd format (for both internal and external posts), like date: '2022-03-16'
  • Blog posts are sorted automatically by date, regardless the order of insertion.
  • Check the current sample posts on src/posts.

Tutorials

Learning NextJS

To learn more about Next.js, take a look at the following resources:

Adding ChakraUI to a NextJS project

This is a very clear and step-by-step guide on it.

Learning ChakraUI

We recommend checking the official docs.

cryptography-research-website's People

Contributors

renovate[bot] avatar nhsz avatar lekoarts avatar samajammin avatar asn-d6 avatar khovratovich avatar asanso avatar mmaller avatar msimkin avatar zhenfeizhang avatar markkohdev avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.