Cập nhật : Câu trả lời này đã bị lỗi thời bởi câu trả lời khác của tôi, với giới hạn đa giác hoàn toàn từ các tham chiếu thích hợp.
Theo suy nghĩ thứ hai, không cần phải tiết lộ cây Merkle dần, vì vậy phiên bản giao tiếp thấp hơn không cần thêm vòng. Các bước giao tiếp là
- Người tục ngữ P chọn ngẫu nhiên màu của nó, biến nó thành cây Merkle (đã được muối) và gửi gốc đến trình xác minh V.
- V chọn một cạnh ngẫu nhiên và gửi nó cho P.e
- P gửi các đường dẫn cây Merkle từ gốc đến từng điểm cuối của đến V.e
Điều này mang lại cho giao tiếp qua các vòng .O ( 1 )O(belognlog(1/p))O(1)
Cập nhật: Dưới đây là chi tiết về việc xây dựng cây Merkle. Để đơn giản, hãy mở rộng biểu đồ để có chính xác đỉnh bằng cách thêm một vài nút bị ngắt kết nối (những nút này không ảnh hưởng đến ba màu sắc hoặc kiến thức bằng không). Giả sử hàm băm an toàn lấy bất kỳ kích thước đầu vào và tạo đầu ra -bit. Đối với mỗi cây Merkle, prover chọn nonces -bit ngẫu nhiên , một cho mỗi lá và không lá của cây nhị phân. Tại các lá, chúng ta băm màu kết hợp với nonce để tạo ra giá trị của lá. Ở mỗi nonleaf, chúng tôi băm hai giá trị con với nonce của nonleaf để tạo ra giá trị của nonleaf. b 2 a + 1 - 1 b2ab2a+1−1b
Trong vòng đầu tiên, người hoạt động chỉ gửi giá trị gốc, không cung cấp thông tin nào vì nó được băm bằng lệnh nonce của root. Trong vòng thứ ba, không có thông tin nào được chuyển tải về bất kỳ nút chưa được mở rộng nào trong cây nhị phân, vì một nút như vậy đã được băm với một nonce tại nút đó. Ở đây tôi giả sử người cung cấp và người xác minh đều bị ràng buộc tính toán và không thể phá vỡ hàm băm.
Chỉnh sửa : Cảm ơn Ricky Demer đã chỉ ra yếu tố còn thiếu của .e