You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/src/background/tokenomics/overview_tokenomics.rst
+27-46Lines changed: 27 additions & 46 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,14 +10,14 @@ Steps in a Round
10
10
11
11
Canton Network tokenomics is based on an *Activity Record* which
12
12
identifies a party that performed an action which provides value to the
13
-
network. An activity record has a *weight* which is the the relative share of CC minting
13
+
network. An activity record has a *weight* which is the relative share of CC minting
14
14
associated with this activity record.
15
15
16
16
Creating an activity record and minting the associated Canton
17
17
Coin (CC) are two distinct steps. The creation and minting steps are
18
18
performed in a cycle that is called a *round* which has five phases. In
19
19
the first phase, any fee values for that round are written to the ledger
20
-
(the fees can be obtained from the :ref:`Scan State API <scan_current_state_api>`.
20
+
(the fees can be obtained from the :ref:`Scan State API <scan_current_state_api>`).
21
21
The second phase is called the *activity recording* and it is when
22
22
activity records are created; records created in this phase belong to that round. The next phase calculates
23
23
a `CC-issuance-per-activity-weight <https://github.com/hyperledger-labs/splice/blob/332e06a7ae9e13fde5bba0bf7dcb059aa36f979e/daml/splice-amulet/daml/Splice/Issuance.daml#L67>`__
@@ -28,20 +28,18 @@ a *minting phase* where the owners of an activity record can mint CC proportiona
28
28
29
29
There are several rounds active
30
30
concurrently with each round being in a different phase. A round starts
31
-
every 10 minutes, which is configuration parameter that the Super Validators may change in the future via a governance vote. See the CC
31
+
every 10 minutes, which is a configuration parameter that the Super Validators may change in the future via a governance vote. See the CC
32
32
whitepaper for the details.
33
33
34
-
There is no difference in activity record creation for an `external
35
-
party <https://docs.digitalasset.com/build/3.3/tutorials/app-dev/external_signing_onboarding.html#tutorial-onboard-external-party>`__
36
-
or local party but there is a difference in the automation support used
37
-
in the minting phase. For local parties onboarded to a validator, the
38
-
validator application runs background automation to mint all activity
39
-
records automatically. An external party signs transactions using a key
40
-
they control. As a consequence, the validator automation is not able to
41
-
perform minting for external parties. For external parties, automation needs
42
-
to be developed to call :ref:`AmuletRules_Transfer <type-splice-amuletrules-amuletrulestransfer-23235>` at least once per round
43
-
with all activity records as inputs. An accepted CIP, called `Weighted Validator Liveness Rewards for SV-Determined Parties <https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0073/cip-0073.md>`__,
44
-
is available for comment soon which describes providing this support.
34
+
There is no difference in activity record creation for an `external party
35
+
<https://docs.digitalasset.com/build/3.3/tutorials/app-dev/external_signing_onboarding.html#tutorial-onboard-external-party>`__ or a
36
+
local party, but there is a difference in the automation support used in the minting phase. For local parties onboarded to a
37
+
validator, the validator application runs background automation to mint all activity records automatically. An external party signs
38
+
transactions using a key they control. As a consequence, the validator automation is not able to perform minting for external
39
+
parties. For external parties, automation needs to be developed to call :ref:`AmuletRules_Transfer
40
+
<type-splice-amuletrules-amuletrulestransfer-23235>` at least once per round with all activity records as inputs. An approved CIP,
41
+
called `Weighted Validator Liveness Rewards for SV-Determined Parties
42
+
<https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0073/cip-0073.md>`__ describes providing this support.
45
43
46
44
As an aside, some interesting templates are important to the tokenomics are:
47
45
@@ -73,22 +71,19 @@ There are five key templates involved in the accounting for network activity:
The last four are activity records while a ``FeaturedAppActivityMarker`` is not considered an activity record. As discussed later, a
76
-
``FeaturedAppActivityMarker`` is converted into an ``AppRewardCoupon`` via
77
-
automation run by the Super Validators.
74
+
``FeaturedAppActivityMarker`` is converted into an ``AppRewardCoupon`` via automation run by the Super Validators. The featured CC transfer and `FeaturedAppActivityMarker`` both generate the same reward. The ``FeaturedAppActivityMarker`` is the
75
+
preferred way to generate app activity records.
78
76
79
77
The ``FeaturedAppActivityMarker``,
80
78
``AppRewardCoupon``, and ``ValidatorRewardCoupon`` contracts are created when an
81
79
application's transaction succeeds. In general, an application receives rewards when its Daml code directly creates ``FeaturedAppActivityMarker`` contracts
82
80
or interacts with Daml models that feature the application provider's party. A ``ValidatorRewardCoupon`` is created for every call to ``AmuletRules_Transfer``
83
81
(e.g., a CC Transfer using the Splice Wallet UI) or when CC is burned.
84
82
85
-
Aside from the minting weight, an application's reward also depends on
86
-
whether it is designated as *featured* or *unfeatured* (the default
87
-
state). An unfeatured application receives a smaller reward and has a
88
-
lower cap on the amount it can mint. A featured application receives
89
-
larger rewards and has a higher cap. A *featured application* also
90
-
receives an additional minting weight with a total equivalent value of about
91
-
$1 US (the SuperValidators may adjust this in the future).
83
+
Aside from the minting weight, an application's reward also depends on whether it is designated as *featured* or *unfeatured* (the
84
+
default state). After CIP-0078 was implemented, only featured applications get a reward.
85
+
A featured application receives a minting weight with a total
86
+
equivalent value of about $1 US (the SuperValidators may adjust this in the future).
92
87
93
88
.. _how_to_become_a_featured_application:
94
89
@@ -111,33 +106,19 @@ For some of the templates, the attribution of activity can be shared with multip
111
106
be shared between the application provider and application user, based
112
107
on a given ``weight`` for each. The general pattern for this is:
113
108
114
-
- A list of beneficiaries, each with a ``weight``, is provided. The weights sum up to ``1.0``.
109
+
- A list of beneficiaries, each with a ``weight``, is provided. The weights sum up to ``1.0``.
115
110
116
111
- Later processing creates a separate contract for each beneficiary and weight pair,
117
112
setting the contract's ``beneficiary`` and ``weight`` fields accordingly.
118
113
119
114
Beneficiaries are discussed further in the following sections.
almost all fees for Canton Coin transfers and locks so unfeatured applications no longer receive any reward.
118
+
The holding fee remains but its behavior changed so that no holding fees are charged when using a coin as an input to a transfer.
123
119
124
-
The weight on a ``ValidatorRewardCoupon`` and ``AppRewardCoupon`` is the sum of the create, lock and transfer fees,
125
-
excluding the base transfer fees for the “change”. These fees eligible for reward are:
126
-
127
-
- The *percentage transfer fee* which is proportional to the total amount of CC burnt in the transaction.
128
-
129
-
- A *base transfer fee* that is a fixed cost for each new CC contract created for the receivers or the sender.
130
-
131
-
- A coin *locking fee* for when CC is locked during a transfer.
132
-
133
-
See the CC whitepaper for the details. Relevant fee values for a round
134
-
can be obtained from the :ref:`Scan State API <scan_current_state_api>`.
135
-
136
-
A holding fee is paid by a CC holder but is not eligible for rewards. This is a fixed fee, per separate coin contract (UTXO) per unit
137
-
of time, that is independent of the coin amount. It promotes merging of CC to reduce network storage use. The holding
138
-
fee is tallied per round since creation
139
-
and is paid on the next transaction involving that record. So if
140
-
you earned or created the CC activity record in round 1000 and you
141
-
spent it in round 1010 then you pay 10 rounds of holding fees.
142
-
143
-
Please note that the reward from usage fees are very small in comparison to the reward for being a featured application. To simplify the tokenomics and implementation, usages fees and their corresponding rewards may be dropped as part of a future CIP.
120
+
The holding fees is a fixed fee, per separate coin contract (UTXO) per unit
121
+
of time, that is independent of the coin amount. It promotes merging of CC to reduce network storage use by incentivizing merging or removal of dust coins.
122
+
Holding fees are not charged when transferring coins but only explicitly on expired coin contracts via the ``Amulet_Expire`` choice.
123
+
A coin contract (UTXO) may be expired by the Super Validators once its accrued holding fees are greater than its coin value.
124
+
This makes accounting for holding fees simple as the value of the coin contract is constant and independent of the holding fee.
0 commit comments