Documentation ¶
Index ¶
- Constants
- Variables
- func FiatRatesConvertDate(date string) (*time.Time, error)
- func RepairRocksDB(name string) error
- type AddrBalance
- type AddrContract
- type AddrContracts
- type AddressBalanceDetail
- type BlockInfo
- type BulkConnect
- type CurrencyRatesTicker
- type GetTransactionsCallback
- type ResultTickerAsString
- type ResultTickerListAsString
- type ResultTickersAsString
- 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) FiatRatesFindLastTicker() (*CurrencyRatesTicker, error)
- func (d *RocksDB) FiatRatesFindTicker(tickerTime *time.Time) (*CurrencyRatesTicker, error)
- func (d *RocksDB) FiatRatesStoreTicker(ticker *CurrencyRatesTicker) error
- func (d *RocksDB) FixUtxos(stop chan os.Signal) 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 )
const FiatRatesTimeFormat = "20060102150405" // YYYYMMDDhhmmss
FiatRatesTimeFormat is a format string for storing FiatRates timestamps in rocksdb
Variables ¶
var ErrOperationInterrupted = errors.New("ErrOperationInterrupted")
ErrOperationInterrupted is returned when operation is interrupted by OS signal
Functions ¶
func FiatRatesConvertDate ¶
FiatRatesConvertDate checks if the date is in correct format and returns the Time object. Possible formats are: YYYYMMDDhhmmss, YYYYMMDDhhmm, YYYYMMDDhh, YYYYMMDD
func RepairRocksDB ¶
RepairRocksDB calls RocksDb db repair function
Types ¶
type AddrBalance ¶
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 ¶
func (ab *AddrBalance) ReceivedSat() *big.Int
ReceivedSat computes received amount from total balance and sent amount
type AddrContract ¶
type AddrContract struct { Contract bchain.AddressDescriptor Txs uint }
AddrContract is Contract address with number of transactions done by given address
type AddrContracts ¶
type AddrContracts struct { TotalTxs uint NonContractTxs uint Contracts []AddrContract }
AddrContracts contains number of transactions and contracts for an address
type AddressBalanceDetail ¶
type AddressBalanceDetail int
AddressBalanceDetail specifies what data are returned by GetAddressBalance
type BlockInfo ¶
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 ¶
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 ¶
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 ¶
func (b *BulkConnect) ConnectBlock(block *bchain.Block, storeBlockTxs bool) error
ConnectBlock connects block in bulk mode
type CurrencyRatesTicker ¶
type CurrencyRatesTicker struct { Timestamp *time.Time // return as unix timestamp in API Rates map[string]float64 }
CurrencyRatesTicker contains coin ticker data fetched from API
type GetTransactionsCallback ¶
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 ResultTickerAsString ¶
type ResultTickerAsString struct { Timestamp int64 `json:"ts,omitempty"` Rates map[string]float64 `json:"rates"` Error string `json:"error,omitempty"` }
ResultTickerAsString contains formatted CurrencyRatesTicker data
type ResultTickerListAsString ¶
type ResultTickerListAsString struct { Timestamp int64 `json:"ts,omitempty"` Tickers []string `json:"available_currencies"` Error string `json:"error,omitempty"` }
ResultTickerListAsString contains formatted data about available currency tickers
type ResultTickersAsString ¶
type ResultTickersAsString struct {
Tickers []ResultTickerAsString `json:"tickers"`
}
ResultTickersAsString contains a formatted CurrencyRatesTicker list
type RocksDB ¶
type RocksDB struct {
// contains filtered or unexported fields
}
RocksDB handle
func NewRocksDB ¶
func NewRocksDB(path string, cacheSize uint64, 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 ¶
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 ¶
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 ¶
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) FiatRatesFindLastTicker ¶
func (d *RocksDB) FiatRatesFindLastTicker() (*CurrencyRatesTicker, error)
FiatRatesFindLastTicker gets the last FiatRates record
func (*RocksDB) FiatRatesFindTicker ¶
func (d *RocksDB) FiatRatesFindTicker(tickerTime *time.Time) (*CurrencyRatesTicker, error)
FiatRatesFindTicker gets FiatRates data closest to the specified timestamp
func (*RocksDB) FiatRatesStoreTicker ¶
func (d *RocksDB) FiatRatesStoreTicker(ticker *CurrencyRatesTicker) error
FiatRatesStoreTicker stores ticker data at the specified time
func (*RocksDB) GetAddrDescBalance ¶
func (d *RocksDB) GetAddrDescBalance(addrDesc bchain.AddressDescriptor, detail AddressBalanceDetail) (*AddrBalance, error)
GetAddrDescBalance returns AddrBalance for given addrDesc
func (*RocksDB) GetAddrDescContracts ¶
func (d *RocksDB) GetAddrDescContracts(addrDesc bchain.AddressDescriptor) (*AddrContracts, error)
GetAddrDescContracts returns AddrContracts for given addrDesc
func (*RocksDB) GetAddrDescTransactions ¶
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 ¶
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 ¶
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 ¶
GetBlockInfo returns block info stored in db
func (*RocksDB) GetMemoryStats ¶
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 ¶
func (d *RocksDB) GetTxAddresses(txid string) (*TxAddresses, error)
GetTxAddresses returns TxAddresses for given txid or nil if not found
func (*RocksDB) InitBulkConnect ¶
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 ¶
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 ¶
type StopIteration struct{}
StopIteration is returned by callback function to signal stop of iteration
func (*StopIteration) Error ¶
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 ¶
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 ¶
type TxInput struct { AddrDesc bchain.AddressDescriptor ValueSat big.Int }
TxInput holds input data of the transaction in TxAddresses