Documentation ¶
Index ¶
- Constants
- func HashesEqual(a, b []*DomainHash) bool
- type BaseBlockHeader
- type BlockAdded
- type BlockHeader
- type BlockInfo
- type BlockLevelChildern
- type BlockLevelParents
- type BlockLocator
- type BlockMetDataHashPair
- type BlockSent
- type BlockStatus
- type BlockWithTrustedData
- type Consensus
- type ConsensusEvent
- type DomainBlock
- type DomainBlockTemplate
- type DomainCoinbaseData
- type DomainHash
- func CloneHashes(hashes []*DomainHash) []*DomainHash
- func NewDomainHashFromByteArray(hashBytes *[DomainHashSize]byte) *DomainHash
- func NewDomainHashFromByteSlice(hashBytes []byte) (*DomainHash, error)
- func NewDomainHashFromString(hashString string) (*DomainHash, error)
- func NewZeroHash() *DomainHash
- func (hash *DomainHash) ByteArray() *[DomainHashSize]byte
- func (hash *DomainHash) ByteSlice() []byte
- func (hash *DomainHash) Equal(other *DomainHash) bool
- func (hash *DomainHash) Less(other *DomainHash) bool
- func (hash *DomainHash) LessOrEqual(other *DomainHash) bool
- func (hash DomainHash) String() string
- type DomainOutpoint
- type DomainSubnetworkID
- type DomainTransaction
- type DomainTransactionID
- type DomainTransactionInput
- type MType
- type MetGDagData
- type MutableBlockHeader
- type MutableUTXODiff
- type OutpointAndUTXOEntryPair
- type ReadOnlyUTXOSetIterator
- type ScriptPublicKey
- type SelectedChainPath
- type SyncInfo
- type TempBlock
- type TempTransaction
- type TrustedDataDataMETBlockHeader
- type UTXOCollection
- type UTXODiff
- type UTXOEntry
- type VirtualChangeSet
Constants ¶
const DomainHashSize = 32
DomainHashSize of array used to store hashes.
const DomainSubnetworkIDSize = 20
DomainSubnetworkIDSize is the size of the array used to store subnetwork IDs.
Variables ¶
This section is empty.
Functions ¶
func HashesEqual ¶
func HashesEqual(a, b []*DomainHash) bool
HashesEqual returns whether the given hash slices are equal.
Types ¶
type BaseBlockHeader ¶
type BaseBlockHeader interface { Version() uint16 Blockheight() uint64 BlockHash() *DomainHash Previoushash() *DomainHash Merkleroothash() *DomainHash DirectParents() BlockLevelParents MetBlock() *DomainHash MegaBlock() *DomainHash ChildBlocks() []BlockLevelChildern UTXOCommitment() *DomainHash TimeInMilliseconds() int64 BlockLevel(maxBlockLevel int) int Parents() []BlockLevelParents Bits() uint64 Nonce() uint64 UtxoCommitment() []byte Btype() int }
BaseBlockHeader represents the header part of a MET block
type BlockAdded ¶
type BlockAdded struct {
Block *DomainBlock
}
BlockAdded is an event raised by consensus when a block was added to the dag
type BlockHeader ¶
type BlockHeader interface { BaseBlockHeader ToMutable() MutableBlockHeader }
type BlockInfo ¶
type BlockInfo struct { Exists bool BlockStatus BlockStatus BlueScore uint64 BlueWork *big.Int SelectedParent *DomainHash MergeSetBlues []*DomainHash MergeSetReds []*DomainHash }
BlockInfo contains various information about a specific block
type BlockLevelChildern ¶
type BlockLevelChildern []*DomainHash
func CloneChildren ¶
func CloneChildren(parents []BlockLevelChildern) []BlockLevelChildern
CloneParents creates a clone of the given BlockLevelParents slice
func (BlockLevelChildern) Clone ¶
func (sl BlockLevelChildern) Clone() BlockLevelChildern
Clone creates a clone of this BlockLevelParents
type BlockLevelParents ¶
type BlockLevelParents []*DomainHash
func CloneParents ¶
func CloneParents(parents []BlockLevelParents) []BlockLevelParents
CloneParents creates a clone of the given BlockLevelParents slice
func (BlockLevelParents) Clone ¶
func (sl BlockLevelParents) Clone() BlockLevelParents
Clone creates a clone of this BlockLevelParents
type BlockLocator ¶
type BlockLocator []*DomainHash
type BlockMetDataHashPair ¶
type BlockMetDataHashPair struct { Hash *DomainHash MetGDagData *MetGDagData }
BlockGHOSTDAGDataHashPair is a pair of a block hash and its ghostdag data
type BlockSent ¶
type BlockSent struct {
Block *DomainBlock
}
BlockAdded is an event raised by consensus when a block was added to the dag
type BlockStatus ¶
type BlockStatus byte
BlockStatus represents the validation state of the block.
const ( // StatusInvalid indicates that the block is invalid. StatusInvalid BlockStatus = iota // StatusUTXOValid indicates the block is valid from any UTXO related aspects and has passed all the other validations as well. StatusUTXOValid // StatusUTXOPendingVerification indicates that the block is pending verification against its past UTXO-Set, either // because it was not yet verified since the block was never in the selected parent chain, or if the // block violates finality. StatusUTXOPendingVerification // StatusDisqualifiedFromChain indicates that the block is not eligible to be a selected parent. StatusDisqualifiedFromChain // StatusHeaderOnly indicates that the block transactions are not held (pruned or wasn't added yet) StatusHeaderOnly )
type BlockWithTrustedData ¶
type BlockWithTrustedData struct { Block *DomainBlock MetblockDAA []*TrustedDataDataMETBlockHeader MetDagData []*BlockMetDataHashPair }
type Consensus ¶
type Consensus interface { Init(skipAddingGenesis bool) error //Needed for Mining BuildBlockTemplate(coinbaseData *DomainCoinbaseData) (*DomainBlockTemplate, error) BuildBlock(block *TempBlock) (*TempBlock, error) }
type ConsensusEvent ¶
type ConsensusEvent interface {
// contains filtered or unexported methods
}
ConsensusEvent is an interface type that is implemented by all events raised by consensus
type DomainBlock ¶
type DomainBlock struct { Header BlockHeader Transactions []*DomainTransaction }
DomainBlock represents a Metchain block
func (*DomainBlock) Clone ¶
func (block *DomainBlock) Clone() *DomainBlock
Clone returns a clone of DomainBlock
type DomainBlockTemplate ¶
type DomainBlockTemplate struct { Block *DomainBlock CoinbaseData *DomainCoinbaseData IsNearlySynced bool }
DomainBlockTemplate contains a Block plus metadata related to its generation
type DomainCoinbaseData ¶
type DomainCoinbaseData struct { ScriptPublicKey *ScriptPublicKey ExtraData []byte }
DomainCoinbaseData contains data by which a coinbase transaction is built
func AddressToConbaseData ¶
func AddressToConbaseData(address mconfig.Address, data string) *DomainCoinbaseData
func (*DomainCoinbaseData) Equal ¶
func (dcd *DomainCoinbaseData) Equal(other *DomainCoinbaseData) bool
type DomainHash ¶
type DomainHash struct {
// contains filtered or unexported fields
}
DomainHash is the domain representation of a Hash
func CloneHashes ¶
func CloneHashes(hashes []*DomainHash) []*DomainHash
CloneHashes returns a clone of the given hashes slice. Note: since DomainHash is a read-only type, the clone is shallow
func NewDomainHashFromByteArray ¶
func NewDomainHashFromByteArray(hashBytes *[DomainHashSize]byte) *DomainHash
NewDomainHashFromByteArray constructs a new DomainHash out of a byte array
func NewDomainHashFromByteSlice ¶
func NewDomainHashFromByteSlice(hashBytes []byte) (*DomainHash, error)
NewDomainHashFromByteSlice constructs a new DomainHash out of a byte slice. Returns an error if the length of the byte slice is not exactly `DomainHashSize`
func NewDomainHashFromString ¶
func NewDomainHashFromString(hashString string) (*DomainHash, error)
NewDomainHashFromString constructs a new DomainHash out of a hex-encoded string. Returns an error if the length of the string is not exactly `DomainHashSize * 2`
func NewZeroHash ¶
func NewZeroHash() *DomainHash
NewZeroHash returns a DomainHash that represents the zero value (0x000000...000)
func (*DomainHash) ByteArray ¶
func (hash *DomainHash) ByteArray() *[DomainHashSize]byte
ByteArray returns the bytes in this hash represented as a byte array. The hash bytes are cloned, therefore it is safe to modify the resulting array.
func (*DomainHash) ByteSlice ¶
func (hash *DomainHash) ByteSlice() []byte
ByteSlice returns the bytes in this hash represented as a byte slice. The hash bytes are cloned, therefore it is safe to modify the resulting slice.
func (*DomainHash) Equal ¶
func (hash *DomainHash) Equal(other *DomainHash) bool
Equal returns whether hash equals to other
func (*DomainHash) Less ¶
func (hash *DomainHash) Less(other *DomainHash) bool
Less returns true if hash is less than other
func (*DomainHash) LessOrEqual ¶
func (hash *DomainHash) LessOrEqual(other *DomainHash) bool
LessOrEqual returns true if hash is smaller or equal to other
func (DomainHash) String ¶
func (hash DomainHash) String() string
String returns the Hash as the hexadecimal string of the hash.
type DomainOutpoint ¶
type DomainOutpoint struct { TransactionID DomainTransactionID Index uint32 }
DomainOutpoint represents a Metchain transaction outpoint
type DomainSubnetworkID ¶
type DomainSubnetworkID [DomainSubnetworkIDSize]byte
DomainSubnetworkID is the domain representation of a Subnetwork ID
func (*DomainSubnetworkID) Clone ¶
func (id *DomainSubnetworkID) Clone() *DomainSubnetworkID
Clone returns a clone of DomainSubnetworkID
func (*DomainSubnetworkID) Equal ¶
func (id *DomainSubnetworkID) Equal(other *DomainSubnetworkID) bool
Equal returns whether id equals to other
func (DomainSubnetworkID) String ¶
func (id DomainSubnetworkID) String() string
String stringifies a subnetwork ID.
type DomainTransaction ¶
type DomainTransaction struct { Version uint16 Inputs []*DomainTransactionInput LockTime uint64 Payload []byte Fee uint64 ID *DomainTransactionID }
DomainTransaction represents a Metchain transaction
type DomainTransactionID ¶
type DomainTransactionID DomainHash
DomainTransactionID represents the ID of a Metchain transaction
func (*DomainTransactionID) ByteSlice ¶
func (id *DomainTransactionID) ByteSlice() []byte
ByteSlice returns the bytes in this transactionID represented as a byte slice. The transactionID bytes are cloned, therefore it is safe to modify the resulting slice.
type DomainTransactionInput ¶
type DomainTransactionInput struct { PreviousOutpoint DomainOutpoint SignatureScript []byte Sequence uint64 SigOpCount byte UTXOEntry UTXOEntry }
DomainTransactionInput represents a Metchain transaction input
type MetGDagData ¶
type MetGDagData struct {
// contains filtered or unexported fields
}
func NewMETGBlockData ¶
func NewMETGBlockData( selectedParent *DomainHash, ) *MetGDagData
NewBlockGHOSTDAGData creates a new instance of BlockGHOSTDAGData
func (*MetGDagData) SelectedParent ¶
func (mgdb *MetGDagData) SelectedParent() *DomainHash
SelectedParent returns the SelectedParent of the block
type MutableBlockHeader ¶
type MutableBlockHeader interface { BaseBlockHeader ToImmutable() BlockHeader SetNonce(nonce uint64) SetTimeInMilliseconds(timeInMilliseconds int64) SetHashMerkleRoot(hashMerkleRoot *DomainHash) }
type MutableUTXODiff ¶
type MutableUTXODiff interface { ToImmutable() UTXODiff WithDiff(other UTXODiff) (UTXODiff, error) DiffFrom(other UTXODiff) (UTXODiff, error) ToAdd() UTXOCollection ToRemove() UTXOCollection WithDiffInPlace(other UTXODiff) error AddTransaction(transaction *DomainTransaction, blockDAAScore uint64) error }
MutableUTXODiff represents a UTXO-Diff that can be mutated
type OutpointAndUTXOEntryPair ¶
type OutpointAndUTXOEntryPair struct { Outpoint *DomainOutpoint UTXOEntry UTXOEntry }
OutpointAndUTXOEntryPair is an outpoint along with its respective UTXO entry
type ReadOnlyUTXOSetIterator ¶
type ScriptPublicKey ¶
represents a Metchain ScriptPublicKey
func (*ScriptPublicKey) Equal ¶
func (spk *ScriptPublicKey) Equal(other *ScriptPublicKey) bool
Equal returns whether spk equals to other
type SelectedChainPath ¶
type SelectedChainPath struct { Added []*DomainHash Removed []*DomainHash }
SelectedChainPath is a path the of the selected chains between two blocks.
type TempBlock ¶
type TempBlock struct { Height uint64 Timestamp int64 Nonce uint64 PreviousHash [32]byte //As per the Hash size Megablock [32]byte Metblock [32]byte Transactions []*TempTransaction CurrentHash [32]byte Bits uint64 }
func (*TempBlock) MarshalJSON ¶
type TempTransaction ¶
type TempTransaction struct { SenderBlockchainAddress string RecipientBlockchainAddress string Txtype int8 Value float32 Txhash [32]byte Timestamp int64 Txstatus int8 }
func (*TempTransaction) MarshalJSON ¶
func (t *TempTransaction) MarshalJSON() ([]byte, error)
type TrustedDataDataMETBlockHeader ¶
type TrustedDataDataMETBlockHeader struct { Header BlockHeader MetGDagData *MetGDagData }
TrustedDataDataDAAHeader is a block that belongs to BlockWithTrustedData.DAAWindow
type UTXOCollection ¶
type UTXOCollection interface { Iterator() ReadOnlyUTXOSetIterator Get(outpoint *DomainOutpoint) (UTXOEntry, bool) Contains(outpoint *DomainOutpoint) bool Len() int }
UTXOCollection represents a collection of UTXO entries, indexed by their outpoint
type UTXODiff ¶
type UTXODiff interface { ToAdd() UTXOCollection ToRemove() UTXOCollection WithDiff(other UTXODiff) (UTXODiff, error) DiffFrom(other UTXODiff) (UTXODiff, error) Reversed() UTXODiff CloneMutable() MutableUTXODiff }
UTXODiff represents the diff between two UTXO sets
type UTXOEntry ¶
type UTXOEntry interface { Amount() uint64 // Utxo amount in Sompis ScriptPublicKey() *ScriptPublicKey // The public key script for the output. BlockDAAScore() uint64 // Daa score of the block accepting the tx. IsCoinbase() bool Equal(other UTXOEntry) bool }
UTXOEntry houses details about an individual transaction output in a utxo set such as whether or not it was contained in a coinbase tx, the daa score of the block that accepts the tx, its public key script, and how much it pays.
type VirtualChangeSet ¶
type VirtualChangeSet struct { VirtualSelectedParentChainChanges *SelectedChainPath VirtualUTXODiff UTXODiff VirtualParents []*DomainHash VirtualSelectedParentBlueScore uint64 VirtualDAAScore uint64 }
VirtualChangeSet is an event raised by consensus when virtual changes