txhelpers

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 12, 2018 License: ISC Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (

	// DefaultStakeDbName is the default database name
	DefaultStakeDbName = "ffldb_stake"
)

Variables

This section is empty.

Functions

func BlockConsumesOutpointWithAddresses

func BlockConsumesOutpointWithAddresses(block *hcutil.Block, addrs map[string]TxAction,
	c RawTransactionGetter, params *chaincfg.Params) map[string][]*hcutil.Tx

BlockConsumesOutpointWithAddresses checks the specified block to see if it includes transactions that spend from outputs created using any of the addresses in addrs. The TxAction for each address is not important, but it would logically be TxMined. Both regular and stake transactions are checked. The RPC client is used to get the PreviousOutPoint for each TxIn of each transaction in the block, from which the address is obtained from the PkScript of that output. chaincfg Params is required to decode the script.

func BlockReceivesToAddresses

func BlockReceivesToAddresses(block *hcutil.Block, addrs map[string]TxAction,
	params *chaincfg.Params) map[string][]*hcutil.Tx

BlockReceivesToAddresses checks a block for transactions paying to the specified addresses, and creates a map of addresses to a slice of hcutil.Tx involving the address.

func BuildStakeTree

func BuildStakeTree(blocks map[int64]*hcutil.Block, netParams *chaincfg.Params,
	nodeClient *hcrpcclient.Client, poolRequiredHeight int64, DBName ...string) (database.DB, []int64, error)

BuildStakeTree returns a database with a stake tree

func DetermineTxTypeString

func DetermineTxTypeString(msgTx *wire.MsgTx) string

DetermineTxTypeString returns a string representing the transaction type given a wire.MsgTx struct

func FeeInfoBlock

func FeeInfoBlock(block *hcutil.Block) *dcrjson.FeeInfoBlock

FeeInfoBlock computes ticket fee statistics for the tickets included in the specified block.

func FeeRateInfoBlock

func FeeRateInfoBlock(block *hcutil.Block) *dcrjson.FeeInfoBlock

FeeRateInfoBlock computes ticket fee rate statistics for the tickets included in the specified block.

func GetDifficultyRatio

func GetDifficultyRatio(bits uint32, params *chaincfg.Params) float64

GetDifficultyRatio returns the proof-of-work difficulty as a multiple of the minimum difficulty using the passed bits field from the header of a block.

func HashInSlice

func HashInSlice(h chainhash.Hash, list []chainhash.Hash) bool

HashInSlice determines if a hash exists in a slice of hashes.

func IncludesStakeTx

func IncludesStakeTx(txHash *chainhash.Hash, block *hcutil.Block) (int, int8)

IncludesStakeTx checks if a block contains a stake transaction hash

func IncludesTx

func IncludesTx(txHash *chainhash.Hash, block *hcutil.Block) (int, int8)

IncludesTx checks if a block contains a transaction hash

func IsStakeTx

func IsStakeTx(msgTx *wire.MsgTx) bool

IsStakeTx indicates if the input MsgTx is a stake transaction.

func MedianAmount

func MedianAmount(s []hcutil.Amount) hcutil.Amount

MedianAmount gets the median Amount from a slice of Amounts

func MedianCoin

func MedianCoin(s []float64) float64

MedianCoin gets the median HC from a slice of float64s

func MsgTxFromHex

func MsgTxFromHex(txhex string) *wire.MsgTx

MsgTxFromHex returns a wire.MsgTx struct built from the transaction hex string

func OutPointAddresses

func OutPointAddresses(outPoint *wire.OutPoint, c RawTransactionGetter,
	params *chaincfg.Params) ([]string, error)

OutPointAddresses gets the addresses paid to by a transaction output.

func OutPointAddressesFromString

func OutPointAddressesFromString(txid string, index uint32, tree int8,
	c RawTransactionGetter, params *chaincfg.Params) ([]string, error)

OutPointAddressesFromString is the same as OutPointAddresses, but it takes the outpoint as the tx string, vout index, and tree.

func RevokedTicketsInBlock

func RevokedTicketsInBlock(bl *hcutil.Block) []chainhash.Hash

RevokedTicketsInBlock finds all the revoked tickets in the block.

func SSGenVoteBits

func SSGenVoteBits(tx *wire.MsgTx) (uint16, error)

SSGenVoteBits returns the VoteBits of txOut[1] of a ssgen tx

func SSGenVoteChoices

func SSGenVoteChoices(tx *wire.MsgTx, params *chaincfg.Params) (BlockValidation, uint32, uint16, []*VoteChoice, error)

