Files
go-electrum/electrum/misc.go

65 lines
1.8 KiB
Go
Raw Permalink Normal View History

2025-08-14 19:49:29 -06:00
package electrum
import "context"
type basicResp struct {
Result string `json:"result"`
}
// GetFeeResp represents the response to GetFee().
type GetFeeResp struct {
Result float32 `json:"result"`
}
// GetFee returns the estimated transaction fee per kilobytes for a transaction
// to be confirmed within a target number of blocks.
// https://electrumx.readthedocs.io/en/latest/protocol-methods.html#blockchain-estimatefee
func (s *Client) GetFee(ctx context.Context, target uint32) (float32, error) {
var resp GetFeeResp
err := s.request(ctx, "blockchain.estimatefee", []interface{}{target}, &resp)
if err != nil {
return -1, err
}
return resp.Result, err
}
// GetRelayFee returns the minimum fee a transaction must pay to be accepted into the
// remote server memory pool.
// https://electrumx.readthedocs.io/en/latest/protocol-methods.html#blockchain-relayfee
func (s *Client) GetRelayFee(ctx context.Context) (float32, error) {
var resp GetFeeResp
err := s.request(ctx, "blockchain.relayfee", []interface{}{}, &resp)
if err != nil {
return -1, err
}
return resp.Result, err
}
// GetFeeHistogramResp represents the response to GetFee().
type getFeeHistogramResp struct {
Result [][2]uint64 `json:"result"`
}
// GetFeeHistogram returns a histogram of the fee rates paid by transactions in the
// memory pool, weighted by transacation size.
// https://electrumx.readthedocs.io/en/latest/protocol-methods.html#mempool-get-fee-histogram
func (s *Client) GetFeeHistogram(ctx context.Context) (map[uint32]uint64, error) {
var resp getFeeHistogramResp
err := s.request(ctx, "mempool.get_fee_histogram", []interface{}{}, &resp)
if err != nil {
return nil, err
}
feeMap := make(map[uint32]uint64)
for i := 0; i < len(resp.Result); i++ {
feeMap[uint32(resp.Result[i][0])] = resp.Result[i][1]
}
return feeMap, err
}