{"id":49933918,"url":"https://github.com/doom-protocol/doom-nft-program","last_synced_at":"2026-05-17T05:49:13.083Z","repository":{"id":325707487,"uuid":"1102123357","full_name":"doom-protocol/doom-nft-program","owner":"doom-protocol","description":null,"archived":false,"fork":false,"pushed_at":"2026-03-10T19:49:50.000Z","size":191,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-11T01:22:41.248Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","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/doom-protocol.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,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-22T21:29:33.000Z","updated_at":"2026-03-10T19:49:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/doom-protocol/doom-nft-program","commit_stats":null,"previous_names":["posaune0423/doom-nft-program","doom-protocol/doom-nft-program"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/doom-protocol/doom-nft-program","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doom-protocol%2Fdoom-nft-program","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doom-protocol%2Fdoom-nft-program/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doom-protocol%2Fdoom-nft-program/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doom-protocol%2Fdoom-nft-program/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/doom-protocol","download_url":"https://codeload.github.com/doom-protocol/doom-nft-program/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doom-protocol%2Fdoom-nft-program/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33129092,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T18:38:32.183Z","status":"online","status_checked_at":"2026-05-17T02:00:05.366Z","response_time":107,"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":"2026-05-17T05:49:12.293Z","updated_at":"2026-05-17T05:49:13.078Z","avatar_url":"https://github.com/doom-protocol.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Doom NFT Program\n\nThis repository contains the Solana program for minting DOOM INDEX artworks as NFTs. It is built with Anchor and currently targets a Metaplex Core based mint flow with deterministic metadata URIs.\n\n## Features\n\n- **Collection setup**: Initialize the DOOM INDEX collection on Metaplex Core\n- **Token reservation**: Reserve a sequential `tokenId` before minting\n- **NFT minting**: Mint a DOOM INDEX NFT from a valid reservation\n- **Admin controls**: Manage base metadata URL, pause state, admin authority, and upgrade authority\n- **Contract tests**: Run Rust integration tests against the real Core CPI path\n\n## Tech Stack\n\n- **Blockchain**: Solana\n- **Framework**: Anchor\n- **Language**: Rust\n- **NFT Standard**: Metaplex Core\n- **Testing**: Rust `solana-program-test`, Bun\n- **Package Manager**: Bun\n\n## Prerequisites\n\n- [Rust](https://rustup.rs/)\n- [Solana CLI](https://docs.anza.xyz/cli/install)\n- [Anchor](https://www.anchor-lang.com/)\n- [Bun](https://bun.sh/)\n\n## Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/doom-protocol/doom-nft-program.git\ncd doom-nft-program\n\n# Install dependencies\nbun install\n\n# Install git hooks\nbun run prepare\n\n# Optional: point Solana CLI at devnet\nsolana config set --url https://api.devnet.solana.com\n\n# Optional: create a local keypair if you do not have one yet\nsolana-keygen new\n```\n\n## Build\n\n```bash\n# Build the Rust workspace\ncargo build --workspace\n\n# Build the contract test SBF dependency artifact\nbun run build:sbf:test\n```\n\n## Test\n\n```bash\n# Run Rust unit tests plus contract tests\nbun run test\n\n# Run only the contract test suite\nbun run test:contract\n\n# Run the full local quality gate\nbun run check\n```\n\n## Development Scripts\n\n### Program-Driven Devnet Flow\n\n```bash\n# Initialize global config on devnet\nbun run devnet:init\n\n# Reserve the next token id on devnet\nbun run devnet:reserve\n\n# Mint a DOOM INDEX NFT on devnet\nbun run devnet:mint\n```\n\nThese scripts call the Anchor program in this repository and keep the deterministic `tokenId -\u003e {base_metadata_url}/{tokenId}.json` flow intact.\n\n### Direct Metaplex Core Scripts\n\nThese scripts follow the official Metaplex NFT/Core client flow and are useful when you want to create, inspect, or manage Core assets directly from a wallet without going through the DOOM program instructions.\n\n```bash\n# Create a Core collection\nCOLLECTION_NAME=\"DOOM TEST\" \\\nCOLLECTION_URI=\"https://example.com/collection.json\" \\\nbun run metaplex:create:collection\n\n# Create or mint a Core asset\nNFT_NAME=\"DOOM INDEX #1\" \\\nNFT_URI=\"https://example.com/1.json\" \\\nbun run metaplex:create\n\n# Alias for create\nNFT_NAME=\"DOOM INDEX #1\" \\\nNFT_URI=\"https://example.com/1.json\" \\\nbun run metaplex:mint\n\n# Fetch an asset or collection\nTARGET_KIND=asset \\\nTARGET_ADDRESS=\u003casset-or-collection-address\u003e \\\nbun run metaplex:fetch\n\n# Update asset metadata or update authority\nASSET_ADDRESS=\u003casset-address\u003e \\\nNFT_URI=\"https://example.com/1-updated.json\" \\\nbun run metaplex:update\n\n# Transfer an asset\nASSET_ADDRESS=\u003casset-address\u003e \\\nNEW_OWNER=\u003crecipient-address\u003e \\\nbun run metaplex:transfer\n\n# Burn an asset\nASSET_ADDRESS=\u003casset-address\u003e \\\nbun run metaplex:burn\n```\n\nCommon env vars for the Metaplex scripts:\n\n- `SOLANA_RPC_URL`: RPC endpoint override. Falls back to `ANCHOR_PROVIDER_URL`, then devnet.\n- `KEYPAIR_PATH`: Wallet keypair override. Falls back to `ANCHOR_WALLET`, then `Anchor.toml`, then `~/.config/solana/id.json`.\n- `OUTPUT_PATH`: Custom JSON output path. Default is `target/devnet/metaplex/\u003coperation\u003e.json`.\n- `AUTHORITY_KEYPAIR_PATH`: Optional authority signer for collection-authority, update-authority, owner, or delegate operations.\n- `COLLECTION_ADDRESS`: Optional collection address when creating an asset inside a collection.\n- `ASSET_KEYPAIR_PATH` / `COLLECTION_KEYPAIR_PATH`: Optional persisted signer path for the new asset or collection account.\n\n## Repository Structure\n\n```text\nprograms/doom-nft-program/\n├── src/\n│   ├── instructions/      # Instruction handlers\n│   ├── state/             # On-chain account state\n│   ├── constants.rs       # Program constants\n│   ├── error.rs           # Custom errors\n│   ├── events.rs          # Program events\n│   ├── lib.rs             # Program entrypoint\n│   └── utils.rs           # Shared helpers\n├── Cargo.toml\n└── Xargo.toml\n\ntests/src/\n├── instructions/          # Source-aligned contract tests\n├── lib.rs                 # Test module entrypoint\n└── test_context.rs        # Shared test fixtures and helpers\n\nscripts/\n├── build-test-sbf.sh      # Copies the pinned Core test fixture into target/test-sbf\n├── test-contract-v1.sh    # Runs the contract suite\n└── devnet/                # Devnet helper scripts\n```\n\n## Contributing\n\n1. Fork the repository.\n2. Create a feature branch: `git checkout -b feature/amazing-feature`\n3. Commit your changes: `git commit -m 'Add amazing feature'`\n4. Push the branch: `git push origin feature/amazing-feature`\n5. Open a pull request.\n\n## License\n\nThis project is released under the MIT License.\n\n## Notes\n\n- The program is still under active development.\n- The contract test flow avoids a local SBF build of this program and runs it as a host builtin, while loading the pinned official Metaplex Core `release/core@0.9.10` fixture for the Core CPI path.\n- Devnet deployment may still depend on Solana faucet availability.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoom-protocol%2Fdoom-nft-program","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdoom-protocol%2Fdoom-nft-program","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoom-protocol%2Fdoom-nft-program/lists"}