├── README.md
├── NFT
├── public
│ ├── logo.png
│ ├── robots.txt
│ ├── manifest.json
│ └── index.html
├── artifacts
│ ├── contracts
│ │ └── NftMinter.sol
│ │ │ ├── NFTMinter.dbg.json
│ │ │ └── NFTMinter.json
│ └── @openzeppelin
│ │ └── contracts
│ │ ├── utils
│ │ ├── Address.sol
│ │ │ ├── Address.dbg.json
│ │ │ └── Address.json
│ │ ├── Context.sol
│ │ │ ├── Context.dbg.json
│ │ │ └── Context.json
│ │ ├── Strings.sol
│ │ │ ├── Strings.dbg.json
│ │ │ └── Strings.json
│ │ ├── Counters.sol
│ │ │ ├── Counters.dbg.json
│ │ │ └── Counters.json
│ │ ├── math
│ │ │ └── Math.sol
│ │ │ │ ├── Math.dbg.json
│ │ │ │ └── Math.json
│ │ └── introspection
│ │ │ ├── ERC165.sol
│ │ │ ├── ERC165.dbg.json
│ │ │ └── ERC165.json
│ │ │ └── IERC165.sol
│ │ │ ├── IERC165.dbg.json
│ │ │ └── IERC165.json
│ │ └── token
│ │ └── ERC721
│ │ ├── ERC721.sol
│ │ ├── ERC721.dbg.json
│ │ └── ERC721.json
│ │ ├── IERC721.sol
│ │ ├── IERC721.dbg.json
│ │ └── IERC721.json
│ │ ├── IERC721Receiver.sol
│ │ ├── IERC721Receiver.dbg.json
│ │ └── IERC721Receiver.json
│ │ └── extensions
│ │ ├── ERC721URIStorage.sol
│ │ ├── ERC721URIStorage.dbg.json
│ │ └── ERC721URIStorage.json
│ │ └── IERC721Metadata.sol
│ │ ├── IERC721Metadata.dbg.json
│ │ └── IERC721Metadata.json
├── src
│ ├── setupTests.js
│ ├── App.test.js
│ ├── index.css
│ ├── reportWebVitals.js
│ ├── App.js
│ ├── index.js
│ ├── theme.js
│ ├── App.css
│ ├── connectWallet.js
│ ├── ipfsUploader.js
│ ├── logo.svg
│ ├── MintNFT.js
│ └── Nft-Minter.json
├── webpack.config.js
├── scripts
│ └── deploy.js
├── hardhat.config.js
├── package.json
├── contracts
│ └── NftMinter.sol
├── test
│ └── NFTMinter.test.js
└── cache
│ └── solidity-files-cache.json
├── Voting Dapp
├── public
│ ├── robots.txt
│ ├── favicon.ico
│ ├── logo192.png
│ ├── logo512.png
│ ├── manifest.json
│ └── index.html
├── src
│ ├── setupTests.js
│ ├── App.test.js
│ ├── Components
│ │ ├── Finished.jsx
│ │ ├── Login.jsx
│ │ └── Connected.jsx
│ ├── index.css
│ ├── reportWebVitals.js
│ ├── index.js
│ ├── App.css
│ ├── logo.svg
│ ├── Constant
│ │ └── constant.js
│ └── App.js
├── scripts
│ └── deploy.js
├── hardhat.config.js
├── package.json
├── contracts
│ └── Voting.sol
└── test
│ └── Lock.js
└── ERC 20
└── ERC-20.sol
/README.md:
--------------------------------------------------------------------------------
1 | # NFT-Minting-DApp
2 |
--------------------------------------------------------------------------------
/NFT/public/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dainik10/NFT-Minting-DApp/HEAD/NFT/public/logo.png
--------------------------------------------------------------------------------
/NFT/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/Voting Dapp/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/Voting Dapp/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dainik10/NFT-Minting-DApp/HEAD/Voting Dapp/public/favicon.ico
--------------------------------------------------------------------------------
/Voting Dapp/public/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dainik10/NFT-Minting-DApp/HEAD/Voting Dapp/public/logo192.png
--------------------------------------------------------------------------------
/Voting Dapp/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dainik10/NFT-Minting-DApp/HEAD/Voting Dapp/public/logo512.png
--------------------------------------------------------------------------------
/NFT/artifacts/contracts/NftMinter.sol/NFTMinter.dbg.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-dbg-1",
3 | "buildInfo": "..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json"
4 | }
5 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-dbg-1",
3 | "buildInfo": "..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json"
4 | }
5 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-dbg-1",
3 | "buildInfo": "..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json"
4 | }
5 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-dbg-1",
3 | "buildInfo": "..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json"
4 | }
5 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.dbg.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-dbg-1",
3 | "buildInfo": "..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json"
4 | }
5 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-dbg-1",
3 | "buildInfo": "..\\..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json"
4 | }
5 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.dbg.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-dbg-1",
3 | "buildInfo": "..\\..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json"
4 | }
5 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.dbg.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-dbg-1",
3 | "buildInfo": "..\\..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json"
4 | }
5 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-dbg-1",
3 | "buildInfo": "..\\..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json"
4 | }
5 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-dbg-1",
3 | "buildInfo": "..\\..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json"
4 | }
5 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-dbg-1",
3 | "buildInfo": "..\\..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json"
4 | }
5 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol/ERC721URIStorage.dbg.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-dbg-1",
3 | "buildInfo": "..\\..\\..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json"
4 | }
5 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.dbg.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-dbg-1",
3 | "buildInfo": "..\\..\\..\\..\\..\\..\\build-info\\5a7249e53173cb9398cbc2c02dd1df03.json"
4 | }
5 |
--------------------------------------------------------------------------------
/NFT/src/setupTests.js:
--------------------------------------------------------------------------------
1 | // jest-dom adds custom jest matchers for asserting on DOM nodes.
2 | // allows you to do things like:
3 | // expect(element).toHaveTextContent(/react/i)
4 | // learn more: https://github.com/testing-library/jest-dom
5 | import '@testing-library/jest-dom';
6 |
--------------------------------------------------------------------------------
/Voting Dapp/src/setupTests.js:
--------------------------------------------------------------------------------
1 | // jest-dom adds custom jest matchers for asserting on DOM nodes.
2 | // allows you to do things like:
3 | // expect(element).toHaveTextContent(/react/i)
4 | // learn more: https://github.com/testing-library/jest-dom
5 | import '@testing-library/jest-dom';
6 |
--------------------------------------------------------------------------------
/NFT/src/App.test.js:
--------------------------------------------------------------------------------
1 | import { render, screen } from '@testing-library/react';
2 | import App from './App';
3 |
4 | test('renders learn react link', () => {
5 | render();
6 | const linkElement = screen.getByText(/learn react/i);
7 | expect(linkElement).toBeInTheDocument();
8 | });
9 |
--------------------------------------------------------------------------------
/Voting Dapp/src/App.test.js:
--------------------------------------------------------------------------------
1 | import { render, screen } from '@testing-library/react';
2 | import App from './App';
3 |
4 | test('renders learn react link', () => {
5 | render();
6 | const linkElement = screen.getByText(/learn react/i);
7 | expect(linkElement).toBeInTheDocument();
8 | });
9 |
--------------------------------------------------------------------------------
/Voting Dapp/src/Components/Finished.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const Finished = (props) => {
4 | return (
5 |
6 |
Voting is Finished
7 |
8 | );
9 | };
10 |
11 | export default Finished;
12 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-artifact-1",
3 | "contractName": "Context",
4 | "sourceName": "@openzeppelin/contracts/utils/Context.sol",
5 | "abi": [],
6 | "bytecode": "0x",
7 | "deployedBytecode": "0x",
8 | "linkReferences": {},
9 | "deployedLinkReferences": {}
10 | }
11 |
--------------------------------------------------------------------------------
/Voting Dapp/src/Components/Login.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const Login = (props) => {
4 | return (
5 |
6 |
Welcome to decentralized voting application
7 |
8 |
9 | )
10 | }
11 |
12 | export default Login;
--------------------------------------------------------------------------------
/NFT/src/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
4 | "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
5 | sans-serif;
6 | -webkit-font-smoothing: antialiased;
7 | -moz-osx-font-smoothing: grayscale;
8 | }
9 |
10 | code {
11 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
12 | monospace;
13 | }
14 |
--------------------------------------------------------------------------------
/NFT/src/reportWebVitals.js:
--------------------------------------------------------------------------------
1 | const reportWebVitals = onPerfEntry => {
2 | if (onPerfEntry && onPerfEntry instanceof Function) {
3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
4 | getCLS(onPerfEntry);
5 | getFID(onPerfEntry);
6 | getFCP(onPerfEntry);
7 | getLCP(onPerfEntry);
8 | getTTFB(onPerfEntry);
9 | });
10 | }
11 | };
12 |
13 | export default reportWebVitals;
14 |
--------------------------------------------------------------------------------
/Voting Dapp/src/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
5 | sans-serif;
6 | -webkit-font-smoothing: antialiased;
7 | -moz-osx-font-smoothing: grayscale;
8 | }
9 |
10 | code {
11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
12 | monospace;
13 | }
14 |
--------------------------------------------------------------------------------
/Voting Dapp/src/reportWebVitals.js:
--------------------------------------------------------------------------------
1 | const reportWebVitals = onPerfEntry => {
2 | if (onPerfEntry && onPerfEntry instanceof Function) {
3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
4 | getCLS(onPerfEntry);
5 | getFID(onPerfEntry);
6 | getFCP(onPerfEntry);
7 | getLCP(onPerfEntry);
8 | getTTFB(onPerfEntry);
9 | });
10 | }
11 | };
12 |
13 | export default reportWebVitals;
14 |
--------------------------------------------------------------------------------
/NFT/src/App.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import MintNFT from "./MintNFT";
3 | import theme from "./theme";
4 | import CssBaseline from "@mui/material/CssBaseline";
5 | import { ThemeProvider } from "@mui/material/styles";
6 | import "./App.css";
7 |
8 | function App() {
9 | return (
10 |
11 |
12 |
13 |
14 | );
15 | }
16 |
17 | export default App;
18 |
--------------------------------------------------------------------------------
/NFT/webpack.config.js:
--------------------------------------------------------------------------------
1 | const path = require("path");
2 | const Dotenv = require("dotenv-webpack");
3 |
4 | module.exports = {
5 | entry: "./src/index.js", // Replace with the entry point of your application
6 | output: {
7 | path: path.resolve(__dirname, "dist"), // Replace with the output directory for your bundled files
8 | filename: "bundle.js", // Replace with the desired name for the bundled file
9 | },
10 | plugins: [new Dotenv()],
11 | // Add other Webpack configurations as needed
12 | };
13 |
--------------------------------------------------------------------------------
/Voting Dapp/scripts/deploy.js:
--------------------------------------------------------------------------------
1 | const { ethers } = require("hardhat");
2 |
3 | async function main() {
4 | const Voting = await ethers.getContractFactory("Voting");
5 |
6 | // Start deployment, returning a promise that resolves to a contract object
7 | const Voting_ = await Voting.deploy(
8 | ["Sam", "Lovneesh", "Greg", "Nishchal | Shardeum"],
9 | 180
10 | );
11 | console.log("Contract address:", Voting_.address);
12 | }
13 |
14 | main()
15 | .then(() => process.exit(0))
16 | .catch((error) => {
17 | console.error(error);
18 | process.exit(1);
19 | });
20 |
--------------------------------------------------------------------------------
/NFT/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom/client';
3 | import './index.css';
4 | import App from './App';
5 | import reportWebVitals from './reportWebVitals';
6 |
7 | const root = ReactDOM.createRoot(document.getElementById('root'));
8 | root.render(
9 |
10 |
11 |
12 | );
13 |
14 | // If you want to start measuring performance in your app, pass a function
15 | // to log results (for example: reportWebVitals(console.log))
16 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
17 | reportWebVitals();
18 |
--------------------------------------------------------------------------------
/Voting Dapp/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom/client';
3 | import './index.css';
4 | import App from './App';
5 | import reportWebVitals from './reportWebVitals';
6 |
7 | const root = ReactDOM.createRoot(document.getElementById('root'));
8 | root.render(
9 |
10 |
11 |
12 | );
13 |
14 | // If you want to start measuring performance in your app, pass a function
15 | // to log results (for example: reportWebVitals(console.log))
16 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
17 | reportWebVitals();
18 |
--------------------------------------------------------------------------------
/NFT/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | },
10 | {
11 | "src": "logo192.png",
12 | "type": "image/png",
13 | "sizes": "192x192"
14 | },
15 | {
16 | "src": "logo512.png",
17 | "type": "image/png",
18 | "sizes": "512x512"
19 | }
20 | ],
21 | "start_url": ".",
22 | "display": "standalone",
23 | "theme_color": "#000000",
24 | "background_color": "#ffffff"
25 | }
26 |
--------------------------------------------------------------------------------
/Voting Dapp/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | },
10 | {
11 | "src": "logo192.png",
12 | "type": "image/png",
13 | "sizes": "192x192"
14 | },
15 | {
16 | "src": "logo512.png",
17 | "type": "image/png",
18 | "sizes": "512x512"
19 | }
20 | ],
21 | "start_url": ".",
22 | "display": "standalone",
23 | "theme_color": "#000000",
24 | "background_color": "#ffffff"
25 | }
26 |
--------------------------------------------------------------------------------
/ERC 20/ERC-20.sol:
--------------------------------------------------------------------------------
1 | //SPDX-License-Identifier: MIT
2 | pragma solidity ^0.8.17;
3 |
4 | import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol";
5 |
6 | contract ShardeumERC20Token is ERC20 {
7 | constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol){
8 | _mint(msg.sender, 10000 * 10 ** 18);
9 |
10 | }
11 |
12 | function mint(uint256 _amount) public{
13 | _mint(msg.sender, _amount);
14 | }
15 |
16 | function burn(uint256 _amount) public {
17 | require(balanceOf(msg.sender) >= _amount, "Cannot burn more tokens than your balance!");
18 | _burn(msg.sender, _amount);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-artifact-1",
3 | "contractName": "Address",
4 | "sourceName": "@openzeppelin/contracts/utils/Address.sol",
5 | "abi": [],
6 | "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220289951791995b8e449c901c4b4c2bf03ac7d11a0e0a78d1677050f81215cd7de64736f6c63430008110033",
7 | "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220289951791995b8e449c901c4b4c2bf03ac7d11a0e0a78d1677050f81215cd7de64736f6c63430008110033",
8 | "linkReferences": {},
9 | "deployedLinkReferences": {}
10 | }
11 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-artifact-1",
3 | "contractName": "Strings",
4 | "sourceName": "@openzeppelin/contracts/utils/Strings.sol",
5 | "abi": [],
6 | "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bae0126c0f7bb817d0dc49cdfb342cdb8915c73987f523e01b6dccf5af7e146764736f6c63430008110033",
7 | "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bae0126c0f7bb817d0dc49cdfb342cdb8915c73987f523e01b6dccf5af7e146764736f6c63430008110033",
8 | "linkReferences": {},
9 | "deployedLinkReferences": {}
10 | }
11 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-artifact-1",
3 | "contractName": "Math",
4 | "sourceName": "@openzeppelin/contracts/utils/math/Math.sol",
5 | "abi": [],
6 | "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f9b3ebee196cdd7f9d21d5f1b8a981de67d22bfef6e027fce9b5e3fa80a93b7264736f6c63430008110033",
7 | "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f9b3ebee196cdd7f9d21d5f1b8a981de67d22bfef6e027fce9b5e3fa80a93b7264736f6c63430008110033",
8 | "linkReferences": {},
9 | "deployedLinkReferences": {}
10 | }
11 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/utils/Counters.sol/Counters.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-artifact-1",
3 | "contractName": "Counters",
4 | "sourceName": "@openzeppelin/contracts/utils/Counters.sol",
5 | "abi": [],
6 | "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d43d0ef1a472ecbf50bfcb77d2940a7ecaa6b0bb1bd21c66f8a7dfc9bb52b4b864736f6c63430008110033",
7 | "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d43d0ef1a472ecbf50bfcb77d2940a7ecaa6b0bb1bd21c66f8a7dfc9bb52b4b864736f6c63430008110033",
8 | "linkReferences": {},
9 | "deployedLinkReferences": {}
10 | }
11 |
--------------------------------------------------------------------------------
/NFT/src/theme.js:
--------------------------------------------------------------------------------
1 | import { createTheme } from "@mui/material/styles";
2 |
3 | const theme = createTheme({
4 | palette: {
5 | mode: "dark",
6 |
7 | primary: {
8 | main: "#ffc926",
9 | },
10 | secondary: {
11 | main: "#088ef3",
12 | },
13 | },
14 | typography: {
15 | fontFamily: "Roboto, Arial, sans-serif",
16 | h4: {
17 | fontWeight: 700,
18 | marginBottom: "16px",
19 | },
20 | h5: {
21 | fontWeight: 600,
22 | marginBottom: "12px",
23 | },
24 | h6: {
25 | fontWeight: 500,
26 | marginBottom: "8px",
27 | },
28 | subtitle1: {
29 | fontWeight: 400,
30 | marginBottom: "8px",
31 | },
32 | caption: {
33 | fontStyle: "italic",
34 | },
35 | },
36 | });
37 |
38 | export default theme;
39 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-artifact-1",
3 | "contractName": "ERC165",
4 | "sourceName": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
5 | "abi": [
6 | {
7 | "inputs": [
8 | {
9 | "internalType": "bytes4",
10 | "name": "interfaceId",
11 | "type": "bytes4"
12 | }
13 | ],
14 | "name": "supportsInterface",
15 | "outputs": [
16 | {
17 | "internalType": "bool",
18 | "name": "",
19 | "type": "bool"
20 | }
21 | ],
22 | "stateMutability": "view",
23 | "type": "function"
24 | }
25 | ],
26 | "bytecode": "0x",
27 | "deployedBytecode": "0x",
28 | "linkReferences": {},
29 | "deployedLinkReferences": {}
30 | }
31 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-artifact-1",
3 | "contractName": "IERC165",
4 | "sourceName": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
5 | "abi": [
6 | {
7 | "inputs": [
8 | {
9 | "internalType": "bytes4",
10 | "name": "interfaceId",
11 | "type": "bytes4"
12 | }
13 | ],
14 | "name": "supportsInterface",
15 | "outputs": [
16 | {
17 | "internalType": "bool",
18 | "name": "",
19 | "type": "bool"
20 | }
21 | ],
22 | "stateMutability": "view",
23 | "type": "function"
24 | }
25 | ],
26 | "bytecode": "0x",
27 | "deployedBytecode": "0x",
28 | "linkReferences": {},
29 | "deployedLinkReferences": {}
30 | }
31 |
--------------------------------------------------------------------------------
/NFT/src/App.css:
--------------------------------------------------------------------------------
1 | .App {
2 | text-align: center;
3 | min-height: 100vh;
4 | display: flex;
5 | justify-content: center;
6 | align-items: center;
7 | }
8 |
9 | .App-logo {
10 | height: 40vmin;
11 | pointer-events: none;
12 | }
13 |
14 | @media (prefers-reduced-motion: no-preference) {
15 | .App-logo {
16 | animation: App-logo-spin infinite 20s linear;
17 | }
18 | }
19 |
20 | .App-header {
21 | background-color: #282c34;
22 | min-height: 100vh;
23 | display: flex;
24 | flex-direction: column;
25 | align-items: center;
26 | justify-content: center;
27 | font-size: calc(10px + 2vmin);
28 | color: white;
29 | }
30 |
31 | .App-link {
32 | color: #61dafb;
33 | }
34 |
35 | @keyframes App-logo-spin {
36 | from {
37 | transform: rotate(0deg);
38 | }
39 | to {
40 | transform: rotate(360deg);
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/NFT/scripts/deploy.js:
--------------------------------------------------------------------------------
1 | const { ethers } = require("hardhat");
2 | // imports the ethers module from the Hardhat library,
3 |
4 | async function main() {
5 | const NFTMinter = await ethers.getContractFactory("NFTMinter");
6 | //retrieves the contract factory for the NFTMinter contract. This factory is used to create instances of the contract.
7 | const nftMinter = await NFTMinter.deploy();
8 | //deploys a new instance of the NFTMinter contract.
9 | await nftMinter.deployed();
10 | //waits for the deployment to complete and ensures that the contract is successfully deployed.
11 | console.log("NFTMinter deployed to:", nftMinter.address);
12 | }
13 | // It handles the asynchronous execution of the function and handles any errors that may occur.
14 | main()
15 | .then(() => process.exit(0))
16 | .catch((error) => {
17 | console.error(error);
18 | process.exit(1);
19 | });
20 |
--------------------------------------------------------------------------------
/NFT/src/connectWallet.js:
--------------------------------------------------------------------------------
1 | import { ethers } from "ethers";
2 | import NFTMinter from "./Nft-Minter.json";
3 |
4 | export async function connectWallet() {
5 | await window.ethereum.request({ method: "eth_requestAccounts" });
6 | const provider = new ethers.providers.Web3Provider(window.ethereum);
7 | const signer = provider.getSigner();
8 |
9 | const contract = new ethers.Contract(
10 | "0xb1C69A6C5178ab2e64195839b390772C813Fc21A", // Paste your Deployed NFT contract address
11 | NFTMinter.abi,
12 | signer
13 | );
14 |
15 | return { signer, contract };
16 | }
17 |
18 | export async function connectMetaMask() {
19 | const { signer } = await connectWallet();
20 | const address = await signer.getAddress();
21 | const balance = await signer.getBalance();
22 | const formattedBalance = ethers.utils.formatEther(balance);
23 | return { address, formattedBalance };
24 | }
25 |
--------------------------------------------------------------------------------
/NFT/hardhat.config.js:
--------------------------------------------------------------------------------
1 | require("@nomiclabs/hardhat-waffle");
2 | require("@nomiclabs/hardhat-ethers");
3 | require("dotenv").config();
4 |
5 | const { PRIVATE_KEY } = process.env;
6 |
7 | /**
8 | * @type import('hardhat/config').HardhatUserConfig
9 | */
10 |
11 | module.exports = {
12 | defaultNetwork: "sphinx",
13 | networks: {
14 | hardhat: {},
15 | sphinx: {
16 | url: "https://dapps.shardeum.org/",
17 | chainId: 8081,
18 | accounts: [`0x${PRIVATE_KEY}`],
19 | },
20 | },
21 | solidity: {
22 | version: "0.8.17",
23 | settings: {
24 | optimizer: {
25 | enabled: true,
26 | runs: 200,
27 | },
28 | },
29 | },
30 | paths: {
31 | sources: "./contracts",
32 | tests: "./test",
33 | cache: "./cache",
34 | artifacts: "./artifacts",
35 | },
36 | mocha: {
37 | timeout: 40000,
38 | },
39 | };
40 |
--------------------------------------------------------------------------------
/Voting Dapp/hardhat.config.js:
--------------------------------------------------------------------------------
1 | require("@nomiclabs/hardhat-waffle");
2 | require("@nomiclabs/hardhat-ethers");
3 | require("dotenv").config();
4 |
5 | const { PRIVATE_KEY } = process.env;
6 |
7 | /**
8 | * @type import('hardhat/config').HardhatUserConfig
9 | */
10 |
11 | module.exports = {
12 | defaultNetwork: "sphinx",
13 | networks: {
14 | hardhat: {},
15 | sphinx: {
16 | url: "https://dapps.shardeum.org/",
17 | chainId: 8081,
18 | accounts: [`0x${PRIVATE_KEY}`],
19 | },
20 | },
21 | solidity: {
22 | version: "0.8.17",
23 | settings: {
24 | optimizer: {
25 | enabled: true,
26 | runs: 200,
27 | },
28 | },
29 | },
30 | paths: {
31 | sources: "./contracts",
32 | tests: "./test",
33 | cache: "./cache",
34 | artifacts: "./artifacts",
35 | },
36 | mocha: {
37 | timeout: 40000,
38 | },
39 | };
40 |
--------------------------------------------------------------------------------
/NFT/src/ipfsUploader.js:
--------------------------------------------------------------------------------
1 | import axios from "axios";
2 |
3 | const pinataApiKey = "760746f0cbd3be4d8855";
4 | const pinataApiSecret = "1027eff8032f808c3c70b7d468aa373c57877834bec400d140da48e7645d2ce5";
5 |
6 | const pinataApiUrl = "https://api.pinata.cloud/pinning/pinFileToIPFS";
7 |
8 | const pinataHeaders = {
9 | headers: {
10 | "Content-Type": "multipart/form-data",
11 | pinata_api_key: pinataApiKey,
12 | pinata_secret_api_key: pinataApiSecret,
13 | },
14 | };
15 |
16 | export async function uploadToIPFS(file) {
17 | const formData = new FormData();
18 | formData.append("file", file);
19 |
20 | try {
21 | const response = await axios.post(pinataApiUrl, formData, pinataHeaders);
22 | const ipfsHash = response.data.IpfsHash;
23 | return `https://gateway.pinata.cloud/ipfs/${ipfsHash}`;
24 | } catch (error) {
25 | console.error("Error uploading file to Pinata:", error);
26 | throw error;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Voting Dapp/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-app",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "@nomicfoundation/hardhat-toolbox": "^2.0.2",
7 | "@nomiclabs/hardhat-ethers": "^2.2.2",
8 | "@nomiclabs/hardhat-waffle": "^2.0.6",
9 | "@testing-library/jest-dom": "^5.16.5",
10 | "@testing-library/react": "^13.4.0",
11 | "@testing-library/user-event": "^13.5.0",
12 | "dotenv": "^16.0.3",
13 | "ethers": "^5.7.1",
14 | "hardhat": "^2.13.0",
15 | "react": "^18.2.0",
16 | "react-dom": "^18.2.0",
17 | "react-scripts": "5.0.1",
18 | "web-vitals": "^2.1.4"
19 | },
20 | "scripts": {
21 | "start": "react-scripts start",
22 | "build": "react-scripts build",
23 | "test": "react-scripts test",
24 | "eject": "react-scripts eject"
25 | },
26 | "eslintConfig": {
27 | "extends": [
28 | "react-app",
29 | "react-app/jest"
30 | ]
31 | },
32 | "browserslist": {
33 | "production": [
34 | ">0.2%",
35 | "not dead",
36 | "not op_mini all"
37 | ],
38 | "development": [
39 | "last 1 chrome version",
40 | "last 1 firefox version",
41 | "last 1 safari version"
42 | ]
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-artifact-1",
3 | "contractName": "IERC721Receiver",
4 | "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol",
5 | "abi": [
6 | {
7 | "inputs": [
8 | {
9 | "internalType": "address",
10 | "name": "operator",
11 | "type": "address"
12 | },
13 | {
14 | "internalType": "address",
15 | "name": "from",
16 | "type": "address"
17 | },
18 | {
19 | "internalType": "uint256",
20 | "name": "tokenId",
21 | "type": "uint256"
22 | },
23 | {
24 | "internalType": "bytes",
25 | "name": "data",
26 | "type": "bytes"
27 | }
28 | ],
29 | "name": "onERC721Received",
30 | "outputs": [
31 | {
32 | "internalType": "bytes4",
33 | "name": "",
34 | "type": "bytes4"
35 | }
36 | ],
37 | "stateMutability": "nonpayable",
38 | "type": "function"
39 | }
40 | ],
41 | "bytecode": "0x",
42 | "deployedBytecode": "0x",
43 | "linkReferences": {},
44 | "deployedLinkReferences": {}
45 | }
46 |
--------------------------------------------------------------------------------
/NFT/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nft-minter-dapp",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "@emotion/react": "^11.10.6",
7 | "@emotion/styled": "^11.10.6",
8 | "@mui/material": "^5.11.16",
9 | "@nomiclabs/hardhat-ethers": "^2.2.2",
10 | "@nomiclabs/hardhat-waffle": "^2.0.5",
11 | "@openzeppelin/contracts": "^4.8.2",
12 | "@testing-library/jest-dom": "^5.16.5",
13 | "@testing-library/react": "^13.4.0",
14 | "@testing-library/user-event": "^13.5.0",
15 | "axios": "^1.3.5",
16 | "chai": "^4.3.7",
17 | "dotenv": "^16.3.1",
18 | "ethereum-waffle": "^4.0.10",
19 | "ethers": "^5.7.2",
20 | "hardhat": "^2.13.0",
21 | "ipfs-http-client": "^60.0.0",
22 | "nft.storage": "^7.1.0",
23 | "path-browserify": "^1.0.1",
24 | "react": "^18.2.0",
25 | "react-dom": "^18.2.0",
26 | "react-scripts": "5.0.1",
27 | "web-vitals": "^2.1.4"
28 | },
29 | "scripts": {
30 | "start": "react-scripts start",
31 | "build": "react-scripts build",
32 | "test": "react-scripts test",
33 | "eject": "react-scripts eject"
34 | },
35 | "eslintConfig": {
36 | "extends": [
37 | "react-app",
38 | "react-app/jest"
39 | ]
40 | },
41 | "browserslist": {
42 | "production": [
43 | ">0.2%",
44 | "not dead",
45 | "not op_mini all"
46 | ],
47 | "development": [
48 | "last 1 chrome version",
49 | "last 1 firefox version",
50 | "last 1 safari version"
51 | ]
52 | },
53 | "devDependencies": {
54 | "dotenv-webpack": "^8.0.1"
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/NFT/contracts/NftMinter.sol:
--------------------------------------------------------------------------------
1 | pragma solidity ^0.8.3;
2 | //Version of Solidity that the contract is written in
3 |
4 | import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
5 | //The ERC721.sol file contains the implementation of the ERC721 standard, which is used for non-fungible tokens (NFTs).
6 | import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
7 | //It adds functionality for storing and retrieving token metadata URIs.
8 | import "@openzeppelin/contracts/utils/Counters.sol";
9 |
10 | contract NFTMinter is ERC721URIStorage{
11 | //This line defines a new contract called NFTMinter
12 | using Counters for Counters.Counter;
13 | //Counters library to create a counter variable called _tokenIds
14 | Counters.Counter private _tokenIds;
15 |
16 | constructor() ERC721("Shardeum Dev NFTMinter", "SNFT") {}
17 | //constructor function of the NFTMinter contract. It is executed only once when the contract is deployed.
18 |
19 | function mintNFT(address recipient, string memory tokenURI) public returns (uint256) {
20 | // recipient, which is the address that will receive the NFT, and tokenURI, which is the URI of the NFT's metadata.
21 |
22 | _tokenIds.increment();
23 | //increments the _tokenIds counter, generating a new ID for the NFT.
24 | uint256 newItemId = _tokenIds.current();
25 | //mints a new NFT and assigns it to the recipient address with the newItemId
26 | _mint(recipient, newItemId);
27 | _setTokenURI(newItemId, tokenURI);
28 | //sets the tokenURI of the newly minted NFT.
29 | return newItemId;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/NFT/test/NFTMinter.test.js:
--------------------------------------------------------------------------------
1 | const { expect } = require("chai");
2 | const { ethers } = require("hardhat");
3 |
4 | describe("NFTMinter", function () {
5 | let NFTMinter, nftMinter, owner, addr1;
6 |
7 | beforeEach(async () => {
8 | NFTMinter = await ethers.getContractFactory("NFTMinter");
9 | nftMinter = await NFTMinter.deploy();
10 | await nftMinter.deployed();
11 |
12 | [owner, addr1] = await ethers.getSigners();
13 | });
14 |
15 | describe("Deployment", function () {
16 | it("Should set the right owner", async function () {
17 | expect(await nftMinter.owner()).to.equal(owner.address);
18 | });
19 |
20 | it("Should have a total supply of zero initially", async function () {
21 | expect(await nftMinter.totalSupply()).to.equal(0);
22 | });
23 | });
24 |
25 | // describe("Minting NFTs", function () {
26 | // it("Should mint a new NFT", async function () {
27 | // const tokenURI = "ipfs://ipfs/Qmabcdefgh";
28 | // await nftMinter.mintNFT(addr1.address, tokenURI);
29 | // expect(await nftMinter.tokenURI(1)).to.equal(tokenURI);
30 | // });
31 |
32 | // it("Should assign the NFT to the correct address", async function () {
33 | // const tokenURI = "ipfs://ipfs/Qmabcdefgh";
34 | // await nftMinter.mintNFT(addr1.address, tokenURI);
35 | // expect(await nftMinter.ownerOf(1)).to.equal(addr1.address);
36 | // });
37 |
38 | // it("Should update the total supply after minting", async function () {
39 | // const tokenURI = "ipfs://ipfs/Qmabcdefgh";
40 | // await nftMinter.mintNFT(addr1.address, tokenURI);
41 | // expect(await nftMinter.totalSupply()).to.equal(1);
42 | // });
43 | // });
44 | });
45 |
--------------------------------------------------------------------------------
/Voting Dapp/src/Components/Connected.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const Connected = (props) => {
4 | return (
5 |
6 |
You are Connected to Metamask
7 |
Metamask Account: {props.account}
8 |
Remaining Time: {props.remainingTime}
9 | { props.showButton ? (
10 |
You have already voted
11 | ) : (
12 |
13 |
14 |
15 |
16 |
17 |
18 | )}
19 |
20 |
21 |
22 |
23 | | Index |
24 | Candidate name |
25 | Candidate votes |
26 |
27 |
28 |
29 | {props.candidates.map((candidate, index) => (
30 |
31 | | {candidate.index} |
32 | {candidate.name} |
33 | {candidate.voteCount} |
34 |
35 | ))}
36 |
37 |
38 |
39 |
40 | )
41 | }
42 |
43 | export default Connected;
--------------------------------------------------------------------------------
/NFT/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
12 |
13 |
17 |
18 |
27 | Dainik NFT Minter
28 |
29 |
30 |
31 |
32 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/Voting Dapp/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
12 |
13 |
17 |
18 |
27 | React App
28 |
29 |
30 |
31 |
32 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/Voting Dapp/contracts/Voting.sol:
--------------------------------------------------------------------------------
1 | // SPDX-License-Identifier: MIT
2 | pragma solidity ^0.8.0;
3 |
4 | contract Voting {
5 | struct Candidate {
6 | string name;
7 | uint256 voteCount;
8 | }
9 |
10 | Candidate[] public candidates;
11 | address owner;
12 | mapping(address => bool) public voters;
13 |
14 | uint256 public votingStart;
15 | uint256 public votingEnd;
16 |
17 | constructor(string[] memory _candidateNames, uint256 _durationInMinutes) {
18 | for (uint256 i = 0; i < _candidateNames.length; i++) {
19 | candidates.push(Candidate({
20 | name: _candidateNames[i],
21 | voteCount: 0
22 | }));
23 | }
24 | owner = msg.sender;
25 | votingStart = block.timestamp;
26 | votingEnd = block.timestamp + (_durationInMinutes * 1 minutes);
27 | }
28 |
29 | modifier onlyOwner {
30 | require(msg.sender == owner);
31 | _;
32 | }
33 |
34 | function addCandidate(string memory _name) public onlyOwner {
35 | candidates.push(Candidate({
36 | name: _name,
37 | voteCount: 0
38 | }));
39 | }
40 |
41 | function vote(uint256 _candidateIndex) public {
42 | require(!voters[msg.sender], "You have already voted.");
43 | require(_candidateIndex < candidates.length, "Invalid candidate index.");
44 |
45 | candidates[_candidateIndex].voteCount++;
46 | voters[msg.sender] = true;
47 | }
48 |
49 | function getAllVotesOfCandiates() public view returns (Candidate[] memory){
50 | return candidates;
51 | }
52 |
53 | function getVotingStatus() public view returns (bool) {
54 | return (block.timestamp >= votingStart && block.timestamp < votingEnd);
55 | }
56 |
57 | function getRemainingTime() public view returns (uint256) {
58 | require(block.timestamp >= votingStart, "Voting has not started yet.");
59 | if (block.timestamp >= votingEnd) {
60 | return 0;
61 | }
62 | return votingEnd - block.timestamp;
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/Voting Dapp/src/App.css:
--------------------------------------------------------------------------------
1 | .login-container {
2 | display: flex;
3 | flex-direction: column;
4 | align-items: center;
5 | justify-content: center;
6 | height: 100vh;
7 | background-color: #f1f1f1;
8 | }
9 |
10 | .welcome-message {
11 | font-size: 2rem;
12 | text-align: center;
13 | margin-bottom: 2rem;
14 | }
15 |
16 | .login-button {
17 | background-color: #007bff;
18 | color: #fff;
19 | font-size: 1.2rem;
20 | border: none;
21 | border-radius: 0.3rem;
22 | padding: 1rem 2rem;
23 | cursor: pointer;
24 | transition: background-color 0.3s ease;
25 | }
26 |
27 | .login-button:hover {
28 | background-color: #0069d9;
29 | }
30 |
31 |
32 | .connected-container {
33 | display: flex;
34 | flex-direction: column;
35 | align-items: center;
36 | justify-content: center;
37 | height: 100vh;
38 | background-color: #f1f1f1;
39 | }
40 |
41 | .connected-header {
42 | font-size: 2rem;
43 | text-align: center;
44 | margin-bottom: 2rem;
45 | }
46 |
47 | .connected-account {
48 | font-size: 1.2rem;
49 | text-align: center;
50 | margin-bottom: 2rem;
51 | }
52 |
53 | .connected-button {
54 | background-color: #007bff;
55 | color: #fff;
56 | font-size: 1.2rem;
57 | border: none;
58 | border-radius: 0.3rem;
59 | padding: 1rem 2rem;
60 | cursor: pointer;
61 | transition: background-color 0.3s ease;
62 | margin-bottom: 2rem;
63 | }
64 |
65 | .connected-button:hover {
66 | background-color: #0069d9;
67 | }
68 |
69 | .connected-contract-address {
70 | font-size: 1.2rem;
71 | text-align: center;
72 | }
73 |
74 |
75 | .candidates-table {
76 | border-collapse: collapse;
77 | width: 50%;
78 | text-align:center;
79 | }
80 |
81 | .candidates-table th, .candidates-table td {
82 | padding: 8px;
83 | text-align: left;
84 | border-bottom: 1px solid #ddd;
85 | }
86 |
87 | .candidates-table th {
88 | background-color: #f2f2f2;
89 | }
90 |
91 | input[type=number] {
92 | padding: 10px;
93 | border: 1px solid #ccc;
94 | border-radius: 4px;
95 | box-sizing: border-box;
96 | font-size: 16px;
97 | margin-bottom: 10px;
98 | }
99 |
100 |
--------------------------------------------------------------------------------
/NFT/src/logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Voting Dapp/src/logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Voting Dapp/src/Constant/constant.js:
--------------------------------------------------------------------------------
1 | const contractAddress = "0x1de8a1838E3b8d8eA2fcE0D776E22D5f2DCFA988";
2 |
3 | const contractAbi = [
4 | {
5 | inputs: [
6 | {
7 | internalType: "string[]",
8 | name: "_candidateNames",
9 | type: "string[]",
10 | },
11 | {
12 | internalType: "uint256",
13 | name: "_durationInMinutes",
14 | type: "uint256",
15 | },
16 | ],
17 | stateMutability: "nonpayable",
18 | type: "constructor",
19 | },
20 | {
21 | inputs: [
22 | {
23 | internalType: "string",
24 | name: "_name",
25 | type: "string",
26 | },
27 | ],
28 | name: "addCandidate",
29 | outputs: [],
30 | stateMutability: "nonpayable",
31 | type: "function",
32 | },
33 | {
34 | inputs: [
35 | {
36 | internalType: "uint256",
37 | name: "",
38 | type: "uint256",
39 | },
40 | ],
41 | name: "candidates",
42 | outputs: [
43 | {
44 | internalType: "string",
45 | name: "name",
46 | type: "string",
47 | },
48 | {
49 | internalType: "uint256",
50 | name: "voteCount",
51 | type: "uint256",
52 | },
53 | ],
54 | stateMutability: "view",
55 | type: "function",
56 | },
57 | {
58 | inputs: [],
59 | name: "getAllVotesOfCandiates",
60 | outputs: [
61 | {
62 | components: [
63 | {
64 | internalType: "string",
65 | name: "name",
66 | type: "string",
67 | },
68 | {
69 | internalType: "uint256",
70 | name: "voteCount",
71 | type: "uint256",
72 | },
73 | ],
74 | internalType: "struct Voting.Candidate[]",
75 | name: "",
76 | type: "tuple[]",
77 | },
78 | ],
79 | stateMutability: "view",
80 | type: "function",
81 | },
82 | {
83 | inputs: [],
84 | name: "getRemainingTime",
85 | outputs: [
86 | {
87 | internalType: "uint256",
88 | name: "",
89 | type: "uint256",
90 | },
91 | ],
92 | stateMutability: "view",
93 | type: "function",
94 | },
95 | {
96 | inputs: [],
97 | name: "getVotingStatus",
98 | outputs: [
99 | {
100 | internalType: "bool",
101 | name: "",
102 | type: "bool",
103 | },
104 | ],
105 | stateMutability: "view",
106 | type: "function",
107 | },
108 | {
109 | inputs: [
110 | {
111 | internalType: "uint256",
112 | name: "_candidateIndex",
113 | type: "uint256",
114 | },
115 | ],
116 | name: "vote",
117 | outputs: [],
118 | stateMutability: "nonpayable",
119 | type: "function",
120 | },
121 | {
122 | inputs: [
123 | {
124 | internalType: "address",
125 | name: "",
126 | type: "address",
127 | },
128 | ],
129 | name: "voters",
130 | outputs: [
131 | {
132 | internalType: "bool",
133 | name: "",
134 | type: "bool",
135 | },
136 | ],
137 | stateMutability: "view",
138 | type: "function",
139 | },
140 | {
141 | inputs: [],
142 | name: "votingEnd",
143 | outputs: [
144 | {
145 | internalType: "uint256",
146 | name: "",
147 | type: "uint256",
148 | },
149 | ],
150 | stateMutability: "view",
151 | type: "function",
152 | },
153 | {
154 | inputs: [],
155 | name: "votingStart",
156 | outputs: [
157 | {
158 | internalType: "uint256",
159 | name: "",
160 | type: "uint256",
161 | },
162 | ],
163 | stateMutability: "view",
164 | type: "function",
165 | },
166 | ];
167 |
168 | export { contractAbi, contractAddress };
169 |
--------------------------------------------------------------------------------
/Voting Dapp/test/Lock.js:
--------------------------------------------------------------------------------
1 | const {
2 | time,
3 | loadFixture,
4 | } = require("@nomicfoundation/hardhat-network-helpers");
5 | const { anyValue } = require("@nomicfoundation/hardhat-chai-matchers/withArgs");
6 | const { expect } = require("chai");
7 |
8 | describe("Lock", function () {
9 | // We define a fixture to reuse the same setup in every test.
10 | // We use loadFixture to run this setup once, snapshot that state,
11 | // and reset Hardhat Network to that snapshot in every test.
12 | async function deployOneYearLockFixture() {
13 | const ONE_YEAR_IN_SECS = 365 * 24 * 60 * 60;
14 | const ONE_GWEI = 1_000_000_000;
15 |
16 | const lockedAmount = ONE_GWEI;
17 | const unlockTime = (await time.latest()) + ONE_YEAR_IN_SECS;
18 |
19 | // Contracts are deployed using the first signer/account by default
20 | const [owner, otherAccount] = await ethers.getSigners();
21 |
22 | const Lock = await ethers.getContractFactory("Lock");
23 | const lock = await Lock.deploy(unlockTime, { value: lockedAmount });
24 |
25 | return { lock, unlockTime, lockedAmount, owner, otherAccount };
26 | }
27 |
28 | describe("Deployment", function () {
29 | it("Should set the right unlockTime", async function () {
30 | const { lock, unlockTime } = await loadFixture(deployOneYearLockFixture);
31 |
32 | expect(await lock.unlockTime()).to.equal(unlockTime);
33 | });
34 |
35 | it("Should set the right owner", async function () {
36 | const { lock, owner } = await loadFixture(deployOneYearLockFixture);
37 |
38 | expect(await lock.owner()).to.equal(owner.address);
39 | });
40 |
41 | it("Should receive and store the funds to lock", async function () {
42 | const { lock, lockedAmount } = await loadFixture(
43 | deployOneYearLockFixture
44 | );
45 |
46 | expect(await ethers.provider.getBalance(lock.address)).to.equal(
47 | lockedAmount
48 | );
49 | });
50 |
51 | it("Should fail if the unlockTime is not in the future", async function () {
52 | // We don't use the fixture here because we want a different deployment
53 | const latestTime = await time.latest();
54 | const Lock = await ethers.getContractFactory("Lock");
55 | await expect(Lock.deploy(latestTime, { value: 1 })).to.be.revertedWith(
56 | "Unlock time should be in the future"
57 | );
58 | });
59 | });
60 |
61 | describe("Withdrawals", function () {
62 | describe("Validations", function () {
63 | it("Should revert with the right error if called too soon", async function () {
64 | const { lock } = await loadFixture(deployOneYearLockFixture);
65 |
66 | await expect(lock.withdraw()).to.be.revertedWith(
67 | "You can't withdraw yet"
68 | );
69 | });
70 |
71 | it("Should revert with the right error if called from another account", async function () {
72 | const { lock, unlockTime, otherAccount } = await loadFixture(
73 | deployOneYearLockFixture
74 | );
75 |
76 | // We can increase the time in Hardhat Network
77 | await time.increaseTo(unlockTime);
78 |
79 | // We use lock.connect() to send a transaction from another account
80 | await expect(lock.connect(otherAccount).withdraw()).to.be.revertedWith(
81 | "You aren't the owner"
82 | );
83 | });
84 |
85 | it("Shouldn't fail if the unlockTime has arrived and the owner calls it", async function () {
86 | const { lock, unlockTime } = await loadFixture(
87 | deployOneYearLockFixture
88 | );
89 |
90 | // Transactions are sent using the first signer by default
91 | await time.increaseTo(unlockTime);
92 |
93 | await expect(lock.withdraw()).not.to.be.reverted;
94 | });
95 | });
96 |
97 | describe("Events", function () {
98 | it("Should emit an event on withdrawals", async function () {
99 | const { lock, unlockTime, lockedAmount } = await loadFixture(
100 | deployOneYearLockFixture
101 | );
102 |
103 | await time.increaseTo(unlockTime);
104 |
105 | await expect(lock.withdraw())
106 | .to.emit(lock, "Withdrawal")
107 | .withArgs(lockedAmount, anyValue); // We accept any value as `when` arg
108 | });
109 | });
110 |
111 | describe("Transfers", function () {
112 | it("Should transfer the funds to the owner", async function () {
113 | const { lock, unlockTime, lockedAmount, owner } = await loadFixture(
114 | deployOneYearLockFixture
115 | );
116 |
117 | await time.increaseTo(unlockTime);
118 |
119 | await expect(lock.withdraw()).to.changeEtherBalances(
120 | [owner, lock],
121 | [lockedAmount, -lockedAmount]
122 | );
123 | });
124 | });
125 | });
126 | });
127 |
--------------------------------------------------------------------------------
/Voting Dapp/src/App.js:
--------------------------------------------------------------------------------
1 | import { useState, useEffect } from "react";
2 | import { ethers } from "ethers";
3 | import { contractAbi, contractAddress } from "./Constant/constant";
4 | import Login from "./Components/Login";
5 | import Finished from "./Components/Finished";
6 | import Connected from "./Components/Connected";
7 | import "./App.css";
8 |
9 | function App() {
10 | const [provider, setProvider] = useState(null);
11 | const [account, setAccount] = useState(null);
12 | const [isConnected, setIsConnected] = useState(false);
13 | const [votingStatus, setVotingStatus] = useState(true);
14 | const [remainingTime, setremainingTime] = useState("");
15 | const [candidates, setCandidates] = useState([]);
16 | const [number, setNumber] = useState("");
17 | const [CanVote, setCanVote] = useState(true);
18 |
19 | useEffect(() => {
20 | getCandidates();
21 | getRemainingTime();
22 | getCurrentStatus();
23 | if (window.ethereum) {
24 | window.ethereum.on("accountsChanged", handleAccountsChanged);
25 | }
26 |
27 | return () => {
28 | if (window.ethereum) {
29 | window.ethereum.removeListener(
30 | "accountsChanged",
31 | handleAccountsChanged
32 | );
33 | }
34 | };
35 | });
36 |
37 | async function vote() {
38 | const provider = new ethers.providers.Web3Provider(window.ethereum);
39 | await provider.send("eth_requestAccounts", []);
40 | const signer = provider.getSigner();
41 | const contractInstance = new ethers.Contract(
42 | contractAddress,
43 | contractAbi,
44 | signer
45 | );
46 |
47 | const tx = await contractInstance.vote(number);
48 | await tx.wait();
49 | canVote();
50 | }
51 |
52 | async function canVote() {
53 | const provider = new ethers.providers.Web3Provider(window.ethereum);
54 | await provider.send("eth_requestAccounts", []);
55 | const signer = provider.getSigner();
56 | const contractInstance = new ethers.Contract(
57 | contractAddress,
58 | contractAbi,
59 | signer
60 | );
61 | const voteStatus = await contractInstance.voters(await signer.getAddress());
62 | setCanVote(voteStatus);
63 | }
64 |
65 | async function getCandidates() {
66 | const provider = new ethers.providers.Web3Provider(window.ethereum);
67 | await provider.send("eth_requestAccounts", []);
68 | const signer = provider.getSigner();
69 | const contractInstance = new ethers.Contract(
70 | contractAddress,
71 | contractAbi,
72 | signer
73 | );
74 | const candidatesList = await contractInstance.getAllVotesOfCandiates();
75 | const formattedCandidates = candidatesList.map((candidate, index) => {
76 | return {
77 | index: index,
78 | name: candidate.name,
79 | voteCount: candidate.voteCount.toNumber(),
80 | };
81 | });
82 | setCandidates(formattedCandidates);
83 | }
84 |
85 | async function getCurrentStatus() {
86 | const provider = new ethers.providers.Web3Provider(window.ethereum);
87 | await provider.send("eth_requestAccounts", []);
88 | const signer = provider.getSigner();
89 | const contractInstance = new ethers.Contract(
90 | contractAddress,
91 | contractAbi,
92 | signer
93 | );
94 | const status = await contractInstance.getVotingStatus();
95 | console.log(status);
96 | setVotingStatus(status);
97 | }
98 |
99 | async function getRemainingTime() {
100 | const provider = new ethers.providers.Web3Provider(window.ethereum);
101 | await provider.send("eth_requestAccounts", []);
102 | const signer = provider.getSigner();
103 | const contractInstance = new ethers.Contract(
104 | contractAddress,
105 | contractAbi,
106 | signer
107 | );
108 | const time = await contractInstance.getRemainingTime();
109 | setremainingTime(parseInt(time, 16));
110 | }
111 |
112 | function handleAccountsChanged(accounts) {
113 | if (accounts.length > 0 && account !== accounts[0]) {
114 | setAccount(accounts[0]);
115 | canVote();
116 | } else {
117 | setIsConnected(false);
118 | setAccount(null);
119 | }
120 | }
121 |
122 | async function connectToMetamask() {
123 | if (window.ethereum) {
124 | try {
125 | const provider = new ethers.providers.Web3Provider(window.ethereum);
126 | setProvider(provider);
127 | await provider.send("eth_requestAccounts", []);
128 | const signer = provider.getSigner();
129 | const address = await signer.getAddress();
130 | setAccount(address);
131 | console.log("Metamask Connected : " + address);
132 | setIsConnected(true);
133 | canVote();
134 | } catch (err) {
135 | console.error(err);
136 | }
137 | } else {
138 | console.error("Metamask is not detected in the browser");
139 | }
140 | }
141 |
142 | async function handleNumberChange(e) {
143 | setNumber(e.target.value);
144 | }
145 |
146 | return (
147 |
148 | {votingStatus ? (
149 | isConnected ? (
150 |
159 | ) : (
160 |
161 | )
162 | ) : (
163 |
164 | )}
165 |
166 | );
167 | }
168 |
169 | export default App;
170 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-artifact-1",
3 | "contractName": "IERC721",
4 | "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721.sol",
5 | "abi": [
6 | {
7 | "anonymous": false,
8 | "inputs": [
9 | {
10 | "indexed": true,
11 | "internalType": "address",
12 | "name": "owner",
13 | "type": "address"
14 | },
15 | {
16 | "indexed": true,
17 | "internalType": "address",
18 | "name": "approved",
19 | "type": "address"
20 | },
21 | {
22 | "indexed": true,
23 | "internalType": "uint256",
24 | "name": "tokenId",
25 | "type": "uint256"
26 | }
27 | ],
28 | "name": "Approval",
29 | "type": "event"
30 | },
31 | {
32 | "anonymous": false,
33 | "inputs": [
34 | {
35 | "indexed": true,
36 | "internalType": "address",
37 | "name": "owner",
38 | "type": "address"
39 | },
40 | {
41 | "indexed": true,
42 | "internalType": "address",
43 | "name": "operator",
44 | "type": "address"
45 | },
46 | {
47 | "indexed": false,
48 | "internalType": "bool",
49 | "name": "approved",
50 | "type": "bool"
51 | }
52 | ],
53 | "name": "ApprovalForAll",
54 | "type": "event"
55 | },
56 | {
57 | "anonymous": false,
58 | "inputs": [
59 | {
60 | "indexed": true,
61 | "internalType": "address",
62 | "name": "from",
63 | "type": "address"
64 | },
65 | {
66 | "indexed": true,
67 | "internalType": "address",
68 | "name": "to",
69 | "type": "address"
70 | },
71 | {
72 | "indexed": true,
73 | "internalType": "uint256",
74 | "name": "tokenId",
75 | "type": "uint256"
76 | }
77 | ],
78 | "name": "Transfer",
79 | "type": "event"
80 | },
81 | {
82 | "inputs": [
83 | {
84 | "internalType": "address",
85 | "name": "to",
86 | "type": "address"
87 | },
88 | {
89 | "internalType": "uint256",
90 | "name": "tokenId",
91 | "type": "uint256"
92 | }
93 | ],
94 | "name": "approve",
95 | "outputs": [],
96 | "stateMutability": "nonpayable",
97 | "type": "function"
98 | },
99 | {
100 | "inputs": [
101 | {
102 | "internalType": "address",
103 | "name": "owner",
104 | "type": "address"
105 | }
106 | ],
107 | "name": "balanceOf",
108 | "outputs": [
109 | {
110 | "internalType": "uint256",
111 | "name": "balance",
112 | "type": "uint256"
113 | }
114 | ],
115 | "stateMutability": "view",
116 | "type": "function"
117 | },
118 | {
119 | "inputs": [
120 | {
121 | "internalType": "uint256",
122 | "name": "tokenId",
123 | "type": "uint256"
124 | }
125 | ],
126 | "name": "getApproved",
127 | "outputs": [
128 | {
129 | "internalType": "address",
130 | "name": "operator",
131 | "type": "address"
132 | }
133 | ],
134 | "stateMutability": "view",
135 | "type": "function"
136 | },
137 | {
138 | "inputs": [
139 | {
140 | "internalType": "address",
141 | "name": "owner",
142 | "type": "address"
143 | },
144 | {
145 | "internalType": "address",
146 | "name": "operator",
147 | "type": "address"
148 | }
149 | ],
150 | "name": "isApprovedForAll",
151 | "outputs": [
152 | {
153 | "internalType": "bool",
154 | "name": "",
155 | "type": "bool"
156 | }
157 | ],
158 | "stateMutability": "view",
159 | "type": "function"
160 | },
161 | {
162 | "inputs": [
163 | {
164 | "internalType": "uint256",
165 | "name": "tokenId",
166 | "type": "uint256"
167 | }
168 | ],
169 | "name": "ownerOf",
170 | "outputs": [
171 | {
172 | "internalType": "address",
173 | "name": "owner",
174 | "type": "address"
175 | }
176 | ],
177 | "stateMutability": "view",
178 | "type": "function"
179 | },
180 | {
181 | "inputs": [
182 | {
183 | "internalType": "address",
184 | "name": "from",
185 | "type": "address"
186 | },
187 | {
188 | "internalType": "address",
189 | "name": "to",
190 | "type": "address"
191 | },
192 | {
193 | "internalType": "uint256",
194 | "name": "tokenId",
195 | "type": "uint256"
196 | }
197 | ],
198 | "name": "safeTransferFrom",
199 | "outputs": [],
200 | "stateMutability": "nonpayable",
201 | "type": "function"
202 | },
203 | {
204 | "inputs": [
205 | {
206 | "internalType": "address",
207 | "name": "from",
208 | "type": "address"
209 | },
210 | {
211 | "internalType": "address",
212 | "name": "to",
213 | "type": "address"
214 | },
215 | {
216 | "internalType": "uint256",
217 | "name": "tokenId",
218 | "type": "uint256"
219 | },
220 | {
221 | "internalType": "bytes",
222 | "name": "data",
223 | "type": "bytes"
224 | }
225 | ],
226 | "name": "safeTransferFrom",
227 | "outputs": [],
228 | "stateMutability": "nonpayable",
229 | "type": "function"
230 | },
231 | {
232 | "inputs": [
233 | {
234 | "internalType": "address",
235 | "name": "operator",
236 | "type": "address"
237 | },
238 | {
239 | "internalType": "bool",
240 | "name": "_approved",
241 | "type": "bool"
242 | }
243 | ],
244 | "name": "setApprovalForAll",
245 | "outputs": [],
246 | "stateMutability": "nonpayable",
247 | "type": "function"
248 | },
249 | {
250 | "inputs": [
251 | {
252 | "internalType": "bytes4",
253 | "name": "interfaceId",
254 | "type": "bytes4"
255 | }
256 | ],
257 | "name": "supportsInterface",
258 | "outputs": [
259 | {
260 | "internalType": "bool",
261 | "name": "",
262 | "type": "bool"
263 | }
264 | ],
265 | "stateMutability": "view",
266 | "type": "function"
267 | },
268 | {
269 | "inputs": [
270 | {
271 | "internalType": "address",
272 | "name": "from",
273 | "type": "address"
274 | },
275 | {
276 | "internalType": "address",
277 | "name": "to",
278 | "type": "address"
279 | },
280 | {
281 | "internalType": "uint256",
282 | "name": "tokenId",
283 | "type": "uint256"
284 | }
285 | ],
286 | "name": "transferFrom",
287 | "outputs": [],
288 | "stateMutability": "nonpayable",
289 | "type": "function"
290 | }
291 | ],
292 | "bytecode": "0x",
293 | "deployedBytecode": "0x",
294 | "linkReferences": {},
295 | "deployedLinkReferences": {}
296 | }
297 |
--------------------------------------------------------------------------------
/NFT/src/MintNFT.js:
--------------------------------------------------------------------------------
1 | import React, { useState } from "react";
2 | import { connectWallet, connectMetaMask } from "./connectWallet";
3 | import { uploadToIPFS } from "./ipfsUploader";
4 | import {
5 | TextField,
6 | Button,
7 | Typography,
8 | Container,
9 | Box,
10 | Link,
11 | Grid,
12 | Snackbar,
13 | Alert,
14 | LinearProgress,
15 | } from "@mui/material";
16 |
17 | function MintNFT() {
18 | const [name, setName] = useState("");
19 | const [description, setDescription] = useState("");
20 | const [image, setImage] = useState(null);
21 | const [status, setStatus] = useState("");
22 | const [ipfsLink, setIpfsLink] = useState("");
23 | const [imageStatus, setImageStatus] = useState("");
24 | const [alertOpen, setAlertOpen] = useState(false);
25 | const [loading, setLoading] = useState(false);
26 | const [walletAddress, setWalletAddress] = useState("");
27 | const [walletBalance, setWalletBalance] = useState("");
28 | const [imagePreviewUrl, setImagePreviewUrl] = useState(null);
29 | const [transactionHistory, setTransactionHistory] = useState([]);
30 |
31 | const handleConnectMetaMask = async () => {
32 | const { address, formattedBalance } = await connectMetaMask();
33 | setWalletAddress(address);
34 | setWalletBalance(formattedBalance);
35 | };
36 |
37 | const handleImageChange = (e) => {
38 | setImage(e.target.files[0]);
39 | setImageStatus("Image selected for upload");
40 | setImagePreviewUrl(URL.createObjectURL(e.target.files[0]));
41 | };
42 |
43 | const mint = async () => {
44 | setStatus("Uploading to IPFS...");
45 | const imageURI = await uploadToIPFS(image);
46 | setIpfsLink(imageURI);
47 |
48 | setStatus("Minting NFT...");
49 | setLoading(true);
50 | const { signer, contract } = await connectWallet();
51 | const tokenURI = `data:application/json;base64,${btoa(
52 | JSON.stringify({
53 | name,
54 | description,
55 | image: imageURI,
56 | })
57 | )}`;
58 |
59 | const transaction = await contract.mintNFT(signer.getAddress(), tokenURI);
60 | await transaction.wait();
61 |
62 | setTransactionHistory((prevHistory) => [...prevHistory, transaction.hash]);
63 |
64 | setStatus("NFT minted!");
65 | setAlertOpen(true);
66 | setLoading(false);
67 | };
68 |
69 | return (
70 |
71 |
72 |
73 | NFT Minting Dapp
74 |
75 |
76 |
77 |
78 |
79 |
91 |
92 | {walletAddress && (
93 |
94 |
95 | Wallet Address: {walletAddress}
96 |
97 |
98 | Wallet Balance: {walletBalance} SHM
99 |
100 |
101 | )}
102 | setName(e.target.value)}
108 | />
109 | setDescription(e.target.value)}
115 | />
116 |
122 |
123 |
128 | {imageStatus && (
129 |
130 | {imageStatus}
131 |
132 | )}
133 |
134 |
142 |
143 | {loading && }
144 |
145 | setAlertOpen(false)}
149 | anchorOrigin={{ vertical: "top", horizontal: "right" }}
150 | >
151 | setAlertOpen(false)}
153 | severity="success"
154 | variant="filled"
155 | sx={{ width: "100%" }}
156 | >
157 | NFT minted successfully!
158 |
159 |
160 |
161 |
162 |
177 | {imagePreviewUrl ? (
178 |
188 | ) : (
189 |
190 | Preview image will be displayed here
191 |
192 | )}
193 |
194 |
195 |
196 |
197 | {status}
198 |
199 | {ipfsLink && (
200 |
201 | IPFS Link:{" "}
202 |
203 | {ipfsLink}
204 |
205 |
206 | )}
207 |
208 |
209 |
210 |
211 | Transaction History:
212 |
213 | {transactionHistory.length > 0 ? (
214 | transactionHistory.map((hash, index) => (
215 |
216 |
221 | {`Transaction ${index + 1}: ${hash}`}
222 |
223 |
224 | ))
225 | ) : (
226 |
227 | No transactions yet.
228 |
229 | )}
230 |
231 |
232 | );
233 | }
234 |
235 | export default MintNFT;
236 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol/ERC721URIStorage.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-artifact-1",
3 | "contractName": "ERC721URIStorage",
4 | "sourceName": "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol",
5 | "abi": [
6 | {
7 | "anonymous": false,
8 | "inputs": [
9 | {
10 | "indexed": true,
11 | "internalType": "address",
12 | "name": "owner",
13 | "type": "address"
14 | },
15 | {
16 | "indexed": true,
17 | "internalType": "address",
18 | "name": "approved",
19 | "type": "address"
20 | },
21 | {
22 | "indexed": true,
23 | "internalType": "uint256",
24 | "name": "tokenId",
25 | "type": "uint256"
26 | }
27 | ],
28 | "name": "Approval",
29 | "type": "event"
30 | },
31 | {
32 | "anonymous": false,
33 | "inputs": [
34 | {
35 | "indexed": true,
36 | "internalType": "address",
37 | "name": "owner",
38 | "type": "address"
39 | },
40 | {
41 | "indexed": true,
42 | "internalType": "address",
43 | "name": "operator",
44 | "type": "address"
45 | },
46 | {
47 | "indexed": false,
48 | "internalType": "bool",
49 | "name": "approved",
50 | "type": "bool"
51 | }
52 | ],
53 | "name": "ApprovalForAll",
54 | "type": "event"
55 | },
56 | {
57 | "anonymous": false,
58 | "inputs": [
59 | {
60 | "indexed": true,
61 | "internalType": "address",
62 | "name": "from",
63 | "type": "address"
64 | },
65 | {
66 | "indexed": true,
67 | "internalType": "address",
68 | "name": "to",
69 | "type": "address"
70 | },
71 | {
72 | "indexed": true,
73 | "internalType": "uint256",
74 | "name": "tokenId",
75 | "type": "uint256"
76 | }
77 | ],
78 | "name": "Transfer",
79 | "type": "event"
80 | },
81 | {
82 | "inputs": [
83 | {
84 | "internalType": "address",
85 | "name": "to",
86 | "type": "address"
87 | },
88 | {
89 | "internalType": "uint256",
90 | "name": "tokenId",
91 | "type": "uint256"
92 | }
93 | ],
94 | "name": "approve",
95 | "outputs": [],
96 | "stateMutability": "nonpayable",
97 | "type": "function"
98 | },
99 | {
100 | "inputs": [
101 | {
102 | "internalType": "address",
103 | "name": "owner",
104 | "type": "address"
105 | }
106 | ],
107 | "name": "balanceOf",
108 | "outputs": [
109 | {
110 | "internalType": "uint256",
111 | "name": "",
112 | "type": "uint256"
113 | }
114 | ],
115 | "stateMutability": "view",
116 | "type": "function"
117 | },
118 | {
119 | "inputs": [
120 | {
121 | "internalType": "uint256",
122 | "name": "tokenId",
123 | "type": "uint256"
124 | }
125 | ],
126 | "name": "getApproved",
127 | "outputs": [
128 | {
129 | "internalType": "address",
130 | "name": "",
131 | "type": "address"
132 | }
133 | ],
134 | "stateMutability": "view",
135 | "type": "function"
136 | },
137 | {
138 | "inputs": [
139 | {
140 | "internalType": "address",
141 | "name": "owner",
142 | "type": "address"
143 | },
144 | {
145 | "internalType": "address",
146 | "name": "operator",
147 | "type": "address"
148 | }
149 | ],
150 | "name": "isApprovedForAll",
151 | "outputs": [
152 | {
153 | "internalType": "bool",
154 | "name": "",
155 | "type": "bool"
156 | }
157 | ],
158 | "stateMutability": "view",
159 | "type": "function"
160 | },
161 | {
162 | "inputs": [],
163 | "name": "name",
164 | "outputs": [
165 | {
166 | "internalType": "string",
167 | "name": "",
168 | "type": "string"
169 | }
170 | ],
171 | "stateMutability": "view",
172 | "type": "function"
173 | },
174 | {
175 | "inputs": [
176 | {
177 | "internalType": "uint256",
178 | "name": "tokenId",
179 | "type": "uint256"
180 | }
181 | ],
182 | "name": "ownerOf",
183 | "outputs": [
184 | {
185 | "internalType": "address",
186 | "name": "",
187 | "type": "address"
188 | }
189 | ],
190 | "stateMutability": "view",
191 | "type": "function"
192 | },
193 | {
194 | "inputs": [
195 | {
196 | "internalType": "address",
197 | "name": "from",
198 | "type": "address"
199 | },
200 | {
201 | "internalType": "address",
202 | "name": "to",
203 | "type": "address"
204 | },
205 | {
206 | "internalType": "uint256",
207 | "name": "tokenId",
208 | "type": "uint256"
209 | }
210 | ],
211 | "name": "safeTransferFrom",
212 | "outputs": [],
213 | "stateMutability": "nonpayable",
214 | "type": "function"
215 | },
216 | {
217 | "inputs": [
218 | {
219 | "internalType": "address",
220 | "name": "from",
221 | "type": "address"
222 | },
223 | {
224 | "internalType": "address",
225 | "name": "to",
226 | "type": "address"
227 | },
228 | {
229 | "internalType": "uint256",
230 | "name": "tokenId",
231 | "type": "uint256"
232 | },
233 | {
234 | "internalType": "bytes",
235 | "name": "data",
236 | "type": "bytes"
237 | }
238 | ],
239 | "name": "safeTransferFrom",
240 | "outputs": [],
241 | "stateMutability": "nonpayable",
242 | "type": "function"
243 | },
244 | {
245 | "inputs": [
246 | {
247 | "internalType": "address",
248 | "name": "operator",
249 | "type": "address"
250 | },
251 | {
252 | "internalType": "bool",
253 | "name": "approved",
254 | "type": "bool"
255 | }
256 | ],
257 | "name": "setApprovalForAll",
258 | "outputs": [],
259 | "stateMutability": "nonpayable",
260 | "type": "function"
261 | },
262 | {
263 | "inputs": [
264 | {
265 | "internalType": "bytes4",
266 | "name": "interfaceId",
267 | "type": "bytes4"
268 | }
269 | ],
270 | "name": "supportsInterface",
271 | "outputs": [
272 | {
273 | "internalType": "bool",
274 | "name": "",
275 | "type": "bool"
276 | }
277 | ],
278 | "stateMutability": "view",
279 | "type": "function"
280 | },
281 | {
282 | "inputs": [],
283 | "name": "symbol",
284 | "outputs": [
285 | {
286 | "internalType": "string",
287 | "name": "",
288 | "type": "string"
289 | }
290 | ],
291 | "stateMutability": "view",
292 | "type": "function"
293 | },
294 | {
295 | "inputs": [
296 | {
297 | "internalType": "uint256",
298 | "name": "tokenId",
299 | "type": "uint256"
300 | }
301 | ],
302 | "name": "tokenURI",
303 | "outputs": [
304 | {
305 | "internalType": "string",
306 | "name": "",
307 | "type": "string"
308 | }
309 | ],
310 | "stateMutability": "view",
311 | "type": "function"
312 | },
313 | {
314 | "inputs": [
315 | {
316 | "internalType": "address",
317 | "name": "from",
318 | "type": "address"
319 | },
320 | {
321 | "internalType": "address",
322 | "name": "to",
323 | "type": "address"
324 | },
325 | {
326 | "internalType": "uint256",
327 | "name": "tokenId",
328 | "type": "uint256"
329 | }
330 | ],
331 | "name": "transferFrom",
332 | "outputs": [],
333 | "stateMutability": "nonpayable",
334 | "type": "function"
335 | }
336 | ],
337 | "bytecode": "0x",
338 | "deployedBytecode": "0x",
339 | "linkReferences": {},
340 | "deployedLinkReferences": {}
341 | }
342 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol/IERC721Metadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-artifact-1",
3 | "contractName": "IERC721Metadata",
4 | "sourceName": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol",
5 | "abi": [
6 | {
7 | "anonymous": false,
8 | "inputs": [
9 | {
10 | "indexed": true,
11 | "internalType": "address",
12 | "name": "owner",
13 | "type": "address"
14 | },
15 | {
16 | "indexed": true,
17 | "internalType": "address",
18 | "name": "approved",
19 | "type": "address"
20 | },
21 | {
22 | "indexed": true,
23 | "internalType": "uint256",
24 | "name": "tokenId",
25 | "type": "uint256"
26 | }
27 | ],
28 | "name": "Approval",
29 | "type": "event"
30 | },
31 | {
32 | "anonymous": false,
33 | "inputs": [
34 | {
35 | "indexed": true,
36 | "internalType": "address",
37 | "name": "owner",
38 | "type": "address"
39 | },
40 | {
41 | "indexed": true,
42 | "internalType": "address",
43 | "name": "operator",
44 | "type": "address"
45 | },
46 | {
47 | "indexed": false,
48 | "internalType": "bool",
49 | "name": "approved",
50 | "type": "bool"
51 | }
52 | ],
53 | "name": "ApprovalForAll",
54 | "type": "event"
55 | },
56 | {
57 | "anonymous": false,
58 | "inputs": [
59 | {
60 | "indexed": true,
61 | "internalType": "address",
62 | "name": "from",
63 | "type": "address"
64 | },
65 | {
66 | "indexed": true,
67 | "internalType": "address",
68 | "name": "to",
69 | "type": "address"
70 | },
71 | {
72 | "indexed": true,
73 | "internalType": "uint256",
74 | "name": "tokenId",
75 | "type": "uint256"
76 | }
77 | ],
78 | "name": "Transfer",
79 | "type": "event"
80 | },
81 | {
82 | "inputs": [
83 | {
84 | "internalType": "address",
85 | "name": "to",
86 | "type": "address"
87 | },
88 | {
89 | "internalType": "uint256",
90 | "name": "tokenId",
91 | "type": "uint256"
92 | }
93 | ],
94 | "name": "approve",
95 | "outputs": [],
96 | "stateMutability": "nonpayable",
97 | "type": "function"
98 | },
99 | {
100 | "inputs": [
101 | {
102 | "internalType": "address",
103 | "name": "owner",
104 | "type": "address"
105 | }
106 | ],
107 | "name": "balanceOf",
108 | "outputs": [
109 | {
110 | "internalType": "uint256",
111 | "name": "balance",
112 | "type": "uint256"
113 | }
114 | ],
115 | "stateMutability": "view",
116 | "type": "function"
117 | },
118 | {
119 | "inputs": [
120 | {
121 | "internalType": "uint256",
122 | "name": "tokenId",
123 | "type": "uint256"
124 | }
125 | ],
126 | "name": "getApproved",
127 | "outputs": [
128 | {
129 | "internalType": "address",
130 | "name": "operator",
131 | "type": "address"
132 | }
133 | ],
134 | "stateMutability": "view",
135 | "type": "function"
136 | },
137 | {
138 | "inputs": [
139 | {
140 | "internalType": "address",
141 | "name": "owner",
142 | "type": "address"
143 | },
144 | {
145 | "internalType": "address",
146 | "name": "operator",
147 | "type": "address"
148 | }
149 | ],
150 | "name": "isApprovedForAll",
151 | "outputs": [
152 | {
153 | "internalType": "bool",
154 | "name": "",
155 | "type": "bool"
156 | }
157 | ],
158 | "stateMutability": "view",
159 | "type": "function"
160 | },
161 | {
162 | "inputs": [],
163 | "name": "name",
164 | "outputs": [
165 | {
166 | "internalType": "string",
167 | "name": "",
168 | "type": "string"
169 | }
170 | ],
171 | "stateMutability": "view",
172 | "type": "function"
173 | },
174 | {
175 | "inputs": [
176 | {
177 | "internalType": "uint256",
178 | "name": "tokenId",
179 | "type": "uint256"
180 | }
181 | ],
182 | "name": "ownerOf",
183 | "outputs": [
184 | {
185 | "internalType": "address",
186 | "name": "owner",
187 | "type": "address"
188 | }
189 | ],
190 | "stateMutability": "view",
191 | "type": "function"
192 | },
193 | {
194 | "inputs": [
195 | {
196 | "internalType": "address",
197 | "name": "from",
198 | "type": "address"
199 | },
200 | {
201 | "internalType": "address",
202 | "name": "to",
203 | "type": "address"
204 | },
205 | {
206 | "internalType": "uint256",
207 | "name": "tokenId",
208 | "type": "uint256"
209 | }
210 | ],
211 | "name": "safeTransferFrom",
212 | "outputs": [],
213 | "stateMutability": "nonpayable",
214 | "type": "function"
215 | },
216 | {
217 | "inputs": [
218 | {
219 | "internalType": "address",
220 | "name": "from",
221 | "type": "address"
222 | },
223 | {
224 | "internalType": "address",
225 | "name": "to",
226 | "type": "address"
227 | },
228 | {
229 | "internalType": "uint256",
230 | "name": "tokenId",
231 | "type": "uint256"
232 | },
233 | {
234 | "internalType": "bytes",
235 | "name": "data",
236 | "type": "bytes"
237 | }
238 | ],
239 | "name": "safeTransferFrom",
240 | "outputs": [],
241 | "stateMutability": "nonpayable",
242 | "type": "function"
243 | },
244 | {
245 | "inputs": [
246 | {
247 | "internalType": "address",
248 | "name": "operator",
249 | "type": "address"
250 | },
251 | {
252 | "internalType": "bool",
253 | "name": "_approved",
254 | "type": "bool"
255 | }
256 | ],
257 | "name": "setApprovalForAll",
258 | "outputs": [],
259 | "stateMutability": "nonpayable",
260 | "type": "function"
261 | },
262 | {
263 | "inputs": [
264 | {
265 | "internalType": "bytes4",
266 | "name": "interfaceId",
267 | "type": "bytes4"
268 | }
269 | ],
270 | "name": "supportsInterface",
271 | "outputs": [
272 | {
273 | "internalType": "bool",
274 | "name": "",
275 | "type": "bool"
276 | }
277 | ],
278 | "stateMutability": "view",
279 | "type": "function"
280 | },
281 | {
282 | "inputs": [],
283 | "name": "symbol",
284 | "outputs": [
285 | {
286 | "internalType": "string",
287 | "name": "",
288 | "type": "string"
289 | }
290 | ],
291 | "stateMutability": "view",
292 | "type": "function"
293 | },
294 | {
295 | "inputs": [
296 | {
297 | "internalType": "uint256",
298 | "name": "tokenId",
299 | "type": "uint256"
300 | }
301 | ],
302 | "name": "tokenURI",
303 | "outputs": [
304 | {
305 | "internalType": "string",
306 | "name": "",
307 | "type": "string"
308 | }
309 | ],
310 | "stateMutability": "view",
311 | "type": "function"
312 | },
313 | {
314 | "inputs": [
315 | {
316 | "internalType": "address",
317 | "name": "from",
318 | "type": "address"
319 | },
320 | {
321 | "internalType": "address",
322 | "name": "to",
323 | "type": "address"
324 | },
325 | {
326 | "internalType": "uint256",
327 | "name": "tokenId",
328 | "type": "uint256"
329 | }
330 | ],
331 | "name": "transferFrom",
332 | "outputs": [],
333 | "stateMutability": "nonpayable",
334 | "type": "function"
335 | }
336 | ],
337 | "bytecode": "0x",
338 | "deployedBytecode": "0x",
339 | "linkReferences": {},
340 | "deployedLinkReferences": {}
341 | }
342 |
--------------------------------------------------------------------------------
/NFT/cache/solidity-files-cache.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-cache-2",
3 | "files": {
4 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\contracts\\NftMinter.sol": {
5 | "lastModificationDate": 1689325849961,
6 | "contentHash": "50120539c5a6de2b10dd467a40c44d7f",
7 | "sourceName": "contracts/NftMinter.sol",
8 | "solcConfig": {
9 | "version": "0.8.17",
10 | "settings": {
11 | "optimizer": {
12 | "enabled": true,
13 | "runs": 200
14 | },
15 | "outputSelection": {
16 | "*": {
17 | "*": [
18 | "abi",
19 | "evm.bytecode",
20 | "evm.deployedBytecode",
21 | "evm.methodIdentifiers",
22 | "metadata"
23 | ],
24 | "": [
25 | "ast"
26 | ]
27 | }
28 | }
29 | }
30 | },
31 | "imports": [
32 | "@openzeppelin/contracts/token/ERC721/ERC721.sol",
33 | "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol",
34 | "@openzeppelin/contracts/utils/Counters.sol"
35 | ],
36 | "versionPragmas": [
37 | "^0.8.3"
38 | ],
39 | "artifacts": [
40 | "NFTMinter"
41 | ]
42 | },
43 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\utils\\Counters.sol": {
44 | "lastModificationDate": 1689339613968,
45 | "contentHash": "74654e3ae5d7f39555055dfe244dab7a",
46 | "sourceName": "@openzeppelin/contracts/utils/Counters.sol",
47 | "solcConfig": {
48 | "version": "0.8.17",
49 | "settings": {
50 | "optimizer": {
51 | "enabled": true,
52 | "runs": 200
53 | },
54 | "outputSelection": {
55 | "*": {
56 | "*": [
57 | "abi",
58 | "evm.bytecode",
59 | "evm.deployedBytecode",
60 | "evm.methodIdentifiers",
61 | "metadata"
62 | ],
63 | "": [
64 | "ast"
65 | ]
66 | }
67 | }
68 | }
69 | },
70 | "imports": [],
71 | "versionPragmas": [
72 | "^0.8.0"
73 | ],
74 | "artifacts": [
75 | "Counters"
76 | ]
77 | },
78 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\token\\ERC721\\ERC721.sol": {
79 | "lastModificationDate": 1689339615964,
80 | "contentHash": "f7f4f78c31f28534852e5c56000a25af",
81 | "sourceName": "@openzeppelin/contracts/token/ERC721/ERC721.sol",
82 | "solcConfig": {
83 | "version": "0.8.17",
84 | "settings": {
85 | "optimizer": {
86 | "enabled": true,
87 | "runs": 200
88 | },
89 | "outputSelection": {
90 | "*": {
91 | "*": [
92 | "abi",
93 | "evm.bytecode",
94 | "evm.deployedBytecode",
95 | "evm.methodIdentifiers",
96 | "metadata"
97 | ],
98 | "": [
99 | "ast"
100 | ]
101 | }
102 | }
103 | }
104 | },
105 | "imports": [
106 | "./IERC721.sol",
107 | "./IERC721Receiver.sol",
108 | "./extensions/IERC721Metadata.sol",
109 | "../../utils/Address.sol",
110 | "../../utils/Context.sol",
111 | "../../utils/Strings.sol",
112 | "../../utils/introspection/ERC165.sol"
113 | ],
114 | "versionPragmas": [
115 | "^0.8.0"
116 | ],
117 | "artifacts": [
118 | "ERC721"
119 | ]
120 | },
121 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\token\\ERC721\\extensions\\ERC721URIStorage.sol": {
122 | "lastModificationDate": 1689339616487,
123 | "contentHash": "8af32effd0536e2971ff8496812a5016",
124 | "sourceName": "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol",
125 | "solcConfig": {
126 | "version": "0.8.17",
127 | "settings": {
128 | "optimizer": {
129 | "enabled": true,
130 | "runs": 200
131 | },
132 | "outputSelection": {
133 | "*": {
134 | "*": [
135 | "abi",
136 | "evm.bytecode",
137 | "evm.deployedBytecode",
138 | "evm.methodIdentifiers",
139 | "metadata"
140 | ],
141 | "": [
142 | "ast"
143 | ]
144 | }
145 | }
146 | }
147 | },
148 | "imports": [
149 | "../ERC721.sol"
150 | ],
151 | "versionPragmas": [
152 | "^0.8.0"
153 | ],
154 | "artifacts": [
155 | "ERC721URIStorage"
156 | ]
157 | },
158 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\utils\\introspection\\ERC165.sol": {
159 | "lastModificationDate": 1689339615356,
160 | "contentHash": "0e7db055ce108f9da7bb6686a00287c0",
161 | "sourceName": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
162 | "solcConfig": {
163 | "version": "0.8.17",
164 | "settings": {
165 | "optimizer": {
166 | "enabled": true,
167 | "runs": 200
168 | },
169 | "outputSelection": {
170 | "*": {
171 | "*": [
172 | "abi",
173 | "evm.bytecode",
174 | "evm.deployedBytecode",
175 | "evm.methodIdentifiers",
176 | "metadata"
177 | ],
178 | "": [
179 | "ast"
180 | ]
181 | }
182 | }
183 | }
184 | },
185 | "imports": [
186 | "./IERC165.sol"
187 | ],
188 | "versionPragmas": [
189 | "^0.8.0"
190 | ],
191 | "artifacts": [
192 | "ERC165"
193 | ]
194 | },
195 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\utils\\Context.sol": {
196 | "lastModificationDate": 1689339613887,
197 | "contentHash": "5f2c5c4b6af2dd4551027144797bc8be",
198 | "sourceName": "@openzeppelin/contracts/utils/Context.sol",
199 | "solcConfig": {
200 | "version": "0.8.17",
201 | "settings": {
202 | "optimizer": {
203 | "enabled": true,
204 | "runs": 200
205 | },
206 | "outputSelection": {
207 | "*": {
208 | "*": [
209 | "abi",
210 | "evm.bytecode",
211 | "evm.deployedBytecode",
212 | "evm.methodIdentifiers",
213 | "metadata"
214 | ],
215 | "": [
216 | "ast"
217 | ]
218 | }
219 | }
220 | }
221 | },
222 | "imports": [],
223 | "versionPragmas": [
224 | "^0.8.0"
225 | ],
226 | "artifacts": [
227 | "Context"
228 | ]
229 | },
230 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\utils\\Strings.sol": {
231 | "lastModificationDate": 1689339618690,
232 | "contentHash": "396031251978f8febfd90cb62cb240ec",
233 | "sourceName": "@openzeppelin/contracts/utils/Strings.sol",
234 | "solcConfig": {
235 | "version": "0.8.17",
236 | "settings": {
237 | "optimizer": {
238 | "enabled": true,
239 | "runs": 200
240 | },
241 | "outputSelection": {
242 | "*": {
243 | "*": [
244 | "abi",
245 | "evm.bytecode",
246 | "evm.deployedBytecode",
247 | "evm.methodIdentifiers",
248 | "metadata"
249 | ],
250 | "": [
251 | "ast"
252 | ]
253 | }
254 | }
255 | }
256 | },
257 | "imports": [
258 | "./math/Math.sol"
259 | ],
260 | "versionPragmas": [
261 | "^0.8.0"
262 | ],
263 | "artifacts": [
264 | "Strings"
265 | ]
266 | },
267 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\token\\ERC721\\IERC721.sol": {
268 | "lastModificationDate": 1689339617883,
269 | "contentHash": "eb7e61db29f31d88b3c1cef1b063d338",
270 | "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721.sol",
271 | "solcConfig": {
272 | "version": "0.8.17",
273 | "settings": {
274 | "optimizer": {
275 | "enabled": true,
276 | "runs": 200
277 | },
278 | "outputSelection": {
279 | "*": {
280 | "*": [
281 | "abi",
282 | "evm.bytecode",
283 | "evm.deployedBytecode",
284 | "evm.methodIdentifiers",
285 | "metadata"
286 | ],
287 | "": [
288 | "ast"
289 | ]
290 | }
291 | }
292 | }
293 | },
294 | "imports": [
295 | "../../utils/introspection/IERC165.sol"
296 | ],
297 | "versionPragmas": [
298 | "^0.8.0"
299 | ],
300 | "artifacts": [
301 | "IERC721"
302 | ]
303 | },
304 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\utils\\Address.sol": {
305 | "lastModificationDate": 1689339613397,
306 | "contentHash": "f31ad6fc4bbf9c06203987220156a6ba",
307 | "sourceName": "@openzeppelin/contracts/utils/Address.sol",
308 | "solcConfig": {
309 | "version": "0.8.17",
310 | "settings": {
311 | "optimizer": {
312 | "enabled": true,
313 | "runs": 200
314 | },
315 | "outputSelection": {
316 | "*": {
317 | "*": [
318 | "abi",
319 | "evm.bytecode",
320 | "evm.deployedBytecode",
321 | "evm.methodIdentifiers",
322 | "metadata"
323 | ],
324 | "": [
325 | "ast"
326 | ]
327 | }
328 | }
329 | }
330 | },
331 | "imports": [],
332 | "versionPragmas": [
333 | "^0.8.1"
334 | ],
335 | "artifacts": [
336 | "Address"
337 | ]
338 | },
339 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\token\\ERC721\\extensions\\IERC721Metadata.sol": {
340 | "lastModificationDate": 1689339617945,
341 | "contentHash": "efbc0d15b80a74e34dbe8da0f3e879bb",
342 | "sourceName": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol",
343 | "solcConfig": {
344 | "version": "0.8.17",
345 | "settings": {
346 | "optimizer": {
347 | "enabled": true,
348 | "runs": 200
349 | },
350 | "outputSelection": {
351 | "*": {
352 | "*": [
353 | "abi",
354 | "evm.bytecode",
355 | "evm.deployedBytecode",
356 | "evm.methodIdentifiers",
357 | "metadata"
358 | ],
359 | "": [
360 | "ast"
361 | ]
362 | }
363 | }
364 | }
365 | },
366 | "imports": [
367 | "../IERC721.sol"
368 | ],
369 | "versionPragmas": [
370 | "^0.8.0"
371 | ],
372 | "artifacts": [
373 | "IERC721Metadata"
374 | ]
375 | },
376 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\token\\ERC721\\IERC721Receiver.sol": {
377 | "lastModificationDate": 1689339617981,
378 | "contentHash": "c22d4395e33763de693fd440c6fd10e1",
379 | "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol",
380 | "solcConfig": {
381 | "version": "0.8.17",
382 | "settings": {
383 | "optimizer": {
384 | "enabled": true,
385 | "runs": 200
386 | },
387 | "outputSelection": {
388 | "*": {
389 | "*": [
390 | "abi",
391 | "evm.bytecode",
392 | "evm.deployedBytecode",
393 | "evm.methodIdentifiers",
394 | "metadata"
395 | ],
396 | "": [
397 | "ast"
398 | ]
399 | }
400 | }
401 | }
402 | },
403 | "imports": [],
404 | "versionPragmas": [
405 | "^0.8.0"
406 | ],
407 | "artifacts": [
408 | "IERC721Receiver"
409 | ]
410 | },
411 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\utils\\introspection\\IERC165.sol": {
412 | "lastModificationDate": 1689339617630,
413 | "contentHash": "03e6768535ac4da0e9756f1d8a4a018a",
414 | "sourceName": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
415 | "solcConfig": {
416 | "version": "0.8.17",
417 | "settings": {
418 | "optimizer": {
419 | "enabled": true,
420 | "runs": 200
421 | },
422 | "outputSelection": {
423 | "*": {
424 | "*": [
425 | "abi",
426 | "evm.bytecode",
427 | "evm.deployedBytecode",
428 | "evm.methodIdentifiers",
429 | "metadata"
430 | ],
431 | "": [
432 | "ast"
433 | ]
434 | }
435 | }
436 | }
437 | },
438 | "imports": [],
439 | "versionPragmas": [
440 | "^0.8.0"
441 | ],
442 | "artifacts": [
443 | "IERC165"
444 | ]
445 | },
446 | "C:\\Users\\samku\\OneDrive\\Desktop\\SHM\\NFT-Minting-Dapp\\node_modules\\@openzeppelin\\contracts\\utils\\math\\Math.sol": {
447 | "lastModificationDate": 1689339618358,
448 | "contentHash": "b9c58920ce74d6dc819161786112e7ee",
449 | "sourceName": "@openzeppelin/contracts/utils/math/Math.sol",
450 | "solcConfig": {
451 | "version": "0.8.17",
452 | "settings": {
453 | "optimizer": {
454 | "enabled": true,
455 | "runs": 200
456 | },
457 | "outputSelection": {
458 | "*": {
459 | "*": [
460 | "abi",
461 | "evm.bytecode",
462 | "evm.deployedBytecode",
463 | "evm.methodIdentifiers",
464 | "metadata"
465 | ],
466 | "": [
467 | "ast"
468 | ]
469 | }
470 | }
471 | }
472 | },
473 | "imports": [],
474 | "versionPragmas": [
475 | "^0.8.0"
476 | ],
477 | "artifacts": [
478 | "Math"
479 | ]
480 | }
481 | }
482 | }
483 |
--------------------------------------------------------------------------------
/NFT/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-artifact-1",
3 | "contractName": "ERC721",
4 | "sourceName": "@openzeppelin/contracts/token/ERC721/ERC721.sol",
5 | "abi": [
6 | {
7 | "inputs": [
8 | {
9 | "internalType": "string",
10 | "name": "name_",
11 | "type": "string"
12 | },
13 | {
14 | "internalType": "string",
15 | "name": "symbol_",
16 | "type": "string"
17 | }
18 | ],
19 | "stateMutability": "nonpayable",
20 | "type": "constructor"
21 | },
22 | {
23 | "anonymous": false,
24 | "inputs": [
25 | {
26 | "indexed": true,
27 | "internalType": "address",
28 | "name": "owner",
29 | "type": "address"
30 | },
31 | {
32 | "indexed": true,
33 | "internalType": "address",
34 | "name": "approved",
35 | "type": "address"
36 | },
37 | {
38 | "indexed": true,
39 | "internalType": "uint256",
40 | "name": "tokenId",
41 | "type": "uint256"
42 | }
43 | ],
44 | "name": "Approval",
45 | "type": "event"
46 | },
47 | {
48 | "anonymous": false,
49 | "inputs": [
50 | {
51 | "indexed": true,
52 | "internalType": "address",
53 | "name": "owner",
54 | "type": "address"
55 | },
56 | {
57 | "indexed": true,
58 | "internalType": "address",
59 | "name": "operator",
60 | "type": "address"
61 | },
62 | {
63 | "indexed": false,
64 | "internalType": "bool",
65 | "name": "approved",
66 | "type": "bool"
67 | }
68 | ],
69 | "name": "ApprovalForAll",
70 | "type": "event"
71 | },
72 | {
73 | "anonymous": false,
74 | "inputs": [
75 | {
76 | "indexed": true,
77 | "internalType": "address",
78 | "name": "from",
79 | "type": "address"
80 | },
81 | {
82 | "indexed": true,
83 | "internalType": "address",
84 | "name": "to",
85 | "type": "address"
86 | },
87 | {
88 | "indexed": true,
89 | "internalType": "uint256",
90 | "name": "tokenId",
91 | "type": "uint256"
92 | }
93 | ],
94 | "name": "Transfer",
95 | "type": "event"
96 | },
97 | {
98 | "inputs": [
99 | {
100 | "internalType": "address",
101 | "name": "to",
102 | "type": "address"
103 | },
104 | {
105 | "internalType": "uint256",
106 | "name": "tokenId",
107 | "type": "uint256"
108 | }
109 | ],
110 | "name": "approve",
111 | "outputs": [],
112 | "stateMutability": "nonpayable",
113 | "type": "function"
114 | },
115 | {
116 | "inputs": [
117 | {
118 | "internalType": "address",
119 | "name": "owner",
120 | "type": "address"
121 | }
122 | ],
123 | "name": "balanceOf",
124 | "outputs": [
125 | {
126 | "internalType": "uint256",
127 | "name": "",
128 | "type": "uint256"
129 | }
130 | ],
131 | "stateMutability": "view",
132 | "type": "function"
133 | },
134 | {
135 | "inputs": [
136 | {
137 | "internalType": "uint256",
138 | "name": "tokenId",
139 | "type": "uint256"
140 | }
141 | ],
142 | "name": "getApproved",
143 | "outputs": [
144 | {
145 | "internalType": "address",
146 | "name": "",
147 | "type": "address"
148 | }
149 | ],
150 | "stateMutability": "view",
151 | "type": "function"
152 | },
153 | {
154 | "inputs": [
155 | {
156 | "internalType": "address",
157 | "name": "owner",
158 | "type": "address"
159 | },
160 | {
161 | "internalType": "address",
162 | "name": "operator",
163 | "type": "address"
164 | }
165 | ],
166 | "name": "isApprovedForAll",
167 | "outputs": [
168 | {
169 | "internalType": "bool",
170 | "name": "",
171 | "type": "bool"
172 | }
173 | ],
174 | "stateMutability": "view",
175 | "type": "function"
176 | },
177 | {
178 | "inputs": [],
179 | "name": "name",
180 | "outputs": [
181 | {
182 | "internalType": "string",
183 | "name": "",
184 | "type": "string"
185 | }
186 | ],
187 | "stateMutability": "view",
188 | "type": "function"
189 | },
190 | {
191 | "inputs": [
192 | {
193 | "internalType": "uint256",
194 | "name": "tokenId",
195 | "type": "uint256"
196 | }
197 | ],
198 | "name": "ownerOf",
199 | "outputs": [
200 | {
201 | "internalType": "address",
202 | "name": "",
203 | "type": "address"
204 | }
205 | ],
206 | "stateMutability": "view",
207 | "type": "function"
208 | },
209 | {
210 | "inputs": [
211 | {
212 | "internalType": "address",
213 | "name": "from",
214 | "type": "address"
215 | },
216 | {
217 | "internalType": "address",
218 | "name": "to",
219 | "type": "address"
220 | },
221 | {
222 | "internalType": "uint256",
223 | "name": "tokenId",
224 | "type": "uint256"
225 | }
226 | ],
227 | "name": "safeTransferFrom",
228 | "outputs": [],
229 | "stateMutability": "nonpayable",
230 | "type": "function"
231 | },
232 | {
233 | "inputs": [
234 | {
235 | "internalType": "address",
236 | "name": "from",
237 | "type": "address"
238 | },
239 | {
240 | "internalType": "address",
241 | "name": "to",
242 | "type": "address"
243 | },
244 | {
245 | "internalType": "uint256",
246 | "name": "tokenId",
247 | "type": "uint256"
248 | },
249 | {
250 | "internalType": "bytes",
251 | "name": "data",
252 | "type": "bytes"
253 | }
254 | ],
255 | "name": "safeTransferFrom",
256 | "outputs": [],
257 | "stateMutability": "nonpayable",
258 | "type": "function"
259 | },
260 | {
261 | "inputs": [
262 | {
263 | "internalType": "address",
264 | "name": "operator",
265 | "type": "address"
266 | },
267 | {
268 | "internalType": "bool",
269 | "name": "approved",
270 | "type": "bool"
271 | }
272 | ],
273 | "name": "setApprovalForAll",
274 | "outputs": [],
275 | "stateMutability": "nonpayable",
276 | "type": "function"
277 | },
278 | {
279 | "inputs": [
280 | {
281 | "internalType": "bytes4",
282 | "name": "interfaceId",
283 | "type": "bytes4"
284 | }
285 | ],
286 | "name": "supportsInterface",
287 | "outputs": [
288 | {
289 | "internalType": "bool",
290 | "name": "",
291 | "type": "bool"
292 | }
293 | ],
294 | "stateMutability": "view",
295 | "type": "function"
296 | },
297 | {
298 | "inputs": [],
299 | "name": "symbol",
300 | "outputs": [
301 | {
302 | "internalType": "string",
303 | "name": "",
304 | "type": "string"
305 | }
306 | ],
307 | "stateMutability": "view",
308 | "type": "function"
309 | },
310 | {
311 | "inputs": [
312 | {
313 | "internalType": "uint256",
314 | "name": "tokenId",
315 | "type": "uint256"
316 | }
317 | ],
318 | "name": "tokenURI",
319 | "outputs": [
320 | {
321 | "internalType": "string",
322 | "name": "",
323 | "type": "string"
324 | }
325 | ],
326 | "stateMutability": "view",
327 | "type": "function"
328 | },
329 | {
330 | "inputs": [
331 | {
332 | "internalType": "address",
333 | "name": "from",
334 | "type": "address"
335 | },
336 | {
337 | "internalType": "address",
338 | "name": "to",
339 | "type": "address"
340 | },
341 | {
342 | "internalType": "uint256",
343 | "name": "tokenId",
344 | "type": "uint256"
345 | }
346 | ],
347 | "name": "transferFrom",
348 | "outputs": [],
349 | "stateMutability": "nonpayable",
350 | "type": "function"
351 | }
352 | ],
353 | "bytecode": "0x60806040523480156200001157600080fd5b50604051620013e7380380620013e783398101604081905262000034916200011f565b600062000042838262000218565b50600162000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6110f380620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c7f565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610cec565b61012461011f366004610cff565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d34565b610333565b005b61014f61015f366004610d5e565b61044d565b61014f610172366004610d5e565b61047e565b610124610185366004610cff565b610499565b61019d610198366004610d9a565b6104f9565b6040519081526020016100f3565b61010461057f565b61014f6101c1366004610db5565b61058e565b61014f6101d4366004610e07565b61059d565b6101046101e7366004610cff565b6105d5565b6100e76101fa366004610ee3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610f16565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610f16565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b600061031782610649565b506000908152600460205260409020546001600160a01b031690565b600061033e82610499565b9050806001600160a01b0316836001600160a01b0316036103b05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cc57506103cc81336101fa565b61043e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103a7565b61044883836106ab565b505050565b6104573382610719565b6104735760405162461bcd60e51b81526004016103a790610f50565b610448838383610798565b6104488383836040518060200160405280600081525061059d565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b60006001600160a01b0382166105635760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a7565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610f16565b6105993383836108fc565b5050565b6105a73383610719565b6105c35760405162461bcd60e51b81526004016103a790610f50565b6105cf848484846109ca565b50505050565b60606105e082610649565b60006105f760408051602081019091526000815290565b905060008151116106175760405180602001604052806000815250610642565b80610621846109fd565b604051602001610632929190610f9d565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106a85760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e082610499565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072583610499565b9050806001600160a01b0316846001600160a01b0316148061076c57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107905750836001600160a01b03166107858461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ab82610499565b6001600160a01b0316146107d15760405162461bcd60e51b81526004016103a790610fcc565b6001600160a01b0382166108335760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a7565b826001600160a01b031661084682610499565b6001600160a01b03161461086c5760405162461bcd60e51b81526004016103a790610fcc565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361095d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109d5848484610798565b6109e184848484610a90565b6105cf5760405162461bcd60e51b81526004016103a790611011565b60606000610a0a83610b91565b600101905060008167ffffffffffffffff811115610a2a57610a2a610df1565b6040519080825280601f01601f191660200182016040528015610a54576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a5e57509392505050565b60006001600160a01b0384163b15610b8657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610ad4903390899088908890600401611063565b6020604051808303816000875af1925050508015610b0f575060408051601f3d908101601f19168201909252610b0c918101906110a0565b60015b610b6c573d808015610b3d576040519150601f19603f3d011682016040523d82523d6000602084013e610b42565b606091505b508051600003610b645760405162461bcd60e51b81526004016103a790611011565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610790565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610bd05772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610bfc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610c1a57662386f26fc10000830492506010015b6305f5e1008310610c32576305f5e100830492506008015b6127108310610c4657612710830492506004015b60648310610c58576064830492506002015b600a83106102745760010192915050565b6001600160e01b0319811681146106a857600080fd5b600060208284031215610c9157600080fd5b813561064281610c69565b60005b83811015610cb7578181015183820152602001610c9f565b50506000910152565b60008151808452610cd8816020860160208601610c9c565b601f01601f19169290920160200192915050565b6020815260006106426020830184610cc0565b600060208284031215610d1157600080fd5b5035919050565b80356001600160a01b0381168114610d2f57600080fd5b919050565b60008060408385031215610d4757600080fd5b610d5083610d18565b946020939093013593505050565b600080600060608486031215610d7357600080fd5b610d7c84610d18565b9250610d8a60208501610d18565b9150604084013590509250925092565b600060208284031215610dac57600080fd5b61064282610d18565b60008060408385031215610dc857600080fd5b610dd183610d18565b915060208301358015158114610de657600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610e1d57600080fd5b610e2685610d18565b9350610e3460208601610d18565b925060408501359150606085013567ffffffffffffffff80821115610e5857600080fd5b818701915087601f830112610e6c57600080fd5b813581811115610e7e57610e7e610df1565b604051601f8201601f19908116603f01168101908382118183101715610ea657610ea6610df1565b816040528281528a6020848701011115610ebf57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ef657600080fd5b610eff83610d18565b9150610f0d60208401610d18565b90509250929050565b600181811c90821680610f2a57607f821691505b602082108103610f4a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60008351610faf818460208801610c9c565b835190830190610fc3818360208801610c9c565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061109690830184610cc0565b9695505050505050565b6000602082840312156110b257600080fd5b815161064281610c6956fea26469706673582212209111c6bfadf2f2fc75950683c2e4a695a0a448e7853a386b73d56801b9f366ea64736f6c63430008110033",
354 | "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c7f565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610cec565b61012461011f366004610cff565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d34565b610333565b005b61014f61015f366004610d5e565b61044d565b61014f610172366004610d5e565b61047e565b610124610185366004610cff565b610499565b61019d610198366004610d9a565b6104f9565b6040519081526020016100f3565b61010461057f565b61014f6101c1366004610db5565b61058e565b61014f6101d4366004610e07565b61059d565b6101046101e7366004610cff565b6105d5565b6100e76101fa366004610ee3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610f16565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610f16565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b600061031782610649565b506000908152600460205260409020546001600160a01b031690565b600061033e82610499565b9050806001600160a01b0316836001600160a01b0316036103b05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cc57506103cc81336101fa565b61043e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103a7565b61044883836106ab565b505050565b6104573382610719565b6104735760405162461bcd60e51b81526004016103a790610f50565b610448838383610798565b6104488383836040518060200160405280600081525061059d565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b60006001600160a01b0382166105635760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a7565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610f16565b6105993383836108fc565b5050565b6105a73383610719565b6105c35760405162461bcd60e51b81526004016103a790610f50565b6105cf848484846109ca565b50505050565b60606105e082610649565b60006105f760408051602081019091526000815290565b905060008151116106175760405180602001604052806000815250610642565b80610621846109fd565b604051602001610632929190610f9d565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106a85760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e082610499565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072583610499565b9050806001600160a01b0316846001600160a01b0316148061076c57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107905750836001600160a01b03166107858461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ab82610499565b6001600160a01b0316146107d15760405162461bcd60e51b81526004016103a790610fcc565b6001600160a01b0382166108335760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a7565b826001600160a01b031661084682610499565b6001600160a01b03161461086c5760405162461bcd60e51b81526004016103a790610fcc565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361095d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109d5848484610798565b6109e184848484610a90565b6105cf5760405162461bcd60e51b81526004016103a790611011565b60606000610a0a83610b91565b600101905060008167ffffffffffffffff811115610a2a57610a2a610df1565b6040519080825280601f01601f191660200182016040528015610a54576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a5e57509392505050565b60006001600160a01b0384163b15610b8657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610ad4903390899088908890600401611063565b6020604051808303816000875af1925050508015610b0f575060408051601f3d908101601f19168201909252610b0c918101906110a0565b60015b610b6c573d808015610b3d576040519150601f19603f3d011682016040523d82523d6000602084013e610b42565b606091505b508051600003610b645760405162461bcd60e51b81526004016103a790611011565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610790565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610bd05772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610bfc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610c1a57662386f26fc10000830492506010015b6305f5e1008310610c32576305f5e100830492506008015b6127108310610c4657612710830492506004015b60648310610c58576064830492506002015b600a83106102745760010192915050565b6001600160e01b0319811681146106a857600080fd5b600060208284031215610c9157600080fd5b813561064281610c69565b60005b83811015610cb7578181015183820152602001610c9f565b50506000910152565b60008151808452610cd8816020860160208601610c9c565b601f01601f19169290920160200192915050565b6020815260006106426020830184610cc0565b600060208284031215610d1157600080fd5b5035919050565b80356001600160a01b0381168114610d2f57600080fd5b919050565b60008060408385031215610d4757600080fd5b610d5083610d18565b946020939093013593505050565b600080600060608486031215610d7357600080fd5b610d7c84610d18565b9250610d8a60208501610d18565b9150604084013590509250925092565b600060208284031215610dac57600080fd5b61064282610d18565b60008060408385031215610dc857600080fd5b610dd183610d18565b915060208301358015158114610de657600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610e1d57600080fd5b610e2685610d18565b9350610e3460208601610d18565b925060408501359150606085013567ffffffffffffffff80821115610e5857600080fd5b818701915087601f830112610e6c57600080fd5b813581811115610e7e57610e7e610df1565b604051601f8201601f19908116603f01168101908382118183101715610ea657610ea6610df1565b816040528281528a6020848701011115610ebf57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ef657600080fd5b610eff83610d18565b9150610f0d60208401610d18565b90509250929050565b600181811c90821680610f2a57607f821691505b602082108103610f4a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60008351610faf818460208801610c9c565b835190830190610fc3818360208801610c9c565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061109690830184610cc0565b9695505050505050565b6000602082840312156110b257600080fd5b815161064281610c6956fea26469706673582212209111c6bfadf2f2fc75950683c2e4a695a0a448e7853a386b73d56801b9f366ea64736f6c63430008110033",
355 | "linkReferences": {},
356 | "deployedLinkReferences": {}
357 | }
358 |
--------------------------------------------------------------------------------
/NFT/artifacts/contracts/NftMinter.sol/NFTMinter.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-artifact-1",
3 | "contractName": "NFTMinter",
4 | "sourceName": "contracts/NftMinter.sol",
5 | "abi": [
6 | {
7 | "inputs": [],
8 | "stateMutability": "nonpayable",
9 | "type": "constructor"
10 | },
11 | {
12 | "anonymous": false,
13 | "inputs": [
14 | {
15 | "indexed": true,
16 | "internalType": "address",
17 | "name": "owner",
18 | "type": "address"
19 | },
20 | {
21 | "indexed": true,
22 | "internalType": "address",
23 | "name": "approved",
24 | "type": "address"
25 | },
26 | {
27 | "indexed": true,
28 | "internalType": "uint256",
29 | "name": "tokenId",
30 | "type": "uint256"
31 | }
32 | ],
33 | "name": "Approval",
34 | "type": "event"
35 | },
36 | {
37 | "anonymous": false,
38 | "inputs": [
39 | {
40 | "indexed": true,
41 | "internalType": "address",
42 | "name": "owner",
43 | "type": "address"
44 | },
45 | {
46 | "indexed": true,
47 | "internalType": "address",
48 | "name": "operator",
49 | "type": "address"
50 | },
51 | {
52 | "indexed": false,
53 | "internalType": "bool",
54 | "name": "approved",
55 | "type": "bool"
56 | }
57 | ],
58 | "name": "ApprovalForAll",
59 | "type": "event"
60 | },
61 | {
62 | "anonymous": false,
63 | "inputs": [
64 | {
65 | "indexed": true,
66 | "internalType": "address",
67 | "name": "from",
68 | "type": "address"
69 | },
70 | {
71 | "indexed": true,
72 | "internalType": "address",
73 | "name": "to",
74 | "type": "address"
75 | },
76 | {
77 | "indexed": true,
78 | "internalType": "uint256",
79 | "name": "tokenId",
80 | "type": "uint256"
81 | }
82 | ],
83 | "name": "Transfer",
84 | "type": "event"
85 | },
86 | {
87 | "inputs": [
88 | {
89 | "internalType": "address",
90 | "name": "to",
91 | "type": "address"
92 | },
93 | {
94 | "internalType": "uint256",
95 | "name": "tokenId",
96 | "type": "uint256"
97 | }
98 | ],
99 | "name": "approve",
100 | "outputs": [],
101 | "stateMutability": "nonpayable",
102 | "type": "function"
103 | },
104 | {
105 | "inputs": [
106 | {
107 | "internalType": "address",
108 | "name": "owner",
109 | "type": "address"
110 | }
111 | ],
112 | "name": "balanceOf",
113 | "outputs": [
114 | {
115 | "internalType": "uint256",
116 | "name": "",
117 | "type": "uint256"
118 | }
119 | ],
120 | "stateMutability": "view",
121 | "type": "function"
122 | },
123 | {
124 | "inputs": [
125 | {
126 | "internalType": "uint256",
127 | "name": "tokenId",
128 | "type": "uint256"
129 | }
130 | ],
131 | "name": "getApproved",
132 | "outputs": [
133 | {
134 | "internalType": "address",
135 | "name": "",
136 | "type": "address"
137 | }
138 | ],
139 | "stateMutability": "view",
140 | "type": "function"
141 | },
142 | {
143 | "inputs": [
144 | {
145 | "internalType": "address",
146 | "name": "owner",
147 | "type": "address"
148 | },
149 | {
150 | "internalType": "address",
151 | "name": "operator",
152 | "type": "address"
153 | }
154 | ],
155 | "name": "isApprovedForAll",
156 | "outputs": [
157 | {
158 | "internalType": "bool",
159 | "name": "",
160 | "type": "bool"
161 | }
162 | ],
163 | "stateMutability": "view",
164 | "type": "function"
165 | },
166 | {
167 | "inputs": [
168 | {
169 | "internalType": "address",
170 | "name": "recipient",
171 | "type": "address"
172 | },
173 | {
174 | "internalType": "string",
175 | "name": "tokenURI",
176 | "type": "string"
177 | }
178 | ],
179 | "name": "mintNFT",
180 | "outputs": [
181 | {
182 | "internalType": "uint256",
183 | "name": "",
184 | "type": "uint256"
185 | }
186 | ],
187 | "stateMutability": "nonpayable",
188 | "type": "function"
189 | },
190 | {
191 | "inputs": [],
192 | "name": "name",
193 | "outputs": [
194 | {
195 | "internalType": "string",
196 | "name": "",
197 | "type": "string"
198 | }
199 | ],
200 | "stateMutability": "view",
201 | "type": "function"
202 | },
203 | {
204 | "inputs": [
205 | {
206 | "internalType": "uint256",
207 | "name": "tokenId",
208 | "type": "uint256"
209 | }
210 | ],
211 | "name": "ownerOf",
212 | "outputs": [
213 | {
214 | "internalType": "address",
215 | "name": "",
216 | "type": "address"
217 | }
218 | ],
219 | "stateMutability": "view",
220 | "type": "function"
221 | },
222 | {
223 | "inputs": [
224 | {
225 | "internalType": "address",
226 | "name": "from",
227 | "type": "address"
228 | },
229 | {
230 | "internalType": "address",
231 | "name": "to",
232 | "type": "address"
233 | },
234 | {
235 | "internalType": "uint256",
236 | "name": "tokenId",
237 | "type": "uint256"
238 | }
239 | ],
240 | "name": "safeTransferFrom",
241 | "outputs": [],
242 | "stateMutability": "nonpayable",
243 | "type": "function"
244 | },
245 | {
246 | "inputs": [
247 | {
248 | "internalType": "address",
249 | "name": "from",
250 | "type": "address"
251 | },
252 | {
253 | "internalType": "address",
254 | "name": "to",
255 | "type": "address"
256 | },
257 | {
258 | "internalType": "uint256",
259 | "name": "tokenId",
260 | "type": "uint256"
261 | },
262 | {
263 | "internalType": "bytes",
264 | "name": "data",
265 | "type": "bytes"
266 | }
267 | ],
268 | "name": "safeTransferFrom",
269 | "outputs": [],
270 | "stateMutability": "nonpayable",
271 | "type": "function"
272 | },
273 | {
274 | "inputs": [
275 | {
276 | "internalType": "address",
277 | "name": "operator",
278 | "type": "address"
279 | },
280 | {
281 | "internalType": "bool",
282 | "name": "approved",
283 | "type": "bool"
284 | }
285 | ],
286 | "name": "setApprovalForAll",
287 | "outputs": [],
288 | "stateMutability": "nonpayable",
289 | "type": "function"
290 | },
291 | {
292 | "inputs": [
293 | {
294 | "internalType": "bytes4",
295 | "name": "interfaceId",
296 | "type": "bytes4"
297 | }
298 | ],
299 | "name": "supportsInterface",
300 | "outputs": [
301 | {
302 | "internalType": "bool",
303 | "name": "",
304 | "type": "bool"
305 | }
306 | ],
307 | "stateMutability": "view",
308 | "type": "function"
309 | },
310 | {
311 | "inputs": [],
312 | "name": "symbol",
313 | "outputs": [
314 | {
315 | "internalType": "string",
316 | "name": "",
317 | "type": "string"
318 | }
319 | ],
320 | "stateMutability": "view",
321 | "type": "function"
322 | },
323 | {
324 | "inputs": [
325 | {
326 | "internalType": "uint256",
327 | "name": "tokenId",
328 | "type": "uint256"
329 | }
330 | ],
331 | "name": "tokenURI",
332 | "outputs": [
333 | {
334 | "internalType": "string",
335 | "name": "",
336 | "type": "string"
337 | }
338 | ],
339 | "stateMutability": "view",
340 | "type": "function"
341 | },
342 | {
343 | "inputs": [
344 | {
345 | "internalType": "address",
346 | "name": "from",
347 | "type": "address"
348 | },
349 | {
350 | "internalType": "address",
351 | "name": "to",
352 | "type": "address"
353 | },
354 | {
355 | "internalType": "uint256",
356 | "name": "tokenId",
357 | "type": "uint256"
358 | }
359 | ],
360 | "name": "transferFrom",
361 | "outputs": [],
362 | "stateMutability": "nonpayable",
363 | "type": "function"
364 | }
365 | ],
366 | "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280601681526020017f536861726465756d20446576204e46544d696e746572000000000000000000008152506040518060400160405280600481526020016314d3919560e21b815250816000908162000076919062000133565b50600162000085828262000133565b505050620001ff565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000b957607f821691505b602082108103620000da57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200012e57600081815260208120601f850160051c81016020861015620001095750805b601f850160051c820191505b818110156200012a5782815560010162000115565b5050505b505050565b81516001600160401b038111156200014f576200014f6200008e565b6200016781620001608454620000a4565b84620000e0565b602080601f8311600181146200019f5760008415620001865750858301515b600019600386901b1c1916600185901b1785556200012a565b600085815260208120601f198616915b82811015620001d057888601518255948401946001909101908401620001af565b5085821015620001ef5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61160b806200020f6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063b88d4fde11610066578063b88d4fde146101e1578063c87b56dd146101f4578063e985e9c514610207578063eacabe141461024357600080fd5b806370a08231146101a557806395d89b41146101c6578063a22cb465146101ce57600080fd5b8063095ea7b3116100c8578063095ea7b31461015757806323b872dd1461016c57806342842e0e1461017f5780636352211e1461019257600080fd5b806301ffc9a7146100ef57806306fdde0314610117578063081812fc1461012c575b600080fd5b6101026100fd366004611011565b610256565b60405190151581526020015b60405180910390f35b61011f6102a8565b60405161010e919061107e565b61013f61013a366004611091565b61033a565b6040516001600160a01b03909116815260200161010e565b61016a6101653660046110c6565b610361565b005b61016a61017a3660046110f0565b61047b565b61016a61018d3660046110f0565b6104ac565b61013f6101a0366004611091565b6104c7565b6101b86101b336600461112c565b610527565b60405190815260200161010e565b61011f6105ad565b61016a6101dc366004611147565b6105bc565b61016a6101ef36600461120f565b6105cb565b61011f610202366004611091565b610603565b61010261021536600461128b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101b86102513660046112be565b610713565b60006001600160e01b031982166380ac58cd60e01b148061028757506001600160e01b03198216635b5e139f60e01b145b806102a257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102b790611320565b80601f01602080910402602001604051908101604052809291908181526020018280546102e390611320565b80156103305780601f1061030557610100808354040283529160200191610330565b820191906000526020600020905b81548152906001019060200180831161031357829003601f168201915b5050505050905090565b60006103458261074b565b506000908152600460205260409020546001600160a01b031690565b600061036c826104c7565b9050806001600160a01b0316836001600160a01b0316036103de5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103fa57506103fa8133610215565b61046c5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103d5565b61047683836107ad565b505050565b610485338261081b565b6104a15760405162461bcd60e51b81526004016103d59061135a565b610476838383610899565b610476838383604051806020016040528060008152506105cb565b6000818152600260205260408120546001600160a01b0316806102a25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103d5565b60006001600160a01b0382166105915760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103d5565b506001600160a01b031660009081526003602052604090205490565b6060600180546102b790611320565b6105c73383836109fd565b5050565b6105d5338361081b565b6105f15760405162461bcd60e51b81526004016103d59061135a565b6105fd84848484610acb565b50505050565b606061060e8261074b565b6000828152600660205260408120805461062790611320565b80601f016020809104026020016040519081016040528092919081815260200182805461065390611320565b80156106a05780601f10610675576101008083540402835291602001916106a0565b820191906000526020600020905b81548152906001019060200180831161068357829003601f168201915b5050505050905060006106be60408051602081019091526000815290565b905080516000036106d0575092915050565b8151156107025780826040516020016106ea9291906113a7565b60405160208183030381529060405292505050919050565b61070b84610afe565b949350505050565b6000610723600780546001019055565b600061072e60075490565b905061073a8482610b71565b6107448184610cfc565b9392505050565b6000818152600260205260409020546001600160a01b03166107aa5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103d5565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906107e2826104c7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610827836104c7565b9050806001600160a01b0316846001600160a01b0316148061086e57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b8061070b5750836001600160a01b03166108878461033a565b6001600160a01b031614949350505050565b826001600160a01b03166108ac826104c7565b6001600160a01b0316146108d25760405162461bcd60e51b81526004016103d5906113d6565b6001600160a01b0382166109345760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103d5565b826001600160a01b0316610947826104c7565b6001600160a01b03161461096d5760405162461bcd60e51b81526004016103d5906113d6565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610a5e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103d5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610ad6848484610899565b610ae284848484610d8f565b6105fd5760405162461bcd60e51b81526004016103d59061141b565b6060610b098261074b565b6000610b2060408051602081019091526000815290565b90506000815111610b405760405180602001604052806000815250610744565b80610b4a84610e90565b604051602001610b5b9291906113a7565b6040516020818303038152906040529392505050565b6001600160a01b038216610bc75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103d5565b6000818152600260205260409020546001600160a01b031615610c2c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103d5565b6000818152600260205260409020546001600160a01b031615610c915760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103d5565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b0316610d775760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016103d5565b600082815260066020526040902061047682826114bb565b60006001600160a01b0384163b15610e8557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610dd390339089908890889060040161157b565b6020604051808303816000875af1925050508015610e0e575060408051601f3d908101601f19168201909252610e0b918101906115b8565b60015b610e6b573d808015610e3c576040519150601f19603f3d011682016040523d82523d6000602084013e610e41565b606091505b508051600003610e635760405162461bcd60e51b81526004016103d59061141b565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061070b565b506001949350505050565b60606000610e9d83610f23565b600101905060008167ffffffffffffffff811115610ebd57610ebd611183565b6040519080825280601f01601f191660200182016040528015610ee7576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610ef157509392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610f625772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610f8e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610fac57662386f26fc10000830492506010015b6305f5e1008310610fc4576305f5e100830492506008015b6127108310610fd857612710830492506004015b60648310610fea576064830492506002015b600a83106102a25760010192915050565b6001600160e01b0319811681146107aa57600080fd5b60006020828403121561102357600080fd5b813561074481610ffb565b60005b83811015611049578181015183820152602001611031565b50506000910152565b6000815180845261106a81602086016020860161102e565b601f01601f19169290920160200192915050565b6020815260006107446020830184611052565b6000602082840312156110a357600080fd5b5035919050565b80356001600160a01b03811681146110c157600080fd5b919050565b600080604083850312156110d957600080fd5b6110e2836110aa565b946020939093013593505050565b60008060006060848603121561110557600080fd5b61110e846110aa565b925061111c602085016110aa565b9150604084013590509250925092565b60006020828403121561113e57600080fd5b610744826110aa565b6000806040838503121561115a57600080fd5b611163836110aa565b91506020830135801515811461117857600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156111b4576111b4611183565b604051601f8501601f19908116603f011681019082821181831017156111dc576111dc611183565b816040528093508581528686860111156111f557600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561122557600080fd5b61122e856110aa565b935061123c602086016110aa565b925060408501359150606085013567ffffffffffffffff81111561125f57600080fd5b8501601f8101871361127057600080fd5b61127f87823560208401611199565b91505092959194509250565b6000806040838503121561129e57600080fd5b6112a7836110aa565b91506112b5602084016110aa565b90509250929050565b600080604083850312156112d157600080fd5b6112da836110aa565b9150602083013567ffffffffffffffff8111156112f657600080fd5b8301601f8101851361130757600080fd5b61131685823560208401611199565b9150509250929050565b600181811c9082168061133457607f821691505b60208210810361135457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b600083516113b981846020880161102e565b8351908301906113cd81836020880161102e565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b601f82111561047657600081815260208120601f850160051c810160208610156114945750805b601f850160051c820191505b818110156114b3578281556001016114a0565b505050505050565b815167ffffffffffffffff8111156114d5576114d5611183565b6114e9816114e38454611320565b8461146d565b602080601f83116001811461151e57600084156115065750858301515b600019600386901b1c1916600185901b1785556114b3565b600085815260208120601f198616915b8281101561154d5788860151825594840194600190910190840161152e565b508582101561156b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906115ae90830184611052565b9695505050505050565b6000602082840312156115ca57600080fd5b815161074481610ffb56fea2646970667358221220b4303f5366e29fa93786371759caeea4f5a01cddd42d2ba6c7575ff5501c727164736f6c63430008110033",
367 | "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063b88d4fde11610066578063b88d4fde146101e1578063c87b56dd146101f4578063e985e9c514610207578063eacabe141461024357600080fd5b806370a08231146101a557806395d89b41146101c6578063a22cb465146101ce57600080fd5b8063095ea7b3116100c8578063095ea7b31461015757806323b872dd1461016c57806342842e0e1461017f5780636352211e1461019257600080fd5b806301ffc9a7146100ef57806306fdde0314610117578063081812fc1461012c575b600080fd5b6101026100fd366004611011565b610256565b60405190151581526020015b60405180910390f35b61011f6102a8565b60405161010e919061107e565b61013f61013a366004611091565b61033a565b6040516001600160a01b03909116815260200161010e565b61016a6101653660046110c6565b610361565b005b61016a61017a3660046110f0565b61047b565b61016a61018d3660046110f0565b6104ac565b61013f6101a0366004611091565b6104c7565b6101b86101b336600461112c565b610527565b60405190815260200161010e565b61011f6105ad565b61016a6101dc366004611147565b6105bc565b61016a6101ef36600461120f565b6105cb565b61011f610202366004611091565b610603565b61010261021536600461128b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101b86102513660046112be565b610713565b60006001600160e01b031982166380ac58cd60e01b148061028757506001600160e01b03198216635b5e139f60e01b145b806102a257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102b790611320565b80601f01602080910402602001604051908101604052809291908181526020018280546102e390611320565b80156103305780601f1061030557610100808354040283529160200191610330565b820191906000526020600020905b81548152906001019060200180831161031357829003601f168201915b5050505050905090565b60006103458261074b565b506000908152600460205260409020546001600160a01b031690565b600061036c826104c7565b9050806001600160a01b0316836001600160a01b0316036103de5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103fa57506103fa8133610215565b61046c5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103d5565b61047683836107ad565b505050565b610485338261081b565b6104a15760405162461bcd60e51b81526004016103d59061135a565b610476838383610899565b610476838383604051806020016040528060008152506105cb565b6000818152600260205260408120546001600160a01b0316806102a25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103d5565b60006001600160a01b0382166105915760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103d5565b506001600160a01b031660009081526003602052604090205490565b6060600180546102b790611320565b6105c73383836109fd565b5050565b6105d5338361081b565b6105f15760405162461bcd60e51b81526004016103d59061135a565b6105fd84848484610acb565b50505050565b606061060e8261074b565b6000828152600660205260408120805461062790611320565b80601f016020809104026020016040519081016040528092919081815260200182805461065390611320565b80156106a05780601f10610675576101008083540402835291602001916106a0565b820191906000526020600020905b81548152906001019060200180831161068357829003601f168201915b5050505050905060006106be60408051602081019091526000815290565b905080516000036106d0575092915050565b8151156107025780826040516020016106ea9291906113a7565b60405160208183030381529060405292505050919050565b61070b84610afe565b949350505050565b6000610723600780546001019055565b600061072e60075490565b905061073a8482610b71565b6107448184610cfc565b9392505050565b6000818152600260205260409020546001600160a01b03166107aa5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103d5565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906107e2826104c7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610827836104c7565b9050806001600160a01b0316846001600160a01b0316148061086e57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b8061070b5750836001600160a01b03166108878461033a565b6001600160a01b031614949350505050565b826001600160a01b03166108ac826104c7565b6001600160a01b0316146108d25760405162461bcd60e51b81526004016103d5906113d6565b6001600160a01b0382166109345760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103d5565b826001600160a01b0316610947826104c7565b6001600160a01b03161461096d5760405162461bcd60e51b81526004016103d5906113d6565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610a5e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103d5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610ad6848484610899565b610ae284848484610d8f565b6105fd5760405162461bcd60e51b81526004016103d59061141b565b6060610b098261074b565b6000610b2060408051602081019091526000815290565b90506000815111610b405760405180602001604052806000815250610744565b80610b4a84610e90565b604051602001610b5b9291906113a7565b6040516020818303038152906040529392505050565b6001600160a01b038216610bc75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103d5565b6000818152600260205260409020546001600160a01b031615610c2c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103d5565b6000818152600260205260409020546001600160a01b031615610c915760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103d5565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600260205260409020546001600160a01b0316610d775760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016103d5565b600082815260066020526040902061047682826114bb565b60006001600160a01b0384163b15610e8557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610dd390339089908890889060040161157b565b6020604051808303816000875af1925050508015610e0e575060408051601f3d908101601f19168201909252610e0b918101906115b8565b60015b610e6b573d808015610e3c576040519150601f19603f3d011682016040523d82523d6000602084013e610e41565b606091505b508051600003610e635760405162461bcd60e51b81526004016103d59061141b565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061070b565b506001949350505050565b60606000610e9d83610f23565b600101905060008167ffffffffffffffff811115610ebd57610ebd611183565b6040519080825280601f01601f191660200182016040528015610ee7576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610ef157509392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610f625772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610f8e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610fac57662386f26fc10000830492506010015b6305f5e1008310610fc4576305f5e100830492506008015b6127108310610fd857612710830492506004015b60648310610fea576064830492506002015b600a83106102a25760010192915050565b6001600160e01b0319811681146107aa57600080fd5b60006020828403121561102357600080fd5b813561074481610ffb565b60005b83811015611049578181015183820152602001611031565b50506000910152565b6000815180845261106a81602086016020860161102e565b601f01601f19169290920160200192915050565b6020815260006107446020830184611052565b6000602082840312156110a357600080fd5b5035919050565b80356001600160a01b03811681146110c157600080fd5b919050565b600080604083850312156110d957600080fd5b6110e2836110aa565b946020939093013593505050565b60008060006060848603121561110557600080fd5b61110e846110aa565b925061111c602085016110aa565b9150604084013590509250925092565b60006020828403121561113e57600080fd5b610744826110aa565b6000806040838503121561115a57600080fd5b611163836110aa565b91506020830135801515811461117857600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156111b4576111b4611183565b604051601f8501601f19908116603f011681019082821181831017156111dc576111dc611183565b816040528093508581528686860111156111f557600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561122557600080fd5b61122e856110aa565b935061123c602086016110aa565b925060408501359150606085013567ffffffffffffffff81111561125f57600080fd5b8501601f8101871361127057600080fd5b61127f87823560208401611199565b91505092959194509250565b6000806040838503121561129e57600080fd5b6112a7836110aa565b91506112b5602084016110aa565b90509250929050565b600080604083850312156112d157600080fd5b6112da836110aa565b9150602083013567ffffffffffffffff8111156112f657600080fd5b8301601f8101851361130757600080fd5b61131685823560208401611199565b9150509250929050565b600181811c9082168061133457607f821691505b60208210810361135457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b600083516113b981846020880161102e565b8351908301906113cd81836020880161102e565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b601f82111561047657600081815260208120601f850160051c810160208610156114945750805b601f850160051c820191505b818110156114b3578281556001016114a0565b505050505050565b815167ffffffffffffffff8111156114d5576114d5611183565b6114e9816114e38454611320565b8461146d565b602080601f83116001811461151e57600084156115065750858301515b600019600386901b1c1916600185901b1785556114b3565b600085815260208120601f198616915b8281101561154d5788860151825594840194600190910190840161152e565b508582101561156b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906115ae90830184611052565b9695505050505050565b6000602082840312156115ca57600080fd5b815161074481610ffb56fea2646970667358221220b4303f5366e29fa93786371759caeea4f5a01cddd42d2ba6c7575ff5501c727164736f6c63430008110033",
368 | "linkReferences": {},
369 | "deployedLinkReferences": {}
370 | }
371 |
--------------------------------------------------------------------------------
/NFT/src/Nft-Minter.json:
--------------------------------------------------------------------------------
1 | {
2 | "_format": "hh-sol-artifact-1",
3 | "contractName": "NFTMinter",
4 | "sourceName": "contracts/NftMinter.sol",
5 | "abi": [
6 | {
7 | "inputs": [],
8 | "stateMutability": "nonpayable",
9 | "type": "constructor"
10 | },
11 | {
12 | "anonymous": false,
13 | "inputs": [
14 | {
15 | "indexed": true,
16 | "internalType": "address",
17 | "name": "owner",
18 | "type": "address"
19 | },
20 | {
21 | "indexed": true,
22 | "internalType": "address",
23 | "name": "approved",
24 | "type": "address"
25 | },
26 | {
27 | "indexed": true,
28 | "internalType": "uint256",
29 | "name": "tokenId",
30 | "type": "uint256"
31 | }
32 | ],
33 | "name": "Approval",
34 | "type": "event"
35 | },
36 | {
37 | "anonymous": false,
38 | "inputs": [
39 | {
40 | "indexed": true,
41 | "internalType": "address",
42 | "name": "owner",
43 | "type": "address"
44 | },
45 | {
46 | "indexed": true,
47 | "internalType": "address",
48 | "name": "operator",
49 | "type": "address"
50 | },
51 | {
52 | "indexed": false,
53 | "internalType": "bool",
54 | "name": "approved",
55 | "type": "bool"
56 | }
57 | ],
58 | "name": "ApprovalForAll",
59 | "type": "event"
60 | },
61 | {
62 | "anonymous": false,
63 | "inputs": [
64 | {
65 | "indexed": true,
66 | "internalType": "address",
67 | "name": "from",
68 | "type": "address"
69 | },
70 | {
71 | "indexed": true,
72 | "internalType": "address",
73 | "name": "to",
74 | "type": "address"
75 | },
76 | {
77 | "indexed": true,
78 | "internalType": "uint256",
79 | "name": "tokenId",
80 | "type": "uint256"
81 | }
82 | ],
83 | "name": "Transfer",
84 | "type": "event"
85 | },
86 | {
87 | "inputs": [
88 | {
89 | "internalType": "address",
90 | "name": "to",
91 | "type": "address"
92 | },
93 | {
94 | "internalType": "uint256",
95 | "name": "tokenId",
96 | "type": "uint256"
97 | }
98 | ],
99 | "name": "approve",
100 | "outputs": [],
101 | "stateMutability": "nonpayable",
102 | "type": "function"
103 | },
104 | {
105 | "inputs": [
106 | {
107 | "internalType": "address",
108 | "name": "owner",
109 | "type": "address"
110 | }
111 | ],
112 | "name": "balanceOf",
113 | "outputs": [
114 | {
115 | "internalType": "uint256",
116 | "name": "",
117 | "type": "uint256"
118 | }
119 | ],
120 | "stateMutability": "view",
121 | "type": "function"
122 | },
123 | {
124 | "inputs": [
125 | {
126 | "internalType": "uint256",
127 | "name": "tokenId",
128 | "type": "uint256"
129 | }
130 | ],
131 | "name": "getApproved",
132 | "outputs": [
133 | {
134 | "internalType": "address",
135 | "name": "",
136 | "type": "address"
137 | }
138 | ],
139 | "stateMutability": "view",
140 | "type": "function"
141 | },
142 | {
143 | "inputs": [
144 | {
145 | "internalType": "address",
146 | "name": "owner",
147 | "type": "address"
148 | },
149 | {
150 | "internalType": "address",
151 | "name": "operator",
152 | "type": "address"
153 | }
154 | ],
155 | "name": "isApprovedForAll",
156 | "outputs": [
157 | {
158 | "internalType": "bool",
159 | "name": "",
160 | "type": "bool"
161 | }
162 | ],
163 | "stateMutability": "view",
164 | "type": "function"
165 | },
166 | {
167 | "inputs": [
168 | {
169 | "internalType": "address",
170 | "name": "recipient",
171 | "type": "address"
172 | },
173 | {
174 | "internalType": "string",
175 | "name": "tokenURI",
176 | "type": "string"
177 | }
178 | ],
179 | "name": "mintNFT",
180 | "outputs": [
181 | {
182 | "internalType": "uint256",
183 | "name": "",
184 | "type": "uint256"
185 | }
186 | ],
187 | "stateMutability": "nonpayable",
188 | "type": "function"
189 | },
190 | {
191 | "inputs": [],
192 | "name": "name",
193 | "outputs": [
194 | {
195 | "internalType": "string",
196 | "name": "",
197 | "type": "string"
198 | }
199 | ],
200 | "stateMutability": "view",
201 | "type": "function"
202 | },
203 | {
204 | "inputs": [
205 | {
206 | "internalType": "uint256",
207 | "name": "tokenId",
208 | "type": "uint256"
209 | }
210 | ],
211 | "name": "ownerOf",
212 | "outputs": [
213 | {
214 | "internalType": "address",
215 | "name": "",
216 | "type": "address"
217 | }
218 | ],
219 | "stateMutability": "view",
220 | "type": "function"
221 | },
222 | {
223 | "inputs": [
224 | {
225 | "internalType": "address",
226 | "name": "from",
227 | "type": "address"
228 | },
229 | {
230 | "internalType": "address",
231 | "name": "to",
232 | "type": "address"
233 | },
234 | {
235 | "internalType": "uint256",
236 | "name": "tokenId",
237 | "type": "uint256"
238 | }
239 | ],
240 | "name": "safeTransferFrom",
241 | "outputs": [],
242 | "stateMutability": "nonpayable",
243 | "type": "function"
244 | },
245 | {
246 | "inputs": [
247 | {
248 | "internalType": "address",
249 | "name": "from",
250 | "type": "address"
251 | },
252 | {
253 | "internalType": "address",
254 | "name": "to",
255 | "type": "address"
256 | },
257 | {
258 | "internalType": "uint256",
259 | "name": "tokenId",
260 | "type": "uint256"
261 | },
262 | {
263 | "internalType": "bytes",
264 | "name": "data",
265 | "type": "bytes"
266 | }
267 | ],
268 | "name": "safeTransferFrom",
269 | "outputs": [],
270 | "stateMutability": "nonpayable",
271 | "type": "function"
272 | },
273 | {
274 | "inputs": [
275 | {
276 | "internalType": "address",
277 | "name": "operator",
278 | "type": "address"
279 | },
280 | {
281 | "internalType": "bool",
282 | "name": "approved",
283 | "type": "bool"
284 | }
285 | ],
286 | "name": "setApprovalForAll",
287 | "outputs": [],
288 | "stateMutability": "nonpayable",
289 | "type": "function"
290 | },
291 | {
292 | "inputs": [
293 | {
294 | "internalType": "bytes4",
295 | "name": "interfaceId",
296 | "type": "bytes4"
297 | }
298 | ],
299 | "name": "supportsInterface",
300 | "outputs": [
301 | {
302 | "internalType": "bool",
303 | "name": "",
304 | "type": "bool"
305 | }
306 | ],
307 | "stateMutability": "view",
308 | "type": "function"
309 | },
310 | {
311 | "inputs": [],
312 | "name": "symbol",
313 | "outputs": [
314 | {
315 | "internalType": "string",
316 | "name": "",
317 | "type": "string"
318 | }
319 | ],
320 | "stateMutability": "view",
321 | "type": "function"
322 | },
323 | {
324 | "inputs": [
325 | {
326 | "internalType": "uint256",
327 | "name": "tokenId",
328 | "type": "uint256"
329 | }
330 | ],
331 | "name": "tokenURI",
332 | "outputs": [
333 | {
334 | "internalType": "string",
335 | "name": "",
336 | "type": "string"
337 | }
338 | ],
339 | "stateMutability": "view",
340 | "type": "function"
341 | },
342 | {
343 | "inputs": [
344 | {
345 | "internalType": "address",
346 | "name": "from",
347 | "type": "address"
348 | },
349 | {
350 | "internalType": "address",
351 | "name": "to",
352 | "type": "address"
353 | },
354 | {
355 | "internalType": "uint256",
356 | "name": "tokenId",
357 | "type": "uint256"
358 | }
359 | ],
360 | "name": "transferFrom",
361 | "outputs": [],
362 | "stateMutability": "nonpayable",
363 | "type": "function"
364 | }
365 | ],
366 | "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600981526020017f4e46544d696e74657200000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4e46544d00000000000000000000000000000000000000000000000000000000815250816000908051906020019062000096929190620000b8565b508060019080519060200190620000af929190620000b8565b505050620001cd565b828054620000c69062000168565b90600052602060002090601f016020900481019282620000ea576000855562000136565b82601f106200010557805160ff191683800117855562000136565b8280016001018555821562000136579182015b828111156200013557825182559160200191906001019062000118565b5b50905062000145919062000149565b5090565b5b80821115620001645760008160009055506001016200014a565b5090565b600060028204905060018216806200018157607f821691505b602082108114156200019857620001976200019e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61294c80620001dd6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063b88d4fde11610066578063b88d4fde1461025b578063c87b56dd14610277578063e985e9c5146102a7578063eacabe14146102d7576100ea565b806370a08231146101f157806395d89b4114610221578063a22cb4651461023f576100ea565b8063095ea7b3116100c8578063095ea7b31461016d57806323b872dd1461018957806342842e0e146101a55780636352211e146101c1576100ea565b806301ffc9a7146100ef57806306fdde031461011f578063081812fc1461013d575b600080fd5b61010960048036038101906101049190611dfa565b610307565b6040516101169190612174565b60405180910390f35b6101276103e9565b604051610134919061218f565b60405180910390f35b61015760048036038101906101529190611e4c565b61047b565b604051610164919061210d565b60405180910390f35b61018760048036038101906101829190611dbe565b6104c1565b005b6101a3600480360381019061019e9190611c64565b6105d9565b005b6101bf60048036038101906101ba9190611c64565b610639565b005b6101db60048036038101906101d69190611e4c565b610659565b6040516101e8919061210d565b60405180910390f35b61020b60048036038101906102069190611bff565b6106e0565b6040516102189190612331565b60405180910390f35b610229610798565b604051610236919061218f565b60405180910390f35b61025960048036038101906102549190611d2e565b61082a565b005b61027560048036038101906102709190611cb3565b610840565b005b610291600480360381019061028c9190611e4c565b6108a2565b60405161029e919061218f565b60405180910390f35b6102c160048036038101906102bc9190611c28565b6109b5565b6040516102ce9190612174565b60405180910390f35b6102f160048036038101906102ec9190611d6a565b610a49565b6040516102fe9190612331565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103d257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103e257506103e182610a81565b5b9050919050565b6060600080546103f8906124cc565b80601f0160208091040260200160405190810160405280929190818152602001828054610424906124cc565b80156104715780601f1061044657610100808354040283529160200191610471565b820191906000526020600020905b81548152906001019060200180831161045457829003601f168201915b5050505050905090565b600061048682610aeb565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104cc82610659565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561053d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610534906122f1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661055c610b36565b73ffffffffffffffffffffffffffffffffffffffff16148061058b575061058a81610585610b36565b6109b5565b5b6105ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c190612311565b60405180910390fd5b6105d48383610b3e565b505050565b6105ea6105e4610b36565b82610bf7565b610629576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610620906121b1565b60405180910390fd5b610634838383610c8c565b505050565b61065483838360405180602001604052806000815250610840565b505050565b60008061066583610f86565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ce906122d1565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074890612271565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600180546107a7906124cc565b80601f01602080910402602001604051908101604052809291908181526020018280546107d3906124cc565b80156108205780601f106107f557610100808354040283529160200191610820565b820191906000526020600020905b81548152906001019060200180831161080357829003601f168201915b5050505050905090565b61083c610835610b36565b8383610fc3565b5050565b61085161084b610b36565b83610bf7565b610890576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610887906121b1565b60405180910390fd5b61089c84848484611130565b50505050565b60606108ad82610aeb565b60006006600084815260200190815260200160002080546108cd906124cc565b80601f01602080910402602001604051908101604052809291908181526020018280546108f9906124cc565b80156109465780601f1061091b57610100808354040283529160200191610946565b820191906000526020600020905b81548152906001019060200180831161092957829003601f168201915b50505050509050600061095761118c565b905060008151141561096d5781925050506109b0565b6000825111156109a257808260405160200161098a9291906120e9565b604051602081830303815290604052925050506109b0565b6109ab846111a3565b925050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000610a55600761120b565b6000610a616007611221565b9050610a6d848261122f565b610a77818461144d565b8091505092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610af4816114c1565b610b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2a906122d1565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610bb183610659565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610c0383610659565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c455750610c4481856109b5565b5b80610c8357508373ffffffffffffffffffffffffffffffffffffffff16610c6b8461047b565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610cac82610659565b73ffffffffffffffffffffffffffffffffffffffff1614610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf9906121f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6990612231565b60405180910390fd5b610d7f8383836001611502565b8273ffffffffffffffffffffffffffffffffffffffff16610d9f82610659565b73ffffffffffffffffffffffffffffffffffffffff1614610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec906121f1565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610f818383836001611508565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990612251565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516111239190612174565b60405180910390a3505050565b61113b848484610c8c565b6111478484848461150e565b611186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117d906121d1565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606111ae82610aeb565b60006111b861118c565b905060008151116111d85760405180602001604052806000815250611203565b806111e2846116a5565b6040516020016111f39291906120e9565b6040516020818303038152906040525b915050919050565b6001816000016000828254019250508190555050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561129f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611296906122b1565b60405180910390fd5b6112a8816114c1565b156112e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112df90612211565b60405180910390fd5b6112f6600083836001611502565b6112ff816114c1565b1561133f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133690612211565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611449600083836001611508565b5050565b611456826114c1565b611495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148c90612291565b60405180910390fd5b806006600084815260200190815260200160002090805190602001906114bc929190611a23565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166114e383610f86565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b50505050565b50505050565b600061152f8473ffffffffffffffffffffffffffffffffffffffff166117c9565b15611698578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611558610b36565b8786866040518563ffffffff1660e01b815260040161157a9493929190612128565b602060405180830381600087803b15801561159457600080fd5b505af19250505080156115c557506040513d601f19601f820116820180604052508101906115c29190611e23565b60015b611648573d80600081146115f5576040519150601f19603f3d011682016040523d82523d6000602084013e6115fa565b606091505b50600081511415611640576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611637906121d1565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061169d565b600190505b949350505050565b6060600060016116b4846117ec565b01905060008167ffffffffffffffff8111156116f9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561172b5781602001600182028036833780820191505090505b509050600082602001820190505b6001156117be578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816117a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b04945060008514156117b9576117be565b611739565b819350505050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611870577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611866577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506040810190505b6d04ee2d6d415b85acef810000000083106118d3576d04ee2d6d415b85acef810000000083816118c9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506020810190505b662386f26fc10000831061192857662386f26fc10000838161191e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506010810190505b6305f5e1008310611977576305f5e100838161196d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506008810190505b61271083106119c25761271083816119b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506004810190505b60648310611a0b5760648381611a01577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506002810190505b600a8310611a1a576001810190505b80915050919050565b828054611a2f906124cc565b90600052602060002090601f016020900481019282611a515760008555611a98565b82601f10611a6a57805160ff1916838001178555611a98565b82800160010185558215611a98579182015b82811115611a97578251825591602001919060010190611a7c565b5b509050611aa59190611aa9565b5090565b5b80821115611ac2576000816000905550600101611aaa565b5090565b6000611ad9611ad484612371565b61234c565b905082815260208101848484011115611af157600080fd5b611afc84828561248a565b509392505050565b6000611b17611b12846123a2565b61234c565b905082815260208101848484011115611b2f57600080fd5b611b3a84828561248a565b509392505050565b600081359050611b51816128ba565b92915050565b600081359050611b66816128d1565b92915050565b600081359050611b7b816128e8565b92915050565b600081519050611b90816128e8565b92915050565b600082601f830112611ba757600080fd5b8135611bb7848260208601611ac6565b91505092915050565b600082601f830112611bd157600080fd5b8135611be1848260208601611b04565b91505092915050565b600081359050611bf9816128ff565b92915050565b600060208284031215611c1157600080fd5b6000611c1f84828501611b42565b91505092915050565b60008060408385031215611c3b57600080fd5b6000611c4985828601611b42565b9250506020611c5a85828601611b42565b9150509250929050565b600080600060608486031215611c7957600080fd5b6000611c8786828701611b42565b9350506020611c9886828701611b42565b9250506040611ca986828701611bea565b9150509250925092565b60008060008060808587031215611cc957600080fd5b6000611cd787828801611b42565b9450506020611ce887828801611b42565b9350506040611cf987828801611bea565b925050606085013567ffffffffffffffff811115611d1657600080fd5b611d2287828801611b96565b91505092959194509250565b60008060408385031215611d4157600080fd5b6000611d4f85828601611b42565b9250506020611d6085828601611b57565b9150509250929050565b60008060408385031215611d7d57600080fd5b6000611d8b85828601611b42565b925050602083013567ffffffffffffffff811115611da857600080fd5b611db485828601611bc0565b9150509250929050565b60008060408385031215611dd157600080fd5b6000611ddf85828601611b42565b9250506020611df085828601611bea565b9150509250929050565b600060208284031215611e0c57600080fd5b6000611e1a84828501611b6c565b91505092915050565b600060208284031215611e3557600080fd5b6000611e4384828501611b81565b91505092915050565b600060208284031215611e5e57600080fd5b6000611e6c84828501611bea565b91505092915050565b611e7e81612416565b82525050565b611e8d81612428565b82525050565b6000611e9e826123d3565b611ea881856123e9565b9350611eb8818560208601612499565b611ec18161258d565b840191505092915050565b6000611ed7826123de565b611ee181856123fa565b9350611ef1818560208601612499565b611efa8161258d565b840191505092915050565b6000611f10826123de565b611f1a818561240b565b9350611f2a818560208601612499565b80840191505092915050565b6000611f43602d836123fa565b9150611f4e8261259e565b604082019050919050565b6000611f666032836123fa565b9150611f71826125ed565b604082019050919050565b6000611f896025836123fa565b9150611f948261263c565b604082019050919050565b6000611fac601c836123fa565b9150611fb78261268b565b602082019050919050565b6000611fcf6024836123fa565b9150611fda826126b4565b604082019050919050565b6000611ff26019836123fa565b9150611ffd82612703565b602082019050919050565b60006120156029836123fa565b91506120208261272c565b604082019050919050565b6000612038602e836123fa565b91506120438261277b565b604082019050919050565b600061205b6020836123fa565b9150612066826127ca565b602082019050919050565b600061207e6018836123fa565b9150612089826127f3565b602082019050919050565b60006120a16021836123fa565b91506120ac8261281c565b604082019050919050565b60006120c4603d836123fa565b91506120cf8261286b565b604082019050919050565b6120e381612480565b82525050565b60006120f58285611f05565b91506121018284611f05565b91508190509392505050565b60006020820190506121226000830184611e75565b92915050565b600060808201905061213d6000830187611e75565b61214a6020830186611e75565b61215760408301856120da565b81810360608301526121698184611e93565b905095945050505050565b60006020820190506121896000830184611e84565b92915050565b600060208201905081810360008301526121a98184611ecc565b905092915050565b600060208201905081810360008301526121ca81611f36565b9050919050565b600060208201905081810360008301526121ea81611f59565b9050919050565b6000602082019050818103600083015261220a81611f7c565b9050919050565b6000602082019050818103600083015261222a81611f9f565b9050919050565b6000602082019050818103600083015261224a81611fc2565b9050919050565b6000602082019050818103600083015261226a81611fe5565b9050919050565b6000602082019050818103600083015261228a81612008565b9050919050565b600060208201905081810360008301526122aa8161202b565b9050919050565b600060208201905081810360008301526122ca8161204e565b9050919050565b600060208201905081810360008301526122ea81612071565b9050919050565b6000602082019050818103600083015261230a81612094565b9050919050565b6000602082019050818103600083015261232a816120b7565b9050919050565b600060208201905061234660008301846120da565b92915050565b6000612356612367565b905061236282826124fe565b919050565b6000604051905090565b600067ffffffffffffffff82111561238c5761238b61255e565b5b6123958261258d565b9050602081019050919050565b600067ffffffffffffffff8211156123bd576123bc61255e565b5b6123c68261258d565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061242182612460565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156124b757808201518184015260208101905061249c565b838111156124c6576000848401525b50505050565b600060028204905060018216806124e457607f821691505b602082108114156124f8576124f761252f565b5b50919050565b6125078261258d565b810181811067ffffffffffffffff821117156125265761252561255e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6128c381612416565b81146128ce57600080fd5b50565b6128da81612428565b81146128e557600080fd5b50565b6128f181612434565b81146128fc57600080fd5b50565b61290881612480565b811461291357600080fd5b5056fea2646970667358221220082f54c09ee687c797ca2adda487d63d5a18c693196b276198572ba214b7c3d064736f6c63430008030033",
367 | "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063b88d4fde11610066578063b88d4fde1461025b578063c87b56dd14610277578063e985e9c5146102a7578063eacabe14146102d7576100ea565b806370a08231146101f157806395d89b4114610221578063a22cb4651461023f576100ea565b8063095ea7b3116100c8578063095ea7b31461016d57806323b872dd1461018957806342842e0e146101a55780636352211e146101c1576100ea565b806301ffc9a7146100ef57806306fdde031461011f578063081812fc1461013d575b600080fd5b61010960048036038101906101049190611dfa565b610307565b6040516101169190612174565b60405180910390f35b6101276103e9565b604051610134919061218f565b60405180910390f35b61015760048036038101906101529190611e4c565b61047b565b604051610164919061210d565b60405180910390f35b61018760048036038101906101829190611dbe565b6104c1565b005b6101a3600480360381019061019e9190611c64565b6105d9565b005b6101bf60048036038101906101ba9190611c64565b610639565b005b6101db60048036038101906101d69190611e4c565b610659565b6040516101e8919061210d565b60405180910390f35b61020b60048036038101906102069190611bff565b6106e0565b6040516102189190612331565b60405180910390f35b610229610798565b604051610236919061218f565b60405180910390f35b61025960048036038101906102549190611d2e565b61082a565b005b61027560048036038101906102709190611cb3565b610840565b005b610291600480360381019061028c9190611e4c565b6108a2565b60405161029e919061218f565b60405180910390f35b6102c160048036038101906102bc9190611c28565b6109b5565b6040516102ce9190612174565b60405180910390f35b6102f160048036038101906102ec9190611d6a565b610a49565b6040516102fe9190612331565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103d257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103e257506103e182610a81565b5b9050919050565b6060600080546103f8906124cc565b80601f0160208091040260200160405190810160405280929190818152602001828054610424906124cc565b80156104715780601f1061044657610100808354040283529160200191610471565b820191906000526020600020905b81548152906001019060200180831161045457829003601f168201915b5050505050905090565b600061048682610aeb565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104cc82610659565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561053d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610534906122f1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661055c610b36565b73ffffffffffffffffffffffffffffffffffffffff16148061058b575061058a81610585610b36565b6109b5565b5b6105ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c190612311565b60405180910390fd5b6105d48383610b3e565b505050565b6105ea6105e4610b36565b82610bf7565b610629576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610620906121b1565b60405180910390fd5b610634838383610c8c565b505050565b61065483838360405180602001604052806000815250610840565b505050565b60008061066583610f86565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ce906122d1565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074890612271565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600180546107a7906124cc565b80601f01602080910402602001604051908101604052809291908181526020018280546107d3906124cc565b80156108205780601f106107f557610100808354040283529160200191610820565b820191906000526020600020905b81548152906001019060200180831161080357829003601f168201915b5050505050905090565b61083c610835610b36565b8383610fc3565b5050565b61085161084b610b36565b83610bf7565b610890576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610887906121b1565b60405180910390fd5b61089c84848484611130565b50505050565b60606108ad82610aeb565b60006006600084815260200190815260200160002080546108cd906124cc565b80601f01602080910402602001604051908101604052809291908181526020018280546108f9906124cc565b80156109465780601f1061091b57610100808354040283529160200191610946565b820191906000526020600020905b81548152906001019060200180831161092957829003601f168201915b50505050509050600061095761118c565b905060008151141561096d5781925050506109b0565b6000825111156109a257808260405160200161098a9291906120e9565b604051602081830303815290604052925050506109b0565b6109ab846111a3565b925050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000610a55600761120b565b6000610a616007611221565b9050610a6d848261122f565b610a77818461144d565b8091505092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610af4816114c1565b610b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2a906122d1565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610bb183610659565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610c0383610659565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c455750610c4481856109b5565b5b80610c8357508373ffffffffffffffffffffffffffffffffffffffff16610c6b8461047b565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610cac82610659565b73ffffffffffffffffffffffffffffffffffffffff1614610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf9906121f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6990612231565b60405180910390fd5b610d7f8383836001611502565b8273ffffffffffffffffffffffffffffffffffffffff16610d9f82610659565b73ffffffffffffffffffffffffffffffffffffffff1614610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec906121f1565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610f818383836001611508565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990612251565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516111239190612174565b60405180910390a3505050565b61113b848484610c8c565b6111478484848461150e565b611186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117d906121d1565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606111ae82610aeb565b60006111b861118c565b905060008151116111d85760405180602001604052806000815250611203565b806111e2846116a5565b6040516020016111f39291906120e9565b6040516020818303038152906040525b915050919050565b6001816000016000828254019250508190555050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561129f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611296906122b1565b60405180910390fd5b6112a8816114c1565b156112e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112df90612211565b60405180910390fd5b6112f6600083836001611502565b6112ff816114c1565b1561133f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133690612211565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611449600083836001611508565b5050565b611456826114c1565b611495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148c90612291565b60405180910390fd5b806006600084815260200190815260200160002090805190602001906114bc929190611a23565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166114e383610f86565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b50505050565b50505050565b600061152f8473ffffffffffffffffffffffffffffffffffffffff166117c9565b15611698578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611558610b36565b8786866040518563ffffffff1660e01b815260040161157a9493929190612128565b602060405180830381600087803b15801561159457600080fd5b505af19250505080156115c557506040513d601f19601f820116820180604052508101906115c29190611e23565b60015b611648573d80600081146115f5576040519150601f19603f3d011682016040523d82523d6000602084013e6115fa565b606091505b50600081511415611640576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611637906121d1565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061169d565b600190505b949350505050565b6060600060016116b4846117ec565b01905060008167ffffffffffffffff8111156116f9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561172b5781602001600182028036833780820191505090505b509050600082602001820190505b6001156117be578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816117a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b04945060008514156117b9576117be565b611739565b819350505050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611870577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611866577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506040810190505b6d04ee2d6d415b85acef810000000083106118d3576d04ee2d6d415b85acef810000000083816118c9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506020810190505b662386f26fc10000831061192857662386f26fc10000838161191e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506010810190505b6305f5e1008310611977576305f5e100838161196d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506008810190505b61271083106119c25761271083816119b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506004810190505b60648310611a0b5760648381611a01577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b0492506002810190505b600a8310611a1a576001810190505b80915050919050565b828054611a2f906124cc565b90600052602060002090601f016020900481019282611a515760008555611a98565b82601f10611a6a57805160ff1916838001178555611a98565b82800160010185558215611a98579182015b82811115611a97578251825591602001919060010190611a7c565b5b509050611aa59190611aa9565b5090565b5b80821115611ac2576000816000905550600101611aaa565b5090565b6000611ad9611ad484612371565b61234c565b905082815260208101848484011115611af157600080fd5b611afc84828561248a565b509392505050565b6000611b17611b12846123a2565b61234c565b905082815260208101848484011115611b2f57600080fd5b611b3a84828561248a565b509392505050565b600081359050611b51816128ba565b92915050565b600081359050611b66816128d1565b92915050565b600081359050611b7b816128e8565b92915050565b600081519050611b90816128e8565b92915050565b600082601f830112611ba757600080fd5b8135611bb7848260208601611ac6565b91505092915050565b600082601f830112611bd157600080fd5b8135611be1848260208601611b04565b91505092915050565b600081359050611bf9816128ff565b92915050565b600060208284031215611c1157600080fd5b6000611c1f84828501611b42565b91505092915050565b60008060408385031215611c3b57600080fd5b6000611c4985828601611b42565b9250506020611c5a85828601611b42565b9150509250929050565b600080600060608486031215611c7957600080fd5b6000611c8786828701611b42565b9350506020611c9886828701611b42565b9250506040611ca986828701611bea565b9150509250925092565b60008060008060808587031215611cc957600080fd5b6000611cd787828801611b42565b9450506020611ce887828801611b42565b9350506040611cf987828801611bea565b925050606085013567ffffffffffffffff811115611d1657600080fd5b611d2287828801611b96565b91505092959194509250565b60008060408385031215611d4157600080fd5b6000611d4f85828601611b42565b9250506020611d6085828601611b57565b9150509250929050565b60008060408385031215611d7d57600080fd5b6000611d8b85828601611b42565b925050602083013567ffffffffffffffff811115611da857600080fd5b611db485828601611bc0565b9150509250929050565b60008060408385031215611dd157600080fd5b6000611ddf85828601611b42565b9250506020611df085828601611bea565b9150509250929050565b600060208284031215611e0c57600080fd5b6000611e1a84828501611b6c565b91505092915050565b600060208284031215611e3557600080fd5b6000611e4384828501611b81565b91505092915050565b600060208284031215611e5e57600080fd5b6000611e6c84828501611bea565b91505092915050565b611e7e81612416565b82525050565b611e8d81612428565b82525050565b6000611e9e826123d3565b611ea881856123e9565b9350611eb8818560208601612499565b611ec18161258d565b840191505092915050565b6000611ed7826123de565b611ee181856123fa565b9350611ef1818560208601612499565b611efa8161258d565b840191505092915050565b6000611f10826123de565b611f1a818561240b565b9350611f2a818560208601612499565b80840191505092915050565b6000611f43602d836123fa565b9150611f4e8261259e565b604082019050919050565b6000611f666032836123fa565b9150611f71826125ed565b604082019050919050565b6000611f896025836123fa565b9150611f948261263c565b604082019050919050565b6000611fac601c836123fa565b9150611fb78261268b565b602082019050919050565b6000611fcf6024836123fa565b9150611fda826126b4565b604082019050919050565b6000611ff26019836123fa565b9150611ffd82612703565b602082019050919050565b60006120156029836123fa565b91506120208261272c565b604082019050919050565b6000612038602e836123fa565b91506120438261277b565b604082019050919050565b600061205b6020836123fa565b9150612066826127ca565b602082019050919050565b600061207e6018836123fa565b9150612089826127f3565b602082019050919050565b60006120a16021836123fa565b91506120ac8261281c565b604082019050919050565b60006120c4603d836123fa565b91506120cf8261286b565b604082019050919050565b6120e381612480565b82525050565b60006120f58285611f05565b91506121018284611f05565b91508190509392505050565b60006020820190506121226000830184611e75565b92915050565b600060808201905061213d6000830187611e75565b61214a6020830186611e75565b61215760408301856120da565b81810360608301526121698184611e93565b905095945050505050565b60006020820190506121896000830184611e84565b92915050565b600060208201905081810360008301526121a98184611ecc565b905092915050565b600060208201905081810360008301526121ca81611f36565b9050919050565b600060208201905081810360008301526121ea81611f59565b9050919050565b6000602082019050818103600083015261220a81611f7c565b9050919050565b6000602082019050818103600083015261222a81611f9f565b9050919050565b6000602082019050818103600083015261224a81611fc2565b9050919050565b6000602082019050818103600083015261226a81611fe5565b9050919050565b6000602082019050818103600083015261228a81612008565b9050919050565b600060208201905081810360008301526122aa8161202b565b9050919050565b600060208201905081810360008301526122ca8161204e565b9050919050565b600060208201905081810360008301526122ea81612071565b9050919050565b6000602082019050818103600083015261230a81612094565b9050919050565b6000602082019050818103600083015261232a816120b7565b9050919050565b600060208201905061234660008301846120da565b92915050565b6000612356612367565b905061236282826124fe565b919050565b6000604051905090565b600067ffffffffffffffff82111561238c5761238b61255e565b5b6123958261258d565b9050602081019050919050565b600067ffffffffffffffff8211156123bd576123bc61255e565b5b6123c68261258d565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061242182612460565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156124b757808201518184015260208101905061249c565b838111156124c6576000848401525b50505050565b600060028204905060018216806124e457607f821691505b602082108114156124f8576124f761252f565b5b50919050565b6125078261258d565b810181811067ffffffffffffffff821117156125265761252561255e565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6128c381612416565b81146128ce57600080fd5b50565b6128da81612428565b81146128e557600080fd5b50565b6128f181612434565b81146128fc57600080fd5b50565b61290881612480565b811461291357600080fd5b5056fea2646970667358221220082f54c09ee687c797ca2adda487d63d5a18c693196b276198572ba214b7c3d064736f6c63430008030033",
368 | "linkReferences": {},
369 | "deployedLinkReferences": {}
370 | }
371 |
--------------------------------------------------------------------------------