• Duel 已开放 在 Robinhood Chain 上
  • 发射一场对决 两个代币,三个池子,一笔交易
  • 回合结束倒计时 --:--:--
  • 四小时一回合 胜方回购设有价格上限
  • 流动性锁定 永不解锁,团队不持有代币

合约

Duel 由六个合约组成,其中五个部署在 Robinhood Chain 上,一个从未部署,构建于该链的 Uniswap V4 部署之上。使用 Solidity 0.8.26、Foundry、OpenZeppelin 和 v4-core。对决存在于链上:应用通过本站服务器或直接读取链上数据,并从索引链上事件的索引器读取对决的历史。

合约作用
DuelFactory在一笔交易中发射一场对决:两个代币、三个池子、锁定的仓位、创建者的发射买入。持有未来对决的受限配置;每次发射都锁定发射者读取的配置(configHash),若期间另一配置已生效则失败。
DuelHook所有对决的三个池子共用的 Uniswap V4 钩子:手续费、防狙击税、切换销毁、再平衡、占比平均值、回合与回购,以及每场对决的奖池、创建者手续费和协议手续费。
DuelToken每个阵营的普通 ERC-20:10 亿枚,可销毁,没有所有者,支持许可(EIP-2612)。
DuelRouter应用进行交易所用的精确输入路由器,也接受卖出时的许可;当其 ETH 池无法一次承接卖出时,只有它会分多次卖出一个阵营(SALE_PASSES),并把该池即便如此仍无法买回的部分经另一个阵营卖出(sell)。任何 V4 路由器同样可用,但只做一次兑换。
DuelLens为应用汇总对决状态的只读视图。
DuelSimulator从不部署。应用会在一次只读调用中把它的代码放到你自己的地址上(state override),让一笔交易像你实际发送那样执行,并告诉你会收到多少,以及池子再平衡后占比会落在哪里。

版本

这个发射平台是 Duel V1,代号 Petunia。它的每个合约都会注明这一点(工厂、钩子、路由器和 lens 上的 VERSION() 与 CODENAME()),它发射的每个代币也会永久记录(LAUNCHPAD_VERSION() 与 LAUNCHPAD_CODENAME()):对决的“简介”栏按代币的记录显示它。以后另行部署的发射平台会使用下一个版本号和自己的代号,它的代币也会记录自己的版本。

地址

Duel 依赖以下 Robinhood Chain 合约:

Uniswap V4 PoolManager0x8366a39CC670B4001A1121B8F6A443A643e40951
Universal Router(主网)0x204FAca1764B154221e35c0d20aBb3c525710498
V4 Quoter0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94
Permit20x000000000022D473030F116dDEE9F6B43aC78BA3

钩子

V4 钩子的地址中编码了它实现的回调列表。Duel 的钩子使用:

回调作用
beforeInitialize只有工厂合约可以在钩子上开设池子,且只能是已登记对决的池子。
beforeAddLiquidity只有工厂合约可以在发射时添加流动性。
beforeRemoveLiquidity始终回滚:流动性永久锁定。
beforeDonate始终回滚。
beforeSwap结算已结束的回合,更新平均值,收取手续费和税。
afterSwap收取兑换未指定的那一侧金额上应付的手续费,确认事先收费的兑换已完全成交,然后对三个池子再平衡。

手续费通过钩子的 return delta 收取,因此无论由谁路由兑换,都会生效。

谁能做什么

角色能做的事
任何人发射、交易、结算已结束回合、触发创建者或金库领取、在 48 小时过后应用已提议的条款
对决创建者领取该对决的创建者手续费;把角色连同手续费转让给接受它的地址
工厂所有者暂停新发射;在 48 小时后更改未来对决的受限条款或协议金库。当前金库在领取时接收累计协议手续费。立即降低所有对决兑换手续费中的协议份额,或重新调高,但绝不超过其条款。
任何人都不能撤出流动性、增发代币、移动奖池、更改现有对决中交易者支付的手续费或其创建者的份额、把协议份额提高到对决条款之上、夺取对决的创建者角色、升级合约

更多

  • 安全:保护资金的机制,以及如何验证。
  • 基于 Duel 开发:在你自己的代码中读取对决和进行交易。