超详细揭秘Polymarket背后的技术实现方式
原文来自 Pavel Naydanov
编译 | Odaily星球日报 Golem(@web3_golem)
编者按:Polymarket 在本次美国大选中获得了更多的关注,不仅是因为预测主题累计交易量突破 36 亿美元,而且因其相比于民调和传统媒体提前且成功预测了特朗普将会获胜,使人们更加意识到 Polymarket 不仅仅是一个下注网站,而且将成为一个更加真实可靠的“新闻网站”(推荐阅读:《Vitalik 新文:从预测市场到信息金融》)。Polymarket 可能是本轮区块链创新中最靓丽的“一道风景线”。
那么,具有“区块链革命”性意义的 Polymarket 在技术上是如何实现的呢?智能合约开发员 Pavel Naydanov 对 Polymarket 采用的技术进行了细致的拆分和讲解,对开发人员(尤其是搭建预测市场的后起之秀们)来说,具有启示意义。Odaily星球日报将其中涉及技术实现的部分编译如下,接下来让我们深入研究该协议各个方面的技术细节吧。
为了进行购买,Polymarket 界面提供三种类型的订单:
Market ——以当前市场价格立即购买;
Limit——延迟订单,允许您指定达到该价格后进行购买的价格;
AMM——以类似于去中心化交易所的价格自动确定的价格购买,基于池中的储备金额。
目前,AMM 订单功能似乎是无效的,没有找到允许通过 AMM 购买的预测。在 Polymarket 的 Discord 中一位用户的一条评论在一定程度上解释了这种情况。
BLOB
CLOB(中央限价订单簿)或 BLOB(二进制限价订单簿)是一种代表混合分散式订单簿的系统。在这个系统中,专门的操作员负责处理订单匹配并启动智能合约的执行。
无需过多介绍,系统如下图所示:
用户创建要执行的订单,可以是限价订单或市价订单;操作员匹配用户订单并在智能合约上启动执行,创建订单意味着创建一个根据 EIP-712 标准用用户私钥签名的数据结构。由于订单在执行前存储在链下,因此可以快速且免费地调整订单条款,甚至完全取消。
不过与订单簿和订单匹配相关的所有内容只能通过 API 访问,为方便起见,Polymarket 提供了两个客户端:一个使用 JavaScript ,一个使用 Python。
然而,Exchange.sol 智能合约是公开的,负责在 CTF 中创建用户立场。它还允许管理用户立场并在他们之间转移资产,从而确保协议内的安全性和透明度。
该智能合约已通过审计,审计报告附在存储库中。
官方文档:
服务,而不是 Polymarket 团队,这个预言机被称为UMA。
UMA 是一个去中心化的预言机,专门用于在区块链上记录任何类型的数据,但无法验证的数据除外。该预言机是乐观的,除非有争议,否则数据默认为是正确的。UMA 有自己的仲裁系统来解决争议,仲裁员是真实的人——UMA 生态系统的参与者,特别是 UMA 代币持有者。这个系统被称为 DVM(数据验证机制)。
以下过程用于确定预测结果并将其记录在区块链上:
Statement:预测与奖励一起添加到预言机中。任何成功对预测结提出异议果的人都可以领取奖励;
Challenge period:挑战期,在此期间,任何人都可以质疑预测结果。如果没有发生挑战并且时间到期,则预测结果被视为已准备好进行最终结算,这表明其准确性;
Dispute:争议,任何协议参与者都可以对结果提出异议,无论是为了索取奖励还是为了公平。实际上,这种情况很少发生,因为博弈论表明大多数参与者的行为都是诚实的。
Voting:投票,如果发起争议,UMA 代币持有者将投票解决争议。UMA 是用于投票的协议代币,参与者因参与投票而获得奖励。
结算:最后阶段是结算过程,即在区块链上实际记录数据。在此之后,预测结果可以被认为是可靠的。
整个协议都基于博弈论,任何参与者进行恶意行为在经济上考虑都是不利的。
提交预测结果进行投票的参与者向智能合约提供抵押品。如果他们的结果受到质疑,他们将失去抵押品;否则,他们将取回抵押品并获得奖励。这产生了强烈的动机,只提交准确的结果。
对预测结果提出异议的参与者也会提供抵押品。如果他们是正确的,他们就会拿回抵押品并获得奖励;否则,他们就会失去抵押品。这激励参与者只挑战那些他们确信是错误的结果。
解决争议的参与者。他们必须质押 UMA 代币,并将因解决争议而获得奖励。如果他们投票错误或根本不投票,他们将失去部分质押余额;否则,他们将获得奖励。没有办法懈怠。
特别值得注意的是,争议中的投票过程使用 commit/reveal 方案分为两个阶段:
Commit:提交,参与者通过将投票的哈希值提交给智能合约来秘密投票,这意味着没有人可以仅通过查看哈希值来辨别参与者是如何投票的。
Reveal:揭示,投票阶段结束后,参与者揭示他们的选票,智能合约会验证他们是否与之前提交的哈希值匹配。
这种两阶段投票过程可防止选民串通以诋毁预言机或攻击依赖预测结果的服务。同时预测结果可以多次受到质疑,在这种情况下,UMA 允许在之前的争议结束后重新启动决策过程。
争议发起过程如下:
美国大选之后,Polymarket 及预测市场的热潮还会存在多久?
胜过大选传统民调,Polymarket 是如何做到的?