“Giao dịch đã hoàn tất, mà trang vẫn chưa thay đổi?”——Câu này đặt trong phần quản trị ví hoặc sàn giao dịch thì thường không phải do người dùng, mà là hệ thống đã bỏ lỡ sự kiện.

HTTP API của @Dusk đặt phần đăng ký sự kiện hợp đồng ở đường dẫn /on/contracts:<contract_id>/<method> . Đăng ký và hủy đăng ký lần lượt dùng GET, DELETE, và còn cần dựa vào Rusk-Session-Id để duy trì phiên. Nhìn như chi tiết của API, nhưng tôi nghĩ nó thực ra đang nhắc một điều: bản thân thông báo thời thực không phải là sổ cái.

Khi kết nối hoạt động bình thường, ví cập nhật số dư nhờ sự kiện, còn sàn thì đẩy quá trình gom lệnh hoặc trạng thái đơn hàng nhờ sự kiện. Nhưng khi kết nối bị ngắt, session chỉ giúp bạn khôi phục quan hệ đăng ký, không thể chứng minh rằng trong thời gian đó không bị bỏ sót gì. Phần bị bỏ sót vẫn phải quay lại để đối chiếu lại từ khối, giao dịch và trạng thái hợp đồng.

Tôi hình dung một tình huống cụ thể. Người dùng chuyển DUSK đã được ghi lên chuỗi, nhưng kết nối lắng nghe của sàn vừa khớp thời điểm bị ngắt vài phút. Bản ghi trên chuỗi không có vấn đề, số dư không được cập nhật. Người dùng nộp lại một lần nữa, và hậu trường có thể đồng thời xuất hiện hai bản ghi đang chờ xử lý. CS nhìn thấy là “chưa nhận được tiền”, còn nhóm vận hành phải đối mặt với việc bù sự kiện và đối chiếu thủ công.

Điều này khiến tôi đặt ra thêm một yêu cầu đối với giao diện sự kiện của @Dusk . Tài liệu viết nơi để đăng ký chỉ là bước đầu tiên; thứ thực sự quyết định chất lượng tích hợp là việc ví và sàn có thể, sau khi kết nối lại, khôi phục được ngữ cảnh theo session hay không, rồi dùng trạng thái trên chuỗi để lấp đầy phần còn thiếu. $DUSK phải phản ánh luồng tài sản thực, sự kiện thời thực có nhiệm vụ nhắc nhở, và cuối cùng trạng thái phải có một con đường khác để có thể đối chiếu lại.#dusk