Featured Application Activity Marker
The featured application activity marker is specified in CIP 47. A summary follows.
Featured application activity markers (FeaturedAppActivityMarker) can be created for a transaction that adds value but does not involve a CC Transfer (e.g., a stable coin transfer or the settlement of a trade). CIP 47 says:
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).
Generally the guidance is to create a FeaturedAppActivityMarker for any economically important event, such as:
Lock or unlock a Real World Asset (RWA).
Transfer a RWA.
Mint or burn tokens.
However, it should not be created for any intermediate steps or a propose step.
A FeaturedAppActivityMarker is immediately converted into an
AppRewardCoupon by the automation run by the Super Validators.
The AppRewardCoupon
is created with the DSO as the signatory and the provider field
as an observer. By default, the provider can mint CC in the minting
step. The featured field is set to true to indicate eligibility to
receive featured application rewards, based on a FeaturedAppRight contract.
There can be several FeaturedAppActivityMarkers per transaction tree
which increases the total reward. However, this is only allowed for composed transactions (e.g. a settlement transaction) where trading
venue and all the registries of the transferred assets would get featured app rewards. It is also possible for a single
Canton transaction tree to include
ValidatorRewardCoupon,
an
AppRewardCoupon
and a
FeaturedAppActivityMarker(s)
if there are sub-transcations that create each separately.
A non-featured app cannot accrue a FeaturedAppActivityMarker.
Creating a Featured Application Activity Marker
There are two prerequisites for an application to create a
FeaturedAppActivityMarker. The first is to become an approved featured
application which was described in the
Types of Activity Records
section. The second is to update the application code:
1. Find the fully qualified package-id of the interface definition for the FeaturedAppRight interface which is
7804375fe5e4c6d5afe067bd314c42fe0b7d005a1300019c73154dd939da4dda:Splice.Api.FeaturedAppRightV1:FeaturedAppRightforSplice.Api.FeaturedAppRightV1. The commanddaml damlc inspect-darcan be used to find this.2. Query the ledger using this ID to retrieve contracts from the Daml ledger that implement the FeaturedAppRight interface. The
curlexample below illustrates this approach.curl "http://$lapiParticipant/v2/state/active-contracts" \ "$jwtToken" "application/json" \ --data-raw '{ "filter": { "filtersByParty": { "'$holderPartyId'": { "cumulative": [ { "identifierFilter": { "InterfaceFilter": { "value": { "interfaceId": "'7804375fe5e4c6d5afe067bd314c42fe0b7d005a1300019c73154dd939da4dda:Splice.Api.FeaturedAppRightV1:FeaturedAppRight'", "includeInterfaceView": true, "includeCreatedEventBlob": false } } } } ]} } }, "verbose": false, "activeAtOffset":"'$latestOffset'" }'3. The application’s Daml code will have to depend on the
splice-api-featured-app-v1.darand take an argument of typeContractId FeaturedAppRighton the choice whose execution should be featured, which allows that choice’s body to call theFeaturedAppRight_CreateActivityMarkerin the next step.3. In the application’s Daml code, using the
FeaturedAppRightinterface, exercise theFeaturedAppRight_CreateActivityMarkerchoice. Set thetemplateIdto the fully qualified interface ID above.4. For testing examples, please review the example DamlScript test here.
Consider a single, simple transaction of a RWA which creates a single
FeaturedAppActivityMarker activity record for one provider and
the beneficiary is the provider:
1. A FeaturedAppActivityMarker contract is created in the business transaction. The
provideris set to the featured application provider’s party. Thebeneficiarymust be set (unlike an AppRewardCoupon) to the party that should be eligible to mint the CC for that activity. Theproviderfield of the FeaturedAppActivityMarker is set by calling the interface choice FeaturedAppRight_CreateActivityMarker.
No
ValidatorRewardCouponis created.
It is possible to share the attribution of activity for the FeaturedAppActivityMarker. The
FeaturedAppRight_CreateActivityMarker choice accepts a list of
AppRewardBeneficiary
contracts. Then a FeaturedAppActivityMarker is created for each
beneficiary with the weight field set appropriately.
Comments