从混沌中走出来的THORSynths
0xE43a
January 20th, 2022

原文链接:

译者:Evelyn|W3.Hitchhiker

信息披露:DELPHI投资公司和我们团队的成员持有Rune。本声明旨在披露任何利益冲突,不应该被误解为购买任何代币的建议。本内容仅供参考,你不应该只根据它来做决定。这不是投资建议。

主要信息

  • 最近的漏洞是由处理外部链上存款的Router上的一个bug导致的。攻击者能够欺骗节点,使其相信他存入了ETH,而实际上他并没有,对此,网络迅速做出了反应并将其停止。虽然核心开发人员已经修复了这个bug,但以太坊链还是会继续停止运行,直持续到社区就如何从安全和金融角度解决这一情况上达成一致意见为止。THORChain项目金库(treasury)中的资金(约6000万美元)远远超过了破产(约750万美元)金额,并将被用于补偿LPs的损失。
  • 在多链Chaos Net中,尽管价格回落,但THORChain LPs总体上一直享受着较为客观的APY,有时达到了45%,这主要是由于对资金池施加的上限限制,导致激励钟摆(incentive pendulum)对LPs的奖励超过了正常的市场条件。另一个因素是储备余额(reserve balance)的增加。MCCN储备正在缓慢而谨慎地增长,并已达到3000万Rune,从而增加了对Bonders & LPs的区块奖励。因此,对LP的需求远远超过了上限,从而导致每次提高上限都要进行重新填补。
  • 随着各池子总深度的增加,价值转移变得更加便宜。平均滑点费用(average slip fees)下降,自6月以来一直保持在0.3%的水平以下。
  • 即使用户向Ethereum Swaps支付了大部分swaps费用,但这些费用中有很大一部分是充值储备金(reserve)的流出费用(outbound fees),并没有立即让LPs & Bonders受益。
  • Binance占了网络上double swap总量的一半,并产生了大部分流动性费用,这些费用立即对LPs和Bonders进行了奖励,但对储备金(Reserve)几乎没有贡献。
  • THORChain的未来是THORSynths,并非Rune资产池的合成(synthetic)代表。synths的主要目的是用于快速和廉价的交易,并大大推动了网络上的交易量。此外,即使Synths对资金池有贡献(通过向资金池存入Rune来铸造),它们的目的也只是保护相关资产的全价风险(full-price exposure)。
  • 虽然Synths和LPs共享同一个池子,但synths并不获取他们产生的任何收益。相反,这些收益由LPs获得,使他们的APY提高到20%。
  • 在THORChain的世界里,Synths赋予了其持有者神奇的力量,因为他们可以通过快速套利来获取价值。

我们关于THORChain的最初的研究文章可以追溯到2019年12月底。从那时起,RUNE的市值已经开始大幅增长,直到今天的10亿美元,该项目从一个单链DEX迁移到一个独一无二的跨链流动性网络,更确切地说,它最近从单链Chaosnet(SCCN)过渡到了多链chaosnet(MCCN)。我们很高兴能通过这份最新的报告来为大家提供关于THORChain的重大更新变化,我们会将此分三部分来介绍:首先,我们将会向大家分享对最近漏洞被利用的不幸事件做的简要评估;接下来,我们将分析THORChain MCCN的链上历史数据并分享我们的见解;最后,我们将进行深入探讨,THORChain未来会形成的的两个新型资产:Synths和iRune。

混乱如期而至(Expecting Chaos)

在离我们发布报告越来越近的时候,THORChain正经历了一个不幸的攻击,它存在一个可利用最近增加的一个功能来提高THORChain的智能合约的可组合性的Bug。攻击者欺骗了THOR节点,使其相信他存入了ETH,而实际情况则与之完全相反,他能够使用一个打包的合约将存款金额回收到他的钱包里。因此,金库则认为他们的ETH比实际拥有的多得多,从而允许ETH以350美元左右的非常便宜的价格进行交易。在这种情况下,套利者则利用了这一bug来购买了廉价的ETH。各个资金池的代币价格与外部市场的价格出现了严重分离。这一事件产生了诸多不良后果,包括THORChain网络停止,声誉打击,价值4240ETH资产损失,以及Rune价格下跌。

另一方面,THORChain社区在发现bug后也采取了许多积极措施。首先,THOR节点对该漏洞做出迅速反应,立马停止了网络,这证明了共识机制能够自主地保护网络,纯粹是由节点的财务动机所驱动。该团队公开宣布,LP不会白白遭受损失,并鼓励社区参与。在这之后,THORChain社区迅速聚集在一起,从安全和财务的角度提出了许多深度建议,以解决这一情况。尽管Rune价格低迷,但THORChain的金库仍有价值6000多万美元的资金,其中约3000万美元为非Rune资产。因此,金库有能力在不出售Rune的情况下轻松弥补LP的损失。从安全的角度来看,尽管这个bug导致了一个重大的攻击事件,但开发人员也赞同表示这只需要一个简单的修复程序,并且已经解决了这个问题。此外,团队聘请了两家不同的安全审计公司(Halborn和ToB)对计划发布的新的更新补丁进行技术尽职调查。接下来的一个软件版本还将包括一个偿付能力自动检查器(auto solvency checker),这个检查器已经非常接近于被合并,如果它被激活,将在几分钟内停止网络。预计不久,将在除以太坊外的所有链上恢复交易。社区目前正就关于如何解决与以太坊链交互的问题启动决策过程。节点运营商、开发人员、LPs、投资者和用户正在通过列出每个提案的缺点和优点来表明他们的观点,而这也表明社区正朝着成为一个真正自治的去中心化网络迈进。

网络漏洞被用于攻击是加密货币的一部分。作为领先的跨链网络,THORChain正在为区块链间的跨链通信铺平道路,而不需要奢侈地重新部署经过实战检验过的代码。作为THORChain社区的一员,我们相信其也会吸取教训,THORChain会越来越强大,并向Mainnet迈进。

THORChain的多链ChaosNet

在继续后面的内容之前,需要对之前的内容进行复习,首先我们要把THORChain上的价值流可视化。

THORChain的价值流显然是从Swaps开始的。swaps会产生3种费用:流动性费用(Liquidity Fees)、网络费用(Network Fees)和流出费用(Outbound Fees)。流动性费用是基于滑点而产生的swap费用;网络费用包括用户为在THORChain区块链上进行交易而支付的gas费(=0.02 Rune/tx);流出费用是为了让THORChain能够在外部链上进行流出交易而收取的gas费用。也就是说,只有在非Rune资产从池中取出时才会收取费用(提取到资产和/或swap到资产)。

流动性费用会成为系统收入的一部分,并立即惠及bonders和LPs;网络费用和流出费用将与今天和未来将存在的所有其他资金流一起被添加到储备金中。储备金中的所有资金与储备金中已经存在的未释放的Rune供应量相融合,并根据分配时间表作为区块奖励而缓慢地分配出去。每年,储备金都会释放出其剩余资金的1/6。此外,储备金可以偶尔支付个别LP作为补偿无常损失(IL)的一部分。

现在,我们已经设定好了舞台背景,让我们进入具体的数字当中。流动性提供者是THORChain的一等公民。为了使THORChain成为它所设定的流动性黑洞,LPs应该始终可以以他们的贡献而得到丰厚的补偿。在这方面,我们首先看一下LPs的历史APYs。

总的来说,LP已获得整体APY35%的收入。如下图所示,目前这一收入的大部分来自区块奖励。

随着时间的推移,区块奖励已经占到了区块奖励的较大部分,其催化剂则是MCCN储备余额。THORChain目前有2亿多未发布的Rune供应,分布在4个不同的储备金库中(2个Standy,1个SCCN,1个MCCN)。Standy和SCCN储备金库正在慢慢迁移到MCCN储备金库,这是为了减少任何潜在的错误或漏洞对MCCN的影响(回想起来是这一个明智的举动)。由于区块奖励与储备金规模大小成的函数关系,随着有更多的Rune迁移到MCCN储备金库来,其区块奖励也在不断增多。值得注意的是,区块奖励的释放率目前被重写,为释放剩余储备金(reserve)的1/4,而不是其通常编程的1/6来分配,在储备金不足的情况下确保目标APY。在Chaosnet之后,网络将过渡到Mainnet,届时储备将达到满负荷,即,按照当前价格计算的话(7月20日左右市场价格),有超过2亿的Rune价值(所有未释放的供应量)约等于7.2亿美元。在这一点上,代币释放曲线将被设定为遵循更健康的释放率。

目前,THORChain有大约1.4亿美元的总流动性,分布在26个池子里。我们评估了5个类别的资金池的APY,即BTC、ETH、BNB、稳定币(BUSD & USDT & USDC),以及每个持有量低于250万美元的小型资金池,由于缺乏足够的历史数据,xRUNE没有被列入分类。下面是按类别划分的资金池深度。

我们将5个类别的APY在下面的交互式图表中进行了比较,整体的APY数字已经相当有吸引力了:稳定币~50%,BNB~40%,BTC和ETH~30%,小币池~25%。

粘性THORChain的流动性(Sticky THORChain Liquidity)

最引人注目的发现之一是THORChain的流动性在整个MCCN生命周期中是如此的粘稠。流动性单位是用于会计目的考虑的,代表了池子里的份额,完全独立于池子里资产的价格。流动性单位只有在LPs向池子里增加流动性时才会增加,在LPs撤回流动性时才会减少。另一方面,资金池的深度因资本的增减、配对资产美元价格的波动以及LP头寸的费用累积而变化。此外,由于流动性单位通常在不同的池子里保持着可比的价值,因此单位可以被积累以代表总的流入和流出。在下图中,我们注意到在5月17-22日和6月16-21日期间,所有资金池的总流动性单位保持一定程度的稳定,而整体深度明显下降。在6月3日至6月12日期间,当Rune的价格下跌时,它们甚至在进一步增加。这意味着深度的减少大部分是价格行为导致的结果,而不是流动性的净撤离。这是一个非常健康的迹象,在我们看来这里有3个关键点:

  1. 目前对LP的需求远远超过了流动性上限。一旦上限提高,LPs会有持续的排队等待成为第一批进入资金池的需求。即使一些LPs在价格下跌期间抽走了流动性,但这些流出的资金通常与流入的资金相匹配,或被流入的资金抵消,往往也导致了净流入为正。
  2. ILP(非永久性损失保护)在保留资本方面非常有效。THORChain提供ILP,只要LPs在池子里停留超过100天,储备金(reserve)能保证LPs不会比持有50%的Rune和50%的资产更差。保护额度(protection)每天增加1%,直到第100天时达到最大值。我们将在后面的章节中评估历史IL,并评估IL覆盖范围的可持续性。
  3. 在THORChain上做LP与在单链AMM上做LP不同。它有一个学习曲线,我们相信它能帮助建立信念,并帮助LP在网络小英当中获取长期价值。

Thorchain目前限制了网络可以支持的LP资本的金额上限,作为其MCCN演进发展的一部分。这就是 "提高上限 "要素发挥作用的地方。再做一个快速而简单的复习,网络的目标是在节点中绑定的Rune与流动性池中的Rune的比例为2/1,目前流通的供应量大约为2.7亿Rune,而目前活动节点中绑定的Rune为2400万。如果取消LP池中对现有Rune数量的限制的话,将会有大量的流动性加入到池中。令人担忧的是,由于有一个搅动的(churning)过程,绑定的Rune将无法以几乎相同的速度增加,从而使网络更容易受到攻击。处于风险中的资本将比用于保护网络的资本数量大得多,从而形成一个经济上可行的攻击向量(attack vector)。

搅动(churning)过程的设计是为了逐步扩大网络的安全性。每隔3天,一些最老的节点就会被搅动出局(churned out),会有稍大数量的备用节点被搅动入场(churned in),从而逐渐增加网络中节点的数量。这也逐渐增加了锁定Rune的数量,也是使上限提高的原因。上限是以Rune的数量来衡量的。当绑定的Rune总量超过LPs提供的Rune总量的2倍时,上限就会提高,以弥补这一差距。由于人们争先恐后地在上限填满之前提供Rune,所以流动性额度很快就被填满了。THORChain计划以这种方式逐步增加流动性,直到绑定的(bonded)Rune数量足够大,可以保证所有的流动性在之后会迅速增加。然后,上限将被取消,激励钟摆(pendulum)将成为绑定的(bonded)Rune和LP提供的Rune之间的主要推动力量。

尽管上限人为地减缓了流动性的增长,但资金池已经达到1亿美元,这足以开始降低交换的成本。随着资金池变得更深,同样数量的价值转移变得更加便宜。这是由于基于滑点的收费模式,即对交易收取的费用基于其相对于池子深度的大小。整个网络的平均swap规模增长了大约2.5倍,而滑点费用(slip-fees)占swap规模的百分比大幅下降。更深的资金池使更大规模的价值转移成为现实。

我们注意到,自6月份以来,平均swap费用一直在0.3%以下时,收益更加明显;这个数字可以作为整个行业的一个基准。

在前面,我们看了总交易额和不同池/类别的交易额。现在,我们将跨链交易的金额可视化,同时也考虑到它们的资金流向。值得注意的是,任何不包括THORChain的swap(用户专门买入或卖出Rune)在技术上是一种double-swap,因为它必须经过两个资金池,但我们不会重复计算交易额。 为了清楚起见,从Binance到TC的100美元转账与从Binance到Ethereum的100美元转账的处理是一样的。

Binance在交易额上具有不可否认的优势,因为Binance<>Binance账户之间大约占了MCCN迄今为止产生的双重swap交易额的一半。此外,从Thorchain到Binance的交易量比Thorchain到比特币(BTC)和以太坊(ETH)的总交易额还要多的多。莱特币(LTC)和比特币现金(BTH)对整体交易额的贡献相当低。

为了更好地理解动态的作用,我们对费用做了进一步研究。我们相信,相对于只看交易额,swappers支付的总费用是一个能更好的代表需求的指标。

在每一个THORChain tx(交易)中,在swappers支付gas和THOR节点实际花费gas从目标链的池子里进行支付的时间点之间有一个时间差。因此,THORChain不知道它需要向网络支付多少gas才能发送资金,直到节点将此实际支付了。作为对gas成本波动的预防措施,用户被收取高于目标链的平均gas的3倍作为流出费用(在下图中以蓝色显示)。假设gas价格没有变化,1/3的流出费用在目标链用于购买gas,1/3被添加到池子里,1/3流入协议储备金。

在下面的图表中,我们注意到,用户为以太坊代币的swaps(购买ETH或购买ERC20)支付的费用明显多于对交易额更少的Binance代币的swaps支付费用。下图中一个不太明显的亮点是,流出费用(蓝色)奖励了储备金(reserve),并没有立即影响LPs的APY。另一方面,基于滑点的费用直接使LPs & Bonders受益,这反映在他们的历史APYs上。正如我们将在最后一节中的研究的那样,与ETH和BTC的合成(Synthetic)版本的swaps将大大降低用户成本,因为他们将消耗可忽略不计的流出费用。这将推动更多的用户出现,推动更多的交易额,并导致更多的基于滑点的费用直接为LPs的APYs作出贡献。

swapper行为和gas费用之间的关系在下面图表中更加明显,我们注意到,随着以太坊上的gas越来越昂贵,swaps到以太坊的平均规模也越来越大。这显示了swappers试图将他们每次swap的总费用保持在目标范围以下的意图。

Synths

THORChain的未来是THORSynths。毫无疑问,THORsynths将是该项目最大的升级,并将极大地改变THORChain的经济生态。THORSynth的设计目的是为了大幅提高网络上的容量。想知道它们是如何工作的吗?请坐好,并扣好安全带,因为这里有很多东西要解开。

Synths的核心是资产的借据(IOUs),旨在保持对资产100%的价格敞口,同时为资金池贡献流动性。1个sAsset总是由50%的资产和相当于是50%的资产价值的Rune来支持。Synths可以通过将Rune存入资金池来铸造,并通过从资金池中提取Rune来赎回。Synth持有者不累积收益(流动性费用+区块奖励),而是保持对底层(underlying)非Rune资产的单边价格敞口。这意味着,与LP代币不同,THORSynths不会遭受IL。Synths的主要目的是通过实现廉价和快速的swaps来增加交易额。重要的是,虽然Synth的持有者可以自由地使用它们进行快速和廉价的套利,但他们也可以把它们锁在Vault(储蓄账户)中,并赚取由储备金(reserve)直接提供的固定的利息。在未来,Synth将被用于其他THORFi应用中,比如作为借款的抵押品或铸币的合成指数。

闲话少说,在下面的图表中,我们将介绍铸币和赎回Synths的过程。为了建立起我们的对此的理解,我们会在一个循序渐进的过程中,首先将流程可视化,不考虑Rune和资产之间的相对价格波动。

正如我们前面所看到的,外部链上的gas极大地影响了交易并限制了交易额。仅仅因为费用的降低,我们自然而然地期望Synths能够实质性地推动交易额的增长。Synths也增加了资金池的资金深度,降低了价值转移的成本,使THORChain成为更有吸引力的交易场所。然而,除了低费用和更深的资金池外,Synths还有其他神奇的好处,但可能不会立即显现出来。

虽然Synths和Assets在资金池中共享同一面,但它们生活在不同的心率(heartbeat)上,即区产生块时间(block times)。我们将使用BTC资金池来帮助说明为什么这很重要。如果没有Synths,原生 BTC到Rune swaps,最多只能以10分钟的间隔更新BTC资金池的价格。而sBTC(BTC的Synthetic版本)能将这个时间间隔减少到5秒,但会带来2个主要影响。

  • 它使THORChain的资金池有可以对新的信息做出反应的能力,甚至在相关外部链上的两个后续区块之间的时间段内也是如此。这意味着每一点 "区块间价格波动 "都可以反映在THORChain上,大大增加了网络上的整体交易额。鉴于同样的用户体验,我们期望将Synths换成其他Synths、Rune或资产来成为一种常态。
  • 与第1点相关的是,Synths可用于通过提前交易(front-running)和套利来获取价值。在THORChain中,所有的swap都是由Swap队列来安排顺序的。然而,要进入队列,首先,交易需要由外部区块链上的THOR节点观察到交易。由于他们的快速结算,Synths允许他们的持有人在即将从外部到来的原生swaps中抢占先机。例如,一个sBTC持有者可以在观察到大量传入的BTC 交易后立即赎回他的sBTC,提取的价值可以达到原生swap的最大滑点目标。

然而,Synths的无与伦比的功能并不是没有代价的。尽管有神奇的力量,但Synths并不累积任何收益。此外,它们在赎回和铸币时有权获得滑点,并且有可能以滑点费用的形式向LPs损失一些价值。我们现在来看看Synths是如何保持其价格敞口的,以及Synths对LPs的影响的更多细节。

用户将Rune添加到池中以铸造Synths。存款后立即进行的套利活动将Synths抵押品(存入的Rune)转化为50%的资产和50%资产价值的Rune。虽然Synths持有者和LPs共享同一个池子,但他们在池子里的单位是分开计算的。Synths在资金池中的份额由Synths单位计算,而LP在资金池中的份额由流动性单位计算。与固定的(只在提款和存款时改变)流动性单位不同的是,Synth单位是根据池中资产的相对价格来进行动态调整的。如果Rune的表现优于Asset,Synth 单位在池中的份额就会下降,使LP受益于Rune的盈余。另一方面,如果Rune的表现低于Asset,Synth在池子里的份额就会增加,从LP那里提取额外的Rune。简而言之,Synth使LPs在Rune上出现了的杠杆多头头寸。Synth的铸币量计划以资产深度的33%为上限。

LPing On Steroids

Synths对LP的影响可以被量化如下,我们比较了LP在两个池子里由于价格变动而产生的损失/收益,其中一个池子里有33%的Synths(占资产的%33),另一个池子里完全由LP拥有。白色曲线代表LP目前经历的IL。例如,在此基础上,配对资产的500%的价格变化导致LPs损失25%的流动性价值。请注意,在0%的Synths的情况下,损失是对称的;无论价格变化的方向如何,相同的价格变化定会导致相同的损失。然而,对于一个包含Synths的资产池(蓝色曲线),LPs的收益和损失取决于价格变化的方向。更确切地说,当Rune表现优于资产时,LPs损失较小,而当Rune表现低于资产时,LPs损失较大。事实上,当Rune跑赢资产的幅度小于2.27倍(%44)时,LPs会看到其LP价值增加。

当Rune价格增幅优于Asset 资产增幅1.5倍时,收益达到了最大值。值得注意的是,下面的图表只研究了基于池中配对代币的相对价格变化的LP价值变化。它不包括收益(流动性费用+区块奖励),可以将此想象为一种推动曲线沿Y轴上升的力量。在一个有33%的Synths和35%的APY的池子里,LPs将有效地赚取(=0.35/(1-0.33/2))%42,因为他们保留了Synth持有人放弃的收益。这相当于收入增加了20%。但是请注意,我们还没有考虑到交易额的增加,我们预计,随着Synths的推出,交易额可能会成倍增加。

