lbft

package
v0.8.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 8, 2017 License: GPL-3.0 Imports: 14 Imported by: 0

README

链内共识 链内共识并发数 一个: 非固定时间切换主节点 固定时间切换主节点 链内共识并发数 多个: 非固定时间切换主节点 固定时间切换主节点 跨链共识 链内共识并发数 一个: 非固定时间切换主节点 固定时间切换主节点 链内共识并发数 多个: 非固定时间切换主节点 固定时间切换主节点

Documentation

Index

Constants

View Source
const EMPTYBLOCK = 1136160000

EMPTYBLOCK empty block id

View Source
const MINQUORUM = 3

MINQUORUM Define min quorum

Variables

This section is empty.

Functions

This section is empty.

Types

type Broadcast

type Broadcast struct {
	// contains filtered or unexported fields
}

Broadcast Define consensus data for broadcast

func (*Broadcast) Payload

func (broadcast *Broadcast) Payload() []byte

Payload Get consensus data for broadcast

func (*Broadcast) To

func (broadcast *Broadcast) To() string

To Get target for broadcast

type Commit

type Commit struct {
	Name      string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	PrimaryID string `protobuf:"bytes,2,opt,name=primaryID" json:"primaryID,omitempty"`
	Chain     string `protobuf:"bytes,3,opt,name=chain" json:"chain,omitempty"`
	ReplicaID string `protobuf:"bytes,4,opt,name=replicaID" json:"replicaID,omitempty"`
	SeqNo     uint64 `protobuf:"varint,5,opt,name=seqNo" json:"seqNo,omitempty"`
	Digest    string `protobuf:"bytes,6,opt,name=digest" json:"digest,omitempty"`
	Quorum    uint64 `protobuf:"varint,7,opt,name=quorum" json:"quorum,omitempty"`
}

Commit Define struct

func (*Commit) Serialize

func (msg *Commit) Serialize() []byte

Serialize Serialize

type Committed

type Committed struct {
	Name         string        `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	PrimaryID    string        `protobuf:"bytes,2,opt,name=primaryID" json:"primaryID,omitempty"`
	Chain        string        `protobuf:"bytes,3,opt,name=chain" json:"chain,omitempty"`
	ReplicaID    string        `protobuf:"bytes,4,opt,name=replicaID" json:"replicaID,omitempty"`
	SeqNo        uint64        `protobuf:"varint,5,opt,name=seqNo" json:"seqNo,omitempty"`
	RequestBatch *RequestBatch `protobuf:"bytes,6,opt,name=requestBatch" json:"requestBatch,omitempty"`
}

Committed Define struct

func (*Committed) Serialize

func (msg *Committed) Serialize() []byte

Serialize Serialize

type FetchCommitted

type FetchCommitted struct {
	Chain     string `protobuf:"bytes,1,opt,name=chain" json:"chain,omitempty"`
	ReplicaID string `protobuf:"bytes,2,opt,name=replicaID" json:"replicaID,omitempty"`
	SeqNo     uint64 `protobuf:"varint,3,opt,name=seqNo" json:"seqNo,omitempty"`
}

FetchCommitted Define struct

func (*FetchCommitted) Serialize

func (fc *FetchCommitted) Serialize() []byte

Serialize Serialize

type Lbft

type Lbft struct {
	// contains filtered or unexported fields
}

Lbft Define lbft consenter

func NewLbft

func NewLbft(options *Options, stack consensus.IStack) *Lbft

NewLbft Create lbft consenter

func (*Lbft) BroadcastConsensusChannel

func (lbft *Lbft) BroadcastConsensusChannel() <-chan *consensus.BroadcastConsensus

BroadcastConsensusChannel Broadcast consensus data

func (*Lbft) CommittedTxsChannel

func (lbft *Lbft) CommittedTxsChannel() <-chan *consensus.OutputTxs

CommittedTxsChannel Commit block data

func (*Lbft) Quorum

func (lbft *Lbft) Quorum() int

Quorum num of quorum

func (*Lbft) RecvConsensus

func (lbft *Lbft) RecvConsensus(payload []byte)

RecvConsensus Receive consensus data for consenter

func (*Lbft) Start

func (lbft *Lbft) Start()

Start Start consenter serverice

func (*Lbft) Stop

func (lbft *Lbft) Stop()

Stop Stop consenter serverice

func (*Lbft) String

func (lbft *Lbft) String() string

type Message

type Message struct {
	// Types that are valid to be assigned to Payload:
	//	*RequestBatch
	//	*PrePrepare
	//	*Prepare
	//	*Commit
	//	*Committed
	//	*FetchCommitted
	//	*Viewchange
	//	*NullReqest
	Type    MessageType
	Payload []byte `protobuf_oneof:"payload"`
}

Message Define lbft message struct

func (*Message) Deserialize

func (msg *Message) Deserialize(payload []byte) error

Deserialize Deserialize

func (*Message) GetCommit

func (m *Message) GetCommit() *Commit

GetCommit

func (*Message) GetCommitted

func (m *Message) GetCommitted() *Committed

GetCommitted

func (*Message) GetFetchCommitted

func (m *Message) GetFetchCommitted() *FetchCommitted

GetFetchCommitted

func (*Message) GetNullRequest

func (m *Message) GetNullRequest() *NullRequest

GetNullReqest

func (*Message) GetPrePrepare

func (m *Message) GetPrePrepare() *PrePrepare

GetPrePrepare

func (*Message) GetPrepare

func (m *Message) GetPrepare() *Prepare

Get Prepare

func (*Message) GetRequestBatch

func (m *Message) GetRequestBatch() *RequestBatch

GetRequestBatch

func (*Message) GetViewChange

func (m *Message) GetViewChange() *ViewChange

GetViewchange

func (*Message) Serialize

func (msg *Message) Serialize() []byte

Serialize Serialize

type MessageType

type MessageType uint32

MessageType

const (
	MESSAGEUNDEFINED      MessageType = 0
	MESSAGEREQUESTBATCH   MessageType = 1
	MESSAGEPREPREPARE     MessageType = 2
	MESSAGEPREPARE        MessageType = 3
	MESSAGECOMMIT         MessageType = 4
	MESSAGECOMMITTED      MessageType = 5
	MESSAGEFETCHCOMMITTED MessageType = 6
	MESSAGEVIEWCHANGE     MessageType = 11
	MESSAGENULLREQUEST    MessageType = 12
)

type NullRequest

type NullRequest struct {
	ReplicaID string `protobuf:"bytes,1,opt,name=replicaID" json:"replicaID,omitempty"`
	Chain     string `protobuf:"bytes,2,opt,name=chain" json:"chain,omitempty"`
	PrimaryID string `protobuf:"bytes,3,opt,name=primaryID" json:"primaryID,omitempty"`
	SeqNo     uint64 `protobuf:"varint,5,opt,name=seqNo" json:"seqNo,omitempty"`
	Height    uint32 `protobuf:"varint,6,opt,name=height" json:"height,omitempty"`
}

NullRequest Define struct

func (*NullRequest) Serialize

func (np *NullRequest) Serialize() []byte

Serialize Serialize

type Options

type Options struct {
	Chain                string
	ID                   string
	Primary              string
	AutoVote             bool
	N                    int
	Q                    int
	K                    int
	BlockSize            int
	BlockTimeout         time.Duration
	BlockInterval        time.Duration
	BlockDelay           time.Duration // BlockDelay > BlockInterval > BlockTimeout
	ViewChange           time.Duration
	ResendViewChange     time.Duration
	ViewChangePeriod     time.Duration
	NullRequest          time.Duration
	BufferSize           int
	MaxConcurrentNumFrom int
	MaxConcurrentNumTo   int
}

Options Define nbft options

func NewDefaultOptions

func NewDefaultOptions() *Options

NewDefaultOptions Create nbft options with default value

type PrePrepare

type PrePrepare struct {
	Name      string        `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	PrimaryID string        `protobuf:"bytes,2,opt,name=primaryID" json:"primaryID,omitempty"`
	Chain     string        `protobuf:"bytes,3,opt,name=chain" json:"chain,omitempty"`
	ReplicaID string        `protobuf:"bytes,4,opt,name=replicaID" json:"replicaID,omitempty"`
	SeqNo     uint64        `protobuf:"varint,5,opt,name=seqNo" json:"seqNo,omitempty"`
	Digest    string        `protobuf:"bytes,6,opt,name=digest" json:"digest,omitempty"`
	Quorum    uint64        `protobuf:"varint,7,opt,name=quorum" json:"quorum,omitempty"`
	Requests  *RequestBatch `protobuf:"bytes,8,opt,name=requests" json:"requests,omitempty"`
}

PrePrepare Define struct

func (*PrePrepare) Serialize

func (msg *PrePrepare) Serialize() []byte

Serialize Serialize

type Prepare

type Prepare struct {
	Name      string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	PrimaryID string `protobuf:"bytes,2,opt,name=primaryID" json:"primaryID,omitempty"`
	Chain     string `protobuf:"bytes,3,opt,name=chain" json:"chain,omitempty"`
	ReplicaID string `protobuf:"bytes,4,opt,name=replicaID" json:"replicaID,omitempty"`
	SeqNo     uint64 `protobuf:"varint,5,opt,name=seqNo" json:"seqNo,omitempty"`
	Digest    string `protobuf:"bytes,6,opt,name=digest" json:"digest,omitempty"`
	Quorum    uint64 `protobuf:"varint,7,opt,name=quorum" json:"quorum,omitempty"`
}

Prepare Define struct

func (*Prepare) Serialize

func (msg *Prepare) Serialize() []byte

Serialize Serialize

type Request

type Request struct {
	Transaction *types.Transaction `protobuf:"bytes,2,opt,name=transaction,proto3" json:"transaction,omitempty"`
}

Request Define struct

func (*Request) FromChain

func (m *Request) FromChain() string

FromChain Get from chain

func (*Request) Nonce

func (m *Request) Nonce() uint32

Nonce Get nonce

func (*Request) Serialize

func (req *Request) Serialize() []byte

Serialize Serialize

func (*Request) Time

func (m *Request) Time() uint32

Time Get create time

func (*Request) ToChain

func (m *Request) ToChain() string

ToChain Get to chain

type RequestBatch

type RequestBatch struct {
	Time     uint32
	Requests []*Request
	ID       int64
	Index    uint32
	Height   uint32
}

RequestBatch Define struct

func (*RequestBatch) Serialize

func (msg *RequestBatch) Serialize() []byte

Serialize Serialize

type Serializer

type Serializer interface {
	Serialize() []byte
}

Serializer Supply Serialize() interface

type Uint64Slice

type Uint64Slice []uint64

Uint64Slice sortable

func (Uint64Slice) Len

func (us Uint64Slice) Len() int

func (Uint64Slice) Less

func (us Uint64Slice) Less(i, j int) bool

func (Uint64Slice) Swap

func (us Uint64Slice) Swap(i, j int)

type ViewChange

type ViewChange struct {
	ReplicaID string `protobuf:"bytes,1,opt,name=replicaID" json:"replicaID,omitempty"`
	Chain     string `protobuf:"bytes,2,opt,name=chain" json:"chain,omitempty"`
	Priority  int64  `protobuf:"varint,3,opt,name=priority" json:"priority,omitempty"`
	PrimaryID string `protobuf:"bytes,4,opt,name=primaryID" json:"primaryID,omitempty"`
	SeqNo     uint64 `protobuf:"varint,5,opt,name=seqNo" json:"seqNo,omitempty"`
	Height    uint32 `protobuf:"varint,6,opt,name=height" json:"height,omitempty"`
}

ViewChange Define struct

func (*ViewChange) Serialize

func (msg *ViewChange) Serialize() []byte

Serialize Serialize

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL