accounts/abi: fixed rebasing errors in method sig

This commit is contained in:
Marius van der Wijden 2020-04-15 11:27:25 +02:00
parent dbaec6419e
commit 362a486475

View file

@ -90,12 +90,23 @@ func NewMethod(name string, rawName string, mutability string, isConst, isPayabl
outputNames[i] += fmt.Sprintf(" %v", output.Name) outputNames[i] += fmt.Sprintf(" %v", output.Name)
} }
} }
constant := "" // Extract meaningful state mutability of solidity method.
if isConst { // If it's default value, never print it.
constant = "constant " state := mutability
if state == "nonpayable" {
state = ""
}
if state != "" {
state = state + " "
}
identity := fmt.Sprintf("function %v", rawName)
if isFallback {
identity = "fallback"
} else if isReceive {
identity = "receive"
} }
str := fmt.Sprintf("function %v(%v) %sreturns(%v)", rawName, strings.Join(inputNames, ", "), constant, strings.Join(outputNames, ", ")) str := fmt.Sprintf("%v(%v) %sreturns(%v)", identity, strings.Join(inputNames, ", "), state, strings.Join(outputNames, ", "))
sig := fmt.Sprintf("%v(%v)", rawName, strings.Join(types, ",")) sig := fmt.Sprintf("%v(%v)", rawName, strings.Join(types, ","))
id := crypto.Keccak256([]byte(sig))[:4] id := crypto.Keccak256([]byte(sig))[:4]