2025 年有哪些加密关键进展值得关注?
133 2025-01-09
Polymarket 成功结合了来自不同项目的技术,对后来者尤其有借鉴价值。
撰文:Pavel Naydanov
编译:Golem,Odaily 星球日报
编者按:Polymarket 在本次美国大选中获得了更多的关注,不仅是因为预测主题累计交易量突破 36 亿美元,而且因其相比于民调和传统媒体提前且成功预测了特朗普将会获胜,使人们更加意识到 Polymarket 不仅仅是一个下注网站,而且将成为一个更加真实可靠的新闻网站(推荐阅读:《Vitalik 新文:从预测市场到信息金融》)。Polymarket 可能是本轮区块链创新中最靓丽的「一道风景线」。
那么,具有「区块链革命」性意义的 Polymarket 在技术上是如何实现的呢?智能合约开发员 Pavel Naydanov 对 Polymarket 采用的技术进行了细致的拆分和讲解,对开发人员来说,或许具有启示意义。Odaily 星球日报将其中涉及技术实现的部分编译如下,接下来让我们深入研究该协议各个方面的技术细节吧。
Polymarket 上所有的事件结果都是代币化的:
Share token 是基于 Gnosis 条件代币框架 (CTF) 实现的 ERC-1155 ,该框架已证明其有效性并已通过多种协议测试,CTF 最多可以支持每个事件 256 个结果。
每个预测都在 CTF 中被标识,为此它们会被分配一个唯一的条件 ID,由三个参数的哈希值组成:
下图直观地展示了 CTF(条件代币框架)的工作原理
用户在下注时提供基础资产并收到 Share token,在 CTF 中称为条件代币。在预言机确定预测后,用户可以根据预测结果从 CTF 领取奖励。
当用户收到条件代币时,他们被视为已确定特定立场。在 CTF 中,立场代表每个预测的一组可能结果组合。CTF 为每个预测生成这些立场,每个立场对应于用户可以选择的可能结果组合之一。
例如:
2024 年票房最高的电影是什么?
用户可以投票认为《头脑特工队 2 》将成为票房最高的电影,或者《沙丘 2 》绝对不会成为 2024 年票房最高的电影。这种预测组合将被视为他们的立场。
CTF 提供了两种有趣的处理立场的机制:拆分和合并。拆分机制允许将单个立场分成多个单独的结果,而合并将不同的结果合并为一个立场。这些机制使用户能够灵活地管理他们的立场。
CTF 为 Polymarket 提供了四个重要优势:
另外值得一提的是,CTF 允许组织相关活动,其中用户的立场是可以合并的。但是,Polymarket 上目前还没有这样的例子。想要了解关于 CTF 的更多内容,可以在官方文档中获取。
为了进行购买,Polymarket 界面提供三种类型的订单:
目前,AMM 订单功能似乎是无效的,没有找到允许通过 AMM 购买的预测。在 Polymarket 的 Discord 中一位用户的一条评论在一定程度上解释了这种情况。
AMM 已经过时了
根据 Polymarket 的文档,AMM 被作为条件令牌框架的一部分智能合约开发。因此,AMM 用于确定 Share token 的购买价格。这种基本机制需要流动性来确保稳定的定价并降低波动性。流动性提供者需要经济激励,从每次购买中获得奖励,以保持系统运行。
可能最初 Polymarket 是完全基于 CTF 的,使用 AMM 来确定价格。但随着时间的推移,该协议开发了一种带有订单簿的混合解决方案,另外两种类型的订单(限价和市价)开始在该定制的解决方案上工作。此解决方案称为 CLOB(中央限价订单簿)或 BLOB(二进制限价订单簿)。
CLOB(中央限价订单簿)或 BLOB(二进制限价订单簿)是一种代表混合分散式订单簿的系统。在这个系统中,专门的操作员负责处理订单匹配并启动智能合约的执行。
无需过多介绍,系统如下图所示:
用户创建要执行的订单,可以是限价订单或市价订单;操作员匹配用户订单并在智能合约上启动执行,创建订单意味着创建一个根据 EIP-712 标准用用户私钥签名的数据结构。由于订单在执行前存储在链下,因此可以快速且免费地调整订单条款,甚至完全取消。
不过与订单簿和订单匹配相关的所有内容只能通过 API 访问,为方便起见,Polymarket 提供了两个客户端:一个使用 JavaScript ,一个使用 Python。
然而,Exchange.sol 智能合约是公开的,负责在 CTF 中创建用户立场。它还允许管理用户立场并在他们之间转移资产,从而确保协议内的安全性和透明度。
该智能合约已通过审计,审计报告附在存储库中。
Exchange 智能合约实际上有一个更具体的名称,即 CTFExchange.sol。它不是很大,只有大约 100 行代码,但它确实具有大量依赖项。
其中大多数是实现有限功能的小型智能合约:
与实际执行订单相关的所有内容都在智能合约 Trading.sol 中实现。遍历代码并研究智能合约也很简单。该结构通过函数明确定义了入口点:
以上所有函数只能由 operator 调用。
无论调用如何进入智能合约,结果始终相同:两个用户将根据他们的订单交换代币。
费用是根据输出的资产收取的。对于二元预测,费用是对称的,这意味着:如果用户以 0.99 美元的价格出售代币,他们将支付与以 0.01 美元的价格购买代币的买家相同的费用。
计算公式很简单,取自官方文档:
该计划的总体目标是激励市场流动性。
如果要使基于订单簿的交易所发挥作用,需要有人创建限价订单,限价订单提供允许立即执行市价单的流动性,创建限价订单的用户称为做市商。限价订单与市场价格的「紧密度」越高,市场订单的执行速度就越快,交易量也越大,这对最终用户来说无疑是有利的。此外,流动性越大,操纵市场就越困难。
为了确保足够的流动性,Polymarket 制定了一个特殊的奖励计划,以激励用户创建限价订单。限价订单越接近平均市场价格,奖励就越高。奖励将在每天午夜(UTC 时间)自动支付。
该系统以 dYdX 为蓝本,想要了解更多可查看原始 dYdX 的流动性激励计划和 Polymarket 详细的流动性奖励计算公式。
预言机用于提供预测结果 — 无论事件是否发生。预言机是协议的最重要组件之一,但它由第三方服务,而不是 Polymarket 团队,这个预言机被称为 UMA。
UMA 是一个去中心化的预言机,专门用于在区块链上记录任何类型的数据,但无法验证的数据除外。该预言机是乐观的,除非有争议,否则数据默认为是正确的。UMA 有自己的仲裁系统来解决争议,仲裁员是真实的人——UMA 生态系统的参与者,特别是 UMA 代币持有者。这个系统被称为 DVM(数据验证机制)。
以下过程用于确定预测结果并将其记录在区块链上:
整个协议都基于博弈论,任何参与者进行恶意行为在经济上考虑都是不利的。
特别值得注意的是,争议中的投票过程使用 commit/reveal 方案分为两个阶段:
这种两阶段投票过程可防止选民串通以诋毁预言机或攻击依赖预测结果的服务。同时预测结果可以多次受到质疑,在这种情况下,UMA 允许在之前的争议结束后重新启动决策过程。
争议发起过程如下:
Polymarket 这个看似简单的博彩和预测系统实际上包含三个主要模块,每个模块由不同的协议和团队开发:
虽然 Polymarket 是一个下注系统,但从技术上讲,该协议成功地结合了来自不同项目的技术,对开发人员特别有吸引力。