sdxxlending

package
v0.0.0-...-7037f4e Latest Latest
Warning

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

Go to latest
Published: Jul 25, 2021 License: GPL-3.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ProtocolName       = "sdxxlending"
	ProtocolVersion    = uint64(1)
	ProtocolVersionStr = "1.0"
)

Variables

View Source
var (
	ErrOrderNonceTooLow  = errors.New("OrderNonce too low")
	ErrOrderNonceTooHigh = errors.New("OrderNonce too high")
)

List of errors

View Source
var (
	ErrNonceTooHigh = errors.New("nonce too high")
	ErrNonceTooLow  = errors.New("nonce too low")
)

Functions

func DoSettleBalance

func DoSettleBalance(coinbase common.Address, takerOrder, makerOrder *lendingstate.LendingItem, settleBalance *lendingstate.LendingSettleBalance, statedb *state.StateDB) error

func GetLendQuantity

func GetLendQuantity(takerSide string, collateralTokenDecimal *big.Int, depositRate *big.Int, collateralPrice *big.Int, takerBalance *big.Int, makerBalance *big.Int, quantityToLend *big.Int) (*big.Int, bool)

Types

type Lending

type Lending struct {
	Triegc     *prque.Prque          // Priority queue mapping block numbers to tries to gc
	StateCache lendingstate.Database // State database to reuse between imports (contains state cache)    *lendingstate.TradingStateDB
	// contains filtered or unexported fields
}

func New

func New(sdxx *sdxx.SdxX) *Lending

func (*Lending) APIs

func (l *Lending) APIs() []rpc.API

APIs returns the RPC descriptors the Lending implementation offers

func (*Lending) ApplyOrder

func (l *Lending) ApplyOrder(header *types.Header, coinbase common.Address, chain consensus.ChainContext, statedb *state.StateDB, lendingStateDB *lendingstate.LendingStateDB, tradingStateDb *tradingstate.TradingStateDB, lendingOrderBook common.Hash, order *lendingstate.LendingItem) ([]*lendingstate.LendingTrade, []*lendingstate.LendingItem, error)

func (*Lending) AutoTopUp

func (l *Lending) AutoTopUp(statedb *state.StateDB, tradingState *tradingstate.TradingStateDB, lendingState *lendingstate.LendingStateDB, lendingBook, lendingTradeId common.Hash, currentPrice *big.Int) (*lendingstate.LendingTrade, error)

func (*Lending) CommitOrder

func (l *Lending) CommitOrder(header *types.Header, coinbase common.Address, chain consensus.ChainContext, statedb *state.StateDB, lendingStateDB *lendingstate.LendingStateDB, tradingStateDb *tradingstate.TradingStateDB, lendingOrderBook common.Hash, order *lendingstate.LendingItem) ([]*lendingstate.LendingTrade, []*lendingstate.LendingItem, error)

func (*Lending) GetCollateralPrices

func (l *Lending) GetCollateralPrices(header *types.Header, chain consensus.ChainContext, statedb *state.StateDB, tradingStateDb *tradingstate.TradingStateDB, collateralToken common.Address, lendingToken common.Address) (*big.Int, *big.Int, error)

LendToken and CollateralToken must meet at least one of following conditions - Have direct pair in SdxX: lendToken/CollateralToken or CollateralToken/LendToken - Have pairs with SDX: - lendToken/SDX and CollateralToken/SDX - SDX/lendToken and SDX/CollateralToken

func (*Lending) GetLendingState

func (l *Lending) GetLendingState(block *types.Block, author common.Address) (*lendingstate.LendingStateDB, error)

func (*Lending) GetLendingStateRoot

func (l *Lending) GetLendingStateRoot(block *types.Block, author common.Address) (common.Hash, error)

func (*Lending) GetLevelDB

func (l *Lending) GetLevelDB() sdxxDAO.SdxXDAO

func (*Lending) GetMediumTradePriceBeforeEpoch

func (l *Lending) GetMediumTradePriceBeforeEpoch(chain consensus.ChainContext, statedb *state.StateDB, tradingStateDb *tradingstate.TradingStateDB, baseToken common.Address, quoteToken common.Address) (*big.Int, error)

func (*Lending) GetMongoDB

func (l *Lending) GetMongoDB() sdxxDAO.SdxXDAO

func (*Lending) GetSDXBasePrices

func (l *Lending) GetSDXBasePrices(header *types.Header, chain consensus.ChainContext, statedb *state.StateDB, tradingStateDb *tradingstate.TradingStateDB, token common.Address) (*big.Int, error)

func (*Lending) GetStateCache

func (l *Lending) GetStateCache() lendingstate.Database

func (*Lending) GetTriegc

func (l *Lending) GetTriegc() *prque.Prque

func (*Lending) HasLendingState

func (l *Lending) HasLendingState(block *types.Block, author common.Address) bool

func (*Lending) LiquidationExpiredTrade

func (l *Lending) LiquidationExpiredTrade(header *types.Header, chain consensus.ChainContext, lendingStateDB *lendingstate.LendingStateDB, statedb *state.StateDB, tradingstateDB *tradingstate.TradingStateDB, lendingBook common.Hash, lendingTradeId uint64) (*lendingstate.LendingTrade, error)

return liquidatedTrade

func (*Lending) LiquidationTrade

func (l *Lending) LiquidationTrade(lendingStateDB *lendingstate.LendingStateDB, statedb *state.StateDB, tradingstateDB *tradingstate.TradingStateDB, lendingBook common.Hash, lendingTradeId uint64) (*lendingstate.LendingTrade, error)

return liquidatedTrade

func (*Lending) ProcessCancelOrder

func (l *Lending) ProcessCancelOrder(header *types.Header, lendingStateDB *lendingstate.LendingStateDB, statedb *state.StateDB, tradingStateDb *tradingstate.TradingStateDB, chain consensus.ChainContext, coinbase common.Address, lendingOrderBook common.Hash, order *lendingstate.LendingItem) (error, bool)

func (*Lending) ProcessLiquidationData

func (l *Lending) ProcessLiquidationData(header *types.Header, chain consensus.ChainContext, statedb *state.StateDB, tradingState *tradingstate.TradingStateDB, lendingState *lendingstate.LendingStateDB) (updatedTrades map[common.Hash]*lendingstate.LendingTrade, liquidatedTrades, autoRepayTrades, autoTopUpTrades, autoRecallTrades []*lendingstate.LendingTrade, err error)

func (*Lending) ProcessOrderPending

func (l *Lending) ProcessOrderPending(header *types.Header, coinbase common.Address, chain consensus.ChainContext, pending map[common.Address]types.LendingTransactions, statedb *state.StateDB, lendingStatedb *lendingstate.LendingStateDB, tradingStateDb *tradingstate.TradingStateDB) ([]*lendingstate.LendingItem, map[common.Hash]lendingstate.MatchingResult)

func (*Lending) ProcessRecallLendingTrade

func (l *Lending) ProcessRecallLendingTrade(lendingStateDB *lendingstate.LendingStateDB, statedb *state.StateDB, tradingStateDb *tradingstate.TradingStateDB, lendingBook common.Hash, lendingTradeId common.Hash, newLiquidationPrice *big.Int) (error, bool, *lendingstate.LendingTrade)

func (*Lending) ProcessRepay

func (l *Lending) ProcessRepay(header *types.Header, chain consensus.ChainContext, lendingStateDB *lendingstate.LendingStateDB, statedb *state.StateDB, tradingstateDB *tradingstate.TradingStateDB, lendingBook common.Hash, order *lendingstate.LendingItem) (trade *lendingstate.LendingTrade, err error)

return hash: hash of lendingTrade

func (*Lending) ProcessRepayLendingTrade

func (l *Lending) ProcessRepayLendingTrade(header *types.Header, chain consensus.ChainContext, lendingStateDB *lendingstate.LendingStateDB, statedb *state.StateDB, tradingstateDB *tradingstate.TradingStateDB, lendingBook common.Hash, lendingTradeId uint64) (trade *lendingstate.LendingTrade, err error)

func (*Lending) ProcessTopUp

func (l *Lending) ProcessTopUp(lendingStateDB *lendingstate.LendingStateDB, statedb *state.StateDB, tradingStateDb *tradingstate.TradingStateDB, order *lendingstate.LendingItem) (error, bool, *lendingstate.LendingTrade)

func (*Lending) ProcessTopUpLendingTrade

func (l *Lending) ProcessTopUpLendingTrade(lendingStateDB *lendingstate.LendingStateDB, statedb *state.StateDB, tradingStateDb *tradingstate.TradingStateDB, lendingTradeId common.Hash, lendingBook common.Hash, quantity *big.Int) (error, bool, *lendingstate.LendingTrade)

func (*Lending) Protocols

func (l *Lending) Protocols() []p2p.Protocol

func (*Lending) RollbackLendingData

func (l *Lending) RollbackLendingData(txhash common.Hash) error

func (*Lending) SaveData

func (l *Lending) SaveData()

func (*Lending) Start

func (l *Lending) Start(server *p2p.Server) error

func (*Lending) Stop

func (l *Lending) Stop() error

func (*Lending) SyncDataToSDKNode

func (l *Lending) SyncDataToSDKNode(chain consensus.ChainContext, statedb *state.StateDB, block *types.Block, takerLendingItem *lendingstate.LendingItem, txHash common.Hash, txMatchTime time.Time, trades []*lendingstate.LendingTrade, rejectedItems []*lendingstate.LendingItem, dirtyOrderCount *uint64) error

there are 3 tasks need to complete (for SDK nodes) after matching 1. Put takerLendingItem to database 2.a Update status, filledAmount of makerLendingItem 2.b. Put lendingTrade to database 3. Update status of rejected items

func (*Lending) UpdateLendingItemCache

func (l *Lending) UpdateLendingItemCache(LendingToken, CollateralToken common.Address, hash common.Hash, txhash common.Hash, lastState lendingstate.LendingItemHistoryItem)

func (*Lending) UpdateLendingTrade

func (l *Lending) UpdateLendingTrade(trades map[common.Hash]*lendingstate.LendingTrade, txhash common.Hash, txTime time.Time) error

func (*Lending) UpdateLendingTradeCache

func (l *Lending) UpdateLendingTradeCache(hash common.Hash, txhash common.Hash, lastState lendingstate.LendingTradeHistoryItem)

func (*Lending) UpdateLiquidatedTrade

func (l *Lending) UpdateLiquidatedTrade(blockTime uint64, result lendingstate.FinalizedResult, trades map[common.Hash]*lendingstate.LendingTrade) error

func (*Lending) Version

func (l *Lending) Version() uint64

Version returns the Lending sub-protocols version number.

type PublicSdxXLendingAPI

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

PublicSdxXLendingAPI provides the sdxX RPC service that can be use publicly without security implications.

func NewPublicSdxXLendingAPI

func NewPublicSdxXLendingAPI(t *Lending) *PublicSdxXLendingAPI

NewPublicSdxXLendingAPI create a new RPC sdxX service.

func (*PublicSdxXLendingAPI) Version

func (api *PublicSdxXLendingAPI) Version(ctx context.Context) string

Version returns the Lending sub-protocol version.

Directories

Path Synopsis
Package state provides a caching layer atop the Ethereum state trie.
Package state provides a caching layer atop the Ethereum state trie.

Jump to

Keyboard shortcuts

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