以Vigoss、Perp、dydx为例,解析衍生品在DeFi2.0进程里的演进

撰文:Jerry,Leon,前者为Dachal Research发起人,后者为Dachal Research研究员关于DeFi2.0的言论越来越多,未来如何发展不得而知,但是我们可以根据DeFi市场现状,结合衍生品协议升级迭代的脉络,去探究DeFi2.0的未来一角。据L2BEAT数据显示dYdX Layer2总锁仓量已突破10亿美元,占以太坊Layer2总锁仓量的21.66%。当然,对于衍生品市场而言10亿美元总量还是很小的一个体量,按照预估,当前DeFi衍生品的日交易量仅相当于DeFi现货交易量的1/

撰文:Jerry,Leon,前者为Dachal Research发起人,后者为Dachal Research研究员

关于DeFi2.0的言论越来越多,未来如何发展不得而知,但是我们可以根据DeFi市场现状,结合衍生品协议升级迭代的脉络,去探究DeFi2.0的未来一角。

据L2BEAT数据显示dYdX Layer2总锁仓量已突破10亿美元,占以太坊Layer2总锁仓量的21.66%。当然,对于衍生品市场而言10亿美元总量还是很小的一个体量,按照预估,当前DeFi衍生品的日交易量仅相当于DeFi现货交易量的1/6,相当于CEX衍生品交易量的1/100。但衍生品交易所的平均交易量更大,因此它们的价值增长甚至超过了过去一年DEX的增长。

如果比照CEX的交易结构,在静态发展下,理论上衍生品的交易量还有当前规模13倍左右的发展空间。因此,dYdX Layer2总锁仓量占以太坊Layer2总锁仓量的21.66%可以视为以dYdX为首的衍生品市场在Layer2时代的张力。

在ETF 通过和上市推动了加密市场上涨但DeFi头部项目 MKR、LINK、UNI、AAVE 都还远没有回到 519 之前的高度的情况下,我们把关注焦点放在衍生品市场,我们将dYdX在 Layer2时代的迭代视为DeFi2.0的演进。本文选择dYdX、Perpetual和Vigoss三个不同时间段的衍生品协议作为样本,意图为大家展示衍生品在DeFi2.0进程里的演进和前景,以及,我们可以借此窥视衍生品会为 DeFi 带来新的动力吗?全文概要如下:

第一部分:以链上衍生品赛道的龙头项目dYdX的流动性问题和Layer2的布局介绍,既展示了上一个时代衍生品赛道领先者自身的迭代优势,也让我们看到一些遗留问题有待项目方继续努力去解决。而这值得持续关注。

第二部分:与 dYdX相比, dYdX采用了类似中心化交易所的链下订单簿撮合机制,Perpetual目前采取vAMM形式来解决交易深度。这无疑在DeFi2.0进程中是衍生品赛道一个承前启后进化。Perp项目V2版本Curie(居里)的迭代也值得关注,这一版本改变了整体业务逻辑,目的是以聚合流动性的方式减小滑点、获得高资金效率的优势以及因架设在二层网络Arbitrum上而获得高交易速度。

第三部分:在对vigoss进行全景式介绍的基础上,我们以与flux协议的联动效应为例,解析在DeFi2.0时代衍生品市场中借贷协议与期权协议如何迭代进化以及前景。未来数字货币领域一定会出现复杂的金融工具,vigoss是其中一部分。可以预见的是,vigoss与flux协议的联动会有很好的化学反应,而这只是vigoss未来开发计划的一部分。

01dydx:老牌龙头的迭代

以太坊长期以来优先考虑了 L1 的安全性和去中心化,而不是可扩展性。可扩展性的“不可解决的三角困境”也因此制约着包括 DeFi在内的去中心化实践活动。但随着以太坊转向一条 以 Rollup 为中心的路线图 ,以太坊生态正在进化——以太坊转向这一路线图的意图是,我们今天在以太坊区块链上的 大部分交易执行 (包括 DeFi、NFTs 等活动) 将转移到 Rollups 中进行 , Rollups 继承了以太坊 L1 主网的安全性 ,且由于以太坊 L1 处理了困难的部分, Rollups 得以能够专注于成为最好的执行层 。

在这个大背景下,我们可以看到早期衍生品合约在向着DeFi2.0的迭代。据L2BEAT当前数据显示,11月2日,dYdXLayer2总锁仓量已突破10亿美元,占以太坊Layer2总锁仓量的21.66%。这代表着以dYdX为首的衍生品市场在Layer2时代的张力。dYdX 是最早成立并推出可用产品的去中心化期货交易所,为订单簿式 DEX,交易者之间进行点对点交易,由做市商和多空双方交易者三方博弈。dYdX 架设在以太坊二层网络 Starkware 上,并采用了 StarkEx 交易引擎,实现了资产的去中心化自托管。

dYdX 能够提供与中心化交易所接近的交易体验,dYdX 由 L2 可扩展性引擎 StarkEx 驱动,自从 dYdX 在 L2 网络部署以来,该交易所上的 ETH-USD 交易对产生的流动性近乎可以与 FTX匹敌,目前其交易量为在交易挖矿的推动下衍生品 DEX 中第一。

虽然这些流动性多数可能是为了参与该平台 DYDX 代币奖励计划而来,这是一些观察者对其质疑的所在,当然质疑的另一点是其也采用了与 CEX 相似的运营模式。这部分我们在最后再一并做分析。下面我们先从了解一下它的产品开始。

目前dYdX 的五个产品永续合约、保证金交易、杠杆交易、现货交易和借贷只有V2 版本的永续合约是架设在二层网络上的新产品,保证金交易、杠杆交易、现货交易和借贷架设在 以太坊主网上。在 UX (用户体验) 方面,你只需要一个以太坊钱包和一些 ETH 就可以登录并开始在 dYdX 上交易,这里不需要 KYC,也不需要将你的个人信息存储到第三方,当然,DEX 是非托管式的——你确实需要将资金转移到 Rollup 来使用这个 DEX,但你可以控制自己的资金,并在需要时将资金撤回至以太坊主网。这已经吸引了高频交易人群的关注。

我们主要分析一下其V2 版本永续合约交易产品,细节如下:

杠杆倍率:dYdX 永续合约产品提供了最高 25 倍的多空两方交易功能,最小杠杆倍率变动为 0.01。
订单簿 /AMM: 从交易结算形式来看,dYdX 永续合约是订单簿形式,由做市商提供流动性。
限价 / 止损:dYdX 永续合约具备限价单和止损单功能,可以进行限价交易和止损止盈交易。
持仓:能够在产品界面上显示持仓数、杠杆率、已实现盈亏、未实现盈亏、强平价格等数据。
保证金:BTC 和 ETH 交易对,其最高杠杆倍数为 25 倍,因此初始保证金要求为 4%,维持保证金要求为 3%。其他交易对根据其最高杠杆倍率有不同的保证金要求。
强平价格 / 清算价格:用于清算的标记价格是由 Chainlink 的二层价格喂送的指数价格。
存款 / 取款:图 2-3 左上角显示了账户余额(Account),并有存款(Deposit)和取款(Withdraw)两个按钮,由于产品架设在二层网络 StarkWare 上,因此在 dYdX 永续合约产品交易,需要存入资金后,在余额范围内进行交易,平仓后资金回到 dYdX 账户内,需要进行取款才能回到交易者的以太坊钱包内。
手机 dapp 版本:dYdX 已实现手机 dapp 版本,能够使用手机钱包进行登录和交易,界面基本具备电脑网页端功能。
资金费率(1小时费率):与其他的永续合约一样,dYdX 永续合约产品有资金费设计,每 8 小时收取一次,但其资金费率表示为1小时的费率,每8小时收取一次1小时费率(不将1小时费率乘以8),资金费率具体计算方式为:

