Tiết lộ siêu chi tiết về việc triển khai kỹ thuật đằng sau Polymarket

Bài viết này được dịch máy
Xem bản gốc
Polymarket đã thành công kết hợp các công nghệ từ các dự án khác nhau, đặc biệt có giá trị tham khảo cho những người đến sau.

Tác giả: Pavel Naydanov

Biên dịch: Golem, Odaily Star Daily

Lời biên tập: Polymarket đã thu hút được nhiều sự chú ý hơn trong cuộc bầu cử Mỹ lần này, không chỉ vì khối lượng giao dịch dự đoán tích lũy đã vượt quá 36 tỷ USD, mà còn vì nó đã dự đoán thành công và sớm hơn so với các cuộc thăm dò dư luận và phương tiện truyền thông truyền thống rằng Trump sẽ giành chiến thắng, khiến mọi người nhận ra rằng Polymarket không chỉ là một trang web đặt cược mà còn trở thành một trang web tin tức mới đáng tin cậy hơn (đọc thêm: Bài viết mới của Vitalik: Từ thị trường dự đoán đến tài chính thông tin). Polymarket có thể là "một dòng phong cảnh" sáng giá nhất trong đợt đổi mới blockchain này.

Vậy thì, Polymarket mang ý nghĩa "cách mạng blockchain" đó được thực hiện về mặt kỹ thuật như thế nào? Lập trình viên hợp đồng thông minh Pavel Naydanov đã phân tích và giải thích kỹ thuật mà Polymarket sử dụng, có thể sẽ启示ý nghĩa cho các nhà phát triển. Odaily Star Daily đã biên dịch phần liên quan đến việc thực hiện kỹ thuật, bây giờ hãy cùng tìm hiểu kỹ hơn về các chi tiết kỹ thuật của giao thức này.

CTF: Tokenize kết quả

Tất cả các kết quả sự kiện trên Polymarket đều được tokenize:

  • Loại token này có thể được gọi là Share token;

  • Share được mua bằng tài sản cơ sở, do đó chúng hoàn toàn được thế chấp;

  • Share có thể được bán để lấy lại tài sản cơ sở.

Share token được triển khai dựa trên Gnosis Conditional Token Framework (CTF) ERC-1155, khung này đã được chứng minh là hiệu quả và đã được kiểm tra qua nhiều giao thức, CTF có thể hỗ trợ tối đa 256 kết quả cho mỗi sự kiện.

Mỗi dự đoán được xác định trong CTF, được gán một ID điều kiện duy nhất, bao gồm băm của ba tham số:

  • Oracle: địa chỉ của oracle sẽ xác định kết quả sự kiện, đảm bảo rằng chỉ oracle được chỉ định mới có thể thanh toán dự đoán;

  • ID câu hỏi: định danh dự đoán, được thiết lập bởi người tạo chủ đề dự đoán. Đây có thể là một bộ đếm đơn giản, tăng lên một bước so với dự đoán trước, hoặc một lược đồ phức tạp hơn sử dụng băm văn bản và dữ liệu khác;

  • outcomeSlotCount: số kết quả có thể của dự đoán.

Hình dưới đây minh họa trực quan cách hoạt động của CTF (Conditional Token Framework)

Khi người dùng đặt cược, họ cung cấp tài sản cơ sở và nhận được Share token, được gọi là token điều kiện trong CTF. Sau khi oracle xác định kết quả dự đoán, người dùng có thể nhận thưởng từ CTF dựa trên kết quả dự đoán.

Khi người dùng nhận được token điều kiện, họ được coi là đã xác định một vị thế cụ thể. Trong CTF, vị thế đại diện cho một tập hợp các kết quả có thể của mỗi dự đoán. CTF tạo ra các vị thế này cho mỗi dự đoán, mỗi vị thế tương ứng với một trong những tập hợp kết quả có thể mà người dùng có thể chọn.

Ví dụ:

Phim có doanh thu cao nhất năm 2024 là gì?

  • Inside Out 2

  • Mad Max: Fury Road 4

  • Deadpool 3

  • Joker 2

  • Despicable Me 4

  • Dune 2

  • Khác

Người dùng có thể bỏ phiếu cho rằng "Inside Out 2" sẽ trở thành phim có doanh thu cao nhất, hoặc "Dune 2" chắc chắn sẽ không phải là phim có doanh thu cao nhất năm 2024. Sự kế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ị: chia tách và hợp nhất. Cơ chế chia tách cho phép chia một vị thế thành nhiều kết quả riêng biệt, trong khi hợp nhất sẽ kết hợp các kết quả khác nhau thành một vị thế. Các cơ chế này cho phép người dùng quản lý vị thế của họ một cách linh hoạt.

CTF mang lại bốn lợi ích chính cho Polymarket:

  • Share token có thể được sử dụng để xác nhận phiếu bầu của người dùng cho kết quả dự đoán cụ thể;

  • Triển khai một hệ thống linh hoạt để kết hợp các phiếu bầu của 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 trên tín hiệu của oracle;

  • Tính toán phần thưởng dựa trên số lượng Share token của kết quả thắng.

Ngoài ra, CTF cho phép tổ chức các hoạt động liên quan, trong đó vị thế của người dùng có thể được hợp nhất. Tuy nhiên, hiện tại Polymarket vẫn chưa có ví dụ như vậy. Để biết thêm về CTF, bạn có thể tham khảo tài liệu chính thức.

Cơ chế đặt lệnh

Để thực hiện giao dịch mua, giao diện Polymarket cung cấp ba loại lệnh:

  • Market - Mua ngay với giá thị trường hiện tại;

  • Limit - Lệnh trì hoãn, cho phép bạn chỉ định giá mua khi đạt đến mức giá đó;

  • AMM - Mua với giá tự động được xác định tương tự như sàn giao dịch phi tập trung, dựa trên số dư trong pool.

Hiện tại, tính năng đặt lệnh AMM dường như không hoạt động, không tìm thấy lựa chọn cho phép mua thông qua AMM. Một bình luận của một người dùng trên Discord của Polymarket phần nào giải thích tình hình này.

AMM đã lỗi thời

Theo tài liệu của Polymarket, AMM được phát triển như một phần của hợp đồng thông minh của Conditional Token Framework. Do đó, AMM được sử dụng để xác định giá mua Share token. Cơ chế cơ bản này cần có thanh khoản để đảm bảo định giá ổn định và giảm biến động. Các nhà cung cấp thanh khoản cần được khuyến khích kinh tế, nhận thưởng từ mỗi giao dịch mua, để duy trì hoạt động của hệ thống.

Có thể ban đầu Polymarket hoàn toàn dựa trên CTF, sử dụng AMM để xác định giá. Nhưng theo thời gian, giao thức đã phát triển một giải pháp lai với sổ lệnh, và hai loại lệnh khác (lệnh giới hạn và lệnh 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 (Central Limit Order Book) hoặc BLOB (Binary Limit Order Book).

CLOB và BLOB

CLOB (Central Limit Order Book) hoặc BLOB (Binary Limit Order Book) là một hệ thống đại diện cho sổ lệnh phân tán lai. Trong hệ thống này, các nhà điều hành chuyên biệt chịu trách nhiệm 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 được minh họa như sau:

Người dùng tạo các lệnh cần thực hiện, có thể là lệnh giới hạn hoặc lệnh thị trường; nhà điều hành khớp lệnh của 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 có 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. Do lệnh được lưu trữ ngoài chuỗi trước khi thực thi, nên có thể nhanh chóng và miễn phí điều chỉnh các điều khoản lệnh, 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 thông qua API, để tiện lợi, Polymarket cung cấp hai máy trạm: một bằng JavaScript và một bằ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ế của người dùng trong CTF. Nó cũng cho phép quản lý vị thế của người dùng và chuyển tài sản giữa họ, đảm bảo 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 được đính kèm trong kho lưu trữ.

Hợp đồng thông minh

Hợp đồng thông minh Exchange thực ra có một tên cụ thể hơn, đó là CTFExchange.sol. Nó không quá lớn, chỉ khoảng 100 dòng mã, nhưng nó thực sự có rất nhiều phụ thuộc.

Hầu hết trong số đó là các hợp đồng thông minh nhỏ thực hiện các chức năng hạn chế:

  • BaseExchange.sol: Hợp đồng trừu tượng triển khai khả năng nhận token ERC-1155, cũng chịu trách nhiệm ngăn chặn các cuộc tấn công tái nhập;

  • Auth.sol: Trình quản lý vai trò, định nghĩa các hàm xác thực và các bộ sửa đổi để thiết lập các vai trò, admin và operator của CTFExchange.sol;

  • Assets.sol: Định nghĩa hai loại tài sản, tài sản cơ sở (tài sản thế chấ

    • fillOrder() — thực hiện đơn đặt hàng giữa người dùng tạo đơn đặt hàng và đơn đặt hàng được chọn (đơn đặt hàng khác);

    • fillOrders() — tương tự như fillOrder(), nhưng áp dụng cho danh sách đơn đặt hàng;

    • matchOrders() — người điều hành chọn hai đơn đặt hàng khác nhau và thực hiện chúng.

    Tất cả các chức năng trên chỉ có thể được người điều hành gọi.

    Bất kể cách nào để 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 đơn đặt hàng của họ.

    Phí giao dịch

    Phí được thu dựa trên tài sản đầu ra. Đối với dự đoán nhị phân, phí là đối xứng, có nghĩa là: nếu người dùng bán token với giá 0,99 USD, họ sẽ trả cùng một mức phí với người mua token với giá 0,01 USD.

    Công thức tính toán rất đơn giản, được 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 này là khuyến khích thanh khoản thị trường.

    Để một sàn giao dịch dựa trên sổ lệnh hoạt động, cần có người tạo các đơn đặt hàng giới hạn, các đơn đặt hàng giới hạn cung cấp thanh khoản cho phép thực hiện ngay lập tức các đơn đặt hàng giá thị trường, những người tạo ra các đơn đặt hàng giới hạn được gọi là nhà tạo lập thị trường. Độ "chặt" của các đơn đặt hàng giới hạn so với giá thị trường càng cao, tốc độ thực hiện các đơn đặt hàng thị trường càng nhanh và khối lượng giao dịch càng lớn, điều này rõ ràng là có lợi cho người dùng cuối cùng. Hơn nữa, càng có nhiều thanh khoản, việc thao túng thị trường càng khó khăn.

    Để đảm bảo đủ thanh khoản, Polymarket đã xây dựng một chương trình thưởng đặc biệt để khuyến khích người dùng tạo các đơn đặt hàng giới hạn. Các đơn đặt hàng giới hạn càng gần với giá thị trường trung bình, thưởng càng cao. Thưởng sẽ được thanh toán tự động vào nửa đêm hàng ngày (theo giờ UTC).

    Hệ thống này dựa trên mô hình của dYdX, để biết thêm thông tin, có thể tham khảo chương trình thưởng 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.

    Oracle

    Oracle được sử 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 nó do bên thứ ba cung cấp, chứ không phải đội ngũ Polymarket, oracle này được gọi là UMA.

    UMA là một oracle phi tập trung, chuyên dụng để ghi lại bất kỳ loại dữ liệu nào trên blockchain, ngoại trừ dữ liệu không thể xác minh. Oracle này có tính lạc quan, nghĩa là dữ liệu được coi là chính xác trừ khi có tranh chấp. UMA có hệ thống giải quyết tranh chấp riêng, với các trọng tài là những con người thực — những người tham gia vào 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 được sử dụng để xác định kết quả dự đoán và ghi nó vào blockchain:

    1. Statement: Dự đoán cùng với phần thưởng được thêm vào oracle. Bất kỳ ai thành công trong việc khiếu nại kết quả dự đoán đều có thể nhận được phần thưởng;

    2. Challenge period: Giai đoạn thách thức, trong giai đoạn này, bất kỳ ai cũng có thể thách thức kết quả dự đoán. Nếu không có tranh chấp 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 cho thấy tính chính xác của nó;

    3. Dispute: Tranh chấp, bất kỳ thành viên của giao thức nào cũng có thể khiếu nại kết quả, dù là để nhận thưởng hay vì công bằng. Thực tế, trường hợp này hiếm khi xảy ra, vì lý thuyết trò chơi cho thấy hầu hết các thành viên tham gia đều có hành vi trung thực.

    4. Voting: Bỏ phiếu, nếu có tranh chấp, người nắm giữ token UMA sẽ bỏ phiếu để giải quyết tranh chấp. UMA là token giao thức được sử dụng để bỏ phiếu, và người tham gia sẽ được thưởng vì tham gia bỏ phiếu.

    5. Quyết toán: Giai đoạn cuối cùng là quy trình quyết toán, tức là ghi dữ liệu thực tế vào 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, bất kỳ hành vi xấu của người tham gia đều không có lợi về mặt kinh tế.

    1. Những người tham gia gửi kết quả dự đoán để bỏ phiếu cung cấp khoản ký quỹ cho hợp đồng thông minh. Nếu kết quả của họ bị thách thức, họ sẽ mất khoản ký quỹ; nếu không, họ sẽ lấy lại khoản ký quỹ và nhận thưởng. Điều này tạo ra động lực mạnh mẽ để chỉ gửi các kết quả chính xác.

    2. Những người khiếu nại kết quả dự đoán cũng phải cung cấp khoản ký quỹ. Nếu họ đúng, họ sẽ lấy lại khoản ký quỹ và nhận thưởng; nếu không, họ sẽ mất khoản ký quỹ. Điều này khuyến khích những người tham gia chỉ khiếu nại những kết quả mà họ chắc chắn là sai.

    3. Những người giải quyết tranh chấp. Họ phải ký quỹ token UMA và sẽ nhận được thưởng vì đã giải quyết tranh chấp. Nếu họ bỏ phiếu sai hoặc không bỏ phiếu, họ sẽ mất một phần số dư ký quỹ; nếu không, họ sẽ nhận được thưởng. Không có cách nào để lười biếng.

    Đáng chú ý là quá trình bỏ phiếu giải quyết tranh chấp sử dụng một lộ trình commit/reveal chia thành hai giai đoạn:

    • Commit: Người tham gia bí mật bỏ phiếu bằng cách gửi giá trị băm của phiếu bầu cho hợp đồng thông minh, điều này có nghĩa là không ai có thể xác định cách họ bỏ phiếu chỉ bằng cách xem giá trị băm.

    • Reveal: Sau khi giai đoạn bỏ phiếu kết thúc, người tham gia tiết lộ phiếu bầu của họ, hợp đồng thông minh sẽ xác minh xem nó có khớp với giá trị băm đã gửi trước đó hay không.

    Quy trình bỏ phiếu hai giai đoạn này ngăn chặn các cử tri thông đồng để phỉ báng 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ị thách thức 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 chấp trước đó kết thúc.

    Quy trình khởi động tranh chấp như sau:

    Kết luận

    Polymarket, một hệ thống đặt cược và dự đoán nhìn có vẻ đơn giản, thực ra bao gồm ba mô-đun chính, mỗi mô-đun được phát triển bởi các giao thức và đội ngũ khác nhau:

    • CTF (Conditional Token Framework): Quản lý các vị thế, tổ hợp và Share trong dự đoán, khung công việc linh hoạt này do Gnosis tạo ra rất phù hợp với thị trường dự đoán.

    • CLOB (Central Limit Order Book): Giải pháp nội bộ của Polymarket để thực hiện sổ lệnh và các đơn đặt hàng giới hạn. CLOB cho phép người dùng tham gia hiệu quả vào hệ sinh thái và giúp tập hợp thanh khoản.

    • UMA: Một oracle phi tập trung với hệ thống giải quyết tranh chấp độc đáo. UMA là trung tâm của hệ thống, truyền tải kết quả dự đoán qua blockchain.

    Mặc dù Polymarket là một hệ thống đặt cược, nhưng về mặt kỹ thuật, giao thức này đã thành công trong việc kết hợp các công nghệ từ các dự án khác nhau, điều này rất hấp dẫn với các nhà phát triển.

Nguồn
Tuyên bố từ chối trách nhiệm: Nội dung trên chỉ là ý kiến của tác giả, không đại diện cho bất kỳ lập trường nào của Followin, không nhằm mục đích và sẽ không được hiểu hay hiểu là lời khuyên đầu tư từ Followin.
Thích
Thêm vào Yêu thích
Bình luận