本文是对 Synthetix 协议的深入分析,Synthetix 允许用户使用 SNX 代币作为抵押品生成任何资产的合成版本。文章详细介绍了 Synthetix 的运作方式、经济模型、所有权结构、代码质量以及流动性分析,并探讨了其面临的挑战和未来发展方向。
原文发表与 2020 年 3 月
了解第二大以太坊合成资产协议的技术和经济运作方式。
在我深入细节之前,可能值得花时间了解 Synthetix 在幕后是如何运作的,以及是什么真正使其发挥作用。
Synthetix 允许你使用其原生代币 SNX 作为抵押品来生成任何资产(货币、黄金、股票等)。这样做的一个很大的好处是,你不需要经历将这些资产上链的过程,而是可以处理它们的合成表示。MakerDAO 也是一个合成资产协议,其中 ETH 是底层抵押品,DAI 是产生的合成美元。
如果用于生成合成资产的 SNX 的价值下降,则铸造者必须添加更多 SNX 才能取回他们的 SNX。这与 MakerDAO 的工作方式类似,只不过使用 Maker 你会损失 10% 的 ETH 抵押品。
以下是一个小例子,说明了上述所有部分如何结合在一起:
到目前为止一切顺利?很好。现在下一个问题是,为什么会有人购买和持有 SNX 代币呢?这对他们有什么好处?我将在下面解释。
基于通货膨胀的质押奖励。 通过铸造SNX资产,你实际上成为了该协议的质押者。因此,你有资格获得更多来自协议通货膨胀的SNX代币。
交易所交易费用。 每次有人转移基于 SNX 的资产时,他们都必须支付费用。这些费用的总和可以由协议中的质押者获得。
Uniswap LP 奖励。这是第一点的一部分,但需要注意的是:任何使用 SNX 铸造 sETH 并在 Uniswap 上为 sETH 和 ETH 流动性池提供流动性的人都可以获得额外的奖励。这非常重要,因为它保持了 sETH 和 ETH 之间的价格平价,从而在 Synthetix 的所有“synths”(合成资产)之间创建了一个流动网关。
理解 Synthetix 拼图如何运作的最后一个部分是理解铸造资产的成本。在 MakerDAO 中,你有一个稳定费的概念,该费用由 MKR 持有者不定期设定。Synthetix 有他们自己的旋转方式,你实际上是在与其他交易者竞争。

Synthetix 的长期质押可能会以这种方式产生误导,因为它实际上只是激励人们开立交易头寸,同时承担债务累积的风险。没有免费的午餐。
注意:你可以在不持有 SNX 或“质押”的情况下交易 synths。
让我们深入研究并根据各种标准对 Synthetix 进行评估。
Synthetix 拥有我迄今为止遇到的最复杂的 DeFi 架构之一,并且在整个过程中大量使用代理。代理是一种让人指向一个地址,但执行来自另一个合约的代码的方式。可以把它想象成一个代表其他东西执行代码的占位符。
以下是 Synthetix 智能合约和所有权结构的高级架构概述:

这里有很多东西,但不用担心,我将像往常一样将其分解。
首先,与 Synthetix 生态系统的每次交互都是 Proxy.sol 合约,该合约的地址为:0xC011A72400E58ecD99Ee497CF89E3775d4bd732F。此合约的两个关键属性是 targetAddress 和 owner。所有者是不言自明的,但 target 引用了所有调用实际上都转发到的智能合约。在这种情况下,target 是 Synthetix.sol,你可以将其视为系统的核心(和代币跟踪器)。所有者可以随意切换 Synthetix 合约的整个实现,这可以 让他们做任何他们想做的事情。这不是什么新鲜事,但我认为整个系统的实现可以随意更改。某些架构在某些地方使用代理,从而为用户提供有关可以更改和不能更改的内容的保证。
Synthetix.sol (0x8454190C164e52664Af2c9C24ab58c4e14D6bbE4) 是协调系统内所有交互的大脑。它有几个职责:
此合约的所有者与 Proxy.sol 相同。但它有一个特殊的变量,名为 selfDestructBeneficiary,目前设置为 0xde910777c787903f78c89e7a0bf7f4c435cbb1fe。在此受益人可以收到所有资产之前有 28 天的时间延迟,但是在我看来,将其包含在内是一件特别奇怪的事情。此外,0xde9 只是一个普通的以太坊地址,没有多重签名。它基本上是某人的分类账。
我想这里更大的问题是谁是所有者以及它是如何运作的?所有者的地址是 0xeb3107117fead7de89cd14d463d340a2e6917769,是另一个代理合约。我无法直接在 Etherscan 上查看实现(由于代理),所以我编写了一些代码来直接获取结果

结果如下:
➜ node snx.js Owners: [ "0xa331986ec34E103D567937B293FF8103330FEAda", "0x9dDD076E9073732eB024195eb944E7eC7149bAF6", "0xD7e5c7eC37cDe3f42597A5018E9320070c288b82", "0x285669F472db908531Ed868B92FC0A39EF60D739", "0xDe910777C787903F78C89e7a0bf7F4C435cBB1Fe", "0x49BE88F0fcC3A8393a59d3688480d7D253C37D2A", "0xb0A23F40De7F776A4f20153e8995eD3E7D7c8487" ]
Threshold: 4
这里的好消息是 需要 4 个地址才能对主合约进行更改。
坏消息是 没有时间锁,因此如果每个人都签名,他们可以立即进行更改。

虽然我确实欣赏诸如拥有链上地址注册表之类的小技巧,但我强烈不喜欢代理引入智能合约系统的复杂性和升级控制。 Synthetix 的整个架构严重依赖于代理。从集成的角度来看,这意味着你在一个区块中与之交互的 Synthetix 系统在下一个区块中实际上可能看起来完全不同(如果他们推送升级)。其他协议可能已经实施了升级控制,但你知道系统的哪些特定部分可以升级,因为你正在与之交互的合约永远不会更改,只会更改其中的某些部分。这是当你使你的代码高度模块化,并且管理员可以替换其系统中的不同模块,而不是替换整个系统时。 使用代理架构可以让你完全推迟该决定,只需快速交付并获得完全控制权限即可。
甚至代币都有它们自己的代理,它们部署在这些代理后面。我可以理解进行完整升级的愿望,但如果你为每个合约都使用 1 个代理,那么在我个人看来你可能过度使用了它们。将来我将介绍其他架构,它们可以通过更优雅、更简单的无代理结构来实现类似的升级优势。
我印象非常深刻的一个领域是 Synthetix 的文档。他们有显示继承结构的图表、易于访问的合约地址以及许多你通常在 DeFi 团队中找不到的内容。在编写本指南时,他们的文档能够在理解他们的系统如何运作方面为我提供很大帮助。
从挖掘他们的代码来看,他们似乎确实使用了测试,但突出的一点是 他们的测试是集成测试,而不是单元测试。不同之处在于,他们的测试检查可以确保事物有效,而不是它们可以工作/防御恶意或意外输入。Synthetix 更关注对主要部署进行审计,尽管我的总体感觉是可能存在一些漏洞,因为审计公司的有效率最多为 80%。 给我看一个智能合约漏洞,我就给你看一家进行审计的公司。
我在这里有点固执己见,但我发现 Synthetix 的开发人员工具还可以。他们的 Javascript 库依赖于 JSON ABI 文件进行更新,而不是使用提供集成保证的 Typescript 类型。Set、dYdX 和 0x 使用 Typescript 并从中受益匪浅。他们的 Javascript 库没有进行广泛的测试,以确保任何 ABI 更改都会在他们的整个系统中造成破坏。这不是什么大问题,但更多地告诉我一个团队有多关心开发人员体验以及在外部系统中集成他们的智能合约的难易程度。
目前最大的两个 Uniswap 池是 ETH/SETH 和 ETH/SNX。ETH/SETH 的规模如此之大主要是因为 Synthetix 通货膨胀奖励,该奖励授予用户更多 SNX 代币,用于在 Uniswap 上提供流动性。
但是在这里我意识到 Synthetix 的模型从长远来看并不是真正可持续的,除非他们设法克服一些非常困难的挑战。
由于质押激励措施,只有 20% 的 SNX 供应量没有被积极质押,这引出了一个问题,如果大部分 SNX 供应量都被吸走,那么有机的、健康的流动性将如何来自其他地方?请记住:你实际上需要对 SNX 的健康需求(在激励机制之外),合成资产才能具有真正的价值。

我和其他人一样讨厌 Coinmarket Cap,但即使他们不可靠的数据也提供了以下关于 Uniswap 之外 Synthetix 流动性的数据。

我想在这里表达的观点不是 Synthetix 注定要失败,而是它需要一些东西才能真正作为一个合成资产协议获得成功:
除非你注意到,这本质上是一个困难的先有鸡还是先有蛋的问题,你需要两者才能真正成功。Maker 通过使用 ETH 作为完整的抵押基础来避免了这个问题。Synthetix 正在通过引入 ETH 抵押品来寻找线索,但紧张关系始终在于代币持有者会想要比 ETH 更多的 SNX,以确保 SNX 能够变得更像货币。
在 Synthetix 的早期,一个 oracle 崩溃了,有人用它铸造了 3700 万 SNX。这对人们的信心造成了很大的动摇,但该团队积极转向使用 Chainlink oracle。
虽然我想对 Chainlink 进行分析,但这超出了本文的范围。该团队确实运行一些他们自己的 oracle,你可以在这里直接查看:https://developer.synthetix.io/tokens/
它本质上只是一个地址,将价格发布到智能合约并更新它。我不确定这些的运营安全性如何,但我们确切知道它连接到一个热钱包。在 Synthetix 的案例中,内部连接到互联网的多个私钥是一个巨大的危险。我在我工作过的地方作为开发人员遇到了这个问题,但不幸的是,目前没有好的答案。我对该团队的唯一建议是在向你的网络添加另外 10 个中心化 oracle 价格馈送之前,放慢速度并制定一个更强大的运营安全程序,因为 Synthetix 最终将成为一个 CEX 蜜罐。该团队确实有一个积极的路线图,他们正在努力实现,希望他们知道何时放慢速度,专注于基础,以及何时积极交付。
目前,Nexus Mutual 和 Opyn 都没有涵盖 Synthetix 的合约。如果未来部分通货膨胀奖励可以用于为 Synthetix 用户提供保险流动性,以防止违约,这将是一件好事。这可能会让用户对持有 SNX 或 synths 的可行性更有信心。
这标志着我对 Synthetix 的深入研究以及在深入研究后我的发现的结束。总的来说,Synthetix 显然是 DeFi 领域的先驱,它采用了一些非常独特和有效的策略来确保代币可以成为生态系统不可或缺的一部分,同时捕获价值。
未来面临的主要挑战是该系统是否可以创建人们想要持有、用于商业或其他非投机用途的 synths。迄今为止,该团队已经对其模型(从 Havven)进行了一些非常令人印象深刻的调整,使其成为今天的模型。我不会放弃这种模式,但我想说,他们面临的挑战并不容易解决!
我最喜欢这篇评论的部分可能是看到为第三方开发人员编写的、用于理解整个系统如何工作和运作的文档和指南的广泛性。假设他们解决了许多其他问题,我相信许多其他开发人员会在适当的时候欣赏这一点。
再次,希望你喜欢阅读这篇文章。请随时直接回复此电子邮件或在 Twitter 上联系我,告诉我你的想法!
- 原文链接: kermankohli.substack.com...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!