从下图中可以推断出coin的另一面影响,当Rune表现不佳时,LPs会经历更大的IL。然而,如果LPs有足够的耐心,这总是可以得到储备金(reserve)的补偿的。根据ILP覆盖范围,LPs可能遭受的任何净损失(IL-收益)在100天后总是根据ILP覆盖范围由储备金(reserve)完全补偿。

那么问题来了,储备金(Reserve)是否能够维持其提供ILP的能力。我们的简短回答是:肯定的。判断这一点的最好方法是放大历史价值。

为清楚起见,上图中显示的流出费用是储备金保留的平均部值(用户支付的网络费的1/3)。

从历史上看,我们注意到,在储备金上累积的流出费用已经足以支付储备金所必须支付的所有ILP费用。事实上,流出费用相比于ILP的净效应,导致储备金净流入8K RUNE。我们进一步注意到,在ILP支出较高的时期,由于用户活动的增加,流出费用也有所增加。也就是说,我们预计在引入Synths后,充实储备金的流出费用将立即下降。然而,这将被放大的LP收益所抵消,这仍然减轻了储备金的IL的负债,因为它减少了净损失的LP的数量。不管怎么算,ILP一直是储备金中可以忽略不计的一部分,它在满负荷时拥有2亿多Rune,并在中期引入新的THORfi用例后得到支持。

储蓄账户(Savings Account)

sAssets的另一种用途是把它们锁在一个机枪池中,也称为储蓄账户(Savings Account)。锁定后,Synths不能用于套利,相反,持有者可以获得由储备金直接支付的 "较低 "的固定利息(约10%)。这导致储备金出现赤字,然后对Bonders和LPs的收入征收税款(约10%),直到赤字被付清。税收可以很好地弥补赤字,因为它实际上是来自于Synth储蓄者最初放弃的那部分高额可变收入。正如我们前面所看到的,历史上池子的总收益一直在~20-47%之间波动。从本质上讲,Synth持有人放弃了他们获得高额可变收益(~20-47%)的权利,反过来在资产上获得“较低”的固定利息(~10%),同时保持他们对资产的单边价格敞口。

Synths的圣杯:iRune(The Holy Grail of Synths:iRune)

这就是Synth设计真正有趣的地方。就像 "资产 "会有它们的合成版本一样,Rune 也会有自己的合成版本,被称为iRune。

iRune的铸造是反直觉的,因为与资产不同,Rune存在于每个池子中。因此,iRune不是通过将Rune添加到一个特定的池子中来铸造的。相反,为了铸造iRune,Rune与加入池子中的Rune总量进行交换,产生的iRune实际上是按照池子大小的比例添加到所有池子中。虚拟Rune的深度(iRune)会根据Rune对资产的价格动态来变化。当Rune表现出色时,它就会增加,当Rune表现不佳时,它就会减少。这就抵消了由于Synths而导致LPs的盈亏不对称体验。因此,在未来,可以为每个池子计算iRune/Asset比率,以安全地解除33%的Synth上限。也就是说,iRune仍将受到流动性上限的限制。事实上,在Synth & iRune的设计下,新的流动性上限公式将会是:Total Bonded Rune > Total Pooled Rune(=被LP投入池子中的Rune+所有iRune抵押品+所有Synth抵押品)。

就像sAssets一样,iRune(有利息的Rune)可以被锁定在储蓄账户中,以获得Rune的固定收益。这是THORChain价值流的一大飞跃,因为它提供了一个在不损失Rune价格敞口的情况下获得收益的选择。此外,iRune为资金池做出了贡献,极大地将持有人的激励与网络的激励结合起来。iRune一旦推出,我们预计对iRune的需求将为提高流动性上限创造大量的额外需求。我们进一步预计这将使Bonder的竞争升温,并加速上限的提高。

总结(Wrap Up)

Synth 和 iRune的设计机制将引入新的质押者,他们在所扮演的角色、所承担的风险和所积累的收益方面都有所不同。我们把这些总结在下面的图表中。

Arweave TX
sNNGchXWpN46goxeVRzB2tJFwNQlM9gL9qP2nT1i90k
Ethereum Address
0xE43a21Ee76b591fe6E479da8a8a388FCfea6F77F
Content Digest
OF7TSVTQDx0_h2SB788XkL_8Izcce4sN_O_MJwNYAFI