Anonymity Mining v2 (AMv2)

Anonymity Mining v2 (AMv2) has been used in anonymity pools on BSC ( https://cyclone.xyz/bsc).

Design Goals

While Anonymity Mining v1 (AMv1) was used to launch the first anonymity pools on IoTeX, we are aware a limitation of AMv1 - the number of CYC tokens a user mined (by putting her asset into the anonymity pool) is not proportional to how long he locks her asset in the pool, which is not the most effective way to reward long-term anonymity providers.

In AMv2, we redesigned the anonymity mining to achieve the following two properties:

  1. The number of CYC mined is proportional to how long one locks one's asset in the pool - the longer the asset stays in the pool, the more CYC anonymity providers obtains;

  2. Enforce the life span of each anonymity pool (usually 90 days) to encourage anonymity providers to shuffle their assets and deposit into a new pool, to further improve the degree of privacy (since a pool with many long-term deposits but lacks short-term deposits/withdraws offers very limited degree of privacy).

Terminology

When interacting with anonymity pools, one needs to understand the terminology the pools use to characterize themselves:

Asset Denomination is the number of coins or ERC20/XRC20/BEP20 tokens the pool provides anonymity. For example, the C3PO pool's primary asset is BNB, and its denomination is 100, meaning each deposit/withdrawal is 100 BNB, exactly.

Coin Denomination describes an auxiliary feature for better usability. When a user deposits an asset such as BUSD into a pool, a small amount of native currency (e.g., 0.1 BNB) of the underlying blockchain will be deposited with the asset into the pool, which will be fully refunded to the withdrawal address as the gas fee for the user. For example, with 0.1 BNB deposited to her new address upon withdrawal, Alice can further transfer her BEP20 asset or invoke other smart contracts from this new address.

CYC Denomination is a small dynamic amount of CYC, which ensures the amount of CYC Alice earns is proportional to how long her asset stays in the pool while not disclosing how long her asset remains in the pool to others. This sounds contradicting but can be viewed through an example. When Alice deposits her asset + 0.1 BNB to the pool, she deposits X CYC according to CYC Denomination; she lets the asset stay in the pool and assumes Y CYC has been mined. Upon withdrawal, (X + Y) CYC will be sent back to Alice. Of course, Alice knows she earns Y CYC. Thanks to zkSNARK that disconnects the withdraw tx from the deposit tx, no one (except for Alice) knows that the upfront deposit is X CYC, and no one can calculate Y given (X+Y). Therefore, no one knows how long the asset has been stay in the pool. Isn't it cool?

Anonymity Pools

The following pools are launched using AMv2.

Pool Name

Asset Denomination

Life Cycle

CYC per Day via AM

Total CYC via AM

C3PO

100 BNB

90 Days

3

270

R2D2

10,000 BUSD

90 Days

1

90

BB8

25,000 IOTX

90 Days

0.25

22.5

A fixed amount of CYC such as 3 or 1 or 0.25 is given to all anonymity providers in each pools on a daily basis.

How It Works

  1. Deposit BNB (or BUSD or IOTX) into C3PO (or R2D2, BB8) pool, optionally deposit X CYC

  2. Let BNB stays in the pool for N days

  3. Withdraw BNB from the pool and obtain Y CYC (of course Y > X)

Below is an example demonstrating how AMv2 works. We ignore all fees for now to simplify this example.

Day

Event

Total CYC in Pool

Total BUSD in pool

1

Day starts

0

0

Alice deposits 10,000 BUSD into the pool

0

10,000

2

Day starts

1

10,000

Bob deposits 10,000 BUSD into the pool, and pays1 CYC

2

20,000

3

Day starts

3

20,000

4

Day starts

4

20,000

Alice withdraws 10,000 BUSD and obtained 2 CYC

2

10,000

5

Day starts

3

10,000

Bob withdraws 10,000 BUSD and obtained 3 CYC (so his mining reward is 2 CYC)

0

0

Fee

Upon the withdrawal of asset, the following will be charged:

  • 1.5% of the CYC obtained is charged and burned immediately

  • 0.5% of the CYC obtained is given to relayer to compensate for the gas cost of the withdraw tx