Cointime

扫码下载App
iOS & Android

超详细揭秘 Polymarket 背后的技术实现方式

编者按:Polymarket 在本次美国大选中获得了更多的关注,不仅是因为预测主题累计交易量突破 36 亿美元,而且因其相比于民调和传统媒体提前且成功预测了特朗普将会获胜,使人们更加意识到 Polymarket 不仅仅是一个下注网站,而且将成为一个更加真实可靠的新闻网站(推荐阅读:《Vitalik 新文:从预测市场到信息金融》)。Polymarket 可能是本轮区块链创新中最靓丽的「一道风景线」。

那么,具有「区块链革命」性意义的 Polymarket 在技术上是如何实现的呢?智能合约开发员 Pavel Naydanov 对 Polymarket 采用的技术进行了细致的拆分和讲解,对开发人员来说,或许具有启示意义。Odaily 星球日报将其中涉及技术实现的部分编译如下,接下来让我们深入研究该协议各个方面的技术细节吧。

CTF:使结果代币化

Polymarket 上所有的事件结果都是代币化的:

  • 此类代币可以称为 Share token;
  • Share 是用基础资产购买的,因此它们是完全抵押的;
  • Share 可以被卖出以获得基础资产。

Share token 是基于 Gnosis 条件代币框架 (CTF) 实现的 ERC-1155 ,该框架已证明其有效性并已通过多种协议测试,CTF 最多可以支持每个事件 256 个结果。

每个预测都在 CTF 中被标识,为此它们会被分配一个唯一的条件 ID,由三个参数的哈希值组成:

  • 预言机:将确定事件结果的预言机的地址,这确保只有指定的预言机才能结算预测;
  • 问题 ID:预测标识符,由预测题的创建者设置。这可以是一个简单的计数器,每个新预测都会之前的预测题上增加一个计数,也可以是使用文本和其他数据哈希的更复杂的方案;
  • outcomeSlotCount:预测的可能结果数。

下图直观地展示了 CTF(条件代币框架)的工作原理

用户在下注时提供基础资产并收到 Share token,在 CTF 中称为条件代币。在预言机确定预测后,用户可以根据预测结果从 CTF 领取奖励。

当用户收到条件代币时,他们被视为已确定特定立场。在 CTF 中,立场代表每个预测的一组可能结果组合。CTF 为每个预测生成这些立场,每个立场对应于用户可以选择的可能结果组合之一。

例如:

2024 年票房最高的电影是什么?

  • 头脑特工队 2 
  • 疯狂的麦克斯 4 
  • 死侍 3 
  • 小丑 2 
  • 卑鄙的我 4 
  • 沙丘 2 
  • 其他

用户可以投票认为《头脑特工队 2 》将成为票房最高的电影,或者《沙丘 2 》绝对不会成为 2024 年票房最高的电影。这种预测组合将被视为他们的立场。

CTF 提供了两种有趣的处理立场的机制:拆分和合并。拆分机制允许将单个立场分成多个单独的结果,而合并将不同的结果合并为一个立场。这些机制使用户能够灵活地管理他们的立场。

CTF 为 Polymarket 提供了四个重要优势:

  • Share token 可用于确认用户对特定预测结果的投票;
  • 实现了一个灵活的系统,将用户的投票组合成各种立场;
  • 根据预言机的信号,结果计算的责任委托给 CTF;
  • 根据获胜结果的 Share token 数量计算奖励。

另外值得一提的是,CTF 允许组织相关活动,其中用户的立场是可以合并的。但是,Polymarket 上目前还没有这样的例子。想要了解关于 CTF 的更多内容,可以在官方文档中获取。

订单机制

为了进行购买,Polymarket 界面提供三种类型的订单:

  • Market ——以当前市场价格立即购买;
  • Limit——延迟订单,允许您指定达到该价格后进行购买的价格;
  • AMM——以类似于去中心化交易所的价格自动确定的价格购买,基于池中的储备金额。

目前,AMM 订单功能似乎是无效的,没有找到允许通过 AMM 购买的预测。在 Polymarket 的 Discord 中一位用户的一条评论在一定程度上解释了这种情况。

AMM 已经过时了


根据 Polymarket 的文档,AMM 被作为条件令牌框架的一部分智能合约开发。因此,AMM 用于确定 Share token 的购买价格。这种基本机制需要流动性来确保稳定的定价并降低波动性。流动性提供者需要经济激励,从每次购买中获得奖励,以保持系统运行。

可能最初 Polymarket 是完全基于 CTF 的,使用 AMM 来确定价格。但随着时间的推移,该协议开发了一种带有订单簿的混合解决方案,另外两种类型的订单(限价和市价)开始在该定制的解决方案上工作。此解决方案称为 CLOB(中央限价订单簿)或 BLOB(二进制限价订单簿)。

CLOB 和 BLOB

CLOB(中央限价订单簿)或 BLOB(二进制限价订单簿)是一种代表混合分散式订单簿的系统。在这个系统中,专门的操作员负责处理订单匹配并启动智能合约的执行。

无需过多介绍,系统如下图所示:

用户创建要执行的订单,可以是限价订单或市价订单;操作员匹配用户订单并在智能合约上启动执行,创建订单意味着创建一个根据 EIP-712  标准用用户私钥签名的数据结构。由于订单在执行前存储在链下,因此可以快速且免费地调整订单条款,甚至完全取消。

不过与订单簿和订单匹配相关的所有内容只能通过 API 访问,为方便起见,Polymarket 提供了两个客户端:一个使用 JavaScript ,一个使用 Python。

然而,Exchange.sol 智能合约是公开的,负责在 CTF 中创建用户立场。它还允许管理用户立场并在他们之间转移资产,从而确保协议内的安全性和透明度。

该智能合约已通过审计,审计报告附在存储库中。

智能合约

Exchange 智能合约实际上有一个更具体的名称,即 CTFExchange.sol。它不是很大,只有大约 100 行代码,但它确实具有大量依赖项。

其中大多数是实现有限功能的小型智能合约:

  • BaseExchange.sol:实现接收 ERC-1155 代币能力的抽象智能合约,还负责防止重入攻击;
  • Auth.sol:角色管理器,定义验证函数和修饰符以设置角色,CTFExchange.sol 的 admin 和 operator;
  • Assets.sol:定义两种资产,基础资产(抵押品)和 CTF 地址;
  • Fees.sol:定义协议费用;
  • Pausable.sol:定义暂停智能合约操作的能力,协议同意在出现不可预见的情况时采用的一种中心化形式。仅适用于 admin 角色;
  • AssetOperation.sol:定义基础资产和 CTF 的操作。包括立场的转移、拆分和合并;
  • Signature.sol:定义用于验证订单时使用的用户签名的代码;
  • Hashing.sol:定义订单参数的哈希值,用于签名验证;
  • Registry.sol:定义在系统中注册预测并为预测注册代币的过程。

与实际执行订单相关的所有内容都在智能合约 Trading.sol 中实现。遍历代码并研究智能合约也很简单。该结构通过函数明确定义了入口点:

  • fillOrder() — 在创建订单的用户和用户选择的挂单(另一个订单)之间执行订单;
  • fillOrders() — 与 fillOrder() 相同,但用于订单列表;
  • matchOrders() — operator 选择两个不同的订单并执行它们。

以上所有函数只能由 operator 调用。

无论调用如何进入智能合约,结果始终相同:两个用户将根据他们的订单交换代币。

协议费用

费用是根据输出的资产收取的。对于二元预测,费用是对称的,这意味着:如果用户以 0.99 美元的价格出售代币,他们将支付与以 0.01 美元的价格购买代币的买家相同的费用。

计算公式很简单,取自官方文档:

流动性奖励计划

该计划的总体目标是激励市场流动性。

如果要使基于订单簿的交易所发挥作用,需要有人创建限价订单,限价订单提供允许立即执行市价单的流动性,创建限价订单的用户称为做市商。限价订单与市场价格的「紧密度」越高,市场订单的执行速度就越快,交易量也越大,这对最终用户来说无疑是有利的。此外,流动性越大,操纵市场就越困难。

为了确保足够的流动性,Polymarket 制定了一个特殊的奖励计划,以激励用户创建限价订单。限价订单越接近平均市场价格,奖励就越高。奖励将在每天午夜(UTC 时间)自动支付。

该系统以 dYdX 为蓝本,想要了解更多可查看原始 dYdX 的流动性激励计划和 Polymarket 详细的流动性奖励计算公式。

预言机

预言机用于提供预测结果 — 无论事件是否发生。预言机是协议的最重要组件之一,但它由第三方服务,而不是 Polymarket 团队,这个预言机被称为 UMA。

UMA 是一个去中心化的预言机,专门用于在区块链上记录任何类型的数据,但无法验证的数据除外。该预言机是乐观的,除非有争议,否则数据默认为是正确的。UMA 有自己的仲裁系统来解决争议,仲裁员是真实的人——UMA 生态系统的参与者,特别是 UMA 代币持有者。这个系统被称为 DVM(数据验证机制)。

