Documentation
¶
Index ¶
- Constants
- Variables
- func GetBookKeeperAddress(bookKeepers []*crypto.PubKey) (Uint160, error)
- func HeaderCheck(header *Header, receiveTime int64) error
- func TransactionCheck(block *Block) error
- type Block
- func (b *Block) Deserialize(r io.Reader) error
- func (b *Block) FromTrimmedData(r io.Reader) error
- func (b *Block) GetMessage() []byte
- func (b *Block) GetProgramHashes() ([]Uint160, error)
- func (b *Block) GetPrograms() []*program.Program
- func (b *Block) GetSigner() ([]byte, error)
- func (b *Block) Hash() Uint256
- func (bd *Block) MarshalJson() ([]byte, error)
- func (b *Block) RebuildMerkleRoot() error
- func (b *Block) Serialize(w io.Writer) error
- func (bd *Block) SerializeUnsigned(w io.Writer) error
- func (b *Block) SetPrograms(prog []*program.Program)
- func (b *Block) ToArray() []byte
- func (b *Block) Trim(w io.Writer) error
- func (b *Block) Type() InventoryType
- func (bd *Block) UnmarshalJson(data []byte) error
- func (b *Block) Verify() error
- type Blockchain
- func (bc *Blockchain) AddBlock(block *Block) error
- func (bc *Blockchain) AddBlockTime(hash Uint256, time int64)
- func (bc *Blockchain) ContainsTransaction(hash Uint256) bool
- func (bc *Blockchain) CurrentBlockHash() Uint256
- func (bc *Blockchain) GetBlockTime(hash Uint256) (int64, error)
- func (bc *Blockchain) GetBookKeepers() []*crypto.PubKey
- func (bc *Blockchain) GetBookKeepersByTXs(others []*tx.Transaction) []*crypto.PubKey
- func (bc *Blockchain) GetHeader(hash Uint256) (*Header, error)
- func (bc *Blockchain) SaveBlock(block *Block) error
- type BlocksInfo
- type Header
- func (h *Header) Deserialize(r io.Reader) error
- func (h *Header) DeserializeUnsigned(r io.Reader) error
- func (h *Header) GetMessage() []byte
- func (h *Header) GetProgramHashes() ([]Uint160, error)
- func (h *Header) GetPrograms() []*program.Program
- func (h *Header) Hash() Uint256
- func (h *Header) MarshalJson() ([]byte, error)
- func (h *Header) Serialize(w io.Writer) error
- func (h *Header) SerializeUnsigned(w io.Writer) error
- func (h *Header) SetPrograms(programs []*program.Program)
- func (h *Header) ToArray() []byte
- func (h *Header) UnmarshalJson(data []byte) error
- type HeaderInfo
- type ILedgerStore
- type Ledger
- func (l *Ledger) BlockInLedger(hash Uint256) bool
- func (l *Ledger) GetAsset(assetId Uint256) (*asset.Asset, error)
- func (l *Ledger) GetBlockWithHash(hash Uint256) (*Block, error)
- func (l *Ledger) GetBlockWithHeight(height uint32) (*Block, error)
- func (l *Ledger) GetLocalBlockChainHeight() uint32
- func (l *Ledger) GetTransactionWithHash(hash Uint256) (*tx.Transaction, error)
- func (l *Ledger) IsDoubleSpend(Tx *tx.Transaction) bool
- type VBlock
- type WinningHashType
Constants ¶
View Source
const BlockVersion uint32 = 0
View Source
const (
GenesisBlockProposedHeight = 4
)
View Source
const GenesisNonce uint64 = 2083236893
Variables ¶
View Source
var StandbyBookKeepers []*crypto.PubKey
Functions ¶
func GetBookKeeperAddress ¶
Calc the BookKeepers address by bookKeepers pubkey.
func HeaderCheck ¶
func TransactionCheck ¶
Types ¶
type Block ¶
type Block struct {
Header *Header
Transactions []*tx.Transaction
// contains filtered or unexported fields
}
func GenesisBlockInit ¶
func (*Block) GetMessage ¶
func (*Block) GetProgramHashes ¶
func (*Block) GetPrograms ¶
func (*Block) MarshalJson ¶
func (*Block) RebuildMerkleRoot ¶
func (*Block) SetPrograms ¶
func (*Block) UnmarshalJson ¶
type Blockchain ¶
type Blockchain struct {
BlockHeight uint32
AssetID Uint256
BlockPersistTime map[Uint256]int64
BCEvents *events.Event
// contains filtered or unexported fields
}
func NewBlockchain ¶
func NewBlockchain(height uint32, asset Uint256) *Blockchain
func NewBlockchainWithGenesisBlock ¶
func NewBlockchainWithGenesisBlock(store ILedgerStore, defaultBookKeeper []*crypto.PubKey) (*Blockchain, error)
func (*Blockchain) AddBlock ¶
func (bc *Blockchain) AddBlock(block *Block) error
func (*Blockchain) AddBlockTime ¶
func (bc *Blockchain) AddBlockTime(hash Uint256, time int64)
func (*Blockchain) ContainsTransaction ¶
func (bc *Blockchain) ContainsTransaction(hash Uint256) bool
func (*Blockchain) CurrentBlockHash ¶
func (bc *Blockchain) CurrentBlockHash() Uint256
func (*Blockchain) GetBlockTime ¶
func (bc *Blockchain) GetBlockTime(hash Uint256) (int64, error)
func (*Blockchain) GetBookKeepers ¶
func (bc *Blockchain) GetBookKeepers() []*crypto.PubKey
func (*Blockchain) GetBookKeepersByTXs ¶
func (bc *Blockchain) GetBookKeepersByTXs(others []*tx.Transaction) []*crypto.PubKey
func (*Blockchain) GetHeader ¶
func (bc *Blockchain) GetHeader(hash Uint256) (*Header, error)
func (*Blockchain) SaveBlock ¶
func (bc *Blockchain) SaveBlock(block *Block) error
type BlocksInfo ¶
type BlocksInfo struct {
Hash string `json:"hash"`
Header *HeaderInfo `json:"header"`
Transactions []*transaction.TransactionInfo `json:"transactions"`
}
type Header ¶
type Header struct {
Version uint32
PrevBlockHash Uint256
TransactionsRoot Uint256
Timestamp int64
Height uint32
ConsensusData uint64
NextBookKeeper Uint160
WinningHash Uint256
WinningHashType WinningHashType
Signer []byte
Signature []byte
Program *program.Program
// contains filtered or unexported fields
}
func (*Header) GetMessage ¶
func (*Header) GetProgramHashes ¶
func (*Header) GetPrograms ¶
func (*Header) MarshalJson ¶
func (*Header) SerializeUnsigned ¶
Serialize the blockheader data without program
func (*Header) SetPrograms ¶
func (*Header) UnmarshalJson ¶
type HeaderInfo ¶
type HeaderInfo struct {
Version uint32 `json:"version"`
PrevBlockHash string `json:"prevBlockHash"`
TransactionsRoot string `json:"transactionsRoot"`
Timestamp int64 `json:"timestamp"`
Height uint32 `json:"height"`
ConsensusData uint64 `json:"consensusData"`
NextBookKeeper string `json:"nextBookKeeper"`
WinningHash string `json:"winningHash"`
WinningHashType byte `json:"winningHashType"`
Signer string `json:"signer"`
Signature string `json:"signature"`
Program program.ProgramInfo `json:"program"`
Hash string `json:"hash"`
}
type ILedgerStore ¶
type ILedgerStore interface {
SaveBlock(b *Block, ledger *Ledger) error
GetBlock(hash Uint256) (*Block, error)
BlockInCache(hash Uint256) bool
GetBlockHash(height uint32) (Uint256, error)
GetBlockHistory(startHeight, blockNum uint32) map[uint32]Uint256
CheckBlockHistory(history map[uint32]Uint256) (uint32, bool)
GetVotingWeight(hash Uint160) (int, error)
IsDoubleSpend(tx *tx.Transaction) bool
AddHeaders(headers []Header, ledger *Ledger) error
GetHeader(hash Uint256) (*Header, error)
GetTransaction(hash Uint256) (*tx.Transaction, error)
SaveAsset(assetid Uint256, asset *Asset) error
GetAsset(hash Uint256) (*Asset, error)
GetContract(codeHash Uint160) ([]byte, error)
GetStorage(key []byte) ([]byte, error)
GetAccount(programHash Uint160) (*account.AccountState, error)
GetCurrentBlockHash() Uint256
GetCurrentHeaderHash() Uint256
GetHeaderHeight() uint32
GetHeight() uint32
GetHeightByBlockHash(hash Uint256) (uint32, error)
GetHeaderHashByHeight(height uint32) Uint256
GetBookKeeperList() ([]*crypto.PubKey, []*crypto.PubKey, error)
InitLedgerStoreWithGenesisBlock(genesisblock *Block, defaultBookKeeper []*crypto.PubKey) (uint32, error)
GetQuantityIssued(assetid Uint256) (Fixed64, error)
GetUnspent(txid Uint256, index uint16) (*tx.TxnOutput, error)
ContainsUnspent(txid Uint256, index uint16) (bool, error)
GetUnspentFromProgramHash(programHash Uint160, assetid Uint256) ([]*tx.UTXOUnspent, error)
GetUnspentsFromProgramHash(programHash Uint160) (map[Uint256][]*tx.UTXOUnspent, error)
GetPrepaidInfo(programHash Uint160) (*Fixed64, *Fixed64, error)
GetAssets() map[Uint256]*Asset
IsTxHashDuplicate(txhash Uint256) bool
IsBlockInStore(hash Uint256) bool
Close()
}
ILedgerStore provides func with store package.
type Ledger ¶
type Ledger struct {
Blockchain *Blockchain
Store ILedgerStore
}
var DefaultLedger *Ledger
func (*Ledger) BlockInLedger ¶
BlockInLedger checks if the block existed in ledger
func (*Ledger) GetBlockWithHash ¶
Get block with block hash.
func (*Ledger) GetBlockWithHeight ¶
Get Block With Height.
func (*Ledger) GetLocalBlockChainHeight ¶
Get local block chain height.
func (*Ledger) GetTransactionWithHash ¶
func (l *Ledger) GetTransactionWithHash(hash Uint256) (*tx.Transaction, error)
Get transaction with hash.
func (*Ledger) IsDoubleSpend ¶
func (l *Ledger) IsDoubleSpend(Tx *tx.Transaction) bool
double spend checking for transaction
type WinningHashType ¶
type WinningHashType byte
const ( // The proof of Block proposer validity should exists in previous Block header. // GenesisHash means next Block proposer is GenesisBlockProposer. GenesisHash WinningHashType = 0 // WinningTxnHash means next Block proposer is a node on signature chain. WinningTxnHash WinningHashType = 1 // WinningNilHash means next Block proposer is the signer of last Block. WinningNilHash WinningHashType = 2 // WinningBlockHash means next Block proposer is signer of historical Block. WinningBlockHash WinningHashType = 3 )
Click to show internal directories.
Click to hide internal directories.