A single NFT canvas where users overwrite the previous edition with price-compounded pixels.
- There is an universal art canvas with 16x16 pixels that anyone can overwrite
- Whenever a user overwrites a pixel, the price of the pixel increases by 5% (Initial pixel price: 1 DIXEL)
- A new NFT edition with the current canvas state will be minted to the updater (image data is encoded as SVG, 100% on-chain)
- Total cost that user paid to overwrite pixels goes to:
- 10% -> all contributors proportional to their contribution count (total pixel count a user has updated so far)
- 90% -> reserve for refund when the NFT gets burned
- If a user burn a NFT they own, reserve amount (DIXEL tokens) gets refunded to the user (90% of total minting cost)
npx hardhat test
- Test token: 0x57960c075b08A4Ba01B9D53E97ce3440f12F544f
- DixelAirdrop: 0x5c1a49360b07dA6Fa37297A1F30E177FBFA7dfF1
- DixelArt NFT: 0x5A56Efb75Ad37B8532D39b9329374bA10beA5f50
- Dixel contract: 0x9E705dA2C9a3a7E14851272D8ba79620AB9dAd86
npx hardhat compile
HARDHAT_NETWORK=bscmain node scripts/deploy.js
# Verify source code on Etherscan
npx hardhat verify --network bscmain {contract address} "parameter 1" "parameter 2"
·----------------------------------------------------|---------------------------|--------------|-----------------------------·
| Solc version: 0.8.10 · Optimizer enabled: true · Runs: 1500 · Block limit: 60000000 gas │
·····················································|···························|··············|······························
| Methods · 1 gwei/gas · 3342.03 usd/eth │
····························|························|·············|·············|··············|···············|··············
| Contract · Method · Min · Max · Avg · # calls · usd (avg) │
····························|························|·············|·············|··············|···············|··············
| DixelAirdrop · addTokens · 69103 · 90972 · 80038 · 46 · 0.27 │
····························|························|·············|·············|··············|···············|··············
| DixelAirdrop · claim · - · - · 77230 · 9 · 0.26 │
····························|························|·············|·············|··············|···············|··············
| DixelAirdrop · closeAirdrop · - · - · 59767 · 3 · 0.20 │
····························|························|·············|·············|··············|···············|··············
| DixelAirdrop · startAirdrop · - · - · 28419 · 9 · 0.09 │
····························|························|·············|·············|··············|···············|··············
| DixelAirdrop · whitelist · - · - · 199568 · 23 · 0.67 │
····························|························|·············|·············|··············|···············|··············
| DixelArt · burn · - · - · 67688 · 6 · 0.23 │
····························|························|·············|·············|··············|···············|··············
| DixelArt · transferOwnership · 28596 · 28620 · 28618 · 65 · 0.10 │
····························|························|·············|·············|··············|···············|··············
| DixelMock · claimReward · 55825 · 72925 · 67225 · 6 · 0.22 │
····························|························|·············|·············|··············|···············|··············
| DixelMock · updatePixels · 1232210 · 1257992 · 1251977 · 105 · 4.18 │
····························|························|·············|·············|··············|···············|··············
| DixelMock · updatePixelsNoChecks · - · - · 3008100 · 1 · 10.05 │
····························|························|·············|·············|··············|···············|··············
| DixelMock · updatePixelsOriginal · - · - · 3258315 · 1 · 10.89 │
····························|························|·············|·············|··············|···············|··············
| ERC20PresetMinterPauser · approve · 46596 · 46620 · 46618 · 130 · 0.16 │
····························|························|·············|·············|··············|···············|··············
| ERC20PresetMinterPauser · mint · 55830 · 72954 · 63523 · 196 · 0.21 │
····························|························|·············|·············|··············|···············|··············
| Deployments · · % of limit · │
·····················································|·············|·············|··············|···············|··············
| ColorUtilsMock · - · - · 298677 · 0.5 % · 1.00 │
·····················································|·············|·············|··············|···············|··············
| DixelAirdrop · 1186871 · 1186883 · 1186882 · 2 % · 3.97 │
·····················································|·············|·············|··············|···············|··············
| DixelArt · 2813231 · 2813243 · 2813242 · 4.7 % · 9.40 │
·····················································|·············|·············|··············|···············|··············
| DixelMock · 8203827 · 8203839 · 8203837 · 13.7 % · 27.42 │
·····················································|·············|·············|··············|···············|··············
| ERC20PresetMinterPauser · - · - · 1951544 · 3.3 % · 6.52 │
·----------------------------------------------------|-------------|-------------|--------------|---------------|-------------·