RADIX WikiRADIX Wiki

Overview

Component royalties are fees that a Scrypto blueprint author or a component owner attaches to individual functions and methods, and every transaction that calls them pays them as part of its transaction fee. The Radix Engine charges them, so the calling code cannot skip them, and an author can publish a blueprint openly and still be paid each time it runs.

The royalty goes to its owner in full: Radix's costing rules split execution, finalisation and storage costs between the round's proposer, the validator set and a burn, and pass royalties through untouched (Transaction Costing: Fee Distribution).

Package vs. Component Royalties

Radix's Using Royalties guide names two kinds. Developer royalties belong to a package: the publisher declares them inside the blueprint with the enable_package_royalties! macro, they are fixed, and every component instantiated from that blueprint pays them; a royalty on the constructor charges whoever instantiates the component. Owner royalties belong to one component: its owner enables them at instantiation with enable_component_royalties! and marks each method's royalty updatable or locked. An updatable royalty can be changed later with the SET_COMPONENT_ROYALTY manifest instruction or locked for good with LOCK_COMPONENT_ROYALTY, which gives builders composing with the component a fixed cost; the guide warns that an updatable royalty may put people off using a component.

Denomination and Collection

A royalty is always charged in $XRD, but its amount may be set either in $XRD or as an approximate USD equivalent. A USD amount is converted at a multiplier fixed for each protocol version; a protocol update resets the multiplier after a large move in the $XRD price, so a USD-set royalty holds its real-world cost better than a fixed $XRD amount (Using Royalties). The protocol also caps the royalty any one method can charge, and a protocol update may change the cap.

Claiming and Access Control

Royalties accumulate in a vault the protocol holds until the owner claims them. A component's royalties are governed by three roles, royalty_setter, royalty_locker and royalty_claimer, each with its own updater role and each defaulting to the component's owner; they are ordinary badge-based access rules, and the claimer collects with the CLAIM_COMPONENT_ROYALTIES instruction. Developer royalties collect in the package's royalty accumulator vault, which the package owner empties with CLAIM_PACKAGE_ROYALTIES (Using Royalties).

HydrateLast updated 17h agov1.4.08 revisionsVerified Oct 18, 2026