base
commit
48bb93dac1
@ -0,0 +1,4 @@
|
|||||||
|
out
|
||||||
|
.env
|
||||||
|
.venv
|
||||||
|
lib
|
@ -0,0 +1,3 @@
|
|||||||
|
[submodule "lib/forge-std"]
|
||||||
|
path = lib/forge-std
|
||||||
|
url = https://github.com/foundry-rs/forge-std
|
@ -0,0 +1,6 @@
|
|||||||
|
[profile.default]
|
||||||
|
src = 'src'
|
||||||
|
out = 'out'
|
||||||
|
libs = ['lib']
|
||||||
|
|
||||||
|
# See more config options https://github.com/foundry-rs/foundry/tree/master/config
|
@ -0,0 +1 @@
|
|||||||
|
Subproject commit eb980e1d4f0e8173ec27da77297ae411840c8ccb
|
@ -0,0 +1,12 @@
|
|||||||
|
// SPDX-License-Identifier: UNLICENSED
|
||||||
|
pragma solidity ^0.8.13;
|
||||||
|
|
||||||
|
import "forge-std/Script.sol";
|
||||||
|
|
||||||
|
contract CounterScript is Script {
|
||||||
|
function setUp() public {}
|
||||||
|
|
||||||
|
function run() public {
|
||||||
|
vm.broadcast();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,58 @@
|
|||||||
|
// SPDX-License-Identifier: UNLICENSED
|
||||||
|
pragma solidity ^0.8.13;
|
||||||
|
|
||||||
|
// .02 or something for a unabomber + 2 bombs
|
||||||
|
// unabomber alone is free
|
||||||
|
// bomb has a 20% failure rate, when burned bomb
|
||||||
|
// "explodes" a pfp by updating the img to an explosion over the pfp
|
||||||
|
// well if its random
|
||||||
|
// just have them burn it and if it blows up a pfp thats already blown up
|
||||||
|
// then bomb wasted
|
||||||
|
// might be more fun if its random
|
||||||
|
// rather than targetted
|
||||||
|
// cause then theres a chance u blow up your own
|
||||||
|
// if random, we just need to let them know which unaboomer the exploded
|
||||||
|
// cause thats a lot of the fun, knowing u blew up a rare
|
||||||
|
// etc.
|
||||||
|
// i think this time, learning from tulips, we need to push urgency
|
||||||
|
// 10days has none?
|
||||||
|
// maybe 3 days or 5 days?
|
||||||
|
// or just say fuck it and go promothean
|
||||||
|
// ppl keep buying bombs etc.
|
||||||
|
// 30K collection, free mint, .01 per bomb
|
||||||
|
// random "blow-up"
|
||||||
|
// last 100 unabombers
|
||||||
|
// get 25% of the contract funds
|
||||||
|
// that way we sell SHIT TONS of bombs
|
||||||
|
// the lower the number gets the more likely a bomb hits a blown-up pfp
|
||||||
|
// ie sell moar bombs
|
||||||
|
// or last 1K unabombers
|
||||||
|
// bombs sales halt after we hit 1k
|
||||||
|
// i think the logic here mite be to use your dual IPFS baseURI contract
|
||||||
|
// we can do onchain but simplest way would be 2 baseURIs, one of the unabombers non blown up
|
||||||
|
// and one with blown up
|
||||||
|
// i can even make a lvl of "rarity" to the explosions
|
||||||
|
// lol
|
||||||
|
// then burn envelop = update the base uri of a random tokenid
|
||||||
|
// if token id already on blown up unabomber
|
||||||
|
// bomb is a dud
|
||||||
|
// then no need to code a dud, duds will get more likely
|
||||||
|
// as more unabombers blown up
|
||||||
|
// so if u hit a rando tokenid thats already blown up = dud, u dont tell the user it hit an already blown up one
|
||||||
|
// ujust say BOMB WAS DUD
|
||||||
|
// cause unabomber mamed more ppl than killed its kinda funny he even mailed duds
|
||||||
|
// lul
|
||||||
|
// he was pissed his boms werent killin ppl fuckin psycho lul
|
||||||
|
|
||||||
|
|
||||||
|
contract Unaboomer {
|
||||||
|
uint256 public number;
|
||||||
|
|
||||||
|
function setNumber(uint256 newNumber) public {
|
||||||
|
number = newNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
function increment() public {
|
||||||
|
number++;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
// SPDX-License-Identifier: UNLICENSED
|
||||||
|
pragma solidity ^0.8.13;
|
||||||
|
|
||||||
|
import "forge-std/Test.sol";
|
||||||
|
import "../src/Counter.sol";
|
||||||
|
|
||||||
|
contract CounterTest is Test {
|
||||||
|
Counter public counter;
|
||||||
|
|
||||||
|
function setUp() public {
|
||||||
|
counter = new Counter();
|
||||||
|
counter.setNumber(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testIncrement() public {
|
||||||
|
counter.increment();
|
||||||
|
assertEq(counter.number(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testSetNumber(uint256 x) public {
|
||||||
|
counter.setNumber(x);
|
||||||
|
assertEq(counter.number(), x);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue