Night Watch is an art collection of 455 animated impossible animal trios strolling around in a mysterious void. Each animation has 15 frames, and each frame of each animation is an NFT. By collecting the same frames of an animation in the same wallet, you form an animation of those frames. Your goal is to complete the animation by collecting all 15 frames.
Made by Kaybid and Yigit Duman.
- Temporarily increase metadata server's and lambda function's default cache time to 30 minutes.
- Stop all servers and website APIs. Make sure to remove metadata server configuration.
- Remove all the generated images from S3 in case of testing leftovers. Create generated-gifs folder and make it public.
- Reset redis server
- Ensure deployment configuration is correct for deployment scripts.
- Delete /out folder.
- Deploy NightWatchPaymentDivider, NightWatchMetadata, NightWatch, contracts consecutively.
- Add NightWatch contract address to infura smart contract whitelist address.
- Map gifs randomly using the contract deployment blockhash.
- Update AWS lambda function configuration.
- Update metadata-server configuration.
- Generate the token data with nw-offchain-tools using the contract deployment blockhash as the random seed.
- Use
NightWatch.fillTokenData
in 10 batches to upload the data on-chain. - Mint all tokens to the vault.
- Use nw-offchain-tools/generate-all-token-images
- Increase metadata server's vCPU and memory.
- Resume metadata server.
- Update metadata address.
- Use
NightWatch.setMergePaused(false)
to start merge events. - Deploy NightWatchVendor
- Update configuration and run event-storage-server on nw-offchain-tools
- Update configuration on websites
- Approve NightWatchVendor for vault address.
- Update metadata contract of Night Watch to send refresh metadata request on all tokens.
- Manually refresh metadata of all tokens to be sure
- Reduce metadata server's and lambda function's default cache time to 60 seconds.
- Update OpenSea page (description, profile picture, etc.)
- Run sale-website.
- Add buy now button to the main website.
- Reduce vCPU and memory to production levels for metadata-server.
- Transfer all ownerships to Gnosis.
- After some time, when you are sure there are no problems with merge and token data, use
NightWatch.lockState
to lock changing states.
Not yet disclosed.
You will need a copy of Foundry installed before proceeding. See the installation guide for details.
To build the contracts:
git clone https://github.com/nightwatchwalks/smart-contracts.git
cd smart-contracts
forge install
In order to run unit tests, run:
forge test
After installing Slither, run in the main folder:
slither .
To update the gas snapshots, run:
forge snapshot
In order to deploy the Night Watch contracts, set the relevant constants in the Deploy
script, and run the following command(s):
export PRIVATE_KEY=$PRIVATE_KEY
forge script script/DeployNightWatch.s.sol:Deploy --rpc-url $RPC_URL --broadcast --verify --etherscan-api-key $API_KEY
forge script script/DeployVendor.s.sol:DeployVendor --rpc-url $RPC_URL --broadcast --verify --etherscan-api-key $API_KEY
Check the /script and /script/js folders to see helpful scripts for testing and post-deployment phase of Night Watch.
We're grateful to the open source community and awesome developers of Web3 for their contributions that made Night Watch possible. Thank you!
- transmissions11 and contributors of Solmate
- Vectorized and contributors of Solady
- Paradigm for their open source smart contracts
- Foundry creators and contributors
- Chiru Labs and contributors of ERC721A
MIT © 2023 Night Watch
(License is for smart contracts. Artworks, animations and visuals aren't included.)