Documentation ¶
Index ¶
- Constants
- Variables
- func DoSettleBalance(coinbase common.Address, takerOrder, makerOrder *tradingstate.OrderItem, ...) error
- func GetTokenAbi() (*abi.ABI, error)
- func GetTradeQuantity(takerSide string, takerFeeRate *big.Int, takerBalance *big.Int, ...) (*big.Int, bool)
- func NewLDBEngine(cfg *Config) *sdxxDAO.BatchDatabase
- func NewMongoDBEngine(cfg *Config) *sdxxDAO.MongoDatabase
- func RunContract(chain consensus.ChainContext, statedb *state.StateDB, ...) (interface{}, error)
- type Config
- type PublicSdxXAPI
- type SdxX
- func (sdxx *SdxX) APIs() []rpc.API
- func (sdxx *SdxX) ApplyOrder(header *types.Header, coinbase common.Address, chain consensus.ChainContext, ...) ([]map[string]string, []*tradingstate.OrderItem, error)
- func (sdxx *SdxX) CommitOrder(header *types.Header, coinbase common.Address, chain consensus.ChainContext, ...) ([]map[string]string, []*tradingstate.OrderItem, error)
- func (sdxx *SdxX) ConvertSDXToToken(chain consensus.ChainContext, statedb *state.StateDB, ...) (*big.Int, *big.Int, error)
- func (sdxx *SdxX) GetAveragePriceLastEpoch(chain consensus.ChainContext, statedb *state.StateDB, ...) (*big.Int, error)
- func (sdxx *SdxX) GetLevelDB() sdxxDAO.SdxXDAO
- func (sdxx *SdxX) GetMongoDB() sdxxDAO.SdxXDAO
- func (sdxx *SdxX) GetStateCache() tradingstate.Database
- func (sdxx *SdxX) GetTokenDecimal(chain consensus.ChainContext, statedb *state.StateDB, tokenAddr common.Address) (*big.Int, error)
- func (sdxx *SdxX) GetTradingState(block *types.Block, author common.Address) (*tradingstate.TradingStateDB, error)
- func (sdxx *SdxX) GetTradingStateRoot(block *types.Block, author common.Address) (common.Hash, error)
- func (sdxx *SdxX) GetTriegc() *prque.Prque
- func (sdxx *SdxX) HasTradingState(block *types.Block, author common.Address) bool
- func (sdxx *SdxX) IsSDKNode() bool
- func (sdxx *SdxX) LogEpochPrice(epochNumber uint64, epochPriceResult map[common.Hash]*big.Int) error
- func (sdxx *SdxX) Overflow() bool
- func (sdxx *SdxX) ProcessCancelOrder(header *types.Header, tradingStateDB *tradingstate.TradingStateDB, ...) (error, bool)
- func (sdxx *SdxX) ProcessOrderPending(header *types.Header, coinbase common.Address, chain consensus.ChainContext, ...) ([]tradingstate.TxDataMatch, map[common.Hash]tradingstate.MatchingResult)
- func (sdxx *SdxX) Protocols() []p2p.Protocol
- func (sdxx *SdxX) RollbackReorgTxMatch(txhash common.Hash) error
- func (sdxx *SdxX) SaveData()
- func (sdxx *SdxX) SetTokenDecimal(token common.Address, decimal *big.Int)
- func (sdxx *SdxX) Start(server *p2p.Server) error
- func (sdxx *SdxX) Stop() error
- func (sdxx *SdxX) SyncDataToSDKNode(takerOrderInTx *tradingstate.OrderItem, txHash common.Hash, ...) error
- func (sdxx *SdxX) UpdateMediumPriceBeforeEpoch(epochNumber uint64, tradingStateDB *tradingstate.TradingStateDB, ...) error
- func (sdxx *SdxX) UpdateOrderCache(baseToken, quoteToken common.Address, orderHash common.Hash, ...)
- func (sdxx *SdxX) Version() uint64
Constants ¶
const ( ProtocolName = "sdxx" ProtocolVersion = uint64(1) ProtocolVersionStr = "1.0" MaximumTxMatchSize = 1000 )
const (
LimitThresholdOrderNonceInQueue = 100
)
Variables ¶
var ( ErrNoTopics = errors.New("missing topic(s)") ErrOrderNonceTooLow = errors.New("OrderNonce too low") ErrOrderNonceTooHigh = errors.New("OrderNonce too high") )
List of errors
var ( ErrNonceTooHigh = errors.New("nonce too high") ErrNonceTooLow = errors.New("nonce too low") )
var DefaultConfig = Config{
DataDir: "",
}
DefaultConfig represents (shocker!) the default configuration.
Functions ¶
func DoSettleBalance ¶
func DoSettleBalance(coinbase common.Address, takerOrder, makerOrder *tradingstate.OrderItem, settleBalance *tradingstate.SettleBalance, statedb *state.StateDB) error
func GetTradeQuantity ¶
func NewLDBEngine ¶
func NewLDBEngine(cfg *Config) *sdxxDAO.BatchDatabase
func NewMongoDBEngine ¶
func NewMongoDBEngine(cfg *Config) *sdxxDAO.MongoDatabase
Types ¶
type PublicSdxXAPI ¶
type PublicSdxXAPI struct {
// contains filtered or unexported fields
}
PublicSdxXAPI provides the sdxX RPC service that can be use publicly without security implications.
func NewPublicSdxXAPI ¶
func NewPublicSdxXAPI(t *SdxX) *PublicSdxXAPI
NewPublicSdxXAPI create a new RPC sdxX service.
type SdxX ¶
type SdxX struct { Triegc *prque.Prque // Priority queue mapping block numbers to tries to gc StateCache tradingstate.Database // State database to reuse between imports (contains state cache) *sdxx_state.TradingStateDB // contains filtered or unexported fields }
func (*SdxX) ApplyOrder ¶
func (sdxx *SdxX) ApplyOrder(header *types.Header, coinbase common.Address, chain consensus.ChainContext, statedb *state.StateDB, tradingStateDB *tradingstate.TradingStateDB, orderBook common.Hash, order *tradingstate.OrderItem) ([]map[string]string, []*tradingstate.OrderItem, error)
func (*SdxX) CommitOrder ¶
func (sdxx *SdxX) CommitOrder(header *types.Header, coinbase common.Address, chain consensus.ChainContext, statedb *state.StateDB, tradingStateDB *tradingstate.TradingStateDB, orderBook common.Hash, order *tradingstate.OrderItem) ([]map[string]string, []*tradingstate.OrderItem, error)
func (*SdxX) ConvertSDXToToken ¶
func (sdxx *SdxX) ConvertSDXToToken(chain consensus.ChainContext, statedb *state.StateDB, tradingStateDb *tradingstate.TradingStateDB, token common.Address, quantity *big.Int) (*big.Int, *big.Int, error)
return tokenQuantity (after convert from SDX to token), tokenPriceInSDX, error
func (*SdxX) GetAveragePriceLastEpoch ¶
func (sdxx *SdxX) GetAveragePriceLastEpoch(chain consensus.ChainContext, statedb *state.StateDB, tradingStateDb *tradingstate.TradingStateDB, baseToken common.Address, quoteToken common.Address) (*big.Int, error)
return average price of the given pair in the last epoch
func (*SdxX) GetLevelDB ¶
func (*SdxX) GetMongoDB ¶
func (*SdxX) GetStateCache ¶
func (sdxx *SdxX) GetStateCache() tradingstate.Database
func (*SdxX) GetTokenDecimal ¶
func (*SdxX) GetTradingState ¶
func (sdxx *SdxX) GetTradingState(block *types.Block, author common.Address) (*tradingstate.TradingStateDB, error)
func (*SdxX) GetTradingStateRoot ¶
func (*SdxX) HasTradingState ¶
func (*SdxX) LogEpochPrice ¶
func (sdxx *SdxX) LogEpochPrice(epochNumber uint64, epochPriceResult map[common.Hash]*big.Int) error
put average price of epoch to mongodb for tracking liquidation trades epochPriceResult: a map of epoch average price, key is orderbook hash , value is epoch average price orderbook hash genereted from baseToken, quoteToken at sdxchain/sdxx/tradingstate/common.go:214
func (*SdxX) ProcessCancelOrder ¶
func (sdxx *SdxX) ProcessCancelOrder(header *types.Header, tradingStateDB *tradingstate.TradingStateDB, statedb *state.StateDB, chain consensus.ChainContext, coinbase common.Address, orderBook common.Hash, order *tradingstate.OrderItem) (error, bool)
func (*SdxX) ProcessOrderPending ¶
func (sdxx *SdxX) ProcessOrderPending(header *types.Header, coinbase common.Address, chain consensus.ChainContext, pending map[common.Address]types.OrderTransactions, statedb *state.StateDB, sdxXstatedb *tradingstate.TradingStateDB) ([]tradingstate.TxDataMatch, map[common.Hash]tradingstate.MatchingResult)
func (*SdxX) RollbackReorgTxMatch ¶
func (*SdxX) SetTokenDecimal ¶
FIXME: using in unit tests only
func (*SdxX) SyncDataToSDKNode ¶
func (sdxx *SdxX) SyncDataToSDKNode(takerOrderInTx *tradingstate.OrderItem, txHash common.Hash, txMatchTime time.Time, statedb *state.StateDB, trades []map[string]string, rejectedOrders []*tradingstate.OrderItem, dirtyOrderCount *uint64) error
there are 3 tasks need to complete to update data in SDK nodes after matching
- txMatchData.Order: order has been processed. This order should be put to `orders` collection with status sdktypes.OrderStatusOpen
- txMatchData.Trades: includes information of matched orders. a. PutObject them to `trades` collection b. Update status of regrading orders to sdktypes.OrderStatusFilled
func (*SdxX) UpdateMediumPriceBeforeEpoch ¶
func (sdxx *SdxX) UpdateMediumPriceBeforeEpoch(epochNumber uint64, tradingStateDB *tradingstate.TradingStateDB, statedb *state.StateDB) error
func (*SdxX) UpdateOrderCache ¶
func (sdxx *SdxX) UpdateOrderCache(baseToken, quoteToken common.Address, orderHash common.Hash, txhash common.Hash, lastState tradingstate.OrderHistoryItem)
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. |