"github.com/bytom/account"
"github.com/bytom/asset"
"github.com/bytom/blockchain/query"
- "github.com/bytom/crypto/sha3pool"
dbm "github.com/bytom/database/leveldb"
chainjson "github.com/bytom/encoding/json"
"github.com/bytom/errors"
func (w *Wallet) filterAccountTxs(b *types.Block, txStatus *bc.TransactionStatus) []*query.AnnotatedTx {
annotatedTxs := make([]*query.AnnotatedTx, 0, len(b.Transactions))
-transactionLoop:
for pos, tx := range b.Transactions {
- statusFail, _ := txStatus.GetStatus(pos)
- for _, v := range tx.Outputs {
- var hash [32]byte
- sha3pool.Sum256(hash[:], v.ControlProgram)
-
- if bytes := w.DB.Get(account.ContractKey(hash)); bytes != nil {
- annotatedTxs = append(annotatedTxs, w.buildAnnotatedTransaction(tx, b, statusFail, pos))
- continue transactionLoop
- }
- }
-
- for _, v := range tx.Inputs {
- outid, err := v.SpentOutputID()
- if err != nil {
- continue
- }
- if bytes := w.DB.Get(account.StandardUTXOKey(outid)); bytes != nil {
- annotatedTxs = append(annotatedTxs, w.buildAnnotatedTransaction(tx, b, statusFail, pos))
- continue transactionLoop
- }
+ if pos == 0 {
+ continue
}
+ statusFail, _ := txStatus.GetStatus(pos)
+ annotatedTxs = append(annotatedTxs, w.buildAnnotatedTransaction(tx, b, statusFail, pos))
}
return annotatedTxs