witness

package
v0.0.0-...-be882d2 Latest Latest
Warning

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

Go to latest
Published: Aug 23, 2023 License: Apache-2.0 Imports: 34 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// TransferNew stands for a new transfer
	TransferNew TransferStatus = "new"
	// WitnessSubmitted stands for a witnessed transfer
	WitnessSubmitted = "submitted"
	// SubmissionConfirmed stands for a confirmed witness
	SubmissionConfirmed = "confirmed"
	// TransferSettled stands for a settled transfer
	TransferSettled = "settled"
)

Variables

This section is empty.

Functions

func NewService

func NewService(
	privateKey *ecdsa.PrivateKey,
	cashiers []TokenCashier,
	batchSize uint16,
	processInterval time.Duration,
	disableSubmit bool,
) (*service, error)

NewService creates a new witness service

func StartServer

func StartServer(srv *service, grpcPort int, grpcProxyPort int)

Types

type Recorder

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

Recorder is a logger based on sql to record exchange events

func NewRecorder

func NewRecorder(
	store *db.SQLStore,
	transferTableName string,
	tokenPairs map[common.Address]common.Address,
) *Recorder

NewRecorder returns a recorder for exchange

func (*Recorder) AddTransfer

func (recorder *Recorder) AddTransfer(tx *Transfer) error

AddTransfer creates a new transfer record

func (*Recorder) AmountOfTransferred

func (recorder *Recorder) AmountOfTransferred(cashier, token common.Address) (*big.Int, error)

func (*Recorder) ConfirmTransfer

func (recorder *Recorder) ConfirmTransfer(tx *Transfer) error

ConfirmTransfer marks a record as settled

func (*Recorder) SettleTransfer

func (recorder *Recorder) SettleTransfer(tx *Transfer) error

SettleTransfer marks a record as submitted

func (*Recorder) Start

func (recorder *Recorder) Start(ctx context.Context) error

Start starts the recorder

func (*Recorder) Stop

func (recorder *Recorder) Stop(ctx context.Context) error

Stop stops the recorder

func (*Recorder) TipHeight

func (recorder *Recorder) TipHeight(cashier string) (uint64, error)

TipHeight returns the tip height of all the transfers in the recorder

func (*Recorder) Transfer

func (recorder *Recorder) Transfer(_id common.Hash) (*Transfer, error)

func (*Recorder) TransfersToSettle

func (recorder *Recorder) TransfersToSettle() ([]*Transfer, error)

TransfersToSettle returns the list of transfers to confirm

func (*Recorder) TransfersToSubmit

func (recorder *Recorder) TransfersToSubmit() ([]*Transfer, error)

TransfersToSubmit returns the list of transfers to submit

func (*Recorder) UpdateSyncHeight

func (recorder *Recorder) UpdateSyncHeight(cashier string, height uint64) error

func (*Recorder) UpsertTransfer

func (recorder *Recorder) UpsertTransfer(tx *Transfer) error

type Service

type Service interface {
	// Start starts the service
	Start(context.Context) error
	// Stop stops the service
	Stop(context.Context) error
}

Service manages to exchange iotex coin to ERC20 token on ethereum

type TokenCashier

type TokenCashier interface {
	Start(context.Context) error
	Stop(context.Context) error
	GetRecorder() *Recorder
	PullTransfersByHeight(blockHeight uint64) error
	PullTransfers(blockCount uint16) error
	SubmitTransfers(func(*Transfer, common.Address) (common.Hash, common.Address, []byte, error)) error
	CheckTransfers() error
}

TokenCashier defines the interface to pull transfers from chain in a block range

func NewTokenCashier

func NewTokenCashier(
	id string,
	relayerURL string,
	iotexClient iotex.ReadOnlyClient,
	cashierContractAddr address.Address,
	validatorContractAddr common.Address,
	recorder *Recorder,
	startBlockHeight uint64,
) (TokenCashier, error)

NewTokenCashier creates a new TokenCashier

func NewTokenCashierOnEthereum

func NewTokenCashierOnEthereum(
	id string,
	relayerURL string,
	ethereumClient *ethclient.Client,
	cashierContractAddr common.Address,
	tokenSafeContractAddr common.Address,
	validatorContractAddr common.Address,
	recorder *Recorder,
	startBlockHeight uint64,
	confirmBlockNumber uint8,
	reverseRecorder *Recorder,
	reverseCashierContractAddr common.Address,
) (TokenCashier, error)

NewTokenCashierOnEthereum creates a new TokenCashier on ethereum

type Transfer

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

Transfer defines a record

type TransferStatus

type TransferStatus string

TransferStatus is the status of a transfer

Jump to

Keyboard shortcuts

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