Versions in this module Expand all Collapse all v0 v0.6.1 Aug 11, 2020 Changes in this version + var ErrInvalidParameter = errors.New("invalid parameter") v0.6.0 Aug 6, 2020 Changes in this version + const MassPerScriptPubKeyByte + const MassPerSigOp + const MassPerTxByte + const MaxCoinbasePayloadLen + const UnacceptedBlueScore + var OpTrueScript = []byte + func CalcBlockMass(pastUTXO UTXOSet, transactions []*util.Tx) (uint64, error) + func CalcBlockSubsidy(blueScore uint64, dagParams *dagconfig.Params) uint64 + func CalcTxMass(tx *util.Tx, previousScriptPubKeys [][]byte) uint64 + func CalcTxMassFromUTXOSet(tx *util.Tx, utxoSet UTXOSet) (uint64, error) + func CheckTransactionInputsAndCalulateFee(tx *util.Tx, txBlueScore uint64, utxoSet UTXOSet, dagParams *dagconfig.Params, ...) (txFeeInSompi uint64, err error) + func CheckTransactionSanity(tx *util.Tx, subnetworkID *subnetworkid.SubnetworkID) error + func CoinbasePayloadExtraData(extraNonce uint64, coinbaseFlags string) ([]byte, error) + func ExtractGasLimit(tx *wire.MsgTx) uint64 + func FileExists(name string) bool + func HashMerkleBranches(left *daghash.Hash, right *daghash.Hash) *daghash.Hash + func IsFinalizedTransaction(tx *util.Tx, blockBlueScore uint64, blockTime mstime.Time) bool + func IsNotInDAGErr(err error) bool + func LoadBlocks(filename string) (blocks []*util.Block, err error) + func LockTimeToSequence(isMilliseconds bool, locktime uint64) uint64 + func PrepareAndProcessBlockForTest(t *testing.T, dag *BlockDAG, parentHashes []*daghash.Hash, ...) *wire.MsgBlock + func PrepareBlockForTest(dag *BlockDAG, parentHashes []*daghash.Hash, transactions []*wire.MsgTx) (*wire.MsgBlock, error) + func SequenceLockActive(sequenceLock *SequenceLock, blockBlueScore uint64, medianTimePast mstime.Time) bool + func TxToSubnetworkID(tx *wire.MsgTx) (*subnetworkid.SubnetworkID, error) + func ValidateTransactionScripts(tx *util.Tx, utxoSet UTXOSet, flags txscript.ScriptFlags, ...) error + func ValidateTxMass(tx *util.Tx, utxoSet UTXOSet) error + type BehaviorFlags uint32 + const BFAfterDelay + const BFDisallowDelay + const BFDisallowOrphans + const BFFastAdd + const BFIsSync + const BFNoPoWCheck + const BFNone + const BFWasStored + const BFWasUnorphaned + type BlockAddedNotificationData struct + Block *util.Block + WasUnorphaned bool + type BlockDAG struct + Params *dagconfig.Params + TimestampDeviationTolerance uint64 + func DAGSetup(dbName string, openDb bool, config Config) (*BlockDAG, func(), error) + func New(config *Config) (*BlockDAG, error) + func (dag *BlockDAG) AntiPastHashesBetween(lowHash, highHash *daghash.Hash, maxHashes uint64) ([]*daghash.Hash, error) + func (dag *BlockDAG) AntiPastHeadersBetween(lowHash, highHash *daghash.Hash, maxHeaders uint64) ([]*wire.BlockHeader, error) + func (dag *BlockDAG) AreKnownBlocks(hashes []*daghash.Hash) bool + func (dag *BlockDAG) BlockByHash(hash *daghash.Hash) (*util.Block, error) + func (dag *BlockDAG) BlockConfirmationsByHash(hash *daghash.Hash) (uint64, error) + func (dag *BlockDAG) BlockConfirmationsByHashNoLock(hash *daghash.Hash) (uint64, error) + func (dag *BlockDAG) BlockCount() uint64 + func (dag *BlockDAG) BlockForMining(transactions []*util.Tx) (*wire.MsgBlock, error) + func (dag *BlockDAG) BlockHashesFrom(lowHash *daghash.Hash, limit int) ([]*daghash.Hash, error) + func (dag *BlockDAG) BlockLocatorFromHashes(highHash, lowHash *daghash.Hash) (BlockLocator, error) + func (dag *BlockDAG) BlueScoreByBlockHash(hash *daghash.Hash) (uint64, error) + func (dag *BlockDAG) BluesByBlockHash(hash *daghash.Hash) ([]*daghash.Hash, error) + func (dag *BlockDAG) CalcNextBlockVersion() (int32, error) + func (dag *BlockDAG) CalcPastMedianTime() mstime.Time + func (dag *BlockDAG) CalcSequenceLock(tx *util.Tx, utxoSet UTXOSet, mempool bool) (*SequenceLock, error) + func (dag *BlockDAG) CalcSequenceLockNoLock(tx *util.Tx, utxoSet UTXOSet, mempool bool) (*SequenceLock, error) + func (dag *BlockDAG) CheckConnectBlockTemplate(block *util.Block) error + func (dag *BlockDAG) CheckConnectBlockTemplateNoLock(block *util.Block) error + func (dag *BlockDAG) ChildHashesByHash(hash *daghash.Hash) ([]*daghash.Hash, error) + func (dag *BlockDAG) CurrentBits() uint32 + func (dag *BlockDAG) FinalityInterval() uint64 + func (dag *BlockDAG) FindNextLocatorBoundaries(locator BlockLocator) (highHash, lowHash *daghash.Hash) + func (dag *BlockDAG) ForEachHash(fn func(hash daghash.Hash) error) error + func (dag *BlockDAG) GasLimit(subnetworkID *subnetworkid.SubnetworkID) (uint64, error) + func (dag *BlockDAG) GetOrphanMissingAncestorHashes(orphanHash *daghash.Hash) []*daghash.Hash + func (dag *BlockDAG) GetTopHeaders(highHash *daghash.Hash, maxHeaders uint64) ([]*wire.BlockHeader, error) + func (dag *BlockDAG) GetUTXOEntry(outpoint wire.Outpoint) (*UTXOEntry, bool) + func (dag *BlockDAG) HeaderByHash(hash *daghash.Hash) (*wire.BlockHeader, error) + func (dag *BlockDAG) IsDeploymentActive(deploymentID uint32) (bool, error) + func (dag *BlockDAG) IsInDAG(hash *daghash.Hash) bool + func (dag *BlockDAG) IsInSelectedParentChain(blockHash *daghash.Hash) (bool, error) + func (dag *BlockDAG) IsKnownBlock(hash *daghash.Hash) bool + func (dag *BlockDAG) IsKnownFinalizedBlock(blockHash *daghash.Hash) bool + func (dag *BlockDAG) IsKnownInvalid(hash *daghash.Hash) bool + func (dag *BlockDAG) IsKnownOrphan(hash *daghash.Hash) bool + func (dag *BlockDAG) IsSyncRateBelowThreshold(maxDeviation float64) bool + func (dag *BlockDAG) IsSynced() bool + func (dag *BlockDAG) LastFinalityPointHash() *daghash.Hash + func (dag *BlockDAG) Lock() + func (dag *BlockDAG) NextAcceptedIDMerkleRootNoLock() (*daghash.Hash, error) + func (dag *BlockDAG) NextBlockCoinbaseTransaction(scriptPubKey []byte, extraData []byte) (*util.Tx, error) + func (dag *BlockDAG) NextBlockCoinbaseTransactionNoLock(scriptPubKey []byte, extraData []byte) (*util.Tx, error) + func (dag *BlockDAG) NextBlockMinimumTime() mstime.Time + func (dag *BlockDAG) NextBlockMultiset() (*secp256k1.MultiSet, error) + func (dag *BlockDAG) NextBlockTime() mstime.Time + func (dag *BlockDAG) NextCoinbaseFromAddress(payToAddress util.Address, extraData []byte) (*util.Tx, error) + func (dag *BlockDAG) NextRequiredDifficulty(timestamp mstime.Time) uint32 + func (dag *BlockDAG) Now() mstime.Time + func (dag *BlockDAG) ProcessBlock(block *util.Block, flags BehaviorFlags) (isOrphan bool, isDelayed bool, err error) + func (dag *BlockDAG) RLock() + func (dag *BlockDAG) RUnlock() + func (dag *BlockDAG) SelectedParentChain(blockHash *daghash.Hash) ([]*daghash.Hash, []*daghash.Hash, error) + func (dag *BlockDAG) SelectedParentHash(blockHash *daghash.Hash) (*daghash.Hash, error) + func (dag *BlockDAG) SelectedTipBlueScore() uint64 + func (dag *BlockDAG) SelectedTipHash() *daghash.Hash + func (dag *BlockDAG) SelectedTipHeader() *wire.BlockHeader + func (dag *BlockDAG) SubnetworkID() *subnetworkid.SubnetworkID + func (dag *BlockDAG) Subscribe(callback NotificationCallback) + func (dag *BlockDAG) ThresholdState(deploymentID uint32) (ThresholdState, error) + func (dag *BlockDAG) TipHashes() []*daghash.Hash + func (dag *BlockDAG) TxsAcceptedByBlockHash(blockHash *daghash.Hash) (MultiBlockTxsAcceptanceData, error) + func (dag *BlockDAG) TxsAcceptedByVirtual() (MultiBlockTxsAcceptanceData, error) + func (dag *BlockDAG) UTXOConfirmations(outpoint *wire.Outpoint) (uint64, bool) + func (dag *BlockDAG) UTXOSet() *FullUTXOSet + func (dag *BlockDAG) Unlock() + func (dag *BlockDAG) VirtualBlueScore() uint64 + type BlockLocator []*daghash.Hash + type BlockTxsAcceptanceData struct + BlockHash daghash.Hash + TxAcceptanceData []TxAcceptanceData + type ChainChangedNotificationData struct + AddedChainBlockHashes []*daghash.Hash + RemovedChainBlockHashes []*daghash.Hash + type Config struct + DAGParams *dagconfig.Params + DatabaseContext *dbaccess.DatabaseContext + IndexManager IndexManager + Interrupt <-chan struct{} + SigCache *txscript.SigCache + SubnetworkID *subnetworkid.SubnetworkID + TimeSource TimeSource + type DiffUTXOSet struct + UTXODiff *UTXODiff + func NewDiffUTXOSet(base *FullUTXOSet, diff *UTXODiff) *DiffUTXOSet + func (dus *DiffUTXOSet) AddTx(tx *wire.MsgTx, blockBlueScore uint64) (bool, error) + func (dus *DiffUTXOSet) Get(outpoint wire.Outpoint) (*UTXOEntry, bool) + func (dus *DiffUTXOSet) String() string + func (dus *DiffUTXOSet) WithDiff(other *UTXODiff) (UTXOSet, error) + type ErrNotInDAG string + func (e ErrNotInDAG) Error() string + type ErrorCode int + const ErrBadCoinbasePayloadLen + const ErrBadCoinbaseTransaction + const ErrBadFees + const ErrBadMerkleRoot + const ErrBadTxInput + const ErrBadTxOutValue + const ErrBadUTXOCommitment + const ErrBlockMassTooHigh + const ErrBlockVersionTooOld + const ErrDelayedBlockIsNotAllowed + const ErrDifficultyTooLow + const ErrDoubleSpendInSameBlock + const ErrDuplicateBlock + const ErrDuplicateTx + const ErrDuplicateTxInputs + const ErrFinality + const ErrFinalityPointTimeTooOld + const ErrFirstTxNotCoinbase + const ErrHighHash + const ErrImmatureSpend + const ErrInvalidAncestorBlock + const ErrInvalidGas + const ErrInvalidParentsRelation + const ErrInvalidPayload + const ErrInvalidPayloadHash + const ErrInvalidSubnetwork + const ErrMissingTxOut + const ErrMultipleCoinbases + const ErrNoParents + const ErrNoTransactions + const ErrNoTxInputs + const ErrOrphanBlockIsNotAllowed + const ErrOverwriteTx + const ErrParentBlockNotCurrentTips + const ErrParentBlockUnknown + const ErrScriptMalformed + const ErrScriptValidation + const ErrSpendTooHigh + const ErrSubnetworkRegistry + const ErrTimeTooNew + const ErrTimeTooOld + const ErrTooManySigOps + const ErrTransactionsNotSorted + const ErrTxMassTooHigh + const ErrUnexpectedDifficulty + const ErrUnfinalizedTx + const ErrWithDiff + const ErrWrongParentsOrder + func (e ErrorCode) String() string + type FullUTXOSet struct + func NewFullUTXOSet() *FullUTXOSet + func (fus *FullUTXOSet) AddTx(tx *wire.MsgTx, blueScore uint64) (isAccepted bool, err error) + func (fus *FullUTXOSet) Get(outpoint wire.Outpoint) (*UTXOEntry, bool) + func (fus *FullUTXOSet) WithDiff(other *UTXODiff) (UTXOSet, error) + func (uc FullUTXOSet) String() string + type IndexManager interface + ConnectBlock func(dbContext *dbaccess.TxContext, blockHash *daghash.Hash, ...) error + Init func(*BlockDAG, *dbaccess.DatabaseContext) error + type MerkleTree []*daghash.Hash + func BuildHashMerkleTreeStore(transactions []*util.Tx) MerkleTree + func BuildIDMerkleTreeStore(transactions []*util.Tx) MerkleTree + func (mt MerkleTree) Root() *daghash.Hash + type MultiBlockTxsAcceptanceData []BlockTxsAcceptanceData + func (data MultiBlockTxsAcceptanceData) FindAcceptanceData(blockHash *daghash.Hash) (*BlockTxsAcceptanceData, bool) + type Notification struct + Data interface{} + Type NotificationType + type NotificationCallback func(*Notification) + type NotificationType int + const NTBlockAdded + const NTChainChanged + func (n NotificationType) String() string + type RuleError struct + Description string + ErrorCode ErrorCode + func (e RuleError) Error() string + type SequenceLock struct + BlockBlueScore int64 + Milliseconds int64 + type ThresholdState byte + const ThresholdActive + const ThresholdDefined + const ThresholdFailed + const ThresholdLockedIn + const ThresholdStarted + func (t ThresholdState) String() string + type TimeSource interface + Now func() mstime.Time + func NewTimeSource() TimeSource + type TxAcceptanceData struct + IsAccepted bool + Tx *util.Tx + type UTXODiff struct + func NewUTXODiff() *UTXODiff + func (d *UTXODiff) AddEntry(outpoint wire.Outpoint, entry *UTXOEntry) error + func (d *UTXODiff) RemoveEntry(outpoint wire.Outpoint, entry *UTXOEntry) error + func (d *UTXODiff) WithDiff(diff *UTXODiff) (*UTXODiff, error) + func (d UTXODiff) String() string + type UTXOEntry struct + func NewUTXOEntry(txOut *wire.TxOut, isCoinbase bool, blockBlueScore uint64) *UTXOEntry + func (entry *UTXOEntry) Amount() uint64 + func (entry *UTXOEntry) BlockBlueScore() uint64 + func (entry *UTXOEntry) IsCoinbase() bool + func (entry *UTXOEntry) IsUnaccepted() bool + func (entry *UTXOEntry) ScriptPubKey() []byte + type UTXOSet interface + AddTx func(tx *wire.MsgTx, blockBlueScore uint64) (ok bool, err error) + Get func(outpoint wire.Outpoint) (*UTXOEntry, bool) + WithDiff func(utxoDiff *UTXODiff) (UTXOSet, error) + type VirtualForTest *virtualBlock + func GetVirtualFromParentsForTest(dag *BlockDAG, parentHashes []*daghash.Hash) (VirtualForTest, error) + func SetVirtualForTest(dag *BlockDAG, virtual VirtualForTest) VirtualForTest