mirror of
https://github.com/privacy-scaling-explorations/pse.dev.git
synced 2026-04-23 03:01:03 -04:00
Merge branch 'main' into chore/project-links
This commit is contained in:
@@ -1,41 +0,0 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/eslintrc",
|
||||
"root": true,
|
||||
"extends": [
|
||||
"next/core-web-vitals",
|
||||
"prettier",
|
||||
"plugin:tailwindcss/recommended"
|
||||
],
|
||||
"plugins": ["tailwindcss"],
|
||||
"rules": {
|
||||
"@next/next/no-html-link-for-pages": "off",
|
||||
"react/jsx-key": "off",
|
||||
"tailwindcss/no-custom-classname": "off",
|
||||
"react/react-in-jsx-scope": "off",
|
||||
"@typescript-eslint/no-explicit-any": "off",
|
||||
"@typescript-eslint/ban-types": "off"
|
||||
},
|
||||
"settings": {
|
||||
"tailwindcss": {
|
||||
"callees": ["cn"],
|
||||
"config": "tailwind.config.js"
|
||||
},
|
||||
"next": {
|
||||
"rootDir": ["./"]
|
||||
}
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"files": ["*.ts", "*.tsx"],
|
||||
"parser": "@typescript-eslint/parser"
|
||||
}
|
||||
],
|
||||
"ignores": [
|
||||
"dist/*",
|
||||
".cache",
|
||||
"public",
|
||||
"node_modules",
|
||||
"*.esm.js",
|
||||
".next/*"
|
||||
]
|
||||
}
|
||||
9
.gitignore
vendored
9
.gitignore
vendored
@@ -37,3 +37,12 @@ yarn-error.log*
|
||||
|
||||
# JetBrains IDEs
|
||||
.idea
|
||||
|
||||
# yarn
|
||||
.yarn/*
|
||||
!.yarn/patches
|
||||
!.yarn/plugins
|
||||
!.yarn/releases
|
||||
!.yarn/sdks
|
||||
!.yarn/versions
|
||||
.pnp.*
|
||||
|
||||
935
.yarn/releases/yarn-4.7.0.cjs
vendored
Executable file
935
.yarn/releases/yarn-4.7.0.cjs
vendored
Executable file
File diff suppressed because one or more lines are too long
3
.yarnrc.yml
Normal file
3
.yarnrc.yml
Normal file
@@ -0,0 +1,3 @@
|
||||
compressionLevel: mixed
|
||||
nodeLinker: node-modules
|
||||
enableGlobalCache: false
|
||||
19
README.md
19
README.md
@@ -1,4 +1,3 @@
|
||||
|
||||
# Privacy & Scaling Explorations
|
||||
|
||||
Enhancing Ethereum through cryptographic research and collective experimentation.
|
||||
@@ -6,24 +5,26 @@ Enhancing Ethereum through cryptographic research and collective experimentation
|
||||
## Contributing guidelines
|
||||
|
||||
### Open for contribution.
|
||||
|
||||
- For adding new features, please open PR and first merge to staging/dev for QA, or open issue for suggestion, bug report.
|
||||
- For any misc. update such as typo, PR to main and two approval is needed.
|
||||
|
||||
### Add/Edit project list
|
||||
|
||||
- For updating/adding project detail [you can follow this guide](https://github.com/privacy-scaling-explorations/pse.dev/blob/main/data/projects/README.md)
|
||||
|
||||
## PR Review process
|
||||
|
||||
#### For internal, PSE member:
|
||||
- Suggest to tag: @kalidiagne, @ChialiT, @AtHeartEngineer, @kichong for PR review.
|
||||
|
||||
- Suggest to tag: @kalidiagne, @b1gk4t, @AtHeartEngineer for PR review.
|
||||
- If question, please reach out in discord channel #website-pse
|
||||
|
||||
|
||||
#### For external:
|
||||
|
||||
- Translation PR: please tag a member you know that can help review your translation
|
||||
- Any type of PR: please state clear your intention
|
||||
For any suggestion, feel free to open issue or send us a message on Discord #suggestion
|
||||
|
||||
|
||||
For any suggestion, feel free to open issue or send us a message on Discord #suggestion
|
||||
|
||||
## Run Locally
|
||||
|
||||
@@ -51,16 +52,12 @@ Start the app
|
||||
yarn dev
|
||||
```
|
||||
|
||||
|
||||
|
||||
## Tech Stack
|
||||
|
||||
[@shadcn's Nextjs 13 template](https://github.com/shadcn/next-template)
|
||||
|
||||
- Next.js 13 App Directory
|
||||
- Next.js 14 App Directory
|
||||
- Radix UI Primitives
|
||||
- Tailwind CSS
|
||||
- Icons from [Lucide](https://lucide.dev)
|
||||
- Dark mode with `next-themes`
|
||||
- Tailwind CSS class sorting, merging and linting.
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ export default function IndexPage({ params: { lang } }: any) {
|
||||
</div>
|
||||
}
|
||||
actions={
|
||||
<Link href={`/projects`} className="flex items-center gap-2 group">
|
||||
<Link href={'/projects'} className="flex items-center gap-2 group">
|
||||
<Button className="w-full sm:w-auto">
|
||||
<div className="flex items-center gap-1">
|
||||
<span className="text-base font-medium uppercase">
|
||||
|
||||
@@ -122,7 +122,7 @@ export const ProgramPageContent = ({ lang }: any) => {
|
||||
|
||||
useEffect(() => {
|
||||
if (sectionsRef.current === null)
|
||||
sectionsRef.current = document.querySelectorAll(`div[data-section]`)
|
||||
sectionsRef.current = document.querySelectorAll('div[data-section]')
|
||||
if (!activeId) setActiveId(ProgramSections?.[0] ?? '')
|
||||
|
||||
const handleScroll = () => {
|
||||
|
||||
@@ -101,7 +101,7 @@ const ResourceNav = ({ lang }: LangProps['params']) => {
|
||||
|
||||
useEffect(() => {
|
||||
if (sectionsRef.current === null)
|
||||
sectionsRef.current = document.querySelectorAll(`div[data-section]`)
|
||||
sectionsRef.current = document.querySelectorAll('div[data-section]')
|
||||
if (!activeId) setActiveId('get-involved')
|
||||
|
||||
const handleScroll = () => {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"title": "Get started with programmable cryptography",
|
||||
"description": "PSE offers free educational programs to help you dive deep into Zero Knowledge Proofs, Fully Homomorphic Encryption, Multi-Party Computation and the latest in programmable cryptography. Whether you’re looking to learn the basics or start making open-source contributions, we have resources for your learning journey!",
|
||||
"description": "PSE offers free educational programs to help you dive deep into Zero Knowledge Proofs, Fully Homomorphic Encryption, Multi-Party Computation and the latest in programmable cryptography. Whether you're looking to learn the basics or start making open-source contributions, we have resources for your learning journey!",
|
||||
"common": {
|
||||
"faq": "FAQ",
|
||||
"curriculum": "Curriculum",
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
"title": "01. Crittografia per le persone",
|
||||
"description": [
|
||||
"La crittografia è ovunque: ogni volta che ti connetti a un sito sicuro, accedi con una password o sblocchi il telefono, vedi la crittografia in azione.",
|
||||
"Con la crittografia “programmabile” (come le prove di conoscenza zero, il calcolo multi-party o la crittografia omomorfica) possiamo fare affermazioni verificabili sulle informazioni segrete senza rivelare le informazioni stesse. Ciò può essere applicato alla gestione dell’identità, alla resistenza alla collusione, alla comunicazione anonima e molto altro ancora.",
|
||||
"Con la crittografia “programmabile” (come le prove di conoscenza zero, il calcolo multi-party o la crittografia omomorfica) possiamo fare affermazioni verificabili sulle informazioni segrete senza rivelare le informazioni stesse. Ciò può essere applicato alla gestione dell'identità, alla resistenza alla collusione, alla comunicazione anonima e molto altro ancora.",
|
||||
"Stiamo creando una libreria di strumenti di sviluppo, documenti di ricerca e prototipi open source e gratuiti per tutti. Ci auguriamo che le nostre risorse ispirino le persone a innovare le tecnologie di cui le loro comunità hanno bisogno."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "02. Privacy di default",
|
||||
"description": [
|
||||
"Crediamo che la privacy sia un diritto fondamentale. Vogliamo contribuire alla costruzione di un Internet che si allontani dalle pratiche invasive relative ai dati e offra invece alle persone scelte reali su chi ha accesso alle loro informazioni personali. L’autorizzazione dovrebbe essere specifica per lo scopo, revocabile, informata e non coercitiva.",
|
||||
"Crediamo che la privacy sia un diritto fondamentale. Vogliamo contribuire alla costruzione di un Internet che si allontani dalle pratiche invasive relative ai dati e offra invece alle persone scelte reali su chi ha accesso alle loro informazioni personali. L'autorizzazione dovrebbe essere specifica per lo scopo, revocabile, informata e non coercitiva.",
|
||||
"Realizziamo strumenti che aiutano le persone ad autenticarsi in modo sicuro, a effettuare transazioni riservate sulla blockchain e a rispettare e preservare la privacy degli utenti."
|
||||
]
|
||||
},
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import NextLink from "next/link"
|
||||
import NextLink from 'next/link'
|
||||
|
||||
interface Props {
|
||||
path: string[]
|
||||
@@ -17,8 +17,8 @@ const Breadcrumbs = ({ path }: Props) => {
|
||||
)
|
||||
}
|
||||
return (
|
||||
<NextLink key={index} href={`/${item}`} className={`capitalize`}>
|
||||
{item === "projects" ? "All Projects" : item}
|
||||
<NextLink key={index} href={`/${item}`} className={'capitalize'}>
|
||||
{item === 'projects' ? 'All Projects' : item}
|
||||
<span className="mx-2">/</span>
|
||||
</NextLink>
|
||||
)
|
||||
|
||||
@@ -57,6 +57,20 @@ export const Icons = {
|
||||
/>
|
||||
</svg>
|
||||
),
|
||||
telegram: (props: LucideProps) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="18"
|
||||
height="18"
|
||||
viewBox="0 0 18 18"
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
d="M8.99979 0.535889C4.17325 0.535889 0.262695 4.32424 0.262695 8.99995C0.262695 13.6757 4.17325 17.464 8.99979 17.464C13.8263 17.464 17.7369 13.6757 17.7369 8.99995C17.7369 4.32424 13.8263 0.535889 8.99979 0.535889ZM13.2908 6.33445L11.857 12.8804C11.7513 13.3446 11.4659 13.4572 11.0678 13.2388L8.88353 11.6791L7.83015 12.662C7.71389 12.7746 7.61524 12.8702 7.38977 12.8702L7.54478 10.7167L11.5927 7.17403C11.7689 7.02386 11.554 6.93854 11.3215 7.08871L6.31877 10.1399L4.16268 9.488C3.69412 9.34466 3.68355 9.03408 4.26133 8.81565L12.6849 5.66893C13.0759 5.53241 13.4177 5.76108 13.2908 6.33445Z"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</svg>
|
||||
),
|
||||
twitter: (props: LucideProps) => (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
|
||||
@@ -128,7 +128,7 @@ export default function ProjectFiltersBar({ lang }: LangProps['params']) {
|
||||
projects,
|
||||
})
|
||||
setSearchQuery('') // clear input
|
||||
router.push(`/projects`)
|
||||
router.push('/projects')
|
||||
}
|
||||
|
||||
useDebounce(
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
import { RiTelegramLine as TelegramIcon } from "react-icons/ri"
|
||||
|
||||
import { Icons } from "../icons"
|
||||
import { Icons } from '../icons'
|
||||
|
||||
export const ProjectLinkIconMap: Record<string, any> = {
|
||||
github: (
|
||||
@@ -17,7 +15,7 @@ export const ProjectLinkIconMap: Record<string, any> = {
|
||||
<Icons.twitter size={22} className="duration-200 hover:text-anakiwa-500" />
|
||||
),
|
||||
telegram: (
|
||||
<TelegramIcon size={22} className="duration-200 hover:text-anakiwa-500" />
|
||||
<Icons.telegram size={22} className="duration-200 hover:text-anakiwa-500" />
|
||||
),
|
||||
discord: (
|
||||
<Icons.discord size={20} className="duration-200 hover:text-anakiwa-500" />
|
||||
|
||||
@@ -62,7 +62,7 @@ export const ProjectList = ({ lang }: LangProps['params']) => {
|
||||
useEffect(() => {
|
||||
setIsMounted(true)
|
||||
if (typeof window !== 'undefined') {
|
||||
sectionsRef.current = document.querySelectorAll(`div[data-section]`)
|
||||
sectionsRef.current = document.querySelectorAll('div[data-section]')
|
||||
|
||||
const handleScroll = () => {
|
||||
if (isManualScroll) return
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
"use client"
|
||||
|
||||
import * as React from "react"
|
||||
import { ThemeProvider as NextThemesProvider } from "next-themes"
|
||||
import { ThemeProviderProps } from "next-themes/dist/types"
|
||||
|
||||
export function ThemeProvider({ children, ...props }: ThemeProviderProps) {
|
||||
return <NextThemesProvider {...props}>{children}</NextThemesProvider>
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
"use client"
|
||||
|
||||
import * as React from "react"
|
||||
import { useTheme } from "next-themes"
|
||||
|
||||
import { Button } from "@/components/ui/button"
|
||||
import { Icons } from "@/components/icons"
|
||||
|
||||
export function ThemeToggle() {
|
||||
const { setTheme, theme } = useTheme()
|
||||
|
||||
return (
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="sm"
|
||||
onClick={() => setTheme(theme === "light" ? "dark" : "light")}
|
||||
>
|
||||
<Icons.sun className="rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" />
|
||||
<Icons.moon className="absolute rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" />
|
||||
<span className="sr-only">Toggle theme</span>
|
||||
</Button>
|
||||
)
|
||||
}
|
||||
@@ -103,7 +103,8 @@ export const events = [
|
||||
],
|
||||
event: {
|
||||
title: 'Introduction to Cryptography, New and Old',
|
||||
description: `Data can be useful, and also dangerous. This talk will raise questions and concerns that data enthusiasts might want to consider.`,
|
||||
description:
|
||||
'Data can be useful, and also dangerous. This talk will raise questions and concerns that data enthusiasts might want to consider.',
|
||||
url: 'https://app.devcon.org/schedule/R3JC8U',
|
||||
date: 'Tuesday, Nov 12',
|
||||
time: '4:30 PM - 4:55 PM',
|
||||
|
||||
@@ -112,5 +112,5 @@ export const projects: ProjectInterface[] = [
|
||||
postQuantumCryptography,
|
||||
machinaIo,
|
||||
plasmaFold,
|
||||
vOPRF
|
||||
vOPRF,
|
||||
]
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
## How to Add a New Project to the Projects List
|
||||
|
||||
#### 1. Create a New Project File:
|
||||
|
||||
#### 1. Create a New Project File:
|
||||
- Go to the `../data/projects` folder in your project.
|
||||
- Create a new file named `[project_name].ts`
|
||||
- Create a new file named `[project-name].ts`
|
||||
|
||||
#### 2. Add Project Details:
|
||||
- Open the newly created `[project_name].ts` file.
|
||||
- Use the ProjectInterface template to add the necessary details. Here’s a basic example (please copy this for a quick start):
|
||||
|
||||
- Open the newly created `[project-name].ts` file.
|
||||
- Use the ProjectInterface template to add the necessary details. Here's a basic example (please copy this for a quick start):
|
||||
|
||||
```js
|
||||
import { ProjectInterface, ProjectStatus } from "@/lib/types"
|
||||
|
||||
export const project_name: ProjectInterface = {
|
||||
id: "project_name",
|
||||
export const projectName: ProjectInterface = {
|
||||
id: "project-name",
|
||||
image: "",
|
||||
name: "Project Example",
|
||||
section: "pse",
|
||||
@@ -39,21 +40,21 @@ Sample project description goes here. You can also use **Markdown** for formatti
|
||||
|
||||
**Note**: Make sure to add all the necessary language versions (locales) under content to support every language you need. Markdown is supported, so feel free to format accordingly.
|
||||
|
||||
|
||||
#### 3. Register the New Project:
|
||||
|
||||
- Open the `[...]/data/projects.ts` file where all projects are listed.
|
||||
- Add your new project to the projects array to make it visible:
|
||||
|
||||
```js
|
||||
import { project_name } from './projects/[project_name].ts';
|
||||
import { projectName } from './projects/[project-name].ts';
|
||||
|
||||
const projects: ProjectInterface[] = [
|
||||
// other projects
|
||||
project_name,
|
||||
projectName,
|
||||
];
|
||||
```
|
||||
|
||||
That’s it! Your new project will now be visible. Here is Overview example
|
||||
That's it! Your new project will now be visible. Here is Overview example
|
||||
|
||||

|
||||
|
||||
@@ -63,11 +64,15 @@ To add extra link to projects we need to add `extraLinks` for the projects we ar
|
||||
Make sure that for every "themes" value there is a specific "extraLinks" object will all the links.
|
||||
|
||||
```js
|
||||
import { ProjectCategory, ProjectInterface, ProjectStatus } from '@/lib/types'
|
||||
|
||||
export const example: ProjectInterface = {
|
||||
id: "example",
|
||||
image: "",
|
||||
name: "This is an example of the project",
|
||||
projectStatus: '',
|
||||
category: ProjectCategory.RESEARCH, // 'APPLICATIONS', 'RESEARCH' or 'DEVTOOLS'
|
||||
section: "pse", // 'pse', 'grant', 'collaboration', 'archived'
|
||||
projectStatus: ProjectStatus.ACTIVE,
|
||||
tags: {
|
||||
themes: ["play", "buildWith"],
|
||||
keywords: ["Anonymity/privacy", "Voting/governance"],
|
||||
|
||||
@@ -3,46 +3,47 @@ import {
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from "@/lib/types"
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "A mechanism for anonymous proof of Ethereum address ownership.",
|
||||
description: `AnonKlub is a tool designed for Ethereum developers that allows for anonymous proof of Ethereum address ownership. It doesn't directly address the public observability of Ethereum transactions but provides a workaround for privacy. Users can prepare a list of Ethereum addresses, sign a message from an address they own, and use that signature to generate a zero-knowledge proof. This proof enables users to perform actions anonymously that would typically require ownership of an address from the initial list. Use cases include anonymous NFT minting and Discord verification for DAOs without disclosing the public address.`,
|
||||
tldr: 'A mechanism for anonymous proof of Ethereum address ownership.',
|
||||
description:
|
||||
"AnonKlub is a tool designed for Ethereum developers that allows for anonymous proof of Ethereum address ownership. It doesn't directly address the public observability of Ethereum transactions but provides a workaround for privacy. Users can prepare a list of Ethereum addresses, sign a message from an address they own, and use that signature to generate a zero-knowledge proof. This proof enables users to perform actions anonymously that would typically require ownership of an address from the initial list. Use cases include anonymous NFT minting and Discord verification for DAOs without disclosing the public address.",
|
||||
},
|
||||
}
|
||||
|
||||
export const anonKlub: ProjectInterface = {
|
||||
id: "anon-klub",
|
||||
id: 'anon-klub',
|
||||
category: ProjectCategory.APPLICATION,
|
||||
section: "archived",
|
||||
section: 'archived',
|
||||
content,
|
||||
projectStatus: ProjectStatus.INACTIVE,
|
||||
image: "anonklub.svg",
|
||||
name: "AnonKlub",
|
||||
image: 'anonklub.svg',
|
||||
name: 'AnonKlub',
|
||||
links: {
|
||||
github: "https://github.com/anonklub",
|
||||
website: "https://anonklub.github.io",
|
||||
github: 'https://github.com/anonklub',
|
||||
website: 'https://anonklub.github.io',
|
||||
},
|
||||
extraLinks: {
|
||||
learn: [
|
||||
{
|
||||
label:
|
||||
"Sunsetting Blog Post: Reflections on Our Journey in Privacy-Preserving Solutions",
|
||||
url: "https://mirror.xyz/privacy-scaling-explorations.eth/7VTKFVR4PM75WtNnBzuQSBZW-UYoJOsnzBBQmB9MWbY",
|
||||
'Sunsetting Blog Post: Reflections on Our Journey in Privacy-Preserving Solutions',
|
||||
url: 'https://mirror.xyz/privacy-scaling-explorations.eth/7VTKFVR4PM75WtNnBzuQSBZW-UYoJOsnzBBQmB9MWbY',
|
||||
},
|
||||
],
|
||||
},
|
||||
tags: {
|
||||
keywords: [
|
||||
"Transaction privacy",
|
||||
"Anonymity/privacy",
|
||||
"Social",
|
||||
"Identity",
|
||||
"Voting/governance",
|
||||
'Transaction privacy',
|
||||
'Anonymity/privacy',
|
||||
'Social',
|
||||
'Identity',
|
||||
'Voting/governance',
|
||||
],
|
||||
themes: ["build", "play"],
|
||||
types: ["Infrastructure/protocol", "Prototype", "Proof of concept"],
|
||||
builtWith: ["circom", "snarkjs", "halo2"],
|
||||
themes: ['build', 'play'],
|
||||
types: ['Infrastructure/protocol', 'Prototype', 'Proof of concept'],
|
||||
builtWith: ['circom', 'snarkjs', 'halo2'],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -3,32 +3,33 @@ import {
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from "@/lib/types"
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "Content discovery through community contributions, using state channels to reward users for popular posts.",
|
||||
description: `Channel 4 is a community-driven platform where users can submit and discover content. It uses state channels to incentivize user engagement. When a user likes the content you've submitted, a state channel closes and rewards are dropped into their wallet. This approach combines entertainment with the power of state channels, enabling community members to earn while they engage.`,
|
||||
tldr: 'Content discovery through community contributions, using state channels to reward users for popular posts.',
|
||||
description:
|
||||
"Channel 4 is a community-driven platform where users can submit and discover content. It uses state channels to incentivize user engagement. When a user likes the content you've submitted, a state channel closes and rewards are dropped into their wallet. This approach combines entertainment with the power of state channels, enabling community members to earn while they engage.",
|
||||
},
|
||||
}
|
||||
|
||||
export const channel4: ProjectInterface = {
|
||||
id: "channel-4",
|
||||
id: 'channel-4',
|
||||
content,
|
||||
category: ProjectCategory.APPLICATION,
|
||||
section: "archived",
|
||||
section: 'archived',
|
||||
projectStatus: ProjectStatus.INACTIVE,
|
||||
image: "channel4.svg",
|
||||
name: "Channel 4",
|
||||
image: 'channel4.svg',
|
||||
name: 'Channel 4',
|
||||
links: {
|
||||
github: "https://github.com/State-Channel-4",
|
||||
website: "https://channel4.wtf/",
|
||||
discord: "https://discord.gg/76UrYgVyEx",
|
||||
github: 'https://github.com/State-Channel-4',
|
||||
website: 'https://channel4.wtf/',
|
||||
discord: 'https://discord.gg/76UrYgVyEx',
|
||||
},
|
||||
tags: {
|
||||
keywords: ["Scaling"],
|
||||
themes: ["play"],
|
||||
types: ["Application"],
|
||||
builtWith: ["state channel", "smart contract"],
|
||||
keywords: ['Scaling'],
|
||||
themes: ['play'],
|
||||
types: ['Application'],
|
||||
builtWith: ['state channel', 'smart contract'],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -3,38 +3,39 @@ import {
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from "@/lib/types"
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "A modern ZKP language and compiler for plonkish and AIR arithmetizations",
|
||||
description: `Chiquito is a high-level structured language for implementing zero knowledge proof circuits, currently being implemented in the DSL Working Group of PSE. It is a state machine zk-language that provides better syntax and abstraction. It can automatically compiler arbitrary boolean expressions for state machine transitions. It can optimise the resulting arithmetization. Chiquito has a Halo2 backend, which is a low level zkDSL that writes circuits using the PLONKish arithmetization and is working on supporting additional backends. Chiquito circuits can be written using both Python and Rust. `,
|
||||
tldr: 'A modern ZKP language and compiler for plonkish and AIR arithmetizations',
|
||||
description:
|
||||
'Chiquito is a high-level structured language for implementing zero knowledge proof circuits, currently being implemented in the DSL Working Group of PSE. It is a state machine zk-language that provides better syntax and abstraction. It can automatically compiler arbitrary boolean expressions for state machine transitions. It can optimise the resulting arithmetization. Chiquito has a Halo2 backend, which is a low level zkDSL that writes circuits using the PLONKish arithmetization and is working on supporting additional backends. Chiquito circuits can be written using both Python and Rust. ',
|
||||
},
|
||||
}
|
||||
|
||||
export const chiquito: ProjectInterface = {
|
||||
id: "chiquito",
|
||||
id: 'chiquito',
|
||||
category: ProjectCategory.DEVTOOLS,
|
||||
projectStatus: ProjectStatus.INACTIVE,
|
||||
section: "pse",
|
||||
section: 'pse',
|
||||
content,
|
||||
image: "",
|
||||
name: "chiquito",
|
||||
image: '',
|
||||
name: 'chiquito',
|
||||
links: {
|
||||
github: "https://github.com/privacy-scaling-explorations/chiquito",
|
||||
website: "https://docs.pecadorplonkish.xyz/",
|
||||
twitter: "",
|
||||
github: 'https://github.com/privacy-scaling-explorations/chiquito',
|
||||
website: 'https://docs.pecadorplonkish.xyz/',
|
||||
twitter: '',
|
||||
},
|
||||
tags: {
|
||||
themes: ["build"],
|
||||
themes: ['build'],
|
||||
types: [
|
||||
"Legos/dev tools",
|
||||
"Lego sets/toolkits",
|
||||
"Proof of concept",
|
||||
"language",
|
||||
"dsl",
|
||||
'Legos/dev tools',
|
||||
'Lego sets/toolkits',
|
||||
'Proof of concept',
|
||||
'language',
|
||||
'dsl',
|
||||
],
|
||||
keywords: ["DSL", "language", "rust", "python", "halo2"],
|
||||
builtWith: ["halo2", "rust"],
|
||||
keywords: ['DSL', 'language', 'rust', 'python', 'halo2'],
|
||||
builtWith: ['halo2', 'rust'],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -3,45 +3,46 @@ import {
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from "@/lib/types"
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "Integrating Nova into the EVM involves wrapping Liam Eagen's theoretical ECIP argument in Halo 2",
|
||||
description: `With Coco, groups can collaborate to curate feeds of any topic they're interested in. As you scroll through your Coco feed, rather than upvoting or downvoting posts, you'll spend WETH to predict what other group members and the group's moderators will want to see. When you're right, you'll get back your original WETH and more — but if you're wrong, you'll lose what you put in. Through this process, you help Coco filter value from noise to make sure group feeds only consist of posts that the group cares about.With Coco, groups can collaborate to curate feeds of any topic they're interested in. As you scroll through your Coco feed, rather than upvoting or downvoting posts, you'll spend WETH to predict what other group members and the group's moderators will want to see. When you're right, you'll get back your original WETH and more — but if you're wrong, you'll lose what you put in. Through this process, you help Coco filter value from noise to make sure group feeds only consist of posts that the group cares about.`,
|
||||
description:
|
||||
"With Coco, groups can collaborate to curate feeds of any topic they're interested in. As you scroll through your Coco feed, rather than upvoting or downvoting posts, you'll spend WETH to predict what other group members and the group's moderators will want to see. When you're right, you'll get back your original WETH and more — but if you're wrong, you'll lose what you put in. Through this process, you help Coco filter value from noise to make sure group feeds only consist of posts that the group cares about.With Coco, groups can collaborate to curate feeds of any topic they're interested in. As you scroll through your Coco feed, rather than upvoting or downvoting posts, you'll spend WETH to predict what other group members and the group's moderators will want to see. When you're right, you'll get back your original WETH and more — but if you're wrong, you'll lose what you put in. Through this process, you help Coco filter value from noise to make sure group feeds only consist of posts that the group cares about.",
|
||||
},
|
||||
}
|
||||
|
||||
export const Coco: ProjectInterface = {
|
||||
id: "coco",
|
||||
image: "coco.svg",
|
||||
id: 'coco',
|
||||
image: 'coco.svg',
|
||||
category: ProjectCategory.APPLICATION,
|
||||
section: "archived",
|
||||
name: "COCO",
|
||||
section: 'archived',
|
||||
name: 'COCO',
|
||||
projectStatus: ProjectStatus.INACTIVE,
|
||||
content,
|
||||
tags: {
|
||||
keywords: ["prediction market", "scaling"],
|
||||
keywords: ['prediction market', 'scaling'],
|
||||
},
|
||||
extraLinks: {
|
||||
learn: [
|
||||
{
|
||||
label: "Meet COCO!",
|
||||
url: "https://mirror.xyz/privacy-scaling-explorations.eth/tEf7iYa8l7ECZwN2T57yyiws7h9Uchip30CQvx-JBBQ",
|
||||
label: 'Meet COCO!',
|
||||
url: 'https://mirror.xyz/privacy-scaling-explorations.eth/tEf7iYa8l7ECZwN2T57yyiws7h9Uchip30CQvx-JBBQ',
|
||||
},
|
||||
],
|
||||
buildWith: [
|
||||
{
|
||||
label: "Smart contracts",
|
||||
url: "https://github.com/Janmajayamall/coco-contracts",
|
||||
label: 'Smart contracts',
|
||||
url: 'https://github.com/Janmajayamall/coco-contracts',
|
||||
},
|
||||
{
|
||||
label: "Frontend",
|
||||
url: "https://github.com/Janmajayamall/coco-frontend",
|
||||
label: 'Frontend',
|
||||
url: 'https://github.com/Janmajayamall/coco-frontend',
|
||||
},
|
||||
{
|
||||
label: "Frontend (General)",
|
||||
url: "https://github.com/Janmajayamall/coco-frontend-general",
|
||||
label: 'Frontend (General)',
|
||||
url: 'https://github.com/Janmajayamall/coco-frontend-general',
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
@@ -3,30 +3,31 @@ import {
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from "@/lib/types"
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "A browser extension for secure, portable anonymous identity management across applications.",
|
||||
description: `CryptKeeper is a browser extension that generates Semaphore and RLN proofs for websites, providing a secure and portable solution for managing anonymous identity secrets across different applications. It simplifies the integration of zero-knowledge (ZK) identities and proofs into applications, allowing developers to focus on building the front-end and logic of their applications. By handling complex aspects of cryptography, circuits, caching, and storage, CryptKeeper enables users to interact with decentralized applications (dapps) without revealing their private identity secrets. It is aimed at building secure community standards for the growing ZK ecosystem.`,
|
||||
tldr: 'A browser extension for secure, portable anonymous identity management across applications.',
|
||||
description:
|
||||
'CryptKeeper is a browser extension that generates Semaphore and RLN proofs for websites, providing a secure and portable solution for managing anonymous identity secrets across different applications. It simplifies the integration of zero-knowledge (ZK) identities and proofs into applications, allowing developers to focus on building the front-end and logic of their applications. By handling complex aspects of cryptography, circuits, caching, and storage, CryptKeeper enables users to interact with decentralized applications (dapps) without revealing their private identity secrets. It is aimed at building secure community standards for the growing ZK ecosystem.',
|
||||
},
|
||||
}
|
||||
|
||||
export const cryptkeeper: ProjectInterface = {
|
||||
id: "cryptkeeper",
|
||||
id: 'cryptkeeper',
|
||||
projectStatus: ProjectStatus.INACTIVE,
|
||||
category: ProjectCategory.APPLICATION,
|
||||
section: "archived",
|
||||
section: 'archived',
|
||||
content,
|
||||
image: "cryptkeeper.webp",
|
||||
name: "CryptKeeper",
|
||||
image: 'cryptkeeper.webp',
|
||||
name: 'CryptKeeper',
|
||||
links: {
|
||||
github: "https://github.com/CryptKeeperZK",
|
||||
github: 'https://github.com/CryptKeeperZK',
|
||||
},
|
||||
tags: {
|
||||
keywords: ["Anonymity/privacy", "Social", "Identity"],
|
||||
themes: ["build"],
|
||||
types: ["Application", "Infrastructure/protocol", "Lego sets/toolkits"],
|
||||
builtWith: ["semaphore", "rln"],
|
||||
keywords: ['Anonymity/privacy', 'Social', 'Identity'],
|
||||
themes: ['build'],
|
||||
types: ['Application', 'Infrastructure/protocol', 'Lego sets/toolkits'],
|
||||
builtWith: ['semaphore', 'rln'],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,28 +1,34 @@
|
||||
import { ProjectCategory, ProjectContent, ProjectInterface, ProjectStatus } from "@/lib/types"
|
||||
import {
|
||||
ProjectCategory,
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "An anonymous, federated, chat application using ZK.",
|
||||
description: `An anonymous, federated, chat application that uses Rate-Limiting Nullifier for spam prevention.`,
|
||||
tldr: 'An anonymous, federated, chat application using ZK.',
|
||||
description:
|
||||
'An anonymous, federated, chat application that uses Rate-Limiting Nullifier for spam prevention.',
|
||||
},
|
||||
}
|
||||
|
||||
export const discreetly: ProjectInterface = {
|
||||
id: "discreetly",
|
||||
id: 'discreetly',
|
||||
projectStatus: ProjectStatus.INACTIVE,
|
||||
category: ProjectCategory.APPLICATION,
|
||||
section: "pse",
|
||||
section: 'pse',
|
||||
content,
|
||||
image: "discreetly.svg",
|
||||
name: "Discreetly",
|
||||
image: 'discreetly.svg',
|
||||
name: 'Discreetly',
|
||||
links: {
|
||||
github: "https://github.com/Discreetly",
|
||||
website: "https://app.discreetly.chat/",
|
||||
github: 'https://github.com/Discreetly',
|
||||
website: 'https://app.discreetly.chat/',
|
||||
},
|
||||
tags: {
|
||||
keywords: ["Anonymity/privacy", "Social"],
|
||||
themes: ["play"],
|
||||
types: ["Legos/dev tools", "Proof of concept", "Application"],
|
||||
builtWith: ["rln", "semaphore"],
|
||||
keywords: ['Anonymity/privacy', 'Social'],
|
||||
themes: ['play'],
|
||||
types: ['Legos/dev tools', 'Proof of concept', 'Application'],
|
||||
builtWith: ['rln', 'semaphore'],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -3,31 +3,32 @@ import {
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from "@/lib/types"
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "Exploration of languages for writing zk circuits",
|
||||
description: `The DSL Working Group is focused on the exploration and improvement of languages used to write zero-knowledge circuits. The group's primary goal is to enhance the state of zk circuit languages, making them easier to write and review by offering the right abstractions. They also aim to make it harder to write unsound circuits by implementing static analysis and enforcing safer patterns. Additionally, they are working to support next-generation (Incrementally Verifiable Computation or IVC) proving systems. The group is currently working on Chiquito, a high-level Domain-Specific Language (DSL) for Halo2 circuits that lowers the entry barrier to write zk circuits with a state-machine abstraction API.`,
|
||||
tldr: 'Exploration of languages for writing zk circuits',
|
||||
description:
|
||||
"The DSL Working Group is focused on the exploration and improvement of languages used to write zero-knowledge circuits. The group's primary goal is to enhance the state of zk circuit languages, making them easier to write and review by offering the right abstractions. They also aim to make it harder to write unsound circuits by implementing static analysis and enforcing safer patterns. Additionally, they are working to support next-generation (Incrementally Verifiable Computation or IVC) proving systems. The group is currently working on Chiquito, a high-level Domain-Specific Language (DSL) for Halo2 circuits that lowers the entry barrier to write zk circuits with a state-machine abstraction API.",
|
||||
},
|
||||
}
|
||||
|
||||
export const dslWorkingGroup: ProjectInterface = {
|
||||
id: "dsl-working-group",
|
||||
id: 'dsl-working-group',
|
||||
projectStatus: ProjectStatus.INACTIVE,
|
||||
category: ProjectCategory.RESEARCH,
|
||||
section: "pse",
|
||||
section: 'pse',
|
||||
content,
|
||||
image: "",
|
||||
imageAlt: "DSL Working Group",
|
||||
name: "DSL Working Group",
|
||||
image: '',
|
||||
imageAlt: 'DSL Working Group',
|
||||
name: 'DSL Working Group',
|
||||
links: {
|
||||
github: "https://github.com/privacy-scaling-explorations/chiquito/",
|
||||
github: 'https://github.com/privacy-scaling-explorations/chiquito/',
|
||||
},
|
||||
tags: {
|
||||
types: ["Legos/dev tools", "Proof of concept", "Developer tooling"],
|
||||
types: ['Legos/dev tools', 'Proof of concept', 'Developer tooling'],
|
||||
keywords: [],
|
||||
themes: ["research"],
|
||||
themes: ['research'],
|
||||
builtWith: [],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -3,37 +3,38 @@ import {
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from "@/lib/types"
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "Integrating Nova into the EVM involves wrapping Liam Eagen's theoretical ECIP argument in Halo 2",
|
||||
description: `Liam Eagen has developed a ZK proof for Elliptic Curve Inner Products (ECIPs) to overcome a significant bottle neck in recursive proof composition over elliptic curve cycles. The process of integrating Nova into the EVM requires an efficient method or "argument" for handling large elliptic Multi-Scalar Multiplications (MSMs). The final step in this integration process involves wrapping this argument Halo 2.`,
|
||||
description:
|
||||
'Liam Eagen has developed a ZK proof for Elliptic Curve Inner Products (ECIPs) to overcome a significant bottle neck in recursive proof composition over elliptic curve cycles. The process of integrating Nova into the EVM requires an efficient method or "argument" for handling large elliptic Multi-Scalar Multiplications (MSMs). The final step in this integration process involves wrapping this argument Halo 2.',
|
||||
},
|
||||
}
|
||||
|
||||
export const ECIPHalo2: ProjectInterface = {
|
||||
id: "ecip-halo2",
|
||||
image: "",
|
||||
id: 'ecip-halo2',
|
||||
image: '',
|
||||
category: ProjectCategory.DEVTOOLS,
|
||||
projectStatus: ProjectStatus.INACTIVE,
|
||||
section: "pse",
|
||||
section: 'pse',
|
||||
content,
|
||||
imageAlt: "ECIP + Halo 2",
|
||||
name: "ECIP (Elliptic Curve Inner Products) Halo 2 Implementation",
|
||||
imageAlt: 'ECIP + Halo 2',
|
||||
name: 'ECIP (Elliptic Curve Inner Products) Halo 2 Implementation',
|
||||
links: {
|
||||
github: "https://github.com/levs57/sage-circuits/",
|
||||
github: 'https://github.com/levs57/sage-circuits/',
|
||||
},
|
||||
extraLinks: {
|
||||
learn: [
|
||||
{
|
||||
label: "Designing a plonk circuit for Liam Eagen's protocol",
|
||||
url: "https://hackmd.io/@levs57/r1n77YvP3",
|
||||
url: 'https://hackmd.io/@levs57/r1n77YvP3',
|
||||
},
|
||||
{
|
||||
label:
|
||||
"ZKPs of Elliptic Curve Inner Products from Principal Divisors and Weil Reciprocity",
|
||||
url: "https://eprint.iacr.org/2022/596",
|
||||
'ZKPs of Elliptic Curve Inner Products from Principal Divisors and Weil Reciprocity',
|
||||
url: 'https://eprint.iacr.org/2022/596',
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
@@ -1,27 +1,33 @@
|
||||
import { ProjectCategory, ProjectContent, ProjectInterface, ProjectStatus } from "@/lib/types"
|
||||
import {
|
||||
ProjectCategory,
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "A distributed reputation system with zero-knowledge features.",
|
||||
description: `EigenTrust is a library designed to manage trust within a distributed network, incorporating zero-knowledge features. It serves as a reputation bank for the Ethereum ecosystem, providing an interoperable layer for managing reputation and trust. The protocol creates zero-knowledge proofs of reputation scores based on ratings given by network participants. This allows for the creation of a reputation system for peer-to-peer marketplaces and exchanges, reputation-weighted voting, and community gatekeeping.`,
|
||||
tldr: 'A distributed reputation system with zero-knowledge features.',
|
||||
description:
|
||||
'EigenTrust is a library designed to manage trust within a distributed network, incorporating zero-knowledge features. It serves as a reputation bank for the Ethereum ecosystem, providing an interoperable layer for managing reputation and trust. The protocol creates zero-knowledge proofs of reputation scores based on ratings given by network participants. This allows for the creation of a reputation system for peer-to-peer marketplaces and exchanges, reputation-weighted voting, and community gatekeeping.',
|
||||
},
|
||||
}
|
||||
|
||||
export const eigenTrust: ProjectInterface = {
|
||||
id: "eigen-trust",
|
||||
id: 'eigen-trust',
|
||||
projectStatus: ProjectStatus.INACTIVE,
|
||||
category: ProjectCategory.RESEARCH,
|
||||
section: "archived",
|
||||
section: 'archived',
|
||||
content,
|
||||
image: "",
|
||||
name: "EigenTrust",
|
||||
image: '',
|
||||
name: 'EigenTrust',
|
||||
links: {
|
||||
github: "https://github.com/eigen-trust/protocol",
|
||||
github: 'https://github.com/eigen-trust/protocol',
|
||||
},
|
||||
tags: {
|
||||
keywords: ["Reputation", "Identity"],
|
||||
themes: ["build"],
|
||||
types: ["Infrastructure/protocol"],
|
||||
builtWith: ["ethereum attestation service", "halo2", "ethers.rs"],
|
||||
keywords: ['Reputation', 'Identity'],
|
||||
themes: ['build'],
|
||||
types: ['Infrastructure/protocol'],
|
||||
builtWith: ['ethereum attestation service', 'halo2', 'ethers.rs'],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -3,36 +3,37 @@ import {
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from "@/lib/types"
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "An identity bridge from web2 to web3",
|
||||
description: `Interep aims to provide an identity solution for Ethereum users by bridging from an established digital identity source such as Reddit, Twitter, and Github. The product provides an identity layer in the application stack and uses the Semaphore framework to ensure privacy. Interep allows users to establish sybil-resistant decentralized identities on web3 without starting from scratch. By leveraging zero-knowledge proofs, Interep ensures only essential information is disclosed.`,
|
||||
tldr: 'An identity bridge from web2 to web3',
|
||||
description:
|
||||
'Interep aims to provide an identity solution for Ethereum users by bridging from an established digital identity source such as Reddit, Twitter, and Github. The product provides an identity layer in the application stack and uses the Semaphore framework to ensure privacy. Interep allows users to establish sybil-resistant decentralized identities on web3 without starting from scratch. By leveraging zero-knowledge proofs, Interep ensures only essential information is disclosed.',
|
||||
},
|
||||
}
|
||||
|
||||
export const Interep: ProjectInterface = {
|
||||
id: "interep",
|
||||
image: "interep.svg",
|
||||
name: "Interep",
|
||||
id: 'interep',
|
||||
image: 'interep.svg',
|
||||
name: 'Interep',
|
||||
projectStatus: ProjectStatus.INACTIVE,
|
||||
category: ProjectCategory.DEVTOOLS,
|
||||
section: "archived",
|
||||
section: 'archived',
|
||||
content,
|
||||
tags: {
|
||||
keywords: ["social", "reputation"],
|
||||
keywords: ['social', 'reputation'],
|
||||
},
|
||||
links: {
|
||||
website: "https://docs.interep.link/",
|
||||
github: "https://github.com/interep-project",
|
||||
youtube: "https://www.youtube.com/watch?v=dYKgHkb_aqk",
|
||||
website: 'https://docs.interep.link/',
|
||||
github: 'https://github.com/interep-project',
|
||||
youtube: 'https://www.youtube.com/watch?v=dYKgHkb_aqk',
|
||||
},
|
||||
extraLinks: {
|
||||
learn: [
|
||||
{
|
||||
label: "Interep: An on-ramp for reputation",
|
||||
url: "https://mirror.xyz/privacy-scaling-explorations.eth/w7zCHj0xoxIfhoJIxI-ZeYIXwvNatP1t4w0TsqSIBe4",
|
||||
label: 'Interep: An on-ramp for reputation',
|
||||
url: 'https://mirror.xyz/privacy-scaling-explorations.eth/w7zCHj0xoxIfhoJIxI-ZeYIXwvNatP1t4w0TsqSIBe4',
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
import { ProjectInterface, ProjectStatus } from '@/lib/types'
|
||||
import { ProjectCategory, ProjectInterface, ProjectStatus } from '@/lib/types'
|
||||
|
||||
export const machinaIo: ProjectInterface = {
|
||||
id: 'machina_io',
|
||||
id: 'machina-io',
|
||||
image: '',
|
||||
name: 'MachinaIO',
|
||||
section: 'pse',
|
||||
projectStatus: ProjectStatus.ACTIVE,
|
||||
category: ProjectCategory.RESEARCH,
|
||||
content: {
|
||||
en: {
|
||||
tldr: 'Building the first practical indistinguishability obfuscation (iO) system for secure and scalable cryptographic applications.',
|
||||
|
||||
@@ -3,37 +3,38 @@ import {
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from "@/lib/types"
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "OpenPassport lets you check a passport is valid in zero-knowledge",
|
||||
description: `OpenPassport is developing tools to let users generate proofs of humanity, nationality and age using their government-issued passport. It unlocks uses cases in proof of unique identity, sybil resistance and selective disclosure of private data.`,
|
||||
tldr: 'OpenPassport lets you check a passport is valid in zero-knowledge',
|
||||
description:
|
||||
'OpenPassport is developing tools to let users generate proofs of humanity, nationality and age using their government-issued passport. It unlocks uses cases in proof of unique identity, sybil resistance and selective disclosure of private data.',
|
||||
},
|
||||
}
|
||||
|
||||
export const OpenPassport: ProjectInterface = {
|
||||
id: "openpassport",
|
||||
id: 'openpassport',
|
||||
category: ProjectCategory.APPLICATION,
|
||||
projectStatus: ProjectStatus.ACTIVE,
|
||||
section: "grant",
|
||||
section: 'grant',
|
||||
content,
|
||||
image: "openpassport.jpg",
|
||||
name: "OpenPassport",
|
||||
image: 'openpassport.jpg',
|
||||
name: 'OpenPassport',
|
||||
links: {
|
||||
github: "https://github.com/zk-passport/openpassport",
|
||||
website: "https://openpassport.app",
|
||||
twitter: "https://x.com/openpassportapp",
|
||||
telegram: "https://t.me/openpassport",
|
||||
github: 'https://github.com/zk-passport/openpassport',
|
||||
website: 'https://openpassport.app',
|
||||
twitter: 'https://x.com/openpassportapp',
|
||||
telegram: 'https://t.me/openpassport',
|
||||
},
|
||||
tags: {
|
||||
keywords: [
|
||||
"Passports",
|
||||
"Identity",
|
||||
"Anonymity/privacy",
|
||||
"Signatures",
|
||||
"Social",
|
||||
'Passports',
|
||||
'Identity',
|
||||
'Anonymity/privacy',
|
||||
'Signatures',
|
||||
'Social',
|
||||
],
|
||||
builtWith: ["circom", "snarkjs"],
|
||||
builtWith: ['circom', 'snarkjs'],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -8,7 +8,8 @@ import {
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: 'Smart contract wallet enabling transactions through familiar flows like touchID, faceID, WebAuth, and Passkeys.',
|
||||
description: `P256 is an ERC-4337 smart contract wallet that leverages zk-SNARKs for WebAuthn and P-256 signature verification. It aims to simplify Ethereum transactions by incorporating familiar authentication methods like touchID and faceID. The project addresses the challenges of seed phrase management and leverages the biometric capabilities of billions of cellphones to create a more user-friendly crypto experience. Technically, it is an end-to-end ERC-4337 smart contract wallet that verifies ZK proofs of Passkey signatures using the Halo2 proving system.`,
|
||||
description:
|
||||
'P256 is an ERC-4337 smart contract wallet that leverages zk-SNARKs for WebAuthn and P-256 signature verification. It aims to simplify Ethereum transactions by incorporating familiar authentication methods like touchID and faceID. The project addresses the challenges of seed phrase management and leverages the biometric capabilities of billions of cellphones to create a more user-friendly crypto experience. Technically, it is an end-to-end ERC-4337 smart contract wallet that verifies ZK proofs of Passkey signatures using the Halo2 proving system.',
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
import { ProjectInterface, ProjectStatus } from '@/lib/types'
|
||||
import { ProjectCategory, ProjectInterface, ProjectStatus } from '@/lib/types'
|
||||
|
||||
export const plasmaFold: ProjectInterface = {
|
||||
id: 'plasma_fold',
|
||||
id: 'plasma-fold',
|
||||
image: '',
|
||||
name: 'Plasma Fold',
|
||||
section: 'pse',
|
||||
projectStatus: ProjectStatus.ACTIVE,
|
||||
category: ProjectCategory.RESEARCH,
|
||||
content: {
|
||||
en: {
|
||||
tldr: 'Integrating folding schemes into plasma-based L2 solutions for efficient and scalable Ethereum transactions.',
|
||||
@@ -16,10 +17,10 @@ Our project builds on the external [intmax](https://www.intmax.io/) design by in
|
||||
|
||||
### Overview & Key Contributions
|
||||
|
||||
By combining plasma’s efficient data availability with folding schemes, our approach significantly reduces the resource demands on client devices. This integration:
|
||||
By combining plasma's efficient data availability with folding schemes, our approach significantly reduces the resource demands on client devices. This integration:
|
||||
|
||||
- **Optimizes Client-Side Proving:** Folding schemes accelerate proof generation while cutting down memory requirements, making the system more accessible.
|
||||
- **Maintains a Low On-Chain Footprint:** Leveraging plasma’s lightweight data posting for deposits, withdrawals, and checkpoints ensures fast, secure transaction processing.
|
||||
- **Maintains a Low On-Chain Footprint:** Leveraging plasma's lightweight data posting for deposits, withdrawals, and checkpoints ensures fast, secure transaction processing.
|
||||
- **Boosts Throughput:** The synergy between folding schemes and plasma validity proofs could dramatically enhance transaction-per-second rates.
|
||||
|
||||
### Objectives & Impact
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import { ProjectInterface, ProjectStatus } from '@/lib/types'
|
||||
import { ProjectCategory, ProjectInterface, ProjectStatus } from '@/lib/types'
|
||||
|
||||
export const postQuantumCryptography: ProjectInterface = {
|
||||
id: 'post_quantum_cryptography',
|
||||
id: 'post-quantum-cryptography',
|
||||
image: '',
|
||||
name: 'Post-Quantum Cryptography and Ethereum',
|
||||
category: ProjectCategory.RESEARCH,
|
||||
section: 'pse',
|
||||
projectStatus: ProjectStatus.ACTIVE,
|
||||
content: {
|
||||
@@ -14,13 +15,13 @@ Post-quantum cryptography (PQC) is crucial for securing digital communication ag
|
||||
|
||||
### The Importance of PQC for Ethereum
|
||||
|
||||
PQC is especially important for Ethereum, which relies on cryptographic security for transactions, smart contracts, and consensus mechanisms. Ethereum primarily uses elliptic curve cryptography (ECC) for digital signatures (via ECDSA and BLS), which quantum computers could break using Shor’s algorithm. If large-scale quantum computers become practical, attackers could:
|
||||
PQC is especially important for Ethereum, which relies on cryptographic security for transactions, smart contracts, and consensus mechanisms. Ethereum primarily uses elliptic curve cryptography (ECC) for digital signatures (via ECDSA and BLS), which quantum computers could break using Shor's algorithm. If large-scale quantum computers become practical, attackers could:
|
||||
|
||||
- Forge signatures
|
||||
- Steal funds
|
||||
- Undermine the integrity of the network
|
||||
|
||||
Additionally, many Ethereum accounts use externally owned addresses (EOAs) derived from public keys, making them particularly vulnerable to quantum attacks once those public keys are revealed on-chain. This highlights the urgency of transitioning Ethereum’s cryptographic foundations to quantum-resistant alternatives.
|
||||
Additionally, many Ethereum accounts use externally owned addresses (EOAs) derived from public keys, making them particularly vulnerable to quantum attacks once those public keys are revealed on-chain. This highlights the urgency of transitioning Ethereum's cryptographic foundations to quantum-resistant alternatives.
|
||||
|
||||
Moreover, smart contract platforms need to support post-quantum-friendly cryptographic primitives for zero-knowledge proofs and rollups, which are essential for Ethereum scaling.
|
||||
|
||||
|
||||
@@ -3,36 +3,37 @@ import {
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from "@/lib/types"
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "Proactively securing Ethereum's L2 and ZK ecosystems.",
|
||||
description: `PSE Security is a division of the Privacy & Scaling Explorations team at the Ethereum Foundation. Its primary goal is to identify and rectify bugs, thereby enhancing the security of the Ethereum Layer 2 and Zero-Knowledge ecosystems. Recognizing the potential for critical bugs to cause significant setbacks, PSE Security is committed to preemptively addressing these issues. The team offers open-source projects like the ZK Bug Tracker and Bridge Bug Tracker, which track real bugs and exploits in production code, and encourages community contributions. PSE Security also conducts manual audits and plans to help teach the community more about security and ways they can prevent bugs themselves.`,
|
||||
description:
|
||||
'PSE Security is a division of the Privacy & Scaling Explorations team at the Ethereum Foundation. Its primary goal is to identify and rectify bugs, thereby enhancing the security of the Ethereum Layer 2 and Zero-Knowledge ecosystems. Recognizing the potential for critical bugs to cause significant setbacks, PSE Security is committed to preemptively addressing these issues. The team offers open-source projects like the ZK Bug Tracker and Bridge Bug Tracker, which track real bugs and exploits in production code, and encourages community contributions. PSE Security also conducts manual audits and plans to help teach the community more about security and ways they can prevent bugs themselves.',
|
||||
},
|
||||
}
|
||||
|
||||
export const pseSecurity: ProjectInterface = {
|
||||
id: "pse-security",
|
||||
id: 'pse-security',
|
||||
projectStatus: ProjectStatus.INACTIVE,
|
||||
category: ProjectCategory.RESEARCH,
|
||||
section: "pse",
|
||||
section: 'pse',
|
||||
content,
|
||||
image: "pse-security.png",
|
||||
name: "PSE Security",
|
||||
image: 'pse-security.png',
|
||||
name: 'PSE Security',
|
||||
links: {
|
||||
github: "https://github.com/privacy-scaling-explorations/security",
|
||||
github: 'https://github.com/privacy-scaling-explorations/security',
|
||||
},
|
||||
tags: {
|
||||
keywords: [
|
||||
"Anonymity/privacy",
|
||||
"Education",
|
||||
"Key management",
|
||||
"Scaling",
|
||||
"Security",
|
||||
'Anonymity/privacy',
|
||||
'Education',
|
||||
'Key management',
|
||||
'Scaling',
|
||||
'Security',
|
||||
],
|
||||
themes: ["build"],
|
||||
types: ["Legos/dev tools"],
|
||||
builtWith: ["slither", "ecne", "circomspect", "echidna"],
|
||||
themes: ['build'],
|
||||
types: ['Legos/dev tools'],
|
||||
builtWith: ['slither', 'ecne', 'circomspect', 'echidna'],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -3,33 +3,33 @@ import {
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from "@/lib/types"
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "A protocol for deterring spam and maintaining anonymity in communication systems.",
|
||||
tldr: 'A protocol for deterring spam and maintaining anonymity in communication systems.',
|
||||
description: `
|
||||
Rate-Limiting Nullifier (RLN) is a protocol designed to combat spam and denial of service attacks in privacy-preserving environments. It allows users in an anonymous system to penalize those who exceed the rate limit, either by withdrawing the offender's stake or revealing their secrets. This mechanism helps maintain system integrity and deters abuse. RLN is built on the Semaphore protocol and uses zero-knowledge proofs and the Shamir’s Secret Sharing scheme to reveal the spammer's private key. It's particularly useful for developers working on communication systems that require privacy and anonymity, such as chat apps, client-server communications, and peer-to-peer communications. It's already being used in projects like Zerokit and Waku, and is also being developed for use with the KZG polynomial commitment scheme.
|
||||
Rate-Limiting Nullifier (RLN) is a protocol designed to combat spam and denial of service attacks in privacy-preserving environments. It allows users in an anonymous system to penalize those who exceed the rate limit, either by withdrawing the offender's stake or revealing their secrets. This mechanism helps maintain system integrity and deters abuse. RLN is built on the Semaphore protocol and uses zero-knowledge proofs and the Shamir's Secret Sharing scheme to reveal the spammer's private key. It's particularly useful for developers working on communication systems that require privacy and anonymity, such as chat apps, client-server communications, and peer-to-peer communications. It's already being used in projects like Zerokit and Waku, and is also being developed for use with the KZG polynomial commitment scheme.
|
||||
`,
|
||||
},
|
||||
}
|
||||
|
||||
export const rln: ProjectInterface = {
|
||||
id: "rln",
|
||||
id: 'rln',
|
||||
content,
|
||||
projectStatus: ProjectStatus.INACTIVE,
|
||||
category: ProjectCategory.DEVTOOLS,
|
||||
section: "pse",
|
||||
image: "rln.svg",
|
||||
name: "Rate-Limiting Nullifier",
|
||||
section: 'pse',
|
||||
image: 'rln.svg',
|
||||
name: 'Rate-Limiting Nullifier',
|
||||
links: {
|
||||
github: "https://github.com/Rate-Limiting-Nullifier/circom-rln",
|
||||
website: "https://rate-limiting-nullifier.github.io/rln-docs/",
|
||||
github: 'https://github.com/Rate-Limiting-Nullifier/circom-rln',
|
||||
website: 'https://rate-limiting-nullifier.github.io/rln-docs/',
|
||||
},
|
||||
tags: {
|
||||
keywords: ["Anonymity/privacy"],
|
||||
themes: ["build"],
|
||||
types: ["Infrastructure/protocol"],
|
||||
builtWith: ["circom", "solidity", "semaphore"],
|
||||
keywords: ['Anonymity/privacy'],
|
||||
themes: ['build'],
|
||||
types: ['Infrastructure/protocol'],
|
||||
builtWith: ['circom', 'solidity', 'semaphore'],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -3,37 +3,38 @@ import {
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from "@/lib/types"
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "Protocol enabling centralized exchanges to prove solvency without compromising private information.",
|
||||
description: `Summa allows centralized exchanges to demonstrate that their assets exceed their liabilities without revealing critical business information such as individual user balances, total number of users, and total liabilities or assets. It uses zero-knowledge proofs to ensure that exchanges can demonstrate they have sufficient assets to cover all user balances. The protocol involves building a Merkle Sum Tree of user balances, generating proofs for each user, and allowing users to verify these proofs.`,
|
||||
tldr: 'Protocol enabling centralized exchanges to prove solvency without compromising private information.',
|
||||
description:
|
||||
'Summa allows centralized exchanges to demonstrate that their assets exceed their liabilities without revealing critical business information such as individual user balances, total number of users, and total liabilities or assets. It uses zero-knowledge proofs to ensure that exchanges can demonstrate they have sufficient assets to cover all user balances. The protocol involves building a Merkle Sum Tree of user balances, generating proofs for each user, and allowing users to verify these proofs.',
|
||||
},
|
||||
}
|
||||
|
||||
export const summa: ProjectInterface = {
|
||||
id: "summa",
|
||||
id: 'summa',
|
||||
projectStatus: ProjectStatus.INACTIVE,
|
||||
category: ProjectCategory.DEVTOOLS,
|
||||
section: "pse",
|
||||
section: 'pse',
|
||||
content,
|
||||
image: "summa.svg",
|
||||
name: "Summa",
|
||||
image: 'summa.svg',
|
||||
name: 'Summa',
|
||||
links: {
|
||||
github: "https://github.com/summa-dev",
|
||||
github: 'https://github.com/summa-dev',
|
||||
},
|
||||
tags: {
|
||||
keywords: ["Anonymity/privacy", "Computational Integrity"],
|
||||
themes: ["build", "play"],
|
||||
types: ["Infrastructure/protocol", "Application"],
|
||||
builtWith: ["halo2"],
|
||||
keywords: ['Anonymity/privacy', 'Computational Integrity'],
|
||||
themes: ['build', 'play'],
|
||||
types: ['Infrastructure/protocol', 'Application'],
|
||||
builtWith: ['halo2'],
|
||||
},
|
||||
extraLinks: {
|
||||
learn: [
|
||||
{
|
||||
label: "Documentation",
|
||||
url: "https://summa.gitbook.io/summa",
|
||||
label: 'Documentation',
|
||||
url: 'https://summa.gitbook.io/summa',
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { ProjectInterface, ProjectStatus } from '@/lib/types'
|
||||
import { ProjectCategory, ProjectInterface, ProjectStatus } from '@/lib/types'
|
||||
|
||||
export const vOPRF: ProjectInterface = {
|
||||
id: 'vOPRF',
|
||||
@@ -6,8 +6,9 @@ export const vOPRF: ProjectInterface = {
|
||||
name: 'Web2-ID Nullifiers using vOPRF',
|
||||
section: 'pse',
|
||||
projectStatus: ProjectStatus.ACTIVE,
|
||||
category: ProjectCategory.RESEARCH,
|
||||
links: {
|
||||
github: "https://github.com/privacy-scaling-explorations/vOPRF-ID/",
|
||||
github: 'https://github.com/privacy-scaling-explorations/vOPRF-ID/',
|
||||
},
|
||||
content: {
|
||||
en: {
|
||||
|
||||
@@ -3,32 +3,33 @@ import {
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from "@/lib/types"
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "From Individual Actions to Collective Impact, Every Voice Makes a Difference",
|
||||
description: `VoiceDeck isn't just a platform; it's a movement. By enabling citizens to fund journalism that makes a real difference, we're crafting a narrative where every contribution paints a stroke on the canvas of our collective future. Join us to foster a legacy where journalism is powered by the very communities it serves.`,
|
||||
tldr: 'From Individual Actions to Collective Impact, Every Voice Makes a Difference',
|
||||
description:
|
||||
"VoiceDeck isn't just a platform; it's a movement. By enabling citizens to fund journalism that makes a real difference, we're crafting a narrative where every contribution paints a stroke on the canvas of our collective future. Join us to foster a legacy where journalism is powered by the very communities it serves.",
|
||||
},
|
||||
}
|
||||
|
||||
export const voicedeck: ProjectInterface = {
|
||||
id: "voice-deck",
|
||||
id: 'voice-deck',
|
||||
projectStatus: ProjectStatus.INACTIVE,
|
||||
category: ProjectCategory.APPLICATION,
|
||||
section: "collaboration",
|
||||
section: 'collaboration',
|
||||
content,
|
||||
image: "voiceDeck.svg",
|
||||
name: "VoiceDeck",
|
||||
image: 'voiceDeck.svg',
|
||||
name: 'VoiceDeck',
|
||||
links: {
|
||||
github: "https://github.com/VoiceDeck",
|
||||
website: "https://voicedeck.org/",
|
||||
twitter: "https://twitter.com/VoiceDeckDAO",
|
||||
github: 'https://github.com/VoiceDeck',
|
||||
website: 'https://voicedeck.org/',
|
||||
twitter: 'https://twitter.com/VoiceDeckDAO',
|
||||
},
|
||||
tags: {
|
||||
keywords: ["Public goods"],
|
||||
themes: ["play"],
|
||||
types: ["Application"],
|
||||
builtWith: ["anonAadhaar", "Hypercerts"],
|
||||
keywords: ['Public goods'],
|
||||
themes: ['play'],
|
||||
types: ['Application'],
|
||||
builtWith: ['anonAadhaar', 'Hypercerts'],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -3,27 +3,28 @@ import {
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from "@/lib/types"
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "Fostering SSI with zero-knowledge and privacy-driven solutions.",
|
||||
description: `ZK-ID is a dedicated team committed to advancing self-sovereign identity (SSI) technologies and driving privacy-focused solutions in the digital identity space, utilizing the PSE team's expertise in zero-knowledge technologies`,
|
||||
tldr: 'Fostering SSI with zero-knowledge and privacy-driven solutions.',
|
||||
description:
|
||||
"ZK-ID is a dedicated team committed to advancing self-sovereign identity (SSI) technologies and driving privacy-focused solutions in the digital identity space, utilizing the PSE team's expertise in zero-knowledge technologies",
|
||||
},
|
||||
}
|
||||
|
||||
export const zkID: ProjectInterface = {
|
||||
id: "zk-id",
|
||||
id: 'zk-id',
|
||||
projectStatus: ProjectStatus.ACTIVE,
|
||||
category: ProjectCategory.RESEARCH,
|
||||
section: "pse",
|
||||
section: 'pse',
|
||||
content,
|
||||
image: "",
|
||||
imageAlt: "ZK Identity Explorations",
|
||||
name: "ZK-ID",
|
||||
image: '',
|
||||
imageAlt: 'ZK Identity Explorations',
|
||||
name: 'ZK-ID',
|
||||
tags: {
|
||||
keywords: ["Identity", "Credentials", "Standards", "SSI"],
|
||||
themes: ["research"],
|
||||
types: ["Legos/dev tools", "Lego sets/toolkits"],
|
||||
keywords: ['Identity', 'Credentials', 'Standards', 'SSI'],
|
||||
themes: ['research'],
|
||||
types: ['Legos/dev tools', 'Lego sets/toolkits'],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@ import {
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from "@/lib/types"
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "The ZK Security Framework is a comprehensive repository that provides in-depth knowledge on zero-knowledge proof (ZKP) vulnerabilities, classifications, and defense strategies. It focuses on identifying and addressing security risks in ZKP protocols, offering resources for auditing and improving ZKP implementations.",
|
||||
tldr: 'The ZK Security Framework is a comprehensive repository that provides in-depth knowledge on zero-knowledge proof (ZKP) vulnerabilities, classifications, and defense strategies. It focuses on identifying and addressing security risks in ZKP protocols, offering resources for auditing and improving ZKP implementations.',
|
||||
description: `
|
||||
### Overview
|
||||
|
||||
@@ -24,36 +24,36 @@ The ZK Security Framework provides a meticulous classification of vulnerabilitie
|
||||
|
||||
### Audit Database
|
||||
|
||||
The framework’s vulnerability classification includes detailed descriptions of risk levels and provides specific mitigation strategies for each type. It helps developers systematically approach the task of securing ZKP implementations, ranging from simple audit checks to more advanced defenses.
|
||||
The framework's vulnerability classification includes detailed descriptions of risk levels and provides specific mitigation strategies for each type. It helps developers systematically approach the task of securing ZKP implementations, ranging from simple audit checks to more advanced defenses.
|
||||
`,
|
||||
},
|
||||
}
|
||||
|
||||
export const ZKSecurityFramework: ProjectInterface = {
|
||||
id: "zk-security-framework",
|
||||
id: 'zk-security-framework',
|
||||
category: ProjectCategory.RESEARCH,
|
||||
section: "pse",
|
||||
section: 'pse',
|
||||
content,
|
||||
projectStatus: ProjectStatus.ACTIVE,
|
||||
image: "zk-security-framework.png",
|
||||
license: "MIT",
|
||||
name: "ZK Security Framework",
|
||||
image: 'zk-security-framework.png',
|
||||
license: 'MIT',
|
||||
name: 'ZK Security Framework',
|
||||
links: {
|
||||
website: "https://zerobase.pro/",
|
||||
github: "https://github.com/Salusec/zksecurity-framework",
|
||||
twitter: "https://x.com/zerobasezk",
|
||||
website: 'https://zerobase.pro/',
|
||||
github: 'https://github.com/Salusec/zksecurity-framework',
|
||||
twitter: 'https://x.com/zerobasezk',
|
||||
},
|
||||
tags: {
|
||||
keywords: ["Anonymity/privacy", "Security", "Audit", "Education"],
|
||||
themes: ["play"],
|
||||
types: ["Legos/dev tools"],
|
||||
builtWith: ["circom", "gnark", "halo2", "rust"],
|
||||
keywords: ['Anonymity/privacy', 'Security', 'Audit', 'Education'],
|
||||
themes: ['play'],
|
||||
types: ['Legos/dev tools'],
|
||||
builtWith: ['circom', 'gnark', 'halo2', 'rust'],
|
||||
},
|
||||
extraLinks: {
|
||||
play: [
|
||||
{
|
||||
label: "ZK Security Framework",
|
||||
url: "https://github.com/Salusec/zksecurity-framework",
|
||||
label: 'ZK Security Framework',
|
||||
url: 'https://github.com/Salusec/zksecurity-framework',
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
@@ -3,30 +3,31 @@ import {
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from "@/lib/types"
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "A zero-knowledge proof mechanism for Ethereum block verification.",
|
||||
description: `zkEVM Community Edition is a project aimed at validating Ethereum blocks using zero-knowledge proofs. It is designed to be fully compatible with Ethereum's EVM and serves two primary goals. First, it enables the creation of a layer 2 network (zkRollup) compatible with the Ethereum ecosystem, which uses zero-knowledge proofs to validate blocks, thus enhancing scalability. Second, it allows the generation of zero-knowledge proofs for blocks from the existing layer 1 Ethereum network, enabling light clients to quickly synchronize many blocks with low resource consumption while ensuring block correctness without needing trust in external parties.`,
|
||||
tldr: 'A zero-knowledge proof mechanism for Ethereum block verification.',
|
||||
description:
|
||||
"zkEVM Community Edition is a project aimed at validating Ethereum blocks using zero-knowledge proofs. It is designed to be fully compatible with Ethereum's EVM and serves two primary goals. First, it enables the creation of a layer 2 network (zkRollup) compatible with the Ethereum ecosystem, which uses zero-knowledge proofs to validate blocks, thus enhancing scalability. Second, it allows the generation of zero-knowledge proofs for blocks from the existing layer 1 Ethereum network, enabling light clients to quickly synchronize many blocks with low resource consumption while ensuring block correctness without needing trust in external parties.",
|
||||
},
|
||||
}
|
||||
|
||||
export const zkevmCommunity: ProjectInterface = {
|
||||
id: "zkevm-community",
|
||||
id: 'zkevm-community',
|
||||
projectStatus: ProjectStatus.INACTIVE,
|
||||
category: ProjectCategory.DEVTOOLS,
|
||||
section: "pse",
|
||||
section: 'pse',
|
||||
content,
|
||||
image: "zkevm.jpg",
|
||||
name: "zkEVM Community Edition",
|
||||
image: 'zkevm.jpg',
|
||||
name: 'zkEVM Community Edition',
|
||||
links: {
|
||||
github: "https://github.com/privacy-scaling-explorations/zkevm-circuits",
|
||||
github: 'https://github.com/privacy-scaling-explorations/zkevm-circuits',
|
||||
},
|
||||
tags: {
|
||||
keywords: ["Scaling"],
|
||||
themes: ["build"],
|
||||
types: ["Infrastructure/protocol", "Lego sets/toolkits"],
|
||||
builtWith: ["halo2", "rust", "geth"],
|
||||
keywords: ['Scaling'],
|
||||
themes: ['build'],
|
||||
types: ['Infrastructure/protocol', 'Lego sets/toolkits'],
|
||||
builtWith: ['halo2', 'rust', 'geth'],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -8,7 +8,8 @@ import {
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: 'ZKML (Zero-Knowledge Machine Learning) leverages zero-knowledge proofs for privacy-preserving machine learning, enabling model and data privacy with transparent verification.',
|
||||
description: `ZKML is a solution that combines the power of zero-knowledge proofs (ZKPs) and machine learning to address the privacy concerns in traditional machine learning. It provides a platform for machine learning developers to convert their TensorFlow Keras models into ZK-compatible versions, ensuring model privacy, data privacy, and transparent verification. ZKML can be used to verify if a specific machine learning model was used to generate a particular piece of content, without revealing the input or the model used. It has potential use cases in on-chain biometric authentication, private data marketplace, proprietary ML model sharing, and AIGC NFTs.`,
|
||||
description:
|
||||
'ZKML is a solution that combines the power of zero-knowledge proofs (ZKPs) and machine learning to address the privacy concerns in traditional machine learning. It provides a platform for machine learning developers to convert their TensorFlow Keras models into ZK-compatible versions, ensuring model privacy, data privacy, and transparent verification. ZKML can be used to verify if a specific machine learning model was used to generate a particular piece of content, without revealing the input or the model used. It has potential use cases in on-chain biometric authentication, private data marketplace, proprietary ML model sharing, and AIGC NFTs.',
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -3,41 +3,42 @@ import {
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from "@/lib/types"
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "Optimistic Rollup with zk-SNARKs for private Ethereum transactions.",
|
||||
description: `ZKOPRU is one of the initial projects of EF's PSE team. It is a Layer 2 scaling solution for Ethereum, emphasizing private transactions through zk-SNARKs and optimistic rollups. It provides an economical Ethereum privacy wallet, enabling users to transact with ETH, ERC-20s, and NFTs anonymously`,
|
||||
tldr: 'Optimistic Rollup with zk-SNARKs for private Ethereum transactions.',
|
||||
description:
|
||||
"ZKOPRU is one of the initial projects of EF's PSE team. It is a Layer 2 scaling solution for Ethereum, emphasizing private transactions through zk-SNARKs and optimistic rollups. It provides an economical Ethereum privacy wallet, enabling users to transact with ETH, ERC-20s, and NFTs anonymously",
|
||||
},
|
||||
}
|
||||
|
||||
export const Zkopru: ProjectInterface = {
|
||||
id: "zkopru",
|
||||
image: "zkopru.svg",
|
||||
name: "ZKOPRU",
|
||||
id: 'zkopru',
|
||||
image: 'zkopru.svg',
|
||||
name: 'ZKOPRU',
|
||||
projectStatus: ProjectStatus.INACTIVE,
|
||||
category: ProjectCategory.DEVTOOLS,
|
||||
section: "archived",
|
||||
section: 'archived',
|
||||
content,
|
||||
links: {
|
||||
website: "https://zkopru.network/",
|
||||
github: "https://github.com/zkopru-network",
|
||||
youtube: "https://www.youtube.com/watch?v=GvRsJxu9X6w",
|
||||
website: 'https://zkopru.network/',
|
||||
github: 'https://github.com/zkopru-network',
|
||||
youtube: 'https://www.youtube.com/watch?v=GvRsJxu9X6w',
|
||||
},
|
||||
extraLinks: {
|
||||
learn: [
|
||||
{
|
||||
label: "ZKOPRU: Wat, Y & Wen",
|
||||
url: "https://mirror.xyz/privacy-scaling-explorations.eth/kfuuBPtGtDjl_J2wBq-jrtyURGLmQpUhZfDTuZChEy8",
|
||||
label: 'ZKOPRU: Wat, Y & Wen',
|
||||
url: 'https://mirror.xyz/privacy-scaling-explorations.eth/kfuuBPtGtDjl_J2wBq-jrtyURGLmQpUhZfDTuZChEy8',
|
||||
},
|
||||
{
|
||||
label: "ZKOPRU on Testnet",
|
||||
url: "https://mirror.xyz/privacy-scaling-explorations.eth/EB0KcMY0k9ucN8iQSBeOYksoupDYRBQ4ZffhRt477FE",
|
||||
label: 'ZKOPRU on Testnet',
|
||||
url: 'https://mirror.xyz/privacy-scaling-explorations.eth/EB0KcMY0k9ucN8iQSBeOYksoupDYRBQ4ZffhRt477FE',
|
||||
},
|
||||
],
|
||||
},
|
||||
tags: {
|
||||
keywords: ["anonymity/privacy", "private transactions"],
|
||||
keywords: ['anonymity/privacy', 'private transactions'],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -3,32 +3,33 @@ import {
|
||||
ProjectContent,
|
||||
ProjectInterface,
|
||||
ProjectStatus,
|
||||
} from "@/lib/types"
|
||||
} from '@/lib/types'
|
||||
|
||||
const content: ProjectContent = {
|
||||
en: {
|
||||
tldr: "Instant fiat to crypto onramp connecting traditional peer-to-peer payment services with zero-knowledge proofs.",
|
||||
description: `ZKP2P is for defi consumers looking to onramp assets on chain quickly without going through a CEX as an intermediary. ZKP2P generates a privacy-preserving proof of payment between two users on existing payment rails like Venmo or Paypal and uses said proof to unlock escrowed digital assets on-chain.`,
|
||||
tldr: 'Instant fiat to crypto onramp connecting traditional peer-to-peer payment services with zero-knowledge proofs.',
|
||||
description:
|
||||
'ZKP2P is for defi consumers looking to onramp assets on chain quickly without going through a CEX as an intermediary. ZKP2P generates a privacy-preserving proof of payment between two users on existing payment rails like Venmo or Paypal and uses said proof to unlock escrowed digital assets on-chain.',
|
||||
},
|
||||
}
|
||||
|
||||
export const zkp2p: ProjectInterface = {
|
||||
id: "zkp2p",
|
||||
id: 'zkp2p',
|
||||
projectStatus: ProjectStatus.ACTIVE,
|
||||
category: ProjectCategory.APPLICATION,
|
||||
section: "grant",
|
||||
section: 'grant',
|
||||
content,
|
||||
image: "zkp2p.png",
|
||||
name: "ZKP2P",
|
||||
image: 'zkp2p.png',
|
||||
name: 'ZKP2P',
|
||||
links: {
|
||||
github: "https://github.com/zkp2p",
|
||||
website: "https://zkp2p.xyz/",
|
||||
twitter: "https://twitter.com/zkp2p",
|
||||
github: 'https://github.com/zkp2p',
|
||||
website: 'https://zkp2p.xyz/',
|
||||
twitter: 'https://twitter.com/zkp2p',
|
||||
},
|
||||
tags: {
|
||||
keywords: ["Private communications"],
|
||||
themes: ["play"],
|
||||
types: ["Proof of concept", "Application"],
|
||||
builtWith: ["circom", "halo2"],
|
||||
keywords: ['Private communications'],
|
||||
themes: ['play'],
|
||||
types: ['Proof of concept', 'Application'],
|
||||
builtWith: ['circom', 'halo2'],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,23 +1,56 @@
|
||||
import pluginJs from '@eslint/js'
|
||||
import pluginReact from 'eslint-plugin-react'
|
||||
import globals from 'globals'
|
||||
import tseslint from 'typescript-eslint'
|
||||
import pluginJs from "@eslint/js"
|
||||
import pluginReact from "eslint-plugin-react"
|
||||
import tailwindcssPlugin from "eslint-plugin-tailwindcss"
|
||||
import globals from "globals"
|
||||
import tseslint from "typescript-eslint"
|
||||
import { nextEslintPlugin } from "./next.eslint.config.mjs"
|
||||
|
||||
/** @type {import('eslint').Linter.Config[]} */
|
||||
export default [
|
||||
{ files: ['**/*.{js,mjs,cjs,ts,jsx,tsx}'] },
|
||||
{ files: ["**/*.{js,mjs,cjs,ts,jsx,tsx}"] },
|
||||
{ ignores: ["dist/*", ".cache", "public", "node_modules", "*.esm.js", ".next/*"] },
|
||||
{ languageOptions: { globals: globals.browser } },
|
||||
pluginJs.configs.recommended,
|
||||
...tseslint.configs.recommended,
|
||||
pluginReact.configs.flat.recommended,
|
||||
|
||||
// Overrides of recommended rules
|
||||
{
|
||||
plugins: {
|
||||
react: pluginReact,
|
||||
},
|
||||
settings: {
|
||||
react: {
|
||||
version: "detect",
|
||||
},
|
||||
},
|
||||
rules: {
|
||||
...pluginReact.configs.flat.recommended.rules,
|
||||
"react/react-in-jsx-scope": "off",
|
||||
"react/jsx-key": "off",
|
||||
},
|
||||
},
|
||||
nextEslintPlugin,
|
||||
{
|
||||
plugins: {
|
||||
tailwindcss: tailwindcssPlugin,
|
||||
},
|
||||
settings: {
|
||||
tailwindcss: {
|
||||
callees: ["cn"],
|
||||
config: "tailwind.config.js"
|
||||
},
|
||||
next: {
|
||||
rootDir: ["./"]
|
||||
}
|
||||
},
|
||||
rules: {
|
||||
"tailwindcss/no-custom-classname": "off",
|
||||
},
|
||||
},
|
||||
{
|
||||
rules: {
|
||||
'react/react-in-jsx-scope': 'off',
|
||||
'@typescript-eslint/no-explicit-any': 'off',
|
||||
'@typescript-eslint/ban-types': 'off',
|
||||
'@typescript-eslint/no-unused-vars': 'off',
|
||||
"@typescript-eslint/no-explicit-any": "off",
|
||||
"@typescript-eslint/ban-types": "off",
|
||||
"@typescript-eslint/no-unused-vars": "off",
|
||||
"quotes": ["error", "double"],
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
@@ -119,7 +119,7 @@ export interface ProjectInterface {
|
||||
license?: string
|
||||
content: ProjectContent // project tldr and description with support for multiple language
|
||||
category?: ProjectCategory // project category used as filter to replace section
|
||||
section: ProjectSection
|
||||
section: ProjectSection // 'pse', 'grant', 'collaboration', 'archived'
|
||||
image: string
|
||||
previousBrandImage?: string
|
||||
imageAlt?: string
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import nextMdx from "@next/mdx";
|
||||
import path from "path";
|
||||
import { fileURLToPath } from 'url';
|
||||
import { fileURLToPath } from "url";
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
|
||||
const withMDX = nextMdx({
|
||||
webpack: (config, { isServer }) => {
|
||||
if (isServer) {
|
||||
config.resolve.alias['zlib-sync'] = path.resolve(__dirname, 'lib/dummy-zlib-sync.js');
|
||||
config.resolve.alias["zlib-sync"] = path.resolve(__dirname, "lib/dummy-zlib-sync.js");
|
||||
config.externals.push("erlpack");
|
||||
} else {
|
||||
config.externals.push("discord.js", "@discordjs/rest");
|
||||
|
||||
19
next.eslint.config.mjs
Normal file
19
next.eslint.config.mjs
Normal file
@@ -0,0 +1,19 @@
|
||||
import { resolve } from "path"
|
||||
|
||||
export const nextEslintPlugin = {
|
||||
plugins: {
|
||||
"@next/next": {
|
||||
files: ["app/**/*", "components/**/*", "layouts/**/*"],
|
||||
settings: {
|
||||
next: {
|
||||
rootDir: resolve("./"),
|
||||
},
|
||||
},
|
||||
rules: {
|
||||
"@next/next/no-html-link-for-pages": "off",
|
||||
"@next/next/no-img-element": "warn",
|
||||
"@next/next/no-sync-scripts": "error",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
14
package.json
14
package.json
@@ -9,8 +9,8 @@
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
"lint": "next lint",
|
||||
"lint:fix": "next lint --fix",
|
||||
"lint": "eslint .",
|
||||
"lint:fix": "eslint --fix .",
|
||||
"preview": "next build && next start",
|
||||
"typecheck": "tsc --noEmit",
|
||||
"format:write": "prettier --write \"**/*.{ts,tsx,mdx}\" --cache",
|
||||
@@ -40,13 +40,11 @@
|
||||
"i18next-resources-to-backend": "^1.2.0",
|
||||
"lucide-react": "0.105.0-alpha.4",
|
||||
"next": "14",
|
||||
"next-themes": "^0.2.1",
|
||||
"nodemon": "^3.0.3",
|
||||
"react": "^18.2.0",
|
||||
"react-cookie": "^7.0.1",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-i18next": "^14.0.0",
|
||||
"react-icons": "^5.3.0",
|
||||
"react-markdown": "^8.0.7",
|
||||
"react-slick": "^0.30.3",
|
||||
"react-use": "^17.4.0",
|
||||
@@ -60,6 +58,7 @@
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.19.0",
|
||||
"@ianvs/prettier-plugin-sort-imports": "^3.7.2",
|
||||
"@next/eslint-plugin-next": "^15.2.2",
|
||||
"@types/node": "^17.0.45",
|
||||
"@types/react": "^18.2.7",
|
||||
"@types/react-dom": "^18.2.4",
|
||||
@@ -67,10 +66,10 @@
|
||||
"@typescript-eslint/parser": "^5.59.7",
|
||||
"autoprefixer": "^10.4.14",
|
||||
"eslint": "^9.19.0",
|
||||
"eslint-config-next": "13.0.0",
|
||||
"eslint-config-next": "^15.2.2",
|
||||
"eslint-config-prettier": "^8.8.0",
|
||||
"eslint-plugin-react": "^7.37.4",
|
||||
"eslint-plugin-tailwindcss": "^3.12.0",
|
||||
"eslint-plugin-tailwindcss": "^3.18.0",
|
||||
"globals": "^15.14.0",
|
||||
"husky": "^9.1.7",
|
||||
"lint-staged": "^15.4.3",
|
||||
@@ -89,5 +88,6 @@
|
||||
"prettier --write"
|
||||
]
|
||||
},
|
||||
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
|
||||
"packageManager": "yarn@4.7.0",
|
||||
"engineStrict": true
|
||||
}
|
||||
|
||||
@@ -93,8 +93,8 @@ module.exports = {
|
||||
},
|
||||
},
|
||||
borderRadius: {
|
||||
lg: `var(--radius)`,
|
||||
md: `calc(var(--radius) - 2px)`,
|
||||
lg: 'var(--radius)',
|
||||
md: 'calc(var(--radius) - 2px)',
|
||||
sm: 'calc(var(--radius) - 4px)',
|
||||
},
|
||||
fontFamily: {
|
||||
|
||||
Reference in New Issue
Block a user