oracle

package
v0.98.6-pre Latest Latest
Warning

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

Go to latest
Published: May 13, 2022 License: MIT Imports: 37 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrResponseTooLarge = errors.New("too big response")

ErrResponseTooLarge is returned when response exceeds max allowed size.

View Source
var ErrRestrictedRedirect = errors.New("oracle request redirection error")

ErrRestrictedRedirect is returned when redirection to forbidden address occurs during Oracle response creation.

Functions

This section is empty.

Types

type Broadcaster

type Broadcaster interface {
	SendResponse(priv *keys.PrivateKey, resp *transaction.OracleResponse, txSig []byte)
	Run()
	Shutdown()
}

Broadcaster broadcasts oracle responses.

type Config

type Config struct {
	Log             *zap.Logger
	Network         netmode.Magic
	MainCfg         config.OracleConfiguration
	Client          HTTPClient
	Chain           Ledger
	ResponseHandler Broadcaster
	OnTransaction   TxCallback
}

Config contains oracle module parameters.

type HTTPClient

type HTTPClient interface {
	Do(*http.Request) (*http.Response, error)
}

HTTPClient is an interface capable of doing oracle requests.

type Ledger added in v0.98.1

type Ledger interface {
	BlockHeight() uint32
	FeePerByte() int64
	GetBaseExecFee() int64
	GetConfig() config.ProtocolConfiguration
	GetMaxVerificationGAS() int64
	GetTestVM(t trigger.Type, tx *transaction.Transaction, b *block.Block) *interop.Context
	GetTransaction(util.Uint256) (*transaction.Transaction, uint32, error)
}

Ledger is the interface to Blockchain sufficient for Oracle.

type Oracle

type Oracle struct {
	Config
	// contains filtered or unexported fields
}

Oracle represents oracle module capable of talking with the external world.

func NewOracle

func NewOracle(cfg Config) (*Oracle, error)

NewOracle returns new oracle instance.

func (*Oracle) AddRequests

func (o *Oracle) AddRequests(reqs map[uint64]*state.OracleRequest)

AddRequests saves all requests in-fly for further processing.

func (*Oracle) AddResponse

func (o *Oracle) AddResponse(pub *keys.PublicKey, reqID uint64, txSig []byte)

AddResponse processes oracle response from node pub. sig is response transaction signature.

func (*Oracle) CreateResponseTx

func (o *Oracle) CreateResponseTx(gasForResponse int64, vub uint32, resp *transaction.OracleResponse) (*transaction.Transaction, error)

CreateResponseTx creates unsigned oracle response transaction.

func (*Oracle) ProcessRequestsInternal

func (o *Oracle) ProcessRequestsInternal(reqs map[uint64]*state.OracleRequest)

ProcessRequestsInternal processes provided requests synchronously.

func (*Oracle) RemoveRequests

func (o *Oracle) RemoveRequests(ids []uint64)

RemoveRequests removes all data associated with requests which have been processed by oracle contract.

func (*Oracle) SetBroadcaster

func (o *Oracle) SetBroadcaster(b Broadcaster)

SetBroadcaster sets callback to broadcast response.

func (*Oracle) Shutdown

func (o *Oracle) Shutdown()

Shutdown shutdowns Oracle.

func (*Oracle) Start added in v0.98.1

func (o *Oracle) Start()

Start runs the oracle service in a separate goroutine.

func (*Oracle) UpdateNativeContract added in v0.94.0

func (o *Oracle) UpdateNativeContract(script, resp []byte, h util.Uint160, verifyOffset int)

UpdateNativeContract updates native oracle contract info for tx verification.

func (*Oracle) UpdateOracleNodes

func (o *Oracle) UpdateOracleNodes(oracleNodes keys.PublicKeys)

UpdateOracleNodes updates oracle nodes list.

type TxCallback

type TxCallback = func(tx *transaction.Transaction) error

TxCallback executes on new transactions when they are ready to be pooled.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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