Commit 403997db authored by hezhengjun's avatar hezhengjun

remove unpackInput

parent 77762595
package abi package abi
import ( import (
"bytes"
"errors" "errors"
"fmt" "fmt"
"math/big" "math/big"
...@@ -154,54 +153,6 @@ func Unpack(data []byte, methodName, abiData string) (output []*Param, err error ...@@ -154,54 +153,6 @@ func Unpack(data []byte, methodName, abiData string) (output []*Param, err error
return return
} }
func UnpackInput(data []byte, methodName, abiData string) (output []*Param, err error) {
if len(data) <= 4 {
log.Info("UnpackInput", "Data len is not correct", len(data), "methodName", methodName)
return output, err
}
// 解析ABI数据结构,获取本次调用的方法对象
abi, err := JSON(strings.NewReader(abiData))
if err != nil {
return output, err
}
var method Method
var ok bool
if method, ok = abi.Methods[methodName]; !ok {
return output, fmt.Errorf("function %v not exists", methodName)
}
if bytes.Compare(method.ID, data[:4]) != 0 {
log.Info("UnpackInput", "methodID is not consistent method.ID", common.Bytes2Hex(method.ID),
"data[:4]", common.Bytes2Hex(data[:4]))
return output, errors.New("Not consistent method")
}
if len(data[4:])%32 != 0 {
return output, errors.New("UnpackOutputOrEvent: improperly formatted output")
}
values, err := method.Inputs.UnpackValues(data[4:])
if err != nil {
return output, err
}
output = []*Param{}
for i, v := range values {
arg := method.Inputs[i]
pval := &Param{Name: arg.Name, Type: arg.Type.String(), Value: v}
if arg.Type.String() == "address" {
pval.Value = v.(common.Hash160Address).ToAddress().String()
log.Info("Unpack address", "address", pval.Value)
}
output = append(output, pval)
}
return
}
//同时支持input,output和event三种数据的unpack //同时支持input,output和event三种数据的unpack
func UnpackAllTypes(data []byte, name, abiData string) (output []*Param, err error) { func UnpackAllTypes(data []byte, name, abiData string) (output []*Param, err error) {
if len(data) == 0 { if len(data) == 0 {
...@@ -226,6 +177,9 @@ func UnpackAllTypes(data []byte, name, abiData string) (output []*Param, err err ...@@ -226,6 +177,9 @@ func UnpackAllTypes(data []byte, name, abiData string) (output []*Param, err err
} else { } else {
return output, errors.New("UnpackAllTypes: improperly formatted data") return output, errors.New("UnpackAllTypes: improperly formatted data")
} }
if arguments.LengthNonIndexed() == 0 {
return output, nil
}
} else if event, ok := abi.Events[name]; ok { } else if event, ok := abi.Events[name]; ok {
values, err = event.Inputs.UnpackValues(data) values, err = event.Inputs.UnpackValues(data)
arguments = event.Inputs arguments = event.Inputs
......
...@@ -35,7 +35,7 @@ func checkMintPara(mint *evmxgotypes.EvmxgoMint, tx2lock *types.Transaction, db ...@@ -35,7 +35,7 @@ func checkMintPara(mint *evmxgotypes.EvmxgoMint, tx2lock *types.Transaction, db
return errors.New("Not consistent bridgevmxgo address configured by manager") return errors.New("Not consistent bridgevmxgo address configured by manager")
} }
unpack, err := chain33Abi.UnpackInput(action.Para, LockMethod, bridgevmxgo.BridgeBankABI) unpack, err := chain33Abi.UnpackAllTypes(action.Para, LockMethod, bridgevmxgo.BridgeBankABI)
if err != nil { if err != nil {
return err return err
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment