aboutsummaryrefslogtreecommitdiffstats
path: root/accounts/abi/type.go
diff options
context:
space:
mode:
authorThomas Bocek <tom@tomp2p.net>2016-11-24 22:50:45 +0800
committerPéter Szilágyi <peterke@gmail.com>2017-01-09 17:36:31 +0800
commit972f0bd3dbd4f6284e66c71b8746c35c10708ccc (patch)
tree01cccc3256899b9d6eb16d42f9f1e76389276541 /accounts/abi/type.go
parent808310a5692cb372754064ade6ed21e92f5c7342 (diff)
downloadgo-tangerine-972f0bd3dbd4f6284e66c71b8746c35c10708ccc.tar.gz
go-tangerine-972f0bd3dbd4f6284e66c71b8746c35c10708ccc.tar.zst
go-tangerine-972f0bd3dbd4f6284e66c71b8746c35c10708ccc.zip
accounts/abi: support custom int slice types
On solidity contract I have "uint32 []" type, when abigen creates Go bindings - they are also "[]uint32" type on Go side. Even though it looks like it should work - the actual type of the data coming from the chain is of type " []*big.Int". When executing contract function from Go side - getting unmarshal error: abi: cannot unmarshal []*big.Int in to []uint32 The fix is to create array with the correct type This fixed the issue reported in: https://github.com/ethereum/go-ethereum/issues/2802
Diffstat (limited to 'accounts/abi/type.go')
-rw-r--r--accounts/abi/type.go6
1 files changed, 5 insertions, 1 deletions
diff --git a/accounts/abi/type.go b/accounts/abi/type.go
index 2bd341bd2..6fde7bf71 100644
--- a/accounts/abi/type.go
+++ b/accounts/abi/type.go
@@ -91,7 +91,11 @@ func NewType(t string) (typ Type, err error) {
}
typ.Elem = &sliceType
typ.stringKind = sliceType.stringKind + t[len(res[1]):]
- return typ, nil
+ //Altough we know that this is an array, we cannot return as we don't
+ //know the type of the element, however, if it is still an array, then don't determine the type
+ if typ.Elem.IsArray {
+ return typ, nil
+ }
}
// parse the type and size of the abi-type.