{"id":18057243,"url":"https://github.com/m4cs/ethscriptoor","last_synced_at":"2025-08-19T01:32:02.102Z","repository":{"id":176408030,"uuid":"658074750","full_name":"M4cs/Ethscriptoor","owner":"M4cs","description":"Infrastructure for easier ETHScription mints!","archived":false,"fork":false,"pushed_at":"2023-06-24T17:54:02.000Z","size":10,"stargazers_count":7,"open_issues_count":1,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-06T15:11:57.379Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/M4cs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"publiccode":null,"codemeta":null}},"created_at":"2023-06-24T17:26:43.000Z","updated_at":"2024-12-29T13:41:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"452ddfff-29f5-4b56-adf8-2234bd8aacca","html_url":"https://github.com/M4cs/Ethscriptoor","commit_stats":null,"previous_names":["m4cs/ethscriptoor"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/M4cs/Ethscriptoor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/M4cs%2FEthscriptoor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/M4cs%2FEthscriptoor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/M4cs%2FEthscriptoor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/M4cs%2FEthscriptoor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/M4cs","download_url":"https://codeload.github.com/M4cs/Ethscriptoor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/M4cs%2FEthscriptoor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271088026,"owners_count":24697039,"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-08-18T02:00:08.743Z","response_time":89,"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":[],"created_at":"2024-10-31T02:07:10.773Z","updated_at":"2025-08-19T01:32:02.092Z","avatar_url":"https://github.com/M4cs.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ETHScriptoor\n## Infrastrucutre for a better minting experience with ETHScriptions\n\n### What is ETHScriptoor?\n\nI wanted a way to setup a minting experience similar to the one we are used to with traditional NFTs, but bring that to ETHScriptions. I built this system in order to accomplish that. **It is still highly experimental and has not been tested under extreme load.** I plan to build this out over time if the ETHScription protocol continues to flourish. For now, it gets the job done. Below you will finds steps to get setup with the system and how it works. In a basic summary, when you mint from the contract, a bot listens for an event from said contract, and calls a transfer event with the tokenID dataURI as calldata. Below are some pros and cons of using this system:\n\n#### Pros:\n\n- Simple to setup\n- Open-Source\n- Quickly ethscribes to minters on mint\n- Cheap to run\n- Lightweight\n\n#### Cons:\n\n- Not permissionless\n- Not trustless\n- Hasn't been run at high scale\n- Doesn't account for fluctuating gas prices\n- May require a node to run for large volume of minters\n- In-Memory Queue system, could use Redis or something similar instead\n\n### Requirements\n\n- NodeJS\n- An [Alchemy Account](alchemy.com)\n- Somewhere to host the bot (I used Google Compute Engine)\n\n### Getting Started\n\nFirst clone the repository and install requirements:\n\n```\ngit clone https://github.com/M4cs/Ethscriptoor.git\ncd ./Ethscriptoor/\nyarn install\n```\n\nNext setup the `.env` file using the `.env.example` provided in the repo. You will need the following environment variables:\n\n```\nALCHEMY_API_KEY=\nALCHEMY_NETWORK=\nALCHEMY_WSS_RPC=\nDEPLOYER_PRIVATE_KEY=0x...\nDEPLOYER_CONTRACT_ADDR=0x...\n```\n\n**The deployer private key must be the private key to the wallet that deploys the `Ethscriptoor.sol` contract on the blockchain.**\n\nYou will need to deploy the contract in `/contracts/` which will act as your minting contract. This contract is very basic and emits a `Mint(address minter, uint256 amount, uint256 startID, uint256 endID)` event. Do not remove this event or the bot will not work properly! It relies on listening to this. You can change the function to do whatever logic you like, but this event **MUST** be emitted properly in order for the bot to work. It's best to leave the logic that relates to this event _alone_.\n\n### Setting up token data\n\n**YOU MUST SET THIS UP IF YOU WANT IT TO ETHSCRIBE THE CORRECT TOKEN DATA. DO NOT SKIP OVER THIS!!**\n\nIn the `./src/directory.json` you can input a dictionary of `{ \"tokenID\": \"iVBORw0KGgoAA...\" }` and this will be loaded to ethscribe on each mint. The key value with be the tokenID as a string, and the value itself should be the base64encoded PNG you are trying to ethscribe! The bot will handle the rest of the encoding for you.\n\n#### Running the listener\n\nOnce you have deployed the contract, installed requirements, and filled out your `.env` file, you can run the bot with:\n\n```\nyarn start\n```\n\n### How to host the bot easily\n\nI setup a Google Compute Engine instance with a service worker to run the bot and restart it on fail. This can easily be done with the help of ChatGPT or a quick Google Search. You can also deploy it on a VPS, or use any sort of platform that can run a background script without you having to keep it open. If you run it on a server, use tmux or screen or something along those lines!\n\n### Contributions\n\nPlease feel free to contribute! The queue system could be improved by using redis or something along the lines, this is very basic and light weight.\n\n### License\n\n```\nMIT License\n\nCopyright (c) 2023 Max Bridgland\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm4cs%2Fethscriptoor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm4cs%2Fethscriptoor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm4cs%2Fethscriptoor/lists"}