blockchain

package
v0.75.8 Latest Latest
Warning

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

Go to latest
Published: Apr 3, 2024 License: AGPL-3.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ProviderNullChain  = "nullchain"
	ProviderTendermint = "tendermint"
)
View Source
const (
	// AbciTxnValidationFailure ...
	AbciTxnValidationFailure uint32 = 51

	// AbciTxnDecodingFailure code is returned when CheckTx or DeliverTx fail to decode the Txn.
	AbciTxnDecodingFailure uint32 = 60

	// AbciTxnInternalError code is returned when CheckTx or DeliverTx fail to process the Txn.
	AbciTxnInternalError uint32 = 70

	// AbciTxnPartialProcessingError code is return when a batch instruction partially fail.
	AbciTxnPartialProcessingError uint32 = 71

	// AbciUnknownCommandError code is returned when the app doesn't know how to handle a given command.
	AbciUnknownCommandError uint32 = 80

	// AbciSpamError code is returned when CheckTx or DeliverTx fail spam protection tests.
	AbciSpamError uint32 = 89
)

Variables

View Source
var ErrClientNotReady = errors.New("tendermint client is not ready")

Functions

func NewResponseCheckTx added in v0.56.0

func NewResponseCheckTx(code uint32, info string) *types.ResponseCheckTx

func NewResponseCheckTxError added in v0.56.0

func NewResponseCheckTxError(code uint32, err error) *types.ResponseCheckTx

func NewResponseDeliverTx added in v0.56.0

func NewResponseDeliverTx(code uint32, info string) *types.ExecTxResult

func NewResponseDeliverTxError added in v0.56.0

func NewResponseDeliverTxError(code uint32, err error) *types.ExecTxResult

Types

type ChainClientImpl

type ChainClientImpl interface {
	GetGenesisTime(context.Context) (time.Time, error)
	GetChainID(context.Context) (string, error)
	GetStatus(context.Context) (*tmctypes.ResultStatus, error)
	GetNetworkInfo(context.Context) (*tmctypes.ResultNetInfo, error)
	GetUnconfirmedTxCount(context.Context) (int, error)
	Health(context.Context) (*tmctypes.ResultHealth, error)
	SendTransactionAsync(context.Context, []byte) (*tmctypes.ResultBroadcastTx, error)
	SendTransactionSync(context.Context, []byte) (*tmctypes.ResultBroadcastTx, error)
	CheckTransaction(context.Context, []byte) (*tmctypes.ResultCheckTx, error)
	SendTransactionCommit(context.Context, []byte) (*tmctypes.ResultBroadcastTxCommit, error)
	GenesisValidators(context.Context) ([]*tmtypes.Validator, error)
	Validators(context.Context, *int64) ([]*tmtypes.Validator, error)
	Subscribe(context.Context, func(tmctypes.ResultEvent) error, ...string) error
	Start() error
}

nolint: interfacebloat

type ChainServerImpl

type ChainServerImpl interface {
	ReloadConf(cfg Config)
	Stop() error
	Start() error
}

type Client

type Client struct {
	*Config
	// contains filtered or unexported fields
}

Client abstract all communication to the blockchain.

func NewClient

func NewClient() *Client

NewClient instantiate a new blockchain client.

func NewClientWithImpl

func NewClientWithImpl(clt ChainClientImpl) *Client

func (*Client) CheckRawTransaction

func (c *Client) CheckRawTransaction(ctx context.Context, tx []byte) (*tmctypes.ResultCheckTx, error)

func (*Client) CheckTransaction

func (c *Client) CheckTransaction(ctx context.Context, tx *commandspb.Transaction) (*tmctypes.ResultCheckTx, error)

func (*Client) GenesisValidators

func (c *Client) GenesisValidators() ([]*tmtypes.Validator, error)

func (*Client) GetChainID

func (c *Client) GetChainID(ctx context.Context) (chainID string, err error)

GetChainID retrieves the chainID from the blockchain.

func (*Client) GetGenesisTime

func (c *Client) GetGenesisTime(ctx context.Context) (genesisTime time.Time, err error)

GetGenesisTime retrieves the genesis time from the blockchain.

func (*Client) GetNetworkInfo

func (c *Client) GetNetworkInfo(ctx context.Context) (netInfo *tmctypes.ResultNetInfo, err error)

GetNetworkInfo return information of the current network.

func (*Client) GetStatus

func (c *Client) GetStatus(ctx context.Context) (status *tmctypes.ResultStatus, err error)

GetStatus returns the current status of the chain.

func (*Client) GetUnconfirmedTxCount

func (c *Client) GetUnconfirmedTxCount(ctx context.Context) (count int, err error)

GetUnconfirmedTxCount return the current count of unconfirmed transactions.

func (*Client) Health

func (c *Client) Health() (*tmctypes.ResultHealth, error)

Health returns the result of the health endpoint of the chain.

