import (
"encoding/json"
- "github.com/vapor/protocol/vm"
-
log "github.com/sirupsen/logrus"
"github.com/vapor/common"
"github.com/vapor/protocol/bc/types"
"github.com/vapor/protocol/state"
"github.com/vapor/protocol/validation"
+ "github.com/vapor/protocol/vm"
+ "github.com/vapor/protocol/vm/vmutil"
)
var (
if err := json.Unmarshal(msg.Data, data); err != nil {
return err
}
- c.engine.ProcessRegister(address.EncodeAddress(), data.Name, hash, height)
+ c.Engine.ProcessRegister(address.EncodeAddress(), data.Name, hash, height)
}
case vm.OP_VOTE:
if mapTxFee[tx.Tx.ID] >= consensus.VoteForgerFee {
if err := json.Unmarshal(msg.Data, data); err != nil {
return err
}
- c.engine.ProcessVote(address.EncodeAddress(), data.Forgers, hash, height)
+ c.Engine.ProcessVote(address.EncodeAddress(), data.Forgers, hash, height)
}
case vm.OP_REVOKE:
if mapTxFee[tx.Tx.ID] >= consensus.CancelVoteForgerFee {
if err := json.Unmarshal(msg.Data, data); err != nil {
return err
}
- c.engine.ProcessCancelVote(address.EncodeAddress(), data.Forgers, hash, height)
+ c.Engine.ProcessCancelVote(address.EncodeAddress(), data.Forgers, hash, height)
}
}
}
}
for _, output := range tx.Outputs {
fee -= output.Amount
+ if vmutil.IsUnspendable(output.ControlProgram) {
+ continue
+ }
value := int64(output.Amount)
address, err = common.NewAddressWitnessPubKeyHash(output.ControlProgram[2:], &consensus.ActiveNetParams)
if err != nil {
mapTxFee[tx.Tx.ID] = fee
}
- c.engine.UpdateAddressBalance(addressBalances)
+ c.Engine.UpdateAddressBalance(addressBalances)
return mapTxFee
}
if block.Height != oldBlockHeight {
return errors.New("The module vote records data with a problem")
}
- for i := block.Height + 1; i < c.bestNode.Height; i++ {
+ for i := block.Height + 1; i <= c.bestNode.Height; i++ {
b, err := c.GetBlockByHeight(i)
if err != nil {
return err