Commit 446024a6 authored by linj's avatar linj Committed by vipwzw

price: update buy market exec

parent 98640b04
...@@ -29,6 +29,7 @@ var ( ...@@ -29,6 +29,7 @@ var (
tradelog = log.New("module", "execs.trade") tradelog = log.New("module", "execs.trade")
defaultAssetExec = "token" defaultAssetExec = "token"
driverName = "trade" driverName = "trade"
defaultPriceExec = "coins"
) )
func init() { func init() {
......
...@@ -93,6 +93,8 @@ func (selldb *sellDB) getBuyLogs(buyerAddr string, boardlotcnt int64, txhash str ...@@ -93,6 +93,8 @@ func (selldb *sellDB) getBuyLogs(buyerAddr string, boardlotcnt int64, txhash str
TxHash: txhash, TxHash: txhash,
Height: selldb.Height, Height: selldb.Height,
AssetExec: selldb.AssetExec, AssetExec: selldb.AssetExec,
PriceExec: selldb.PriceExec,
PriceSymbol: selldb.PriceSymbol,
} }
receipt := &pty.ReceiptTradeBuyMarket{Base: base} receipt := &pty.ReceiptTradeBuyMarket{Base: base}
...@@ -343,8 +345,12 @@ func (action *tradeAction) tradeBuy(buyOrder *pty.TradeForBuy) (*types.Receipt, ...@@ -343,8 +345,12 @@ func (action *tradeAction) tradeBuy(buyOrder *pty.TradeForBuy) (*types.Receipt,
return nil, pty.ErrTCntLessThanMinBoardlot return nil, pty.ErrTCntLessThanMinBoardlot
} }
priceAcc, err := createPriceDB(action.height, action.db, sellOrder.PriceExec, sellOrder.PriceSymbol)
if err != nil {
return nil, err
}
//首先购买费用的划转 //首先购买费用的划转
receiptFromAcc, err := action.coinsAccount.ExecTransfer(action.fromaddr, sellOrder.Address, action.execaddr, buyOrder.BoardlotCnt*sellOrder.PricePerBoardlot) receiptFromAcc, err := priceAcc.ExecTransfer(action.fromaddr, sellOrder.Address, action.execaddr, buyOrder.BoardlotCnt*sellOrder.PricePerBoardlot)
if err != nil { if err != nil {
tradelog.Error("account.Transfer ", "addrFrom", action.fromaddr, "addrTo", sellOrder.Address, tradelog.Error("account.Transfer ", "addrFrom", action.fromaddr, "addrTo", sellOrder.Address,
"amount", buyOrder.BoardlotCnt*sellOrder.PricePerBoardlot) "amount", buyOrder.BoardlotCnt*sellOrder.PricePerBoardlot)
...@@ -362,7 +368,7 @@ func (action *tradeAction) tradeBuy(buyOrder *pty.TradeForBuy) (*types.Receipt, ...@@ -362,7 +368,7 @@ func (action *tradeAction) tradeBuy(buyOrder *pty.TradeForBuy) (*types.Receipt,
"addrTo", action.fromaddr, "execaddr", action.execaddr, "addrTo", action.fromaddr, "execaddr", action.execaddr,
"amount", buyOrder.BoardlotCnt*sellOrder.AmountPerBoardlot) "amount", buyOrder.BoardlotCnt*sellOrder.AmountPerBoardlot)
//因为未能成功将对应的token进行转账,所以需要将购买方的账户资金进行回退 //因为未能成功将对应的token进行转账,所以需要将购买方的账户资金进行回退
action.coinsAccount.ExecTransfer(sellOrder.Address, action.fromaddr, action.execaddr, buyOrder.BoardlotCnt*sellOrder.PricePerBoardlot) priceAcc.ExecTransfer(sellOrder.Address, action.fromaddr, action.execaddr, buyOrder.BoardlotCnt*sellOrder.PricePerBoardlot)
return nil, err return nil, err
} }
......
...@@ -81,3 +81,14 @@ func createAccountDB(height int64, db db.KV, exec, symbol string) (*account.DB, ...@@ -81,3 +81,14 @@ func createAccountDB(height int64, db db.KV, exec, symbol string) (*account.DB,
return account.NewAccountDB(defaultAssetExec, symbol, db) return account.NewAccountDB(defaultAssetExec, symbol, db)
} }
func createPriceDB(height int64, db db.KV, exec, symbol string) (*account.DB, error) {
if types.IsDappFork(height, pt.TradeX, pt.ForkTradePriceX) {
// 在fork 之前提的交易
if exec == "" {
return account.NewCoinsAccount(), nil
}
return account.NewAccountDB(exec, symbol, db)
}
return account.NewCoinsAccount(), nil
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment