Skip to content

Add technical specification for user collections factory#113

Open
Douglasacost wants to merge 2 commits intomainfrom
feat/user-collections-spec
Open

Add technical specification for user collections factory#113
Douglasacost wants to merge 2 commits intomainfrom
feat/user-collections-spec

Conversation

@Douglasacost
Copy link
Copy Markdown
Collaborator

Specifies an operator-triggered NFT collection factory: users pay in fiat off-chain, a trusted backend deploys a fully-isolated EIP-1167 clone (ERC-721 or ERC-1155) on the user's behalf. Factory is UUPS-upgradeable; clones are immutable per release. Both creator and operator hold MINTER_ROLE on each clone; per-collection metadata and royalties are owner-mutable until locked one-way. On-chain externalId map prevents duplicate creations from the off-chain ledger.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an initial technical specification and documentation index for an operator-triggered “User Collections” NFT factory (UUPS-upgradeable factory deploying immutable EIP-1167 ERC-721/ERC-1155 clones), including roles, interfaces, flows, storage notes, security model, testing plan, and ops/deployment guidance.

Changes:

  • Introduce a full technical specification for the user collections factory + clone templates.
  • Add a documentation README that indexes the specification.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

File Description
src/collections/doc/spec/user-collections-specification.md New end-to-end technical spec describing architecture, interfaces, security, testing, and operations for the collections factory/clones.
src/collections/doc/README.md Documentation landing page linking to the technical specification.

Comment thread src/collections/doc/spec/user-collections-specification.md Outdated
Comment thread src/collections/doc/spec/user-collections-specification.md Outdated
Comment thread src/collections/doc/spec/user-collections-specification.md Outdated
Comment thread src/collections/doc/spec/user-collections-specification.md Outdated
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 29, 2026

LCOV of commit 93e660b during checks #666

Summary coverage rate:
  lines......: 30.6% (771 of 2517 lines)
  functions..: 26.9% (105 of 390 functions)
  branches...: 35.5% (140 of 394 branches)

Files changed coverage rate: n/a

Specifies an operator-triggered NFT collection factory: users pay in
fiat off-chain, a trusted backend deploys a fully-isolated EIP-1167
clone (ERC-721 or ERC-1155) on the user's behalf. Factory is
UUPS-upgradeable; clones are immutable per release. Both creator and
operator hold MINTER_ROLE on each clone; per-collection metadata
(baseURI/uri + contractURI) and royalties are owner-mutable until
locked one-way. On-chain externalId map prevents duplicate creations
from the off-chain ledger.

Operational sections describe the actual zkSync flow: deployment via
a Forge script + ops/ shell wrapper mirroring
ops/deploy_swarm_contracts_zksync.sh, source-code verification via
ops/verify_zksync_contracts.py against the zkSync verifier API, and
a manual pre-upgrade storage-layout check matching
src/swarms/doc/upgradeable-contracts.md. CI today runs forge test on
all packages and enforces 95% coverage on swarms only;
collection-coverage and storage-layout-diff CI jobs are recorded as
deferred items.
These three technical terms are used by the new
src/collections/doc/spec/user-collections-specification.md but were
not in the project's cspell ignoreWords list. EXTCODEHASH is an EVM
opcode (sits next to the existing EXTCODECOPY entry); autonumber is
a Mermaid sequence-diagram keyword; dedup is a common abbreviation.
@Douglasacost Douglasacost force-pushed the feat/user-collections-spec branch from c869607 to 93e660b Compare April 29, 2026 18:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants