diff --git a/accountmanager/accountmanager.go b/accountmanager/accountmanager.go index 3caca32d..139c6613 100644 --- a/accountmanager/accountmanager.go +++ b/accountmanager/accountmanager.go @@ -913,7 +913,10 @@ func (am *AccountManager) process(action *types.Action) error { if action.Recipient() != common.Name(sysName) { return ErrToNameInvalid } + } else { + return ErrAmountValueInvalid } + if err := am.TransferAsset(action.Sender(), action.Recipient(), action.AssetID(), action.Value()); err != nil { return err } diff --git a/consensus/dpos/processor.go b/consensus/dpos/processor.go index 70ef2566..c37f36a5 100644 --- a/consensus/dpos/processor.go +++ b/consensus/dpos/processor.go @@ -17,6 +17,7 @@ package dpos import ( + "fmt" "math/big" "github.com/fractalplatform/fractal/accountmanager" @@ -70,6 +71,11 @@ func (dpos *Dpos) processAction(chainCfg *params.ChainConfig, state *state.State }, }, } + + if action.Value().Cmp(big.NewInt(0)) > 0 { + return fmt.Errorf("invalid action value, must be zero") + } + switch action.Type() { case types.RegProducer: arg := &RegisterProducer{} @@ -122,12 +128,12 @@ func (dpos *Dpos) processAction(chainCfg *params.ChainConfig, state *state.State default: return accountmanager.ErrUnkownTxType } - accountDB, err := accountmanager.NewAccountManager(state) - if err != nil { - return err - } - if action.Value().Cmp(big.NewInt(0)) > 0 { - accountDB.TransferAsset(action.Sender(), action.Recipient(), action.AssetID(), action.Value()) - } + // accountDB, err := accountmanager.NewAccountManager(state) + // if err != nil { + // return err + // } + // if action.Value().Cmp(big.NewInt(0)) > 0 { + // accountDB.TransferAsset(action.Sender(), action.Recipient(), action.AssetID(), action.Value()) + // } return nil } diff --git a/test/contract/MultiAsset/MultiAsset.sol b/test/contract/MultiAsset/MultiAsset.sol index 2ab98ec3..305adfd8 100644 --- a/test/contract/MultiAsset/MultiAsset.sol +++ b/test/contract/MultiAsset/MultiAsset.sol @@ -9,11 +9,11 @@ contract MultiAsset { return issueasset(desc); } - function destroyasset(uint256 assetId, uint256 value) public returns(uint256) { + function destroyasset1(uint256 assetId, uint256 value) public returns(uint256) { return destroyasset(assetId, value); } - function getaccountid(address desc) public returns(uint256) { + function getaccountbyid(address desc) public returns(uint256) { return getaccountid(desc); }