数值限制
金额
uint112
外部代币的最大合理数量(balanceOf 的结果)
Uniswap2 将代币数量限制于此
规格:对于 18 位十进制代币,超过一百万个代币 (1e15)
少量
uint96
我们预计不会持有这么大的金额,特别是准备金余额
可以与一个地址一起打包在一个slot中
规格:对于一个 18 位十进制代币,超过十亿个代币 (1e9)
债务金额
uint144
债务的最大合理金额
在单个存储slot中与数量一起打包
规格:应保持最大可能金额(uint112),但按小数点后 9 位缩放(用于内部债务精度)
实际:2e16
价格
最低支持价格:
分数:
1e3 / 1e18 = 1e-15
tick:
-345405
sqrtPriceX96:
2505418623681149822473
最高支持价格:
分数:
1e33 / 1e18 = 1e15
tick:
345405
sqrtPriceX96:
2505410343826649584586222772852783278
选择受支持的价格范围的原因如下:
最大价格平方适合 uint256:
6e73 < 1e77
不需要使用 FullMath 库
最大支持价格乘以最大支持金额,适合 uint256:
5e66 < 1e77
也适用于债务及其额外的 9 位精度:
5e75 < 1e77
利率
int96
“第二个百分比收益率”
分数按 1e27 缩放
示例:
10% APR = 1e27 * 0.1 / (86400*365) = 1e27 * 0.000000003170979198376458650 = 3170979198376458650
规格:10 亿 % APR,正或负
interestAccumulator
uint256
从 1e27 开始,每秒乘以 (1e27 + interestRate)
规格:100% APR 100 年
已标识模块
uint32
每个模块一个,所以这比需要的多
分为3个部分
<500_000:公共单一代理
=500_000 和 <1_000_000:公共多代理
=1_000_000:内部
规格:十几个模块,所有部分都有增长空间
抵押因子/借入因子
uint32
0 和 1 之间的分数,按 2^32 - 1 缩放
规格:至少 3 位小数(留足余量)
Last updated