ethernauts's Issues
Add solhint linter
Research Ethereans
Research how LOOT composes NFTs
Bootstrap npm workspaces
Script for signing coupons
Only allow early sales with signatures
Ability to flag roles on NFTs
We'd like to have a generic and flexible mechanism by which the DAO can identify or mark certain NFTs as having a particular role, i.e. "mentor".
These should clear out when transfer.
Landing page narrative 2nd iteration
Pass metadata format to artist
We will be generating the metadata.
See format in opensea or rarity.tools
Migrate from `master` branch to `main`
Receive random numbers on L2 sent by the L1 bridge
Take chainlink VRF for a drive
Done, code shared here https://github.com/ajsantander/vrf
Early purchases require a signature
Add Solidity coverage
Remove challenge mechanism
Run Solidity coverage on CI
Run linters on CI
Run tests on CI
Simplify IPFS implementation for local use as much as possible
Reduce complexity of contract as much as possible with no sophisticated features
go-ipfs auto install fails on M1 macs
See ipfs/npm-kubo#13
I was able to install native go-ipfs and start a daemon locally https://docs.ipfs.io/install/command-line/#official-distributions
Bootstrap DigitalOcean account with services & deployment
More mature IPFS integration
Research fair randomness on the KiaSedona NFT
Resources
https://jaypegsautomart.com/
Contract: https://etherscan.io/address/0xf210d5d9dcf958803c286a6f8e278e4ac78e136e#code
Notes
Since it's expensive (and complicated) to randomly assign each tokenId to an assetId, and its not really transparent to just get a single random number like ethereans, they generate a few random numbers for the whole set.
Each tokenId belongs to one of 20 "lots". Each lot has its own random number. If the number has not yet been generated, or is not yet available, tokens have a place holder URI.
When generating assets and metadata, precaculate image URI
Study Paradigm NFT article
Reintroduce early sale mechanism with signed messages
Bootstrap dapp
Get whitelisted on Optimism mainnet
Design variable rarity algorithm
We'd like to be able to give people the ability to make donations while minting an NFT. This will increase the rarity with which an assetId
is associated with a tokenId
.
This is rather controversial, but it would allow buyers to signal their support for the DAO. The DAO could use these donations to create a mentors pool, that only NFT holders marked with the mentor flag can claim on.
Bootstrap Optimism
Move contracts stuff to its own package
Community is asking for tasks to help with on this project
Setup mint keeper deployment on DigitalOcean
Move IPFS stuff to its own package
Design early sale dates mechanism
Tasks
- Sale state enum
- Ability to set state by owner
- Early mint function
- Modifiers to protect mint functions
- General tests
- Mint tests
- Early mints with fixed price + tests
Design L1 random number generator, which sends the number to L2
Problem with gift functionality, can run out of tokens before gifting
Script for signing early sale messages
Move DAO multisig to L2
Subtasks
- Confirm decision
- Audit https://ogg.scopelift.co/
- Create new multisig with same addresses as L1 - Done
0x8cbecc838DEA01d3dd6828615a38fc4486D9F326
- Validate multisig instance bytecode - Matches
- Test L2 multisig - Sent it 0.03 ETH and back
- Send existing funds to L2
- Agree on method - will send 12k sUSD to one of the signer addresses, swap it to USDC or DAI, bridge it to L2, then send it to the multisig on L2
- Send all sUSD to an EOA - sending to
0x45a10F35BeFa4aB841c77860204b133118B7CcAE
- Swap all sUSD to DAI
- Bridge all DAI to L2
- Send DAI to multisig
- Verify multisig on Etherscan
Use received random numbers to reveal URIs by batches
Finish bot that uploads images once tokens are minted
Recognize sale states in dapp
It should recognize the sale states and display different React components to dispatch a transaction that execute the associated Ethernauts contract function.
Clean up backlog
Ensure non-priviledged rarity knowledge with randomness
When we design bot.js
to publish assets to IPFS, we will be in control of some mechanism that picks an assetId
to associate it with a minted tokenId
. We can be as honest as we want in this process, but the community has no way of knowing that we are actually being honest. We could know this rig this algorithm to be predictible by us, and thus be able to mint super rare NFTs from anon addresses we create. If the community cannot see a guarantee to mitigate this, the NFTs will be less valuable.
Other projects seem to be using oracles like Chainlink's VRF to generate a single random number that offsets the association:
function tokenURI(uint256 tokenId) public view override returns (string memory) {
uint _tokenId = randomisedOffset(tokenId,rand);
return string(abi.encodePacked(baseURI(), _tokenId.toString()));
}
Atm, Chainlink VRF is not supported in Optimism. They say it will be supported at some point. If we don't want to wait for them, we could deploy a contract on mainnet that relays a message with the random number to L2.
It might be slightly harder for us if we want to implement a dynamic randomness algorithm depending on ETH paid.
Research Ethereans
Design fair pre-sale mechanism
We want to give community members a chance to get an NFT, without having to wake up at 4 am, and even consider giving them a discount (i.e. they shouldn't have to worry about affording it).
Ethereans solved this pretty nicely, by doing a pre-sale, where only community members can purchase tokens for 2-3 days, and only after that the public sale starts.
The mechanism by which community members can vary. One possibility is to mint poaps in xdai, and use that to produce a list of addresses. The owner can then sign messages and hand them over to poap holders, which they can use to access the early sale with a discount.
Custom badges with ERC1155 NFT tokens
The DAO wants a way to award things to avatar holders, such as a "mentor" badge etc. Similarly, mentors would like to award their trainees custom badges that don't necessarily involve the DAO's decision or approval. A mentor, for example, may award a certain "challenge" badge for something they use during training.
Previous attempts like have been made, for example this one involving adding a mapping to the avatar NFTs, on which the DAO could flick some properties on in an avatar:
#14
The problem with this is that when an avatar is transferred, all its properties are transferred with it. We wouldn't want the mentor badge to persist when a mentor sells the avatar NFT. And we wouldn't want the mentor to loose that badge either.
Alternatively, the badges could be assigned to addresses, and the ideal contract for this kind of record keeping could be ERC1155 NFTs.
The DAO could issue these in future stages to avatar holders, as could mentors, etc.
What's the difference between OZ's ERC721 _safeMint() and _mint()
Emit events where appropriate
So far, main Ethernauts.sol is being developed completely disregarding event emission. It'd be good to review existing functions and see which should emit an event.
Keep in mind that events are already being emitted from the ERC721 contract that is inherited from.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.