Migration Guide: From Legacy Ordinals to Dogenals v2.0
How existing Doginals projects can adopt “dog” marker, quantum-safe signatures, and hierarchical organization
Overview
This guide helps projects currently using the “ord” marker (Doginals v1.x) migrate to Dogenals v2.0 with the “dog” marker. Migration is optional but recommended for quantum safety and enhanced features.
Migration Options
Option 1: Parallel Operation (Recommended)
- Keep existing “ord” inscriptions working
- Create new “dog” inscriptions alongside
- Gradually migrate users and tools
- Best for: Live marketplaces and active collections
Option 2: Full Migration
- Convert entire collection to “dog” marker
- Update all references and tooling
- Best for: New projects or small collections
Option 3: Hybrid Approach
- Use “dog” for new inscriptions
- Maintain “ord” compatibility layer
- Best for: Indexers and infrastructure providers
Step-by-Step Migration
Phase 1: Assessment & Planning
-
Audit Current Inscriptions
# Count your ord inscriptions curl "https://your-indexer.com/inscriptions?protocol=ord&creator=YOUR_ADDRESS" | jq '.inscriptions | length' -
Identify Critical Assets
- Which inscriptions need migration first?
- Which have active marketplace listings?
- Which are referenced by other systems?
-
Plan Collection Structure
- Design hierarchical organization
- Choose signature scheme (Falcon-512 recommended)
- Plan directory structure
Phase 2: Setup Quantum-Safe Keys
-
Generate PQC Keys
from dogenals_pqc import generate_falcon512_keypair # Generate quantum-safe keypair pubkey, privkey = generate_falcon512_keypair() # Store securely (HSM recommended) save_private_key(privkey, "secure_storage") -
Test Signature Verification
from dogenals_pqc import verify_falcon512_signature # Test with sample message test_message = b"Hello Dogenals v2.0" signature = sign_message(privkey, test_message) assert verify_falcon512_signature(pubkey.hex(), signature.hex(), test_message)
Phase 3: Register Collection
-
Create Collection Genesis Inscription
{ "version": "2.0", "protocol": "dog", "collection_id": "computed_sha256", "owner_pubkey": "your_falcon512_pubkey_hex", "signature_scheme": "falcon512", "signature": "genesis_signature_hex", "collection_rules": { "supply_cap": 10000, "membership_type": "open", "royalty_bps": 500, "royalty_address": "D...", "governance_model": "creator_controlled" }, "metadata": { "name": "My Migrated Collection", "description": "Upgraded to Dogenals v2.0", "created_at": "2026-04-24T14:20:00Z" } } -
Inscribe Collection Genesis
# Using PyDoge SDK python -c " from pydoge import ÐMPClient client = ÐMPClient(your_dogecoin_client) collection_payload = {...} txid = client.inscribe_dmp_operation(collection_payload) print(f'Collection registered: {txid}') "
Phase 4: Migrate Individual Inscriptions
-
For Each Legacy Inscription
def migrate_inscription(legacy_id, content, content_type): # 1. Prepare content content_data = content.encode('utf-8') if isinstance(content, str) else content # 2. Compute content hash content_hash = sha256(content_type.encode() + b'\0' + content_data).hex() # 3. Build metadata metadata = { 'version': '2.0', 'protocol': 'dog', 'collection_id': YOUR_COLLECTION_ID, 'owner_pubkey': YOUR_PUBKEY_HEX, 'signature_scheme': 'falcon512', 'content_hash': content_hash, 'parent': legacy_id, # Link to original 'metadata': { 'name': f'Migrated from {legacy_id}', 'description': 'Quantum-safe upgrade', 'created_at': datetime.now().isoformat() } } # 4. Sign metadata message = build_message(metadata) signature = sign_falcon512(YOUR_PRIVKEY, message) # 5. Create inscription inscription = { 'marker': 'dog', 'content_type': content_type, 'content': content_data, 'metadata': {**metadata, 'signature': signature.hex()} } return inscription -
Batch Migration Script
import asyncio from pydoge import ÐMPClient async def batch_migrate(legacy_inscriptions): client = ÐMPClient(dogecoin_client) migrated = [] for legacy in legacy_inscriptions: new_inscription = migrate_inscription(legacy) txid = await client.inscribe(new_inscription) migrated.append({ 'legacy_id': legacy['id'], 'new_id': f'{txid}i0', # Assuming first output 'txid': txid }) return migrated
Phase 5: Update Infrastructure
-
Indexer Updates
- Add “dog” marker parsing
- Implement PQC signature verification
- Support hierarchical collections
- Update API endpoints
-
Marketplace Updates
- Validate collection signatures
- Display quantum-safe badges
- Support directory browsing
- Update collection pages
-
Wallet Updates
- Generate PQC keys
- Sign “dog” inscriptions
- Display collection hierarchies
- Support private vaults
Phase 6: User Communication & Transition
-
Announce Migration
- Blog post explaining benefits
- Timeline for migration
- User guides and tutorials
-
Provide Migration Tools
- Web interface for inscription migration
- Bulk migration scripts
- Verification tools
-
Update Documentation
- New API documentation
- Updated collection guides
- Developer resources
Compatibility Matrix
| Feature | Legacy “ord” | Dogenals v2.0 “dog” | Migration Path |
|---|---|---|---|
| Signatures | None | Required PQC | Add to metadata |
| Collections | Unsigned manifests | Signed genesis | Re-register collection |
| Organization | Flat | Hierarchical | Create directories |
| Privacy | None | Private vaults | Encrypt content |
| Quantum Safety | Vulnerable | Protected | Use PQC signatures |
Common Challenges & Solutions
Challenge 1: Key Management
Problem: PQC keys are larger and different from ECDSA Solution: Use hardware security modules (HSMs) or secure key management services
Challenge 2: Content Migration
Problem: Re-inscribing large content is expensive Solution: Use content addressing - reference original inscription as parent
Challenge 3: API Compatibility
Problem: Existing tools expect “ord” format Solution: Implement compatibility layer in indexers
Challenge 4: User Adoption
Problem: Users don’t understand quantum safety benefits Solution: Educational content and gradual migration
Testing Migration
Pre-Migration Checklist
- All PQC signatures verified
- Collection genesis inscribed
- Indexer supports “dog” marker
- Marketplace validates signatures
- Wallets generate PQC keys
Post-Migration Validation
def validate_migration(legacy_id, new_id):
# 1. Verify new inscription exists
new_inscription = indexer.get_inscription(new_id)
assert new_inscription['protocol'] == 'dog'
# 2. Verify signature
assert verify_signature(new_inscription['metadata'])
# 3. Verify parent link
assert new_inscription['metadata']['parent'] == legacy_id
# 4. Verify content integrity
legacy = indexer.get_inscription(legacy_id)
assert new_inscription['content_hash'] == compute_content_hash(legacy)
return TrueRollback Plan
If migration encounters issues:
- Pause new inscriptions using “dog” marker
- Continue with “ord” for existing workflow
- Fix issues in development environment
- Resume migration with improved process
Success Metrics
Track these indicators:
- Signature verification rate: >99.9%
- Collection migration completion: Target 100%
- User adoption: Percentage using new features
- Marketplace compatibility: All listings work
- Performance: No degradation in indexing speed
Support & Resources
Official Resources
- Specification:
dogenals-protocol-spec.md - PQC Guide:
pqc-verification-guide.md - API Standards:
api-contracts.json
Community Support
- Discord: Dogenals ecosystem channels
- GitHub: Migration tooling and examples
- Documentation: Updated guides and tutorials
Professional Services
- Migration consulting: For large collections
- Custom tooling: For specialized needs
- Security audits: PQC implementation verification
Migration to Dogenals v2.0 isn’t just about new features — it’s about future-proofing your digital assets against quantum threats. The “dog” marker represents Dogecoin’s commitment to “do only good everyday” by building technology that lasts.
Start small, test thoroughly, and migrate at your own pace. The ecosystem will be here to support you.
// Dog’s Chosen Tech — Dogenals v2.0 — jonheaven (BC, Canada) — April 2026