npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@zoralabs/erc20z

v2.1.1

Published

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).

Downloads

207

Readme

Zora Timed Sale Strategy

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.

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.

ERC20z

ERC20z is an extension of the ERC20 standard by allowing an ERC20 token to have metadata.

The ERC20z contract also allows users to wrap and unwrap tokens. Wrapping converts a Zora 1155 token to an ERC20z token. Unwrap converts an ERC20z token to a Zora 1155 token.

Royalties

Royalties contract manages royalty distribution from secondary markets on Uniswap V3. Creators can earn LP liquidity rewards from the Uniswap pool and can collect royalties using the Royalties contract.

Deployment Determistic Addresses

  • Zora Timed Sale Strategy: 0x777777722D078c97c6ad07d9f36801e653E356Ae
  • Royalties: 0x77777771DF91C56c5468746E80DFA8b880f9719F

Deployment

The ZoraTimedSaleStrategy, Royalties, and SecondarySwap helper contracts are deployed deterministically using a turnkey account. The deployment process uses a helper contract, DeterministicDeployerAndCaller.

Deployment happens in two steps for each set of contracts:

  1. Generate the deterministic deployment configuration (once per contract set).
  2. Use the configuration to deploy the contract to any chain using a turnkey-generated signature.

Prerequisites

Setting up environment variables

In the packages/erc20z directory:

  1. Copy .env.example to .env
  2. Populate the parameters in .env
  3. Set TURNKEY_TARGET_ADDRESS to the address of the turnkey account that will sign the deployment.

Deploying the Zora Timed Sale Strategy and Royalties contracts

  1. Generate deterministic config (if not already done):
DEPLOYER={TURNKEY_DEPLOYER_ADDRESS} forge script script/GenerateDeterministicParams.s.sol $(chains zora --deploy) --ffi

This saves the config to ./deterministicConfig/zoraTimedSaleStrategy.json and ./deterministicConfig/royalties.json.

  1. Deploy the ZoraTimedSaleStrategyImpl implementation contract:
forge script script/DeployImpl.s.sol $(chains {chainName} --deploy) --broadcast --verify
  1. Deploy the Royalties and ZoraTimedSaleStrategy contracts:
forge script script/Deploy.s.sol $(chains {chainName} --deploy) --broadcast --verify --ffi

Deploying the SecondarySwap helper

  1. Generate deterministic config (if not already done):
DEPLOYER={TURNKEY_DEPLOYER_ADDRESS} forge script script/GenerateSecondarySwapDeterministicParams.s $(chains zora --deploy) --ffi

This saves the config to ./deterministicConfig/secondarySwap.json.

  1. Deploy the SecondarySwap contract:
forge script script/DeploySwapHelper.s.sol $(chains {chainName} --deploy) --broadcast --verify --ffi

Note: Replace {chainName} with the target blockchain network (e.g., "zora", "mainnet", etc.) in the deployment commands.

After deployment, verify the contract addresses on the blockchain explorer to ensure successful deployment.