#dusk $DUSK @Dusk
Này, bạn biết không… một câu hỏi về @DuskFoundation cứ ám ảnh mình: nếu một sàn nhận được “202 Accepted” cho lệnh rút của mình, vậy tại sao công việc vẫn chưa hoàn tất?
Chúng ta quen đọc một phản hồi như “xong rồi.” Nhưng trên blockchain, việc gửi (submission) và quyết toán (settlement) là những thời điểm khác nhau.
Trên Dusk L1, “202 Accepted” chỉ có nghĩa là một node đã chấp nhận giao dịch để định tuyến. Nó không chứng minh rằng giao dịch đã vào mempool, lan tới các peer, thực thi thành công, hoặc trở nên final.
Dusk tách bạch các bước đó. “transactions/included” cho thấy đã được nhận vào mempool cục bộ. “transactions/executed” có nghĩa là giao dịch đã chạy trong một block đã được chấp nhận, nơi trường “err” phải là null. Tính finality chỉ đến khi một sự kiện “blocks/statechange” được đánh dấu “finalized.” Trước thời điểm đó, một block đã được chấp nhận vẫn có thể bị đảo ngược.
Giả sử, mình rút DUSK từ một sàn. Hệ thống của sàn sẽ ký giao dịch Moonlight, lưu lại các byte và ID của nó, rồi phát tán. Phản hồi 202 chỉ xác nhận việc định tuyến—không phải đã hoàn tất. Sàn cần xác minh việc thực thi và trạng thái block đã finalized.
Nhưng mình dừng lại ở đây một chút.
Có lẽ finality không chỉ là một tính năng đồng thuận. Đó còn là trách nhiệm vận hành.
Vậy khi nào một lệnh rút thực sự hoàn tất: khi API trả lời, hay khi việc đảo ngược (reversal) không còn có thể? Mình vẫn đang suy nghĩ về điều này. 🤔
Này, bạn biết không… một câu hỏi về @DuskFoundation cứ ám ảnh mình: nếu một sàn nhận được “202 Accepted” cho lệnh rút của mình, vậy tại sao công việc vẫn chưa hoàn tất?
Chúng ta quen đọc một phản hồi như “xong rồi.” Nhưng trên blockchain, việc gửi (submission) và quyết toán (settlement) là những thời điểm khác nhau.
Trên Dusk L1, “202 Accepted” chỉ có nghĩa là một node đã chấp nhận giao dịch để định tuyến. Nó không chứng minh rằng giao dịch đã vào mempool, lan tới các peer, thực thi thành công, hoặc trở nên final.
Dusk tách bạch các bước đó. “transactions/included” cho thấy đã được nhận vào mempool cục bộ. “transactions/executed” có nghĩa là giao dịch đã chạy trong một block đã được chấp nhận, nơi trường “err” phải là null. Tính finality chỉ đến khi một sự kiện “blocks/statechange” được đánh dấu “finalized.” Trước thời điểm đó, một block đã được chấp nhận vẫn có thể bị đảo ngược.
Giả sử, mình rút DUSK từ một sàn. Hệ thống của sàn sẽ ký giao dịch Moonlight, lưu lại các byte và ID của nó, rồi phát tán. Phản hồi 202 chỉ xác nhận việc định tuyến—không phải đã hoàn tất. Sàn cần xác minh việc thực thi và trạng thái block đã finalized.
Nhưng mình dừng lại ở đây một chút.
Có lẽ finality không chỉ là một tính năng đồng thuận. Đó còn là trách nhiệm vận hành.
Vậy khi nào một lệnh rút thực sự hoàn tất: khi API trả lời, hay khi việc đảo ngược (reversal) không còn có thể? Mình vẫn đang suy nghĩ về điều này. 🤔