relay

package
v0.16.0 Latest Latest
Warning

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

Go to latest
Published: Sep 13, 2023 License: AGPL-3.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const LoggerTag = "RELAY"
View Source
const MuSigLoggerTag = "MUSIG_STORE"

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	// Medians is the list of median contracts configured for the relay.
	Medians []ConfigMedian

	// Scribes is the list of scribe contracts configured for the relay.
	Scribes []ConfigScribe

	// OptimisticScribes is the list of optimistic scribe contracts configured
	// for the relay.
	OptimisticScribes []ConfigOptimisticScribe

	// Logger is a current logger interface used by the Feed.
	// If nil, null logger will be used.
	Logger log.Logger
}

Config is the configuration for the Relay.

type ConfigMedian

type ConfigMedian struct {
	// Client is the RPC client used to interact with the blockchain.
	Client rpc.RPC

	// DataPointStore is the store used to retrieve data points.
	DataPointStore *store.Store

	// DataModel is the name of the data model from which data points
	// are retrieved.
	DataModel string

	// ContractAddress is the address of the Median contract.
	ContractAddress types.Address

	// FeedAddresses is the list of feed addresses that are allowed to
	// update the Median contract.
	FeedAddresses []types.Address

	// Spread is the minimum spread between the oracle price and new
	// price required to send update.
	Spread float64

	// Expiration is the minimum time difference between the last oracle
	// update on the Median contract and current time required to send
	// update.
	Expiration time.Duration

	// Ticker notifies the relay to check if an update is required.
	Ticker *timeutil.Ticker
}

type ConfigOptimisticScribe

type ConfigOptimisticScribe struct {
	// Client is the RPC client used to interact with the blockchain.
	Client rpc.RPC

	// MuSigStore is the store used to retrieve MuSig signatures.
	MuSigStore *MuSigStore

	// DataModel is the name of the data model that is used to update
	// the OptimisticScribe contract.
	DataModel string

	// ContractAddress is the address of the OptimisticScribe contract.
	ContractAddress types.Address

	// FeedAddresses is the list of feed addresses that are allowed to
	// update the Scribe contract.
	FeedAddresses []types.Address

	// Spread is the minimum calcSpread between the oracle price and new
	// price required to send update.
	Spread float64

	// Expiration is the minimum time difference between the last oracle
	// update on the Scribe contract and current time required to send
	// update.
	Expiration time.Duration

	// Ticker notifies the relay to check if an update is required.
	Ticker *timeutil.Ticker
}

type ConfigScribe

type ConfigScribe struct {
	// Client is the RPC client used to interact with the blockchain.
	Client rpc.RPC

	// MuSigStore is the store used to retrieve MuSig signatures.
	MuSigStore *MuSigStore

	// DataModel is the name of the data model that is used to update
	// the Scribe contract.
	DataModel string

	// ContractAddress is the address of the Scribe contract.
	ContractAddress types.Address

	// FeedAddresses is the list of feed addresses that are allowed to
	// update the Scribe contract.
	FeedAddresses []types.Address

	// Spread is the minimum calcSpread between the oracle price and new
	// price required to send update.
	Spread float64

	// Expiration is the minimum time difference between the last oracle
	// update on the Scribe contract and current time required to send
	// update.
	Expiration time.Duration

	// Ticker notifies the relay to check if an update is required.
	Ticker *timeutil.Ticker
}

type MedianContract

type MedianContract interface {
	Val(ctx context.Context) (*bn.DecFixedPointNumber, error)
	Age(ctx context.Context) (time.Time, error)
	Wat(ctx context.Context) (string, error)
	Bar(ctx context.Context) (int, error)
	Poke(
		ctx context.Context,
		vals []contract.MedianVal,
	) (
		*types.Hash,
		*types.Transaction,
		error,
	)
}

type MuSigStore

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

func NewMuSigStore

func NewMuSigStore(cfg MuSigStoreConfig) *MuSigStore

func (*MuSigStore) SignaturesByDataModel

func (m *MuSigStore) SignaturesByDataModel(model string) []*messages.MuSigSignature

func (*MuSigStore) Start

func (m *MuSigStore) Start(ctx context.Context) error

Start implements the supervisor.Service interface.

func (*MuSigStore) Wait

func (m *MuSigStore) Wait() <-chan error

Wait implements the supervisor.Service interface.

type MuSigStoreConfig

type MuSigStoreConfig struct {
	// Transport is an implementation of transport used to fetch data from
	// feeds.
	Transport transport.Service

	// ScribeDataModels is the list of models for which we should collect
	// signatures.
	ScribeDataModels []string

	// OpScribeDataModels is the list of models for which we should collect
	// optimistic signatures.
	OpScribeDataModels []string

	// Logger is a current logger interface used by the store.
	Logger log.Logger
}

MuSigStoreConfig is the configuration for MuSigStore.

type OpScribeContract

type OpScribeContract interface {
	ScribeContract
	OpPoke(
		ctx context.Context,
		pokeData contract.PokeData,
		schnorrData contract.SchnorrData,
		ecdsaData types.Signature,
	) (
		*types.Hash,
		*types.Transaction,
		error,
	)
}

type Relay

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

Relay is a service that relays data points to the blockchain.

func New

func New(cfg Config) (*Relay, error)

New creates a new Relay instance.

func (*Relay) Start

func (m *Relay) Start(ctx context.Context) error

Start implements the supervisor.Service interface.

func (*Relay) Wait

func (m *Relay) Wait() <-chan error

Wait implements the supervisor.Service interface.

type ScribeContract

type ScribeContract interface {
	Wat(ctx context.Context) (string, error)
	Bar(ctx context.Context) (int, error)
	Feeds(ctx context.Context) ([]types.Address, []uint8, error)
	Read(ctx context.Context) (contract.PokeData, error)
	Poke(
		ctx context.Context,
		pokeData contract.PokeData,
		schnorrData contract.SchnorrData,
	) (
		*types.Hash,
		*types.Transaction,
		error,
	)
}

Jump to

Keyboard shortcuts

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