Documentation ¶
Index ¶
- Variables
- func NewPeer(network wire.BitcoinNet, id int, address string) (*peer, error)
- type Config
- type HashHeight
- type PeerManager
- func (pm *PeerManager) All(ctx context.Context, f func(ctx context.Context, p *peer))
- func (pm *PeerManager) AllBlock(ctx context.Context, f func(ctx context.Context, p *peer))
- func (pm *PeerManager) Bad(ctx context.Context, address string) error
- func (pm *PeerManager) Good(address string) error
- func (pm *PeerManager) HandleAddr(peers []string)
- func (pm *PeerManager) Random() (*peer, error)
- func (pm *PeerManager) RandomConnect(ctx context.Context) (*peer, error)
- func (pm *PeerManager) Run(ctx context.Context) error
- func (pm *PeerManager) Stats() (int, int, int)
- func (pm *PeerManager) String() string
- type Server
- func (s *Server) BalanceByAddress(ctx context.Context, encodedAddress string) (uint64, error)
- func (s *Server) BalanceByScriptHash(ctx context.Context, hash tbcd.ScriptHash) (uint64, error)
- func (s *Server) BlockByHash(ctx context.Context, hash *chainhash.Hash) (*btcutil.Block, error)
- func (s *Server) BlockHashByTxId(ctx context.Context, txId *chainhash.Hash) (*chainhash.Hash, error)
- func (s *Server) BlockHeaderBest(ctx context.Context) (uint64, *wire.BlockHeader, error)
- func (s *Server) BlockHeaderByHash(ctx context.Context, hash *chainhash.Hash) (*wire.BlockHeader, uint64, error)
- func (s *Server) BlockHeadersByHeight(ctx context.Context, height uint64) ([]*wire.BlockHeader, error)
- func (s *Server) BlockInTxIndex(ctx context.Context, blkid *chainhash.Hash) (bool, error)
- func (s *Server) BlocksMissing(ctx context.Context, count int) ([]tbcd.BlockIdentifier, error)
- func (s *Server) DBClose() error
- func (s *Server) DBOpen(ctx context.Context) error
- func (s *Server) DifficultyAtHash(ctx context.Context, hash *chainhash.Hash) (*big.Int, error)
- func (s *Server) FeesAtHeight(ctx context.Context, height, count int64) (uint64, error)
- func (s *Server) IndexIsLinear(ctx context.Context, startHash, endHash *chainhash.Hash) (int, error)
- func (s *Server) RawBlockHeaderBest(ctx context.Context) (uint64, api.ByteSlice, error)
- func (s *Server) RawBlockHeadersByHeight(ctx context.Context, height uint64) ([]api.ByteSlice, error)
- func (s *Server) Run(pctx context.Context) error
- func (s *Server) SpentOutputsByTxId(ctx context.Context, txId *chainhash.Hash) ([]tbcd.SpentInfo, error)
- func (s *Server) SyncIndexersToBest(ctx context.Context) error
- func (s *Server) SyncIndexersToHash(ctx context.Context, hash *chainhash.Hash) error
- func (s *Server) Synced(ctx context.Context) SyncInfo
- func (s *Server) TxBroadcast(ctx context.Context, tx *wire.MsgTx, force bool) (*chainhash.Hash, error)
- func (s *Server) TxBroadcastAllToPeer(ctx context.Context, p *peer) error
- func (s *Server) TxById(ctx context.Context, txId *chainhash.Hash) (*wire.MsgTx, error)
- func (s *Server) TxIndexHash(ctx context.Context) (*HashHeight, error)
- func (s *Server) TxIndexIsLinear(ctx context.Context, endHash *chainhash.Hash) (int, error)
- func (s *Server) TxIndexer(ctx context.Context, endHash *chainhash.Hash) error
- func (s *Server) TxIndexerUnwind(ctx context.Context, startBH, endBH *tbcd.BlockHeader) error
- func (s *Server) TxIndexerWind(ctx context.Context, startBH, endBH *tbcd.BlockHeader) error
- func (s *Server) UtxoIndexHash(ctx context.Context) (*HashHeight, error)
- func (s *Server) UtxoIndexIsLinear(ctx context.Context, endHash *chainhash.Hash) (int, error)
- func (s *Server) UtxoIndexer(ctx context.Context, endHash *chainhash.Hash) error
- func (s *Server) UtxoIndexerUnwind(ctx context.Context, startBH, endBH *tbcd.BlockHeader) error
- func (s *Server) UtxoIndexerWind(ctx context.Context, startBH, endBH *tbcd.BlockHeader) error
- func (s *Server) UtxosByAddress(ctx context.Context, encodedAddress string, start uint64, count uint64) ([]tbcd.Utxo, error)
- func (s *Server) UtxosByScriptHash(ctx context.Context, hash tbcd.ScriptHash, start uint64, count uint64) ([]tbcd.Utxo, error)
- type SyncInfo
Constants ¶
This section is empty.
Variables ¶
var ( UtxoIndexHashKey = []byte("utxoindexhash") // last indexed utxo hash TxIndexHashKey = []byte("txindexhash") // last indexed tx hash ErrNotLinear = errors.New("not linear") // not a valid chain ErrAlreadyIndexing = errors.New("already indexing") )
var ( ErrReset = errors.New("reset") ErrNoAddresses = errors.New("no addresses") ErrDNSSeed = errors.New("could not dns seed") ErrNoConnectedPeers = errors.New("no connected peers") )
var ( ErrTxAlreadyBroadcast = errors.New("tx already broadcast") ErrTxBroadcastNoPeers = errors.New("can't broadcast tx, no peers") )
Functions ¶
Types ¶
type Config ¶
type Config struct { AutoIndex bool BlockCache int BlockheaderCache int BlockSanity bool LevelDBHome string ListenAddress string LogLevel string MaxCachedTxs int MempoolEnabled bool Network string PeersWanted int PrometheusListenAddress string PprofListenAddress string Seeds []string }
func NewDefaultConfig ¶
func NewDefaultConfig() *Config
type HashHeight ¶ added in v0.2.0
func (HashHeight) String ¶ added in v0.2.0
func (h HashHeight) String() string
type PeerManager ¶ added in v0.3.0
type PeerManager struct {
// contains filtered or unexported fields
}
PeerManager keeps track of the available peers and their quality.
func NewPeerManager ¶ added in v0.5.0
func NewPeerManager(net wire.BitcoinNet, seeds []string, want int) (*PeerManager, error)
NewPeerManager returns a new peer manager.
func (*PeerManager) All ¶ added in v0.5.0
func (pm *PeerManager) All(ctx context.Context, f func(ctx context.Context, p *peer))
All runs a call back on all connected peers.
func (*PeerManager) AllBlock ¶ added in v0.5.0
func (pm *PeerManager) AllBlock(ctx context.Context, f func(ctx context.Context, p *peer))
func (*PeerManager) Bad ¶ added in v0.5.0
func (pm *PeerManager) Bad(ctx context.Context, address string) error
Bad marks the peer as bad.
func (*PeerManager) Good ¶ added in v0.5.0
func (pm *PeerManager) Good(address string) error
Good adds peer to good list if it does not exist in connected and good list already.
func (*PeerManager) HandleAddr ¶ added in v0.5.0
func (pm *PeerManager) HandleAddr(peers []string)
HandleAddr adds peers to good list.
func (*PeerManager) Random ¶ added in v0.5.0
func (pm *PeerManager) Random() (*peer, error)
Random returns a random connected peer.
func (*PeerManager) RandomConnect ¶ added in v0.5.0
func (pm *PeerManager) RandomConnect(ctx context.Context) (*peer, error)
RandomConnect blocks until there is a peer ready to use.
func (*PeerManager) Stats ¶ added in v0.3.0
func (pm *PeerManager) Stats() (int, int, int)
Stats returns peer statistics.
func (*PeerManager) String ¶ added in v0.5.0
func (pm *PeerManager) String() string
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
func (*Server) BalanceByAddress ¶
func (*Server) BalanceByScriptHash ¶ added in v0.4.4
func (*Server) BlockByHash ¶ added in v0.3.8
BlockByHash returns a block with the given hash.
func (*Server) BlockHashByTxId ¶ added in v0.4.4
func (*Server) BlockHeaderBest ¶ added in v0.2.0
BlockHeaderBest returns the headers for the best known blocks.
func (*Server) BlockHeaderByHash ¶
func (s *Server) BlockHeaderByHash(ctx context.Context, hash *chainhash.Hash) (*wire.BlockHeader, uint64, error)
XXX should we return a form of tbcd.BlockHeader which contains all info? and note that the return parameters here are reversed from BlockHeaderBest call.
func (*Server) BlockHeadersByHeight ¶
func (*Server) BlockInTxIndex ¶ added in v0.4.4
func (*Server) BlocksMissing ¶ added in v0.4.4
func (*Server) DBOpen ¶
DBOpen opens the underlying server database. It has been put in its own function to make it available during tests and hemictl. It would be good if it can be deleted. XXX remove and find a different way to do this.
func (*Server) DifficultyAtHash ¶ added in v0.2.0
func (*Server) FeesAtHeight ¶
func (*Server) IndexIsLinear ¶ added in v0.2.8
func (*Server) RawBlockHeaderBest ¶ added in v0.2.0
RawBlockHeaderBest returns the raw header for the best known block. XXX should we return cumulative difficulty, hash?
func (*Server) RawBlockHeadersByHeight ¶
func (*Server) SpentOutputsByTxId ¶ added in v0.2.8
func (*Server) SyncIndexersToBest ¶ added in v0.4.4
func (*Server) SyncIndexersToHash ¶ added in v0.2.0
SyncIndexersToHash tries to move the various indexers to the supplied hash (inclusive). Note: on unwind it means that it WILL unwind the the various indexers including the hash that was passed in. E.g. if this unwinds from 1001 to 1000 the indexes for block 1000 WILL be updated as well.
func (*Server) Synced ¶
Synced returns true if all block headers, blocks and all indexes are caught up.
func (*Server) TxBroadcast ¶ added in v0.5.0
func (*Server) TxBroadcastAllToPeer ¶ added in v0.5.0
func (*Server) TxIndexHash ¶ added in v0.2.0
func (s *Server) TxIndexHash(ctx context.Context) (*HashHeight, error)
TxIndexHash returns the last hash that has been been Tx indexed.
func (*Server) TxIndexIsLinear ¶ added in v0.2.8
func (*Server) TxIndexerUnwind ¶ added in v0.2.8
func (*Server) TxIndexerWind ¶ added in v0.2.8
func (*Server) UtxoIndexHash ¶ added in v0.2.0
func (s *Server) UtxoIndexHash(ctx context.Context) (*HashHeight, error)
UtxoIndexHash returns the last hash that has been been UTxO indexed.
func (*Server) UtxoIndexIsLinear ¶ added in v0.2.8
func (*Server) UtxoIndexer ¶
func (*Server) UtxoIndexerUnwind ¶ added in v0.2.8
func (*Server) UtxoIndexerWind ¶ added in v0.2.8
func (*Server) UtxosByAddress ¶
type SyncInfo ¶
type SyncInfo struct { Synced bool // True when all indexing is caught up BlockHeader HashHeight Utxo HashHeight Tx HashHeight }