The Universal Data License (UDL) enables creators to attach license rights to their content when they post it onchain. ## Basic Usage In its most basic form, using the license is as simple as including the `ANS-105` "License" tag and referencing the Transaction ID (txid) of the UDL. ### Default License Rights By default this grants Licensee's (those consuming the content) the following rights: * to copy * to display * to make public Out of the box it does not grant the rights to: * distribute the content * make commercial use of the content * make derivative works of the content ## License Parameter Tags Where the UDL gets interesting is in its ability to programmatically define licensing terms for your content. These terms are described by predefined tag names and values that you attach to your content when posting it to Arweave. These names and values correspond with sections of the UDL and grant licensees specific rights. ### Derivations One of the simplest rights to grant is Derivations, or the right to make derivative works. This right is not granted by default but can be granted using the "**Derivation**" tag. It has a few predefined values. #### With Credit Attaching a "**Derivation**" tag with the value of "**Allowed-With-Credit**", grants derivation rights but only if named credit is given as per [Section 7 - Credit](https://arweave.net/yRj4a5KMctX_uOmKWCFJIjmY8DeJcusVk6-HzLiM_t8#h.58w8zd209d81) in the UDL. #### With Indication The "**Allowed-With-Indication**" tag value grants derivation rights but only if the derived work indicates the source content. This indication is used to identify the source content as compared with Credit which names the creator. How this indication is made is up to the Licensee depending on where the derived content is being distributed. #### With License Passthrough The "**Allowed-With-License-Passthrough**" tag value grants derivation rights but only if the license parameters of the content are preserved in the derivation. #### With Revenue Share Finally, it's possible to allow derivations if the derived content contributes a portion of its revenue to the contents owner. This is done using the "**Allowed-With-RevenueShare-[.0-9+]%**" value for the "**Derivation**" tag. The `[.0-9+]` in this instance indicates the allowable characters for defining a percentage. e.g. `01`, `1.0`, `33`, `51.5` are all valid percentages to indicate. ``` "Derivation" : "Allowed-With-RevenueShare-25%" ``` The above is an example of allowing derivation if 25% of the revenue generated by the derivation is shared with the content owner(s). ### Commercial Use Another configurable right is Commercial Use as indicated by the "Commercial-Use" tag. There are two predefined values that relate to sections in the UDL. #### Allowed Specifying a value of "**Allowed**" for the "Commercial-Use" tag grants the rights of licensees to use the content for Commercial use. #### Allowed With Credit Specifying a value of "**Allowed-With-Credit**" for the "Commercial-Use" tag grants the rights of licensees to use the content for Commercial use. ### License Fee Along with "Commercial-Use" rights is the ability to describe a one time or monthly license fee associated with that use. If no "**License-Fee**" tag is present there is no fee for the license, if it is the UDL defines one of two values. #### Monthly If a monthly fee is desired, using "**Monthly-[.0-9+]**" as the format for the value of the "License-Fee" tag. The numerical portion of the value is the amount of `[Currency]` to be paid to the assets owner(s) each month. The`[Currency]` tag is described later in the document. ``` "License-Fee" : "Monthly-200" ``` The above example defines a monthly license fee of 200 `[Currency]` to be paid to the owner(s) of the asset. #### One Time Similarly to the Montly License fee it's possible to indicate a one time up front license fee to be paid to the owner(s) with the format "**One-Time-[.0-9+]**". ``` "License-Fee" : "One-Time-1500" ``` The above example defines a one time license fee of 1500 `[Currency]` units to be paid up front. ### Currency Parameter As payments can be denominated in a variety of different units the "Currency" tag indicates which denomination the owner(s) is/are expecting payment in. It should note that the currency used should be compatible with the owner address(es) attached to the asset. If the "Currency" tag is not provided, the currency defaults to the $U token on the Arweave network. The owner address(es) should be Arweave network addresses accordingly. ``` "Currency" : "AR" ``` The above example overrides the default $U token as currency and instead denominates the payment terms in AR token. ### License Rights Duration(s) There is also an "Expires" tag that can be added to transactions to indicate when the the license terms indicated by the tags expire. The value for the "Expires" tag is designated in years following the format "**[0-9+]**". ``` "Expires" : "5" ``` The above example indicates the parametrized license terms expire 5 years after the content was posted to onchain. Additionally, it is possible to define tags tags which set specific durations for "Commercial-Use" and "Derivation" terms using the following formats. The tag name is formatted to the following "**[Before/After]-[0-9+]-Years-Derivation**" and the value must be one of the valid values for the "Derivation" tag. There can be one or more of these duration tags. ``` "Derivation" : "Allowed-With-RevenueShare-30%" "After-1-Years-Derivation" : "Allowed-WithRevenueShare-10%" "After-5-Years-Derivation" : "Allowed-With-Credit" ``` The above example shows Derivation terms that are allowed with a RevenueShare of 30% in the first year, 10% for the next 4 years, and becomes "Allowed With Credit" from 5 years on. ## Payment Addresses The UDL supports a variety of payment methods and means of indicating which owner addresses to provide payment to. ### TxOwner By default if no "Payment-Address" tag is present the address to receive payment is the one that signed the transaction that posted the content to Arweave. ### Payment Address Tag If present, the "Payment-Address" tag overrides the signer of the transaction as the address to receive payment. ``` "Payment-Address" : "89tR0-C1m3_sCWCoVCChg4gFYKdiH5_ZDyZpdJ2DDRw" ``` The above example shows indicating a separate Arweave wallet address for payment than what was used to post the content transaction. ### Atomic Asset Contract Another possibility on Arweave is that the content transaction also be attached to a smart contract. If the smart contract tags are present the contract state is considered authoritative as to the current ownership status. Including proportional ownership if the contract is tokenized. ## Payment Mode If there is a smart contract attached to the content transaction, it may be that there are several owner addresses with claims to the license fees and/or revenue share. If that is the case the creator may specify a "**Payment Mode**" tag. If not present, the payment due defaults to the address designed by the "Payment-Address" tag. ### Random Distribution If "**Random-Distribution**" is provided as the value of the "Payment-Mode" tag, a random address is selected from the attached contract and paid the full fee due. This randomness should be a pro rata distribution based on the portion of the asset each address owns. The contract may define a distribution function that the licensee can invoke. ### Global Distribution If "**Global-Distribution**" is provided as the value of the "Payment-Mode" tag then the fee due is split up proportionally to to the ownership stake of each address in the content and an individual payment is made to each address with that amount. The contract may define a distribution function that the licensee can invoke.