Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: data source abstraction #1

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

Vardominator
Copy link

@Vardominator Vardominator commented Feb 18, 2025

Motivation

Laser Eyes is quickly becoming the standard wallet interface for Bitcoin-based dapps. Maestro would like to become the go-to data source for Laser Eyes and thereby support all dapps that use this framework.

Part 1

Abstract mempool.space, sandshrew and Maestro into a data source interface

  • Implement generic data source interface with common inputs and response schemas
  • Implement existing sources: mempool.space, Sandshrew
  • Implement Maestro source
  • Add config logic for selecting source and setting a Maestro API key

Implement existing methods for the Maestro source

  • getTransaction
  • getRawTransaction
  • getRecommendedFees
  • getOrdAddress
  • getRuneById
  • getRuneByName

Other general improvements

  • Move constants/networks.ts to types/network.ts and use enums
  • Move constants/protocols.ts to types/protocol.ts and use enums

Part 2 (future PR)

Implement the following endpoints on the Maestro side and add to Maestro source

  • Runes management
    • Create Rune Etch
    • Create Rune Mint
    • Create Rune Send
  • Inscriptions management
    • Inscribe content
    • Get commit PSBT
    • Execute reveal transaction
    • Create inscription script
    • Create inscription reveal address and keys
  • Recommended fees

Part 3: Rejoice

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant