Skip to content

Commit e42f947

Browse files
authored
udpate tokenomics to remove last reference to fees (#3441)
Signed-off-by: hrischuk-da <curtis.hrischuk@digitalasset.com>
1 parent 96fa412 commit e42f947

File tree

2 files changed

+30
-46
lines changed

2 files changed

+30
-46
lines changed

docs/src/app_dev/overview/index.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
Overview
99
========
1010

11+
If you are a new Canton Network developer, please check out the
12+
`TL;DR for new Canton Network developers <https://docs.digitalasset.com/build/3.4/overview/tldr.html>`__.
13+
1114
Canton Network Applications
1215
---------------------------
1316

docs/src/background/tokenomics/overview_tokenomics.rst

Lines changed: 27 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ Steps in a Round
1010

1111
Canton Network tokenomics is based on an *Activity Record* which
1212
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
1414
associated with this activity record.
1515

1616
Creating an activity record and minting the associated Canton
1717
Coin (CC) are two distinct steps. The creation and minting steps are
1818
performed in a cycle that is called a *round* which has five phases. In
1919
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>`).
2121
The second phase is called the *activity recording* and it is when
2222
activity records are created; records created in this phase belong to that round. The next phase calculates
2323
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
2828

2929
There are several rounds active
3030
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
3232
whitepaper for the details.
3333

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.
4543

4644
As an aside, some interesting templates are important to the tokenomics are:
4745

@@ -73,22 +71,19 @@ There are five key templates involved in the accounting for network activity:
7371
- :ref:`SvRewardCoupon <type-splice-amulet-svrewardcoupon-68580>`
7472

7573
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.
7876

7977
The ``FeaturedAppActivityMarker``,
8078
``AppRewardCoupon``, and ``ValidatorRewardCoupon`` contracts are created when an
8179
application's transaction succeeds. In general, an application receives rewards when its Daml code directly creates ``FeaturedAppActivityMarker`` contracts
8280
or interacts with Daml models that feature the application provider's party. A ``ValidatorRewardCoupon`` is created for every call to ``AmuletRules_Transfer``
8381
(e.g., a CC Transfer using the Splice Wallet UI) or when CC is burned.
8482

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).
9287

9388
.. _how_to_become_a_featured_application:
9489

@@ -111,33 +106,19 @@ For some of the templates, the attribution of activity can be shared with multip
111106
be shared between the application provider and application user, based
112107
on a given ``weight`` for each. The general pattern for this is:
113108

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``.
115110

116111
- Later processing creates a separate contract for each beneficiary and weight pair,
117112
setting the contract's ``beneficiary`` and ``weight`` fields accordingly.
118113

119114
Beneficiaries are discussed further in the following sections.
120115

121-
Fees
122-
****
116+
`CIP-0078 <https://github.com/global-synchronizer-foundation/cips/blob/main/cip-0078/cip-0078.md>`__ eliminated
117+
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.
123119

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

Comments
 (0)