资金费(Premium)=(Max (0,出价冲击 Impact Bit Price-指数价格)-Max (0,指数价格-卖价冲击 Impact Ask Price))/ 指数价格
交易费用:dYdX 上 Maker (挂单者)和 Taker (吃单者)费用不同,费率随交易量增大而递减,Maker 的费率从 0.05% 到 0, 交易量达到 10,000,000 美元之后费率为 0;Taker 费率从 0.2% 到 0.05%,交易量达到 200,000,000 美元后为 0.05%。
Gas 费用:由于在二层网络 Starkware 上运行,交易不需要支付 Gas 费用,但在存款 / 取款过程需要支付 Gas。
结算速度:实测非常顺滑,这是由于二层网络的性能优势,也由于用户资金已经托管到了 StarkEx 上。
回到上面提及的问题,不可回避的是dYdX 交易量的快速膨胀得益于其交易挖矿奖励机制根据规则,dYdX 将在 5 年内以每 28 天为一个时间节点分发 383.5 万枚平台通证 DYDX,以激励用户在该协议进行交易。dYdX的涨幅也带了了套利空间,更多的流动性因此而来,这被观察者视为未来的风险。而dYdX似乎在流动性奖励上面越玩越有心得。11月13日消息,dYdX基金会发推称,社区投票赞成DIP 3“安全模块恢复”,第一个链上Long Timelock DIP通过。恢复安全模块的DIP从UTC时间11月20日3:56:42(北京时间11:56:42)开始执行。一旦DIP被执行,安全模块质押池的功能将被恢复,锁定的资金将被收回并发送到Rewards Treasury。安全模块将重置为全新状态。在该修复执行后,DYDX质押和赚取DYDX奖励立即生效。

当然,对于dYdX ,更多行业观察者仍然充满期待。dYdX 底层技术架构是去中心化的,运营模式相对其他 DEX 更接近于中心化交易所。可预期的是,如果想成为长期的去中心化衍生品 DEX 龙头,dYdX 在数据的快速增长后,需要走向更加去中心化的运营和产品模式——更迭整个模式,而不仅仅将公司实体的权力移交给基金会。显然,去中心化的实现不应当依靠项目方与流动性做市商的深度绑定。

由于目前资方和团队拥有最大规模的可投票代币(资方占总量 27.7% 的代币和团队的 15% 代币虽然被锁定但可以投票),因此团队和资方在当前阶段基本可以决定项目的发展方向。dYdX 项目方对于 2022 年的计划也是让项目继续去中心化;dYdX 的交易费用归属目前尚未明确,官网信息模糊指向该部分归项目方所有,其代币 dYdX 可能不捕获这部分价值,但这个问题未来可能通过社区提案解决。

当今这个时代,dYdX当之无愧是链上衍生品赛道的龙头项目。它的迭代和自我完善会成为整个行业观察者的风向标。

02 Perpetual,承前启后的探索

Perpetual Protocol是一个建立在以太坊上的去中心化期货(永续合约)Dex。与 dYdX相比, dYdX采用了类似中心化交易所的链下订单簿撮合机制,Perpetual目前采取vAMM形式来解决交易深度。这无疑在DeFi2.0进程中是衍生品赛道一个承前启后进化。

Perpetual设计的vAMM被称为虚拟化自动做市商,其vAMM本身并不存储真正的资金池,真实资产其实存储在智能合约金库中(用户提供),其通过该金库管理所有支持 vAMM 的抵押品来加强交易深度。这与Uniswap的vAMM相比也有所差异化的改进。Perpetual与中心化衍生品交易所流程基本相似,其不同是Perpetual交易的交易者的对手方是vAMM 本身。

衍生品

Perpetual V1 版本于2020年12月14日上线。在V1版本中,它使用了独有的vAMM机制进行定价并实现无限流动性,该机制不需要专门的流动性做市商(LP),仅需要合约交易者就可以交易,即它设定了一个合约交易者互为对手方的自动化交易机制,不需要“合约卖家”,解决了合约交易所依赖LP,同时LP容易发生较大损失的问题,具备较强的独创性。

V1存在着一些问题,比如需要手动调整k值(不够去中心化)、存在滑点、极端行情曾出现意外等。在V2版本中,Perp与Uniswap V3耦合,Perp V2将直接架设在Uniswap V3上,引入Maker(做市商)角色,使用Uniswap V3式的聚合流动性方式来做市,搭配“默认的做市策略”降低普通LP的做市门槛。并且,V2将实现“无许可的创建市场”机制,即Uniswap经典的自由上币机制。同时,也就将V2版本架设在了二层网络Arbitrum上。

经由Perpetual 两个版本的迭代,我们既可以看到在DeFi2.0进程中衍生品赛道的进化,也可以看到它自己的迭代与完善经历。

0201 V1 版本

AMM/订单簿:使用自动化做市商(AMM)或订单簿形式组织交易,是去中心化交易所的基本分类,Perp使用的是虚拟AMM(vAMM,详见下文)进行交易,不使用订单簿,属于AMM类交易所。

合约类型:Perp提供的合约是永续合约,永续合约是一种期货合约,为加密货币交易领域所独有,与传统合约的不同之处是,它永远不会到期,而会在固定的时间后续订。即每一个时间段,按照市场价格和持仓情况,多/空方其中一方向另一方收取一次资金费,同时仓位继续持有,相当于重新开立一份合约。

交易对:目前,Perp V1 提供18个交易对,包括ETH/USDC和BTC/USDC、YFI/USDC、DOT/USDC、SNX/USDC、AAVE/USDC等等。

多/空(long/short):用户在Perp V1交易中,可以做多或者做空。

杠杆倍数:可选择的杠杆倍数在1倍-10倍之间,每0.5倍为一档,比如能够开3.5倍做多仓位,但不能开3.6倍的。

资金费:与中心化交易所的传统永续合约设计类似,Perp上的永续合约持仓者每隔一段时间支付/收取一次费用,Perp上的资金费每小时支付一次。(计算方式见下文)

结算和抵押品:Perp使用USDC进行结算和作为抵押品,即它的开仓和结算都不使用其他资产,无论持仓BTC还是AAVE合约,都使用USDC进行开仓和结算。

在交易环节,以虚拟AMM定价,实际开仓/平仓的资金从资金池(Vault)进出,资金池中仅有USDC一种代币,开仓/平仓仅影响池中USDC数量;

在清算环节,由Chainlink喂价,保证金率低于6.5%时头寸将被清算,清算后的获利在保险基金与清算人之间分配。保险基金用于弥补行情剧烈波动时,平仓后穿仓的损失;

Staking提供者在Perp上不作为流动性提供者,仅仅是保险基金的初始提供者,承担保险基金赔付时的损失风险,同时享有手续费收入。

vAMM相对于AMM和订单簿,有如下几个优点:规避了无偿损失和做市商损失,增加了预言机喂价的价格发现功能,并且相对于复杂AMM和订单簿规则都实现了免于对专业做市商和流动性提供者的高度依赖。其代价是类似于AMM机制的L型价格弧线,交易者需要忍受一定的滑点。

V2版本

承上所述,由于DeFi生态的爆炸式增长,使得以太坊主链拥堵、gas费用暴涨,以及因为效率问题放大了交易者需要忍受滑点的风险,使用二层网络以加快交易速度、降低交易手续费已经成为DeFi项目整体确定性选择。尤其是衍生品类的DeFi项目,由于未来预期交易规模巨大、交易频繁、对高时效性、低手续费等方面要求较高等特点,更加迫切使用二层网络部署产品或测试网。

Perp项目V2版本名称为Curie(居里),其重点是使用Uniswap V3建构了一个架设于Arbitrum上的新Perpetual Protocol,这一版本改变了整体业务逻辑,目的是以聚合流动性的方式减小滑点、获得高资金效率的优势以及因架设在二层网络Arbitrum上而获得高交易速度。

聚合流动性(Concentrated Liquidity)

Perp的聚合流动性依托于Uniswap V3,V1中原有的 vAMM 逻辑在Uniswap V3上运行,将流动性集中在当前价格附近, 以提高资金效率。这是此次V2版本的重点之一,若成功落地,资本效率会上升多倍。

其具体实现方式是:

Perp V2 中为LP提供杠杆,称为「Leveraged LPs」(杠杆 LP)。

同时,在Uniswap V3上以v-Token创建池子,比如vUSDC/vETH,v-token是Perpetual Protocol系统生成的代币,目前仅用于Perp系统内的做市和交易等,这些池子真实的建立在目前的Uniswap架设在Arbitrum的V3上。

若LP向清算所(Clearing House)提供1,000 USDC进行做市,则Leveraged LPs功能可以在10倍范围内添加vUSDC,即最打可按照10 X为系统添加10,000 vUSDC,这10,000 vUSDC就成为LP可以在系统内放置流动性的总额度(也称为“信用”),LP可以将其添加到相应资产和区间上,比如可以分为5,000 vUSDC和价值5,000 vUSDC的vETH,添加到相应流动性池中。

在LP确定了对相应资产的分配额度后,系统铸造相应v-token,按照上述例子,系统铸造5,000 vUSDC和价值5,000 vUSDC的2 vETH(按照ETH价格2,500美金计算),LP可以按照自己的做市策略将这些v-token分配到Uniswap V3上的相应区间。

另外,LP的这10,000 vUSDC也可以作为交易额度进行使用,即LP可以在系统内以交易者角色在1,000 vUSDC额度内开仓。

Uniswap交易费用:由于清算所在这些池中同时充当LP和交易者,且目前Uniswap V3并未开始收取协议费用,所有交易手续费归LP,因此Perp在Uniswap V3上的交易净费用为零。(也就是LP不需要花费Uniswap上的交易费用,但Perp本身仍向交易者收取手续费)

做市商(Maker)

Perp V2版本首次引入了做市商(Maker)角色,其做市方式如上文“聚合流动性”部分所述:Maker在获得了系统授予的信用之后,可以按照在Uniswap V3上做市的方式,将vUSDC放置在希望做市的价格区间中的Tick上。(Uniswap V3的做市方式详见相应研报和文章)

收益:做市商将获得交易者(Trader)向Perpetual Protocol支付的手续费。注意,这部分费用不是“交易者向Uniswap V3支付的费用”,如上文所述,由于Perp在Uniswap V3的池中,是由系统同时实际扮演做市商和交易者角色,因此Uniswap上的费用为0。做市商获得的是Perp协议本身收取的费用。

这一更改使得在Perp上做市的得失更接近在Uniswap V3 上做市,可能存在无偿损失(IL),但由于流动性放置区间在价格附近,因此资金损失比此前的vAMM反而将提升。

但另一个问题是,此前的vAMM能够提供无限流动性(尽管在行情剧烈波动时,任何AMM提供无限流动性的代价都是极端价格),但引入Uniswap V3 之后,Perp将可能失去无限流动性这一优势。原本的vAMM无需对手方即可交易,但Uniswap V3模式下的vAMM需要对手方作为流动性来源方可交易。

Perp在这个问题上,准备以保险基金作为补充:由保险基金在无流动性情况下作为对手方。

保险基金

保险基金在V1版本中已经存在,其角色和功能是:在系统发生问题并导致交易者损失时,尤其是结算故障出现时,由保险基金进行赔付。

在V2版本中,保险基金新增了两项责任:

在无流动性时作为交易对手方与交易者(用户)进行交易,即上文所阐述的对Uniswap方案的补充,使得流动性获得一个补充。
在裸头寸/多空头寸不平衡时参与支付,即,如果多空头寸不平衡,比如多头有100 vETH的仓位,而空头有120 vETH的仓位,则不平衡的部分由保险基金作为对手方。
实际上,1是2的一种特殊情况,其本质也是多空的不平衡,导致使用保险基金作为对手方。

注意,在V1中,套利机器人理论上能够搬平Perp系统内由于AMM式交易产生的场内价格与指数价格的偏离,因此保险基金仅是套利机器人故障或者xDai结算问题或者Perp协议故障时使用。

而在V2中,情况2同样也会被市场上的套利机器人搬平,通常情况下,所以保险基金的作用除了1)情况下使用外,一样是一种补充。鉴于在V1中,Perp已经通过极端情况下要求交易者对大单拆单的方式(此处仅简单描述,需了解详情请查阅相关资料),在519中实现了Perp场内不插针,在V2中,同样也会有机器人和相关机制存在,预期其机制将使需要保险基金支付的“头寸不平衡”仅成为一种非常少见的情形。

联合保证金模式与多资产保证金(Cross-margin&multi-assets collateral)

联合保证金即“全仓模式”,用账户的所有余额来建立多个头寸,而不像V1中,为每一个头寸设立单独的余额(单独余额相当于是逐仓模式)。

多资产保证金即多币种保证金。V1采用的是USDC单币种进行结算,不能使用其他资产进行交易。V2的多币种保证金,意味着可以用多种资产进行交易,同时,可以用A币种来进行B币种的合约交易,例如,交易者Alice可以使用ETH作为抵押品,在BTC-USDC永续合约市场上开多,持有BTC多头头寸,结算时需要先计算BTC/USDC的盈亏,再计算ETH/USDC的盈亏——也就是BTC/ETH之间的实际汇率,最后决定Alice拿回来的ETH是多了还是少了,如果BTC对USDC价格下跌了,对ETH反而上涨,有可能Alice拿回的ETH反而增多。

无需许可的市场创建(Permissionless Market Creation)

这一功能实现的是整个去中心化衍生品交易所的共同追求之一:实现像Uniswap一样的“无限制全自由上币”。

同时,Perp V2支持Uniswap v3的 TWAP(时间加权平均价格)和Chainlink作为预言机的指数价格来源,这意味着如果一个资产在这些平台上有一个价格输入,任何人就都可以从中创建一个永久的市场。彼时资产选择可能不再局限于加密货币——外汇,商品,甚至股票。在V1中只有Chainlink作为喂价来源。

限价单和止损单

这一功能在V1时即确定进行开发。

V2版本在以太坊二层网络Arbitrum上运行

Arbitrum是采用欺诈证明(与之相对的是零知识证明)进行验证的一个二层网络项目,基于Optimistic Rollup,计算在线下,而数据在以太坊主网上,同时100%支持EVM,即对以太坊主网上的项目迁移过去更友好,不过安全性上Optimistic Rollup的方案整体不如zk-Rollup。目前已有多个Dex项目上到了Arbitrum上,包括Uniswap V3、Bancor、Sushiswap等等,以及与Perp同为期货Dex的Mcdex。

Perp官方在对V2的介绍中称,V2的速度可能达到V1的65倍,但这一倍数需要谨慎参考,实际情况需要在其V2上线后进行观察。

Perp V1架设在以太坊侧链xDai上,按照项目方披露的数据,Perp贡献的交易量占xDai的70%以上,在二层网络没有实际落地的情况下,xDai的确是一个可用方案。而xDai存在交易量瓶颈,随着Perp交易量进一步增大,极端行情面对交易量瞬时暴增的情况,容易拥堵甚至障碍。这一潜在问题再Arbitrum上或将得到解决。

采用Uniswap V3和Chainlink作为预言机

在V1版本中,Perp仅采用了Chainlink进行喂价,且Chainlink上到了Perp所在的以太坊侧链xDai上进行低延时喂价。在V2版本中,由于Perp实际使用Uniswap V3,二者天然同在Arbitrum,因此很方便能够使用Uniswap进行喂价。

