
Tiết lộ chi tiết cách thức triển khai công nghệ đằng sau Polymarket
Tuyển chọn TechFlowTuyển chọn TechFlow

Tiết lộ chi tiết cách thức triển khai công nghệ đằng sau Polymarket
Polymarket đã thành công kết hợp các công nghệ từ các dự án khác nhau, mang lại giá trị tham khảo đặc biệt cho những người đi sau.
Bài viết: Pavel Naydanov
Biên dịch: Golem, Odaily Tin Tức Hành Tinh
Chú thích của biên tập viên: Polymarket đã thu hút sự chú ý nhiều hơn trong cuộc bầu cử tổng thống Mỹ lần này, không chỉ vì khối lượng giao dịch tích lũy các chủ đề dự đoán đã vượt quá 3,6 tỷ USD, mà còn bởi việc sớm và chính xác dự đoán Trump sẽ chiến thắng, điều này so với các cuộc thăm dò dư luận và truyền thông truyền thống khiến mọi người ngày càng nhận thức rõ rằng Polymarket không đơn thuần chỉ là một trang web cá cược, mà còn có thể trở thành một trang tin tức chân thực và đáng tin cậy hơn (Có thể tham khảo thêm bài viết mới đây của Vitalik: “Vitalik viết mới: Từ thị trường dự đoán đến tài chính thông tin”). Polymarket có thể là điểm sáng nổi bật nhất trong đợt đổi mới blockchain lần này.
Vậy thì, về mặt công nghệ, Polymarket – mang tính cách mạng "cách mạng blockchain" – đã được hiện thực hóa như thế nào? Kỹ sư phát triển hợp đồng thông minh Pavel Naydanov đã phân tích chi tiết công nghệ mà Polymarket sử dụng, điều này có thể mang tính gợi mở đối với các nhà phát triển. Odaily Tin Tức Hành Tinh biên dịch phần liên quan đến hiện thực kỹ thuật dưới đây, mời bạn đọc cùng đi sâu vào các khía cạnh kỹ thuật cụ thể của giao thức này.
CTF: Mã hóa kết quả
Tất cả các kết quả sự kiện trên Polymarket đều được mã hóa:
-
Các token loại này có thể gọi là Share token;
-
Share được mua bằng tài sản cơ bản, do đó chúng được đảm bảo đầy đủ;
-
Share có thể được bán để lấy lại tài sản cơ bản.
Share token dựa trên khuôn khổ token điều kiện Gnosis (CTF), là một ERC-1155. Khung CTF đã chứng minh hiệu quả và được kiểm nghiệm qua nhiều giao thức, hỗ trợ tối đa 256 kết quả cho mỗi sự kiện.
Mỗi dự đoán trên CTF đều được định danh riêng biệt bằng một ID điều kiện duy nhất, tạo thành từ giá trị băm của ba tham số:
-
Oracle (nhà tiên tri): Địa chỉ oracle sẽ xác định kết quả sự kiện, đảm bảo chỉ có oracle được chỉ định mới có thể thanh toán dự đoán;
-
ID câu hỏi: Định danh dự đoán, do người tạo thiết lập. Có thể là bộ đếm đơn giản tăng dần cho mỗi dự đoán mới, hoặc cũng có thể là phương án phức tạp hơn dùng băm văn bản và dữ liệu khác;
-
outcomeSlotCount: Số lượng kết quả có thể xảy ra của dự đoán.
Hình ảnh dưới đây minh họa trực quan nguyên lý hoạt động của CTF (khuôn khổ token điều kiện)

Khi người dùng đặt cược, họ cung cấp tài sản cơ bản và nhận về Share token, trong CTF gọi là token điều kiện. Sau khi oracle xác định kết quả dự đoán, người dùng có thể nhận thưởng từ CTF theo kết quả.
Khi người dùng nhận token điều kiện, họ được xem là đã xác lập một vị thế cụ thể. Trong CTF, vị thế đại diện cho từng tổ hợp kết quả có thể có cho mỗi dự đoán. CTF tạo ra những vị thế này cho mỗi dự đoán, mỗi vị thế tương ứng với một tổ hợp kết quả mà người dùng có thể lựa chọn.
Ví dụ:
Bộ phim nào có doanh thu cao nhất năm 2024?
-
Điều Hành Viên Tâm Trí 2
-
Mad Max 4
-
Deadpool 3
-
The Joker 2
-
Minions 4
-
Dune 2
-
Khác
Người dùng có thể bỏ phiếu cho rằng "Điều Hành Viên Tâm Trí 2" sẽ là phim có doanh thu cao nhất, hoặc "Dune 2" chắc chắn sẽ không phải là phim ăn khách nhất năm 2024. Tổ hợp dự đoán này sẽ được coi là vị thế của họ.
CTF cung cấp hai cơ chế xử lý vị thế thú vị: tách rời (split) và hợp nhất (merge). Cơ chế tách cho phép chia một vị thế đơn thành nhiều kết quả riêng biệt, trong khi hợp nhất gom các kết quả khác nhau thành một vị thế. Những cơ chế này giúp người dùng linh hoạt quản lý vị thế của mình.
CTF mang lại bốn lợi thế quan trọng cho Polymarket:
-
Share token có thể dùng để xác nhận lá phiếu của người dùng cho một kết quả dự đoán cụ thể;
-
Thiết lập hệ thống linh hoạt, kết hợp lá phiếu người dùng thành các vị thế khác nhau;
-
Ủy thác trách nhiệm tính toán kết quả cho CTF dựa theo tín hiệu từ oracle;
-
Tính toán phần thưởng dựa trên số lượng Share token của kết quả chiến thắng.
Một điểm đáng chú ý nữa là CTF cho phép tổ chức các hoạt động liên quan, nơi vị thế của người dùng có thể được hợp nhất. Tuy nhiên hiện tại chưa có ví dụ nào như vậy trên Polymarket. Để tìm hiểu thêm về CTF, bạn có thể tham khảo tài liệu chính thức.
Cơ chế lệnh

Để thực hiện mua hàng, giao diện Polymarket cung cấp ba loại lệnh:
-
Market — Mua ngay lập tức theo giá thị trường hiện tại;
-
Limit — Lệnh trì hoãn, cho phép bạn chỉ định mức giá để thực hiện mua khi đạt đến;
-
AMM — Mua với giá tự động xác định tương tự DEX, dựa trên lượng dự trữ trong pool.
Hiện tại, chức năng lệnh AMM dường như không hoạt động, không tìm thấy bất kỳ dự đoán nào cho phép mua qua AMM. Một bình luận của người dùng trên Discord Polymarket phần nào giải thích tình trạng này.

AMM đã lỗi thời
Theo tài liệu Polymarket, AMM được phát triển như một phần của hợp đồng thông minh trong khuôn khổ token điều kiện. Do đó, AMM dùng để xác định giá mua Share token. Cơ chế cơ bản này cần thanh khoản để đảm bảo định giá ổn định và giảm biến động. Người cung cấp thanh khoản cần động lực kinh tế, nhận thưởng từ mỗi giao dịch để duy trì hệ thống.
Có lẽ ban đầu Polymarket hoàn toàn dựa trên CTF, dùng AMM để định giá. Nhưng theo thời gian, giao thức phát triển giải pháp lai với sổ lệnh, hai loại lệnh còn lại (giới hạn và thị trường) bắt đầu hoạt động trên giải pháp tùy chỉnh này. Giải pháp này được gọi là CLOB (Sổ lệnh giới hạn tập trung) hoặc BLOB (Sổ lệnh giới hạn nhị phân).
CLOB và BLOB
CLOB (Sổ lệnh giới hạn tập trung) hay BLOB (Sổ lệnh giới hạn nhị phân) là hệ thống đại diện cho sổ lệnh phân tán lai. Trong hệ thống này, một operator chuyên trách xử lý khớp lệnh và khởi chạy thực thi hợp đồng thông minh.
Không cần giới thiệu quá nhiều, hệ thống hoạt động như hình dưới đây:

Người dùng tạo lệnh để thực hiện, có thể là lệnh giới hạn hoặc lệnh thị trường; operator khớp lệnh người dùng và khởi chạy thực thi trên hợp đồng thông minh. Việc tạo lệnh nghĩa là tạo một cấu trúc dữ liệu được ký bằng khóa riêng của người dùng theo tiêu chuẩn EIP-712. Vì lệnh được lưu trữ ngoài chuỗi trước khi thực thi nên người dùng có thể điều chỉnh điều khoản lệnh nhanh chóng và miễn phí, thậm chí hủy hoàn toàn.
Tuy nhiên, tất cả nội dung liên quan đến sổ lệnh và khớp lệnh chỉ có thể truy cập qua API. Để thuận tiện, Polymarket cung cấp hai client: một dùng JavaScript, một dùng Python.
Tuy nhiên, hợp đồng thông minh Exchange.sol là công khai, chịu trách nhiệm tạo vị thế người dùng trong CTF. Nó cũng cho phép quản lý vị thế người dùng và chuyển tài sản giữa họ, đảm bảo tính an toàn và minh bạch trong giao thức.

Hợp đồng thông minh này đã được kiểm toán, báo cáo kiểm toán đính kèm trong kho lưu trữ.
Hợp đồng thông minh
Hợp đồng thông minh Exchange thực tế có tên cụ thể hơn là CTFExchange.sol. Nó không lớn, chỉ khoảng 100 dòng mã, nhưng có rất nhiều phụ thuộc.

Phần lớn trong số này là các hợp đồng thông minh nhỏ nhằm thực hiện chức năng giới hạn:
-
BaseExchange.sol: Hợp đồng thông minh trừu tượng thực hiện khả năng nhận token ERC-1155, đồng thời chịu trách nhiệm ngăn chặn tấn công reentrancy;
-
Auth.sol: Quản lý vai trò, định nghĩa hàm xác thực và bộ sửa đổi để thiết lập vai trò admin và operator cho CTFExchange.sol;
-
Assets.sol: Định nghĩa hai loại tài sản, tài sản cơ bản (tài sản thế chấp) và địa chỉ CTF;
-
Fees.sol: Định nghĩa phí giao thức;
-
Pausable.sol: Định nghĩa khả năng tạm dừng hoạt động hợp đồng thông minh, một hình thức tập trung mà giao thức chấp thuận khi có tình huống bất ngờ. Chỉ dành cho vai trò admin;
-
AssetOperation.sol: Định nghĩa thao tác với tài sản cơ bản và CTF. Bao gồm chuyển nhượng, tách và hợp nhất vị thế;
-
Signature.sol: Định nghĩa mã dùng để xác minh chữ ký người dùng khi xác thực lệnh;
-
Hashing.sol: Định nghĩa giá trị băm của tham số lệnh, dùng để xác minh chữ ký;
-
Registry.sol: Định nghĩa quy trình đăng ký dự đoán trong hệ thống và đăng ký token cho dự đoán.
Tất cả nội dung liên quan đến thực thi lệnh thực tế được hiện thực trong hợp đồng thông minh Trading.sol. Duyệt mã và nghiên cứu hợp đồng thông minh cũng khá đơn giản. Cấu trúc rõ ràng định nghĩa các điểm vào qua hàm:
-
fillOrder() — Thực hiện lệnh giữa người dùng tạo lệnh và lệnh được chọn (lệnh khác);
-
fillOrders() — Tương tự fillOrder(), nhưng áp dụng cho danh sách lệnh;
-
matchOrders() — Operator chọn hai lệnh khác nhau và thực hiện chúng.
Tất cả các hàm trên chỉ có thể được gọi bởi operator.

Bất kể cách gọi vào hợp đồng thông minh, kết quả luôn giống nhau: hai người dùng sẽ trao đổi token theo lệnh của họ.
Phí giao thức
Phí được tính dựa trên tài sản đầu ra. Với dự đoán nhị phân, phí là đối xứng, nghĩa là: nếu người dùng bán token với giá 0,99 USD, họ sẽ trả phí bằng với người mua mua token ở mức 0,01 USD.
Công thức tính đơn giản, trích từ tài liệu chính thức:

Chương trình thưởng thanh khoản
Mục tiêu tổng thể của chương trình là khuyến khích thanh khoản thị trường.
Để sàn giao dịch dựa trên sổ lệnh hoạt động, cần có người tạo lệnh giới hạn, lệnh giới hạn cung cấp thanh khoản cho phép thực hiện ngay lập tức lệnh thị trường. Người dùng tạo lệnh giới hạn được gọi là nhà làm thị trường. Lệnh giới hạn càng sát với giá thị trường "chặt chẽ", lệnh thị trường càng được thực hiện nhanh, khối lượng giao dịch càng lớn, điều này rõ ràng có lợi cho người dùng cuối. Ngoài ra, thanh khoản càng lớn thì càng khó thao túng thị trường.
Để đảm bảo thanh khoản đầy đủ, Polymarket đã xây dựng chương trình thưởng đặc biệt nhằm khuyến khích người dùng tạo lệnh giới hạn. Lệnh giới hạn càng gần giá trung bình thị trường thì thưởng càng cao. Thưởng sẽ được tự động chi trả vào mỗi nửa đêm (giờ UTC).
Hệ thống này mô phỏng theo dYdX, muốn tìm hiểu thêm có thể xem chương trình khuyến khích thanh khoản gốc của dYdX và công thức tính thưởng thanh khoản chi tiết của Polymarket.
Nhà tiên tri (Oracle)
Oracle dùng để cung cấp kết quả dự đoán — bất kể sự kiện có xảy ra hay không. Oracle là một trong những thành phần quan trọng nhất của giao thức, nhưng lại do dịch vụ bên thứ ba chứ không phải đội ngũ Polymarket vận hành, oracle này được gọi là UMA.
UMA là một oracle phi tập trung, chuyên ghi dữ liệu mọi loại lên blockchain, ngoại trừ dữ liệu không thể xác minh. Oracle này mang tính lạc quan (optimistic), dữ liệu mặc định là đúng trừ khi có tranh cãi. UMA có hệ thống trọng tài riêng để giải quyết tranh cãi, trọng tài viên là con người thật — người tham gia hệ sinh thái UMA, đặc biệt là những người nắm giữ token UMA. Hệ thống này được gọi là DVM (Cơ chế Xác minh Dữ liệu).
Quy trình sau đây dùng để xác định kết quả dự đoán và ghi nó lên blockchain:

-
Statement: Dự đoán được thêm vào oracle cùng với phần thưởng. Bất kỳ ai phản đối kết quả dự đoán thành công đều có thể nhận thưởng;
-
Challenge period: Thời gian thách thức, trong thời gian này, bất kỳ ai cũng có thể tranh cãi kết quả dự đoán. Nếu không có tranh cãi và thời gian hết hạn, kết quả dự đoán được coi là sẵn sàng thanh toán cuối cùng, điều này chứng tỏ độ chính xác của nó;
-
Dispute: Tranh cãi, bất kỳ người tham gia giao thức nào cũng có thể phản đối kết quả, dù để nhận thưởng hay vì công bằng. Trên thực tế, tình huống này hiếm khi xảy ra, vì lý thuyết trò chơi cho thấy hầu hết người tham gia hành xử trung thực.
-
Voting: Bỏ phiếu, nếu có tranh cãi, người nắm giữ token UMA sẽ bỏ phiếu giải quyết. UMA là token giao thức dùng để bỏ phiếu, người tham gia được thưởng vì tham gia bỏ phiếu.
-
Settlement: Giai đoạn cuối cùng là quá trình thanh toán, tức là ghi dữ liệu thực tế lên blockchain. Sau đó, kết quả dự đoán có thể được coi là đáng tin cậy.
Toàn bộ giao thức dựa trên lý thuyết trò chơi, hành vi ác ý của bất kỳ người tham gia nào đều không có lợi về mặt kinh tế.
-
Người tham gia gửi kết quả dự đoán để bỏ phiếu phải cung cấp tài sản thế chấp cho hợp đồng thông minh. Nếu kết quả của họ bị tranh cãi, họ sẽ mất tài sản thế chấp; ngược lại, họ sẽ lấy lại tài sản thế chấp và nhận thưởng. Điều này tạo động lực mạnh mẽ chỉ gửi kết quả chính xác.
-
Người tham gia phản đối kết quả dự đoán cũng phải cung cấp tài sản thế chấp. Nếu họ đúng, họ sẽ lấy lại tài sản thế chấp và nhận thưởng; nếu sai, họ sẽ mất tài sản thế chấp. Điều này khuyến khích người tham gia chỉ tranh cãi những kết quả mà họ chắc chắn là sai.
-
Người tham gia giải quyết tranh cãi. Họ phải stake token UMA và sẽ nhận thưởng khi giải quyết tranh cãi. Nếu họ bỏ phiếu sai hoặc không bỏ phiếu, họ sẽ mất một phần số dư stake; ngược lại, họ sẽ nhận thưởng. Không có cách nào để né tránh.
Đặc biệt đáng chú ý là quá trình bỏ phiếu trong tranh cãi sử dụng sơ đồ commit/reveal chia thành hai giai đoạn:
-
Commit: Gửi bí mật, người tham gia bỏ phiếu bí mật bằng cách gửi giá trị băm lá phiếu vào hợp đồng thông minh, nghĩa là không ai có thể biết cách họ bỏ phiếu chỉ bằng cách xem giá trị băm.
-
Reveal: Tiết lộ, sau khi giai đoạn bỏ phiếu kết thúc, người tham gia tiết lộ lá phiếu của họ, hợp đồng thông minh xác minh xem chúng có khớp với giá trị băm đã gửi trước đó hay không.
Quá trình bỏ phiếu hai giai đoạn này ngăn chặn việc thông đồng giữa cử tri nhằm làm hại oracle hoặc tấn công các dịch vụ phụ thuộc vào kết quả dự đoán. Đồng thời, kết quả dự đoán có thể bị tranh cãi nhiều lần, trong trường hợp này UMA cho phép khởi động lại quá trình ra quyết định sau khi tranh cãi trước đó kết thúc.
Quy trình khởi xướng tranh cãi như sau:

Kết luận
Polymarket, một hệ thống cá cược và dự đoán tưởng chừng đơn giản, thực tế bao gồm ba mô-đun chính, mỗi mô-đun do các giao thức và nhóm phát triển khác nhau xây dựng:
-
CTF (Khuôn khổ token điều kiện): Quản lý tổ hợp, vị thế và Share trong dự đoán, khung linh hoạt do Gnosis tạo ra rất phù hợp với thị trường dự đoán.
-
CLOB (Sổ lệnh giới hạn tập trung): Giải pháp nội bộ Polymarket dùng để triển khai sổ lệnh và lệnh giới hạn. CLOB giúp người dùng tham gia hiệu quả vào hệ sinh thái và hỗ trợ tập trung thanh khoản.
-
UMA: Một oracle phi tập trung với hệ thống trọng tài giải quyết tranh cãi độc đáo. UMA là cốt lõi của hệ thống, truyền kết quả dự đoán qua blockchain.
Mặc dù Polymarket là một hệ thống cá cược, nhưng về mặt kỹ thuật, giao thức đã kết hợp thành công các công nghệ từ các dự án khác nhau, điều này đặc biệt hấp dẫn đối với các nhà phát triển.
Chào mừng tham gia cộng đồng chính thức TechFlow
Nhóm Telegram:https://t.me/TechFlowDaily
Tài khoản Twitter chính thức:https://x.com/TechFlowPost
Tài khoản Twitter tiếng Anh:https://x.com/BlockFlow_News














