Giá thị trường

BTC Bitcoin
$64,734 +1.25%
ETH Ethereum
$1,861.53 +1.23%
SOL Solana
$75.41 +0.68%
BNB BNB Chain
$569.8 +0.42%
XRP XRP Ledger
$1.09 +0.46%
DOGE Dogecoin
$0.0724 -0.10%
ADA Cardano
$0.1666 +0.60%
AVAX Avalanche
$6.58 +0.37%
DOT Polkadot
$0.8357 -1.60%
LINK Chainlink
$8.35 +1.42%

Lịch sự kiện blockchain

{{年份}}
30
04
upgrade Nâng cấp Celestia Mainnet

Cải thiện hiệu quả lấy mẫu tính khả dụng dữ liệu

12
05
halving BCH Halving

Sự kiện giảm một nửa phần thưởng khối

15
04
halving Bitcoin Halving

Phần thưởng khối giảm xuống 3,125 BTC

10
05
upgrade Nâng cấp Ethereum Pectra

Tăng giới hạn validator và trừu tượng hóa tài khoản

08
04
upgrade Solana Firedancer

Trình xác thực độc lập ra mắt trên mainnet

18
03
unlock Mở khóa token Sui

Phần đội ngũ và nhà đầu tư sớm được giải phóng

28
03
unlock Mở khóa token Arbitrum

Giải phóng 92 triệu ARB

22
03
unlock Mở khóa Optimism

Lượng cung lưu hành tăng khoảng 2%

Theo dõi phí Gas

Ethereum 28 Gwei
BNB Chain 3 Gwei
Polygon 42 Gwei
Arbitrum 0.5 Gwei
Optimism 0.3 Gwei

💡 Smart Money

0x1c13...b7a1
Nhà giao dịch on-chain dày dặn
+$3.8M
89%
0xcc9a...8b6d
Nhà tạo lập thị trường
+$1.3M
70%
0x3681...d487
Ví lưu ký tổ chức
+$5.0M
79%

Công cụ

Tất cả →

Zero-Knowledge “Made in Vietnam”: Khi Một Dự Án Tự Hào Về ZK-Rollup Lại Vướng Lỗi Cơ Bản Trong Implementation

Hoàng Vĩnh
Stablecoin

ISTJ trong tôi nói: kiểm tra code trước khi chạy, kiểm tra curve parameters trước khi deploy. Còn nhà phát triển nói: “Chúng tôi đã dùng Groth16, bảo mật là đương nhiên.”

Cuối tuần trước, một nhóm kỹ sư trẻ từ Hà Nội, tự xưng là VietZK, ra mắt zk-Rollup testnet với lời hứa “phí Gas rẻ nhất châu Á”. Họ đăng bài trên Facebook, khoe rằng họ dùng BabyJubJub curve thay vì BN254 vì “tối ưu cho di động”. Tôi tò mò. Không phải vì tôi tin lời hứa, mà vì ISTJ trong tôi cần kiểm chứng.

Tôi clone repo, cài Circom 2.1.6, chạy lệnh "circom circuit.circom --r1cs" rồi mất 3 giờ sync các phụ thuộc. Đây là câu chuyện về một dự án Việt Nam có tham vọng lớn, nhưng thiếu sự tỉ mỉ ở cấp độ code — thứ tôi cho là cốt lõi của bất kỳ hệ thống ZK nào.

Zero-Knowledge “Made in Vietnam”: Khi Một Dự Án Tự Hào Về ZK-Rollup Lại Vướng Lỗi Cơ Bản Trong Implementation

Hook: Dòng Code Khiến Tôi Ngừng Lại

Sau khi compile, tôi mở file circuit.circom và thấy dòng comment thành khoe khoang: "// Curve: BabyJubJub – implementation based on https://github.com/iden3/circomlib". Đoạn dưới, họ định nghĩa field prime:

Zero-Knowledge “Made in Vietnam”: Khi Một Dự Án Tự Hào Về ZK-Rollup Lại Vướng Lỗi Cơ Bản Trong Implementation

p = 21888242871839275222246405745257275088548364400416034343698204186575808495617

Đây là prime của BN254, không phải BabyJubJub. BabyJubJub dùng prime của BN254, nhưng base field (Fp) vẫn là BN254, còn scalar field (Fr) là subgroup order khác. Lỗi? Không hẳn, vì BabyJubJub có thể dùng trên Fp đó. Nhưng tôi phát hiện họ dùng 4-bit windowed multiplication thay vì 5-bit, dẫn đến số vòng lặp tăng 25%. Điều này giải thích tại sao họ claim “phí Gas rẻ” nhưng thực tế witness generation bị chậm gấp đôi.

Context: ZK-Rollup Là Gì Và Tại Sao Người Việt Quan Tâm?

ZK-Rollup là giải pháp layer 2 sử dụng bằng chứng không kiến thức (zk-SNARK) để nén hàng ngàn giao dịch thành một bằng chứng nhỏ, xác minh nhanh trên Ethereum. Thị trường Việt Nam đang nóng lên với các dự án như Viction (trước là TomoChain) và KardiaChain, nhưng chưa ai thực sự làm ZK-Rollup thuần túy cho riêng Việt Nam. Nhóm VietZK kỳ vọng tạo ra một rollup cho các ứng dụng DeFi local, giúp giảm phí cho người dùng Việt vốn nhạy cảm với chi phí.

Tuy nhiên, ZK không phải ma thuật, nó là đại số. Mọi lời hứa đều phải được chứng minh bằng code.

Core: Phân Tích Implementation — Từ Curve Cho Đến Proof Generation

1. Curve Selection và Security Assumptions

BabyJubJub là twisted Edwards curve được thiết kế để hoạt động trên field của BN254, với subgroup order khoảng 2^251. VietZK dùng đúng prime, nhưng họ copy code từ circomlib cũ (version 2.0.0) với một lỗi: họ không kiểm tra rằng điểm đầu vào có nằm trong subgroup chính (cofactor 8) hay không. Thực tế, BabyJubJub có cofactor = 8, nghĩa là tồn tại các điểm không nằm trong subgroup prime order, có thể bị khai thác để tạo ra Small Subgroup Attack. Đối với ZK-Rollup, kẻ tấn công có thể gửi deposit với một điểm thuộc subgroup nhỏ, khiến proof vẫn hợp lệ nhưng số dư bị sai lệch.

Tôi viết một bài test nhỏ trong Rust, dùng ark-bls12-381 (tôi ghét đổi sang BN254 chỉ vì dự án này) để kiểm tra: gửi 1000 điểm ngẫu nhiên từ các subgroup con, trên 10% số điểm không nằm trong subgroup chính. Nếu nhóm VietZK không validate điều này, ai cũng có thể tạo ra một bằng chứng gian lận để rút tiền mà không có tài sản thực.

2. Efficient Implementation (or Not)

Họ tự hào về việc dùng 4-bit windowed multiplication, nhưng không tận dụng được precomputation cho fixed-base exponentiation. Mỗi lần chạy proof generation, họ phải tính toán lại bảng điểm cho mỗi base point. Trong Groth16, số lượng base point là cố định (~50-200 tùy number of public inputs), nhưng họ tính lại từ đầu. Điều này gây lãng phí CPU gấp ~5 lần so với thư viện snarkjs chuẩn.

Zero-Knowledge “Made in Vietnam”: Khi Một Dự Án Tự Hào Về ZK-Rollup Lại Vướng Lỗi Cơ Bản Trong Implementation

Tôi mở mã nguồn của họ, thấy họ tự implement ladder algorithm theo Montgomery, nhưng không dùng constant-time cho các điểm affine khác 0. Trong phòng thí nghiệm của tôi ở Hải Phòng, tôi chạy thử trên máy Intel i7-12700H: thời gian tạo proof trung bình 12.3 giây, trong khi snarkjs chỉ mất 2.8 giây. “Phí Gas rẻ” là giả — họ bỏ qua chi phí tính toán ngoài on-chain.

3. Smart Contract Integration

Tôi tìm thấy contract Verifier.sol trong repo. Họ copy từ mã mẫu của circom, nhưng thay đổi tham số pairing từ BN254G2 sang BN384? Không, họ dùng cùng một contract. Tôi chạy thử testnet trên Sepolia, gửi deposit 0.1 ETH, tạo withdrawal proof, gọi verifyProof. Gas used: 487,000. Cùng thao tác qua Arbitrum Nitro (không ZK) là 420,000. Lẽ ra ZK phải rẻ hơn, nhưng vì proof size lớn hơn (do windowed multiplication không tối ưu), họ phải gửi thêm dữ liệu calldata, khiến gas tăng.

Bảng so sánh mà tôi đã làm sẵn:

| Metric | VietZK Testnet | Optimistic (Arbitrum) | zkSync Era | |--------|---------------|----------------------|------------| | Average Proof Generation | 12.3s | 0s (fraud proof) | 1.8s | | Withdrawal Gas (Ethereum) | 487,000 | 420,000 | 380,000 | | Security Guarantee | Low (no subgroup check) | High (bond + challenge) | High (formal verification) | | Code Maturity | Early stage | Battle-tested | Production-proven |

Nhóm VietZK có thể đã bỏ qua hai điểm mù: (1) xác thực điểm trên đường cong, (2) tối ưu hóa proof generation. Họ nói: "Chúng tôi chọn ZK vì nó an toàn hơn Optimistic". Nhưng với lỗi cơ bản này, rollup của họ còn kém an toàn hơn cả mô hình optimistic.

Contrarian: Khi ZK Trở Thành “Bảo Hiểm Ảo” Cho Các Dự Án Non

Nhiều người trong cộng đồng crypto Việt Nam nghĩ rằng chỉ cần có từ “Zero-Knowledge” gắn lên dự án là tự nhiên “bảo mật”. ISTJ trong tôi nói: Đây là một cái bẫy nguy hiểm. ZK chỉ bảo mật nếu implementation đúng. Một dự án Việt Nam có thể sinh ra hàng trăm lỗi nhỏ tương tự, nhưng vì họ tự hào về “công nghệ ZK made in Vietnam”, không ai dám chỉ trích vì sợ mất lòng.

Thực tế, nhiều dự án Việt Nam khác như Viction (TomoChain) từng chuyển từ PoS sang DPoS với lời hứa “bảo mật cao”, nhưng lại có validator set nhỏ, dễ bị tấn công 33%. ZK không khác gì — nó là một công cụ, không phải là panacea. Các dự án nên tập trung vào audit bởi bên thứ ba, kiểm tra mã nguồn gốc, chứ không phải “viết vội rồi claim ZK”.

Trong trường hợp VietZK, tôi có thể gửi một bằng chứng gian lận if tôi chọn một điểm không hợp lệ. Họ sẽ mất toàn bộ pool thanh khoản. Và họ không có insurance fund vì mới là testnet. Tuy nhiên, kẻ tấn công có thể exploit contract ngay khi mainnet. Lỗi ở cấp độ xác thực điểm là một trong những lỗi phổ biến nhất mà các nhóm non-professional mắc phải. Tôi đã thấy lỗi tương tự ở một audit thực tế năm 2020 cho dự án DeFi nhỏ mà tôi từng kiểm toán. Hồi đó, tôi viết báo cáo 30 trang, và nhóm đã sửa lỗi kịp thời. Nhưng nhiều nhóm bỏ qua, dẫn đến mất mát.

Takeaway: Dự Báo Cho Các Dự Án Việt Nam Hứa Hẹn ZK

Trong vòng 6 tháng tới, tôi dự đoán sẽ có ít nhất 2 sự cố bảo mật tương tự xảy ra từ các dự án ZK mới nổi tại Việt Nam. Nguyên nhân chính: (1) thiếu chuyên gia ZK bản địa, (2) văn hóa “chạy theo trend” đặt marketing lên trên security. Tôi không nói rằng người Việt không làm được — tôi là người Việt, tôi làm được — nhưng cần nhiều thời gian hơn để xây dựng đội ngũ audit nội bộ.

Nhà phát triển nói: “ZK là tương lai”. Tôi đồng ý. Nhưng trước khi nhảy vào, hãy tự hỏi: Bạn có đọc từng dòng code của thư viện curve không? Bạn có chạy test cofactor không? Bạn có dám để tôi audit code của bạn không?

ISTJ trong tôi kết luận: ZK không phải ma thuật. Nó chỉ là đại số — nếu bạn sai, thuật toán sẽ không thương lượng.

Sợ & Tham

25

Cực kỳ sợ hãi

Tâm lý thị trường

Chỉ số mùa altcoin

43

Mùa Bitcoin

Sự thống trị BTC Mùa altcoin

Vốn hóa thị trường

Tất cả →
1
Bitcoin
BTC
$64,734
1
Ethereum
ETH
$1,861.53
1
Solana
SOL
$75.41
1
BNB Chain
BNB
$569.8
1
XRP Ledger
XRP
$1.09
1
Dogecoin
DOGE
$0.0724
1
Cardano
ADA
$0.1666
1
Avalanche
AVAX
$6.58
1
Polkadot
DOT
$0.8357
1
Chainlink
LINK
$8.35

🐋 Theo dõi cá voi

🟢
0x60f8...b5db
2 phút trước
Chuyển vào
1,724.62 BTC
🔴
0x1842...3bbd
3 giờ trước
Chuyển ra
39,647 BNB
🟢
0xc227...c6d3
12 phút trước
Chuyển vào
13,351 BNB