Skip to content

Instantly share code, notes, and snippets.

@shobhitic
shobhitic / MyNFT.sol
Last active October 4, 2023 17:59
Bulk Upload NFTs to Opensea and other marketplaces through blockchain - https://www.youtube.com/watch?v=wxynC7aL5k8
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;
import "erc721a/contracts/ERC721A.sol";
contract MyNFT is ERC721A {
constructor() ERC721A("MyNFT", "MNFT") {}
function mint(uint256 quantity) external payable {
// `_mint`'s second argument now takes in a `quantity`, not a `tokenId`.
@shobhitic
shobhitic / ABToken.sol
Last active January 5, 2023 20:08
Soulbound tokens or Account Bound Tokens - https://youtu.be/_6Zt70PZbAs
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./EIP4973.sol";
contract ABT is ERC4973 {
address public owner;
uint256 public count = 0;
constructor () ERC4973("MyToken", "MTK") {
@shobhitic
shobhitic / FractionalizedNFT.sol
Last active December 21, 2023 22:04
Fractionalize NFT Smart Contract - https://youtu.be/fDRQDP2xW7o
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "@openzeppelin/contracts@4.6.0/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts@4.6.0/token/ERC721/IERC721.sol";
import "@openzeppelin/contracts@4.6.0/access/Ownable.sol";
import "@openzeppelin/contracts@4.6.0/token/ERC20/extensions/draft-ERC20Permit.sol";
import "@openzeppelin/contracts@4.6.0/token/ERC721/utils/ERC721Holder.sol";
contract FractionalizedNFT is ERC20, Ownable, ERC20Permit, ERC721Holder {
@shobhitic
shobhitic / MyNFT.sol
Last active August 12, 2023 03:08
Simple NFT Staking Smart Contract - https://youtu.be/m0w6JyqJKks
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "@openzeppelin/contracts@4.6.0/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts@4.6.0/access/Ownable.sol";
contract MyNFT is ERC721, Ownable {
uint256 public totalSupply;
constructor() ERC721("MyNFT", "MNFT") {}
@shobhitic
shobhitic / MyToken.sol
Last active April 18, 2024 06:33
Upgradeable NFT Smart Contract - UUPS Proxy https://www.youtube.com/watch?v=tIHrNhr_OOQ
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol";
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
contract MyToken is Initializable, ERC721Upgradeable, OwnableUpgradeable, UUPSUpgradeable {
@shobhitic
shobhitic / MyContract.sol
Last active April 18, 2024 04:51
UUPS Upgradable Smart Contract - https://youtu.be/bPOOvyVpI9U
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.1;
import "./Proxiable.sol";
contract MyContract is Proxiable {
address public owner;
uint public count;
@shobhitic
shobhitic / NFTDutchAuction.sol
Last active November 15, 2022 01:36
NFT sales through Dutch Auction - https://www.youtube.com/watch?v=iUuAdO7Lf5w
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "@openzeppelin/contracts@4.6.0/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts@4.6.0/access/Ownable.sol";
import "@openzeppelin/contracts@4.6.0/utils/Counters.sol";
contract MyToken is ERC721, Ownable {
using Counters for Counters.Counter;
// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.9.0;
contract Auction {
uint256 public immutable startPrice = 5 ether;
uint256 public immutable startAt;
uint256 public immutable endsAt;
uint256 public immutable endPrice = 2 ether;
uint256 public immutable discountRate = 0.01 ether;
address public donor;
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Secret Area</title>
<script src="https://cdn.jsdelivr.net/npm/web3@latest/dist/web3.min.js"></script>
</head>
<body>
<p>Wallet Address - <span id="wallet-address"></span></p>
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
contract MyNFT is ERC721, Ownable {
using Counters for Counters.Counter;