smith

package
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Mar 26, 2021 License: GPL-3.0 Imports: 9 Imported by: 0

Documentation

Overview

ZooBC Copyright (C) 2020 Quasisoft Limited - Hong Kong This file is part of ZooBC <https://github.com/zoobc/zoobc-core>

ZooBC is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

ZooBC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with ZooBC. If not, see <http://www.gnu.org/licenses/>.

Additional Permission Under GNU GPL Version 3 section 7. As the special exception permitted under Section 7b, c and e, in respect with the Author’s copyright, please refer to this section:

  1. You are free to convey this Program according to GNU GPL Version 3, as long as you respect and comply with the Author’s copyright by showing in its user interface an Appropriate Notice that the derivate program and its source code are “powered by ZooBC”. This is an acknowledgement for the copyright holder, ZooBC, as the implementation of appreciation of the exclusive right of the creator and to avoid any circumvention on the rights under trademark law for use of some trade names, trademarks, or service marks.
  1. Complying to the GNU GPL Version 3, you may distribute the program without any permission from the Author. However a prior notification to the authors will be appreciated.

ZooBC is architected by Roberto Capodieci & Barton Johnston

contact us at roberto.capodieci[at]blockchainzoo.com
and barton.johnston[at]blockchainzoo.com

Core developers that contributed to the current implementation of the software are:

Ahmad Ali Abdilah ahmad.abdilah[at]blockchainzoo.com
Allan Bintoro allan.bintoro[at]blockchainzoo.com
Andy Herman
Gede Sukra
Ketut Ariasa
Nawi Kartini nawi.kartini[at]blockchainzoo.com
Stefano Galassi stefano.galassi[at]blockchainzoo.com

IMPORTANT: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BlockchainProcessor

type BlockchainProcessor struct {
	ChainType           chaintype.ChainType
	Generator           *model.Blocksmith
	BlockService        service.BlockServiceInterface
	BlockSmithStrategy  strategy.BlocksmithStrategyInterface
	LastBlockID         int64
	LastBlocksmithIndex int64
	Logger              *log.Logger

	BlockchainStatusService service.BlockchainStatusServiceInterface
	NodeRegistrationService service.NodeRegistrationServiceInterface
	// contains filtered or unexported fields
}

BlockchainProcessor handle smithing process, can be switch to process different chain by supplying different chain type

func NewBlockchainProcessor

func NewBlockchainProcessor(
	ct chaintype.ChainType,
	blocksmith *model.Blocksmith,
	blockService service.BlockServiceInterface,
	logger *log.Logger,
	blockchainStatusService service.BlockchainStatusServiceInterface,
	nodeRegistrationService service.NodeRegistrationServiceInterface,
	blockSmithStrategy strategy.BlocksmithStrategyInterface,
) *BlockchainProcessor

NewBlockchainProcessor create new instance of BlockchainProcessor

func (*BlockchainProcessor) FakeSmithing

func (bp *BlockchainProcessor) FakeSmithing(numberOfBlocks int, fromGenesis bool, ct chaintype.ChainType) error

FakeSmithing should only be used in testing the blockchain, it's not meant to be used in production, and could cause errors todo: @andy-shi need to adjust this function to newest state of smithing process.

func (*BlockchainProcessor) GetBlockChainprocessorStatus

func (bp *BlockchainProcessor) GetBlockChainprocessorStatus() (isSmithing bool, err error)

GetBlockChainprocessorStatus return the smithing status for this blockchain processor

func (*BlockchainProcessor) Start

func (bp *BlockchainProcessor) Start(sleepPeriod time.Duration)

Start starts the blockchainProcessor

func (*BlockchainProcessor) StartSmithing

func (bp *BlockchainProcessor) StartSmithing() error

StartSmithing start smithing loop

func (*BlockchainProcessor) Stop

func (*BlockchainProcessor) Stop()

Stop stops the blockchainProcessor

type BlockchainProcessorInterface

type BlockchainProcessorInterface interface {
	Start(sleepPeriod time.Duration)
	Stop()
	StartSmithing() error
	FakeSmithing(numberOfBlocks int, fromGenesis bool, chainType chaintype.ChainType) error
	GetBlockChainprocessorStatus() (isSmithing bool, err error)
}

BlockchainProcessorInterface represents interface for the blockchain processor's implementations

Directories

Path Synopsis
ZooBC Copyright (C) 2020 Quasisoft Limited - Hong Kong This file is part of ZooBC <https://github.com/zoobc/zoobc-core>
ZooBC Copyright (C) 2020 Quasisoft Limited - Hong Kong This file is part of ZooBC <https://github.com/zoobc/zoobc-core>

Jump to

Keyboard shortcuts

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