协议之外
三样东西立在 Assetrix 旁边,却不属于它。本页用最简单的话说明它们做什么,以及谁完全用不上。
本页写给谁
您在 Uniswap 买卖 ASTRX
当 ASTRX 的转账费高于零时,一笔交易还需要协议之外的另一份合约——路由器。这源于去中心化交易所的运作方式。
您是流动性提供者
在 Uniswap v3 上您同样需要路由器;在 v4 上则需要仓位管理器。
您要关闭一笔低于阈值的大仓位
保护水平可能一次不放行整笔仓位。要确切知道一次能关闭多少,需要协议之外的另一份合约——读取器。
如果您只是铸造、赎回、关闭仓位、转账或投票,这些都与您无关。这些操作只经过核心。
右边的任何一样对左边都没有权限。核心不知道它们存在,也从不调用它们。任何人都可以写出更好的来替代。
为什么需要路由器
在零档之上,每一次 ASTRX 转账都会在途中销毁一部分。
资金池不看您发了多少。它给出一个数,并要求自己的余额至少增加这么多。把它要的数原样发过去,其中一部分会在途中烧掉,池子收不够,于是拒绝。
双方都没有错。池子算得对,代币的行为也与描述一致。它们只是无法直接结清。
出路是多发一些,好让销毁之后到账的正是它要的数。路由器算出这个差额并补上。它所增加的仅此而已,而且任何人都能核对:那是一个公开函数。
卖方指定的是从自己余额中离开的数量,其中包含被销毁的那一份。这既是他批准的数字,也是路由器不会超出的数字。
开门之前它检查什么
池子是真的
只有当 Uniswap 自己的工厂为该交易对指认这个地址时,池子才被接受。仅仅看起来像池子的合约,在付款之前就被拒绝。
预算不被超出
交易以您指定的金额开启,多一个单位也不行。要得更多的池子会被拒绝;要第二次的池子什么也拿不到。
下限被遵守
若交付会少于您指定的最低值,交易被拒绝。报告成功却什么也没交付的交易同样被拒绝。
没人能中途折返
一笔交易进行期间,路由器的其他门都不会打开。
每一次拒绝都写明原因。没有任何东西无声失败。
路由器不做什么
- 调用之间不持有任何东西,从不保管您的余额。
- 没有所有者,没有设置,也没有升级途径。
- 不能铸造,不能关闭仓位,也碰不到抵押品。
- 核心不知道它存在。因此它的地址与核心的地址分开公布,而且可以更换,核心的地址则不能。
读取器
若一次关闭会把支撑稀释得过深,保护闸门会拒绝。拒绝时它只说“不”:既无数字,也无理由。
读取器提前算好:这笔仓位此刻可以关闭多少代币,以及八种原因中的哪一种解释了这个答案。
它读取核心,不改变任何东西。若两者哪天不一致,闸门为准,错的是读取器。
面向 Uniswap v4 的管理器
Uniswap v4 把仓位放在自己的管理器里。该管理器指定一个确切数额并亲自划转,工作期间不让任何人进入。有了转账销毁,到账便少于指定数额,存入随之失败。这是在主网上量出来的,不是推论。
因此 Assetrix 规划了自己的管理器,模型相同,只有一点不同:它补上被销毁的部分。它尚未编写。在此之前,只要转账费停在零,v4 的流动性通过 Uniswap 的普通界面添加。
完整叙述
本页是简版。白皮书附录描述了路由器的每一道门、它可能给出的每一种拒绝、读取器的八种回答,以及这一切经过了哪些检验。