From 56f549803ee38bce8579ea9ec9d1e6353896ac22 Mon Sep 17 00:00:00 2001 From: Musiczombie Date: Thu, 14 Nov 2019 15:10:42 +0800 Subject: [PATCH 1/3] fix assetname bug --- task/fee.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/task/fee.go b/task/fee.go index 213eace..566e195 100644 --- a/task/fee.go +++ b/task/fee.go @@ -2,6 +2,7 @@ package task import ( "database/sql" + "github.com/browser/client" "github.com/browser/db" . "github.com/browser/log" "github.com/browser/types" @@ -13,6 +14,22 @@ type FeeTask struct { *Base TokenIncome *big.Int ContractIncome *big.Int + nodeTokens map[string]string +} + +func (f *FeeTask) getTokenName(dbTx *sql.Tx, name string) (string, error) { + if tokenName, ok := f.nodeTokens[name]; ok { + return tokenName, nil + } else { + asset, err := client.GetAssetInfoByName(name) + if err != nil { + ZapLog.Error("GetAssetInfoByName error", zap.Error(err), zap.String("name", name)) + return "", err + } + dbToken := db.QueryTokenById(dbTx, asset.AssetId) + f.nodeTokens[name] = dbToken.AssetName + return dbToken.AssetName, nil + } } func (f *FeeTask) analysisFeeAction(data *types.BlockAndResult, dbTx *sql.Tx) error { @@ -37,6 +54,13 @@ func (f *FeeTask) analysisFeeAction(data *types.BlockAndResult, dbTx *sql.Tx) er Amount: fee, Reason: aR.Reason, } + if aR.Reason == 0 { + assetName, err := f.getTokenName(dbTx, aR.Account.String()) + if err != nil { + return err + } + mFee.To = assetName + } err := db.InsertFee(mFee, dbTx) if err != nil { ZapLog.Error("InsertFee error: ", zap.Error(err)) @@ -95,6 +119,7 @@ func (f *FeeTask) rollback(data *types.BlockAndResult, dbTx *sql.Tx) error { } func (f *FeeTask) Start(data chan *TaskChanData, rollbackData chan *TaskChanData, result chan bool, startHeight uint64) { + f.nodeTokens = make(map[string]string) f.startHeight = startHeight chain, err := db.Mysql.GetChainStatus() if err != nil { From 236cb4bec32bb82f5022a4e1047287442f2bb8f4 Mon Sep 17 00:00:00 2001 From: Musiczombie Date: Thu, 14 Nov 2019 16:00:18 +0800 Subject: [PATCH 2/3] fix token decimals bug --- task/token.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/task/token.go b/task/token.go index 0e220b6..53d541a 100644 --- a/task/token.go +++ b/task/token.go @@ -160,7 +160,7 @@ func saveToken(tx *sql.Tx, action *types.RPCAction, blockTime uint64, height uin dbToken := &db.Token{} dbToken.AssetName = tokenName dbToken.AssetSymbol = obj.Symbol - dbToken.Decimals = obj.Decimals + dbToken.Decimals = tokenInfo.Decimals dbToken.AssetId = tokenInfo.AssetId dbToken.ContractName = tokenInfo.Contract.String() dbToken.Description = obj.Description @@ -232,7 +232,13 @@ func rollbackToken(tx *sql.Tx, action *types.RPCAction, blockTime uint64, height iActionAsset, _ := parsePayload(action) if action.Type == types.IssueAsset { obj := iActionAsset.(types.IssueAssetObject) - db.DeleteTokenByName(tx, obj.AssetName) + tokenName := obj.AssetName + if idx := strings.Index(obj.AssetName, ":"); idx <= 0 { + if len(action.From.String()) > 0 { + tokenName = action.From.String() + ":" + obj.AssetName + } + } + db.DeleteTokenByName(tx, tokenName) } else if action.Type == types.IncreaseAsset { obj := iActionAsset.(types.IncAssetObject) dbToken := db.QueryTokenBackupById(tx, obj.AssetId, height) From f4d2c3bb9f172c56657fef2af8697bcd87103584 Mon Sep 17 00:00:00 2001 From: Musiczombie Date: Fri, 15 Nov 2019 11:13:12 +0800 Subject: [PATCH 3/3] fix decimals bug --- task/utils.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/task/utils.go b/task/utils.go index 3387154..d2a4440 100644 --- a/task/utils.go +++ b/task/utils.go @@ -2,6 +2,7 @@ package task import ( "bytes" + "github.com/browser/client" . "github.com/browser/log" "github.com/browser/rlp" "github.com/browser/types" @@ -135,6 +136,12 @@ func parsePayload(action *types.RPCAction) (interface{}, error) { Contract: issueAssetPayload.Contract, Description: issueAssetPayload.Description, } + asset, err := client.GetAssetInfoByName(issueAssetPayload.AssetName) + if err != nil { + ZapLog.Error("GetAssetInfoByName error", zap.Error(err), zap.String("name", issueAssetPayload.AssetName)) + return nil, err + } + tmpPayload.Decimals = asset.Decimals parsedPayload = tmpPayload //} }