{"id":13794308,"url":"https://github.com/sustia-llc/geomorphs-contract","last_synced_at":"2025-09-03T04:31:28.847Z","repository":{"id":139906191,"uuid":"382663239","full_name":"sustia-llc/geomorphs-contract","owner":"sustia-llc","description":"Hardhat ERC721 with OpenSea Proxies. Uses Arweave to store contract and image metadata.","archived":false,"fork":false,"pushed_at":"2021-10-03T20:06:06.000Z","size":361,"stargazers_count":10,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-24T19:27:56.543Z","etag":null,"topics":["arweave","erc721","hardhat","opensea","openzeppelin"],"latest_commit_sha":null,"homepage":"","language":"Solidity","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/sustia-llc.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}},"created_at":"2021-07-03T16:35:54.000Z","updated_at":"2024-04-23T07:26:42.000Z","dependencies_parsed_at":"2024-01-07T05:53:22.366Z","dependency_job_id":"5defae17-12a1-425f-9ab4-6f680c625613","html_url":"https://github.com/sustia-llc/geomorphs-contract","commit_stats":null,"previous_names":["dynamiculture/geomorphs-contract"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sustia-llc/geomorphs-contract","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sustia-llc%2Fgeomorphs-contract","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sustia-llc%2Fgeomorphs-contract/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sustia-llc%2Fgeomorphs-contract/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sustia-llc%2Fgeomorphs-contract/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sustia-llc","download_url":"https://codeload.github.com/sustia-llc/geomorphs-contract/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sustia-llc%2Fgeomorphs-contract/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272936421,"owners_count":25018160,"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-31T02:00:09.071Z","response_time":79,"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":["arweave","erc721","hardhat","opensea","openzeppelin"],"created_at":"2024-08-03T23:00:38.643Z","updated_at":"2025-09-03T04:31:28.511Z","avatar_url":"https://github.com/sustia-llc.png","language":"Solidity","funding_links":[],"categories":["Tools ⚙️"],"sub_categories":[],"readme":"# GeoMorphs for OpenSea\n\nAdapted for hardhat from https://github.com/ProjectOpenSea/opensea-creatures Uses Arweave to store contract and image metadata.\n\n## Quick start\n\n```sh\ngit clone https://github.com/dynamiculture/geomorphs-contract\ncd geomorphs-contract\nnpm i\n# list hardhat tasks:\nnpx hardhat\n```\n## Install hardhat-shorthand\n```sh\nnpm i -g hardhat-shorthand\nhardhat-completion install\n# hh == npx hardhat\n```\n## Create Infura and Etherscan Accounts\nCreate free accounts on:\n* https://infura.io\n* https://etherscan.io\n\nCreate .env (listed in .gitignore). Do **not** check in .env to public repo:\n```sh\ncp .env.sample .env\n```\nenter the following values into .env:\n* INFURA_API_KEY=\n* ETHERSCAN_API_KEY=\n\n## Deploy and test locally\n\nClean, compile and test:\n```sh\nhh clean\nTS_NODE_TRANSPILE_ONLY=1 hh compile\nhh compile\nhh test\nhh coverage\n```\n## Local deployment and mint\n```sh\nhh node\n```\nIn a new terminal, go to the repository's root folder and run this to\ndeploy your contract:\n\n```sh\nhh deploy --network localhost\n```\n\nupdate LOCALHOST_CONTRACT_ADDRESS .env with address of newly deployed contract. \n\n```sh\nhh mint-token --network localhost --metadata-uri ar://8_NZWr4K9d6N8k4TDbMzLAkW6cNQnSQMLeoShc8komM\n```\n\n## Set up Metadata and Image for Contract\n```sh\narkb wallet-save \u003cjson file\u003e\n\narkb deploy assets/geomorphs.jpg\n```\n\nAfter Arweave deployment, update value for \"image\" with the resulting Arweave URL in geomorphs-contract.json. Deploy geomorphs-contract.json:\n```sh\narkb deploy assets/geomorphs-contract.json\n```\n\nUpdate \"contractURI\" in contracts/GeoMorphs.sol\n\n## Set up Metadata and Images for First Minted Work\nUpload image as a 480x480 animated gif:\n```sh\nffmpeg -i geomorphs-1.mp4 -vf scale=480:-1 geomorphs-1.gif\narkb deploy assets/geomorphs-1.gif\n```\n\nAfter Arweave deployment, update \"image\" with the resulting Arweave URL (ar://\u003chash\u003e) in geomorphs-1.json.\n\nUpload animation_url as a 1024x1024 mp4 with vcodec H.264, pixel format YUV 4:2:0, and CRF 25. Arweave image or video should be less than 10MB:\n```sh\narkb deploy assets/geomorphs-1.mp4\n```\n\nAfter Arweave deployment, update \"animation_url\" with the resulting Arweave URL (ar://\u003chash\u003e) in geomorphs-1.json. Deploy geomorphs-1.json:\n```sh\narkb deploy assets/geomorphs-1.json\n```\n\nNote new Arweave path (ar://\u003chash\u003e) to token metadata file for minting\n\n## Deploy to Rinkeby\nGet ether on Rinkeby:\nhttps://faucet.rinkeby.io/\n\nSupply the private key of the contract owner in .env:\n* RINKEBY_PRIVATE_KEY=\n\nDeploy contract to Rinkeby:\n```sh\nhh deploy --network rinkeby\n```\nNote the deployed contract's address and update value in .env:\n* RINKEBY_CONTRACT_ADDRESS=\n\n### Verify on Rinkeby\nRun the following command, by providing the new contract address. The last value is a constructor argument, OpenSea's proxy address on Rinkeby:\n```sh\nhh verify --network rinkeby --contract contracts/GeoMorphs.sol:GeoMorphs \u003ccontract-address\u003e 0xf57b2c51ded3a29e6891aba85459d600256cf317\n```\n### Check code and abi on Rinkeby\nVisit the following URL, by providing the new contract address:\nhttps://rinkeby.etherscan.io/address/_contract-address_\n\n### Mint to Rinkeby\n```sh\nhh mint-token --network rinkeby --metadata-uri ar://JHlikZmbJfG7CoRbSk3DnqGZnPD8BSLz7W9RwoS0OV8\n```\n\n### Check contract on OpenSea\nGo to https://testnets.opensea.io/ connect wallet using the Rinkeby network. Choose \"My Collections\" and \"Import an existing smart contract\". Enter the Rinkeby Contract Address.\n\n## Deploy to mainnet\n```sh\nhh deploy --network mainnet\n```\n\nnote the depoloyed contract's address and update value in .env:\n* MAINNET_CONTRACT_ADDRESS=\n\n### Verify on mainnet\nRun the following command, by providing the new contract address. The last value is a constructor argument, OpenSea's proxy address on mainnet:\n```sh\nhh verify --network mainnet --contract contracts/GeoMorphs.sol:GeoMorphs \u003ccontract-address\u003e 0xa5409ec958c83c3f309868babaca7c86dcb077c1\n```\n### Check code and abi on mainnet\nVisit the following URL, by providing the new contract address:\nhttps://etherscan.io/address/_contract-address__#code\n\n### Mint to mainnet\n```sh\nhh mint-token --network mainnet --metadata-uri ar://JHlikZmbJfG7CoRbSk3DnqGZnPD8BSLz7W9RwoS0OV8\n```\n\n### Check contract on OpenSea\nGo to https://opensea.io/ and connect wallet using the mainnet network. Choose \"My Collections\" and \"Import an existing smart contract\". Enter the mainnet Contract Address.\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsustia-llc%2Fgeomorphs-contract","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsustia-llc%2Fgeomorphs-contract","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsustia-llc%2Fgeomorphs-contract/lists"}