Skip to content

Commit

Permalink
copyrightform v2 (attribution, transfer of rights)
Browse files Browse the repository at this point in the history
  • Loading branch information
ryangtanaka-org committed Sep 9, 2024
1 parent 30fdc7c commit 83f5422
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 18 deletions.
2 changes: 1 addition & 1 deletion src/atoms/modal/index.module.scss
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@
background-color: rgba(0, 0, 0, 0.382);
display: flex;
justify-content: center;
align-items: center;
z-index: 99;
overflow-y: auto;
}

.modalContent {
top: 0;
background-color: var(--background-color);
padding: 20px;
box-shadow: 1px 1px var(--text-color);
Expand Down
46 changes: 34 additions & 12 deletions src/components/form/CustomCopyrightForm.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ const initialClauses = {
exclusiveRights: 'none', // Options are 'none', 'majority', 'superMajority'
retainCreatorRights: true, // When exclusive rights conditions are met, does the Creator retain their rights to their own work?
releasePublicDomain: false,
rightsAreTransferable: true,
customUriEnabled: false,
customUri: '',
addendum: '',
Expand All @@ -30,6 +31,7 @@ const clauseLabels = {
exclusiveRights: 'Exclusive Rights Based on Ownership Share',
retainCreatorRights: 'Creator Retains Rights Even When Exclusive',
releasePublicDomain: 'Release to Public Domain',
rightsAreTransferable: 'Rights are Transferable',
customUriEnabled: 'Custom URI',
overview: 'Copyright Overview',
}
Expand Down Expand Up @@ -69,6 +71,10 @@ export const ClausesDescriptions = ({ clauses }) => {
true: '✅ Yes',
false: '🚫 No',
},
rightsAreTransferable: {
true: '✅ Yes',
false: '🚫 No',
},
customUriEnabled: {
true: '📝 Yes',
false: '🚫 No',
Expand Down Expand Up @@ -158,6 +164,17 @@ The Creator grants to each Owner a worldwide license to publicly display the Wor
documentText += `\n\n${clauseNumber++}. Right to Create Derivative Works:
The Creator grants to each Owner a worldwide license to publicly display the Work, either as a physical display or as a performance for live events. This license does not permit the monetization of the Work by the Owner and requires the Owner to provide full attribution to the Creator.`
}
if (clauses.requireAttribution) {
documentText += `\n\n${clauseNumber++}. Requirement for Attribution:
The Owner(s) of the Work are required to give proper and visible attribution to the Creator(s) whenever the Work is used in public settings, broadcasts, or any other form of public display or performance.acknowledge the Creator(s) by name or wallet address, unless otherwise agreed upon in writing by all parties involved. Failure to provide such attribution constitutes a breach of this Agreement, subject to the remedies available under applicable law.`
}
if (clauses.rightsAreTransferable) {
documentText += `\n\n${clauseNumber++}. Transferable Rights:
The rights granted under this Agreement to the Owner(s) of the Work are transferable. The Owner(s) may assign, transfer, or sublicense the rights to the Work, subject to maintaining proper and visible attribution to the Creator(s) whenever the Work is used in public settings, broadcasts, or any other form of public display or performance. This clause is applicable to all sales and edition numbers (unless stated otherwise), including both primary and secondary sales, promoting continuous and flexible utilization of the Work across different owners. In case of a dispute, ledger records from sales transactions will serve to confirm or deny claims as necessary. Failure to comply with attribution requirements constitutes a breach of this Agreement, subject to the remedies available under applicable law.`
} else if (!clauses.rightsAreTransferable) {
documentText += `\n\n${clauseNumber++}. Non-Transferable Rights:
The rights granted under this Agreement to the Owner(s) of the Work are non-transferable. Any attempt to transfer, assign, or sublicense the rights without explicit written consent from the Creator(s) is void. The Owner(s) must maintain proper and visible attribution to the Creator(s) whenever the Work is used in public settings, broadcasts, or any other form of public display or performance. This clause is applicable to Primary Sales, as defined as a direct sale from the Creator(s) to the first Owner(s) of an Edition of the Work from any Marketplace Contract. Upon any Secondary Sale, the rights and privileges initially granted are nullified. In case of a dispute, ledger records from sales transactions will serve to confirm or deny claims as necessary.`
}
}

// contract defaults to "All Rights Reserved" where nothing is chosen
Expand All @@ -166,7 +183,9 @@ The Creator grants to each Owner a worldwide license to publicly display the Wor
!clauses.reproduce &&
!clauses.broadcast &&
!clauses.createDerivativeWorks &&
!clauses.releasePublicDomain
!clauses.releasePublicDomain &&
!clauses.requireAttribution &&
!clauses.rightsAreTransferable
) {
documentText += `\n\n${clauseNumber++}. All Rights Reserved:
No rights are granted under this Agreement. All rights for the Work are reserved solely by the Creator.`
Expand Down Expand Up @@ -211,10 +230,7 @@ Each individual claiming ownership ("Claimant") must conclusively prove that the
This Agreement is entered into solely between the Creator and the Owner(s) of the Non-Fungible Token ("NFT") and the associated digital or physical artwork ("Work"). TEIA (teia.art), formally operating under TEIA DAO LLC, and its affiliated members, collectively referred to as "Platform," do not bear any responsibility for the enforcement, execution, or maintenance of this Agreement. The Platform serves only as a venue for the creation, display, and trading of NFTs and does not participate in any legal relationships established under this Agreement between the Creator and the Owner(s). All responsibilities related to the enforcement and adherence to the terms of this Agreement rest solely with the Creator and the Owner(s). The Platform disclaims all liability for any actions or omissions of any user related to the provisions of this Agreement.`

documentText += `\n\n${clauseNumber++}. Perpetuity of Agreement:
This Agreement remains effective in perpetuity as long as the Owner(s) can conclusively demonstrate proof of ownership of the NFT representing the Work, beyond reasonable doubt. Proof of ownership must be substantiated through reliable and verifiable means, which may include, but are not limited to, transaction records, cryptographic proofs, or any other blockchain-based evidence that unequivocally establishes ownership. This perpetual license ensures that the rights and privileges granted under this Agreement persist as long as the ownership criteria are met and validated.`

documentText += `\n\n${clauseNumber++}. Transfer of Rights Upon Change of Ownership:
The rights and obligations stipulated in this Agreement, along with any associated privileges, shall transfer automatically to a new owner upon the change of ownership from one wallet to another. This transfer is triggered by the sale, gift, or any form of transfer of the NFT that embodies the Work. The transfer of rights becomes effective immediately following the timestamp of the transaction recorded on the blockchain. It is incumbent upon the new Owner to verify and uphold the terms set forth in this Agreement, ensuring continuity and adherence to the stipulated conditions. The previous Owner's rights under this Agreement cease concurrently with the transfer of ownership.`
Unless stated otherwise (in this Agreement itself), this Agreement remains effective in perpetuity as long as the Owner(s) can conclusively demonstrate proof of ownership of the NFT representing the Work, beyond reasonable doubt. Proof of ownership must be substantiated through reliable and verifiable means, which may include, but are not limited to, transaction records, cryptographic proofs, or any other blockchain-based evidence that unequivocally establishes ownership. This perpetual license ensures that the rights and privileges granted under this Agreement persist as long as the ownership criteria are met and validated.`

// Additional notes based on user input
if (clauses.addendum) {
Expand All @@ -240,6 +256,8 @@ The rights and obligations stipulated in this Agreement, along with any associat
createDerivativeWorks: false,
exclusiveRights: 'none',
retainCreatorRights: true,
requireAttribution: true,
rightsAreTransferable: true,
releasePublicDomain: false,
customUriEnabled: true,
}))
Expand All @@ -260,6 +278,7 @@ The rights and obligations stipulated in this Agreement, along with any associat
createDerivativeWorks: false,
exclusiveRights: 'none',
retainCreatorRights: true,
rightsAreTransferable: true,
releasePublicDomain: true,
customUriEnabled: false,
customUri: '',
Expand Down Expand Up @@ -324,12 +343,15 @@ The rights and obligations stipulated in this Agreement, along with any associat
clauses.broadcast ||
clauses.publicDisplay ||
clauses.createDerivativeWorks ||
clauses.releasePublicDomain
clauses.releasePublicDomain ||
clauses.requireAttribution ||
clauses.rightsAreTransferable

if (clauses.customUriEnabled) {
documentText = `Custom URI: ${clauses.customUri}`
} else if (!hasActiveRights) {
documentText = 'No Permissions Chosen'
documentText =
'No Permissions Chosen (For Addendums to show, choose at least one option in the checkboxes above.)'
} else {
documentText = generateDocumentText()
}
Expand All @@ -344,6 +366,8 @@ The rights and obligations stipulated in this Agreement, along with any associat
clauses?.createDerivativeWorks,
clauses?.exclusiveRights,
clauses?.releasePublicDomain,
clauses?.requireAttribution,
clauses?.rightsAreTransferable,
handleChange,
generateDocumentText,
updateCustomLicenseData,
Expand All @@ -359,6 +383,8 @@ The rights and obligations stipulated in this Agreement, along with any associat
'broadcast',
'publicDisplay',
'createDerivativeWorks',
'requireAttribution',
'rightsAreTransferable',
'releasePublicDomain',
]

Expand Down Expand Up @@ -488,11 +514,7 @@ The rights and obligations stipulated in this Agreement, along with any associat
/>
)}
</div>
{(clauses.reproduce ||
clauses.broadcast ||
clauses.publicDisplay ||
clauses.createDerivativeWorks ||
clauses.releasePublicDomain) && (
{clauses && (
<div style={{ marginTop: '1em' }}>
<h4>Addendum/Notes</h4>
<Textarea
Expand Down
13 changes: 12 additions & 1 deletion src/components/form/copyrightmodaltext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export const copyrightModalText = {
<li><strong>Duration of Rights:</strong> Rights are granted in perpetuity, meaning there is no expiration on the privileges and permissions granted to Owners after purchase.</li>
<li><strong>Frequency of Rights:</strong> Rights are unlimited, not restricted by the number of broadcasts or platforms.</li>
<li><strong>Exclusivity:</strong> Exclusive rights Agreements (priviledges granted exclusive to one individual or entity and no one else), are possible using the number of Editions owned as a mechanism to facilitate these types of arrangements. (By default, all rights bestowed upon by the Creator are non-exclusive.)</li>
<li><strong>Transferability:</strong> Rights are transferable because they are defined by the condition of ownership, allowing rights and associated privileges to be passed to others.</li>
<li><strong>Transferability:</strong> Rights are transferable because they are defined by the condition of ownership, allowing rights and associated privileges to be passed to others, unless stated otherwise.</li>
<li><strong>Royalties:</strong> Royalties upon secondary sales still apply during transfers of ownership, which allows for Creators to earn "passive income", similar to deals that occur in traditional arts/entertainment industries.</li>
</ul>
<p>Note that some digital mediums (e.g. software, websites, video games) often fall into several categories, depending on how it's use. If you want a "permissive" contract, choose as many as applicable. If you want more granularity, think about use-cases and scope them as necessary. (e.g. for video games, reproduction rights will allow the developer to sell assets like art and music directly, whereas broadcasting rights will only allow to "use" them in-game.)
Expand Down Expand Up @@ -63,6 +63,17 @@ export const copyrightModalText = {
<p>Public domain release is often irrevocable, meaning once a work is released to the public domain, the creator cannot reclaim the rights. Therefore, it's crucial for Creators to carefully consider the implications before making such a decision, especially since it can be easily referenced on the blockchain itself. ("Announcements" made on social media or other privately-owned platforms often do not constitute</p>
<p>This option can be particularly beneficial for educational, cultural, or philanthropic purposes, contributing to the broader public good by freely sharing creative works.</p>
`,
requireAttribution: `
<p>This is simply a requrement that whenever the work is displayed in public settings (which includes broadcasts, events, social media posts, etc.) that the Owner of the work is required to give attribution to the original Creator(s) in some way, shape, or form.</p>
<p>Many curators, content creators, and fans will do this out of courtesy to the artist, but there are times (like logos) where attribution may not be necessary, or even undesirable. Leaving this section blank leaves it up to the Owner as to what they want to do, but it's generally a good idea to make explicit what the usage rights are, if the artist has a preference for how they want their works used in public contexts.</p>
<p>If you want more granularity in the way attributions are done, you may want to consider using the Addendum portions of the Custom License or reference Creative Commons licenses to get an idea of how these clauses are applied in practice. (Note: Once a work goes to Public Domain, attributions are no longer required.)</p>
`,
rightsAreTransferable: `
<p>When rights are transferable, the Owner(s) of the Work are granted the ability to pass on their rights and privileges to subsequent Owners. This transferability includes all forms of public display, reproduction, and sale, ensuring that rights can dynamically move within the marketplace while still respecting the original agreements set forth by the Creator(s).</p>
<p>Transferable rights are particularly valuable in dynamic markets and industries where ownership frequently changes hands. They allow for continued use and enjoyment of the Work across different owners and contexts. However, it's important for each Owner to understand that the transfer of these rights must still adhere to the terms of the original contract, particularly concerning attribution and royalty obligations.</p>
<p>If rights are *not* transferable, the original Owner retains exclusive control over the use of the Work, and any attempt to transfer these rights without explicit approval from the Creator is void. This setup ensures that the Creator can maintain a closer relationship with the usage of their Work, limiting the potential for unauthorized uses or dilution of the Work’s value in contexts they did not consent to.</p>
<p>In either case, Creators and Owners should clearly understand the terms of transferability as specified in their contract to avoid legal disputes and ensure that the rights and interests of all parties are respected.</p>
`,
customUri: `
<p>This feature allows creators to set a custom URI/URL for additional resources or information related to the NFT.</p>
<p>The custom URI can link to a variety of content, such as detailed metadata, licensing information, or the creator's personal website.</p>
Expand Down
18 changes: 14 additions & 4 deletions src/pages/objkt-display/tabs/Copyright.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ export const Copyright = () => {
createDerivativeWorks: 'Right to Create Derivative Works',
exclusiveRights: 'Exclusive Rights',
retainCreatorRights: 'Retain Creator Rights Even When Exclusive',
requireAttribution: 'Require Attribution on Use',
rightsAreTransferable: 'Rights are Transferable (Secondary Sales)',
releasePublicDomain: 'Release to Public Domain',
customUriEnabled: 'Custom URI Enabled',
customUri: 'Custom URI',
Expand Down Expand Up @@ -54,7 +56,15 @@ export const Copyright = () => {
},
retainCreatorRights: {
true: '✅ Yes',
false: '⚠️ No',
false: '🚫 No',
},
requireAttribution: {
true: '✅ Yes',
false: '🚫 No',
},
rightsAreTransferable: {
true: '✅ Yes',
false: '🚫 No',
},
}

Expand Down Expand Up @@ -98,8 +108,8 @@ export const Copyright = () => {
<br />
<h4>License Details</h4>
<ul>
{licenseData.clauses &&
Object.entries(licenseData.clauses).map(([key, value]) => {
{licenseData?.clauses &&
Object.entries(licenseData?.clauses).map(([key, value]) => {
if (isCustomUriOnly() && key !== 'customUri') {
return null // Do not render other clauses if customUriEnabled is true
}
Expand All @@ -116,7 +126,7 @@ export const Copyright = () => {
}
if (key === 'customUri') {
const uriDisplay =
licenseData.clauses.customUriEnabled && value ? (
licenseData?.clauses?.customUriEnabled && value ? (
<a href={value} target="_blank" rel="noopener noreferrer">
{value}
</a>
Expand Down

0 comments on commit 83f5422

Please sign in to comment.