❌ Dispute Module
A way for users to raise and resolve disputes through arbitration
The Dispute Module creates a way for users to raise and resolve disputes through arbitration.
Dispute Terminology
The main components of the arbitration system are:
- Arbitration Policies: the arbitration policy refers to the set rules/process/entities that combined will decide on a dispute. Currently the only supported arbitration policy is the UMA Arbitration Policy.
- Arbitration Penalty: what happens to an IP Asset after it has been “tagged”. An IPA is not deemed “tagged” unless the dispute is decided to be correct. Once tagged, an IPA will not be able to:
- mint licenses
- link to any parents
- claim royalties
- and all of its existing licenses become unusable
Dispute Tags
Tags refer to the “labels” that can be applied to IP Assets in the protocol when raising a dispute. Tags must be whitelisted by protocol governance to be used in a dispute. The initial set of tags (and their bytes32
for interacting with the Dispute Module on-chain) are:
IMPROPER_REGISTRATION
:0x494d50524f5045525f524547495354524154494f4e0000000000000000000000
IMPROPER_USAGE
:0x494d50524f5045525f5553414745000000000000000000000000000000000000
IMPROPER_PAYMENT
:0x494d50524f5045525f5041594d454e5400000000000000000000000000000000
CONTENT_STANDARDS_VIOLATION
:0x434f4e54454e545f5354414e44415244535f56494f4c4154494f4e0000000000
IN_DISPUTE
:0x494e5f4449535055544500000000000000000000000000000000000000000000
Dispute Tag | Explanation |
---|---|
IMPROPER_REGISTRATION | Refers to registration of IP that already exists. |
IMPROPER_USAGE Examples (non-exhaustive): Territory, Channels of Distribution, Expiration, Irrevocable, Attribution, Derivatives, Limitations on Creation of Derivatives, Commercial Use, Sublicensable, Non-Transferable, Restriction on Cross-Platform Use | Refers to improper use of an IP Asset across multiple items (examples on the left). These items can be found in more detail in the 💊 Programmable IP License (PIL) legal document. |
IMPROPER_PAYMENT | Refers to missing payments associated with an IP. |
CONTENT_STANDARDS_VIOLATION Examples: No-Hate, Suitable-for-All-Ages, No-Drugs-or-Weapons, No-Pornography | Refers to “No-Hate”, “Suitable-for-All-Ages”, “No-Drugs-or-Weapons” and “No-Pornography”. These items can be found in more detail in the 💊 Programmable IP License (PIL) legal document. |
IN_DISPUTE | Different from the other 4, this is a temporary tag that goes away at the end of a dispute and is replaced by “0x” in case of no infringement or is replaced by one of the other tags. |
Dispute Process Flow
Raise Dispute
The raiseDispute
function is permissionless and allows any address to raise a dispute against any IP Asset registered on the protocol. The dispute initiator has to:
- Select which “tag” it is raising a dispute on which will be applied to the IP Asset if the arbitration decision is positive. This means an IP Asset is officially “tagged” only when the proposed tag is confirmed as correct (“positive decision” in the diagram above).
- Submit the dispute evidence for evaluation
- Other conditions custom to each arbitration policy - such as payment rules, etc.
Set Dispute Judgement
The setDisputeJudgement
can only be called by whitelisted addresses and allows the caller to set the dispute judgment. Can only be called once as dispute decisions are immutable. If 3rd parties want to offer the possibility for recourse they can do so on their end and relay the final judgment.
Tag Derivative If Parent Infringed
If the setDisputeJudgement
has tagged an IP as infringing then any address can call tagIfRelatedIpInfringed
to apply the same tag as the parent to the derivatives all the way down the derivative chain or if the IP is a group then the group member tag can be applied to any group IP which it is a member of.
Looking Ahead
In the future, the idea is that any related IP Asset of an infringing IP Asset would automatically be tagged without needing someone to call tagIfRelatedIpInfringed
. This is currently a limitation that we are aware of.
The derivatives are then tagged directly without any need for judgment given that it is considered that if a parent IP license has been infringed then all derivatives that come from that license are also implicitly in an infringement situation.
Example: IPA 7 is first tagged (“PLAGIARISM”) as infringing via setDisputeJudgement
after having gone through a dispute process. Only after that can IPAs 3, 1, and 0 can be tagged via tagIfRelatedIpInfringed
by any address without needing to go through a new dispute process.
Resolve Dispute
Resolving a dispute removes the tag from the IP Asset. Since there are two ways in which a tag can be applied, there are two ways for it to be resolved:
- Tag was applied via the
setDisputeJudgement
function
In a case where a dispute judgment was positive, then a tag was applied. After the tag has been applied to an IP Asset, the dispute initiator can, if he/she believes the matter to be resolved and the tag to no longer apply, choose to remove it by calling resolveDispute
. For example, if one party owed money to the dispute initiator and paid the full amount after the dispute judgment then the tag could be cleared and the IP Asset would have a clean slate again.
If the dispute initiator chooses to not resolve, then the tag that was defined in setDisputeJudgement
remains in force.
- Tag was applied via the
tagIfRelatedIpInfringed
function
If an IP has been previously tagged as infringing via tagIfRelatedIpInfringed
, such tag can be removed via resolveDispute
in a permissionless way as long as the parent is no longer considered an infringing IP Asset.
This mechanism of permissionless resolving disputes exists to make it easier to propagate down the derivative chain and remove infringement tags from derivative IPs when the parent has resolved its original dispute and is no longer considered as being in an infringing situation, and therefore neither are its derivatives.
If no address chooses to resolve, then the tag that was applied from the parent to the derivative remains in force.
Cancel Dispute
In a case where a dispute was raised but the matter has been resolved before the dispute judgment, the dispute initiator can cancel the dispute. However, depending on the conditions of each arbitration policy, there may be non-refundable fees that are not recouped on cancellation.
Currently, the UMA Arbitration Policy does not support cancelling disputes.