Skip to content

Implement cross-guild collaboration for multi-guild NFT collections #2

Description

@thewealthyplace

Summary

Enable two or more guilds to collaborate on a single NFT collection, sharing creative credit and revenue according to a negotiated inter-guild split agreement stored on-chain.

Problem

Currently each NFT collection belongs to exactly one guild. In practice, high-profile drops often involve multiple creative teams — e.g. a visual art guild collaborating with a music guild for an audiovisual NFT drop. There is no on-chain mechanism to coordinate this.

Proposed Solution

Collaboration Contract

;; Propose a cross-guild collaboration
(define-public (propose-collaboration
  (initiating-guild-id uint)
  (partner-guild-id uint)
  (initiating-split uint)   ;; e.g. u60 = 60%
  (partner-split uint)      ;; e.g. u40 = 40%
  (collection-name (string-ascii 64))
)
  (begin
    (asserts! (is-eq (+ initiating-split partner-split) u100) ERR_INVALID_SPLIT)
    (asserts! (is-guild-admin initiating-guild-id tx-sender) ERR_NOT_ADMIN)
    ;; Store pending collaboration proposal
    (map-set pending-collabs
      { guild-a: initiating-guild-id, guild-b: partner-guild-id }
      { split-a: initiating-split, split-b: partner-split,
        collection: collection-name, status: STATUS_PENDING }
    )
    (ok true)
  )
)

;; Partner guild accepts the collaboration
(define-public (accept-collaboration (guild-a uint) (guild-b uint))
  (begin
    (asserts! (is-guild-admin guild-b tx-sender) ERR_NOT_ADMIN)
    ;; Activate collaboration and create shared collection
    (ok true)
  )
)

Revenue Flow for Collaborative Collections

Primary Sale Revenue
        │
        ▼
  Collaboration Split (60/40)
    ┌───┴───┐
  Guild A  Guild B
  Treasury Treasury
    │         │
    ▼         ▼
 Member    Member
 Splits    Splits

Secondary royalties follow the same split automatically.

Collaboration Lifecycle

PROPOSED → ACCEPTED → ACTIVE → COMPLETED
         → REJECTED
         → EXPIRED (7-day acceptance window)

UI Changes

  • Collaboration proposals visible in guild dashboard
  • Partner guild admins can accept/reject with one click
  • Collaborative collections show both guild logos and split breakdown
  • Shared treasury view shows combined earnings

Acceptance Criteria

  • propose-collaboration and accept-collaboration functions implemented
  • 7-day acceptance window enforced on-chain (block height based)
  • Revenue split applied at point of mint and secondary sale
  • Both guilds can view the collaboration in their dashboard
  • Rejection and expiry handled gracefully with clear UI states
  • Clarinet tests covering happy path, rejection, expiry, invalid splits
  • Max 3 guilds per collaboration (to keep splits manageable)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions