Documentation ¶
Index ¶
- Constants
- Variables
- func RepairRocksDB(name string) error
- type AddrBalance
- type AddrContract
- type AddrContracts
- type AddressBalanceDetail
- type BlockInfo
- type BulkConnect
- type GetTransactionsCallback
- type RocksDB
- func (d *RocksDB) AddrDescForOutpoint(outpoint bchain.Outpoint) bchain.AddressDescriptor
- func (d *RocksDB) Close() error
- func (d *RocksDB) ComputeInternalStateColumnStats(stopCompute chan os.Signal) error
- func (d *RocksDB) ConnectBlock(block *bchain.Block) error
- func (d *RocksDB) DatabaseSizeOnDisk() int64
- func (d *RocksDB) DeleteTx(txid string) error
- func (d *RocksDB) DisconnectBlockRangeBitcoinType(lower uint32, higher uint32) error
- func (d *RocksDB) DisconnectBlockRangeEthereumType(lower uint32, higher uint32) error
- func (d *RocksDB) GetAddrDescBalance(addrDesc bchain.AddressDescriptor, detail AddressBalanceDetail) (*AddrBalance, error)
- func (d *RocksDB) GetAddrDescContracts(addrDesc bchain.AddressDescriptor) (*AddrContracts, error)
- func (d *RocksDB) GetAddrDescTransactions(addrDesc bchain.AddressDescriptor, lower uint32, higher uint32, ...) (err error)
- func (d *RocksDB) GetAddressBalance(address string, detail AddressBalanceDetail) (*AddrBalance, error)
- func (d *RocksDB) GetAndResetConnectBlockStats() string
- func (d *RocksDB) GetBestBlock() (uint32, string, error)
- func (d *RocksDB) GetBlockHash(height uint32) (string, error)
- func (d *RocksDB) GetBlockInfo(height uint32) (*BlockInfo, error)
- func (d *RocksDB) GetMemoryStats() string
- func (d *RocksDB) GetTransactions(address string, lower uint32, higher uint32, fn GetTransactionsCallback) (err error)
- func (d *RocksDB) GetTx(txid string) (*bchain.Tx, uint32, error)
- func (d *RocksDB) GetTxAddresses(txid string) (*TxAddresses, error)
- func (d *RocksDB) InitBulkConnect() (*BulkConnect, error)
- func (d *RocksDB) LoadInternalState(rpcCoin string) (*common.InternalState, error)
- func (d *RocksDB) PutTx(tx *bchain.Tx, height uint32, blockTime int64) error
- func (d *RocksDB) Reopen() error
- func (d *RocksDB) SetInconsistentState(inconsistent bool) error
- func (d *RocksDB) SetInternalState(is *common.InternalState)
- func (d *RocksDB) StoreInternalState(is *common.InternalState) error
- type StopIteration
- type SyncWorker
- type TxAddresses
- type TxCache
- type TxInput
- type TxOutput
- type Utxo
Constants ¶
const ( // AddressBalanceDetailNoUTXO returns address balance without utxos AddressBalanceDetailNoUTXO = 0 // AddressBalanceDetailUTXO returns address balance with utxos AddressBalanceDetailUTXO = 1 )
Variables ¶
var ErrOperationInterrupted = errors.New("ErrOperationInterrupted")
ErrOperationInterrupted is returned when operation is interrupted by OS signal
Functions ¶
func RepairRocksDB ¶
RepairRocksDB calls RocksDb db repair function
Types ¶
type AddrBalance ¶ added in v0.1.0
type AddrBalance struct { Txs uint32 SentSat big.Int BalanceSat big.Int Utxos []Utxo // contains filtered or unexported fields }
AddrBalance stores number of transactions and balances of an address
func (*AddrBalance) ReceivedSat ¶ added in v0.1.0
func (ab *AddrBalance) ReceivedSat() *big.Int
ReceivedSat computes received amount from total balance and sent amount
type AddrContract ¶ added in v0.2.0
type AddrContract struct { Contract bchain.AddressDescriptor Txs uint }
AddrContract is Contract address with number of transactions done by given address
type AddrContracts ¶ added in v0.2.0
type AddrContracts struct { TotalTxs uint NonContractTxs uint Contracts []AddrContract }
AddrContracts contains number of transactions and contracts for an address
type AddressBalanceDetail ¶ added in v0.3.0
type AddressBalanceDetail int
AddressBalanceDetail specifies what data are returned by GetAddressBalance
type BlockInfo ¶ added in v0.1.0
type BlockInfo struct { Hash string Time int64 Txs uint32 Size uint32 Height uint32 // Height is not packed! }
BlockInfo holds information about blocks kept in column height
type BulkConnect ¶ added in v0.1.0
type BulkConnect struct {
// contains filtered or unexported fields
}
BulkConnect is used to connect blocks in bulk, faster but if interrupted inconsistent way
func (*BulkConnect) Close ¶ added in v0.1.0
func (b *BulkConnect) Close() error
Close flushes the cached data and switches DB from inconsistent state open after Close, the BulkConnect cannot be used
func (*BulkConnect) ConnectBlock ¶ added in v0.1.0
func (b *BulkConnect) ConnectBlock(block *bchain.Block, storeBlockTxs bool) error
ConnectBlock connects block in bulk mode
type GetTransactionsCallback ¶ added in v0.2.0
GetTransactionsCallback is called by GetTransactions/GetAddrDescTransactions for each found tx indexes contain array of indexes (input negative, output positive) in tx where is given address
type RocksDB ¶
type RocksDB struct {
// contains filtered or unexported fields
}
RocksDB handle
func NewRocksDB ¶
func NewRocksDB(path string, cacheSize, maxOpenFiles int, parser bchain.BlockChainParser, metrics *common.Metrics) (d *RocksDB, err error)
NewRocksDB opens an internal handle to RocksDB environment. Close needs to be called to release it.
func (*RocksDB) AddrDescForOutpoint ¶ added in v0.2.2
func (d *RocksDB) AddrDescForOutpoint(outpoint bchain.Outpoint) bchain.AddressDescriptor
AddrDescForOutpoint defines function that returns address descriptorfor given outpoint or nil if outpoint not found
func (*RocksDB) ComputeInternalStateColumnStats ¶
ComputeInternalStateColumnStats computes stats of all db columns and sets them to internal state can be very slow operation
func (*RocksDB) ConnectBlock ¶
ConnectBlock indexes addresses in the block and stores them in db
func (*RocksDB) DatabaseSizeOnDisk ¶
DatabaseSizeOnDisk returns size of the database in bytes
func (*RocksDB) DisconnectBlockRangeBitcoinType ¶ added in v0.2.0
DisconnectBlockRangeBitcoinType removes all data belonging to blocks in range lower-higher it is able to disconnect only blocks for which there are data in the blockTxs column
func (*RocksDB) DisconnectBlockRangeEthereumType ¶ added in v0.2.0
DisconnectBlockRangeEthereumType removes all data belonging to blocks in range lower-higher it is able to disconnect only blocks for which there are data in the blockTxs column
func (*RocksDB) GetAddrDescBalance ¶ added in v0.1.0
func (d *RocksDB) GetAddrDescBalance(addrDesc bchain.AddressDescriptor, detail AddressBalanceDetail) (*AddrBalance, error)
GetAddrDescBalance returns AddrBalance for given addrDesc
func (*RocksDB) GetAddrDescContracts ¶ added in v0.2.0
func (d *RocksDB) GetAddrDescContracts(addrDesc bchain.AddressDescriptor) (*AddrContracts, error)
GetAddrDescContracts returns AddrContracts for given addrDesc
func (*RocksDB) GetAddrDescTransactions ¶ added in v0.1.0
func (d *RocksDB) GetAddrDescTransactions(addrDesc bchain.AddressDescriptor, lower uint32, higher uint32, fn GetTransactionsCallback) (err error)
GetAddrDescTransactions finds all input/output transactions for address descriptor Transaction are passed to callback function in the order from newest block to the oldest
func (*RocksDB) GetAddressBalance ¶ added in v0.1.0
func (d *RocksDB) GetAddressBalance(address string, detail AddressBalanceDetail) (*AddrBalance, error)
GetAddressBalance returns address balance for an address or nil if address not found
func (*RocksDB) GetAndResetConnectBlockStats ¶ added in v0.1.0
GetAndResetConnectBlockStats gets statistics about cache usage in connect blocks and resets the counters
func (*RocksDB) GetBestBlock ¶
GetBestBlock returns the block hash of the block with highest height in the db
func (*RocksDB) GetBlockHash ¶
GetBlockHash returns block hash at given height or empty string if not found
func (*RocksDB) GetBlockInfo ¶ added in v0.1.0
GetBlockInfo returns block info stored in db
func (*RocksDB) GetMemoryStats ¶ added in v0.1.0
GetMemoryStats returns memory usage statistics as reported by RocksDB
func (*RocksDB) GetTransactions ¶
func (d *RocksDB) GetTransactions(address string, lower uint32, higher uint32, fn GetTransactionsCallback) (err error)
GetTransactions finds all input/output transactions for address Transaction are passed to callback function.
func (*RocksDB) GetTx ¶
GetTx returns transaction stored in db and height of the block containing it
func (*RocksDB) GetTxAddresses ¶ added in v0.1.0
func (d *RocksDB) GetTxAddresses(txid string) (*TxAddresses, error)
GetTxAddresses returns TxAddresses for given txid or nil if not found
func (*RocksDB) InitBulkConnect ¶ added in v0.1.0
func (d *RocksDB) InitBulkConnect() (*BulkConnect, error)
InitBulkConnect initializes bulk connect and switches DB to inconsistent state
func (*RocksDB) LoadInternalState ¶
func (d *RocksDB) LoadInternalState(rpcCoin string) (*common.InternalState, error)
LoadInternalState loads from db internal state or initializes a new one if not yet stored
func (*RocksDB) Reopen ¶
Reopen reopens the database It closes and reopens db, nobody can access the database during the operation!
func (*RocksDB) SetInconsistentState ¶ added in v0.1.0
SetInconsistentState sets the internal state to DbStateInconsistent or DbStateOpen based on inconsistent parameter db in left in DbStateInconsistent state cannot be used and must be recreated
func (*RocksDB) SetInternalState ¶
func (d *RocksDB) SetInternalState(is *common.InternalState)
SetInternalState sets the InternalState to be used by db to collect internal state
func (*RocksDB) StoreInternalState ¶
func (d *RocksDB) StoreInternalState(is *common.InternalState) error
StoreInternalState stores the internal state to db
type StopIteration ¶ added in v0.1.0
type StopIteration struct{}
StopIteration is returned by callback function to signal stop of iteration
func (*StopIteration) Error ¶ added in v0.1.0
func (e *StopIteration) Error() string
type SyncWorker ¶
type SyncWorker struct {
// contains filtered or unexported fields
}
SyncWorker is handle to SyncWorker
func NewSyncWorker ¶
func NewSyncWorker(db *RocksDB, chain bchain.BlockChain, syncWorkers, syncChunk int, minStartHeight int, dryRun bool, chanOsSignal chan os.Signal, metrics *common.Metrics, is *common.InternalState) (*SyncWorker, error)
NewSyncWorker creates new SyncWorker and returns its handle
func (*SyncWorker) ConnectBlocksParallel ¶
func (w *SyncWorker) ConnectBlocksParallel(lower, higher uint32) error
ConnectBlocksParallel uses parallel goroutines to get data from blockchain daemon
func (*SyncWorker) DisconnectBlocks ¶
func (w *SyncWorker) DisconnectBlocks(lower uint32, higher uint32, hashes []string) error
DisconnectBlocks removes all data belonging to blocks in range lower-higher,
func (*SyncWorker) ResyncIndex ¶
func (w *SyncWorker) ResyncIndex(onNewBlock bchain.OnNewBlockFunc, initialSync bool) error
ResyncIndex synchronizes index to the top of the blockchain onNewBlock is called when new block is connected, but not in initial parallel sync
type TxAddresses ¶ added in v0.1.0
TxAddresses stores transaction inputs and outputs with amounts
type TxCache ¶
type TxCache struct {
// contains filtered or unexported fields
}
TxCache is handle to TxCacheServer
func NewTxCache ¶
func NewTxCache(db *RocksDB, chain bchain.BlockChain, metrics *common.Metrics, is *common.InternalState, enabled bool) (*TxCache, error)
NewTxCache creates new TxCache interface and returns its handle
type TxInput ¶ added in v0.1.0
type TxInput struct { AddrDesc bchain.AddressDescriptor ValueSat big.Int }
TxInput holds input data of the transaction in TxAddresses