From a5ffd7bdeb63771ce70df22d768981655bab3389 Mon Sep 17 00:00:00 2001 From: icodezjb Date: Fri, 2 Feb 2018 13:45:10 +0800 Subject: [PATCH] fix index external asset definition (#355) --- blockchain/wallet/annotated.go | 27 ++++++++++++--------------- blockchain/wallet/indexer.go | 4 +++- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/blockchain/wallet/annotated.go b/blockchain/wallet/annotated.go index 967e1ecf..a532e4df 100755 --- a/blockchain/wallet/annotated.go +++ b/blockchain/wallet/annotated.go @@ -14,7 +14,6 @@ import ( "github.com/bytom/common" "github.com/bytom/consensus" "github.com/bytom/crypto/sha3pool" - "github.com/bytom/errors" "github.com/bytom/protocol/bc" "github.com/bytom/protocol/bc/legacy" "github.com/bytom/protocol/vm/vmutil" @@ -79,13 +78,11 @@ func (w *Wallet) getAliasDefinition(assetID bc.AssetID) (string, json.RawMessage } //local asset and saved external asset - localAsset, err := w.AssetReg.FindByID(nil, &assetID) - if err != nil { - return "", nil, err + if localAsset, err := w.AssetReg.FindByID(nil, &assetID); err == nil { + alias := *localAsset.Alias + definition := []byte(localAsset.RawDefinitionByte) + return alias, definition, nil } - alias := *localAsset.Alias - definition := []byte(localAsset.RawDefinitionByte) - return alias, definition, nil //external asset if definition, err := w.getExternalDefinition(&assetID); definition != nil { @@ -127,19 +124,19 @@ func getAccountFromUTXO(outputID bc.Hash, walletDB db.DB) (*account.Account, err accountUTXOValue := walletDB.Get(account.UTXOKey(outputID)) if accountUTXOValue == nil { - return nil, errors.Wrap(fmt.Errorf("failed get account utxo:%x ", outputID)) + return nil, fmt.Errorf("failed get account utxo:%x ", outputID) } if err := json.Unmarshal(accountUTXOValue, &accountUTXO); err != nil { - return nil, errors.Wrap(err) + return nil, err } accountValue := walletDB.Get(account.Key(accountUTXO.AccountID)) if accountValue == nil { - return nil, errors.Wrap(fmt.Errorf("failed get account:%s ", accountUTXO.AccountID)) + return nil, fmt.Errorf("failed get account:%s ", accountUTXO.AccountID) } if err := json.Unmarshal(accountValue, &localAccount); err != nil { - return nil, errors.Wrap(err) + return nil, err } return &localAccount, nil @@ -154,20 +151,20 @@ func getAccountFromACP(program []byte, walletDB db.DB) (*account.Account, error) rawProgram := walletDB.Get(account.CPKey(hash)) if rawProgram == nil { - return nil, errors.Wrap(fmt.Errorf("failed get account control program:%x ", hash)) + return nil, fmt.Errorf("failed get account control program:%x ", hash) } if err := json.Unmarshal(rawProgram, &accountCP); err != nil { - return nil, errors.Wrap(err) + return nil, err } accountValue := walletDB.Get(account.Key(accountCP.AccountID)) if accountValue == nil { - return nil, errors.Wrap(fmt.Errorf("failed get account:%s ", accountCP.AccountID)) + return nil, fmt.Errorf("failed get account:%s ", accountCP.AccountID) } if err := json.Unmarshal(accountValue, &localAccount); err != nil { - return nil, errors.Wrap(err) + return nil, err } return &localAccount, nil diff --git a/blockchain/wallet/indexer.go b/blockchain/wallet/indexer.go index 49c88841..9c25ed2b 100755 --- a/blockchain/wallet/indexer.go +++ b/blockchain/wallet/indexer.go @@ -138,7 +138,9 @@ func (w *Wallet) reverseAccountUTXOs(batch db.Batch, b *legacy.Block) { } } -//save external assets definition +//save external and local assets definition, +//when query ,query local first and if have no then query external +//details see getAliasDefinition func saveExternalAssetDefinition(b *legacy.Block, walletDB db.DB) { storeBatch := walletDB.NewBatch() defer storeBatch.Write() -- 2.11.0