func (*Client) MaxMempoolSize added in v0.74.0

func (c *Client) MaxMempoolSize() int64

func (*Client) Set

func (c *Client) Set(clt ChainClientImpl, mempoolSize int64)

func (*Client) Start

func (c *Client) Start() error

func (*Client) SubmitRawTransactionAsync

func (c *Client) SubmitRawTransactionAsync(ctx context.Context, tx []byte) (*tmctypes.ResultBroadcastTx, error)

func (*Client) SubmitRawTransactionCommit

func (c *Client) SubmitRawTransactionCommit(ctx context.Context, tx []byte) (*tmctypes.ResultBroadcastTxCommit, error)

func (*Client) SubmitRawTransactionSync

func (c *Client) SubmitRawTransactionSync(ctx context.Context, tx []byte) (*tmctypes.ResultBroadcastTx, error)

func (*Client) SubmitTransactionAsync

func (c *Client) SubmitTransactionAsync(ctx context.Context, tx *commandspb.Transaction) (*tmctypes.ResultBroadcastTx, error)

func (*Client) SubmitTransactionCommit

func (c *Client) SubmitTransactionCommit(ctx context.Context, tx *commandspb.Transaction) (*tmctypes.ResultBroadcastTxCommit, error)

func (*Client) SubmitTransactionSync

func (c *Client) SubmitTransactionSync(ctx context.Context, tx *commandspb.Transaction) (*tmctypes.ResultBroadcastTx, error)

func (*Client) Subscribe

func (c *Client) Subscribe(ctx context.Context, fn func(tmctypes.ResultEvent) error, queries ...string) error

func (*Client) Validators

func (c *Client) Validators(height *int64) ([]*tmtypes.Validator, error)

type Config

type Config struct {
	Level               encoding.LogLevel `long:"log-level"`
	LogTimeDebug        bool              `long:"log-time-debug"`
	LogOrderSubmitDebug bool              `long:"log-order-submit-debug"`
	LogOrderAmendDebug  bool              `long:"log-order-amend-debug"`
	LogOrderCancelDebug bool              `long:"log-order-cancel-debug"`
	ChainProvider       string            `long:"chain-provider"`

	Tendermint TendermintConfig `group:"Tendermint" namespace:"tendermint"`
	Null       NullChainConfig  `group:"NullChain"  namespace:"nullchain"`
}

Config represent the configuration of the blockchain package.

func NewDefaultConfig

func NewDefaultConfig() Config

NewDefaultConfig creates an instance of the package specific configuration, given a pointer to a logger instance to be used for logging within the package.

type NullChainConfig

type NullChainConfig struct {
	Level                encoding.LogLevel `long:"log-level"`
	BlockDuration        encoding.Duration `description:"(default 1s)"                                          long:"block-duration"`
	TransactionsPerBlock uint64            `description:"(default 10)"                                          long:"transactions-per-block"`
	GenesisFile          string            `description:"path to a tendermint genesis file"                     long:"genesis-file"`
	IP                   string            `description:"time-forwarding IP (default localhost)"                long:"ip"`
	Port                 int               `description:"time-forwarding port (default 3009)"                   long:"port"`
	SpamProtection       bool              `description:"enable spam protection for null-chain (default false)" long:"spam-protection"`
	Replay               ReplayConfig
}

func NewDefaultNullChainConfig

func NewDefaultNullChainConfig() NullChainConfig

NewDefaultNullChainConfig creates an instance of the package specific configuration, given a pointer to a logger instance to be used for logging within the package.

type ReplayConfig added in v0.62.0

type ReplayConfig struct {
	Record     bool   `description:"whether to record block data to a file to allow replaying" long:"record"`
	Replay     bool   `description:"whether to replay any blockdata found in replay-file"      long:"replay"`
	ReplayFile string `description:"path to file of which to write/read replay data"           long:"replay-file"`
}

type Server

type Server struct {
	*Config
	// contains filtered or unexported fields
}

Server abstraction for the abci server.

func NewServer

func NewServer(log *logging.Logger, srv ChainServerImpl) *Server

NewServer instantiate a new blockchain server.

func (*Server) ReloadConf

func (s *Server) ReloadConf(cfg Config)

func (*Server) Start

func (s *Server) Start() error

func (*Server) Stop

func (s *Server) Stop() error

Stop gracefully shutdowns down the blockchain provider's server.

type TendermintConfig

type TendermintConfig struct {
	Level   encoding.LogLevel `description:" "                             long:"log-level"`
	RPCAddr string            `description:"address of the tendermint rpc" long:"rpc-addr"`
}

func NewDefaultTendermintConfig

func NewDefaultTendermintConfig() TendermintConfig

NewDefaultTendermintConfig creates an instance of the package specific configuration, given a pointer to a logger instance to be used for logging within the package.

Directories

Path Synopsis
mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

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