阿斯特:一个伪DEX

本文为机器翻译
展示原文

Aster是一个“去中心化”的永续合约交易所,但实际上它是中心化的,由团队控制。这引发了关于伪去中心化永续合约交易所的广泛讨论。此外,Aster也与几年前导致关闭币安(Binance)的一些问题有几分相似。

Aster 主要运行在BNB智能链上。而 BNB 智能链本身就有着一段不光彩的历史,币安曾对用户资金行使近乎完全的独立控制权。因此,Aster 中心化的第二个论点是,币安此前利用特权冻结用户资金,并阻止完全有效的私钥在BNB智能链上运行。币安声称这些措施是为了应对黑客攻击,以保护用户资金。好吧,也许吧,随便吧。

当然,这意味着BNB智能链上的所有内容都处于币安的掌控之下,币安可以单方面决定某些操作是否符合用户资金安全的最佳利益,并阻止币安选择的任何操作。这种说法在某种程度上是正确的,但也过于简化。我们并非仅仅因为币安支持 Aster 平台、币安控制BNB智能链以及BNB智能链包含以下代码就断言 Aster 是中心化的:

 // 这是由于 Tendermint IAVL Merkle 证明验证漏洞而引入的。
var NanoBlackList = []common.Address{
common.HexToAddress("0x489A8756C18C0b8B24EC2a2b9FF3D4d447F79BEc"),
common.HexToAddress("0xFd6042Df3D74ce9959922FeC559d7995F3933c55"),
// 测试账号
common.HexToAddress("0xdb789Eb5BDb4E559beD199B8b82dED94e1d056C9"),
}

那么,我们先来看看存放 Aster 大部分资金的 Vault 合约。这是一个可升级的代理合约,其配置方式使得团队可以轻易地将所有资金取走。这不仅是事实,而且在平台审计报告中也有书面记录。报告大致内容是,在最初的设计中,一个地址就可以窃取 Vault 中的所有资金。后来,审计人员发现了这个问题,团队承诺迁移到多重签名机制。Aster 团队在其网站上发布的审计报告中也明确记录了这一点。这足以证明其真实性。

接下来,我们将详细介绍团队可以用来操控平台的各种控制手段。然后,我们将讨论团队(且仅团队)如何利用这些控制手段来侵占用户资产。这一切都不需要偏离系统的预期功能。没错,这些行为构成盗窃,因此与团队对平台的既定目标不符。但是,银行高管不会在申请表的“你为什么想要这份银行执照?”一栏写上“这样我们就可以偷钱了”。关键在于,所有这些“攻击”都可以利用Aster系统中精心设计的控制机制来实现。

在有人说“但是DEX已经有了去中心化治理”之前,你需要知道,虽然未来确实有去中心化治理的计划,但目前的情况如上所述:

https://x.com/Aster_DEX/status/1996531726294913423

所以这里存在某种管理员,但它不是去中心化自治组织(DAO)。现在我们可以讨论管理员的权限了。

首先,管理员可以暂停和恢复系统。这意味着,从总体上看,他们在提取资金时不会感到任何时间压力。暂停按钮使得协调、时机把握和同步都变得轻而易举。

该团队还能够动态调整一系列参数,包括费用和未平仓合约限额。这意味着他们可以向用户收取高于预期的费用,移除合约,并通过降低系统杠杆率来强制清算等,而这些操作往往是用户无法预料的。

团队还可以更改交易所的定价来源。那么,我们是否可以合理地问,团队是否经常使用此管理界面来执行此类操作?答案是肯定的。以下是一个EOA (非自动化、链下控制、人工操作的管理地址)持续发送配置更新的示例:

“批量更新…”调用会生成类似这样的长串交易配置更新列表:

然后,“Execute Tp Sl or Liq”调用会产生如下更改

现在,为了更清楚地说明这一点,让我们快速了解一下这些管理控件是如何实现的。这并非因为它很复杂,而是因为它非常简单易懂。以下是一些 TradingConfig 控件

函数 setTradingSwitches(
bool limitOrder, bool executeLimitOrder, bool marketTrade,
bool userCloseTrade, bool tpSlCloseTrade, bool liquidateTradeSwitch,
bool predictBet, bool predictSettle
)外部覆盖{
LibAccessControlEnumerable.checkRole(Constants.MONITOR_ROLE);
uint tradeSwitches = 0;
tradeSwitches = tradeSwitches.setOrClearBit(uint8(TradingSwitch.LIMIT_ORDER), limitOrder);
tradeSwitches = tradeSwitches.setOrClearBit(uint8(TradingSwitch.EXECUTE_LIMIT_ORDER), executeLimitOrder);
tradeSwitches = tradeSwitches.setOrClearBit(uint8(TradingSwitch.MARKET_TRADING), marketTrade);
tradeSwitches = tradeSwitches.setOrClearBit(uint8(TradingSwitch.USER_CLOSE_TRADING), userCloseTrade);
tradeSwitches = tradeSwitches.setOrClearBit(uint8(TradingSwitch.TP_SL_CLOSE_TRADING), tpSlCloseTrade);
tradeSwitches = tradeSwitches.setOrClearBit(uint8(TradingSwitch.LIQUIDATE_TRADING), liquidateTradeSwitch);
tradeSwitches = tradeSwitches.setOrClearBit(uint8(TradingSwitch.PREDICTION_BET), predictBet);
tradeSwitches = tradeSwitches.setOrClearBit(uint8(TradingSwitch.PREDICTION_SETTLE), predictSettle);
LibTradingConfig.setTradingSwitches(uint16(tradeSwitches));
}
function setExecutionFeeUsd(uint256 executionFeeUsd) external override {
LibAccessControlEnumerable.checkRole(Constants.ADMIN_ROLE);
LibTradingConfig.setExecutionFeeUsd(executionFeeUsd);
}

function setMaxTpRatioForLeverage(address pairBase, MaxTpRatioForLeverage[] calldata maxTpRatios) external override {
LibAccessControlEnumerable.checkRole(Constants.PAIR_OPERATOR_ROLE);
require(pairBase != address(0) && IPairsManager(address(this)).getPairForTrading(pairBase).base != address(0), "TradingConfigFacet: 交易对不存在");
LibTradingConfig.setMaxTpRatioForLeverage(pairBase, maxTpRatios);
}

您可以看到每个函数开头都调用了 checkRole(SOME_ROLE)。MONITOR_、ADMIN_ 和 OPERATOR_ 角色各有一个控件。这里有一些不同的管理员角色以及一些相关的管理机制,我们这里就不赘述了。

关键在于这里存在特权管理员。没错,该系统可能很大程度上依赖多重签名,因此许多控制措施需要多位执行官签字才能进行更改。但这与上文提到的2024年9月审计报告中指出的问题完全相同。该系统的设计、构建、部署以及在实际运行中,其集中化程度与任何传统的金融业务一样,都需要多位经理签字才能进行更改。

因此,就像 Hyperliquid 一样,即使不去担心系统的链下部分在顺境中是否诚实运行,团队也可以强制系统部分将所有资金支付给链上指定的账户。

这具体如何运作呢?例如,团队可以将定价来源重定向到团队控制的预言机,然后确保团队关联的仓位能够获得所有资金。同样,团队对资金费率水平、杠杆限额以及各种清算相关参数都拥有足够的控制权,从而能够随着时间的推移逐步收回存款。

听起来是不是有点复杂,甚至有点牵强附会?你是不是忘了团队可以轻易盗取大量用户资产,而他们的审计人员发现了这一点,他们也承认了,并且最终还是把审计报告发布在了网站上?任何漏洞利用都比这复杂得多!这里描述的最简单的漏洞利用是“他们打开账户取走资金”,但实际情况远比这复杂得多。而且,该团队对平台旗下的稳定币 Aster USDF 也拥有类似的控制权,可以 完全冻结和扣押。没错, 另一份审计报告也指出了其中一些问题。

代码呢?闻起来像BNB信标链

我们在上面详细引用了代码。但这些代码片段主要来自区块链浏览器。区块链浏览器并非存放代码的最佳场所——查看历史记录很困​​难——而且区块链浏览器当然也无法托管非智能合约代码。Aster 还有其他组件,所以……这是怎么回事?

官方链接并未指向代码:

就连审计结果也指向了一些随机地点:

这里
这里

github.com/astherus-contract 仓库里有一些代码,但不是最新的:

还有一个github.com/asterdexcom仓库,其中包含一些智能合约代码和较新的活动,但除此之外没有太多其他内容:

如果你去查看其中一些仓库的提交历史,就会发现这些是开发仓库,团队成员全部都是像 alex-degen、cody-z 和 mark-c 这样的化名。所以,这看起来又是一场荒谬的闹剧:

那是现在已经关闭的BNB信标链,团队在公开否认很久之后才承认该系统是闭源的。我们和 V 以及 zoro 之间有过很多公开的争论,他们似乎也多次承认过这一点。

当时,大概是2022年末/2023年初,他们发布了新的文档和代码,实际上承认了整个项目都是骗局。最终,一切都被关闭了。哦,对了,当时还有大量没有抵押品的资产,这也是导致BUSD关闭的原因之一。

如果 cody-z 真的是 zorobytes,那大概不会有人感到震惊。毕竟, BNB Beacon Chain 的最初目标之一就是提供一个高吞吐量的去中心化交易平台。就像 Aster 那样。真的。这是 2022 年年中的情况

在我们提出质疑后,团队公开承认编写了新的代码和文档。他们公开且书面承认,这是为了回应我们关于他们长期以来声称的开放系统的质疑:

https://x.com/v_bnbchain/status/1612066505784721408?s=20

当时的一系列问题,嗯,都被留待以后解决:

https://x.com/v_bnbchain/status/1614621429399719936

BNB信标链并没有履行承诺,也没有解决所有问题,而是在数据完全澄清之前就被关闭了。哦,对了,当时他们承诺过未来会实现去中心化:

BNB Beacon Chain 的去中心化交易所(DEX)曾模仿过当时许多流行的 DeFi 产品。而它所宣称的去中心化,看起来确实很像很多东西(提示:包括 Aster)。但它始终是一个中心化的、部分闭源的、功能和行为怪异的系统。简而言之:它是个骗局, BUSD被纽约州金融服务部(NYDFS)大幅削减,最终整个BNB Beacon DEX 项目被关闭。现在看来,Aster 似乎与这堆烂摊子有很多相似之处。

所以?

祝你们这次能顺利把项目命名为 Aster,并且模仿 Hyperliquid,而不是像上次那样模仿你们都非常喜欢的 2021/2022 年的 DEX。

此前, BNB Chain 团队错误地将我们的问题描述为断言,并且通常很难澄清一切都没问题:

https://x.com/v_bnbchain/status/1611900690833760260?s=20

“你的程序运行后出现了 X 问题。你能解释一下吗?”这是一个事实陈述,后面跟着一个问题。请把以上内容看作是我们的问题。就像上次你发布了新的代码和文档,然后在你的回答中附上链接,暗示我们没有仔细阅读,而实际上你的代码有问题……请允许我们公开讨论此事并附上时间戳。

正如我们多次解释的那样:本博客专门预测过去发生的事情。


Aster:一款伪 DEX最初发表在 Medium 上的ChainArgos 网站上,人们通过突出显示和回应这篇文章继续进行讨论。

Medium
免责声明:以上内容仅为作者观点,不代表Followin的任何立场,不构成与Followin相关的任何投资建议。
喜欢
81
收藏
11
评论