# 配额

提示

本文主要描述配额相关逻辑。

相关词汇解释:

  • 配额: 在 Vite 系统中,交易时使用配额来支付计算和存储资源。
  • UT: 即单位交易(Unit Transaction),配额单位,相当于发起一笔 “无备注转账交易” 消耗的配额。
  • UTPS: 用户抵押 vite 后,每等待一个快照块可以发起的单位交易数。
  • UTPE: 用户抵押 vite 后,等待 74 个快照块,在第 75 个快照块能够发起的单位交易数目。(这里 E 指 Epoch,即一轮)
  • PoW: 即工作量证明(Proof of Work),简单来说就是用来证明进行了一定量的计算。
  • 抵押: 指账户中的一部分 vite 被冻结,无法交易,无法使用。
  • 抵押地址:指抵押发起方。
  • 配额受益地址:指抵押成功后获得配额的账户地址。

# 什么是配额

在以太坊的设计中,每个交易在发起时需要指定 gas 和 gas price, 从而与其他交易竞争写入账本的机会。这是一个典型的竞价模型,原则上可以通过价格有效调控供给和需求的平衡。但由于用户在出价之前,很难量化当前的供需情况,也无法预测其他竞争者的出价,很容易发生市场失灵(market failure)。而且,每次出价所竞争的资源都是针对一个交易的,没有一个按账户维度对资源进行合理配置的协议。

在 Vite 中,当用户发起一笔交易,即发起转账交易、部署合约、调用合约方法、发行新代币、注册超级节点、提取出块奖励、投票、抵押时,需要消耗一定的配额。Vite 通过配额模型来调整供需平衡。

用户可以通过两种方式来获取更高的资源配额:

  • 在发起交易时计算一个 PoW
  • 在账户中抵押一定数量的 vite。

如果用户希望一次性地发起一笔交易,可以选择计算一个 PoW 来一次性的获取配额;如果希望频繁发起交易,可以抵押一定数量的 vite 来获取持久的配额。

Vite 提倡用户通过抵押的方式来获取配额。

# 配额使用规则

将 “无备注转账交易” 定义为 “单位交易”(UT, Unit Transaction),作为配额单位。

用户发起的交易类型不同,所需的配额也不同,Vite 网络中,各种交易类型所需的配额见下表:

交易类型 所需配额 所需配额(UT) 最小抵押金额(vite)
不带备注的转出交易 21000 1 134
转入交易 21000 1 134
创建合约请求交易 31000 1.4762 267
注册超级节点交易 168000 8 1067
更新超级节点出块地址交易 168000 8 1067
更新超级节点奖励提取地址交易 168000 8 1067
注销超级节点交易 126000 6 534
提取出块奖励交易 147000 7 934
投票交易 84000 4 534
撤销投票交易 52500 2.5 400
抵押获取配额交易 105000 5 667
撤销抵押交易 105000 5 667
抵押获取配额交易,带回调 115500 5.5 800
撤销抵押交易,带回调 115500 5.5 800
铸币交易 189000 9 1200
增发代币交易 126000 6 800
销毁代币交易 115500 5.5 800
转移代币所有者交易 136500 6.5 934
修改代币类型交易 115500 5.5 800
链上查询代币信息交易 31500 1.5 267

对于转账交易中的备注,每个字符都需要收取额外的配额,每个字符收取 68 配额。

例如,如果用十六进制编码来表示备注,发起一笔备注为 0x0001(共两个字符)的转账交易,需要的配额为 21000+68*2=21136 ,即 1.0065 单位交易。

如果创建合约时指定了一个非零的确认数(即发送给合约的请求交易被确认多少次之后再出响应交易),那么这个合约的每个响应交易都需要额外收取 确认数 * 200 的配额。

注意:官方钱包会在转账的备注中默认填写两个字节的前缀,备注为空时不填,因此通过官方钱包转账时,如果填写了备注,会额外收取 2 * 68 的配额。详情见 vep-8

# 配额计算逻辑

通过抵押或者计算 PoW 获得的配额可以通过下面的公式来计算:

其中,

  • : 通过计算 PoW 获得的配额,通过计算 PoW 获得的配额是一次性的,只能在当前交易中使用;
  • : 通过抵押获得的配额,抵押获得的配额是长期的,并且可以累积,最多累积 75 个快照块;
  • : 单个账户块配额上限;
  • : 配额系数,和最近 74 个快照块快照的所有交易的配额之和相关;
  • : 用户在发起一笔交易时计算出的 PoW 难度;
  • : 通过计算 PoW 获取配额的权重;
  • : 账户受益的抵押金额;
  • : 抵押获取配额的权重。

目前 Vite 网络中,各参数取值如下:

  • = 1000000
  • = 6.259408129e-10
  • = 4.201037667e-24

配额系数计算公式如下:

$$ Qc = \begin{cases} 1, & \text{for } g \leq 1050000 \ 2-e^{8.260667775706495e-09 \times (g - 1050000)}, & \text{for } 1050000 < g \leq 2100000 \ e^{1.6949794096275418e-10 \times (2100000-g)}-0.9, & \text{for } g > 2100000 \ \end{cases} $$

其中,

  • : 最近 74 个快照块平均每个快照块快照的交易配额之和。

UTPS: 用户在每个快照块内可以发起的单位交易数

UTPE: 用户等待 74 个快照块,在第 75 个快照块能够发起的单位交易数目。(这里 E 指 Epoch,即一轮)

一个账户的当前可用配额取决于 UTPS 和这个账户在过去 74 个快照块期间的配额使用情况,例如,一个账户通过抵押获得了支持 1 UTPS 吞吐率的配额,在过去 74 个快照块期间没有发起交易,那么这个账户的当前可用配额为 75 UT

一个账户在发起一笔交易时的可用配额取决于 UTPS 、这个账户在过去 74 个快照块期间的配额使用情况和发起这笔交易时通过计算 PoW 获得的一次性配额,例如,一个账户通过抵押获得了支持 1 UTPS 吞吐率的配额,在过去 74 个快照块期间没有发起交易,并且计算了一个相当于 2 UT 难度的 PoW,那么这个账户在发起一笔新交易时,最多可以使用 77 UT 的配额。但是由于每笔交易有配额使用上限,上限为 47.62 UT ,因此这笔交易实际只能使用 47.62 UT 的配额。

为了计算方便,实际计算配额时,只计算 或者 的值,并将计算结果分段映射成相应的配额。映射表如下:

或者 UTPS UTPE 大约相当于在不算 PoW 的情况下抵押多少 VITE 大约相当于在不抵押的情况下计算多少难度的 PoW
0.0 0 0 0 0 0
280 1/75 1 134 894654
560 2/75 2 267 1789307
840 3/75 3 400 2683961
1120 4/75 4 534 3578615
1400 5/75 5 667 4473270
1680 6/75 6 800 5367925
1960 7/75 7 934 6262581
2240 8/75 8 1067 7157239
2520 9/75 9 1200 8051897
2800 10/75 10 1334 8946557
3080 11/75 11 1467 9841218
3360 12/75 12 1600 10735880
3640 13/75 13 1733 11630544
3920 14/75 14 1867 12525211
4200 15/75 15 2000 13419879
4480 16/75 16 2133 14314549
4760 17/75 17 2267 15209221
5040 18/75 18 2400 16103896
5320 19/75 19 2533 16998573
5600 20/75 20 2667 17893253
5880 21/75 21 2800 18787936
6160 22/75 22 2933 19682622
6440 23/75 23 3066 20577310
6720 24/75 24 3200 21472002
7000 25/75 25 3333 22366698
7280 26/75 26 3466 23261397
7560 27/75 27 3600 24156099
7840 28/75 28 3733 25050806
8120 29/75 29 3866 25945516
8400 30/75 30 4000 26840230
8680 31/75 31 4133 27734949
8960 32/75 32 4266 28629672
9240 33/75 33 4400 29524399
9520 34/75 34 4533 30419131
9800 35/75 35 4666 31313868
10080 36/75 36 4799 32208609
10360 37/75 37 4933 33103356
10640 38/75 38 5066 33998108
10920 39/75 39 5199 34892865
11200 40/75 40 5333 35787628
11480 41/75 41 5466 36682396
11760 42/75 42 5599 37577171
12040 43/75 43 5733 38471951
12320 44/75 44 5866 39366737
12600 45/75 45 5999 40261529
12880 46/75 46 6133 41156327