Mphuong_luu28
🐋Cá Voi Phake🐋
Chúng ta thực hiện khá nhiều giao dịch crypto, nhưng không phải ai cũng hiểu cách thức các giao dịch được xử lý và đưa lên blockchain như thế nào. Vì vậy mình muốn làm 1 ví dụ để giải thích một cách BÌNH DÂN nhất có thể về cơ chế 1 giao dịch được xử lý như thế nào. Với mỗi chain khác nhau, có thể có sự khác nhất định ở 1 bước nào đó, nhưng nhìn chung về tổng quan là không khác biệt.
Ví dụ có 2 users là Adam và Eva với 2 tài khoản trên blockchain X, với native token là X. Trạng thái (state) hiện tại của blockchain là:
- Tài khoản Adam có số dư: 100 token X.
- Tài khoản của Adam trước đó đã thực hiện chuyển tiền đi n lần (ví dụ n=6).
- Tài khoản của Eva có số dư là: 20 token X.
Trên mạng lưới giả sử có 100 validators (V1-V100), và sẽ lần lượt được chọn lựa để làm leader đóng các block theo từng vòng đồng thuận (round) - Tùy thuật toán đồng thuận sẽ chọn leader hoặc người đóng block tương ứng. Ở round hiện tại validator V8 đang được chọn làm leader.
Bây giờ Adam muốn chuyển 10 token X tới tài khoản của Eva. Thì giao dịch này nếu được thực hiện, sẽ làm thay đổi trạng thái của blockchain và việc xử lý giao dịch, cập nhật giao dịch lên blockchain sẽ được thực hiện tuần tự như sau.
Adam sẽ tiến hành submit nội dung giao dịch là muốn chuyển 10 token X sang địa chỉ tài khoản của Eva, và kèm theo thông tin địa chỉ tài khoản của Adam (public key của Adam) cùng chữ ký số xác nhận yêu cầu thực hiện giao dịch. Các thông tin sau đây sẽ cần được hệ thống xử lý:
Bây giờ Adam muốn chuyển 10 token X tới tài khoản của Eva. Thì giao dịch này nếu được thực hiện, sẽ làm thay đổi trạng thái của blockchain và việc xử lý giao dịch, cập nhật giao dịch lên blockchain sẽ được thực hiện tuần tự như sau.
Adam sẽ tiến hành submit nội dung giao dịch là muốn chuyển 10 token X sang địa chỉ tài khoản của Eva, và kèm theo thông tin địa chỉ tài khoản của Adam (public key của Adam) cùng chữ ký số xác nhận yêu cầu thực hiện giao dịch. Các thông tin sau đây sẽ cần được hệ thống xử lý:
- Địa chỉ ví gửi: Địa chỉ ví của Adam.
- Số phí gas tối đa sẽ được trừ vào tài khoản của Adam.
- Thời gian hết hạn giao dịch (nếu quá khoảng thời gian này, thì giao dịch sẽ hết hiệu lực).
- Số thứ tự giao dịch của tài khoản Adam.
- Thông tin chain.
Các bước xử lý như sau:
Bước 1: Kiểm tra và chấp thuận giao dịch:
- Các thông tin trên sẽ được gửi đến Client service (một thành phần để giao tiếp với các input bên ngoài).
- Client service sẽ tiếp nhận thông tin và gửi đến mempool (nơi lưu trữ các giao dịch chờ được xử lý) của Validator nodes.
- Tại mempool, các giao dịch sẽ được kiểm tra tính hợp lệ của giao dịch như: chữ ký của Adam có hợp lệ không, số dư tài khoản của Adam có lớn hơn số tiền cần chuyển không, số thứ tự của giao dịch có hợp lệ không (ví dụ giao dịch có STT lớn không thể được thực hiện trước giao dịch có STT nhỏ - Trong mempool có thể đã chứa các giao dịch khác trước đó từ Adam).
Sau các bước này, giao dịch sẽ được chấp thuận đưa vào xử lý.
Bước 2: Chia sẻ thông tin giao dịch giữa các Validators
Các giao dịch được chấp thuận trong mempool của validators sẽ được chia sẽ tới các validators khác và đồng thời cũng nhận các giao dịch đến từ mempool của các validators khác.
Bước 3: Tiến hành đề xuất block và tiến hành xử lý đồng thuận
- Leaders của round sẽ tiến hành xử lý các giao dịch trong mempool của mình, và đề xuất nội dung block với các validators khác.
- Thuật toán consensus của validators và leader sẽ chịu trách nhiệm phối hợp và kiểm tra đồng thuận về trình tự các giao dịch trong block được đề xuất (Các thuật toán đồng thuận BFT).
Bước 4: Tiến hành sản xuất block và đạt đồng thuận
- Phần xử lý tính toán giao dịch, là 1 phần trong quá trình đồng thuận. Do đó các giao dịch được chuyển qua bộ phận tính toán (execution).
- Sau khi tính toán các giao dịch trong block được đề xuất, bộ phận execution sẽ gắn các giao dịch trong block vào lịch sử của blockchain (vẫn lưu ở bộ nhớ tạm).
- Các kết quả tính toán được trả lại phía bộ phận đồng thuận để xác nhận.
- Leader của vòng đồng thuận, cố gắng đạt được đồng thuận với các validators khác về kết quả của block được đề xuất.
Bước 5: Đóng block và lưu dữ liệu
- Nếu block được đề xuất đạt được đồng thuận của đa số validators (thường ít nhất là 2/3 số validators) và được các validator ký xác nhận.
- Phần thực thi (execution) của leader sẽ đọc toàn bộ tính toán của block trong bộ nhớ tạm và cam kết hoàn tất các giao dịch này và lưu cố định trên sổ cái blockchain.
Sau khi hoàn tất các bước trên thì lúc này và nếu giao dịch không bị đảo ngược vì 1 lý do nào khác, Trạng thái (state) của blockchain sẽ được cấp nhật là:
- Tài khoản Adam có số dư: 90 token X.
- Tài khoản của Adam trước đó đã thực hiện chuyển tiền đi n lần (n=7).
- Tài khoản của Eva có số dư là: 30 token X.
Cảm ơn mọi người đã theo dõi bài viết. Nếu thấy bài viết hay và bổ ích thì nhớ múc cho mình nha :)))