Quota

Please note this is not a technical document, but mainly describes quota and quota-related topics. Technical details will be introduced in the yellow paper.

The Definitions of Terms:

  • Quota: In Vite, CPU cycles, storage space and network bandwidth consumed during transactions are paid by quota, instead of transaction fees
  • PoW: Proof of Work, representing a certain amount of computational work has been performed
  • Stake: Lock up an amount of VITE in the account for quota
  • Staking address:The account who starts the staking transaction
  • Quota recipient address:The account who receives quota

What is Quota

In Ethereum, in order to have a transaction executed timely, the sender usually has to offer an appealing transaction fee to miner. The higher gas price offered, the sooner transaction executed. In this typical bidding model, the supply of system processing capability and the demand of sending transactions are balanced by gas price automatically. This model works fine in Ethereum, however, from user's perspective it is hard to determine what is the best gas price to offer for a certain time. Either too low or too high price will cause a market failure. Moreover, since gas is associated with individual transactions, it is impossible to measure and allocate computational resources at account level. In Vite, instead of charging transaction fees, a certain amount of quota is consumed when user sends a transaction, such as transfer, deploying new smart contract, calling smart contract, issuing new token, registering SBP, retrieving mining rewards, voting and staking. Vite has implemented a quota model to meet the supply and demand of resources.

Quota can be obtained in two ways:

  • Obtain one-time, small-amount quota by computing PoW when sending transactions, or
  • Stake VITE for account.

If you just simply need to send a transaction, you can choose PoW . If you need send many transactions during a short period, you should stake VITE to get enough quota.

We recommend staking.

Quota Consumption Rules

Various quota consumptions of different transactions:

Transaction Type Quota Consumed In Unit Transaction
Send a transfer without comment 21000 1
Receive a transfer 21000 1
Register SBP 62200 2.9619
Update SBP registration 62200 2.9619
Cancel SBP registration 83200 3.9619
Retrieve mining rewards 68200 3.2476
Vote 62000 2.9524
Cancel voting 62000 2.9524
Stake for quota 82000 3.9048
Cancel staking for quota 73000 3.4762
Stake for quota via delegation 82000 3.9048
Cancel staking for quota via delegation 73000 3.4762
Issue new token 104525 4.9774
Mint additional token 69325 3.3012
Burn token 48837 2.3256
Transfer token ownership 58981 2.8086
Change token type 63125 3.0060
  • Unit Transaction: The minimal transaction unit measured in quota consumption, equivalent to an un-commented transfer transaction

Each character in transaction's comment consumes additional 68 quota.

For example, given hex encoding is used, sending a transfer with a comment of '0x0001' (two characters) will consume

quota, which translates to 1.0065 unit transaction.

Note

Due to implementation of VEP-8, additional 136 quota (2 characters prefix) will be cost if you send a transfer with comment from Vite official wallet. No additional quota will be cost if no comment is attached.

If ConfirmTimes is assigned when creating new smart contract, for each response transaction of the contract, an additional quota about ConfirmTimes * 200 will be charged. ConfirmTimes defines a waiting number that specifies in how many confirmations the contract will produce a response after the request transaction is snapshotted.

Quota Calculation

Quotas are calculated in the following formulas:

Here,

  • : Quota obtained through PoW calculation. This quota is valid once and can only be used in current transaction
  • : Quota obtained by staking. This quota is long-time valid and can be accumulated for up to 75 snapshot blocks
  • : Quota cap of one account, related to overall system throughput and total account number
  • : The difficulty of PoW calculated
  • : The weight obtained through PoW calculation
  • : The staking amount
  • : The weight obtained by staking
  • : The idle time prior to sending a transaction, equivalent to height difference between the snapshot block that current transaction refers to and an earlier snapshot block that previous transaction refers to

In Vite TestNet,

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

UTPS: Unit transaction per second, referring to how many un-commented transfer transactions can be sent by one account in one second

The available quota of an account depends on UTPS and quota consumption during last 74 snapshot blocks. For example, account A has 1 UTPS quota through staking and hasn't send any transaction during last 74 snapshot blocks, then the available quota of account A is 75 UTPS.

The actual available quota of an account upon sending transaction depends on UTPS, quota consumption during last 74 snapshot blocks and PoW calculation performed. For example, account B has 1 UTPS quota through staking, hasn't send any transaction during last 74 snapshot blocks, and calculated a PoW having difficulty equivalent to 2 UTPS, then the available quota of account B is 77 UTPS.

For convenience in calculation, it is acceptable to calculate or only, and then map result to corresponding quota according to following table:

or UTPS Approximately equivalent to how much VITE staked without calculating PoW Approximately equivalent to how difficult the PoW calculated without staking
0.0 0 0 0 0
21000 1 10000 67108863
42000 2 20007 134276984
63000 3 30033 201563940
84000 4 40085 3733274509
105000 5 50173 290666828
126000 6 60306 310523977
147000 7 70494 360275060
168000 8 80746 428403748
189000 9 91073 496921930
210000 10 101486 565896574
231000 11 111995 635397250
252000 12 122612 705496588
273000 13 133350 776270783
294000 14 144222 847800161
315000 15 155241 920169805
336000 16 166424 993470265
357000 17 177787 1067798363
378000 18 189346 1143258118
399000 19 201122 1219961801
420000 20 213135 1298031169
441000 21 225407 1377598894
462000 22 237966 1458810249
483000 23 250838 1541825095
504000 24 264056 1626820249
525000 25 277654 1713992319
546000 26 291673 1803561138
567000 27 306158 1895773931
588000 28 321161 1990910446
609000 29 336741 2089289313
630000 30 352969 2191275997
651000 31 369924 2297292878
672000 32 387705 2407832162
693000 33 406426 2523472634
714000 34 426227 2644901733
735000 35 447279 2772945111
756000 36 469795 2908606929
777000 37 494048 3053125976
798000 38 520387 3208055683
819000 39 549280 3375381406
840000 40 581368 3557697962
861000 41 617561 4144793358
882000 42 659220 4424389078
903000 43 708510 4755203412
924000 44 769198 5162514130
945000 45 848763 5696519539
966000 46 965808 6482075769
987000 47 1197189 8034995932

For example, given PoW is not calculated, staking 10000 and 20007 VITE will obtain 1 and 2 UTPS quota respectively, while staking 134 VITE and waiting 75 snapshot blocks(approximately 75 seconds) also qualifies for sending a transfer transaction without comment.

Two Methods to Obtain Quota

Staking

Quota can be obtained through staking. The specified recipient account will receive the corresponding quota after the staking transaction is processed successfully.

Parameters

  • Staking amount: The minimum staking amount is 134 VITE
  • Quota recipient address: The account who receives quota. This could be the staking account itself or any other account since staking for other accounts is permitted.

The VITE staked will be temporarily deducted from user's balance and cannot be transferred during staking period. The staking account can retrieve staked tokens after 259,200 snapshot blocks (about 3 days) by sending a cancel-staking transaction. As a result, the corresponding quota will be deducted from recipient's account immediately.

Calculating PoW

User can obtain one-time-valid quota by calculating PoW upon sending transactions. According to above table, the target PoW difficulty is 0x3FFFFFF for sending an uncommented transfer transaction with no staking.

In the TestNet, a central PoW service has been built to serve the purpose of calculating PoW from Vite wallets, some of which, like mobile wallets, may not have sufficient computation power to perform the calculation.

Calculation Steps

  1. Convert to in following formula:

= 2**256 / (1 + 1/)

  • : PoW difficulty in 256-bit number, with zeros padded at front when less than 256 bits
  • : PoW target in 256-bit number, usually having 1 at first bit

For example, given = 0x3FFFFFF, then = 0xFFFFFFC000000000.

  1. Work out correct from transaction data. is the proof of work. In this process, random numbers are constantly assigned to until the following condition is met: