#dusk $DUSK
Cụm từ “host functions” cứ xuất hiện trong whitepaper của Dusk và tôi vẫn coi đó là một chi tiết triển khai. Nhưng khi tôi thực sự đọc phần hiệu năng, thì hóa ra đó là một quyết định kiến trúc có chủ đích hơn nhiều.
Chạy ZK trong một WASM VM: whitepaper trích dẫn nghiên cứu cho thấy việc thực thi WASM có thể chậm hơn 45–255% so với mã gốc đối với các ứng dụng phức tạp. Phần quá tải đến từ việc quản lý bộ nhớ được ảo hóa và xử lý thêm các lệnh bên trong một môi trường hộp cát (sandbox) bị giới hạn. Với việc băm và xác thực chữ ký thì điều này khá khó chịu. Còn với việc xác minh bằng chứng ZK, vốn chạy cho mọi giao dịch, thì việc chậm hơn 45–255% là một vấn đề nghiêm trọng về thông lượng.
Host functions: Dusk cung cấp một tập các hàm chạy một cách gốc (native) ngay trên máy chủ, nằm ngoài vùng sandbox của WASM. Các hàm gồm verify_plonk, verify_groth16_bn254, verify_schnorr, verify_bls và hash. Smart contract gọi trực tiếp các hàm này; phần tính toán mật mã nặng chạy ở tốc độ native. Kết quả được nhân bản giữa các node theo cách giống như bất kỳ phép tính nào khác.
Vậy tại sao không phải mọi chuỗi chạy ZK đều làm như thế.
Đưa tính toán ra khỏi VM sẽ làm giảm mức đảm bảo về sandboxing. Trong mô hình thực thi WASM thuần túy, một hợp đồng lỗi hoặc độc hại bị cô lập bên trong ranh giới của VM. Khi bạn thêm host functions, bạn đang mở ra quyền truy cập mức native vào một số thao tác cụ thể — và một lỗi hoặc cấu hình sai ở lớp host function có thể dẫn đến hệ quả mà một hợp đồng được sandbox riêng lẻ không thể tự tạo ra. Bạn đang đổi lấy khả năng cô lập để lấy thông lượng.
Thực ra tôi thấy lập luận về hiệu quả năng lượng thú vị hơn lập luận về tốc độ — whitepaper mô tả host functions một phần như một cách để giảm chi phí năng lượng cho mỗi node, chứ không chỉ giảm độ trễ. Cách diễn đạt này là khá lạ trong một tài liệu thiết kế blockchain.
Điều mà tôi chưa thấy được giải thích là Dusk xử lý việc phiên bản hóa host function như thế nào — liệu việc thay đổi hành vi của một host function có được xem là thay đổi giao thức cần đạt được đồng thuận hay không, hay các nhà vận hành có thể cập nhật độc lập các triển khai. @Dusk
$DUSK #dusk
Cụm từ “host functions” cứ xuất hiện trong whitepaper của Dusk và tôi vẫn coi đó là một chi tiết triển khai. Nhưng khi tôi thực sự đọc phần hiệu năng, thì hóa ra đó là một quyết định kiến trúc có chủ đích hơn nhiều.
Chạy ZK trong một WASM VM: whitepaper trích dẫn nghiên cứu cho thấy việc thực thi WASM có thể chậm hơn 45–255% so với mã gốc đối với các ứng dụng phức tạp. Phần quá tải đến từ việc quản lý bộ nhớ được ảo hóa và xử lý thêm các lệnh bên trong một môi trường hộp cát (sandbox) bị giới hạn. Với việc băm và xác thực chữ ký thì điều này khá khó chịu. Còn với việc xác minh bằng chứng ZK, vốn chạy cho mọi giao dịch, thì việc chậm hơn 45–255% là một vấn đề nghiêm trọng về thông lượng.
Host functions: Dusk cung cấp một tập các hàm chạy một cách gốc (native) ngay trên máy chủ, nằm ngoài vùng sandbox của WASM. Các hàm gồm verify_plonk, verify_groth16_bn254, verify_schnorr, verify_bls và hash. Smart contract gọi trực tiếp các hàm này; phần tính toán mật mã nặng chạy ở tốc độ native. Kết quả được nhân bản giữa các node theo cách giống như bất kỳ phép tính nào khác.
Vậy tại sao không phải mọi chuỗi chạy ZK đều làm như thế.
Đưa tính toán ra khỏi VM sẽ làm giảm mức đảm bảo về sandboxing. Trong mô hình thực thi WASM thuần túy, một hợp đồng lỗi hoặc độc hại bị cô lập bên trong ranh giới của VM. Khi bạn thêm host functions, bạn đang mở ra quyền truy cập mức native vào một số thao tác cụ thể — và một lỗi hoặc cấu hình sai ở lớp host function có thể dẫn đến hệ quả mà một hợp đồng được sandbox riêng lẻ không thể tự tạo ra. Bạn đang đổi lấy khả năng cô lập để lấy thông lượng.
Thực ra tôi thấy lập luận về hiệu quả năng lượng thú vị hơn lập luận về tốc độ — whitepaper mô tả host functions một phần như một cách để giảm chi phí năng lượng cho mỗi node, chứ không chỉ giảm độ trễ. Cách diễn đạt này là khá lạ trong một tài liệu thiết kế blockchain.
Điều mà tôi chưa thấy được giải thích là Dusk xử lý việc phiên bản hóa host function như thế nào — liệu việc thay đổi hành vi của một host function có được xem là thay đổi giao thức cần đạt được đồng thuận hay không, hay các nhà vận hành có thể cập nhật độc lập các triển khai. @Dusk
$DUSK #dusk

