Documentation ¶
Index ¶
- Constants
- Variables
- func GetUniqueTxids(txids []string) []string
- func IsZeroBigInt(b *big.Int) bool
- func NewAPIError(s string, public bool) error
- type APIError
- type AccountDetails
- type Address
- type AddressFilter
- type AddressUtxoV1
- type AddressV1
- type Amount
- type BackendInfo
- type BalanceHistories
- type BalanceHistory
- type Block
- type BlockInfo
- type BlockV1
- type BlockbookInfo
- type Blocks
- type EthereumSpecific
- type FeeStats
- type MempoolTxid
- type MempoolTxids
- type Paging
- type ScriptPubKeyV1
- type ScriptSigV1
- type SystemInfo
- type Token
- type TokenTransfer
- type TokenType
- type TokensToReturn
- type Tx
- type TxV1
- type Utxo
- type Utxos
- type Vin
- type VinV1
- type Vout
- type VoutV1
- type Worker
- func (w *Worker) AddressToV1(a *Address) *AddressV1
- func (w *Worker) AddressUtxoToV1(au Utxos) []AddressUtxoV1
- func (w *Worker) BlockToV1(b *Block) *BlockV1
- func (w *Worker) ComputeFeeStats(blockFrom, blockTo int, stopCompute chan os.Signal) error
- func (w *Worker) GetAddress(address string, page int, txsOnPage int, option AccountDetails, ...) (*Address, error)
- func (w *Worker) GetAddressUtxo(address string, onlyConfirmed bool) (Utxos, error)
- func (w *Worker) GetBalanceHistory(address string, fromTimestamp, toTimestamp int64, currencies []string, ...) (BalanceHistories, error)
- func (w *Worker) GetBlock(bid string, page int, txsOnPage int) (*Block, error)
- func (w *Worker) GetBlocks(page int, blocksOnPage int) (*Blocks, error)
- func (w *Worker) GetCurrentFiatRates(currencies []string) (*db.ResultTickerAsString, error)
- func (w *Worker) GetFeeStats(bid string) (*FeeStats, error)
- func (w *Worker) GetFiatRatesForBlockID(bid string, currencies []string) (*db.ResultTickerAsString, error)
- func (w *Worker) GetFiatRatesForTimestamps(timestamps []int64, currencies []string) (*db.ResultTickersAsString, error)
- func (w *Worker) GetFiatRatesTickersList(timestamp int64) (*db.ResultTickerListAsString, error)
- func (w *Worker) GetMempool(page int, itemsOnPage int) (*MempoolTxids, error)
- func (w *Worker) GetSpendingTxid(txid string, n int) (string, error)
- func (w *Worker) GetSystemInfo(internal bool) (*SystemInfo, error)
- func (w *Worker) GetTransaction(txid string, spendingTxs bool, specificJSON bool) (*Tx, error)
- func (w *Worker) GetTransactionFromBchainTx(bchainTx *bchain.Tx, height int, spendingTxs bool, specificJSON bool) (*Tx, error)
- func (w *Worker) GetXpubAddress(xpub string, page int, txsOnPage int, option AccountDetails, ...) (*Address, error)
- func (w *Worker) GetXpubBalanceHistory(xpub string, fromTimestamp, toTimestamp int64, currencies []string, gap int, ...) (BalanceHistories, error)
- func (w *Worker) GetXpubUtxo(xpub string, onlyConfirmed bool, gap int) (Utxos, error)
- func (w *Worker) TxToV1(tx *Tx) *TxV1
Constants ¶
const ( // AddressFilterVoutOff disables filtering of transactions by vout AddressFilterVoutOff = -1 // AddressFilterVoutInputs specifies that only txs where the address is as input are returned AddressFilterVoutInputs = -2 // AddressFilterVoutOutputs specifies that only txs where the address is as output are returned AddressFilterVoutOutputs = -3 // TokensToReturnNonzeroBalance - return only tokens with nonzero balance TokensToReturnNonzeroBalance TokensToReturn = 0 // TokensToReturnUsed - return tokens with some transfers (even if they have zero balance now) TokensToReturnUsed TokensToReturn = 1 // TokensToReturnDerived - return all derived tokens TokensToReturnDerived TokensToReturn = 2 )
Variables ¶
var ErrUnsupportedXpub = errors.New("XPUB not supported")
ErrUnsupportedXpub is returned when coin type does not support xpub address derivation or provided string is not an xpub
var Text struct { BlockbookAbout, TOSLink string }
Text contains static overridable texts used in explorer
Functions ¶
func GetUniqueTxids ¶
GetUniqueTxids removes duplicate transactions
Types ¶
type APIError ¶
APIError extends error by information if the error details should be returned to the end user
type AccountDetails ¶
type AccountDetails int
AccountDetails specifies what data returns GetAddress and GetXpub calls
const ( // AccountDetailsBasic - only that address is indexed and some basic info AccountDetailsBasic AccountDetails = iota // AccountDetailsTokens - basic info + tokens AccountDetailsTokens // AccountDetailsTokenBalances - basic info + token with balance AccountDetailsTokenBalances // AccountDetailsTxidHistory - basic + token balances + txids, subject to paging AccountDetailsTxidHistory // AccountDetailsTxHistoryLight - basic + tokens + easily obtained tx data (not requiring requests to backend), subject to paging AccountDetailsTxHistoryLight // AccountDetailsTxHistory - basic + tokens + full tx data, subject to paging AccountDetailsTxHistory )
type Address ¶
type Address struct { Paging AddrStr string `json:"address"` BalanceSat *Amount `json:"balance"` TotalReceivedSat *Amount `json:"totalReceived,omitempty"` TotalSentSat *Amount `json:"totalSent,omitempty"` UnconfirmedBalanceSat *Amount `json:"unconfirmedBalance"` UnconfirmedTxs int `json:"unconfirmedTxs"` Txs int `json:"txs"` NonTokenTxs int `json:"nonTokenTxs,omitempty"` Transactions []*Tx `json:"transactions,omitempty"` Txids []string `json:"txids,omitempty"` Nonce string `json:"nonce,omitempty"` UsedTokens int `json:"usedTokens,omitempty"` Tokens []Token `json:"tokens,omitempty"` Erc20Contract *bchain.Erc20Contract `json:"erc20Contract,omitempty"` // helpers for explorer Filter string `json:"-"` XPubAddresses map[string]struct{} `json:"-"` }
Address holds information about address and its transactions
type AddressFilter ¶
type AddressFilter struct { Vout int Contract string FromHeight uint32 ToHeight uint32 TokensToReturn TokensToReturn // OnlyConfirmed set to true will ignore mempool transactions; mempool is also ignored if FromHeight/ToHeight filter is specified OnlyConfirmed bool }
AddressFilter is used to filter data returned from GetAddress api method
type AddressUtxoV1 ¶
type AddressUtxoV1 struct { Txid string `json:"txid"` Vout uint32 `json:"vout"` Amount string `json:"amount"` AmountSat big.Int `json:"satoshis"` Height int `json:"height,omitempty"` Confirmations int `json:"confirmations"` }
AddressUtxoV1 is used for legacy api v1
type AddressV1 ¶
type AddressV1 struct { Paging AddrStr string `json:"addrStr"` Balance string `json:"balance"` TotalReceived string `json:"totalReceived"` TotalSent string `json:"totalSent"` UnconfirmedBalance string `json:"unconfirmedBalance"` UnconfirmedTxApperances int `json:"unconfirmedTxApperances"` TxApperances int `json:"txApperances"` Transactions []*TxV1 `json:"txs,omitempty"` Txids []string `json:"transactions,omitempty"` }
AddressV1 is used for legacy api v1
type Amount ¶
Amount is datatype holding amounts
func (*Amount) AsInt64 ¶
AsInt64 returns Amount as int64 (0 if Amount is nil). It is used only for legacy interfaces (socket.io) and generally not recommended to use for possible loss of precision.
func (*Amount) DecimalString ¶
DecimalString returns amount with decimal point placed according to parameter d
func (*Amount) MarshalJSON ¶
MarshalJSON Amount serialization
type BackendInfo ¶
type BackendInfo struct { BackendError string `json:"error,omitempty"` Chain string `json:"chain,omitempty"` Blocks int `json:"blocks,omitempty"` Headers int `json:"headers,omitempty"` BestBlockHash string `json:"bestBlockHash,omitempty"` Difficulty string `json:"difficulty,omitempty"` SizeOnDisk int64 `json:"sizeOnDisk,omitempty"` Version string `json:"version,omitempty"` Subversion string `json:"subversion,omitempty"` ProtocolVersion string `json:"protocolVersion,omitempty"` Timeoffset float64 `json:"timeOffset,omitempty"` Warnings string `json:"warnings,omitempty"` }
BackendInfo is used to get information about blockchain
type BalanceHistories ¶
type BalanceHistories []BalanceHistory
BalanceHistories is array of BalanceHistory
func (BalanceHistories) Len ¶
func (a BalanceHistories) Len() int
func (BalanceHistories) Less ¶
func (a BalanceHistories) Less(i, j int) bool
func (BalanceHistories) SortAndAggregate ¶
func (a BalanceHistories) SortAndAggregate(groupByTime uint32) BalanceHistories
SortAndAggregate sums BalanceHistories to groups defined by parameter groupByTime
func (BalanceHistories) Swap ¶
func (a BalanceHistories) Swap(i, j int)
type BalanceHistory ¶
type BalanceHistory struct { Time uint32 `json:"time"` Txs uint32 `json:"txs"` ReceivedSat *Amount `json:"received"` SentSat *Amount `json:"sent"` FiatRates map[string]float64 `json:"rates,omitempty"` Txid string `json:"txid,omitempty"` }
BalanceHistory contains info about one point in time of balance history
type Block ¶
type Block struct { Paging BlockInfo TxCount int `json:"txCount"` Transactions []*Tx `json:"txs,omitempty"` }
Block contains information about block
type BlockInfo ¶
type BlockInfo struct { Hash string `json:"hash"` Prev string `json:"previousBlockHash,omitempty"` Next string `json:"nextBlockHash,omitempty"` Height uint32 `json:"height"` Confirmations int `json:"confirmations"` Size int `json:"size"` Time int64 `json:"time,omitempty"` Version json.Number `json:"version"` MerkleRoot string `json:"merkleRoot"` Nonce string `json:"nonce"` Bits string `json:"bits"` Difficulty string `json:"difficulty"` Txids []string `json:"tx,omitempty"` }
BlockInfo contains extended block header data and a list of block txids
type BlockV1 ¶
type BlockV1 struct { Paging BlockInfo TxCount int `json:"txCount"` Transactions []*TxV1 `json:"txs,omitempty"` }
BlockV1 contains information about block
type BlockbookInfo ¶
type BlockbookInfo struct { Coin string `json:"coin"` Host string `json:"host"` Version string `json:"version"` GitCommit string `json:"gitCommit"` BuildTime string `json:"buildTime"` SyncMode bool `json:"syncMode"` InitialSync bool `json:"initialSync"` InSync bool `json:"inSync"` BestHeight uint32 `json:"bestHeight"` LastBlockTime time.Time `json:"lastBlockTime"` InSyncMempool bool `json:"inSyncMempool"` LastMempoolTime time.Time `json:"lastMempoolTime"` MempoolSize int `json:"mempoolSize"` Decimals int `json:"decimals"` DbSize int64 `json:"dbSize"` DbSizeFromColumns int64 `json:"dbSizeFromColumns,omitempty"` DbColumns []common.InternalStateColumn `json:"dbColumns,omitempty"` About string `json:"about"` }
BlockbookInfo contains information about the running blockbook instance
type EthereumSpecific ¶
type EthereumSpecific struct { Status int `json:"status"` // 1 OK, 0 Fail, -1 pending Nonce uint64 `json:"nonce"` GasLimit *big.Int `json:"gasLimit"` GasUsed *big.Int `json:"gasUsed"` GasPrice *Amount `json:"gasPrice"` }
EthereumSpecific contains ethereum specific transaction data
type FeeStats ¶
type FeeStats struct { TxCount int `json:"txCount"` TotalFeesSat *Amount `json:"totalFeesSat"` AverageFeePerKb int64 `json:"averageFeePerKb"` DecilesFeePerKb [11]int64 `json:"decilesFeePerKb"` }
FeeStats contains detailed block fee statistics
type MempoolTxid ¶
MempoolTxid contains information about a transaction in mempool
type MempoolTxids ¶
type MempoolTxids struct { Paging Mempool []MempoolTxid `json:"mempool"` MempoolSize int `json:"mempoolSize"` }
MempoolTxids contains a list of mempool txids with paging information
type Paging ¶
type Paging struct { Page int `json:"page,omitempty"` TotalPages int `json:"totalPages,omitempty"` ItemsOnPage int `json:"itemsOnPage,omitempty"` }
Paging contains information about paging for address, blocks and block
type ScriptPubKeyV1 ¶
type ScriptPubKeyV1 struct { Hex string `json:"hex,omitempty"` Asm string `json:"asm,omitempty"` AddrDesc bchain.AddressDescriptor `json:"-"` Addresses []string `json:"addresses"` IsAddress bool `json:"-"` Type string `json:"type,omitempty"` }
ScriptPubKeyV1 is used for legacy api v1
type ScriptSigV1 ¶
ScriptSigV1 is used for legacy api v1
type SystemInfo ¶
type SystemInfo struct { Blockbook *BlockbookInfo `json:"blockbook"` Backend *BackendInfo `json:"backend"` }
SystemInfo contains information about the running blockbook and backend instance
type Token ¶
type Token struct { Type TokenType `json:"type"` Name string `json:"name"` Path string `json:"path,omitempty"` Contract string `json:"contract,omitempty"` Transfers int `json:"transfers"` Symbol string `json:"symbol,omitempty"` Decimals int `json:"decimals,omitempty"` BalanceSat *Amount `json:"balance,omitempty"` TotalReceivedSat *Amount `json:"totalReceived,omitempty"` TotalSentSat *Amount `json:"totalSent,omitempty"` ContractIndex string `json:"-"` }
Token contains info about tokens held by an address
type TokenTransfer ¶
type TokenTransfer struct { Type TokenType `json:"type"` From string `json:"from"` To string `json:"to"` Token string `json:"token"` Name string `json:"name"` Symbol string `json:"symbol"` Decimals int `json:"decimals"` Value *Amount `json:"value"` }
TokenTransfer contains info about a token transfer done in a transaction
type TokenType ¶
type TokenType string
TokenType specifies type of token
const ERC20TokenType TokenType = "ERC20"
ERC20TokenType is Ethereum ERC20 token
const XPUBAddressTokenType TokenType = "XPUBAddress"
XPUBAddressTokenType is address derived from xpub
type TokensToReturn ¶
type TokensToReturn int
TokensToReturn specifies what tokens are returned by GetAddress and GetXpubAddress
type Tx ¶
type Tx struct { Txid string `json:"txid"` Version int32 `json:"version,omitempty"` Locktime uint32 `json:"lockTime,omitempty"` Vin []Vin `json:"vin"` Vout []Vout `json:"vout"` Blockhash string `json:"blockHash,omitempty"` Blockheight int `json:"blockHeight"` Confirmations uint32 `json:"confirmations"` Blocktime int64 `json:"blockTime"` Size int `json:"size,omitempty"` ValueOutSat *Amount `json:"value"` ValueInSat *Amount `json:"valueIn,omitempty"` FeesSat *Amount `json:"fees,omitempty"` Hex string `json:"hex,omitempty"` Rbf bool `json:"rbf,omitempty"` CoinSpecificData interface{} `json:"-"` CoinSpecificJSON json.RawMessage `json:"-"` TokenTransfers []TokenTransfer `json:"tokenTransfers,omitempty"` EthereumSpecific *EthereumSpecific `json:"ethereumSpecific,omitempty"` }
Tx holds information about a transaction
type TxV1 ¶
type TxV1 struct { Txid string `json:"txid"` Version int32 `json:"version,omitempty"` Locktime uint32 `json:"locktime,omitempty"` Vin []VinV1 `json:"vin"` Vout []VoutV1 `json:"vout"` Blockhash string `json:"blockhash,omitempty"` Blockheight int `json:"blockheight"` Confirmations uint32 `json:"confirmations"` Time int64 `json:"time,omitempty"` Blocktime int64 `json:"blocktime"` ValueOut string `json:"valueOut"` ValueOutSat big.Int `json:"-"` Size int `json:"size,omitempty"` ValueIn string `json:"valueIn"` ValueInSat big.Int `json:"-"` Fees string `json:"fees"` FeesSat big.Int `json:"-"` Hex string `json:"hex"` }
TxV1 is used for legacy api v1
type Utxo ¶
type Utxo struct { Txid string `json:"txid"` Vout int32 `json:"vout"` AmountSat *Amount `json:"value"` Height int `json:"height,omitempty"` Confirmations int `json:"confirmations"` Address string `json:"address,omitempty"` Path string `json:"path,omitempty"` Locktime uint32 `json:"lockTime,omitempty"` Coinbase bool `json:"coinbase,omitempty"` StakeContract bool `json:"stake_contract"` StakeAddress string `json:"stake_address,omitempty"` }
Utxo is one unspent transaction output
type Vin ¶
type Vin struct { Txid string `json:"txid,omitempty"` Vout uint32 `json:"vout,omitempty"` Sequence int64 `json:"sequence,omitempty"` N int `json:"n"` AddrDesc bchain.AddressDescriptor `json:"-"` Addresses []string `json:"addresses,omitempty"` Searchable bool `json:"-"` IsAddress bool `json:"isAddress"` ValueSat *Amount `json:"value,omitempty"` Hex string `json:"hex,omitempty"` Asm string `json:"asm,omitempty"` Coinbase string `json:"coinbase,omitempty"` }
Vin contains information about single transaction input
type VinV1 ¶
type VinV1 struct { Txid string `json:"txid"` Vout uint32 `json:"vout"` Sequence int64 `json:"sequence,omitempty"` N int `json:"n"` ScriptSig ScriptSigV1 `json:"scriptSig"` AddrDesc bchain.AddressDescriptor `json:"-"` Addresses []string `json:"addresses"` IsAddress bool `json:"-"` Value string `json:"value"` ValueSat big.Int `json:"-"` }
VinV1 is used for legacy api v1
type Vout ¶
type Vout struct { ValueSat *Amount `json:"value,omitempty"` N int `json:"n"` Spent bool `json:"spent,omitempty"` SpentTxID string `json:"spentTxId,omitempty"` SpentIndex int `json:"spentIndex,omitempty"` SpentHeight int `json:"spentHeight,omitempty"` Hex string `json:"hex,omitempty"` Asm string `json:"asm,omitempty"` AddrDesc bchain.AddressDescriptor `json:"-"` Addresses []string `json:"addresses"` Searchable bool `json:"-"` IsAddress bool `json:"isAddress"` Type string `json:"type,omitempty"` }
Vout contains information about single transaction output
type VoutV1 ¶
type VoutV1 struct { Value string `json:"value"` ValueSat big.Int `json:"-"` N int `json:"n"` ScriptPubKey ScriptPubKeyV1 `json:"scriptPubKey"` Spent bool `json:"spent"` SpentTxID string `json:"spentTxId,omitempty"` SpentIndex int `json:"spentIndex,omitempty"` SpentHeight int `json:"spentHeight,omitempty"` }
VoutV1 is used for legacy api v1
type Worker ¶
type Worker struct {
// contains filtered or unexported fields
}
Worker is handle to api worker
func NewWorker ¶
func NewWorker(db *db.RocksDB, chain bchain.BlockChain, mempool bchain.Mempool, txCache *db.TxCache, is *common.InternalState) (*Worker, error)
NewWorker creates new api worker
func (*Worker) AddressToV1 ¶
AddressToV1 converts Address to AddressV1
func (*Worker) AddressUtxoToV1 ¶
func (w *Worker) AddressUtxoToV1(au Utxos) []AddressUtxoV1
AddressUtxoToV1 converts []AddressUtxo to []AddressUtxoV1
func (*Worker) ComputeFeeStats ¶
ComputeFeeStats computes fee distribution in defined blocks and logs them to log
func (*Worker) GetAddress ¶
func (w *Worker) GetAddress(address string, page int, txsOnPage int, option AccountDetails, filter *AddressFilter) (*Address, error)
GetAddress computes address value and gets transactions for given address
func (*Worker) GetAddressUtxo ¶
GetAddressUtxo returns unspent outputs for given address
func (*Worker) GetBalanceHistory ¶
func (w *Worker) GetBalanceHistory(address string, fromTimestamp, toTimestamp int64, currencies []string, groupBy uint32) (BalanceHistories, error)
GetBalanceHistory returns history of balance for given address
func (*Worker) GetCurrentFiatRates ¶
func (w *Worker) GetCurrentFiatRates(currencies []string) (*db.ResultTickerAsString, error)
GetCurrentFiatRates returns last available fiat rates
func (*Worker) GetFeeStats ¶
GetFeeStats returns statistics about block fees
func (*Worker) GetFiatRatesForBlockID ¶
func (w *Worker) GetFiatRatesForBlockID(bid string, currencies []string) (*db.ResultTickerAsString, error)
GetFiatRatesForBlockID returns fiat rates for block height or block hash
func (*Worker) GetFiatRatesForTimestamps ¶
func (w *Worker) GetFiatRatesForTimestamps(timestamps []int64, currencies []string) (*db.ResultTickersAsString, error)
GetFiatRatesForTimestamps returns fiat rates for each of the provided dates
func (*Worker) GetFiatRatesTickersList ¶
func (w *Worker) GetFiatRatesTickersList(timestamp int64) (*db.ResultTickerListAsString, error)
GetFiatRatesTickersList returns the list of available fiatRates tickers
func (*Worker) GetMempool ¶
func (w *Worker) GetMempool(page int, itemsOnPage int) (*MempoolTxids, error)
GetMempool returns a page of mempool txids
func (*Worker) GetSpendingTxid ¶
GetSpendingTxid returns transaction id of transaction that spent given output
func (*Worker) GetSystemInfo ¶
func (w *Worker) GetSystemInfo(internal bool) (*SystemInfo, error)
GetSystemInfo returns information about system
func (*Worker) GetTransaction ¶
GetTransaction reads transaction data from txid
func (*Worker) GetTransactionFromBchainTx ¶
func (*Worker) GetXpubAddress ¶
func (w *Worker) GetXpubAddress(xpub string, page int, txsOnPage int, option AccountDetails, filter *AddressFilter, gap int) (*Address, error)
GetXpubAddress computes address value and gets transactions for given address
func (*Worker) GetXpubBalanceHistory ¶
func (w *Worker) GetXpubBalanceHistory(xpub string, fromTimestamp, toTimestamp int64, currencies []string, gap int, groupBy uint32) (BalanceHistories, error)
GetXpubBalanceHistory returns history of balance for given xpub
func (*Worker) GetXpubUtxo ¶
GetXpubUtxo returns unspent outputs for given xpub