以下过程用于确定预测结果并将其记录在区块链上:

  1. Statement:预测与奖励一起添加到预言机中。任何成功对预测结提出异议果的人都可以领取奖励;
  2. Challenge period:挑战期,在此期间,任何人都可以质疑预测结果。如果没有发生挑战并且时间到期,则预测结果被视为已准备好进行最终结算,这表明其准确性;
  3. Dispute:争议,任何协议参与者都可以对结果提出异议,无论是为了索取奖励还是为了公平。实际上,这种情况很少发生,因为博弈论表明大多数参与者的行为都是诚实的。
  4. Voting:投票,如果发起争议,UMA 代币持有者将投票解决争议。UMA 是用于投票的协议代币,参与者因参与投票而获得奖励。
  5. 结算:最后阶段是结算过程,即在区块链上实际记录数据。在此之后,预测结果可以被认为是可靠的。

整个协议都基于博弈论,任何参与者进行恶意行为在经济上考虑都是不利的。

  1. 提交预测结果进行投票的参与者向智能合约提供抵押品。如果他们的结果受到质疑,他们将失去抵押品;否则,他们将取回抵押品并获得奖励。这产生了强烈的动机,只提交准确的结果。
  2. 对预测结果提出异议的参与者也会提供抵押品。如果他们是正确的,他们就会拿回抵押品并获得奖励;否则,他们就会失去抵押品。这激励参与者只挑战那些他们确信是错误的结果。
  3. 解决争议的参与者。他们必须质押 UMA 代币,并将因解决争议而获得奖励。如果他们投票错误或根本不投票,他们将失去部分质押余额;否则,他们将获得奖励。没有办法懈怠。

特别值得注意的是,争议中的投票过程使用 commit/reveal 方案分为两个阶段:

  • Commit:提交,参与者通过将投票的哈希值提交给智能合约来秘密投票,这意味着没有人可以仅通过查看哈希值来辨别参与者是如何投票的。
  • Reveal:揭示,投票阶段结束后,参与者揭示他们的选票,智能合约会验证他们是否与之前提交的哈希值匹配。

这种两阶段投票过程可防止选民串通以诋毁预言机或攻击依赖预测结果的服务。同时预测结果可以多次受到质疑,在这种情况下,UMA 允许在之前的争议结束后重新启动决策过程。

争议发起过程如下:

结论

Polymarket 这个看似简单的博彩和预测系统实际上包含三个主要模块,每个模块由不同的协议和团队开发:

  • CTF(条件代币框架):管理预测中的组合、立场和 Share, Gnosis 创建的这个灵活的框架非常适合预测市场。
  • CLOB(中央限价订单簿):Polymarket 用于实施订单簿和限价订单的内部解决方案。CLOB 使用户能够有效地参与生态系统并帮助聚合流动性。
  • UMA:一个具有独特争议解决仲裁系统的去中心化预言机。UMA 是系统的核心,通过区块链传输预测结果。

虽然 Polymarket 是一个下注系统,但从技术上讲,该协议成功地结合了来自不同项目的技术,对开发人员特别有吸引力。

评论

所有评论

推荐阅读

  • Fundstrat数字资产策略主管:目前韩国泡菜溢价约为0%,或表明BTC还有上升空间

    Fundstra 数字资产策略主管Sean Farrell在最新的客户报告中表示,“朋友和家人”又开始询问加密货币了,从可量化的市场指标来看,当前的形势并没有表现出三月份反弹或2021年末周期性高峰的泡沫,比如目前韩国市场的泡菜溢价指标数据约为0%,表明韩国交易者缺乏过度兴奋,通常情况下若市场达到顶峰泡菜溢价会飙升至10%以上,而过去一周的上涨不应被视为单纯的投机性繁荣,比特币可能还有上升空间。

  • Solana联创称Solana总是比ZK快,Matter Labs CEO予以反驳

    Solana 联合创始人 toly 于 X 回复网友时表示:“ZK 比传统计算慢。所以 Solana 总是比 ZK 快,因为没有宗教原因限制全节点容量。” 对此,ZKsync 开发商 Matter Labs 首席执行官 Alex Gluchowski 回应称:“ZK 总是比 Solana 更快,因为它是由数学而不是验证器来保护的,这意味着一个或几个验证器(用于冗余)就足够了,你不需要等待数千个节点之间达成共识。”

  • 美众议员Mike Flood:期待与下一任SEC主席合作撤销反加密银行政策SAB 121

    美国众议院将对众议员 Mike Flood 近日表示:“尽管遭到广泛反对,SAB 121 仍作为一项法规有效运作,尽管它从未经过正常的《行政程序法》程序。” Flood 称:“我期待与下一任 SEC 主席合作,撤销 SAB 121。无论 Gary Gensler 主席是自行离职,还是特朗普总统将履行其(解雇 Gensler 的)承诺,新政府都有绝佳的机会开启 Gensler 离任后的新时代。” 其补充道:“Gensler 反对今年早些时候在两党基础上通过众议院的数字资产监管框架,这应该不足为奇。71 名民主党人与众议院共和党人一起通过了这一常识性框架。尽管民主党领导的参议院拒绝接受,但它代表了加密货币的突破时刻,并可能在明年 1 月下一届国会开始时为统一的共和党政府的工作提供信息。”

  • 印度亿万富翁阿达尼因贿赂案被美SEC传唤解释立场

    印度亿万富翁高塔姆·阿达尼及其侄子萨加尔·阿达尼被美国证券交易委员会(SEC)传唤,要求他们解释有关为赢得太阳能发电合同而支付超过2.5亿美元贿赂的指控。据印度报业托拉斯(PTI)报道,传票已送达阿达尼家族位于印度西部城市艾哈迈达巴德的住所,要求他们在21天内作出回复。PTI援引11月21日通过纽约东区法院发出的通知称,如果阿达尼家族未能按时回复,将对他们作出缺席判决。

  • 美SEC:2024财年共采取583项执法行动,获得82亿美元史上最高财政救济

    美国 SEC 近日宣布,2024 财年执法力度创历史新高,凸显了其为维护市场诚信和投资者保护所做的努力。该机构透露:“2024 财年共提起 583 项执法行动,同时获得了 82 亿美元的财政救济(financial remedies),这是 SEC 历史上的最高金额。” 与 2023 年相比,SEC 发起的执法行动增加了 14%。SEC 主席 Gary Gensler 对执法部门的作用表示赞赏:“执法部门是坚定的警察,无论在何处,都会遵循事实和法律追究违法者的责任。正如今年的结果表明的那样,该部门有助于促进我们资本市场的诚信,使投资者和发行人都受益。”

  • Techub News ·

    Helius:从数据出发,衡量 Solana 的真实去中心化程度

    Solana 的去中心化在许多关键指标上,包括中本聪系数、验证者和质押节点的地理分布、开发者去中心化和治理基准等方面,都与业内同行不相上下,甚至更胜一筹,而客户端的多样性目前仍是一个明显的问题,新的 Firedancer 客户端旨在解决这一问题。

  • 美众议员:SEC专员Hester Peirce可能成为SEC新代理主席

    美国国会众议员French Hill在北美区块链峰会(NABS)上透露,共和党籍SEC专员Hester Peirce“很可能”成为美国证券交易委员会(SEC)的新代理主席。他指出,现任主席Gary Gensler将在2025年1月20日卸任后,共和党将接管SEC,Peirce有望接替其职位。

  • 马斯克:在拜登和哈里斯竞选活动中不断散布虚假消息的传统媒体仍然存在

    Elon Musk 于 X 发文表示:“在拜登和哈里斯竞选活动中不断散布虚假消息的传统媒体宣传机器仍然存在,并且仍在进行宣传。”

  • Ripple首席法务官向SEC提供新领导层改革加密规则的建议

    Ripple 首席法务官 Stuart Alderoty 本周于 X 发文,向即将上任的美国 SEC 领导层分享了他的建议。Alderoty 对过渡团队有效解决加密货币监管问题的能力表示有信心,并敦促采取多项行动。他写道:“我相信过渡团队会考虑到加密货币的这些基本条件,做出正确的决定。” Alderoty 建议立即结束与欺诈无关的加密货币诉讼,并通过确保 SEC 委员 Mark Uyeda 和 Hester Peirce 继续任职来促进合作。他强调需要与国会和金融监管机构合作制定明确、直接的加密货币规则,而不是默认 SEC 的管辖权。 此外,他呼吁放弃 2018 年 Hinman 的演讲和 2019 年的数字资产分析框架,提高《信息自由法》(FOIA)流程的透明度,并通过监察长办公室解决过去 SEC 的问题,采取措施恢复公众信任和问责制。

  • Bitwise CEO提醒ETHW并不适合所有投资者,存在较高风险和高波动性

    Bitwise首席执行官Hunter Horsley在X平台发文称,很开心看到Bitwise以太坊交易所交易基金ETHW、iShares、以及富达本周五均有资金流入,提醒ETHW并非根据1940年美国《投资公司法》注册的投资公司,因此不受该法保护,ETHW并不适合所有投资者,存在较高风险和高波动性。