Documentation
¶
Index ¶
- Variables
- type Block
- func (b *Block) ByteStream() []byte
- func (b *Block) ByteStreamHeader() []byte
- func (b *Block) ConvertFromBlockHeaderPb(pbBlock *iproto.BlockPb)
- func (b *Block) ConvertFromBlockPb(pbBlock *iproto.BlockPb)
- func (b *Block) ConvertToBlockHeaderPb() *iproto.BlockHeaderPb
- func (b *Block) ConvertToBlockPb() *iproto.BlockPb
- func (b *Block) Deserialize(buf []byte) error
- func (b *Block) HashBlock() common.Hash32B
- func (b *Block) Height() uint64
- func (b *Block) PrevHash() common.Hash32B
- func (b *Block) Serialize() ([]byte, error)
- func (b *Block) SignBlock(signer *iotxaddress.Address) error
- func (b *Block) TxRoot() common.Hash32B
- type BlockHeader
- type Blockchain
- type Genesis
- type GenesisAction
- type Nominator
- type Payee
- type SelfNominators
- type Transfer
- type Validator
Constants ¶
This section is empty.
Variables ¶
var ( // ErrInvalidTipHeight is the error returned when the block height is not valid ErrInvalidTipHeight = errors.New("invalid tip height") // ErrInvalidBlock is the error returned when the block is not valid ErrInvalidBlock = errors.New("failed to validate the block") )
var Gen = &Genesis{ ChainID: uint32(1), TotalSupply: uint64(10000000000), BlockReward: uint64(5), Timestamp: uint64(1524676419), ParentHash: common.Hash32B{}, GenesisCoinbaseData: "Connecting the physical world, block by block", CreatorAddr: "io1qyqsyqcy222ggazmccgf7dsx9m9vfqtadw82ygwhjnxtmx", CreatorPubKey: "d01164c3afe47406728d3e17861a3251dcff39e62bdc2b93ccb69a02785a175e195b5605517fd647eb7dd095b3d862dffb087f35eacf10c6859d04a100dbfb7358eeca9d5c37c904", }
Gen hardcodes genesis default settings
Functions ¶
This section is empty.
Types ¶
type Block ¶
type Block struct {
Header *BlockHeader
Transfers []*action.Transfer
Votes []*action.Vote
}
Block defines the struct of block
func NewBlock ¶
func NewBlock(chainID uint32, height uint64, prevBlockHash common.Hash32B, tsf []*action.Transfer, vote []*action.Vote) *Block
NewBlock returns a new block
func NewGenesisBlock ¶ added in v0.2.0
NewGenesisBlock creates a new genesis block
func (*Block) ByteStream ¶
ByteStream returns a byte stream of the block
func (*Block) ByteStreamHeader ¶ added in v0.2.0
ByteStreamHeader returns a byte stream of the block header
func (*Block) ConvertFromBlockHeaderPb ¶
func (b *Block) ConvertFromBlockHeaderPb(pbBlock *iproto.BlockPb)
ConvertFromBlockHeaderPb converts BlockHeaderPb to BlockHeader
func (*Block) ConvertFromBlockPb ¶
func (b *Block) ConvertFromBlockPb(pbBlock *iproto.BlockPb)
ConvertFromBlockPb converts BlockPb to Block
func (*Block) ConvertToBlockHeaderPb ¶
func (b *Block) ConvertToBlockHeaderPb() *iproto.BlockHeaderPb
ConvertToBlockHeaderPb converts BlockHeader to BlockHeaderPb
func (*Block) ConvertToBlockPb ¶
func (b *Block) ConvertToBlockPb() *iproto.BlockPb
ConvertToBlockPb converts Block to BlockPb
func (*Block) Deserialize ¶
Deserialize parses the byte stream into a Block
type BlockHeader ¶
type BlockHeader struct {
Pubkey []byte // block miner's public key
// contains filtered or unexported fields
}
BlockHeader defines the struct of block header make sure the variable type and order of this struct is same as "BlockHeaderPb" in blockchain.pb.go
type Blockchain ¶
type Blockchain interface {
service.Service
// For exposing blockchain states
// GetHeightByHash returns Block's height by hash
GetHeightByHash(hash common.Hash32B) (uint64, error)
// GetHashByHeight returns Block's hash by height
GetHashByHeight(height uint64) (common.Hash32B, error)
// GetBlockByHeight returns Block by height
GetBlockByHeight(height uint64) (*Block, error)
// GetBlockByHash returns Block by hash
GetBlockByHash(hash common.Hash32B) (*Block, error)
// GetTotalTransfers returns the total number of transfers
GetTotalTransfers() (uint64, error)
// GetTotalVotes returns the total number of votes
GetTotalVotes() (uint64, error)
// GetTransfersFromAddress returns transaction from address
GetTransfersFromAddress(address string) ([]common.Hash32B, error)
// GetTransfersToAddress returns transaction to address
GetTransfersToAddress(address string) ([]common.Hash32B, error)
// GetTransfersByTransferHash returns transfer by transfer hash
GetTransferByTransferHash(hash common.Hash32B) (*action.Transfer, error)
// GetBlockHashByTransferHash returns Block hash by transfer hash
GetBlockHashByTransferHash(hash common.Hash32B) (common.Hash32B, error)
// GetVoteFromAddress returns vote from address
GetVotesFromAddress(address string) ([]common.Hash32B, error)
// GetVoteToAddress returns vote to address
GetVotesToAddress(address string) ([]common.Hash32B, error)
// GetVotesByVoteHash returns vote by vote hash
GetVoteByVoteHash(hash common.Hash32B) (*action.Vote, error)
// GetBlockHashByVoteHash returns Block hash by vote hash
GetBlockHashByVoteHash(hash common.Hash32B) (common.Hash32B, error)
// TipHash returns tip block's hash
TipHash() (common.Hash32B, error)
// TipHeight returns tip block's height
TipHeight() (uint64, error)
// StateByAddr returns state of a given address
StateByAddr(address string) (*state.State, error)
// For block operations
// MintNewBlock creates a new block with given actions
// Note: the coinbase transfer will be added to the given transfers when minting a new block
MintNewBlock(tsf []*action.Transfer, vote []*action.Vote, address *iotxaddress.Address, data string) (*Block, error)
// MintNewDummyBlock creates a new dummy block with no transactions
MintNewDummyBlock() (*Block, error)
// CommitBlock validates and appends a block to the chain
CommitBlock(blk *Block) error
// ValidateBlock validates a new block before adding it to the blockchain
ValidateBlock(blk *Block) error
// For action operations
// CreateTransfer creates a signed transfer paying 'amount' from 'from' to 'to'
CreateTransfer(nonce uint64, from *iotxaddress.Address, amount *big.Int, to *iotxaddress.Address) (*action.Transfer, error)
// CreateRawTransfer creates an unsigned transfer paying 'amount' from 'from' to 'to'
CreateRawTransfer(nonce uint64, from *iotxaddress.Address, amount *big.Int, to *iotxaddress.Address) *action.Transfer
// CreateVote creates a signed vote
CreateVote(nonce uint64, selfPubKey []byte, votePubKey []byte) (*action.Vote, error)
// CreateRawVote creates an unsigned vote
CreateRawVote(nonce uint64, selfPubKey []byte, votePubKey []byte) *action.Vote
// Validator returns the current validator object
Validator() Validator
// SetValidator sets the current validator object
SetValidator(val Validator)
}
Blockchain represents the blockchain data structure and hosts the APIs to access it
func CreateBlockchain ¶
func CreateBlockchain(cfg *config.Config, sf state.Factory) Blockchain
CreateBlockchain creates a new blockchain and DB instance
func NewBlockchain ¶
func NewBlockchain(dao *blockDAO, cfg *config.Config, sf state.Factory) Blockchain
NewBlockchain creates a new blockchain instance
type Genesis ¶ added in v0.2.0
type Genesis struct {
InitDelegatesPubKey []string
ChainID uint32
TotalSupply uint64
BlockReward uint64
Timestamp uint64
ParentHash common.Hash32B
GenesisCoinbaseData string
CreatorAddr string
CreatorPubKey string
}
Genesis defines the Genesis default settings
type GenesisAction ¶ added in v0.2.0
type GenesisAction struct {
SelfNominators SelfNominators `yaml:"selfNominators"`
Transfers []Transfer `yaml:"transfers"`
}
GenesisAction is the root action struct, each package's action should be put as its sub struct
type Nominator ¶ added in v0.2.0
type Nominator struct {
PubKey string `yaml:"pubKey"`
Address string `yaml:"address"`
Signature string `yaml:"signature"`
}
Nominator is the Nominator struct for vote struct
type SelfNominators ¶ added in v0.2.0
type SelfNominators struct {
Nominators []Nominator `yaml:"nominator"`
}
SelfNominators is the config struct for SelfNominator struct