Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions components/layout/DocsBase.vue
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ if (!page.value) {
throw createError({ statusCode: 404, statusMessage: 'Page not found', fatal: true });
}

console.log('page value found');

const { data: surround } = await useAsyncData(`${route.path}-surround`, () =>
queryContent()
.where({
Expand All @@ -24,6 +26,8 @@ const { data: surround } = await useAsyncData(`${route.path}-surround`, () =>
.findSurround(withoutTrailingSlash(route.path))
);

console.log('surround', surround);

const { seo } = useAppConfig();
useSeoMeta({
title: page.value.title,
Expand All @@ -33,6 +37,8 @@ useSeoMeta({
twitterDescription: page.value.description,
});

console.log('seo', seo);

defineOgImage({
component: 'OgImageZK',
title: page.value.title,
Expand All @@ -49,6 +55,8 @@ const breadcrumb = computed(() => {

return crumbs;
});

console.log('breadcrumb', breadcrumb);
</script>

<template>
Expand Down
42 changes: 21 additions & 21 deletions components/layout/Toc.vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<script setup lang="ts">
import type { ParsedContent } from '@nuxt/content/types';
// import { useRoute } from 'vue-router';
import { useRoute } from 'vue-router';

const { toc } = useAppConfig();

Expand All @@ -9,14 +9,14 @@ const props = defineProps<{
}>();

// calculate the current full URL to use in links below
// const route = useRoute();
// const currentUrl = computed(() => {
// if (import.meta.client) {
// return `${window.location.origin}${route.fullPath}`;
// }
// // Fallback for SSR/CI: just use the path
// return route.fullPath;
// });
const route = useRoute();
const currentUrl = computed(() => {
if (import.meta.client) {
return `${window.location.origin}${route.fullPath}`;
}
// Fallback for SSR/CI: just use the path
return route.fullPath;
});

const links = computed(() =>
[
Expand All @@ -32,18 +32,18 @@ const links = computed(() =>
to: `https://github.com/matter-labs/zksync-docs/issues/new?labels=feedback%2Ctriage&projects=&template=feedback.yml&title=%5BFeedback%5D%3A+&page=https://docs.zksync.io${props.page?._path}`,
target: '_blank',
},
// {
// icon: 'i-heroicons-chat-bubble-left-right',
// label: 'Open in ChatGPT',
// to: `https://chatgpt.com/?q=Read%20${currentUrl.value}%20and%20all%20its%20subpages%20and%20answer%20questions%20about%20the%20content.`,
// target: '_blank',
// },
// {
// icon: 'i-heroicons-chat-bubble-bottom-center-text',
// label: 'Open in Claude',
// to: `https://claude.ai/new?q=Read%20${currentUrl.value}%20and%20all%20its%20subpages%20and%20answer%20questions%20about%20the%20content.`,
// target: '_blank',
// },
{
icon: 'i-heroicons-chat-bubble-left-right',
label: 'Open in ChatGPT',
to: `https://chatgpt.com/?q=Read%20${currentUrl.value}%20and%20all%20its%20subpages%20and%20answer%20questions%20about%20the%20content.`,
target: '_blank',
},
{
icon: 'i-heroicons-chat-bubble-bottom-center-text',
label: 'Open in Claude',
to: `https://claude.ai/new?q=Read%20${currentUrl.value}%20and%20all%20its%20subpages%20and%20answer%20questions%20about%20the%20content.`,
target: '_blank',
},
{
icon: 'i-heroicons-question-mark-circle',
label: 'Get Help',
Expand Down
79 changes: 77 additions & 2 deletions content/10.zk-stack/35.prividium/01.index.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,82 @@
---
title: Overview
description: Learn about ZKsync Prividium.
---

## Test
ZKsync Prividium lets institutions operate a **private**, permissioned blockchain within their own infrastructure or cloud,
while still **anchoring every transaction to Ethereum** for security and finality.

This is a test page.
Sensitive data stays entirely off the public chain, but each state update is verified on Ethereum using zero-knowledge proofs.

This design solves a core challenge in enterprise blockchain adoption:
**how to maintain privacy and control without giving up interoperability with the broader Ethereum ecosystem**.

::centered-container
*Figure: High-level design of ZKsync Prividium*
![ZKsync Prividium architecture diagram](/images/zk-stack/how-prividium-works.png)
::

---

### Key Differentiators of ZKsync Prividium

**Privacy with Control:**
Transaction data remains offchain, so internal details such as trades and balances stay confidential.
Each block is verified on Ethereum using zero-knowledge proofs.
Chain operators can selectively disclose specific data (for example, bytecode or token supply) to auditors or regulators without exposing the full ledger.

**Role-Based Permissioning:**
Prividium introduces a dynamic permissioning system managed through the **Admin Dashboard**, replacing static YAML files.
Administrators can:

- Add and manage users with Okta or crypto-native (SIWE) authentication
- Create roles such as *Trader*, *Auditor*, or *Admin*
- Assign permissions for contracts and functions directly in the UI
- Configure selective disclosure for public endpoints

Access control is enforced by the **Proxy RPC**, which validates user tokens against the **Permissions API** before any on-chain call is executed.

**Built-in Compliance:**
Single sign-on with Okta, address-level identity binding, and fine-grained access policies are integrated out of the box.
Only authenticated and authorized users can interact with the network, enabling compliance with KYC, KYB, and AML requirements from day one.

**Ethereum Anchoring and Interoperability:**
Each batch of transactions is finalized on Ethereum using a validity proof, ensuring tamper-proof integrity and trustless settlement.
Assets and data can move between Ethereum and other public or private ZKsync Chains
using native zero-knowledge-based bridges without external custodians.

**Scalability and Performance:**
As a Validium chain, ZKsync Prividium stores state off-chain, achieving high throughput and low latency.
It supports trading, payments, and settlement use cases that demand both privacy and speed.

---

### What Data Is Public

Only the **state roots** and **zero-knowledge proofs** are posted to Ethereum.
No transaction inputs, addresses, or calldata are visible or inferable from public data.

Selective disclosure can optionally expose verified metrics such as total and circulating token supply, or contract bytecode,
through public read-only endpoints.

Interactions with public networks such as deposits or withdrawals remain visible on the receiving chain,
but all other state data is kept private within the Prividium database.

To learn more about data availability in the ZK Stack, visit the [Validium page](/zk-stack/customizations/validium).

---

### How It Works

ZKsync Prividium enforces privacy and access control using built-in infrastructure within the ZK Stack.

- Users authenticate through **Okta SSO** or **Sign-in With Ethereum (SIWE)**.
- All calls pass through the **Proxy RPC**, which checks the user’s token and permissions against the **Permissions API**.
- Roles and permissions are defined in the **Admin Dashboard**, not static YAML files.
- Access is controlled at the contract-function level, with optional restrictions based on function arguments.
- Auditors and regulators can use **Selective Disclosure** to view approved on-chain data without accessing the private ledger.
- Full RPC and explorer access remain restricted to chain operators and internal systems.

The chain runs as a Validium. It executes transactions privately and stores its state off-chain in a secure database.
Each batch of transactions produces a zero-knowledge proof and a new state root submitted to Ethereum.
This anchors the private chain to Ethereum, ensuring verifiable security and finality without revealing sensitive data.
Loading