SSGenVoteChoices gets a ssgen's vote choices (block validity and any agendas). The vote's stake version, to which the vote choices correspond, and vote bits are also returned. Note that []*VoteChoice may be an empty slice if there are no consensus deployments for the transaction's vote version. The error value may be non-nil if the tx is not a valid ssgen.

func SSTXInBlock

func SSTXInBlock(block *hcutil.Block) []*hcutil.Tx

SSTXInBlock gets a slice containing all of the SSTX mined in a block

func TicketTxnsInBlock

func TicketTxnsInBlock(bl *hcutil.Block) ([]chainhash.Hash, []*hcutil.Tx)

TicketTxnsInBlock finds all the new tickets in the block.

func TicketsInBlock

func TicketsInBlock(bl *hcutil.Block) ([]chainhash.Hash, []*wire.MsgTx)

TicketsInBlock finds all the new tickets in the block.

func TicketsSpentInBlock

func TicketsSpentInBlock(bl *hcutil.Block) []chainhash.Hash

TicketsSpentInBlock finds all the tickets spent in the block.

func TotalVout

func TotalVout(vouts []dcrjson.Vout) hcutil.Amount

TotalVout computes the total value of a slice of dcrjson.Vout

func TxFee

func TxFee(msgTx *wire.MsgTx) hcutil.Amount

TxFee computes and returns the fee for a given tx

func TxFeeRate

func TxFeeRate(msgTx *wire.MsgTx) (hcutil.Amount, hcutil.Amount)

TxFeeRate computes and returns the fee rate in HC/KB for a given tx

func TxhashInSlice

func TxhashInSlice(txs []*hcutil.Tx, txHash *chainhash.Hash) *hcutil.Tx

TxhashInSlice searches a slice of *hcutil.Tx for a transaction with the hash txHash. If found, it returns the corresponding *Tx, otherwise nil.

func VoteBitsInBlock

func VoteBitsInBlock(block *hcutil.Block) []blockchain.VoteVersionTuple

VoteBitsInBlock returns a list of vote bits for the votes in a block

func VoteVersion

func VoteVersion(pkScript []byte) uint32

func VotesInBlock

func VotesInBlock(bl *hcutil.Block) []chainhash.Hash

VotesInBlock finds all the votes in the block.

Types

type BlockValidation

type BlockValidation struct {
	// Hash is the hash of the block being targeted (in)validated
	Hash chainhash.Hash

	// Height is the height of the block
	Height int64

	// Validity indicates the vote is to validate (true) or invalidate (false)
	// the block.
	Validity bool
}

BlockValidation models the block validation indicated by an ssgen (vote) transaction.

func SSGenVoteBlockValid

func SSGenVoteBlockValid(msgTx *wire.MsgTx) (BlockValidation, uint16, error)

SSGenVoteBlockValid determines if a vote transaction is voting yes or no to a block, and returns the votebits in case the caller wants to check agenda votes. The error return may be ignored if the input transaction is known to be a valid ssgen (vote), otherwise it should be checked.

type BlockWatchedTx

type BlockWatchedTx struct {
	BlockHeight   int64
	TxsForAddress map[string][]*hcutil.Tx
}

BlockWatchedTx contains, for a certain block, the transactions for certain watched addresses

type RawTransactionGetter

type RawTransactionGetter interface {
	GetRawTransaction(txHash *chainhash.Hash) (*hcutil.Tx, error)
}

RawTransactionGetter is an interface satisfied by hcrpcclient.Client, and required by functions that would otherwise require a hcrpcclient.Client just for GetRawTransaction.

type TxAction

type TxAction int32

TxAction is what is happening to the transaction (mined or inserted into mempool).

const (
	TxMined TxAction = 1 << iota
	TxInserted
)

Valid values for TxAction

type VoteChoice

type VoteChoice struct {
	// Single unique word identifying the vote.
	ID string `json:"id"`

	// Longer description of what the vote is about.
	Description string `json:"description"`

	// Usable bits for this vote.
	Mask uint16 `json:"mask"`

	// VoteVersion and VoteIndex specify which vote item is referenced by this
	// VoteChoice (i.e. chaincfg.Params.Deployments[VoteVersion][VoteIndex]).
	VoteVersion uint32 `json:"vote_version"`
	VoteIndex   int    `json:"vote_index"`

	// ChoiceIdx indicates the corresponding element in the vote item's []Choice
	ChoiceIdx int `json:"choice_index"`

	// Choice is the selected choice for the specified vote item
	Choice *chaincfg.Choice `json:"choice"`
}

VoteChoice represents the choice made by a vote transaction on a single vote item in an agenda. The ID, Description, and Mask fields describe the vote item for which the choice is being made. Those are the initial fields in chaincfg.Params.Deployments[VoteVersion][VoteIndex].

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL