neutrinonotify

package
v1.0.0-...-b07499f Latest Latest
Warning

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

Go to latest
Published: Nov 28, 2018 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrChainNotifierShuttingDown is used when we are trying to
	// measure a spend notification when notifier is already stopped.
	ErrChainNotifierShuttingDown = errors.New("chainntnfs: system interrupt " +
		"while attempting to register for spend notification.")
)

Functions

This section is empty.

Types

type NeutrinoChainConn

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

NeutrinoChainConn is a wrapper around neutrino's chain backend in order to satisfy the chainntnfs.ChainConn interface.

func (*NeutrinoChainConn) GetBlockHash

func (n *NeutrinoChainConn) GetBlockHash(blockHeight int64) (*chainhash.Hash, error)

GetBlockHash returns the hash from a block height.

func (*NeutrinoChainConn) GetBlockHeader

func (n *NeutrinoChainConn) GetBlockHeader(blockHash *chainhash.Hash) (*wire.BlockHeader, error)

GetBlockHeader returns the block header for a hash.

func (*NeutrinoChainConn) GetBlockHeaderVerbose

func (n *NeutrinoChainConn) GetBlockHeaderVerbose(blockHash *chainhash.Hash) (
	*btcjson.GetBlockHeaderVerboseResult, error)

GetBlockHeaderVerbose returns a verbose block header result for a hash. This result only contains the height with a nil hash.

type NeutrinoNotifier

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

NeutrinoNotifier is a version of ChainNotifier that's backed by the neutrino Bitcoin light client. Unlike other implementations, this implementation speaks directly to the p2p network. As a result, this implementation of the ChainNotifier interface is much more light weight that other implementation which rely of receiving notification over an RPC interface backed by a running full node.

TODO(roasbeef): heavily consolidate with NeutrinoNotifier code

  • maybe combine into single package?

func New

func New(node *neutrino.ChainService, spendHintCache chainntnfs.SpendHintCache,
	confirmHintCache chainntnfs.ConfirmHintCache) (*NeutrinoNotifier, error)

New creates a new instance of the NeutrinoNotifier concrete implementation of the ChainNotifier interface.

NOTE: The passed neutrino node should already be running and active before being passed into this function.

func (*NeutrinoNotifier) RegisterBlockEpochNtfn

func (n *NeutrinoNotifier) RegisterBlockEpochNtfn(
	bestBlock *chainntnfs.BlockEpoch) (*chainntnfs.BlockEpochEvent, error)

RegisterBlockEpochNtfn returns a BlockEpochEvent which subscribes the caller to receive notifications, of each new block connected to the main chain. Clients have the option of passing in their best known block, which the notifier uses to check if they are behind on blocks and catch them up.

func (*NeutrinoNotifier) RegisterConfirmationsNtfn

func (n *NeutrinoNotifier) RegisterConfirmationsNtfn(txid *chainhash.Hash,
	pkScript []byte,
	numConfs, heightHint uint32) (*chainntnfs.ConfirmationEvent, error)

RegisterConfirmationsNtfn registers a notification with NeutrinoNotifier which will be triggered once the txid reaches numConfs number of confirmations.

func (*NeutrinoNotifier) RegisterSpendNtfn

func (n *NeutrinoNotifier) RegisterSpendNtfn(outpoint *wire.OutPoint,
	pkScript []byte, heightHint uint32) (*chainntnfs.SpendEvent, error)

RegisterSpendNtfn registers an intent to be notified once the target outpoint has been spent by a transaction on-chain. Once a spend of the target outpoint has been detected, the details of the spending event will be sent across the 'Spend' channel.

func (*NeutrinoNotifier) Start

func (n *NeutrinoNotifier) Start() error

Start contacts the running neutrino light client and kicks off an initial empty rescan.

func (*NeutrinoNotifier) Stop

func (n *NeutrinoNotifier) Stop() error

Stop shuts down the NeutrinoNotifier.

Jump to

Keyboard shortcuts

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