func (m ManageType) GetRealToAddr(tx *types.Transaction) string {
	if len(tx.To) == 0 {
		return address.ExecAddress(string(tx.Execer))
	}
	return tx.To
}
GetRealToAddr main reason for overloading this function is because of the manage protocol
during implementation, to address specification varies fron height to height
package types
import (
	"reflect"
	"github.com/33cn/chain33/common/address"
	"github.com/33cn/chain33/types"
)
var (
	ManageX    = "manage"
	actionName = map[string]int32{
		"Modify": ManageActionModifyConfig,
	}
	logmap = map[int64]*types.LogInfo{
		TyLogModifyConfig: {Ty: reflect.TypeOf(types.ReceiptConfig{}), Name: "LogModifyConfig"},
	}
)
func init() {
	types.AllowUserExec = append(types.AllowUserExec, []byte(ManageX))
	types.RegFork(ManageX, InitFork)
	types.RegExec(ManageX, InitExecutor)
}
func InitFork(cfg *types.Chain33Config) {
	cfg.RegisterDappFork(ManageX, "Enable", 120000)
	cfg.RegisterDappFork(ManageX, "ForkManageExec", 400000)
}
func InitExecutor(cfg *types.Chain33Config) {
	types.RegistorExecutor(ManageX, NewType(cfg))
}
type ManageType struct {
	types.ExecTypeBase
}
func NewType(cfg *types.Chain33Config) *ManageType {
	c := &ManageType{}
	c.SetChild(c)
	c.SetConfig(cfg)
	return c
}
func (m *ManageType) GetPayload() types.Message {
	return &ManageAction{}
}
func (m ManageType) ActionName(tx *types.Transaction) string {
	return "config"
}
func (m ManageType) Amount(tx *types.Transaction) (int64, error) {
	return 0, nil
}
func (m *ManageType) GetLogMap() map[int64]*types.LogInfo {
	return logmap
}