chain

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Jul 7, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrProviderUnavailable Provider 未配置或不可用
	ErrProviderUnavailable = errors.New("fees provider unavailable")
	// ErrAllProvidersFailed 所有 Provider 均失败
	ErrAllProvidersFailed = errors.New("all fees providers failed")
)

Functions

func ChainFeesFromRecommended added in v0.3.0

func ChainFeesFromRecommended(targetBlocks int64, recommended types.RecommendedFees) *types.ChainFees

ChainFeesFromRecommended 将多档推荐费率映射为统一结构(sat/vB)

func EstimateChainFees added in v0.3.0

func EstimateChainFees(ctx context.Context, targetBlocks int64, providers []FeesProvider) (*types.ChainFees, error)

EstimateChainFees 按 Provider 顺序估算链上手续费,失败时记录日志并回退

func NormalizeChainFees added in v0.3.0

func NormalizeChainFees(fees *types.ChainFees) *types.ChainFees

NormalizeChainFees 对齐费率字段并统一为 sat/vB(保留 2 位小数)

func PickFeeByTarget added in v0.3.0

func PickFeeByTarget(targetBlocks int64, fastest, halfHour, hour, economy, minimum float64) float64

PickFeeByTarget 按目标确认区块数选取费率档位(sat/vB)

Types

type BitcoindFeesProvider added in v0.3.0

type BitcoindFeesProvider struct {
	Client *bitcoindrpc.Client
}

BitcoindFeesProvider Bitcoin Core estimatesmartfee

func (BitcoindFeesProvider) EstimateChainFees added in v0.3.0

func (p BitcoindFeesProvider) EstimateChainFees(ctx context.Context, targetBlocks int64) (*types.ChainFees, error)

func (BitcoindFeesProvider) Name added in v0.3.0

func (p BitcoindFeesProvider) Name() string

type Client

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

func New

func New(bitcoindrpcClient *bitcoindrpc.Client, mempoolapisClient *mempoolapis.Client, electrumxClient *electrumx.Client) *Client

func (*Client) EstimateChainFeesDefault added in v0.3.0

func (c *Client) EstimateChainFeesDefault(ctx context.Context, targetBlocks int64) (*types.ChainFees, error)

EstimateChainFeesDefault 使用默认 Provider 链估算费率

func (*Client) EstimateChainFeesWithProviders added in v0.3.0

func (c *Client) EstimateChainFeesWithProviders(ctx context.Context, targetBlocks int64, providers []FeesProvider) (*types.ChainFees, error)

EstimateChainFeesWithProviders 自定义 Provider 顺序

func (*Client) EstimateFeeRate

func (c *Client) EstimateFeeRate(ctx context.Context, targetBlocks int) (float64, float64, error)

EstimateFeeRate 兼容旧接口,内部转调统一费率估算

func (*Client) NewFeesClients added in v0.3.0

func (c *Client) NewFeesClients() FeesClients

NewFeesClients 从 chain 客户端构建内置 Provider

type ElectrumXFeesProvider added in v0.3.0

type ElectrumXFeesProvider struct {
	Client *electrumx.Client
}

ElectrumXFeesProvider electrumX blockchain.estimatefee

func (ElectrumXFeesProvider) EstimateChainFees added in v0.3.0

func (p ElectrumXFeesProvider) EstimateChainFees(ctx context.Context, targetBlocks int64) (*types.ChainFees, error)

func (ElectrumXFeesProvider) Name added in v0.3.0

func (p ElectrumXFeesProvider) Name() string

type FeesClients added in v0.3.0

type FeesClients struct {
	Mempool  *MempoolFeesProvider
	Electrum *ElectrumXFeesProvider
	Bitcoind *BitcoindFeesProvider
}

FeesClients 节点费率客户端集合

type FeesProvider added in v0.3.0

type FeesProvider interface {
	Name() string
	EstimateChainFees(ctx context.Context, targetBlocks int64) (*types.ChainFees, error)
}

FeesProvider 链上手续费数据源

func APIFeesProviders added in v0.3.0

func APIFeesProviders(
	mempool *MempoolFeesProvider,
	unisat RecommendedFeesProvider,
	okx RecommendedFeesProvider,
	electrum *ElectrumXFeesProvider,
	bitcoind *BitcoindFeesProvider,
) []FeesProvider

APIFeesProviders apis 服务完整降级链:mempool → unisat → okx → electrumX → bitcoin core

func DefaultFeesProviders added in v0.3.0

func DefaultFeesProviders(mempool *MempoolFeesProvider, electrum *ElectrumXFeesProvider, bitcoind *BitcoindFeesProvider) []FeesProvider

DefaultFeesProviders 默认节点 Provider:mempool.space → electrumX → bitcoin core

type MempoolFeesProvider added in v0.3.0

type MempoolFeesProvider struct {
	Client *mempoolapis.Client
}

MempoolFeesProvider mempool.space 推荐费率

func (MempoolFeesProvider) EstimateChainFees added in v0.3.0

func (p MempoolFeesProvider) EstimateChainFees(ctx context.Context, targetBlocks int64) (*types.ChainFees, error)

func (MempoolFeesProvider) Name added in v0.3.0

func (p MempoolFeesProvider) Name() string

type RecommendedFeesAdapter added in v0.3.0

type RecommendedFeesAdapter struct {
	Provider RecommendedFeesProvider
}

RecommendedFeesAdapter 将 RecommendedFeesProvider 适配为 FeesProvider

func (RecommendedFeesAdapter) EstimateChainFees added in v0.3.0

func (a RecommendedFeesAdapter) EstimateChainFees(ctx context.Context, targetBlocks int64) (*types.ChainFees, error)

func (RecommendedFeesAdapter) Name added in v0.3.0

func (a RecommendedFeesAdapter) Name() string

type RecommendedFeesProvider added in v0.3.0

type RecommendedFeesProvider interface {
	Name() string
	GetRecommendedFees(ctx context.Context) (types.RecommendedFees, error)
}

RecommendedFeesProvider 返回多档推荐费率的数据源(如 unisat / okx)

Jump to

Keyboard shortcuts

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