spv

package
v0.2.4 Latest Latest
Warning

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

Go to latest
Published: May 26, 2023 License: GPL-3.0 Imports: 53 Imported by: 9

Documentation

Index

Constants

View Source
const (
	DefaultConfigFilename = "./spvconfig.json"
	Foundation            = "FoundationAddress"
	CRCAddress            = "CRCAddress"
	GenesisBlock          = "GenesisBlock"
	PowLimit              = "PowLimit"
)
View Source
const (

	//Unprocessed refill transaction index prefix
	UnTransaction string = "UnT-"

	//Cross-chain recharge unprocessed transaction index
	UnTransactionIndex = "UnTI"

	//Cross-chain recharge unprocessed transaction seek
	UnTransactionSeek = "UnTS"

	// Fixed number of extra-data prefix bytes reserved for signer vanity
	ExtraVanity = 32

	// Fixed number of extra-data suffix bytes reserved for signer seal
	ExtraSeal = 65

	// Fixed height of ela chain height with LitterEnd encode
	ExtraElaHeight = 8

	GASLimtScale = 10

	IsOnlyCRConsensus = true
)
View Source
const (
	ChainState_DPOS = iota
	ChainState_POW
	ChainState_Error
)
View Source
const LogPath = "./logs-spv/"

Variables

View Source
var (
	SpvService *Service

	MinedBlockSub *event.TypeMuxSubscription

	GetDefaultSingerAddr func() ethCommon.Address

	PbftEngine consensus.IPbftEngine

	ErrMainTxHashPresence = errors.New("main txhash presence")
)

Functions

func Close added in v0.1.4

func Close()

func DumpNextDposInfo added in v0.1.4

func DumpNextDposInfo() []peer.PID

func FindOutRechargeInput added in v0.1.4

func FindOutRechargeInput(transactionHash string) []byte

func FindOutputFeeAndaddressByTxHash

func FindOutputFeeAndaddressByTxHash(transactionHash string) (*big.Int, ethCommon.Address, *big.Int)

FindOutputFeeAndaddressByTxHash Finds the eth recharge address, recharge amount, and transaction fee based on the main chain hash.

func GetArbiters added in v0.1.4

func GetArbiters() ([]string, int, error)

func GetClient added in v0.1.4

func GetClient() *ethclient.Client

func GetCurrentConsensusMode added in v0.1.4

func GetCurrentConsensusMode() spv.ConsensusAlgorithm

func GetFailedRechargeTxByHash added in v0.1.4

func GetFailedRechargeTxByHash(hash string) string

func GetFailedRechargeTxs added in v0.1.4

func GetFailedRechargeTxs(height uint64) []string

func GetNextTurnPeers added in v0.2.0

func GetNextTurnPeers() []peer.PID

func GetProducers added in v0.1.4

func GetProducers(elaHeight uint64) ([][]byte, int, error)

func GetSpvHeight added in v0.1.4

func GetSpvHeight() uint64

func GetTotalProducersCount added in v0.1.4

func GetTotalProducersCount() int

func GetUnTransactionNum

func GetUnTransactionNum(db DatabaseReader, Prefix string) uint64

func GetWorkingHeight added in v0.1.4

func GetWorkingHeight() uint32

func InitNextTurnDposInfo added in v0.1.4

func InitNextTurnDposInfo()

func IsFailedElaTx added in v0.1.4

func IsFailedElaTx(elaTx string) (bool, error)

func IsNexturnBlock added in v0.1.4

func IsNexturnBlock(block interface{}) bool

func IsPackagedElaTx added in v0.1.4

func IsPackagedElaTx(elaTx string) (bool, error)

func IsSmallCrossTxByData added in v0.2.0

func IsSmallCrossTxByData(data []byte) (string, string, []string, uint64)

func IteratorUnTransaction

func IteratorUnTransaction(from ethCommon.Address)

IteratorUnTransaction iterates before mining and processes existing spv refill transactions

func MainChainIsPowMode added in v0.1.4

func MainChainIsPowMode() bool

func MinedBroadcastLoop added in v0.1.0

func MinedBroadcastLoop(minedBlockSub *event.TypeMuxSubscription,
	ondutySub *event.TypeMuxSubscription,
	smallCrossTxSub *event.TypeMuxSubscription)

minedBroadcastLoop Mining awareness, eth can initiate a recharge transaction after the block

func NotifySmallCrossTx added in v0.1.4

func NotifySmallCrossTx(tx it.Transaction)

func OnReceivedRechargeTx added in v0.1.4

func OnReceivedRechargeTx(tx it.Transaction) error

func OnTx2Failed added in v0.1.4

func OnTx2Failed(elaTx string)

func ResetConfigWithReflect added in v0.0.2

func ResetConfigWithReflect(params *config.Configuration, spvConfig *spv.Config)

func SafeAdd added in v0.1.4

func SafeAdd(a int, b int) (int, error)

func SafeFixed64Minus added in v0.1.4

func SafeFixed64Minus(a common.Fixed64, b common.Fixed64) (common.Fixed64, error)

func SafeMinus added in v0.1.4

func SafeMinus(a int, b int) (int, error)

func SafeUInt64Minus added in v0.1.4

func SafeUInt64Minus(a uint64, b uint64) (uint64, error)

func SendEvilProof added in v0.1.0

func SendEvilProof(addr ethCommon.Address, info interface{})

func SendTransaction

func SendTransaction(from ethCommon.Address, elaTx string, fee *big.Int) (err error, finished bool)

SendTransaction sends a reload transaction to txpool

func SpvDbInit

func SpvDbInit(spvdataDir string, pledgeBillContract string, signer ethCommon.Address, client *rpc.Client)

Spv database initialization

func SpvIsWorkingHeight added in v0.1.4

func SpvIsWorkingHeight() bool

func UpTransactionIndex

func UpTransactionIndex(elaTx string)

UpTransactionIndex records spv-aware refill transaction index

func VerifySmallCrossTx added in v0.2.0

func VerifySmallCrossTx(rawTxID, rawTx string, signatures []string,
	blockHeight uint64) (bool, error)

Types

type BlockListener added in v0.1.0

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

func (*BlockListener) BlockHeight added in v0.1.0

func (l *BlockListener) BlockHeight() uint32

func (*BlockListener) NotifyBlock added in v0.1.0

func (l *BlockListener) NotifyBlock(block *util.Block)

func (*BlockListener) RegisterFunc added in v0.1.0

func (l *BlockListener) RegisterFunc(handleFunc func(block interface{}) error)

func (*BlockListener) StoreAuxBlock added in v0.1.0

func (l *BlockListener) StoreAuxBlock(block interface{})

type Config

type Config struct {
	// DataDir is the data path to store db files peer addresses etc.
	DataDir string

	// ActiveNet indicates the ELA network to connect with.
	ActiveNet string

	// GenesisAddress is the address generated by the side chain genesis block.
	GenesisAddress string
}

type DatabaseReader

type DatabaseReader interface {
	Get(key []byte) (value []byte, err error)
}

DatabaseReader wraps the Get method of a backing data store.

type NextTurnDPOSInfo added in v0.2.0

type NextTurnDPOSInfo struct {
	*payload.NextTurnDPOSInfo
}

type PreferParams added in v0.0.2

type PreferParams struct {
	Config config.Configuration `json:"Configuration"`
}
var PreferConfig PreferParams

type RechargeData added in v0.2.4

type RechargeData struct {
	TargetAddress ethCommon.Address
	TargetAmount  *big.Int
	Fee           *big.Int
	TargetData    []byte
}

type RechargeDatas added in v0.2.4

type RechargeDatas []*RechargeData

func GetRechargeDataByTxhash added in v0.2.4

func GetRechargeDataByTxhash(elaHash string) (RechargeDatas, *big.Int, error)

type Service

type Service struct {
	spv.SPVService
	// contains filtered or unexported fields
}

func GetSpvService added in v0.2.0

func GetSpvService() *Service

func NewService

func NewService(cfg *Config, tmux *event.TypeMux, dynamicArbiterHeight uint64) (*Service, error)

Spv service initialization

func (*Service) GetDatabase

func (s *Service) GetDatabase() *leveldb.Database

func (*Service) VerifyElaHeader

func (s *Service) VerifyElaHeader(hash *common.Uint256) error

Jump to

Keyboard shortcuts

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