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