por

package
v1.1.7-beta Latest Latest
Warning

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

Go to latest
Published: Apr 27, 2020 License: Apache-2.0 Imports: 16 Imported by: 13

Documentation

Index

Constants

View Source
const (
	// Block proposer of block height X needs to be specified in block X-1, so its
	// candidate sigchains have to be fully propagated before block X-1 is
	// proposed, i.e. before block X-2 is accepted. In other words, sigchain can
	// only propagate when block height <= X-3.
	SigChainPropagationHeightOffset = 3
	// Block proposer of block height X is chosen from sigchain produced during
	// block X-SigChainPropagationHeightOffset-SigChainPropogationTime because
	// sigchain can only propagate when block height <=
	// X-SigChainPropagationHeightOffset, so it has to start propogating when
	// block height <= X-SigChainPropagationHeightOffset-SigChainPropogationTime.
	SigChainMiningHeightOffset = config.SigChainPropogationTime + SigChainPropagationHeightOffset
)

Variables

View Source
var Store interface {
	GetHeightByBlockHash(hash common.Uint256) (uint32, error)
	GetID(publicKey []byte) ([]byte, error)
}

Store interface is used to avoid cyclic dependency

Functions

func InitPorServer

func InitPorServer(account *vault.Account, id []byte) error

func VerifyID

func VerifyID(sc *pb.SigChain) error

Types

type BacktrackSigChainInfo

type BacktrackSigChainInfo struct {
	DestSigChainElem *pb.SigChainElem
	PrevHash         []byte
}

type PinSigChainInfo

type PinSigChainInfo struct {
	PrevHash []byte
}

type PorPackage

type PorPackage struct {
	Height        uint32
	VoteForHeight uint32
	BlockHash     []byte
	TxHash        []byte
	SigHash       []byte
	SigChain      *pb.SigChain
}

func NewPorPackage

func NewPorPackage(txn *transaction.Transaction, shouldVerify bool) (*PorPackage, error)

type PorPackages

type PorPackages []*PorPackage

func (PorPackages) Len

func (c PorPackages) Len() int

func (PorPackages) Less

func (c PorPackages) Less(i, j int) bool

func (PorPackages) Swap

func (c PorPackages) Swap(i, j int)

type PorServer

type PorServer struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func GetPorServer

func GetPorServer() *PorServer

func NewPorServer

func NewPorServer(account *vault.Account, id []byte) *PorServer

func (*PorServer) AddDestSigChainElem

func (ps *PorServer) AddDestSigChainElem(blockHash, lastHash []byte, sigChainLen int, destElem *pb.SigChainElem) (bool, error)

func (*PorServer) AddSigChainFromTx

func (ps *PorServer) AddSigChainFromTx(txn *transaction.Transaction, currentHeight uint32) (*PorPackage, error)

func (*PorServer) BacktrackSigChain

func (ps *PorServer) BacktrackSigChain(elems []*pb.SigChainElem, hash, senderPubkey []byte) ([]*pb.SigChainElem, []byte, []byte, error)

func (*PorServer) BacktrackSigChainSuccess

func (ps *PorServer) BacktrackSigChainSuccess(hash []byte)

BacktrackSigChainSuccess marks a sigchain as backtracked to avoid it being backtracked multiple times.

func (*PorServer) CreateSigChainForClient

func (ps *PorServer) CreateSigChainForClient(nonce, dataSize uint32, blockHash []byte, srcID, srcPubkey, destID, destPubkey, signature []byte, sigAlgo pb.SigAlgo) (*pb.SigChain, error)

func (*PorServer) FlushSigChain

func (ps *PorServer) FlushSigChain(blockHash []byte)

func (*PorServer) GetMiningSigChainTxnHash

func (ps *PorServer) GetMiningSigChainTxnHash(height uint32) (common.Uint256, error)

func (*PorServer) GetOrComputeVrf

func (ps *PorServer) GetOrComputeVrf(data []byte) ([]byte, []byte, error)

func (*PorServer) GetSigChainTxn

func (ps *PorServer) GetSigChainTxn(txnHash common.Uint256) (*transaction.Transaction, error)

func (*PorServer) GetSigChainTxnByShortHash

func (ps *PorServer) GetSigChainTxnByShortHash(shortHash []byte) (*transaction.Transaction, error)

func (*PorServer) GetSigChainTxnBySigHash

func (ps *PorServer) GetSigChainTxnBySigHash(sigHash []byte) (*transaction.Transaction, error)

func (*PorServer) LenOfSigChain

func (ps *PorServer) LenOfSigChain(sc *pb.SigChain) int

func (*PorServer) PinSigChain

func (ps *PorServer) PinSigChain(hash, senderPubkey []byte) ([]byte, []byte, error)

PinSigChain extends the cache expiration of a key

func (*PorServer) PinSigChainSuccess

func (ps *PorServer) PinSigChainSuccess(hash []byte)

PinSigChainSuccess marks a sigchain as pinned to avoid it being pinned multiple times.

func (*PorServer) PinSrcSigChain

func (ps *PorServer) PinSrcSigChain(signature []byte) error

PinSrcSigChain marks a src sigchain as pinned to avoid it being pinned multiple times.

func (*PorServer) PopSrcSigChainFromCache

func (ps *PorServer) PopSrcSigChainFromCache(signature []byte) (*pb.SigChain, error)

PopSrcSigChainFromCache returns src sigchain and removes it from cache.

func (*PorServer) ShouldAddSigChainToCache

func (ps *PorServer) ShouldAddSigChainToCache(currentHeight, voteForHeight uint32, sigHash []byte) bool

func (*PorServer) ShouldSignDestSigChainElem

func (ps *PorServer) ShouldSignDestSigChainElem(blockHash, lastHash []byte, sigChainLen int) bool

func (*PorServer) UpdateRelayMessage

func (ps *PorServer) UpdateRelayMessage(relayMessage *pb.Relay, nextPubkey, prevNodeID []byte, mining bool) error

Jump to

Keyboard shortcuts

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