CIP-0047 Draft for Featured Application Activity Markers
- Hi,In the past few months we've increasingly felt a need to be able to generate rewards for applications not directly involving Canton Coin. Our existing featured app rewards work very well for applications involving Canton Coin but they don't generate any app rewards for applications not involving Canton Coin and including Canton Coin just for the purpose of generating rewards has significant downsides. To address this, we'd like to propose the following CIP which introduces a new feature called "Featured Application Activity Markers" which allows generating activity records for arbitrary applications and mint featured app rewards.Looking forward to your feedback!<pre>
CIP: Number Pending
Title: Featured App Activity Markers
Author: Moritz Kiefer <moritz.kiefer@...>
License: CC-1.0
Status: Draft
Type: Tokenomics
Created: 2025-02-12
</pre>
## Abstract
Currently, featured applications can only generate activity records
and mint rewards as part of Canton Coin transfers. However, this
excludes a significant amount of applications that do not inherently involve Canton Coin.
To address this problem and allow rewarding applications that do not
involve Canton Coin, we propose introducing the ability for featured applications to create
app activity markers without transfering Canton Coin. An app activity
marker is equivalent to the existing app activity records created as
part of a Canton Coin transfer recording a fixed amount of burned CC. The value of this marker
will be determined by a new governance parameter.
## Motivation
Currently, as part of a Canton Coin transfer where the `provider`
party is set to a featured application provider, an activity record is
generated with the amount set to the amount of Canton Coin burned as
part of that transfer plus the `extraFeaturedAppRewardAmount` defined
in a given `AmuletConfig` voted on by super validators.
This activity record can then be used to mint Canton Coin, thus rewarding
application providers for Canton Coin transfers generated as part of
their application.
While this works well to reward applications that inherently transfer
Canton Coin, it does not reward applications that do not involve
Canton Coin. It is possible to mitigate that by introducing artificial
Canton Coin transfers into an application but that adds complexity
during application development (even more so for transactions
requiring external signing) and increases the size of the transaction
and traffic costs without a clear benefit.
Featured app activity markers address this by allowing applications to
generate activity records and mint featured application rewards
without the need to initiate Canton Coin Transfers.
## Specification
### Overview
Featured applications get the ability to create
`FeaturedAppActivityMarker` contracts, which have a constant value
determined by the newly introduced `featuredAppActivityMarkerAmount` parameter
that is set through governance votes by the super validators (the
default until changed is $1 USD). Tho governance process for changing
this reuses the existing vote process to change `AmuletConfig` (also
used for `extraFeaturedAppRewardAmount`) where one SV proposes a
change and a 2/3 majority needs to accept.
Automation run by the super validators converts these
`FeaturedAppActivityMarker` contracts into the existing
`AppRewardCoupon` contracts for the current open mining round with the
US Dollar amount determined by `featuredAppActivityMarkerAmount` and converted
to Canton Coin based on the Canton Coin conversion rate associated
with that mining round.
These `AppRewardCoupon` contracts can then be minted in the same
fashion as activity records originating from Canton Coin transfers. In
particular, they are minted from the existing minting pool/tranche for
application rewards.
One transaction can contain multiple markers for different providers
just as one transaction can contain multiple Canton Coin
transfers. This can be useful for composed applications like an
exchange where both an exchange and the asset registry applications should get rewards
for successfully settling a trade in a single, atomic DvP transaction.
Featured application providers are expected to create featured
application activity markers only for transactions that correspond to a
transfer of an asset, or an equivalent transaction, which was
enabled by the application provider. The
detailed fair usage policy and enforcement thereof is left up to the
Tokenomics Committee of the Global Synchronizer Foundation (GSF).
### Details
A draft PR with all Daml changes is linked below in the [Reference implementation](#reference-implementation) section.
#### Core Daml Model
- A new template `FeaturedAppActivityMarker` is added that stores the provider party.
- Add a choice `FeaturedAppRight_CreateActivityMarker` on the existing `FeaturedAppRight` Daml template to create a `FeaturedAppActivityMarker`.
- Add a choice `AmuletRules_ConvertFeaturedAppActivityMarkers` that
allows the SVs to convert `FeaturedAppActivityMarker` contracts into
`AppRewardCoupon` contracts.
#### External Daml API
To allow applications to decouple themselves from the internal amulet models and reduce the impact of upgrades to those, an API based on [Daml interfaces](https://docs.daml.com/daml/reference/interfaces.html) is provided consisting of:
- An interface `Splice.Api.FeaturedAppRightV1.FeaturedAppRight` implemented by the existing `FeaturedAppRight` template.
- A choice `FeaturedAppRight_CreateActivityMarker` on that interface to create a marker contract.
- An interface `Splice.Api.FeaturedAppRightV1.FeaturedAppActivityMarker` implemented by the newly introduced `FeaturedAppActivityMarker` template.
## Rationale
### Alternatives considered
#### Artificial Canton Coin transfers
Applications that do not use Canton Coin could still add artificial
canton coin transfers to their application to generate application
activity records. However, this has a few downsides over the marker
contracts proposed in this CIP:
1. It adds additional complexity to applications to generate those
transfers. Creating the marker contracts only depends on the
`FeaturedAppRight` contract. A CC transfer requires a sender,
receiver, some CC funds, access to an open mining round contract
and access to amulet rules.
2. It increases traffic costs: A CC transfer is more complex, not just
in terms of code needed to create it, but also in terms of
transaction size: adding a dependency on Canton Coin transfers significantly increases the size of transactions.
3. Canton Coin transfers pin down the `OpenMiningRound` contract which
is only active for ~20 minutes. This can limit their usage in
combination with
[external signing](https://github.com/digital-asset/canton/blob/main/community/ledger-api/src/main/protobuf/com/daml/ledger/api/v2/interactive/README.md)
as it does not allow for long delays between preparing a
transaction and executing the signed transaction. While it is possible to circumvent this by splitting the transfer across two transactions where only the first one is externally signed, this would then require those two-step flows in all applications.
#### Traffic-Based Activity Markers
This CIP proposes attributing a constant value to each activity marker
contract determined by `featuredAppActivityMarkerAmount`. Another
attractive option would be to instead make it proportional to the
traffic costs paid for a transaction. That is a viable long-term option.
However, this would be a significantly more complex change, which would delay this feature. We propose to implement the simpler option first.
## Backwards compatiblity
The app reward activity markers are a new API and are purely
additive. All existing APIs continue to function as is. In particular,
Canton Coin transfers still also generate activity records that can be
minted as rewards.
## Reference implementation
A reference implementation of the Daml changes can be found in the [decentralized-canton-sync repository](https://github.com/digital-asset/decentralized-canton-sync/tree/cocreature/featured-app-activitymarkers).
## Copyright
This CIP is licensed under CC-1.0.
## Changelog
2025-02-12 - Intial Draft
--Moritz KieferArchitect - Canton NetworkDigital Asset, creators of Daml
This message, and any attachments, is for the intended recipient(s) only, may contain information that is privileged, confidential and/or proprietary and subject to important terms and conditions available at http://www.digitalasset.com/emaildisclaimer.html. If you are not the intended recipient, please delete this message. - toggle quoted message Show quoted textHi everyone,I created a PR for this proposal at https://github.com/global-synchronizer-foundation/cips/pull/20/files.Happy for any review commentsOn Wed, Feb 12, 2025 at 2:14 PM Moritz Kiefer <moritz.kiefer@...> wrote:Hi,In the past few months we've increasingly felt a need to be able to generate rewards for applications not directly involving Canton Coin. Our existing featured app rewards work very well for applications involving Canton Coin but they don't generate any app rewards for applications not involving Canton Coin and including Canton Coin just for the purpose of generating rewards has significant downsides. To address this, we'd like to propose the following CIP which introduces a new feature called "Featured Application Activity Markers" which allows generating activity records for arbitrary applications and mint featured app rewards.Looking forward to your feedback!<pre>
CIP: Number Pending
Title: Featured App Activity Markers
Author: Moritz Kiefer <moritz.kiefer@...>
License: CC-1.0
Status: Draft
Type: Tokenomics
Created: 2025-02-12
</pre>
## Abstract
Currently, featured applications can only generate activity records
and mint rewards as part of Canton Coin transfers. However, this
excludes a significant amount of applications that do not inherently involve Canton Coin.
To address this problem and allow rewarding applications that do not
involve Canton Coin, we propose introducing the ability for featured applications to create
app activity markers without transfering Canton Coin. An app activity
marker is equivalent to the existing app activity records created as
part of a Canton Coin transfer recording a fixed amount of burned CC. The value of this marker
will be determined by a new governance parameter.
## Motivation
Currently, as part of a Canton Coin transfer where the `provider`
party is set to a featured application provider, an activity record is
generated with the amount set to the amount of Canton Coin burned as
part of that transfer plus the `extraFeaturedAppRewardAmount` defined
in a given `AmuletConfig` voted on by super validators.
This activity record can then be used to mint Canton Coin, thus rewarding
application providers for Canton Coin transfers generated as part of
their application.
While this works well to reward applications that inherently transfer
Canton Coin, it does not reward applications that do not involve
Canton Coin. It is possible to mitigate that by introducing artificial
Canton Coin transfers into an application but that adds complexity
during application development (even more so for transactions
requiring external signing) and increases the size of the transaction
and traffic costs without a clear benefit.
Featured app activity markers address this by allowing applications to
generate activity records and mint featured application rewards
without the need to initiate Canton Coin Transfers.
## Specification
### Overview
Featured applications get the ability to create
`FeaturedAppActivityMarker` contracts, which have a constant value
determined by the newly introduced `featuredAppActivityMarkerAmount` parameter
that is set through governance votes by the super validators (the
default until changed is $1 USD). Tho governance process for changing
this reuses the existing vote process to change `AmuletConfig` (also
used for `extraFeaturedAppRewardAmount`) where one SV proposes a
change and a 2/3 majority needs to accept.
Automation run by the super validators converts these
`FeaturedAppActivityMarker` contracts into the existing
`AppRewardCoupon` contracts for the current open mining round with the
US Dollar amount determined by `featuredAppActivityMarkerAmount` and converted
to Canton Coin based on the Canton Coin conversion rate associated
with that mining round.
These `AppRewardCoupon` contracts can then be minted in the same
fashion as activity records originating from Canton Coin transfers. In
particular, they are minted from the existing minting pool/tranche for
application rewards.
One transaction can contain multiple markers for different providers
just as one transaction can contain multiple Canton Coin
transfers. This can be useful for composed applications like an
exchange where both an exchange and the asset registry applications should get rewards
for successfully settling a trade in a single, atomic DvP transaction.
Featured application providers are expected to create featured
application activity markers only for transactions that correspond to a
transfer of an asset, or an equivalent transaction, which was
enabled by the application provider. The
detailed fair usage policy and enforcement thereof is left up to the
Tokenomics Committee of the Global Synchronizer Foundation (GSF).
### Details
A draft PR with all Daml changes is linked below in the [Reference implementation](#reference-implementation) section.
#### Core Daml Model
- A new template `FeaturedAppActivityMarker` is added that stores the provider party.
- Add a choice `FeaturedAppRight_CreateActivityMarker` on the existing `FeaturedAppRight` Daml template to create a `FeaturedAppActivityMarker`.
- Add a choice `AmuletRules_ConvertFeaturedAppActivityMarkers` that
allows the SVs to convert `FeaturedAppActivityMarker` contracts into
`AppRewardCoupon` contracts.
#### External Daml API
To allow applications to decouple themselves from the internal amulet models and reduce the impact of upgrades to those, an API based on [Daml interfaces](https://docs.daml.com/daml/reference/interfaces.html) is provided consisting of:
- An interface `Splice.Api.FeaturedAppRightV1.FeaturedAppRight` implemented by the existing `FeaturedAppRight` template.
- A choice `FeaturedAppRight_CreateActivityMarker` on that interface to create a marker contract.
- An interface `Splice.Api.FeaturedAppRightV1.FeaturedAppActivityMarker` implemented by the newly introduced `FeaturedAppActivityMarker` template.
## Rationale
### Alternatives considered
#### Artificial Canton Coin transfers
Applications that do not use Canton Coin could still add artificial
canton coin transfers to their application to generate application
activity records. However, this has a few downsides over the marker
contracts proposed in this CIP:
1. It adds additional complexity to applications to generate those
transfers. Creating the marker contracts only depends on the
`FeaturedAppRight` contract. A CC transfer requires a sender,
receiver, some CC funds, access to an open mining round contract
and access to amulet rules.
2. It increases traffic costs: A CC transfer is more complex, not just
in terms of code needed to create it, but also in terms of
transaction size: adding a dependency on Canton Coin transfers significantly increases the size of transactions.
3. Canton Coin transfers pin down the `OpenMiningRound` contract which
is only active for ~20 minutes. This can limit their usage in
combination with
[external signing](https://github.com/digital-asset/canton/blob/main/community/ledger-api/src/main/protobuf/com/daml/ledger/api/v2/interactive/README.md)
as it does not allow for long delays between preparing a
transaction and executing the signed transaction. While it is possible to circumvent this by splitting the transfer across two transactions where only the first one is externally signed, this would then require those two-step flows in all applications.
#### Traffic-Based Activity Markers
This CIP proposes attributing a constant value to each activity marker
contract determined by `featuredAppActivityMarkerAmount`. Another
attractive option would be to instead make it proportional to the
traffic costs paid for a transaction. That is a viable long-term option.
However, this would be a significantly more complex change, which would delay this feature. We propose to implement the simpler option first.
## Backwards compatiblity
The app reward activity markers are a new API and are purely
additive. All existing APIs continue to function as is. In particular,
Canton Coin transfers still also generate activity records that can be
minted as rewards.
## Reference implementation
A reference implementation of the Daml changes can be found in the [decentralized-canton-sync repository](https://github.com/digital-asset/decentralized-canton-sync/tree/cocreature/featured-app-activitymarkers).
## Copyright
This CIP is licensed under CC-1.0.
## Changelog
2025-02-12 - Intial Draft
--Moritz KieferArchitect - Canton NetworkDigital Asset, creators of Daml--Moritz KieferArchitect - Canton NetworkDigital Asset, creators of Daml
This message, and any attachments, is for the intended recipient(s) only, may contain information that is privileged, confidential and/or proprietary and subject to important terms and conditions available at http://www.digitalasset.com/emaildisclaimer.html. If you are not the intended recipient, please delete this message. - I'd like to draw people's attention to the discussion taking place in the GitHub comments on this CIP; very good insights there.
- Updated the topic header with the CIP number.
- Hello,We started the discussion for this CIP-0047: Featured App Activity Markers but have not moved forward yet.In order to move to a vote we are requesting a Super Validator to sponsor the CIP and a second Super Validator to endorse the CIP.Any SV sponsors/endorses or changes needed?
- Hi,I just wanted to let people know that based on feedback when discussing usage of this proposal with some application providers, we extended the CIP to support splitting the actual rewards between different beneficiaries similar as the beneficiaries that already exist for SV rewards. The details can be found on Github, the Daml implementation linked from the CIP has also been updated.
- Hi,SVN (SBI) is happy to endorse this CIP.Thanks,Aman