Skip to content

Instantly share code, notes, and snippets.

View z0r0z's full-sized avatar
💭
codin qualia 🪄

ross z0r0z

💭
codin qualia 🪄
View GitHub Profile
@z0r0z
z0r0z / AfterExpensesPaymentSplitter.sol
Created March 11, 2022 17:56
after expenses splitter
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (finance/PaymentSplitter.sol)
pragma solidity ^0.8.0;
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol";
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol";
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol";
/**
@z0r0z
z0r0z / MultiToken.sol
Last active February 28, 2022 09:10
what ERC-1155 could have been
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;
/// @notice Modern and gas efficient MultiToken implementation adhering as closely to ERC20 interface.
/// @author Ross, modified from (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC20.sol)
abstract contract MultiToken {
/*///////////////////////////////////////////////////////////////
EVENTS
//////////////////////////////////////////////////////////////*/
@z0r0z
z0r0z / NFT.sol
Created February 28, 2022 08:29
what ERC-721 could have been
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;
/// @notice Modern and gas efficient NFT implementation adhering as closely to ERC20 interface.
/// @author Ross, modified from (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC20.sol)
abstract contract NFT {
/*///////////////////////////////////////////////////////////////
EVENTS
//////////////////////////////////////////////////////////////*/
@z0r0z
z0r0z / EIP4521.sol
Created February 28, 2022 08:25
make your NFTs compatible with more smart contracts that expect erc20s with this 1 weird trick
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.4;
import 'https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol';
error NotOwner();
error InvalidRecipient();
contract EIP4521 is ERC721("WEIRD", "WEIRD") {
@z0r0z
z0r0z / TokenRestrictedThing.sol
Last active April 29, 2022 21:31
NFT restricted access
// SPDX-License-Identifier: MIT
pragma solidity 0.8.4;
import 'https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol';
contract Ownable {
address public owner;
modifier onlyOwner {
@z0r0z
z0r0z / MolochBound.sol
Created February 24, 2022 19:08
an NFT that sits in your wallet until you contribute 0.01 ETH to public goods
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.4;
import 'https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol';
error NotGood();
error NotEnough();
error ETHtransferFailed();
error NotSummoner();
@z0r0z
z0r0z / Soulbinder.sol
Last active December 29, 2023 10:20
Bind your Soul to an NFT deed
// SPDX-License-Identifier: GPL-v3.0-or-later
pragma solidity >=0.8.0;
import 'https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol';
import 'https://github.com/kalidao/kali-contracts/blob/main/contracts/libraries/Base64.sol';
/// @notice Bind your Soul to an NFT Deed.
contract Soulbinder is ERC721("Soulbinder", "SOUL") {
/// -----------------------------------------------------------------------
/// Soul Logic
@z0r0z
z0r0z / ClubSig.sol
Last active February 14, 2022 09:56
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity >=0.8.4;
import 'https://github.com/kalidao/kali-contracts/blob/main/contracts/tokens/erc721/ERC721initializable.sol';
import 'https://github.com/kalidao/kali-contracts/blob/main/contracts/utils/Multicall.sol';
import 'https://github.com/kalidao/kali-contracts/blob/main/contracts/libraries/Base64.sol';
import 'https://github.com/kalidao/kali-contracts/blob/main/contracts/utils/NFThelper.sol';
/// @notice Minimal ERC-20 interface.
@z0r0z
z0r0z / ClubSig.sol
Last active March 9, 2022 01:53
Multi-sig with dynamic NFTs, ragequit and minimal extension interface ('governor')
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity >=0.8.4;
import 'https://github.com/kalidao/kali-contracts/blob/main/contracts/tokens/erc721/ERC721initializable.sol';
import 'https://github.com/kalidao/kali-contracts/blob/main/contracts/utils/Multicall.sol';
import 'https://github.com/kalidao/kali-contracts/blob/main/contracts/libraries/Base64.sol';
import 'https://github.com/kalidao/kali-contracts/blob/main/contracts/utils/NFThelper.sol';
/// @notice Minimal ERC-20 interface.
@z0r0z
z0r0z / PartyNFT.sol
Created February 10, 2022 04:06
The selected bid NFT controls how long voting units can be minted. When party NFT transfers, voting units follow.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/draft-ERC721Votes.sol";
import "@openzeppelin/contracts/security/Pausable.sol";
contract PartyNFT is ERC721, ERC721Burnable, ERC721Enumerable, ERC721Votes, Pausable {