Cùng tìm hiểu whitepaper của Altius Altius Whitepaper thì chúng ta thấy một thuật ngữ công nghệ được nêu ra nhưng ít ai tìm hiểu tới, đây là một trong những công nghệ cốt lõi nhưng có thể khó hiểu đối với lập trình viên mới đó là Deterministic Optimistic Concurrency Control (OCC), được sử dụng để hỗ trợ thực thi song song (parallel execution) trong blockchain.
Bài viết dưới đây sẽ giải thích công nghệ này một cách dễ hiểu để anh em lập trình viên mới nắm bắt rõ hơn.
Tìm hiểu Deterministic OCC trong Altius: Công nghệ Thực thi Song song cho Blockchain
Nếu bạn là một lập trình viên mới bước vào thế giới blockchain, bạn có thể đã nghe về các vấn đề như tắc nghẽn mạng, chi phí gas cao, hay tốc độ giao dịch chậm. Altius, một dự án cơ sở hạ tầng blockchain, đang giải quyết những vấn đề này bằng cách sử dụng Deterministic Optimistic Concurrency Control (OCC) để thực thi song song các giao dịch blockchain.
Nhưng OCC là gì, và tại sao nó quan trọng? Hãy cùng tìm hiểu một cách đơn giản, kèm ví dụ code để bạn dễ hình dung!
OCC là gì?
OCC (Optimistic Concurrency Control) là một kỹ thuật quản lý đồng thời (concurrency control) được sử dụng trong các hệ thống cơ sở dữ liệu để xử lý nhiều giao dịch cùng lúc mà không gây xung đột. Từ “Optimistic” có nghĩa là nó giả định rằng các giao dịch sẽ không xung đột với nhau trong hầu hết các trường hợp. Từ “Deterministic” trong ngữ cảnh của Altius có nghĩa là kết quả của các giao dịch sẽ luôn nhất quán và có thể dự đoán, điều rất quan trọng trong blockchain để đảm bảo tính toàn vẹn của sổ cái (ledger).
Trong blockchain, các giao dịch (transactions) thường được xử lý tuần tự (sequential), nghĩa là từng giao dịch được thực thi lần lượt, dẫn đến tốc độ chậm khi khối lượng giao dịch lớn. Altius sử dụng Deterministic OCC để cho phép nhiều giao dịch chạy song song (cùng lúc), giúp tăng tốc độ xử lý mà vẫn đảm bảo tính chính xác.
OCC hoạt động như thế nào trong Altius?
Hãy hình dung bạn đang ở một siêu thị với nhiều quầy thanh toán. Thông thường, mọi người xếp hàng dài ở một quầy duy nhất (xử lý tuần tự). Với OCC, Altius mở nhiều quầy thanh toán (xử lý song song), nhưng có một người kiểm tra giỏ hàng của mọi người để đảm bảo không ai lấy món hàng trùng lặp (tránh xung đột).
Nếu có xung đột, giao dịch sẽ được thử lại. Cụ thể, trong Altius:
Bước 1: Đọc và thực thi tạm thời: Mỗi giao dịch đọc trạng thái hiện tại của blockchain (ví dụ: số dư tài khoản) và thực thi “tạm thời” mà không ghi ngay vào sổ cái.
Bước 2: Kiểm tra xung đột: Altius kiểm tra xem các giao dịch có xung đột không (ví dụ: hai giao dịch cùng cố gắng chi tiêu từ một tài khoản). Điều này được hỗ trợ bởi Static Single Assignment (SSA), một kỹ thuật giúp theo dõi phụ thuộc dữ liệu giữa các giao dịch.
Bước 3: Ghi kết quả: Nếu không có xung đột, các giao dịch được ghi vào sổ cái. Nếu có xung đột, giao dịch xung đột sẽ được thực thi lại. Deterministic đảm bảo rằng thứ tự xử lý các giao dịch luôn cho kết quả giống nhau, bất kể node nào trong mạng thực hiện.
Tại sao OCC quan trọng trong blockchain?
Trong blockchain truyền thống như Ethereum, các giao dịch được xử lý tuần tự để đảm bảo tính chính xác, nhưng điều này làm giảm tốc độ, đặc biệt khi mạng đông đúc. OCC của Altius cho phép:
Tăng tốc độ: Xử lý nhiều giao dịch cùng lúc, cải thiện thông lượng (throughput).
Giảm chi phí gas: Thực thi song song giảm thời gian chờ, từ đó giảm chi phí.
Tính tương thích: Hoạt động với bất kỳ blockchain nào, kể cả EVM hay các máy ảo khác.
Theo whitepaper, Altius đạt tăng 30 lần giao dịch mỗi giây và giảm 75% chi phí gas nhờ OCC và thực thi song song.
Ví dụ đơn giản để hiểu OCC
Hãy tưởng tượng bạn có một tài khoản ngân hàng trên blockchain với số dư 100 USD. Hai giao dịch xảy ra gần như cùng lúc:
Giao dịch A: Chuyển 50 USD cho Alice.
Giao dịch B: Chuyển 70 USD cho Bob.
Nếu xử lý tuần tự: Giao dịch A chạy trước, số dư còn 50 USD, giao dịch B thất bại vì không đủ tiền.
Kết quả phụ thuộc vào thứ tự xử lý.
Với OCC: Cả hai giao dịch được thực thi song song, giả định số dư là 100 USD. Sau khi thực thi tạm thời, Altius kiểm tra: Giao dịch B gây xung đột vì số dư không đủ (100 - 50 - 70 = -20). Giao dịch A được ghi, giao dịch B được thử lại hoặc bị hủy.
Dưới đây là một đoạn mã Solidity mô phỏng cách OCC hoạt động trong việc xử lý song song các giao dịch.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract OCCSimulation {
int public accountBalance = 100;
struct Transaction {
uint id;
int amount;
bool executed;
bool valid;
}
Transaction[] public transactions;
mapping(uint => int) public readBalance;
mapping(uint => int) public newBalance;
event TransactionExecuted(uint id, int read, int computed, bool success);
// Bắt đầu mô phỏng OCC: thêm giao dịch
function submitTransaction(uint _id, int _amount) external {
transactions.push(Transaction(_id, _amount, false, false));
}
// Giai đoạn 1: Thực thi tạm thời
function simulateExecution() external {
for (uint i = 0; i < transactions.length; i++) {
if (!transactions[i].executed) {
readBalance[transactions[i].id] = accountBalance;
newBalance[transactions[i].id] = accountBalance - transactions[i].amount;
transactions[i].executed = true;
}
}
}
// Giai đoạn 2 + 3: Kiểm tra xung đột và ghi trạng thái nếu hợp lệ
function validateAndCommit() external {
for (uint i = 0; i < transactions.length; i++) {
uint txId = transactions[i].id;
int computed = newBalance[txId];
if (computed >= 0 && !transactions[i].valid) {
accountBalance = computed;
transactions[i].valid = true;
emit TransactionExecuted(txId, readBalance[txId], computed, true);
} else {
emit TransactionExecuted(txId, readBalance[txId], computed, false);
}
}
}
// Trạng thái cuối
function getBalance() external view returns (int) {
return accountBalance;
}
function getTransactionCount() external view returns (uint) {
return transactions.length;
}
}
-
Gửi 2 giao dịch giống như ví dụ:
-
Giao dịch A: gửi 50.
-
Giao dịch B: gửi 70.
-
-
Sau khi gọi
simulateExecution()
, rồi gọivalidateAndCommit()
, bạn sẽ thấy:-
Giao dịch A được ghi.
-
Giao dịch B thất bại vì xung đột.
-
Đây là kết quả xuất ra
TransactionExecuted(0, 100, 50, true)
TransactionExecuted(1, 100, -20, false)
OCC trong Altius so với thực tế
Trong Altius, OCC được tối ưu hóa hơn nhiều so với ví dụ đơn giản trên: Static Single Assignment (SSA): Altius sử dụng SSA để theo dõi phụ thuộc dữ liệu (data dependencies) giữa các giao dịch, giúp xác định xung đột trước khi thực thi. Mạng thực thi mở: Các node thực thi giao dịch phải stake token để đảm bảo hành vi trung thực, tăng tính bảo mật. Tích hợp đa chuỗi: OCC của Altius hoạt động trên nhiều blockchain, không chỉ giới hạn ở EVM
Lợi ích
Nếu bạn là một lập trình viên mới, bạn không cần hiểu hết mọi chi tiết của OCC. Điều quan trọng là: Altius giúp các giao dịch blockchain chạy nhanh hơn nhờ thực thi song song. Bạn có thể viết smart contract như bình thường, và Altius sẽ tự động tối ưu hóa hiệu suất. Công nghệ như OCC giúp giảm chi phí gas, làm cho ứng dụng của bạn rẻ hơn cho người dùng.
Nếu bạn muốn tìm hiểu sâu hơn về cách tích hợp Altius vào dự án của mình, hãy xem thêm tài liệu trên trang blog của Altius hoặc tham gia cộng đồng qua Discord. Bạn cũng có thể thử viết một smart contract đơn giản và kiểm tra hiệu suất trên môi trường thử nghiệm của Altius (khi có sẵn)!
Hy vọng bài viết này giúp bạn hiểu rõ hơn về OCC trong Altius. Cám ơn các bạn đã theo dõi!
评论 (0)