Xây dựng trên Dexalot mà không gặp rào cản — một bộ SDK hợp nhất theo hướng bất đồng bộ (async-first), trừu tượng hóa sự phức tạp của on-chain và mang lại khả năng truy cập liền mạch, đạt chuẩn sản xuất cho giao dịch, hoán đổi (swaps) và quản lý danh mục đầu tư trong cùng một client.
April 10, 2026 |
Nếu bạn từng thử xây dựng một bot giao dịch hoặc tích hợp với một sàn giao dịch trên chuỗi, bạn sẽ hiểu nỗi đau đó. Bạn phải xoay xở với các endpoint RPC, quản lý nonce, ký các giao dịch, phân tích sổ lệnh, xử lý cơ chế thử lại — và tất cả diễn ra trước khi bạn đặt lệnh đầu tiên. Chúng tôi đã xây dựng Dexalot SDK để giảm bớt gánh nặng đó, để bạn có thể tập trung vào điều quan trọng: logic giao dịch của mình.
Hôm nay, chúng tôi mở mã nguồn cho cộng đồng — trên cả Python và TypeScript.
Dexalot là một sàn giao dịch phi tập trung chạy sổ lệnh giới hạn tập trung (CLOB) trên chuỗi. Khác với các DEX dựa trên AMM, nơi bạn swap trực tiếp với một pool thanh khoản, Dexalot khớp người mua và người bán theo cách mà các sàn giao dịch truyền thống làm — với bid, ask và một sổ lệnh thực sự. Điều này mang lại cho nhà giao dịch spread chặt hơn, nhiều quyền kiểm soát hơn đối với khâu thực thi, và trải nghiệm quen thuộc.
Nhưng việc tương tác với một CLOB trên chuỗi theo cách lập trình trong lịch sử thường khá vất vả. Bạn cần xác thực, quản lý wallet nonce để tránh giao dịch trùng lặp, xử lý lỗi từ nhà cung cấp RPC, và theo kịp các “dị tật” riêng của từng blockchain. Mỗi nhà phát triển muốn xây dựng trên Dexalot về cơ bản đều phải tự xây lại toàn bộ phần cứng kết nối tương tự từ đầu.
Dexalot SDK đóng gói tất cả điều đó vào một client duy nhất, gọn gàng. Cài đặt một lần. Một đối tượng. Quyền truy cập đầy đủ vào giao dịch, swap, số dư và dữ liệu thị trường thời gian thực.
SDK bao phủ ba mảng cốt lõi của giao thức Dexalot, tất cả đều có thể truy cập thông qua một client thống nhất.
Giao dịch trên Sổ lệnh. Đặt lệnh giới hạn, hủy từng lệnh hoặc hủy theo lô, và truy vấn các vị thế đang mở của bạn — tất cả thông qua các lệnh gọi phương thức đơn giản. SDK sẽ xử lý chữ ký giao dịch trên chuỗi, quản lý nonce và ước tính gas ở phía sau. SDK cũng hỗ trợ các thao tác theo batch: đặt nhiều lệnh trong một giao dịch, hủy một danh sách cùng lúc, hoặc thực hiện cancel-and-replace nguyên tử (atomic) nơi các lệnh cũ của bạn bị loại bỏ và các lệnh mới được gửi trong một lần. Với market maker và nhà giao dịch chủ động, điều này có nghĩa là ít lượt truy cập qua lại hơn và độ trễ thấp hơn.
Simple Swaps. Không phải mọi giao dịch đều cần lệnh giới hạn. SDK bao gồm luồng swap theo yêu cầu báo giá (request-for-quote, RFQ): nhận một báo giá “mềm” để kiểm tra mức giá tham chiếu, chốt một báo giá chính thức trong khung thời gian hết hạn 30 giây, và thực thi — ba bước, không cần quản lý sổ lệnh. Nó phù hợp cho các giao dịch một lần hoặc các ứng dụng cần một giao diện đơn giản “swap token A lấy token B”.
Danh mục và Chuyển khoản. Kiểm tra số dư của bạn trên danh mục và các ví chain được kết nối. Nạp token từ các chain được hỗ trợ vào danh mục Dexalot, rút chúng ra lại, và quản lý gas — tất cả theo cách lập trình. Nếu bạn đang xây dựng dashboard, một bộ theo dõi danh mục, hoặc hệ thống tự động cân bằng lại (rebalancing), các phương thức này sẽ cung cấp cho bạn mọi thứ cần thiết.
Khi DeFi trưởng thành, khoảng cách giữa “tôi có thể giao dịch trên DEX theo cách thủ công” và “tôi có thể xây dựng các hệ thống sản xuất trên DEX” chính là nơi có cơ hội thật sự. Bots, các bộ tổng hợp, các nhà quản lý danh mục, nền tảng phân tích — tất cả đều cần quyền truy cập lập trình đáng tin cậy. Đây là thứ SDK này cung cấp.
Chúng tôi đang triển khai các SDK gốc cho cả Python và TypeScript — hai ngôn ngữ thống trị trong phát triển crypto. Python là nơi các trader định lượng, nhà khoa học dữ liệu và người xây bot sinh sống. TypeScript cung cấp sức mạnh cho các giao diện front-end trên web, các dịch vụ Node.js và các hàm serverless mà phần lớn hệ sinh thái chạy trên đó. Cả hai SDK đều chia sẻ cùng một triết lý thiết kế: ưu tiên async, xử lý lỗi được tích hợp sẵn, an toàn kiểu dữ liệu (type safety) và các cấu hình mặc định ở mức sẵn sàng cho production. Dù bạn đang viết một dịch vụ giao dịch FastAPI hay một dashboard danh mục Next.js, bạn sẽ nhận được một client hạng nhất — không phải một lớp bọc mỏng quanh một REST API.
Chúng tôi không chỉ bọc một vài endpoint API rồi coi như xong. SDK được thiết kế để đáp ứng các khối lượng công việc production, và một vài lựa chọn kiến trúc đáng để làm nổi bật.
Async ngay từ đầu. Mọi thao tác I/O đều là bất đồng bộ. SDK Python được xây dựng dựa trên asyncio; SDK TypeScript sử dụng async/await gốc và Promises. Không có threading, không có các lời gọi chặn bị giấu ở bên dưới. Điều này có nghĩa là SDK hoạt động tốt với các framework async hiện đại và có thể xử lý các tác vụ đồng thời mà không gặp bất ngờ. Nếu bạn đang chạy một dịch vụ giao dịch theo dõi nhiều cặp trong khi quản lý lệnh, async không phải là tùy chọn — mà là điều cốt yếu.
Caching thông minh không làm phiền bạn. SDK sử dụng hệ thống caching bốn tầng phù hợp với cách dữ liệu từ sàn thực sự vận hành. Dữ liệu tĩnh như cấu hình triển khai được cache trong 1 giờ vì gần như không bao giờ thay đổi. Siêu dữ liệu của token và cặp giao dịch được làm mới mỗi 15 phút. Dữ liệu số dư (balance) tồn tại trong 10 giây. Ảnh chụp sổ lệnh (order book snapshots) hết hạn chỉ sau 1 giây. Mỗi tầng đều có các mặc định hợp lý, nhưng bạn có thể tinh chỉnh mọi TTL để khớp với use case của mình — hoặc tắt caching hoàn toàn cho môi trường phát triển. Ở phía dưới, cache bao gồm cơ chế chống stampede: nếu mười yêu cầu đồng thời cùng lúc yêu cầu đúng một dữ liệu chưa được cache, thì chỉ có một yêu cầu thực sự lấy dữ liệu đó. Phần còn lại sẽ chờ kết quả duy nhất đó. Điều này ngăn chặn vấn đề "đàn ong bay" (thundering herd) có thể giáng API trong lúc cache miss.
Tự động thử lại và giới hạn tốc độ. Các lỗi chập chờn của mạng sẽ xảy ra. Nhà cung cấp RPC có thể ngừng hoạt động. SDK bao gồm logic retry có thể cấu hình với backoff lũy thừa — nó sẽ không từ bỏ sau lần thất bại đầu tiên, nhưng cũng sẽ không spam lên một endpoint đang gặp khó khăn. Rate limiting cũng được tích hợp sẵn, sử dụng cách tiếp cận token-bucket giúp bạn nằm trong các giới hạn phía máy chủ mà không cần phải suy nghĩ về nó.
Chuyển đổi nhà cung cấp RPC (failover). Nếu endpoint RPC chính của bạn bắt đầu hoạt động kém, SDK sẽ tự động chuyển sang một bản sao dự phòng. Bạn có thể cấu hình nhiều provider cho mỗi chain, đặt ngưỡng lỗi (failure thresholds) và xác định các khoảng thời gian cooldown. Nếu tất cả provider đều ngừng hoạt động, nó sẽ quay trở lại provider hoạt động được cuối cùng. Với các hệ thống production, mức độ bền vững như thế này không phải là điều "có cũng được" — mà là một yêu cầu.
Bảo mật theo mặc định. Khóa riêng (private keys) được xóa khỏi object cấu hình ngay sau khi tài khoản ví được tạo. SDK từ chối các endpoint HTTP RPC không được mã hóa trừ khi bạn ghi đè rõ ràng cơ chế bảo vệ đó. Thông điệp lỗi được làm sạch trước khi chúng đến ứng dụng của bạn, loại bỏ các đường dẫn tệp, URL RPC và stack traces có thể làm lộ các chi tiết hạ tầng. Thậm chí còn có một kho lưu trữ secrets được mã hóa để lưu các giá trị nhạy cảm cục bộ — khóa của bạn được mã hóa khi lưu trữ (at rest) bằng mã hóa Fernet, và chỉ tên khóa mới hiển thị trong file vault.
Một lựa chọn thiết kế đáng chú ý là cách SDK xử lý lỗi. Thay vì ném ngoại lệ cho các lỗi dự kiến — timeout mạng, lệnh bị từ chối, revert trên chuỗi khối — mỗi thao tác đều trả về một đối tượng Result. Bạn kiểm tra .success, và nếu đúng, dữ liệu của bạn nằm trong .data. Nếu sai, một thông báo lỗi thân thiện với con người sẽ nằm trong .error.
Có thể nghe như một chi tiết nhỏ, nhưng trong thực tế nó tạo ra khác biệt lớn. Xử lý lỗi dựa trên ngoại lệ trong mã bất đồng bộ (async) có thể khá phức tạp và khó suy luận. Mẫu Result khiến các lỗi trở nên rõ ràng và có thể dự đoán. Bot giao dịch của bạn sẽ không bị crash vào lúc 3 AM vì một ngoại lệ chưa được xử lý từ một cú chập chờn của mạng — nó sẽ thấy kết quả thất bại và làm theo bất cứ điều gì logic của bạn nói phải làm với nó.
Với các ứng dụng cần dữ liệu thị trường trực tiếp, SDK bao gồm một trình quản lý WebSocket tùy chọn. Đăng ký nhận cập nhật sổ lệnh cho các cặp giao dịch cụ thể và nhận sự kiện thông qua các callback bất đồng bộ. Kết nối tự động xử lý việc kết nối lại, và các callback tích hợp tự nhiên với runtime bất đồng bộ của bạn — dù đó là asyncio trong Python hay vòng lặp sự kiện của Node.js trong TypeScript. Điều này đặc biệt hữu ích cho các bot tạo lập thị trường (market-making) cần phản ứng với thay đổi của sổ lệnh theo thời gian thực.
SDK Python có sẵn trên PyPI và SDK TypeScript trên npm. Cài đặt một trong hai, thiết lập vài biến môi trường, và bạn đã có thể đọc sổ lệnh. Nếu bạn muốn giao dịch, hãy thêm khóa ký của bạn — hoặc thông qua vault secrets đã mã hóa, hoặc bằng cách truyền trực tiếp một đối tượng signer (chúng tôi khuyến nghị cách thứ hai để khóa thô của bạn không bao giờ chạm vào một tệp cấu hình).
Tài liệu bao gồm một hướng dẫn người dùng với các ví dụ copy-paste cho mọi quy trình làm việc chính, tổng quan kiến trúc cho những người đóng góp muốn hiểu phần bên trong, và hướng dẫn cache để tối ưu hiệu năng. Nếu bạn muốn có cái nhìn đầy đủ, hãy bắt đầu từ đó. Nếu bạn muốn nhảy thẳng vào mã, hướng dẫn bắt đầu nhanh (getting-started tutorial) bao gồm thiết lập cho đến giao dịch đầu tiên của bạn.
SDK không phải là một hòn đảo độc lập. Nó được thiết kế để hòa nhập vào hệ sinh thái công cụ rộng hơn mà các nhà phát triển vốn đã sử dụng. Kiến trúc ưu tiên bất đồng bộ (async-first) có nghĩa là nó tích hợp gọn gàng với các framework như FastAPI và Express. Tùy chọn ghi log JSON có cấu trúc sẽ xuất ra một sự kiện mỗi dòng kèm theo timestamp và các trường metadata — sẵn sàng cho Datadog, Loki, Grafana, hoặc bất kỳ bộ tổng hợp log nào mà đội của bạn đang chạy. Cấu hình đi qua các biến môi trường, tệp .env hoặc tham số truyền vào cho constructor, vì vậy nó hoạt động theo cùng một cách dù bạn đang chạy cục bộ, trong Docker hay trên Kubernetes.
Đối với các đội vận hành trên nhiều môi trường, SDK xử lý testnet và mainnet đồng thời trong cùng một tiến trình. Các không gian tên cache được tách biệt theo endpoint, vì vậy một client testnet và một client mainnet sẽ không làm nhiễm dữ liệu của nhau. Bạn có thể chuyển đổi giữa các môi trường bằng cách thay đổi một giá trị cấu hình duy nhất.
Bản phát hành này bao gồm các tác vụ giao dịch cốt lõi, swap và portfolio. Chúng tôi đang tích cực làm việc để mở rộng SDK dựa trên phản hồi từ cộng đồng. Nếu có một tính năng bạn muốn chúng tôi bổ sung, hãy mở một issue trên repo — hoặc tốt hơn nữa, mở một pull request.
Chúng tôi đã xây dựng Dexalot để mang lại hiệu năng và độ chính xác của hạ tầng sàn giao dịch truyền thống đến DeFi. SDK Python và TypeScript là cách chúng tôi giúp mọi nhà phát triển có thể tiếp cận điều đó với một terminal và một ý tưởng.
Cả Dexalot Python SDK và Dexalot TypeScript SDK đều là mã nguồn mở. Hãy kiểm tra các repository để xem toàn bộ tài liệu, ví dụ và hướng dẫn đóng góp.
Python SDK | GitHub: github.com/Dexalot/dexalot-sdk-python
Python SDK | PyPi: pypi.org/project/dexalot-sdk
TypeScript SDK | GitHub: github.com/Dexalot/dexalot-sdk-typescript
TypeScript SDK | NPM: npmjs.com/package/@dexalot/dexalot-sdk
Chúc bạn giao dịch vui vẻ.