for txIndex := len(b.Transactions) - 1; txIndex >= 0; txIndex-- {
tx := b.Transactions[txIndex]
for j := range tx.Outputs {
- resOut, err := tx.IntraChainOutput(*tx.ResultIds[j])
- if err != nil {
+ code := []byte{}
+ switch resOut := tx.Entries[*tx.ResultIds[j]].(type) {
+ case *bc.IntraChainOutput:
+ code = resOut.ControlProgram.Code
+ case *bc.VoteOutput:
+ code = resOut.ControlProgram.Code
+ default:
continue
}
- if segwit.IsP2WScript(resOut.ControlProgram.Code) {
+ if segwit.IsP2WScript(code) {
batch.Delete(account.StandardUTXOKey(*tx.ResultIds[j]))
} else {
batch.Delete(account.ContractUTXOKey(*tx.ResultIds[j]))
}
default:
- log.WithFields(log.Fields{"module": logModule}).Error("txOutToUtxos fail on get bcOut")
+ log.WithFields(log.Fields{"module": logModule}).Warn("txOutToUtxos fail on get bcOut")
continue
}