diff --git a/DEVELOPING.md b/DEVELOPING.md index eb09b5f6c..8f5bf9225 100644 --- a/DEVELOPING.md +++ b/DEVELOPING.md @@ -41,7 +41,5 @@ Publishing happens in the following steps: * Running the command `pnpm changeset` will generate **a new changeset** in the `./changesets` directory. This changeset will be used to determine the next version of the bundled packages; this commit should then be pushed. * The changeset and smart contract addresses are pushed to the branch. * The pr is merged into main - any changesets in the PR are detected by a github action `release`, which will then **open a new PR** with proper versions and readme updated in each each package. If more changesets are pushed to main before this branch is merged, the PR will continuously update the version of the packages according to the changeset specification. - -7. That version is merged into main along with the new versions. - -8. The package is then published to npm with the command: `pnpm run publish-packages` and the package is published. +* That version is merged into main along with the new versions. +* The package is then published to npm with the command: `pnpm run publish-packages` and the package is published. diff --git a/docs/pages/bug-bounty/bug-bounty-program.mdx b/docs/pages/bug-bounty/bug-bounty-program.mdx index aa19d74cc..da7d2bc40 100644 --- a/docs/pages/bug-bounty/bug-bounty-program.mdx +++ b/docs/pages/bug-bounty/bug-bounty-program.mdx @@ -8,7 +8,7 @@ At Zora, we prioritize the safety and security for all of our users and communit ### Report Submission Guidelines -To submit your report, send an email to [security@zora.co](mailto:security@zora.co) and include the following details: +To submit your report, send email to [security@zora.co](mailto:security@zora.co) and include the following details: - **Issue Description**: Provide a detailed description of the issue, outlining its potential impact. - **Location**: Specify the location where the vulnerability was identified. @@ -53,7 +53,7 @@ _Please note: All bounty rewards will be denoted as USD and will be paid out as ### Program Rules - Only submit one vulnerability per report. -- When duplicates occur, we will only accept the first report that was received, as long as it fulfils our submission criteria and can be fully reproduced. +- When duplicates occur, we will only accept the first report that was received, as long as it fulfills our submission criteria and can be fully reproduced. - Social engineering targeted to Zora employees is prohibited. - Publishing sensitive information discovered during security testing is prohibited. - Vulnerabilities that Zora is aware of will not be rewarded. diff --git a/docs/pages/changelogs/1155-contracts.mdx b/docs/pages/changelogs/1155-contracts.mdx index 749bddcde..4e030f920 100644 --- a/docs/pages/changelogs/1155-contracts.mdx +++ b/docs/pages/changelogs/1155-contracts.mdx @@ -62,7 +62,7 @@ ### Minor Changes -- [d460e79c](https://github.com/ourzora/zora-protocol/commit/d460e79c): - Introduced a `reduceSupply` function allowing an approved minter or admin to reduce the supply for a given token id. New supply must be less than the current maxSupply, and greater than or equal to the total minted so far. +- [d460e79c](https://github.com/ourzora/zora-protocol/commit/d460e79c): - Introduced a `reduceSupply` function allowing an approved minter or admin to reduce the supply for a given token id. The new supply must be less than the current maxSupply, and greater than or equal to the total minted so far. - Removed the deprecated `mintWithRewards` function ## 2.10.1 @@ -251,7 +251,7 @@ #### New ability to do premints against existing contracts - Executing premint against contracts not created via premint can be done with by passing a `premintCollection` argument to the new `premint` function: + Executing premint against contracts not created via premint can be done by passing a `premintCollection` argument to the new `premint` function: ```solidity function premint( @@ -339,7 +339,7 @@ - remove `ZoraCreator1155Impl.adminMintBatch` to save contract size - 50a4e09: - To support the MINTs contract passing the first minter as an argument to `premintV2WithSignerContract` - we add the field `firstMinter` to `premintV2WithSignerContract`, and then in the 1155 check that the firstMinter argument is not address(0) since it now can be passed in manually. -### ZoraCreator1155Impl rewards splits are percentage based instead of a fixed value. +### ZoraCreator1155Impl rewards splits are percentage-based instead of a fixed value. Prior to 2.9.0, rewards were distributed based on a fixed value in ETH per token minted. From 2.9.0 rewards are distributed based on a percentage of the total reward collected for a mint. The following table breaks down the reward splits for both free and paid mints before and after 2.9.0: @@ -377,7 +377,7 @@ Prior to 2.9.0, rewards were distributed based on a fixed value in ETH per token ### Patch Changes -- 52b16aa: Publishing package in format that supports commonjs imports by specifying exports. +- 52b16aa: Publishing package in a format that supports commonjs imports by specifying exports. ## 2.7.2 @@ -397,7 +397,7 @@ Prior to 2.9.0, rewards were distributed based on a fixed value in ETH per token ### Minor Changes -- e990b9d: Remove platform referral from RewardsSplits. Use new signature for 1155 for `mint` which takes an array of reward recipients. +- e990b9d: Remove platform referral from RewardsSplits. Use a new signature for 1155 for `mint` which takes an array of reward recipients. ### Patch Changes @@ -408,7 +408,7 @@ Prior to 2.9.0, rewards were distributed based on a fixed value in ETH per token ### Patch Changes -- 7e00197: \* For premintV1 and V2 - mintReferrer has been changed to an array `mintRewardsRecipients` - which the first element in array is `mintReferral`, and second element is `platformReferral`. `platformReferral is not used by the premint contract yet`. +- 7e00197: \* For premintV1 and V2 - mintReferrer has been changed to an array `mintRewardsRecipients` - which the first element in an array is `mintReferral`, and the second element is `platformReferral`. `platformReferral is not used by the premint contract yet`. ## 2.5.3 @@ -549,7 +549,7 @@ Prior to 2.9.0, rewards were distributed based on a fixed value in ETH per token ### Changes to `ZoraCreator1155PremintExecutorImpl`: - - new function `premintV1` - takes a `PremintConfig`, and premint v1 signature, and executes a premint, with added functionality of being able to specify mint referral and mint recipient + - new function `premintV1` - takes a `PremintConfig`, and premint v1 signature, and executes a premint, with the added functionality of being able to specify mint referral and mint recipient - new function `premintV2` - takes a `PremintConfigV2` signature and executes a premint, with being able to specify mint referral and mint recipient - deprecated function `premint` - call `premintV1` instead - new function diff --git a/docs/pages/contracts/ERC721Drop.mdx b/docs/pages/contracts/ERC721Drop.mdx index c1390ef8a..cdfd4c8dc 100644 --- a/docs/pages/contracts/ERC721Drop.mdx +++ b/docs/pages/contracts/ERC721Drop.mdx @@ -217,7 +217,7 @@ Once the contract is deployed, the address that is set as the owner will need to ## Upgrading the Contract Once deployed it is possible to upgrade the NFT contract to have new functionality. -Note, that upgrade options are on the ones that are in the [Zora registry](https://github.com/ourzora/zora-drops-contracts/blob/main/src/FactoryUpgradeGate.sol). +Note, that upgrade options are only the ones that are in the [Zora registry](https://github.com/ourzora/zora-drops-contracts/blob/main/src/FactoryUpgradeGate.sol). All upgrades are opt-in and can only be initiated by a default admin. `upgradeTo` allows the NFT contract to upgrade to a new implementation contract to make delegate calls. diff --git a/docs/pages/contracts/Metadata.mdx b/docs/pages/contracts/Metadata.mdx index bf06bece6..868307b64 100644 --- a/docs/pages/contracts/Metadata.mdx +++ b/docs/pages/contracts/Metadata.mdx @@ -31,7 +31,7 @@ Token metadata has the following json schema: Note that the `image` field should be a mime type starting with `image/`, however, for best rendering support use `png`, `jpg`, or `gif` images. Be aware larger file sizes may have issues rendering but also can display artifacts. It is recommended to test your images first on [testnet](https://testnet.zora.co/) networks and verify the thumbnails and media work. -The `content` field supports _any_ mime type as the base of the NFT and is optional but for strong rendering support please ensure the `animation_url` field is set with an valid mime type (valid file types are: `gltf, glb, webm, mp3, mp4, m4v, ogv, and ogg along with mp3, wav, oga, and .html`). +The `content` field supports _any_ mime type as the base of the NFT and is optional but for strong rendering support please ensure the `animation_url` field is set with a valid mime type (valid file types are: `gltf, glb, webm, mp3, mp4, m4v, ogv, and ogg along with mp3, wav, oga, and .html`). Contract and token metadata should be pinned to IPFS using a preferred pinning service, and the url when set on a contract or token should be in an ipfs url format, like: `ipfs://{cid}`. diff --git a/docs/pages/contracts/Selling1155.mdx b/docs/pages/contracts/Selling1155.mdx index 4b86f1263..28af91915 100644 --- a/docs/pages/contracts/Selling1155.mdx +++ b/docs/pages/contracts/Selling1155.mdx @@ -45,7 +45,7 @@ struct SalesConfig { ``` ### Merkle Sale -Create a allow list sale with a Merkle proof. +Create an allow list sale with a Merkle proof. Note, the price and the max mint amount per address are specified when creating the Merkle tree. The Merkle sales config is as follows: diff --git a/docs/pages/contracts/ZoraTimedSaleStrategy.mdx b/docs/pages/contracts/ZoraTimedSaleStrategy.mdx index ccfdc6fa3..a7bfc6df4 100644 --- a/docs/pages/contracts/ZoraTimedSaleStrategy.mdx +++ b/docs/pages/contracts/ZoraTimedSaleStrategy.mdx @@ -1,9 +1,9 @@ # Zora Timed Sale Strategy -The Zora Sale Timed Sale Strategy introduces a new mint fee and [enables a secondary market that is powered by Uniswap V3](https://support.zora.co/en/categories/577345-secondary-market) +The Zora Sale Timed Sale Strategy introduces a new mint fee and [enables a secondary market that is powered by Uniswap V3](https://support.zora.co/en/categories/577345-secondary-market). New tokens minted will have a mint fee of 0.000111 ETH (✧111). -Upon calling `setSale()` a sale will be created for the Zora 1155 NFT along with creating an ERC20z token and a Uniswap V3 Pool. +Upon calling `setSale()` a sale will be created for the Zora 1155 NFT along with creating an ERC20z token and an Uniswap V3 Pool. After the sale has ended `launchMarket()` will be called to start the secondary market. This will deploy liquidity into the Uniswap V3 pool and enable the buying and selling of ERC20s on the secondary market as a result. @@ -26,8 +26,7 @@ As soon as the secondary market is launched the mint fees earned by the market w The ZoraTimedSaleStrategy contract is used to create a timed sale for a Zora 1155 token. When it is configured for an 1155 contract and token via the `setSale` function, specifying the `saleStart` and `saleEnd` of the sale, it creates a new ERC20z token and corresponding Uniswap V3 pool for a WETH pair with the ERC20z with a 1% fee. -To mint an 1155 token, the `mint` function is called on the ZoraTimedSaleStrategy contract with the mint fee of 0.000111 eth x quantity to mint sent with the call. In the `mint` call, 0.0000111 eth x quantity is held in escrow to bootstrap liquidity for the Uniswap V3 pool, the rest is distributed as rewards. -via the [ProtocolRewards](./rewards) contract, and x quantity of 1155s is minted to the `recipient`. +To mint an 1155 token, the `mint` function is called on the ZoraTimedSaleStrategy contract with the mint fee of 0.000111 eth x quantity to mint sent with the call. In the `mint` call, 0.0000111 eth x quantity is held in escrow to bootstrap liquidity for the Uniswap V3 pool, the rest is distributed as rewards via the [ProtocolRewards](./rewards) contract, and x quantity of 1155s is minted to the `recipient`. When the sale has ended, the `launchMarket` function can be called to launch the secondary market, which mints ERC20z tokens, wraps the escrowed ETH as WETH, and deposits the WETH and a portion of the minted ERC20z to the Uniswap V3 pool to launch the secondary market. @@ -139,7 +138,7 @@ The logic for launching the secondary market is designed with a few requirements - The secondary market starting price should be 0.000111 eth per token - There should be an equal amount of ERC20 to ERC1155 tokens minted/total supply -- Each owned ERC1155 should be backed and unwrappable by 1 ERC20, and visa versa. +- Each owned ERC1155 should be backed and unwrappable by 1 ERC20, and vice versa. To achieve this, the following logic is used. For the sake of simplicity, one ERC20 represents 10^18 units: diff --git a/docs/pages/protocol-sdk/collect/getTokensOfContract.mdx b/docs/pages/protocol-sdk/collect/getTokensOfContract.mdx index 0b4fd0ad1..d0fb1639c 100644 --- a/docs/pages/protocol-sdk/collect/getTokensOfContract.mdx +++ b/docs/pages/protocol-sdk/collect/getTokensOfContract.mdx @@ -1,6 +1,6 @@ # `getTokensOfContract` -**Both onchain** and **premint (gaslessly created)** tokens of a Zora 1155 contract can be retrieved using the the Collector Client function +**Both onchain** and **premint (gaslessly created)** tokens of a Zora 1155 contract can be retrieved using the Collector Client function `getTokensOfContract()` and passing a token contract address. The function returns a `tokens` array with an item for each token of the contract. Each item in `tokens` contains information the token in the `token` object, and has a function `prepareMint`. The `prepareMint` function takes a quantity to mint and returns the transaction parameters to mint the token, costs to mint the token, and any necessary diff --git a/docs/pages/protocol-sdk/creator/onchain.mdx b/docs/pages/protocol-sdk/creator/onchain.mdx index 3f6250ca8..03d19769a 100644 --- a/docs/pages/protocol-sdk/creator/onchain.mdx +++ b/docs/pages/protocol-sdk/creator/onchain.mdx @@ -128,7 +128,7 @@ with the 1155 contract address and the token creation parameters. ## Setting a price per token -A price per token can be optionally set to earn eth additional on the primary sale when each token is minted, by setting `token.salesConfig.pricePerToken`. +A price per token can be optionally set to earn additional ETH on the primary sale when each token is minted, by setting `token.salesConfig.pricePerToken`. If the `pricePerToken` is set to more than 0, there will be no `creatorReward` earned on the mint fee. If a pricePerToken is set to more than 0, then the token is setup with the [ZoraCreatorFixedPriceSaleStrategy](https://github.com/ourzora/zora-protocol/blob/main/packages/1155-contracts/src/minters/fixed-price/ZoraCreatorFixedPriceSaleStrategy.sol) as its minter. This will also result in not being able to [leverage the onchain secondary market feature](https://support.zora.co/en/articles/2519873) for tokens minted using this minter. diff --git a/docs/pages/protocol-sdk/creator/premint.mdx b/docs/pages/protocol-sdk/creator/premint.mdx index 6411e3788..835e965cf 100644 --- a/docs/pages/protocol-sdk/creator/premint.mdx +++ b/docs/pages/protocol-sdk/creator/premint.mdx @@ -14,7 +14,7 @@ import {Callout} from 'vocs/components' The Zora Protocol allows creators to create 1155 contracts and tokens without needing to pay any gas or have eth in their wallet. This is done by creating what's called a `Premint` - a signed intent to create and setup an 1155 contract and/or token. It is then uploading it to an API, where it can be retrieved later to bring onchain and mint by an account willing to pay the gas to do so. This can either be the first collector, or the -the original creator of the Premint. The account that brings the Premint onchain will earn the first minter reward. +original creator of the Premint. The account that brings the Premint onchain will earn the first minter reward. In order for the Premint to be discoverable in the Zora network, it must be signed by the creator's wallet and uploaded to the Zora Premint API. Before the Premint is brought onchain, the creator of the Premint can sign a message to update or delete it. diff --git a/docs/pages/zora-network/network.mdx b/docs/pages/zora-network/network.mdx index 8c0fa8669..fb15d9df0 100644 --- a/docs/pages/zora-network/network.mdx +++ b/docs/pages/zora-network/network.mdx @@ -17,7 +17,7 @@ To get a non-rate-limited API key for the zora RPC, sign up for an account at [C ### Zora Network Sepolia Testnet -Zora Sepolia Network is an Testnet L2 built on top of Ethereum Sepolia using the [OP stack](https://stack.optimism.io/). +Zora Sepolia Network is a Testnet L2 built on top of Ethereum Sepolia using the [OP stack](https://stack.optimism.io/). | Name | Value | | -------------- | ------------------------------------ | diff --git a/docs/snippets/protocol-sdk/create/withdrawRewards.ts b/docs/snippets/protocol-sdk/create/withdrawRewards.ts index 3b5d1f2de..d0418fb4b 100644 --- a/docs/snippets/protocol-sdk/create/withdrawRewards.ts +++ b/docs/snippets/protocol-sdk/create/withdrawRewards.ts @@ -17,7 +17,7 @@ const { parameters } = await creatorClient.withdrawRewards({ // set this to false to disable claiming secondary royalties claimSecondaryRoyalties: true, // account to execute the transaction. Any account can withdraw rewards for another account, - // but the the rewards will always be pulled to the account that holds the balance + // but the rewards will always be pulled to the account that holds the balance account: randomAccount, }); diff --git a/packages/erc20z/README.md b/packages/erc20z/README.md index eb57b7655..4b7a245c5 100644 --- a/packages/erc20z/README.md +++ b/packages/erc20z/README.md @@ -2,7 +2,7 @@ The Zora Sale Timed Sale Strategy introduces a new fixed price and unlocks secondary sales on Uniswap V3. New tokens minted will have a fixed price of 0.000111 ETH (111 sparks). -Upon calling setSale() a sale will be created for the 1155 NFT provided. In this function, it will also create an ERC20z token and a Uniswap V3 Pool. The ERC20z token will be used as a pool pair (WETH / ERC20z) as well as enable wrapping and unwrapping tokens from 1155 to ERC20z and vice versa. +Upon calling setSale() a sale will be created for the 1155 NFT provided. In this function, it will also create an ERC20z token and an Uniswap V3 Pool. The ERC20z token will be used as a pool pair (WETH / ERC20z) as well as enable wrapping and unwrapping tokens from 1155 to ERC20z and vice versa. After the sale has ended launchMarket() will be called to launch the secondary market. This will deploy liquidity into the Uniswap V3 pool and enable buying and selling as a result. diff --git a/packages/protocol-sdk/src/sparks/sparks-contracts.ts b/packages/protocol-sdk/src/sparks/sparks-contracts.ts index ba6179fd4..4c7e364aa 100644 --- a/packages/protocol-sdk/src/sparks/sparks-contracts.ts +++ b/packages/protocol-sdk/src/sparks/sparks-contracts.ts @@ -338,7 +338,7 @@ const encodePremintOnManager = ({ * @param chainId - The ID of the chain where the MINTs are to be used * @param deadline - The deadline of the permit. * @param nonce - Random nonce of the permit. - * @param tokenIds - The mint token ids to to use + * @param tokenIds - The mint token ids to use * @param quantities - The quantities of each token to use to collect the Zora Creator 1155 token with. The sum of these quantities will be the total quantity of the Zora Creator 1155 token collected. * @param premint - If this is for a premint, the configuration of the premint to collect * @param collect - If this is for a non-premint, the configuration of the non-premint to collect