mint

package
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 5, 2025 License: MIT Imports: 46 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BOLT11_MINT_QUOTE_TOPIC = "bolt11_mint_quote_topic"
	BOLT11_MELT_QUOTE_TOPIC = "bolt11_melt_quote_topic"
	PROOF_STATE_TOPIC       = "proof_state_topic"
)
View Source
const (
	QuoteExpiryMins = 10
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Client added in v0.4.0

type Client struct {
	// contains filtered or unexported fields
}

func NewClient added in v0.4.0

func NewClient(conn *websocket.Conn, manager *WebsocketManager) *Client

type Config

type Config struct {
	DerivationPathIdx uint32
	Port              int
	MintPath          string
	InputFeePpk       uint
	MintInfo          MintInfo
	Limits            MintLimits
	LightningClient   lightning.Client
	EnableMPP         bool
	LogLevel          LogLevel
	// NOTE: using this value for testing
	MeltTimeout *time.Duration
}

type LogLevel added in v0.3.0

type LogLevel int
const (
	Info LogLevel = iota
	Debug
	Disable
)

type MeltMethodSettings added in v0.2.0

type MeltMethodSettings struct {
	MinAmount uint64
	MaxAmount uint64
}

type Mint

type Mint struct {
	// contains filtered or unexported fields
}

func LoadMint

func LoadMint(config Config) (*Mint, error)

func (*Mint) GetActiveKeyset added in v0.2.0

func (m *Mint) GetActiveKeyset() crypto.MintKeyset

func (*Mint) GetMeltQuoteState

func (m *Mint) GetMeltQuoteState(ctx context.Context, quoteId string) (storage.MeltQuote, error)

GetMeltQuoteState returns the state of a melt quote. Used to check whether a melt quote has been paid.

func (*Mint) GetMintQuoteState

func (m *Mint) GetMintQuoteState(quoteId string) (storage.MintQuote, error)

GetMintQuoteState returns the state of a mint quote.

func (*Mint) MeltTokens

func (m *Mint) MeltTokens(ctx context.Context, meltTokensRequest nut05.PostMeltBolt11Request) (storage.MeltQuote, error)

MeltTokens verifies whether proofs provided are valid and proceeds to attempt payment.

func (*Mint) MintTokens

func (m *Mint) MintTokens(mintTokensRequest nut04.PostMintBolt11Request) (cashu.BlindedSignatures, error)

MintTokens verifies whether the mint quote with id has been paid and proceeds to sign the blindedMessages and return the BlindedSignatures if it was paid.

func (*Mint) ProofsStateCheck added in v0.3.0

func (m *Mint) ProofsStateCheck(Ys []string) ([]nut07.ProofState, error)

func (*Mint) RequestMeltQuote added in v0.2.0

func (m *Mint) RequestMeltQuote(meltQuoteRequest nut05.PostMeltQuoteBolt11Request) (storage.MeltQuote, error)

RequestMeltQuote will process a request to melt tokens and return a MeltQuote. A melt is requested by a wallet to request the mint to pay an invoice.

func (*Mint) RequestMintQuote

func (m *Mint) RequestMintQuote(mintQuoteRequest nut04.PostMintQuoteBolt11Request) (storage.MintQuote, error)

RequestMintQuote will process a request to mint tokens and returns a mint quote or an error. The request to mint a token is explained in NUT-04 here: https://github.com/cashubtc/nuts/blob/main/04.md.

func (*Mint) RestoreSignatures added in v0.3.0

func (m *Mint) RestoreSignatures(blindedMessages cashu.BlindedMessages) (cashu.BlindedMessages, cashu.BlindedSignatures, error)

func (Mint) RetrieveMintInfo added in v0.2.0

func (m Mint) RetrieveMintInfo() (nut06.MintInfo, error)

func (*Mint) SetMintInfo added in v0.2.0

func (m *Mint) SetMintInfo(mintInfo MintInfo)

func (*Mint) Swap

func (m *Mint) Swap(proofs cashu.Proofs, blindedMessages cashu.BlindedMessages) (cashu.BlindedSignatures, error)

Swap will process a request to swap tokens. A swap requires a set of valid proofs and blinded messages. If valid, the mint will sign the blindedMessages and invalidate the proofs that were used as input. It returns the BlindedSignatures.

func (*Mint) TransactionFees added in v0.2.0

func (m *Mint) TransactionFees(inputs cashu.Proofs) uint

type MintInfo added in v0.2.0

type MintInfo struct {
	Name            string
	Description     string
	LongDescription string
	Contact         []nut06.ContactInfo
	Motd            string
	IconURL         string
	URLs            []string
}

type MintLimits added in v0.2.0

type MintLimits struct {
	MaxBalance      uint64
	MintingSettings MintMethodSettings
	MeltingSettings MeltMethodSettings
}

type MintMethodSettings added in v0.2.0

type MintMethodSettings struct {
	MinAmount uint64
	MaxAmount uint64
}

type MintQuotesSubClient added in v0.4.0

type MintQuotesSubClient struct {
	// contains filtered or unexported fields
}

func NewMintQuotesSubClient added in v0.4.0

func NewMintQuotesSubClient(subId string, mintQuotes []storage.MintQuote, pubsub *pubsub.PubSub) *MintQuotesSubClient

func (*MintQuotesSubClient) Close added in v0.4.0

func (subClient *MintQuotesSubClient) Close()

func (*MintQuotesSubClient) Context added in v0.4.0

func (subClient *MintQuotesSubClient) Context() context.Context

func (*MintQuotesSubClient) Read added in v0.4.0

func (subClient *MintQuotesSubClient) Read() <-chan nut17.WsNotification

type MintServer

type MintServer struct {
	// contains filtered or unexported fields
}

func SetupMintServer

func SetupMintServer(config Config) (*MintServer, error)

func (*MintServer) Shutdown added in v0.3.0

func (ms *MintServer) Shutdown()

func (*MintServer) Start added in v0.3.0

func (ms *MintServer) Start() error

type ProofStatesSubClient added in v0.4.0

type ProofStatesSubClient struct {
	// contains filtered or unexported fields
}

func NewProofStatesSubClient added in v0.4.0

func NewProofStatesSubClient(subId string, Ys []string, pubsub *pubsub.PubSub) *ProofStatesSubClient

func (*ProofStatesSubClient) Close added in v0.4.0

func (subClient *ProofStatesSubClient) Close()

func (*ProofStatesSubClient) Context added in v0.4.0

func (subClient *ProofStatesSubClient) Context() context.Context

func (*ProofStatesSubClient) Read added in v0.4.0

func (subClient *ProofStatesSubClient) Read() <-chan nut17.WsNotification

type SubscriptionClient added in v0.4.0

type SubscriptionClient interface {
	// returns a channel to receive notifications for this subscription
	Read() <-chan nut17.WsNotification
	Context() context.Context
	Close()
}

SubscriptionClient interface for the different subscription kinds: - mint quotes - melt quotes - proof states

type WebsocketManager added in v0.4.0

type WebsocketManager struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func NewWebSocketManager added in v0.4.0

func NewWebSocketManager(mint *Mint) *WebsocketManager

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL