Documentation
¶
Index ¶
- Constants
- Variables
- func CalculateHashRate(difficulty, targetTimePerBlock float64) float64
- func CalculateWindowIndex(height, stakeDiffWindowSize int64) int64
- func CountCreditDebitRows(rows []*AddressRow) (numCredit, numDebit int)
- func CountMergedRows(rows []*AddressRow, txnView AddrTxnViewType) (numMerged int, err error)
- func CountMergedRowsCompact(rows []*AddressRowCompact, txnView AddrTxnViewType) (numMerged int, err error)
- func CountUnspentCreditRows(rows []*AddressRow) (numCredit, numDebit int)
- func DevSubsidyAddress(params *chaincfg.Params) (string, error)
- func ExtractBlockTransactions(msgBlock *wire.MsgBlock, txTree int8, chainParams *chaincfg.Params, ...) ([]*Tx, [][]*Vout, []VinTxPropertyARRAY)
- func IsTimeout(msg string) bool
- func IsTimeoutErr(err error) bool
- func TimeBasedGroupingToInterval(grouping TimeBasedGrouping) (float64, error)
- type AddrTxnViewType
- type AddressBalance
- type AddressInfo
- type AddressMetrics
- type AddressRow
- func SliceAddressCreditRows(rows []*AddressRow, N, offset int) []*AddressRow
- func SliceAddressDebitRows(rows []*AddressRow, N, offset int) []*AddressRow
- func SliceAddressRows(rows []*AddressRow, N, offset int, txnView AddrTxnViewType) ([]*AddressRow, error)
- func SliceAddressRowsAll(rows []*AddressRow, N, offset int) []*AddressRow
- func SliceAddressUnspentCreditRows(rows []*AddressRow, N, offset int) []*AddressRow
- func UncompactMergedRows(merged []*AddressRowMerged) []*AddressRow
- func UncompactRows(compact []*AddressRowCompact) []*AddressRow
- type AddressRowCompact
- type AddressRowMerged
- func MergeRows(rows []*AddressRow) ([]*AddressRowMerged, error)
- func MergeRowsCompact(rows []*AddressRowCompact) []*AddressRowMerged
- func MergeRowsCompactRange(rows []*AddressRowCompact, N, offset int, txnView AddrTxnViewType) []*AddressRowMerged
- func MergeRowsRange(rows []*AddressRow, N, offset int, txnView AddrTxnViewType) ([]*AddressRowMerged, error)
- type AddressTransactions
- type AddressTx
- type AddressTxnOutput
- type AgendaStatusType
- type AgendaSummary
- type AgendaVoteChoices
- type Block
- type BlockChainData
- type BlockDataBasic
- type BlockStatus
- type BlocksGroupedInfo
- type ChartsData
- type DeletionSummary
- type DeletionSummarySlice
- type Error
- type ErrorKind
- type HistoryChart
- type JSONB
- type MileStone
- type PoolTicketsData
- type ProgressBarLoad
- type ScriptClass
- type ScriptPubKeyData
- type ScriptSig
- type SideChain
- type SyncResult
- type TicketPoolStatus
- type TicketSpendType
- type TimeBasedGrouping
- type TimeDef
- func (t *TimeDef) DatetimeWithoutTZ() string
- func (t TimeDef) Format(layout string) string
- func (t *TimeDef) MarshalJSON() ([]byte, error)
- func (t TimeDef) RFC3339() string
- func (t *TimeDef) Scan(src interface{}) error
- func (t TimeDef) String() string
- func (t TimeDef) UNIX() int64
- func (t TimeDef) Value() (driver.Value, error)
- type TimeDefLocal
- type TreasuryBalance
- type TreasurySpendVotes
- type TreasuryTx
- type Tx
- type UInt64Array
- type UTXO
- type UTXOData
- type Vin
- type VinTxProperty
- type VinTxPropertyARRAY
- type VoteChoice
- type Vout
Constants ¶
const ( // InitialDBLoad is a sync where data is first loaded from the chain db into // the respective dbs currently supported. InitialDBLoad value references // the first progress bar id on the status page. InitialDBLoad = "initial-load" // AddressesTableSync is a sync that runs immediately after initialDBLoad. // Data previously loaded into vins table is sync'd with the addresses // table. AddressesTableSync value references the second progress bar id on // the status page. AddressesTableSync = "addresses-sync" )
const ( AvgBlockSize = "avg-block-size" BlockChainSize = "blockchain-size" ChainWork = "chainwork" CoinSupply = "coin-supply" DurationBTW = "duration-btw-blocks" HashRate = "hashrate" POWDifficulty = "pow-difficulty" TicketByWindows = "ticket-by-outputs-windows" TicketPrice = "ticket-price" TicketsByBlocks = "ticket-by-outputs-blocks" TicketSpendT = "ticket-spend-type" TxPerBlock = "tx-per-block" TxPerDay = "tx-per-day" FeePerBlock = "fee-per-block" TicketPoolSize = "ticket-pool-size" TicketPoolValue = "ticket-pool-value" )
These are text keys used to identify different chart types.
const NumIntervals = 5
NumIntervals is the number of known values for TimeBasedGrouping.
Variables ¶
var ( // PGCancelError is the error string PostgreSQL returns when a query fails // to complete due to user requested cancellation. PGCancelError = "pq: canceling statement due to user request" CtxDeadlineExceeded = context.DeadlineExceeded.Error() TimeoutPrefix = "TIMEOUT of PostgreSQL query" // ErrNoResult should be returned by the db driver instead of // driver-specific errors like sql.ErrNoRows. ErrNoResult = ErrorKind("no result") )
var AddrTxnViewTypes = map[AddrTxnViewType]string{ AddrTxnAll: "all", AddrTxnCredit: "credit", AddrTxnDebit: "debit", AddrMergedTxnDebit: "merged_debit", AddrMergedTxnCredit: "merged_credit", AddrMergedTxn: "merged", AddrUnspentTxn: "unspent", AddrTxnUnknown: "unknown", }
AddrTxnViewTypes is the canonical mapping from AddrTxnViewType to string.
var TimeBasedGroupings = map[TimeBasedGrouping]string{ AllGrouping: "all", YearGrouping: "year", MonthGrouping: "month", WeekGrouping: "week", DayGrouping: "day", }
TimeBasedGroupings maps a given time grouping to its standard string value.
var TimeIntervals = [NumIntervals]TimeBasedGrouping{ AllGrouping, YearGrouping, MonthGrouping, WeekGrouping, DayGrouping, }
TimeIntervals is an array of distinct time intervals used for grouping data.
Functions ¶
func CalculateHashRate ¶
CalculateHashRate calculates the hashrate from the difficulty value and the targetTimePerBlock in seconds. The hashrate returned is in form PetaHash per second (PH/s).
func CalculateWindowIndex ¶
CalculateWindowIndex calculates the window index from the quotient of a block height and the chainParams.StakeDiffWindowSize.
func CountCreditDebitRows ¶
func CountCreditDebitRows(rows []*AddressRow) (numCredit, numDebit int)
CountCreditDebitRows returns the numbers of credit (funding) and debit (!funding) address rows in a []*AddressRow.
func CountMergedRows ¶
func CountMergedRows(rows []*AddressRow, txnView AddrTxnViewType) (numMerged int, err error)
CountMergedRows counts the number of merged rows that would result from calling MergeRows on the input slice. As with MergeRows, the input must be regular (non-merged) addresses table rows.
func CountMergedRowsCompact ¶
func CountMergedRowsCompact(rows []*AddressRowCompact, txnView AddrTxnViewType) (numMerged int, err error)
CountMergedRowsCompact counts the number of merged rows that would result from calling MergeRowsCompact (a non-merged row) on the input slice.
func CountUnspentCreditRows ¶
func CountUnspentCreditRows(rows []*AddressRow) (numCredit, numDebit int)
CountUnspentCreditRows returns the numbers of unspent credit (funding) address rows in a []*AddressRow.
func DevSubsidyAddress ¶
DevSubsidyAddress returns the development subsidy address for the specified network.
func ExtractBlockTransactions ¶
func ExtractBlockTransactions(msgBlock *wire.MsgBlock, txTree int8, chainParams *chaincfg.Params, isValid, isMainchain bool) ([]*Tx, [][]*Vout, []VinTxPropertyARRAY)
ExtractBlockTransactions extracts transaction information from a wire.MsgBlock and returns the processed information in slices of the dbtypes Tx, Vout, and VinTxPropertyARRAY.
func IsTimeout ¶
IsTimeout checks if the message is prefixed with the expected DB timeout message prefix.
func IsTimeoutErr ¶
IsTimeoutErr checks if error's message is prefixed with the expected DB timeout message prefix.
func TimeBasedGroupingToInterval ¶
func TimeBasedGroupingToInterval(grouping TimeBasedGrouping) (float64, error)
TimeBasedGroupingToInterval converts the TimeBasedGrouping value to an actual time value in seconds based on the gregorian calendar except AllGrouping that returns 1 while the unknownGrouping returns -1 and an error.
Types ¶
type AddrTxnViewType ¶
type AddrTxnViewType int
AddrTxnViewType enumerates the different address transaction view types as displayed by the address page.
const ( AddrTxnAll AddrTxnViewType = iota AddrTxnCredit AddrTxnDebit AddrMergedTxnDebit AddrMergedTxnCredit AddrMergedTxn AddrUnspentTxn AddrTxnUnknown )
These are the recognized AddrTxnViewType values.
func AddrTxnViewTypeFromStr ¶
func AddrTxnViewTypeFromStr(txnType string) AddrTxnViewType
AddrTxnViewTypeFromStr attempts to decode a string into an AddrTxnViewType.
func (AddrTxnViewType) IsMerged ¶
func (a AddrTxnViewType) IsMerged() (bool, error)
IsMerged indicates if the address transactions view type is a merged view. If the type is invalid, a non-nil error is returned.
func (AddrTxnViewType) String ¶
func (a AddrTxnViewType) String() string
type AddressBalance ¶
type AddressBalance struct {
Address string `json:"address"`
NumSpent int64 `json:"num_stxos"`
NumUnspent int64 `json:"num_utxos"`
TotalSpent int64 `json:"amount_spent"`
TotalUnspent int64 `json:"amount_unspent"`
FromStake float64 `json:"from_stake"`
ToStake float64 `json:"to_stake"`
}
AddressBalance represents the number and value of spent and unspent outputs for an address.
func (*AddressBalance) HasStakeInputs ¶
func (balance *AddressBalance) HasStakeInputs() bool
HasStakeInputs checks whether any of the Address tx inputs were stake-related.
func (*AddressBalance) HasStakeOutputs ¶
func (balance *AddressBalance) HasStakeOutputs() bool
HasStakeOutputs checks whether any of the Address tx outputs were stake-related.
type AddressInfo ¶
type AddressInfo struct {
// Address is the decred address on the current page
Address string
Net string
Type txhelpers.AddressType
// IsDummyAddress is true when the address is the dummy address typically
// used for unspendable ticket change outputs. See
// https://github.com/decred/dcrdata/v5/issues/358 for details.
IsDummyAddress bool
// Page parameters
MaxTxLimit int64
Path string
Limit, Offset int64 // ?n=Limit&start=Offset
TxnType string // ?txntype=TxnType
TxnCount int64
IsMerged bool
// NumUnconfirmed is the number of unconfirmed txns for the address
NumUnconfirmed int64
UnconfirmedTxns *AddressTransactions
// Transactions on the current page
Transactions []*AddressTx
TxnsFunding []*AddressTx
TxnsSpending []*AddressTx
NumTransactions int64 // The number of transactions in the address
NumFundingTxns int64 // number paying to the address
NumSpendingTxns int64 // number spending outpoints associated with the address
AmountReceived dcrutil.Amount
AmountSent dcrutil.Amount
AmountUnspent dcrutil.Amount
// Balance summarizes spend and unspent amounts for all known transactions.
Balance *AddressBalance
// KnownTransactions refers to the total transaction count in the DB, the
// sum of funding (crediting) and spending (debiting) txns.
KnownTransactions int64
KnownFundingTxns int64
KnownSpendingTxns int64
}
AddressInfo models data for display on the address page.
func ReduceAddressHistory ¶
func ReduceAddressHistory(addrHist []*AddressRow) (*AddressInfo, float64, float64)
ReduceAddressHistory generates a template AddressInfo from a slice of AddressRow. All fields except NumUnconfirmed and Transactions are set completely. Transactions is partially set, with each transaction having only the TxID and ReceivedTotal set. The rest of the data should be filled in by other means, such as RPC calls or database queries. Additionally, the fractions of sent and received from stake-related transactions is returned. These values are analogous to AddressBalance.FromStake and AddressBalance.ToStake, but based on only the rows given.
func (*AddressInfo) PostProcess ¶
func (a *AddressInfo) PostProcess(tipHeight uint32)
PostProcess performs time/vin/vout sorting and block height calculations.
type AddressMetrics ¶
type AddressMetrics struct {
OldestBlockTime TimeDef
YearTxsCount int64 // number of year intervals with transactions
MonthTxsCount int64 // number of year month with transactions
WeekTxsCount int64 // number of year week with transactions
DayTxsCount int64 // number of year day with transactions
}
AddressMetrics defines address metrics needed to make decisions by which grouping buttons on the address history page charts should be disabled or enabled by default.
type AddressRow ¶
type AddressRow struct {
Address string
ValidMainChain bool
// MatchingTxHash provides the relationship between spending tx inputs and
// funding tx outputs.
MatchingTxHash string
IsFunding bool
TxBlockTime TimeDef
TxHash string
TxVinVoutIndex uint32
Value uint64
VinVoutDbID uint64
MergedCount uint64
TxType int16
// In merged view, both Atoms members might be non-zero.
// In that case, Value is abs(AtomsCredit - AtomsDebit) and
// IsFunding should true if AtomsCredit > AtomsDebit
AtomsCredit uint64
AtomsDebit uint64
}
AddressRow represents a row in the addresses table
func SliceAddressCreditRows ¶
func SliceAddressCreditRows(rows []*AddressRow, N, offset int) []*AddressRow
SliceAddressCreditRows selects a subset of the crediting elements of the AddressRow slice given the count and offset.
func SliceAddressDebitRows ¶
func SliceAddressDebitRows(rows []*AddressRow, N, offset int) []*AddressRow
SliceAddressDebitRows selects a subset of the debiting elements of the AddressRow slice given the count and offset.
func SliceAddressRows ¶
func SliceAddressRows(rows []*AddressRow, N, offset int, txnView AddrTxnViewType) ([]*AddressRow, error)
SliceAddressRows selects a subset of the elements of the AddressRow slice given the count, offset, and view AddrTxnViewType. If the view type is one of the merged views (AddrMergedTxn, AddrMergedTxnCredit, or AddrMergedTxnDebit), the returned rows are generated by merging the input rows via MergeRowsRange.
func SliceAddressRowsAll ¶
func SliceAddressRowsAll(rows []*AddressRow, N, offset int) []*AddressRow
SliceAddressRowsAll selects a subset of the elements of the AddressRow slice given the count and offset.
func SliceAddressUnspentCreditRows ¶
func SliceAddressUnspentCreditRows(rows []*AddressRow, N, offset int) []*AddressRow
SliceAddressUnspentCreditRows selects a subset of the unspent crediting elements of the AddressRow slice given the count and offset.
func UncompactMergedRows ¶
func UncompactMergedRows(merged []*AddressRowMerged) []*AddressRow
UncompactMergedRows converts (to the extent possible) a []*AddressRowMerged to a []*AddressRow. VinVoutDbID is unknown and set to zero. Do not use VinVoutDbID, or insert the AddressRow.
func UncompactRows ¶
func UncompactRows(compact []*AddressRowCompact) []*AddressRow
UncompactRows converts (to the extent possible) a []AddressRowCompact to a []*AddressRow. VinVoutDbID is unknown and set to zero. Do not use VinVoutDbID, or insert the AddressRow.
func (*AddressRow) IsMerged ¶
func (ar *AddressRow) IsMerged() bool
IsMerged indicates if the AddressRow represents data for a "merged" address table view by checking the MergedCount.
type AddressRowCompact ¶
type AddressRowCompact struct {
Address string
TxBlockTime int64
MatchingTxHash chainhash.Hash
TxHash chainhash.Hash
TxVinVoutIndex uint32
TxType int16
ValidMainChain bool
IsFunding bool
Value uint64
}
AddressRowCompact is like AddressRow for efficient in-memory storage of non-merged address transaction data. The fields are ordered to avoid unneeded padding and extra data is omitted for efficient caching. The hashes are stored as chainhash.Hash ([32]byte) for efficiency and data locality. The fields of AddressRow that only pertain to merged views (AtomsCredit, AtomsDebit, and MergedTxCount) are omitted. VinVoutDbID is also omitted since it is only used when inserting data (see InsertVouts and storeBlockTxnTree).
func CompactRows ¶
func CompactRows(rows []*AddressRow) []*AddressRowCompact
CompactRows converts a []*AddressRow to a []*AddressRowCompact.
type AddressRowMerged ¶
type AddressRowMerged struct {
Address string
TxBlockTime int64
TxHash chainhash.Hash
AtomsCredit uint64
AtomsDebit uint64
MergedCount int32
TxType int16
ValidMainChain bool
}
AddressRowMerged is like AddressRow for efficient in-memory storage of merged address transaction data. The fields are ordered to avoid needless padding, and extra data is omitted for memory efficient caching. The fields that only pertain to non-merged views (IsFunding, TxVinVoutIndex, VinVoutDbID, and MatchingTxHash) are omitted. The IsFunding and Value fields are also omitted and replaced with methods to get these values from AtomsCredit and AtomsDebit as needed. Also node that MergedCount is of type int32 since that is big enough and it allows using the padding with TxType and ValidMainChain.
func MergeRows ¶
func MergeRows(rows []*AddressRow) ([]*AddressRowMerged, error)
MergeRows converts a slice of non-merged (regular addresses table row data) into a slice of merged address rows. This involves merging rows with the same transaction hash into a single entry by combining the signed values. The IsFunding field of a merged transaction indicates if the net value is positive or not, although the Value field is an absolute value (always positive). MergedRows will return a non-nil error of a merged row is detected in the input since only non-merged rows are expected.
func MergeRowsCompact ¶
func MergeRowsCompact(rows []*AddressRowCompact) []*AddressRowMerged
MergeRowsCompact converts a []*AddressRowCompact (non-merged rows) into a slice of merged address rows. This involves merging rows with the same transaction hash into a single entry by combining the signed values. The IsFunding function of an AddressRowMerged indicates if the net value is positive or not, although the Value function returns an absolute value (always positive).
func MergeRowsCompactRange ¶
func MergeRowsCompactRange(rows []*AddressRowCompact, N, offset int, txnView AddrTxnViewType) []*AddressRowMerged
MergeRowsCompactRange is like MergeRowsCompact except it extracts and converts a range of []*AddressRowCompact (non-merged rows) into a slice of merged address rows. This involves merging rows with the same transaction hash into a single entry by combining the signed values. The IsFunding function of an AddressRowMerged indicates if the net value is positive or not, although the Value function returns an absolute value (always positive). The range is specified by offset (results to skip) and N (number of results to include). Note that offset applies to a hypothetical full results slice where there are no repeated transaction hashes rather than to the input slice where there may be repeated hashes.
func MergeRowsRange ¶
func MergeRowsRange(rows []*AddressRow, N, offset int, txnView AddrTxnViewType) ([]*AddressRowMerged, error)
MergeRowsRange is like MergeRows except it extracts and converts a range of []*AddressRow (non-merged rows) into a slice of merged address rows. This involves merging rows with the same transaction hash into a single entry by combining the signed values. The IsFunding function of an AddressRowMerged indicates if the net value is positive or not, although the Value function returns an absolute value (always positive). The range is specified by offset (results to skip) and N (number of results to include). Note that offset applies to a hypothetical full results slice where there are no repeated transaction hashes rather than to the input slice where there may be repeated hashes.
func (*AddressRowMerged) IsFunding ¶
func (arm *AddressRowMerged) IsFunding() bool
IsFunding indicates the the transaction is "net funding", meaning that AtomsCredit > AtomsDebit.
func (*AddressRowMerged) Value ¶
func (arm *AddressRowMerged) Value() uint64
Value returns the absolute (non-negative) net value of the transaction as abs(AtomsCredit - AtomsDebit).
type AddressTransactions ¶
type AddressTransactions struct {
Transactions []*AddressTx
TxnsFunding []*AddressTx
TxnsSpending []*AddressTx
}
AddressTransactions collects the transactions for an address as AddressTx slices.
type AddressTx ¶
type AddressTx struct {
TxID string
TxType string
InOutID uint32
Size uint32
FormattedSize string
Total float64
Confirmations uint64
Time TimeDef
ReceivedTotal float64
SentTotal float64
IsFunding bool
MatchedTx string
MatchedTxIndex uint32
MergedTxnCount uint64 `json:",omitempty"`
BlockHeight uint32
}
AddressTx models data for transactions on the address page.
type AddressTxnOutput ¶
type AddressTxnOutput struct {
Address string
PkScript string
TxHash chainhash.Hash
//BlockHash chainhash.Hash
Vout uint32
Height int32
BlockTime int64
Atoms int64
}
AddressTxnOutput is a compact version of api/types.AddressTxnOutput.
type AgendaStatusType ¶
type AgendaStatusType int8
AgendaStatusType defines the various agenda statuses.
const ( // InitialAgendaStatus is the agenda status when the agenda is not yet up for // voting and the votes tally is not also available. InitialAgendaStatus AgendaStatusType = iota // StartedAgendaStatus is the agenda status when the agenda is up for voting. StartedAgendaStatus // FailedAgendaStatus is the agenda status set when the votes tally does not // attain the minimum threshold set. Activation height is not set for such an // agenda. FailedAgendaStatus // LockedInAgendaStatus is the agenda status when the agenda is considered to // have passed after attaining the minimum set threshold. This agenda will // have its activation height set. LockedInAgendaStatus // ActivatedAgendaStatus is the agenda status chaincfg.Params.RuleChangeActivationInterval // blocks (e.g. 8064 blocks = 2016 * 4 for 4 weeks on mainnet) after // LockedInAgendaStatus ("lockedin") that indicates when the rule change is to // be effected. https://docs.decred.org/glossary/#rule-change-interval-rci. ActivatedAgendaStatus // UnknownStatus is used when a status string is not recognized. UnknownStatus )
func AgendaStatusFromStr ¶
func AgendaStatusFromStr(status string) AgendaStatusType
AgendaStatusFromStr creates an agenda status from a string. If "UnknownStatus" is returned then an invalid status string has been passed.
func (AgendaStatusType) MarshalJSON ¶
func (a AgendaStatusType) MarshalJSON() ([]byte, error)
MarshalJSON is AgendaStatusType default marshaller.
func (AgendaStatusType) String ¶
func (a AgendaStatusType) String() string
func (*AgendaStatusType) UnmarshalJSON ¶
func (a *AgendaStatusType) UnmarshalJSON(b []byte) error
UnmarshalJSON is the default unmarshaller for AgendaStatusType.
type AgendaSummary ¶
type AgendaSummary struct {
Yes uint32
No uint32
Abstain uint32
VotingStarted int64
LockedIn int64
}
AgendaSummary describes a short summary of a given agenda that includes vote choices tally and deployment rule change intervals.
type AgendaVoteChoices ¶
type AgendaVoteChoices struct {
Abstain []uint64 `json:"abstain"`
Yes []uint64 `json:"yes"`
No []uint64 `json:"no"`
Total []uint64 `json:"total"`
Height []uint64 `json:"height,omitempty"`
Time []TimeDef `json:"time,omitempty"`
}
AgendaVoteChoices contains the vote counts on multiple intervals of time. The interval length may be either a single block, in which case Height contains the block heights, or a day, in which case Time contains the time stamps of each interval. Total is always the sum of Yes, No, and Abstain.
type Block ¶
type Block struct {
Hash string `json:"hash"`
Size uint32 `json:"size"`
Height uint32 `json:"height"`
Version uint32 `json:"version"`
NumTx uint32
NumRegTx uint32
Tx []string `json:"tx"`
TxDbIDs []uint64
NumStakeTx uint32
STx []string `json:"stx"`
STxDbIDs []uint64
Time TimeDef `json:"time"`
Nonce uint64 `json:"nonce"`
VoteBits uint16 `json:"votebits"`
Voters uint16 `json:"voters"`
FreshStake uint8 `json:"freshstake"`
Revocations uint8 `json:"revocations"`
PoolSize uint32 `json:"poolsize"`
Bits uint32 `json:"bits"`
SBits uint64 `json:"sbits"`
Difficulty float64 `json:"difficulty"`
StakeVersion uint32 `json:"stakeversion"`
PreviousHash string `json:"previousblockhash"`
ChainWork string `json:"chainwork"`
Winners []string `json:"winners"`
}
Block models a Decred block.
type BlockChainData ¶
type BlockChainData struct {
Chain string
SyncHeight int64
BestHeight int64
BestBlockHash string
Difficulty uint32
VerificationProgress float64
ChainWork string
IsInitialBlockDownload bool
MaxBlockSize int64
AgendaMileStones map[string]MileStone
}
BlockChainData defines data holding the latest block chain state from the getblockchaininfo rpc endpoint.
type BlockDataBasic ¶
type BlockDataBasic struct {
Height uint32 `json:"height,omitempty"`
Size uint32 `json:"size,omitempty"`
Hash string `json:"hash,omitempty"`
Difficulty float64 `json:"diff,omitempty"`
StakeDiff float64 `json:"sdiff,omitempty"`
Time TimeDef `json:"time,omitempty"`
NumTx uint32 `json:"txlength,omitempty"`
}
type BlockStatus ¶
type BlockStatus struct {
IsValid bool `json:"is_valid"`
IsMainchain bool `json:"is_mainchain"`
Height uint32 `json:"height"`
PrevHash string `json:"previous_hash"`
Hash string `json:"hash"`
NextHash string `json:"next_hash"`
}
BlockStatus describes a block's status in the block chain.
type BlocksGroupedInfo ¶
type BlocksGroupedInfo struct {
// intrinsic properties
IndexVal int64
EndBlock int64
Difficulty float64
TicketPrice int64
StartTime TimeDef
FormattedStartTime string
EndTime TimeDef
FormattedEndTime string
Size int64
FormattedSize string
// Aggregate properties
Voters uint64
Transactions uint64
FreshStake uint64
Revocations uint64
TxCount uint64
BlocksCount int64
}
BlocksGroupedInfo contains the data about a stake difficulty (ticket price) window, including intrinsic properties (e.g. window index, ticket price, start block, etc.), and aggregate transaction counts (e.g. number of votes, regular transactions, new tickets, etc.)
type ChartsData ¶
type ChartsData struct {
Difficulty []float64 `json:"difficulty,omitempty"`
Time []TimeDef `json:"time,omitempty"`
Size []uint64 `json:"size,omitempty"`
ChainSize []uint64 `json:"chainsize,omitempty"`
Count []uint64 `json:"count,omitempty"`
SizeF []float64 `json:"sizef,omitempty"`
ValueF []float64 `json:"valuef,omitempty"`
Unspent []uint64 `json:"unspent,omitempty"`
Revoked []uint64 `json:"revoked,omitempty"`
Height []uint64 `json:"height,omitempty"`
Pooled []uint64 `json:"pooled,omitempty"`
Solo []uint64 `json:"solo,omitempty"`
SentRtx []uint64 `json:"sentRtx,omitempty"`
ReceivedRtx []uint64 `json:"receivedRtx,omitempty"`
Tickets []uint64 `json:"tickets,omitempty"`
Votes []uint64 `json:"votes,omitempty"`
RevokeTx []uint64 `json:"revokeTx,omitempty"`
Amount []float64 `json:"amount,omitempty"`
Received []float64 `json:"received,omitempty"`
Sent []float64 `json:"sent,omitempty"`
Net []float64 `json:"net,omitempty"`
ChainWork []uint64 `json:"chainwork,omitempty"`
NetHash []uint64 `json:"nethash,omitempty"`
}
ChartsData defines the fields that store the values needed to plot the charts on the frontend.
type DeletionSummary ¶
type DeletionSummary struct {
Blocks, Vins, Vouts, Addresses, Transactions int64
VoutSpendTxIDs int64
Tickets, Votes, Misses int64
Treasury, Swaps int64
Timings *DeletionSummary // durations
}
DeletionSummary provides the number of rows removed from the tables when a block is removed.
func (DeletionSummary) String ¶
func (s DeletionSummary) String() string
String makes a pretty summary of the totals.
type DeletionSummarySlice ¶
type DeletionSummarySlice []DeletionSummary
DeletionSummarySlice is used to define methods on DeletionSummary slices.
func (DeletionSummarySlice) Reduce ¶
func (ds DeletionSummarySlice) Reduce() DeletionSummary
Reduce returns a single DeletionSummary with the corresponding fields summed.
type Error ¶
type Error struct {
// contains filtered or unexported fields
}
Error pairs an error with details.
func NewError ¶
NewError wraps the provided Error with details in an Error, facilitating the use of errors.Is and errors.As via errors.Unwrap.
type ErrorKind ¶
type ErrorKind string
ErrorKind identifies a kind of error that can be used to define new errors via const SomeError = dbtypes.ErrorKind("something").
type HistoryChart ¶
type HistoryChart int8
HistoryChart is used to differentiate the distinct graphs that appear on the address history page.
const ( TxsType HistoryChart = iota AmountFlow ChartUnknown )
These are the recognized HistoryChart values.
type JSONB ¶
type JSONB map[string]interface{}
JSONB is used to implement the sql.Scanner and driver.Valuer interfaces required for the type to make a postgresql compatible JSONB type.
type MileStone ¶
type MileStone struct {
ID int64 `json:"-"`
Status AgendaStatusType `json:"status"`
VotingStarted int64 `json:"votingStarted"`
VotingDone int64 `json:"votingdone"`
Activated int64 `json:"activated"`
HardForked int64 `json:"hardforked"`
StartTime time.Time `json:"starttime"`
ExpireTime time.Time `json:"expiretime"`
}
MileStone defines the various stages passed by vote on a given agenda. Activated is the height at which the delay time begins before a vote activates. HardForked is the height at which the consensus rule changes. VotingDone is the height at which voting is considered complete or when the status changes from "started" to either "failed" or "lockedin".
type PoolTicketsData ¶
type PoolTicketsData struct {
Time []TimeDef `json:"time,omitempty"`
Price []float64 `json:"price,omitempty"`
Mempool []uint64 `json:"mempool,omitempty"`
Immature []uint64 `json:"immature,omitempty"`
Live []uint64 `json:"live,omitempty"`
Outputs []uint64 `json:"outputs,omitempty"`
Count []uint64 `json:"count,omitempty"`
}
PoolTicketsData defines the real time data needed for ticket pool visualization charts.
type ProgressBarLoad ¶
type ProgressBarLoad struct {
From int64
To int64
Msg string
Subtitle string
BarID string
Timestamp int64
}
ProgressBarLoad contains the raw data needed to populate the status sync updates. It is used to update the status sync through a channel.
type ScriptClass ¶
type ScriptClass byte
ScriptClass is an enumeration for the list of standard types of script.
const ( SCNonStandard ScriptClass = iota // None of the recognized forms. SCPubKey // Pay pubkey. SCPubKeyHash // Pay pubkey hash. SCScriptHash // Pay to script hash. SCMultiSig // Multi signature. SCNullData // Empty data-only (provably prunable). SCStakeSubmission // Stake submission. SCStakeGen // Stake generation SCStakeRevocation // Stake revocation. SCStakeSubChange // Change for stake submission tx. SCStakeSubCommit // Pseudo-class for stake submission commitments, odd outputs SCPubkeyAlt // Alternative signature pubkey. SCPubkeyHashAlt // Alternative signature pubkey hash. SCTreasuryAdd // Add value to treasury SCTreasuryGen // Generate utxos from treasury account SCInvalid ScriptClass = 0xff )
Classes of script payment known about in the blockchain.
func NewScriptClass ¶
func NewScriptClass(sc stdscript.ScriptType) ScriptClass
NewScriptClass converts a stdscript.ScriptType to the DB's ScriptClass type, which is less fine-grained with respect to the stake subtypes.
func NewScriptClassFromString ¶
func NewScriptClassFromString(stdSC string) ScriptClass
NewScriptClassFromString creates a ScriptClass from a string representation.
func (ScriptClass) MarshalJSON ¶
func (sc ScriptClass) MarshalJSON() ([]byte, error)
MarshalJSON marshals a ScriptClass to JSON, just the string in quotes.
func (*ScriptClass) Scan ¶
func (sc *ScriptClass) Scan(src interface{}) error
Scan satisfies the sql.Scanner interface.
func (ScriptClass) String ¶
func (sc ScriptClass) String() string
String implements the Stringer interface by returning the name of the enum script class. If the enum is invalid then "Invalid" will be returned.
func (*ScriptClass) UnmarshalJSON ¶
func (sc *ScriptClass) UnmarshalJSON(b []byte) error
UnmarshalJSON unmarshals a ScriptClass from JSON, which must be a string.
type ScriptPubKeyData ¶
type ScriptPubKeyData struct {
ReqSigs uint32 `json:"reqSigs"`
Type ScriptClass `json:"type"` // marshals to string
Addresses []string `json:"addresses"`
}
ScriptPubKeyData is part of the result of decodescript(ScriptPubKeyHex)
type ScriptSig ¶
ScriptSig models the signature script used to redeem the origin transaction as a JSON object (non-coinbase txns only)
type SyncResult ¶
SyncResult is the result of a database sync operation, containing the height of the last block and an error value.
type TicketPoolStatus ¶
type TicketPoolStatus int16
const ( PoolStatusLive TicketPoolStatus = iota PoolStatusVoted PoolStatusExpired PoolStatusMissed )
NB:PoolStatusLive also defines immature tickets in addition to defining live tickets.
func (TicketPoolStatus) String ¶
func (p TicketPoolStatus) String() string
String implements the Stringer interface for TicketPoolStatus.
type TicketSpendType ¶
type TicketSpendType int16
const ( TicketUnspent TicketSpendType = iota TicketRevoked TicketVoted )
These are the recognized TicketSpendType values.
func (TicketSpendType) String ¶
func (p TicketSpendType) String() string
String implements Stringer for TicketSpendType.
type TimeBasedGrouping ¶
type TimeBasedGrouping int8
TimeBasedGrouping defines the possible ways that a time can be grouped according to all, year, month, week or day grouping. This time grouping is used in time-based grouping like charts and blocks list view.
const ( AllGrouping TimeBasedGrouping = iota YearGrouping MonthGrouping WeekGrouping DayGrouping UnknownGrouping )
These are the recognized TimeBasedGrouping values.
func TimeGroupingFromStr ¶
func TimeGroupingFromStr(groupings string) TimeBasedGrouping
TimeGroupingFromStr converts groupings string to its respective TimeBasedGrouping value.
func (TimeBasedGrouping) String ¶
func (g TimeBasedGrouping) String() string
String implements the Stringer interface for TimeBasedGrouping.
type TimeDef ¶
TimeDef is time.Time wrapper that formats time by default as a string without a timezone. The time Stringer interface formats the time into a string with a timezone.
func NewTimeDef ¶
NewTimeDef constructs a TimeDef from the given time.Time. It presets the timezone for formatting to UTC.
func NewTimeDefFromUNIX ¶
NewTimeDefFromUNIX constructs a TimeDef from the given UNIX epoch time stamp in seconds. It presets the timezone for formatting to UTC.
func (*TimeDef) DatetimeWithoutTZ ¶
DatetimeWithoutTZ formats the time in a human-friendly layout, without time zone.
func (*TimeDef) MarshalJSON ¶
MarshalJSON is set as the default marshalling function for TimeDef struct.
func (*TimeDef) Scan ¶
Scan implements the sql.Scanner interface for TimeDef. This will not reinterpret the stored time string for a particular time zone. That is, if the stored time stamp shows no time zone (as with TIMESTAMP), the default time.Time scanner will load it as a local time, and this Scan converts to UTC. If the timestamp has a timezone (as with TIMESTAMPTZ), including UTC explicitly set, it will be accounted for when converting to UTC. All this Scan implementation does beyond the default time.Time scanner is to set the time.Time's location to UTC, which keeps the instant in time the same, adjusting the numbers in the time string to the equivalent time in UTC. For example, if the time read from the DB is "2016-02-08 12:00:00" (with no time zone) and the server time zone is CST (UTC-6), this ensures the default displayed time string is in UTC: "2016-02-08 18:00:00Z". On the other hand, if the time read from the DB is "2016-02-08 12:00:00+6", it does not matter what the server time zone is set to, and the time will still be converted to UTC as "2016-02-08 18:00:00Z".
type TimeDefLocal ¶
type TimeDefLocal TimeDef
TimeDefLocal satisfies the sql.Valuer interface, but it provides Local Time.
func (TimeDefLocal) Value ¶
func (t TimeDefLocal) Value() (driver.Value, error)
Value implements the sql.Valuer interface. It ensures that the Time Values are for the Local time zone. It is unlikely to be desirable to store values this way. Only storing a time.Time in UTC allows round trip fidelity.
type TreasuryBalance ¶
type TreasuryBalance struct {
Height int64 `json:"height"`
MaturityHeight int64 `json:"maturity_height"`
Balance int64 `json:"balance"`
TxCount int64 `json:"output_count"`
AddCount int64 `json:"add_count"`
Added int64 `json:"added"`
SpendCount int64 `json:"spend_count"`
Spent int64 `json:"spent"`
TBaseCount int64 `json:"tbase_count"`
TBase int64 `json:"tbase"`
ImmatureCount int64 `json:"immature_count"`
Immature int64 `json:"immature"`
}
TreasuryBalance is the current balance, spent amount, and tx count for the treasury.
type TreasurySpendVotes ¶
type TreasurySpendVotes struct {
Hash string `json:"hash"`
Expiry int64 `json:"expiry"`
VoteStart int64 `json:"votestart"`
VoteEnd int64 `json:"voteend"`
YesVotes int64 `json:"yesvotes"`
NoVotes int64 `json:"novotes"`
}
TreasurySpendVotes summarizes the vote tally for a tspend.
type TreasuryTx ¶
type Tx ¶
type Tx struct {
//blockDbID int64
BlockHash string `json:"block_hash"`
BlockHeight int64 `json:"block_height"`
BlockTime TimeDef `json:"block_time"`
Time TimeDef `json:"time"`
TxType int16 `json:"tx_type"`
Version uint16 `json:"version"`
Tree int8 `json:"tree"`
TxID string `json:"txid"`
BlockIndex uint32 `json:"block_index"`
Locktime uint32 `json:"locktime"`
Expiry uint32 `json:"expiry"`
Size uint32 `json:"size"`
Spent int64 `json:"spent"`
Sent int64 `json:"sent"`
Fees int64 `json:"fees"`
MixCount int32 `json:"mix_count"`
MixDenom int64 `json:"mix_denom"`
NumVin uint32 `json:"numvin"`
//Vins VinTxPropertyARRAY `json:"vins"`
VinDbIds []uint64 `json:"vindbids"`
NumVout uint32 `json:"numvout"`
Vouts []*Vout `json:"vouts"`
VoutDbIds []uint64 `json:"voutdbids"`
// NOTE: VoutDbIds may not be needed if there is a vout table since each
// vout will have a tx_dbid
IsValid bool `json:"valid"`
IsMainchainBlock bool `json:"mainchain"`
}
Tx models a Decred transaction. It is stored in a Block.
type UInt64Array ¶
type UInt64Array []uint64
UInt64Array represents a one-dimensional array of PostgreSQL integer types
func (*UInt64Array) Scan ¶
func (a *UInt64Array) Scan(src interface{}) error
Scan implements the sql.Scanner interface.
type Vin ¶
type Vin struct {
//txDbID int64
Coinbase string `json:"coinbase"`
TxHash string `json:"txhash"`
VoutIdx uint32 `json:"voutidx"`
Tree int8 `json:"tree"`
Sequence uint32 `json:"sequence"`
AmountIn float64 `json:"amountin"`
BlockHeight uint32 `json:"blockheight"`
BlockIndex uint32 `json:"blockindex"`
ScriptHex string `json:"scripthex"`
}
Vin models a transaction input.
type VinTxProperty ¶
type VinTxProperty struct {
PrevOut string `json:"prevout"`
PrevTxHash string `json:"prevtxhash"`
PrevTxIndex uint32 `json:"prevvoutidx"`
PrevTxTree uint16 `json:"tree"`
Sequence uint32 `json:"sequence"`
ValueIn int64 `json:"amountin"`
TxID string `json:"tx_hash"`
TxIndex uint32 `json:"tx_index"`
TxTree uint16 `json:"tx_tree"`
TxType int16 `json:"tx_type"`
BlockHeight uint32 `json:"blockheight"`
BlockIndex uint32 `json:"blockindex"`
ScriptHex []byte `json:"scripthex"`
IsValid bool `json:"is_valid"`
IsMainchain bool `json:"is_mainchain"`
Time TimeDef `json:"time"`
}
VinTxProperty models a transaction input with previous outpoint information.
type VinTxPropertyARRAY ¶
type VinTxPropertyARRAY []VinTxProperty
VinTxPropertyARRAY is a slice of VinTxProperty structs that implements sql.Scanner and driver.Valuer.
func (*VinTxPropertyARRAY) Scan ¶
func (p *VinTxPropertyARRAY) Scan(src interface{}) error
Scan satisfies sql.Scanner
type VoteChoice ¶
type VoteChoice uint8
VoteChoice defines the type of vote choice, and the underlying integer value is stored in the database (do not change these without upgrading the DB!).
const ( Yes VoteChoice = iota Abstain No VoteChoiceUnknown )
These are the recognized VoteChoice values.
func ChoiceIndexFromStr ¶
func ChoiceIndexFromStr(choice string) (VoteChoice, error)
ChoiceIndexFromStr converts the vote choice string to a vote choice index.
func (VoteChoice) String ¶
func (v VoteChoice) String() string
String implements the Stringer interface for VoteChoice.
type Vout ¶
type Vout struct {
TxHash string `json:"tx_hash"`
TxIndex uint32 `json:"tx_index"`
TxTree int8 `json:"tx_tree"`
TxType int16 `json:"tx_type"`
Value uint64 `json:"value"`
Version uint16 `json:"version"`
ScriptPubKey []byte `json:"pkScriptHex"`
ScriptPubKeyData ScriptPubKeyData `json:"pkScript"`
Mixed bool `json:"mixed"`
}
Vout defines a transaction output