{"id":28337367,"url":"https://github.com/hironate/erc404","last_synced_at":"2025-07-25T12:37:50.039Z","repository":{"id":222665871,"uuid":"757433731","full_name":"hironate/erc404","owner":"hironate","description":"Super simple and quick project to deploy erc404 on your favorite network with minimum modification","archived":false,"fork":false,"pushed_at":"2024-03-15T17:03:28.000Z","size":370,"stargazers_count":17,"open_issues_count":1,"forks_count":12,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-19T22:38:03.756Z","etag":null,"topics":["blockchain","dapp","eip","erc404","ethereum","ethereum-contract","hardhat"],"latest_commit_sha":null,"homepage":"","language":"Solidity","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hironate.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-02-14T13:42:58.000Z","updated_at":"2024-11-06T08:16:36.000Z","dependencies_parsed_at":"2024-03-06T18:42:54.786Z","dependency_job_id":null,"html_url":"https://github.com/hironate/erc404","commit_stats":null,"previous_names":["hironate/erc404"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hironate/erc404","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hironate%2Ferc404","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hironate%2Ferc404/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hironate%2Ferc404/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hironate%2Ferc404/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hironate","download_url":"https://codeload.github.com/hironate/erc404/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hironate%2Ferc404/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267007790,"owners_count":24020266,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-25T02:00:09.625Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","dapp","eip","erc404","ethereum","ethereum-contract","hardhat"],"created_at":"2025-05-26T23:19:54.349Z","updated_at":"2025-07-25T12:37:50.027Z","avatar_url":"https://github.com/hironate.png","language":"Solidity","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ERC404\n\nERC-404 is a new experimental way of combining two existing standards in the cryptocurrency world: ERC-20 and ERC-721. It aims to allow for both regular token transactions (like ERC-20) and unique, non-fungible tokens (like ERC-721) to work together smoothly.\n\nTo make this work, ERC-404 uses a method called \"pathing.\" Pathing is a bit like fitting two things into one space by overlapping them. It's not perfect, but it tries to make sure everything fits without causing major problems.\n\nIf other systems want to work with ERC-404, they need to make sure they understand and follow these overlapping rules.\n\nThis version of ERC-404 tries to solve common problems and make it easier for different systems to work together. But because it's still new and hasn't been fully checked by experts, there might be issues that need to be fixed.\n\nOverall, ERC-404 is an experiment that tries to combine two different cryptocurrency standards in a way that makes sense.\n\n## Prerequisites\n\n## Configuration\n\nEnsure you have a `.env` file in the project root directory with the necessary environment variables. The available options are:\n\n- `ACCOUNT_PRIVATE_KEY`: Specify the private key from which the contracts will be deployed\n- `ALCHEMY_MAINNET_API_KEY`: Specify the alchemy mainnet api key\n- `ALCHEMY_SEPOLIA_API_KEY`: Specify the alchemy sepolia api key\n- `ALCHEMY_POLYGON_API_KEY`: Specify the alchemy polygon api key\n- `ALCHEMY_MUMBAI_API_KEY`: Specify the alchemy polygon mumbai api key\n- `ETHERSCAN_API_KEY`: Specify the etherscan api key for verifying contracts\n- `POLYGONSCAN_API_KEY`: Specify the polygonscan api key for verifying contracts\n- `DEPLOY_NETWORK`: Specify the network for deployment (e.g., `sepolia`, `polygonMumbai`, `polygon`, `mainnet`)\n- `IMAGE_URL`: Specify the image url to be set in the Contract's DataURI\n\n## Tasks\n\nBefore deploying and verifying the contract, don't forget to pass the owner address in the constructor parameters in the deploy and verify tasks.\n\n##### Note: The deployer of the contract will be set as the owner.\n\n```javascript\n// deploy\nconst myErc404 = await ethers.deployContract(CONTRACT_NAMES.MY_ERC404, [\n  '/* owner address */',\n]);\n\n// verify\nawait run('verify:verify', {\n  address: myErc404.address,\n  constructorArguments: ['/* owner address */'],\n});\n```\n\n### `Copy .env file from .env.example`\n\n```bash\ncp .env.example .env`\n```\n\nClean and compile contracts with below commands\n\n```bash\nnpx hardhat clean\nnpx hardhat compile\n```\n\n### `deploy:my-erc404`\n\nDeploys the MyERC404 contract to the specified network.\n\n```bash\nnpx hardhat deploy:my-erc404 --network sepolia\nnpx hardhat deploy:my-erc404 --network mainnet\n```\n\nThis task will deploy the `MyERC404` contract using the specified network and output the deployed contract address.\n\n### `verify:my-erc404`\n\nVerifies the MyERC404 contract on the specified network.\n\n```bash\nnpx hardhat verify:my-erc404 --network sepolia\nnpx hardhat verify:my-erc404 --network mainnet\n```\n\nThis task will verify the `MyERC404` contract on the specified network. It retrieves the contract address from the previously deployed contract and uses it for verification.\n\n### `abi:my-erc404`\n\nExports the ABI for the MyERC404 contract.\n\n```bash\nnpx hardhat abi:my-erc404\n```\n\nThis task will export the ABI for the `MyERC404.sol` contract and save it as `MyERC404.json`.\n\n### `whitelist-owner:erc404`\n\nWhitelists the owner of the contract.\n\n```bash\nnpx hardhat whitelist-owner:my-erc404 --network sepolia\nnpx hardhat whitelist-owner:my-erc404 --network mainnet\n```\n\nThis task will whitelist the deployer/owner of the contract. Whitelisting will exempt them from token minting and burning during transfers\n\n### `set-data-uri`\n\nSets the dataURI for the NFTs.\n\n```bash\nnpx hardhat set-data-uri --network sepolia\nnpx hardhat set-data-uri --network mainnet\n```\n\nThis task involves setting the `IMAGE_URL` from the .env file as the `dataURI` within the contract.\n\n## Uniswap V3\n\nUse the below as guidelines on how to prepare for and deploy to a Uniswap V3 pool:\n\nTo predict the address of your Uniswap V3 Pool, use the following simulator: [https://dashboard.tenderly.co/shared/simulation/92dadba3-92c3-46a2-9ccc-c793cac6c33d](https://dashboard.tenderly.co/shared/simulation/92dadba3-92c3-46a2-9ccc-c793cac6c33d).\n\nTo use:\n\n1. Click Re-Simulate in the top right corner.\n2. Update the simulation parameters: `tokenA` (your token address), `tokenB` (typically WETH, or `0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2`), and set the fee tier to either 500, 3000 (for 0.3%), or 10000 (for 1%).\n3. Run Simulate, and then expand the Input/Output section. The output on the right column will show the derived pool address.\n\n## Useful Deployment Addresses\n\n```\nWETH: 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\n\n# Uniswap v2\nUniswapV2Router02: 0x7a250d5630b4cf539739df2c5dacb4c659f2488d\nUniswapV2Factory: 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f\n\n# Uniswap v3\nUniswapV3Factory: 0x1F98431c8aD98523631AE4a59f267346ea31F984\nUniversalRouter: 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD\nUniversalRouter 2: 0xEf1c6E67703c7BD7107eed8303Fbe6EC2554BF6B\nSwapRouter: 0xE592427A0AEce92De3Edee1F18E0157C05861564\nSwapRouter02: 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45\nNonfungiblePositionManager: 0xc36442b4a4522e871399cd717abdd847ab11fe88\n\n```\n\n# Other Chains\n\n[https://github.com/Uniswap/sdk-core/blob/5365ae4cd021ab53b94b0879ec6ceb6ad3ebdce9/src/addresses.ts](https://github.com/Uniswap/sdk-core/blob/5365ae4cd021ab53b94b0879ec6ceb6ad3ebdce9/src/addresses.ts)\n\n## License\n\nThis software is released under the MIT License.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhironate%2Ferc404","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhironate%2Ferc404","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhironate%2Ferc404/lists"}