{"_id":"@zoralabs/nft-editions-contracts","_rev":"41-b0c4852e44cca09c6d0c8eb6dd14c5f8","name":"@zoralabs/nft-editions-contracts","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@zoralabs/nft-editions-contracts","version":"1.0.0","author":{"name":"ZORA"},"license":"GPL-3.0","_id":"@zoralabs/nft-editions-contracts@1.0.0","maintainers":[{"name":"mrdain","email":"dain@db13.us"},{"name":"ismallcombe","email":"isabella.smallcombe@gmail.com"},{"name":"tbtstl","email":"tysonbattistella+npm@gmail.com"},{"name":"daihovey","email":"d@ourzora.com"},{"name":"brecknrdg","email":"b@ourzora.com"},{"name":"zethan","email":"e@zora.co"},{"name":"j-s","email":"j@zora.co"},{"name":"nguyensomniac","email":"lcn@berkeley.edu"},{"name":"olegakbarov","email":"olegakbarov@gmail.com"},{"name":"bjfresh","email":"bjvicks@gmail.com"},{"name":"jgeary","email":"james@zora.co"},{"name":"iainnash","email":"dev@iain.in"},{"name":"zacgoods","email":"zacgoodsir@gmail.com"},{"name":"mattlenz","email":"matt@mattlenz.com"}],"dist":{"shasum":"bc4e910a7864a9bc85ffd53a3be6058eaa47e57c","tarball":"https://registry.npmjs.org/@zoralabs/nft-editions-contracts/-/nft-editions-contracts-1.0.0.tgz","fileCount":45,"integrity":"sha512-0leaCKOyHhuQxrrV2qlp6dG1NedGa2DPzql3vyy899UVBtf5JN3Ypkav+Ck0PY6XArC6xeFsa0sj7/mqmdr9tw==","signatures":[{"sig":"MEQCIHGu8TAEmQBb5v1iyF4p2Feh4A1ZA1oHnxbWiHLByDqLAiADc6ESQnJveJFBu04xFWAQmA4qORg5SR0qRbo/qBqZHw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":950108},"main":"index.js","gitHead":"f0478bd2684d63c17da1c09b4c08aac221f91a62","private":false,"scripts":{"test":"hardhat test","build":"yarn run prepack","deploy":"hardhat deploy","compile":"hardhat compile","prepack":"hardhat compile","typechain":"hardhat typechain"},"_npmUser":{"name":"iainnash","email":"dev@iain.in"},"_npmVersion":"7.20.3","description":"NFT Factory Contracts","directories":{},"_nodeVersion":"16.6.1","dependencies":{"ethers":"^5.4.1","base64-sol":"^1.0.1","@openzeppelin/contracts-upgradeable":"^4.3.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","dotenv":"^10.0.0","hardhat":"^2.5.0","ts-node":"^10.1.0","data-urls":"^3.0.0","typechain":"^5.1.2","typescript":"^4.3.5","@types/chai":"^4.2.21","@types/node":"^16.4.0","@types/mocha":"^8.2.3","hardhat-deploy":"^0.8.11","ethereum-waffle":"^3.4.0","@types/data-urls":"^2.0.1","@typechain/hardhat":"^2.3.0","@typechain/ethers-v5":"^7.1.0","hardhat-gas-reporter":"^1.0.4","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@nomiclabs/hardhat-etherscan":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/nft-editions-contracts_1.0.0_1632346356276_0.8965054035990869","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@zoralabs/nft-editions-contracts","version":"1.0.1","author":{"name":"ZORA"},"license":"GPL-3.0","_id":"@zoralabs/nft-editions-contracts@1.0.1","maintainers":[{"name":"ismallcombe","email":"isabella.smallcombe@gmail.com"},{"name":"mrdain","email":"dain@db13.us"},{"name":"tbtstl","email":"tysonbattistella+npm@gmail.com"},{"name":"daihovey","email":"d@ourzora.com"},{"name":"brecknrdg","email":"b@ourzora.com"},{"name":"zethan","email":"e@zora.co"},{"name":"j-s","email":"j@zora.co"},{"name":"nguyensomniac","email":"lcn@berkeley.edu"},{"name":"olegakbarov","email":"olegakbarov@gmail.com"},{"name":"bjfresh","email":"bjvicks@gmail.com"},{"name":"jgeary","email":"james@zora.co"},{"name":"iainnash","email":"dev@iain.in"},{"name":"zacgoods","email":"zacgoodsir@gmail.com"},{"name":"mattlenz","email":"matt@mattlenz.com"}],"dist":{"shasum":"64e8ee9d2f19f36e11dd498110d42a4d697a30d7","tarball":"https://registry.npmjs.org/@zoralabs/nft-editions-contracts/-/nft-editions-contracts-1.0.1.tgz","fileCount":60,"integrity":"sha512-4Xuso2wPleSG+Kwg1cbHr6n40osZTEOiUFRZQb3Arldm/dMlQnKlsE60JYSQac8XV9vktN8376uTWKmPZQ931A==","signatures":[{"sig":"MEUCIQCbrisuncebPA0QNzDr4nXr+A2AXWZzZQn9iVcoqgs5kwIgUGNEfVKTsHbtwUQR6Jl5tLiSF0a0T/ML9XHKQ3ul1i4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1847537},"main":"index.js","gitHead":"42089886f6e0d29402ced936102b2a2678e3fce2","private":false,"scripts":{"test":"hardhat test","build":"yarn run prepack","deploy":"hardhat deploy","compile":"hardhat compile","prepack":"hardhat compile","typechain":"hardhat typechain"},"_npmUser":{"name":"iainnash","email":"dev@iain.in"},"_npmVersion":"7.20.3","description":"NFT Factory Contracts","directories":{},"_nodeVersion":"16.6.1","dependencies":{"ethers":"^5.4.1","base64-sol":"^1.0.1","@openzeppelin/contracts-upgradeable":"^4.3.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","dotenv":"^10.0.0","hardhat":"^2.5.0","ts-node":"^10.1.0","data-urls":"^3.0.0","typechain":"^5.1.2","typescript":"^4.3.5","@types/chai":"^4.2.21","@types/node":"^16.4.0","@types/mocha":"^8.2.3","hardhat-deploy":"^0.8.11","ethereum-waffle":"^3.4.0","@types/data-urls":"^2.0.1","@typechain/hardhat":"^2.3.0","@typechain/ethers-v5":"^7.1.0","hardhat-gas-reporter":"^1.0.4","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@nomiclabs/hardhat-etherscan":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/nft-editions-contracts_1.0.1_1633104531920_0.4610311029081957","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@zoralabs/nft-editions-contracts","version":"1.0.2","author":{"name":"ZORA"},"license":"GPL-3.0","_id":"@zoralabs/nft-editions-contracts@1.0.2","maintainers":[{"name":"kolber","email":"kolber@gmail.com"},{"name":"steev27","email":"steve@ourzora.com"},{"name":"ismallcombe","email":"isabella.smallcombe@gmail.com"},{"name":"mrdain","email":"dain@db13.us"},{"name":"tbtstl","email":"tysonbattistella+npm@gmail.com"},{"name":"daihovey","email":"d@ourzora.com"},{"name":"brecknrdg","email":"b@ourzora.com"},{"name":"zethan","email":"e@zora.co"},{"name":"j-s","email":"j@zora.co"},{"name":"nguyensomniac","email":"lcn@berkeley.edu"},{"name":"olegakbarov","email":"olegakbarov@gmail.com"},{"name":"bjfresh","email":"bjvicks@gmail.com"},{"name":"jgeary","email":"james@zora.co"},{"name":"iainnash","email":"dev@iain.in"},{"name":"zacgoods","email":"zacgoodsir@gmail.com"},{"name":"mattlenz","email":"matt@mattlenz.com"}],"dist":{"shasum":"edc6b49baa2382ce02a80d1759261b6d6a562ecc","tarball":"https://registry.npmjs.org/@zoralabs/nft-editions-contracts/-/nft-editions-contracts-1.0.2.tgz","fileCount":65,"integrity":"sha512-k7gfuAYvmhDtMV9YCrxNRNtNFBQNrsZpIBoziNJbD7uFX85sCKq1hwEvW7ZZVqupQxPkO6x8UKneXjy580ss6Q==","signatures":[{"sig":"MEUCIQDWurJeefPnUU3BLKoH8uv9DDoY+uGPF5bNkmZ9dduNegIgCthrLofbCGlFMnK1Nd4Uf4gdlbp1bz6UVUFDHlAVpzU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2037587},"main":"index.js","gitHead":"61a8d8c154075933cb2c39e833c4a2b1f3e56b04","private":false,"scripts":{"test":"hardhat test","build":"yarn run prepack","deploy":"hardhat deploy","compile":"hardhat compile","prepack":"hardhat compile","typechain":"hardhat typechain"},"_npmUser":{"name":"iainnash","email":"dev@iain.in"},"_npmVersion":"7.20.3","description":"NFT Factory Contracts","directories":{},"_nodeVersion":"16.6.1","dependencies":{"ethers":"^5.4.1","base64-sol":"^1.0.1","@openzeppelin/contracts-upgradeable":"^4.3.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","dotenv":"^10.0.0","hardhat":"^2.5.0","ts-node":"^10.1.0","data-urls":"^3.0.0","typechain":"^5.1.2","typescript":"^4.3.5","@types/chai":"^4.2.21","@types/node":"^16.4.0","@types/mocha":"^8.2.3","hardhat-deploy":"^0.8.11","ethereum-waffle":"^3.4.0","@types/data-urls":"^2.0.1","@typechain/hardhat":"^2.3.0","@typechain/ethers-v5":"^7.1.0","hardhat-gas-reporter":"^1.0.4","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@nomiclabs/hardhat-etherscan":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/nft-editions-contracts_1.0.2_1634782812985_0.8342585669758598","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@zoralabs/nft-editions-contracts","version":"1.0.3","author":{"name":"ZORA"},"license":"GPL-3.0","_id":"@zoralabs/nft-editions-contracts@1.0.3","maintainers":[{"name":"kulk","email":"kulkarohan@gmail.com"},{"name":"zerostyle","email":"j@z-s.co"},{"name":"kolber","email":"kolber@gmail.com"},{"name":"steev27","email":"steve@ourzora.com"},{"name":"ismallcombe","email":"isabella.smallcombe@gmail.com"},{"name":"mrdain","email":"dain@db13.us"},{"name":"tbtstl","email":"tysonbattistella+npm@gmail.com"},{"name":"daihovey","email":"d@ourzora.com"},{"name":"brecknrdg","email":"b@ourzora.com"},{"name":"zethan","email":"e@zora.co"},{"name":"j-s","email":"j@zora.co"},{"name":"nguyensomniac","email":"lcn@berkeley.edu"},{"name":"olegakbarov","email":"olegakbarov@gmail.com"},{"name":"bjfresh","email":"bjvicks@gmail.com"},{"name":"jgeary","email":"james@zora.co"},{"name":"iainnash","email":"dev@iain.in"},{"name":"zacgoods","email":"zacgoodsir@gmail.com"},{"name":"mattlenz","email":"matt@mattlenz.com"}],"dist":{"shasum":"911d34216c1b0b09346661fbc55e90fea8b2d826","tarball":"https://registry.npmjs.org/@zoralabs/nft-editions-contracts/-/nft-editions-contracts-1.0.3.tgz","fileCount":64,"integrity":"sha512-nkyudTSYOxvGzT4xuSRUh73lTgw/6BnCKoBdaTsuKZokk8+1XHFKK++zRS4naqntJDfdxs8v2z2NBQL3f+TZmw==","signatures":[{"sig":"MEQCIDz0CuI2QG+XEL7qXmUVEJior0VLqSljXoWADUVG1C8GAiAdQVGkwlYmp6SMxHJ+Xdk6uQGVg1eOQ3scu5GmCxhsWA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2099235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxhKICRA9TVsSAnZWagAAiCwP/1jodoIbqBEA6fuNf4EC\n/VGdAm/ZUM4ARGz09x+7ivRxDGyyqvQY8Zp5aJy+fgoWzRlqFTronGDIiNVw\n1kMLc9mnxjRkrrfxEoGLEFE6NCJePOo+BKr8US6TsQhsunacTck2c4oBBXK0\nO5UGkE8rBu/Zuuop5LlcaAoigFbl+3Pgp7o4yb65DNar3gmGhOr5QLhCk3se\naQKYP6tMytlkYKO2gn5JI5yIsj8KYIYNaTtTgZ6tmBhhrfShKnpaiDLcXKD0\nFPfaemTNuDuU04LuYruKmHtFOWU08jLd4lvbuz5MSX5wKRo4T21JiViQY3W0\nd94P4FIyoZbYvC0jAIOzaag6h4m8Qd+M9BI2Jtbjiy8KAYIfdJWwgPOIz27K\noVMKqng0MFG3E9XJnCT+bDANbxsw8VbO49r3oUvBz+GUiyd0so3KaesUOVAG\nP5y+Sn4Y0waFF7wCg8Sl1EIiFaHq/gKUZO7a6hykOgutDD4AY3vst4lDFHNA\nD6JQYrrwiY0ya6y+LbC0GuB2Iv0bzYi9CvDysp3qap7MQf9WLjmR8Ptik389\nz4K8mQX5iRS9gyZmlmQCl4vuiLMF8bdzda4aOXNDUxuNzzwIAJwaZeVZZSOF\nadAWN9sT4JVWPNToGPbi1wCu4thtnyJbfNWgjfmv+Jq1U4RvlalgjLNFDHv/\n/XvR\r\n=8EXu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"12e1147362e2b4480625e7b8ab2a33c42a2c3ed1","private":false,"scripts":{"test":"hardhat test","build":"yarn run prepack","deploy":"hardhat deploy","compile":"hardhat compile","prepack":"hardhat compile","typechain":"hardhat typechain"},"_npmUser":{"name":"iainnash","email":"dev@iain.in"},"_npmVersion":"7.20.3","description":"NFT Factory Contracts","directories":{},"_nodeVersion":"16.6.1","dependencies":{"ethers":"^5.4.1","base64-sol":"^1.0.1","@openzeppelin/contracts-upgradeable":"^4.3.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","dotenv":"^10.0.0","hardhat":"^2.5.0","ts-node":"^10.1.0","data-urls":"^3.0.0","typechain":"^5.1.2","typescript":"^4.3.5","@types/chai":"^4.2.21","@types/node":"^16.4.0","@types/mocha":"^8.2.3","hardhat-deploy":"^0.8.11","ethereum-waffle":"^3.4.0","@types/data-urls":"^2.0.1","@typechain/hardhat":"^2.3.0","@typechain/ethers-v5":"^7.1.0","hardhat-gas-reporter":"^1.0.4","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@nomiclabs/hardhat-etherscan":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/nft-editions-contracts_1.0.3_1640370824123_0.8370275279752062","host":"s3://npm-registry-packages"}}},"time":{"created":"2021-09-22T21:32:36.275Z","modified":"2026-09-02T02:53:11.745Z","1.0.0":"2021-09-22T21:32:36.478Z","1.0.1":"2021-10-01T16:08:52.080Z","1.0.2":"2021-10-21T02:20:13.243Z","1.0.3":"2021-12-24T18:33:44.335Z"},"author":{"name":"ZORA"},"license":"GPL-3.0","description":"NFT Factory Contracts","maintainers":[{"email":"j@zora.co","name":"j-s"},{"email":"g@zora.co","name":"gilllo"}],"readme":"# Zora NFT Editions\n\n### What are these contracts?\n1. `SingleEditionMintable`\n   Each edition is a unique contract.\n   This allows for easy royalty collection, clear ownership of the collection, and your own contract 🎉\n2. `SingleEditionMintableCreator`\n   Gas-optimized factory contract allowing you to easily + for a low gas transaction create your own edition mintable contract.\n3. `SharedNFTLogic`\n   Contract that includes dynamic metadata generation for your editions removing the need for a centralized server.\n   imageUrl and animationUrl can be base64-encoded data-uris for these contracts totally removing the need for IPFS\n\n### How do I create a new contract?\n\n### Directly on the blockchain:\n1. Find/Deploy the `SingleEditionMintableCreator` contract\n2. Call `createEdition` on the `SingleEditionMintableCreator`\n\n### Through a GUI:\n\nRinkeby: https://edition-drop.vercel.app/?network=1\n\nMainnet: https://edition-drop.vercel.app/?network=4\n\nPolygon: https://edition-drop.vercel.app/?network=137\n\nMumbai: https://edition-drop.vercel.app/?network=80001\n\n\n### Where is the factory contract deployed:\n\n**Mainnet ETH**: [0x91A8713155758d410DFAc33a63E193AE3E89F909](https://etherscan.io/address/0x91A8713155758d410DFAc33a63E193AE3E89F909)\n\n**Rinkeby**: [0x85FaDB8Debc0CED38d0647329fC09143d01Af660](https://rinkeby.etherscan.io/address/0x85FaDB8Debc0CED38d0647329fC09143d01Af660)\n\n**Polygon**: [0x4500590AfC7f12575d613457aF01F06b1eEE57a3](https://polygonscan.com/address/0x4500590AfC7f12575d613457aF01F06b1eEE57a3)\n\n**Mumbai**: [0x773E5B82179E6CE1CdF8c5C0d736e797b3ceDDDC](https://mumbai.polygonscan.com/address/0x773E5B82179E6CE1CdF8c5C0d736e797b3ceDDDC)\n\n### How do I create a new edition?\n\ncall `createEdition` with the given arguments to create a new editions contract:\n\n- Name: Token Name Symbol (shows in etherscan)\n- Symbol: Symbol of the Token (shows in etherscan)\n- Description: Description of the Token (shows in the NFT description)\n- Animation URL: IPFS/Arweave URL of the animation (video, webpage, audio, etc)\n- Animation Hash: sha-256 hash of the animation, 0x0 if no animation url provided\n- Image URL: IPFS/Arweave URL of the image (image/, gifs are good for previewing images)\n- Image Hash: sha-256 hash of the image, 0x0 if no image url provided\n- Edition Size: Number of this edition, if set to 0 edition is not capped/limited\n- BPS Royalty: 500 = 5%, 1000 = 10%, so on and so forth, set to 0 for no on-chain royalty (not supported by all marketplaces)\n\n### How do I sell/distribute editions?\n\nNow that you have a edition, there are multiple options for lazy-minting and sales:\n\n1. To sell editions for ETH you can call `setSalePrice`\n2. To allow certain accounts to mint `setApprovedMinter(address, approved)`.\n3. To mint yourself to a list of addresses you can call `mintEditions(addresses[])` to mint an edition to each address in the list.\n\n### Benefits of these contracts:\n\n* Full ownership of your own created minting contract\n* Each serial gets its own minting contract\n* Gas-optimized over creating individual NFTs\n* Fully compatible with ERC721 marketplaces / auction houses / tools\n* Supports tracking unique parts (edition 1 vs 24 may have different pricing implications) of editions\n* Supports free public minting (by approving the 0x0 (zeroaddress) to mint)\n* Supports smart-contract based minting (by approving the custom minting smart contract) using an interface.\n* All metadata is stored/generated on-chain -- only image/video assets are stored off-chain\n* Permissionless and open-source\n* Simple integrated ethereum-based sales, can be easily extended with custom interface code\n\n### Potential use cases for these contracts:\n\n* Giveaways for events showing if you’ve attended \n* Serial editioned artworks that can be sold in the Zora auction house / work in any ERC721 market\n* Fundraisers for fixed-eth amounts\n* Can be used to issue tokens in response for contributing to a fundraiser\n* Tickets/access tokens allowing holders to access a discord or mint\n\n### Deploying:\n(Replace network with desired network)\n\n`hardhat deploy --network rinkeby`\n\n### Verifying:\n\n`hardhat sourcify --network rinkeby && hardhat etherscan-verify --network rinkeby`\n\n### Bug Bounty\n5 ETH for any critical bugs that could result in loss of funds.\nRewards will be given for smaller bugs or ideas.\n","readmeFilename":"README.md"}