03 以Vigoss为例,解析原生产品的进化

vigoss 的原型起始于2020年7月份,原本是Zero One团队想做杠杆代币,后来改成杠杆交易,最后又改做成永续合约了,因为普适性更大一些。与币安、ok等中心化交易所全封闭期货交易所、dydx半封闭半开放期货交易所相比,vigoss是在整个行业经历了做期货产品到底是一个金融工程问题还是一个协议创新的问题的校正、迭代和优化后作出的选择,全开放期货交易所vigoss拥抱defi2.0就变得合情合理了——选择协议创新就是要往开放性发展,成为链上乐高的一个组件。

DeFi2.0+vigoss全部流程“on chain\”,没有环节被中心化的环节干扰到。期货市场工具Vigoss做为DeFi2.0时代原生的衍生品项目,具有一下优势与特色:

自动虚拟做市。剥离了交易对与资产的关系,因此用户在交易的过程中可以使用更低的滑点进行交易。
提供15X杠杆,杠杆水平根据每月评估稳步提高,将最终达到50X。
完善的风险控制机制,利用AMM机制,极大程度防止穿仓风险,使区块链中的作恶者如闪电贷攻击需要付出极大的攻击成本。
工作原理

衍生品

例子:

虚拟化自动做事做市

Vigoss同样使用了Uniswap Protocol中 x* y=k的常数积方程来决定当前交易价格。在此基础上团队提出(VAAMM:Virtual Activation Automated Market Maker)算法。

进行交易时是由协议自动做市的, 价格的变动严格遵守常数积方程x*y=k。
同时协议需要流动性与流动性提供者,交易者的资金是储存在保证金池中的(Vault),
无需对手方买卖才即可撮合交易。只有当有头寸买卖的时候,交易价格才会变动。同时一个交易的盈利约等于另外交易或流动性提供者的亏损,反之亦然。
风险控制

因为使用了杠杆交易,即使虚拟化做市的存在,用户保证金存在保证金池中,用户也有穿仓的风险,因此,我们设置了如下机制降低这种风险的发生,同时极大的增加了作恶者如闪电贷攻击者的攻击成本。

资金费

虚拟做市往往会造成合约中价格与外部市场价格偏离的状况, 我们设计了如下方法来激励合约价格回归外部市场价格。从而平衡多空交易双方的交易额。

1、当支付资金费时,在每60分钟,chainlink会对标的进行喂价,协议根据当前的喂价与合约中价格的差额让多空双方进行补偿。即如果多方价格高于喂价,多方讲将会支付多的资金费给空方,以此激励用户买入空头交易对。资金费只会在市场开放的时候触发(vigoss在项目早期,交易人数少的时候,采用交易员和机器人的方式,对冲套取资金费 稳定增长。)

2、激励套利者。套利者可以在价格背离的时候在其他他协议中买卖资产,同时在Vigoss协议中反向做多或做空,最终使得价格回归chainlink喂价。

资金费的主要目的是使Vigoss交易对的价格趋近于外部市场价格。

价格计算公式公示如下:

资金费=头寸*资金费比率 资金费比率= (过去60分钟的vigoss交易对平均价格- 过去60分钟外部平均价格)/24

如资金费比率为正,即多头向空头支付资金,反之则为空头向多头支付资金。其中外部价格是由chainlink喂价。资金费每60分钟结算,所以,通过资金费存在,例如,多头获利者会想在清算资金费之前关闭合约,因此来避免交资金费给空方,同时套利者看你会在这时买入空方,一次获得资金费的收益。

不再需要风险金池

风险金池不再需要,风险由 LP 来承担。

Vigoss将会收取一定比例的交易手续费,测试阶段手续费收入100%给到LP。

熔断

衍生品

未来规划:预言机-vAMM价格差距过大熔断。

是否前端会显示停牌

另外注意,在市场熔断期间,资金费将不会被触发。

预言机价格清算

因为Vigoss使用了标记价格来防止市场操作行为或者流动性不足引起的强制平仓。当仓位维持保证金低于6.25%的时候,将可以由清算人进行强制清仓。

例:

当前ETH/USD单价为100,用户提供10000USD作为保证金使用5倍杠杆,此时用户头寸为50000USD,保证金率为20%。当ETH/USD跌破86.25时候,此时保证金率为6.25%,满足最低维持保证金比率,即用户的仓位可以被清算。

Vigoss的合约采取公开清算策略,任何清算人都可以在满足最低维持保证金比率的情况下对交易者仓位进行强制清算。强制清仓触发时,交易者的委托合约将会被取消,作为激励,清算人可以获得1.25%的剩余名义仓位,余下的保证金将会被储存在LP 资金池中。

在正常市场情况下,Vigoss会使用合约内的市场价格进行清算,当合约内价格与外部预言机价格差距超过10%的情况下,清算价格则会以预言机价格为准,以此来保护交易者。

如果仓位发生穿仓,穿仓仓位的损失优先由 LP 资金池 进行补充。

LP相关机制

Vigoss从一开始引入LP作为流动性提供者,但是由于我们采用vAMM机制,仅需要采用USDT作为单币质押的币种。

单币提供流动性

衍生品

LP提供流动性的USDT将被拆成两份,其中第二份vUSDT将以100%抵押率按照当前vAMM的价格铸币生成vETH与第一份vUSDT组成LP token注入进vAMM池里。

LP风险提示与撤出判断条件

衍生品

如上图所示,当LP撤出流动性,如果其撤出的vETH数量少于之前抵押铸币的数量,Vigoss自动将撤出的vUSDT中的一部分用于在vAMM中购入vETH补齐铸造的数量。但若此时撤出的vUSDT无法补足vETH的差额,那么LP将无法撤出流动性。
LP将承担无常损失的风险。
为了保护交易者,使得vAMM资金池中有足够的流动性能够让交易者平仓,Vigoss会一定程度限制LP大量撤出。

衍生品

注意,在正常的市场条件下,LP足够分散,那么上述对LP的限制条件并不会触发。但当vAMM的LP过于集中,那么LP会面临无法完全撤出流动性的风险。

例:假设某时刻vAMM池中有 10,000 vETH,20,000,000vUSDT. vAMM中vETH/vUSDT的单价为2,000. 此时Alice决定提供400,000USDT作为LP, 那么她的400,000USDT首先将被兑换成两份vUSDT,其中一份为200,000vUSDT直接进入vAMM池,另一份200,000vUSDT将被用来按此时的vAMM中的vETH价格抵押铸造出 100vETH进入vAMM池. Alice提供流动性后,vAMM池中有 10,100vETH, 20,200,000vUSDT. Alice提供的流动性占整个vAMM池的1/101 = 0.990099%.

在Alice提供了流动性之后的一段时间里,所有交易员总计新增了500做多仓位,新增了300做空仓位。假设此段时间内没有新的LP进入,则此时vAMM池中有9,900vETH, 20,608,080.808081vUSDT (vAMM中vETH/vUSD的单价为2,081.624324). 此时Alice打算完全撤出她的流动性,那么Vigoss将按下述过程计算出Alice能得到USDT数目:首先,由于Alice提供的流动性占整个vAMM池的1/101 = 0.990099%,她能撤出 98.019802vETH 和204,040.404040vUSDT. vAMM池中还剩余 9801.980198vETH 和 20,404,040.404040vUSDT. 由于撤出的vETH不足铸造的100vETH, 故Vigoss会自动将Alice撤出的vUSDT中的4,122.861266vUSDT用于在此时的vAMM中购买出1.980198vETH (购买后,vAMM中还剩余9,800.000000vETH和20,408,163.265306vUSD). 这样补足了铸造的100vETH用于赎回抵押的200,000vUSD. 故最终Alice能得到204,040.404040-4,122.861266+200,000=399,917.542774USDT (以及在提供流动性期间赚得的手续费与资金费)。

未来数字货币领域一定会出现复杂的金融工具,vigoss是其中一部分,后续发展除了以上开放性发展,还有如下开发计划:

1 要新增功能杠杆交易,杠杆部分由flux协议信用借款给用户在vigoss上交易。

2 多链发展

3 为所有长尾资产提供永续合约服务

4 为合成资产提供永续合约服务

5 为NFT标的提供永续合约服务

以此可见,DeFi2.0时代的原生产品vigoss拥有多的开发潜力和空间。

以与flux协议的联动效应为例,我们可以解析在DeFi2.0时代衍生品市场中借贷协议与期权协议如何迭代进化以及前景——在数学上,一切金融产品,无论是股票、债券、期货合约、期权,还是房地产、抵押债券,全部都可以还原成某种形式的期权。背后起支撑作用的,是布莱克—斯克尔斯—默顿期权定价模型(Black-Scholes-Merton Model)。

从数学的角度,可以将抵押贷款理解为看涨期权和看跌期权的组合。债权人不仅是在提供资金,更是在卖出一种奇异期权:如果担保品价格(St)上涨,债务人可以用更低价格(L)买回担保品,债权人必须要以这个行权价卖出。如果担保品价格下跌,债务人就可以用更高价格(L)卖出担保品,这时债权人必须用这个行权价买入。因此,收取的利息,既可以理解成是资金的使用成本,也可以理解成是期权卖方为给买方提供便利而索取的保险费。

抵押借贷在数学上等价于一种行权价为借贷本金 L 的「期权」,代入布莱克—斯克尔斯—默顿期权定价模型,解二阶齐次线性抛物型偏微分方程, 得到的是:

衍生品

衍生品

衍生品

图中 L 是一个三元复合函数,为本次抵押贷款视为欧式看跌期权时的价格。Q 为担保品价值,F 为贷款本金,N 代表正态分布变量的累积概率分布函数。Log 是自然对数函数 ln 的非标准写法。

如果把借贷市场视为奇异期权买方和卖方的一场博弈,最优的情况,当然是担保品价格上涨。这时候,借款人可以收回现货,从现货增值中获利;贷出者也可以按期收回本息。整个流程中,比特币在发挥担保品价值,而借贷市场也承担了价格发现的功能。可以预见的是,vigoss与flux协议的联动会有很好的化学反应,而这只是vigoss未来开发计划的一部分。

结语

“去年的DeFi+流动性挖矿,引爆了整个加密经济,给我们带来了一个风起云涌的DeFi,但大家逐渐发现了流动性挖矿这种短期激励模式的弊端,流动性提供者和协议长期利益并没有形成一致,这种矛盾的存在导致DeFi在度过一个绚烂的夏天之后后继乏力;今年又出现了Gamefi+打金/游戏即挖矿(play to earn),现在在这个赛道活跃的开发者和玩家大都不是为着游戏体验而来的,大都是奔着挖矿的财富故事而来;明年,可能还会有别的热点+新的挖矿模式……这不是加密经济好的进化、演进的方式,相反,我们认为这会透支区块链技术对下一个时代变革使命的力量。本文的叙事方式为开发者在对“DeFi+流动性挖矿”反思的基础上的演进。”

我们放弃了用这段描述开篇,是因为我们在与vigoss的开发团队Zero One创始人Robin交流中受到一些启发。下面是Robin与我们交流的内容整理,我们以此结尾,希望可以给更多朋友以启发:

我觉得文章开头是个立场问题。矿圈看DeFi觉得你们都是给我们贡献手续费的,然而因为DeFi的财富效应他们难以理解。传统金融看矿圈又何尝不是呢?或许DeFi接收了btc泡沫,GameFi又接收了DeFi的泡沫,然而每个圈子看对方都是泡沫。今年四五月份满地土狗借贷、机枪池时候我觉得自己行业也挺泡沫了,不过最近挤走了不少泡沫去了GameFi。

没有泡沫,不少优质公链也难以为继发展至今,而现在的defi也面临同样的情况,大浪淘沙之后纯粹的矿币维系的DeFi都逐渐走向了消亡,后DeFi时代(DeFi2.0)就是纯粹拼各家DeFi满足用户金融业务需求的能力。交易类、借贷类、保险类,大家一起去掉矿后什么业务能生存下去,基本就是寒冬到来的时候的DeFi基本格局。永续合约协议的发展未来一定是去满足小币、新币、合成资产甚至NFT,而交易对不仅要满足usdt、usdc用户,还要迎合更多算稳用户,在内容上和中心化交易所走差异化竞争,在结构上去搭协议乐高、聚合生态。随着区块链上出现越来越多复杂且变化多端的金融组合物,永续合约协议才会全面爆发。仅靠dydx依托资本的交易所一家独秀,这个赛道是极不健康的。

欢迎使用Markdown编辑器

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: 以Vigoss、Perp、dydx为例,解析衍生品在DeFi2.0进程里的演进

带尺寸的图片: 以Vigoss、Perp、dydx为例,解析衍生品在DeFi2.0进程里的演进

居中的图片: 以Vigoss、Perp、dydx为例,解析衍生品在DeFi2.0进程里的演进

居中并且带尺寸的图片: 以Vigoss、Perp、dydx为例,解析衍生品在DeFi2.0进程里的演进

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted blockvar foo = \'bar\';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks \'Isn\'t this fun?\' ‘Isn’t this fun?’
Quotes \"Isn\'t this fun?\" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

创建一个自定义列表

Markdown

Text-to- HTML conversion tool

Authors

John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML。

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \\Gamma(n) = (n-1)!\\quad\\forall n\\in\\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \\Gamma(z) = \\int_0^\\infty t^{z-1}e^{-t}dt\\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

#mermaid-svg-g5daJv8fF567bxFq .label{font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family);fill:#333;color:#333}#mermaid-svg-g5daJv8fF567bxFq .label text{fill:#333}#mermaid-svg-g5daJv8fF567bxFq .node rect,#mermaid-svg-g5daJv8fF567bxFq .node circle,#mermaid-svg-g5daJv8fF567bxFq .node ellipse,#mermaid-svg-g5daJv8fF567bxFq .node polygon,#mermaid-svg-g5daJv8fF567bxFq .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-g5daJv8fF567bxFq .node .label{text-align:center;fill:#333}#mermaid-svg-g5daJv8fF567bxFq .node.clickable{cursor:pointer}#mermaid-svg-g5daJv8fF567bxFq .arrowheadPath{fill:#333}#mermaid-svg-g5daJv8fF567bxFq .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-g5daJv8fF567bxFq .flowchart-link{stroke:#333;fill:none}#mermaid-svg-g5daJv8fF567bxFq .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-g5daJv8fF567bxFq .edgeLabel rect{opacity:0.9}#mermaid-svg-g5daJv8fF567bxFq .edgeLabel span{color:#333}#mermaid-svg-g5daJv8fF567bxFq .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-g5daJv8fF567bxFq .cluster text{fill:#333}#mermaid-svg-g5daJv8fF567bxFq div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-g5daJv8fF567bxFq .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-g5daJv8fF567bxFq text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-g5daJv8fF567bxFq .actor-line{stroke:grey}#mermaid-svg-g5daJv8fF567bxFq .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-g5daJv8fF567bxFq .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-g5daJv8fF567bxFq #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-g5daJv8fF567bxFq .sequenceNumber{fill:#fff}#mermaid-svg-g5daJv8fF567bxFq #sequencenumber{fill:#333}#mermaid-svg-g5daJv8fF567bxFq #crosshead path{fill:#333;stroke:#333}#mermaid-svg-g5daJv8fF567bxFq .messageText{fill:#333;stroke:#333}#mermaid-svg-g5daJv8fF567bxFq .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-g5daJv8fF567bxFq .labelText,#mermaid-svg-g5daJv8fF567bxFq .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-g5daJv8fF567bxFq .loopText,#mermaid-svg-g5daJv8fF567bxFq .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-g5daJv8fF567bxFq .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-g5daJv8fF567bxFq .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-g5daJv8fF567bxFq .noteText,#mermaid-svg-g5daJv8fF567bxFq .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-g5daJv8fF567bxFq .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-g5daJv8fF567bxFq .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-g5daJv8fF567bxFq .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-g5daJv8fF567bxFq .mermaid-main-font{font-family:\”trebuchet ms\”, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-g5daJv8fF567bxFq .section{stroke:none;opacity:0.2}#mermaid-svg-g5daJv8fF567bxFq .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-g5daJv8fF567bxFq .section2{fill:#fff400}#mermaid-svg-g5daJv8fF567bxFq .section1,#mermaid-svg-g5daJv8fF567bxFq .section3{fill:#fff;opacity:0.2}#mermaid-svg-g5daJv8fF567bxFq .sectionTitle0{fill:#333}#mermaid-svg-g5daJv8fF567bxFq .sectionTitle1{fill:#333}#mermaid-svg-g5daJv8fF567bxFq .sectionTitle2{fill:#333}#mermaid-svg-g5daJv8fF567bxFq .sectionTitle3{fill:#333}#mermaid-svg-g5daJv8fF567bxFq .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-g5daJv8fF567bxFq .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-g5daJv8fF567bxFq .grid .tick text{font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-g5daJv8fF567bxFq .grid path{stroke-width:0}#mermaid-svg-g5daJv8fF567bxFq .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-g5daJv8fF567bxFq .task{stroke-width:2}#mermaid-svg-g5daJv8fF567bxFq .taskText{text-anchor:middle;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-g5daJv8fF567bxFq .taskText:not([font-size]){font-size:11px}#mermaid-svg-g5daJv8fF567bxFq .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-g5daJv8fF567bxFq .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-g5daJv8fF567bxFq .task.clickable{cursor:pointer}#mermaid-svg-g5daJv8fF567bxFq .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-g5daJv8fF567bxFq .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-g5daJv8fF567bxFq .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-g5daJv8fF567bxFq .taskText0,#mermaid-svg-g5daJv8fF567bxFq .taskText1,#mermaid-svg-g5daJv8fF567bxFq .taskText2,#mermaid-svg-g5daJv8fF567bxFq .taskText3{fill:#fff}#mermaid-svg-g5daJv8fF567bxFq .task0,#mermaid-svg-g5daJv8fF567bxFq .task1,#mermaid-svg-g5daJv8fF567bxFq .task2,#mermaid-svg-g5daJv8fF567bxFq .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-g5daJv8fF567bxFq .taskTextOutside0,#mermaid-svg-g5daJv8fF567bxFq .taskTextOutside2{fill:#000}#mermaid-svg-g5daJv8fF567bxFq .taskTextOutside1,#mermaid-svg-g5daJv8fF567bxFq .taskTextOutside3{fill:#000}#mermaid-svg-g5daJv8fF567bxFq .active0,#mermaid-svg-g5daJv8fF567bxFq .active1,#mermaid-svg-g5daJv8fF567bxFq .active2,#mermaid-svg-g5daJv8fF567bxFq .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-g5daJv8fF567bxFq .activeText0,#mermaid-svg-g5daJv8fF567bxFq .activeText1,#mermaid-svg-g5daJv8fF567bxFq .activeText2,#mermaid-svg-g5daJv8fF567bxFq .activeText3{fill:#000 !important}#mermaid-svg-g5daJv8fF567bxFq .done0,#mermaid-svg-g5daJv8fF567bxFq .done1,#mermaid-svg-g5daJv8fF567bxFq .done2,#mermaid-svg-g5daJv8fF567bxFq .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-g5daJv8fF567bxFq .doneText0,#mermaid-svg-g5daJv8fF567bxFq .doneText1,#mermaid-svg-g5daJv8fF567bxFq .doneText2,#mermaid-svg-g5daJv8fF567bxFq .doneText3{fill:#000 !important}#mermaid-svg-g5daJv8fF567bxFq .crit0,#mermaid-svg-g5daJv8fF567bxFq .crit1,#mermaid-svg-g5daJv8fF567bxFq .crit2,#mermaid-svg-g5daJv8fF567bxFq .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-g5daJv8fF567bxFq .activeCrit0,#mermaid-svg-g5daJv8fF567bxFq .activeCrit1,#mermaid-svg-g5daJv8fF567bxFq .activeCrit2,#mermaid-svg-g5daJv8fF567bxFq .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-g5daJv8fF567bxFq .doneCrit0,#mermaid-svg-g5daJv8fF567bxFq .doneCrit1,#mermaid-svg-g5daJv8fF567bxFq .doneCrit2,#mermaid-svg-g5daJv8fF567bxFq .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-g5daJv8fF567bxFq .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-g5daJv8fF567bxFq .milestoneText{font-style:italic}#mermaid-svg-g5daJv8fF567bxFq .doneCritText0,#mermaid-svg-g5daJv8fF567bxFq .doneCritText1,#mermaid-svg-g5daJv8fF567bxFq .doneCritText2,#mermaid-svg-g5daJv8fF567bxFq .doneCritText3{fill:#000 !important}#mermaid-svg-g5daJv8fF567bxFq .activeCritText0,#mermaid-svg-g5daJv8fF567bxFq .activeCritText1,#mermaid-svg-g5daJv8fF567bxFq .activeCritText2,#mermaid-svg-g5daJv8fF567bxFq .activeCritText3{fill:#000 !important}#mermaid-svg-g5daJv8fF567bxFq .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-g5daJv8fF567bxFq g.classGroup text{fill:#9370db;stroke:none;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family);font-size:10px}#mermaid-svg-g5daJv8fF567bxFq g.classGroup text .title{font-weight:bolder}#mermaid-svg-g5daJv8fF567bxFq g.clickable{cursor:pointer}#mermaid-svg-g5daJv8fF567bxFq g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-g5daJv8fF567bxFq g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-g5daJv8fF567bxFq .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-g5daJv8fF567bxFq .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-g5daJv8fF567bxFq .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-g5daJv8fF567bxFq .dashed-line{stroke-dasharray:3}#mermaid-svg-g5daJv8fF567bxFq #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-g5daJv8fF567bxFq #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-g5daJv8fF567bxFq #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-g5daJv8fF567bxFq #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-g5daJv8fF567bxFq #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-g5daJv8fF567bxFq #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-g5daJv8fF567bxFq #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-g5daJv8fF567bxFq #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-g5daJv8fF567bxFq .commit-id,#mermaid-svg-g5daJv8fF567bxFq .commit-msg,#mermaid-svg-g5daJv8fF567bxFq .branch-label{fill:lightgrey;color:lightgrey;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-g5daJv8fF567bxFq .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-g5daJv8fF567bxFq .slice{font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-g5daJv8fF567bxFq g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-g5daJv8fF567bxFq g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-g5daJv8fF567bxFq g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-g5daJv8fF567bxFq g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-g5daJv8fF567bxFq g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-g5daJv8fF567bxFq g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-g5daJv8fF567bxFq .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-g5daJv8fF567bxFq .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-g5daJv8fF567bxFq .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-g5daJv8fF567bxFq .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-g5daJv8fF567bxFq .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-g5daJv8fF567bxFq .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-g5daJv8fF567bxFq .edgeLabel text{fill:#333}#mermaid-svg-g5daJv8fF567bxFq .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-g5daJv8fF567bxFq .node circle.state-start{fill:black;stroke:black}#mermaid-svg-g5daJv8fF567bxFq .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-g5daJv8fF567bxFq #statediagram-barbEnd{fill:#9370db}#mermaid-svg-g5daJv8fF567bxFq .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-g5daJv8fF567bxFq .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-g5daJv8fF567bxFq .statediagram-state .divider{stroke:#9370db}#mermaid-svg-g5daJv8fF567bxFq .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-g5daJv8fF567bxFq .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-g5daJv8fF567bxFq .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-g5daJv8fF567bxFq .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-g5daJv8fF567bxFq .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-g5daJv8fF567bxFq .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-g5daJv8fF567bxFq .note-edge{stroke-dasharray:5}#mermaid-svg-g5daJv8fF567bxFq .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{–mermaid-font-family: \’\”trebuchet ms\”, verdana, arial\’;–mermaid-font-family: \”Comic Sans MS\”, \”Comic Sans\”, cursive}#mermaid-svg-g5daJv8fF567bxFq .error-icon{fill:#522}#mermaid-svg-g5daJv8fF567bxFq .error-text{fill:#522;stroke:#522}#mermaid-svg-g5daJv8fF567bxFq .edge-thickness-normal{stroke-width:2px}#mermaid-svg-g5daJv8fF567bxFq .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-g5daJv8fF567bxFq .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-g5daJv8fF567bxFq .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-g5daJv8fF567bxFq .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-g5daJv8fF567bxFq .marker{fill:#333}#mermaid-svg-g5daJv8fF567bxFq .marker.cross{stroke:#333}:root { –mermaid-font-family: \”trebuchet ms\”, verdana, arial;} #mermaid-svg-g5daJv8fF567bxFq { color: rgba(0, 0, 0, 0.75); font: ; } 张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五… 很好… 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

#mermaid-svg-j4jz7L4H4dJdoFJr .label{font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family);fill:#333;color:#333}#mermaid-svg-j4jz7L4H4dJdoFJr .label text{fill:#333}#mermaid-svg-j4jz7L4H4dJdoFJr .node rect,#mermaid-svg-j4jz7L4H4dJdoFJr .node circle,#mermaid-svg-j4jz7L4H4dJdoFJr .node ellipse,#mermaid-svg-j4jz7L4H4dJdoFJr .node polygon,#mermaid-svg-j4jz7L4H4dJdoFJr .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-j4jz7L4H4dJdoFJr .node .label{text-align:center;fill:#333}#mermaid-svg-j4jz7L4H4dJdoFJr .node.clickable{cursor:pointer}#mermaid-svg-j4jz7L4H4dJdoFJr .arrowheadPath{fill:#333}#mermaid-svg-j4jz7L4H4dJdoFJr .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-j4jz7L4H4dJdoFJr .flowchart-link{stroke:#333;fill:none}#mermaid-svg-j4jz7L4H4dJdoFJr .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-j4jz7L4H4dJdoFJr .edgeLabel rect{opacity:0.9}#mermaid-svg-j4jz7L4H4dJdoFJr .edgeLabel span{color:#333}#mermaid-svg-j4jz7L4H4dJdoFJr .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-j4jz7L4H4dJdoFJr .cluster text{fill:#333}#mermaid-svg-j4jz7L4H4dJdoFJr div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-j4jz7L4H4dJdoFJr .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-j4jz7L4H4dJdoFJr text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-j4jz7L4H4dJdoFJr .actor-line{stroke:grey}#mermaid-svg-j4jz7L4H4dJdoFJr .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-j4jz7L4H4dJdoFJr .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-j4jz7L4H4dJdoFJr #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-j4jz7L4H4dJdoFJr .sequenceNumber{fill:#fff}#mermaid-svg-j4jz7L4H4dJdoFJr #sequencenumber{fill:#333}#mermaid-svg-j4jz7L4H4dJdoFJr #crosshead path{fill:#333;stroke:#333}#mermaid-svg-j4jz7L4H4dJdoFJr .messageText{fill:#333;stroke:#333}#mermaid-svg-j4jz7L4H4dJdoFJr .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-j4jz7L4H4dJdoFJr .labelText,#mermaid-svg-j4jz7L4H4dJdoFJr .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-j4jz7L4H4dJdoFJr .loopText,#mermaid-svg-j4jz7L4H4dJdoFJr .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-j4jz7L4H4dJdoFJr .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-j4jz7L4H4dJdoFJr .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-j4jz7L4H4dJdoFJr .noteText,#mermaid-svg-j4jz7L4H4dJdoFJr .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-j4jz7L4H4dJdoFJr .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-j4jz7L4H4dJdoFJr .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-j4jz7L4H4dJdoFJr .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-j4jz7L4H4dJdoFJr .mermaid-main-font{font-family:\”trebuchet ms\”, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-j4jz7L4H4dJdoFJr .section{stroke:none;opacity:0.2}#mermaid-svg-j4jz7L4H4dJdoFJr .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-j4jz7L4H4dJdoFJr .section2{fill:#fff400}#mermaid-svg-j4jz7L4H4dJdoFJr .section1,#mermaid-svg-j4jz7L4H4dJdoFJr .section3{fill:#fff;opacity:0.2}#mermaid-svg-j4jz7L4H4dJdoFJr .sectionTitle0{fill:#333}#mermaid-svg-j4jz7L4H4dJdoFJr .sectionTitle1{fill:#333}#mermaid-svg-j4jz7L4H4dJdoFJr .sectionTitle2{fill:#333}#mermaid-svg-j4jz7L4H4dJdoFJr .sectionTitle3{fill:#333}#mermaid-svg-j4jz7L4H4dJdoFJr .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-j4jz7L4H4dJdoFJr .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-j4jz7L4H4dJdoFJr .grid .tick text{font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-j4jz7L4H4dJdoFJr .grid path{stroke-width:0}#mermaid-svg-j4jz7L4H4dJdoFJr .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-j4jz7L4H4dJdoFJr .task{stroke-width:2}#mermaid-svg-j4jz7L4H4dJdoFJr .taskText{text-anchor:middle;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-j4jz7L4H4dJdoFJr .taskText:not([font-size]){font-size:11px}#mermaid-svg-j4jz7L4H4dJdoFJr .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-j4jz7L4H4dJdoFJr .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-j4jz7L4H4dJdoFJr .task.clickable{cursor:pointer}#mermaid-svg-j4jz7L4H4dJdoFJr .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-j4jz7L4H4dJdoFJr .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-j4jz7L4H4dJdoFJr .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-j4jz7L4H4dJdoFJr .taskText0,#mermaid-svg-j4jz7L4H4dJdoFJr .taskText1,#mermaid-svg-j4jz7L4H4dJdoFJr .taskText2,#mermaid-svg-j4jz7L4H4dJdoFJr .taskText3{fill:#fff}#mermaid-svg-j4jz7L4H4dJdoFJr .task0,#mermaid-svg-j4jz7L4H4dJdoFJr .task1,#mermaid-svg-j4jz7L4H4dJdoFJr .task2,#mermaid-svg-j4jz7L4H4dJdoFJr .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-j4jz7L4H4dJdoFJr .taskTextOutside0,#mermaid-svg-j4jz7L4H4dJdoFJr .taskTextOutside2{fill:#000}#mermaid-svg-j4jz7L4H4dJdoFJr .taskTextOutside1,#mermaid-svg-j4jz7L4H4dJdoFJr .taskTextOutside3{fill:#000}#mermaid-svg-j4jz7L4H4dJdoFJr .active0,#mermaid-svg-j4jz7L4H4dJdoFJr .active1,#mermaid-svg-j4jz7L4H4dJdoFJr .active2,#mermaid-svg-j4jz7L4H4dJdoFJr .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-j4jz7L4H4dJdoFJr .activeText0,#mermaid-svg-j4jz7L4H4dJdoFJr .activeText1,#mermaid-svg-j4jz7L4H4dJdoFJr .activeText2,#mermaid-svg-j4jz7L4H4dJdoFJr .activeText3{fill:#000 !important}#mermaid-svg-j4jz7L4H4dJdoFJr .done0,#mermaid-svg-j4jz7L4H4dJdoFJr .done1,#mermaid-svg-j4jz7L4H4dJdoFJr .done2,#mermaid-svg-j4jz7L4H4dJdoFJr .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-j4jz7L4H4dJdoFJr .doneText0,#mermaid-svg-j4jz7L4H4dJdoFJr .doneText1,#mermaid-svg-j4jz7L4H4dJdoFJr .doneText2,#mermaid-svg-j4jz7L4H4dJdoFJr .doneText3{fill:#000 !important}#mermaid-svg-j4jz7L4H4dJdoFJr .crit0,#mermaid-svg-j4jz7L4H4dJdoFJr .crit1,#mermaid-svg-j4jz7L4H4dJdoFJr .crit2,#mermaid-svg-j4jz7L4H4dJdoFJr .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-j4jz7L4H4dJdoFJr .activeCrit0,#mermaid-svg-j4jz7L4H4dJdoFJr .activeCrit1,#mermaid-svg-j4jz7L4H4dJdoFJr .activeCrit2,#mermaid-svg-j4jz7L4H4dJdoFJr .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-j4jz7L4H4dJdoFJr .doneCrit0,#mermaid-svg-j4jz7L4H4dJdoFJr .doneCrit1,#mermaid-svg-j4jz7L4H4dJdoFJr .doneCrit2,#mermaid-svg-j4jz7L4H4dJdoFJr .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-j4jz7L4H4dJdoFJr .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-j4jz7L4H4dJdoFJr .milestoneText{font-style:italic}#mermaid-svg-j4jz7L4H4dJdoFJr .doneCritText0,#mermaid-svg-j4jz7L4H4dJdoFJr .doneCritText1,#mermaid-svg-j4jz7L4H4dJdoFJr .doneCritText2,#mermaid-svg-j4jz7L4H4dJdoFJr .doneCritText3{fill:#000 !important}#mermaid-svg-j4jz7L4H4dJdoFJr .activeCritText0,#mermaid-svg-j4jz7L4H4dJdoFJr .activeCritText1,#mermaid-svg-j4jz7L4H4dJdoFJr .activeCritText2,#mermaid-svg-j4jz7L4H4dJdoFJr .activeCritText3{fill:#000 !important}#mermaid-svg-j4jz7L4H4dJdoFJr .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-j4jz7L4H4dJdoFJr g.classGroup text{fill:#9370db;stroke:none;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family);font-size:10px}#mermaid-svg-j4jz7L4H4dJdoFJr g.classGroup text .title{font-weight:bolder}#mermaid-svg-j4jz7L4H4dJdoFJr g.clickable{cursor:pointer}#mermaid-svg-j4jz7L4H4dJdoFJr g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-j4jz7L4H4dJdoFJr g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-j4jz7L4H4dJdoFJr .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-j4jz7L4H4dJdoFJr .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-j4jz7L4H4dJdoFJr .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-j4jz7L4H4dJdoFJr .dashed-line{stroke-dasharray:3}#mermaid-svg-j4jz7L4H4dJdoFJr #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-j4jz7L4H4dJdoFJr #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-j4jz7L4H4dJdoFJr #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-j4jz7L4H4dJdoFJr #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-j4jz7L4H4dJdoFJr #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-j4jz7L4H4dJdoFJr #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-j4jz7L4H4dJdoFJr #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-j4jz7L4H4dJdoFJr #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-j4jz7L4H4dJdoFJr .commit-id,#mermaid-svg-j4jz7L4H4dJdoFJr .commit-msg,#mermaid-svg-j4jz7L4H4dJdoFJr .branch-label{fill:lightgrey;color:lightgrey;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-j4jz7L4H4dJdoFJr .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-j4jz7L4H4dJdoFJr .slice{font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-j4jz7L4H4dJdoFJr g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-j4jz7L4H4dJdoFJr g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-j4jz7L4H4dJdoFJr g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-j4jz7L4H4dJdoFJr g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-j4jz7L4H4dJdoFJr g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-j4jz7L4H4dJdoFJr g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-j4jz7L4H4dJdoFJr .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-j4jz7L4H4dJdoFJr .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-j4jz7L4H4dJdoFJr .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-j4jz7L4H4dJdoFJr .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-j4jz7L4H4dJdoFJr .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-j4jz7L4H4dJdoFJr .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-j4jz7L4H4dJdoFJr .edgeLabel text{fill:#333}#mermaid-svg-j4jz7L4H4dJdoFJr .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:\’trebuchet ms\’, verdana, arial;font-family:var(–mermaid-font-family)}#mermaid-svg-j4jz7L4H4dJdoFJr .node circle.state-start{fill:black;stroke:black}#mermaid-svg-j4jz7L4H4dJdoFJr .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-j4jz7L4H4dJdoFJr #statediagram-barbEnd{fill:#9370db}#mermaid-svg-j4jz7L4H4dJdoFJr .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-j4jz7L4H4dJdoFJr .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-j4jz7L4H4dJdoFJr .statediagram-state .divider{stroke:#9370db}#mermaid-svg-j4jz7L4H4dJdoFJr .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-j4jz7L4H4dJdoFJr .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-j4jz7L4H4dJdoFJr .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-j4jz7L4H4dJdoFJr .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-j4jz7L4H4dJdoFJr .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-j4jz7L4H4dJdoFJr .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-j4jz7L4H4dJdoFJr .note-edge{stroke-dasharray:5}#mermaid-svg-j4jz7L4H4dJdoFJr .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{–mermaid-font-family: \’\”trebuchet ms\”, verdana, arial\’;–mermaid-font-family: \”Comic Sans MS\”, \”Comic Sans\”, cursive}#mermaid-svg-j4jz7L4H4dJdoFJr .error-icon{fill:#522}#mermaid-svg-j4jz7L4H4dJdoFJr .error-text{fill:#522;stroke:#522}#mermaid-svg-j4jz7L4H4dJdoFJr .edge-thickness-normal{stroke-width:2px}#mermaid-svg-j4jz7L4H4dJdoFJr .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-j4jz7L4H4dJdoFJr .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-j4jz7L4H4dJdoFJr .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-j4jz7L4H4dJdoFJr .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-j4jz7L4H4dJdoFJr .marker{fill:#333}#mermaid-svg-j4jz7L4H4dJdoFJr .marker.cross{stroke:#333}:root { –mermaid-font-family: \”trebuchet ms\”, verdana, arial;} #mermaid-svg-j4jz7L4H4dJdoFJr { color: rgba(0, 0, 0, 0.75); font: ; }

链接

给TA打赏
共{{data.count}}人
人已打赏
区块链推广

戒梭先生:随笔|合格交易者要达到的三个境界

2021-11-28 10:46:07

区块链推广

GameFi赛道出现链游聚合平台(上)

2021-11-28 10:46:09

重要说明

本站资源大多来自网络,如有侵犯你的权益请联系管理员 区块链Bi站  或给邮箱发送邮件834379394@qq.com 我们会第一时间进行审核删除。 站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!请在下载24小时内删除!


如果你遇到支付完成,找不到下载链接,或者不能下载,或者解压失败,先不要忙,加客服主的QQ:834379394 (客服有可能有事情或者在睡觉不能及时的回复您,QQ留言后,请耐心等待即可!)

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索