web3j
web3j copied to clipboard
Invalid type provided exception during event encoding
Hey! I have exception when I try to encode event, that has been generated with the help of Web3j CLI Exception:
Caused by: java.lang.UnsupportedOperationException: Invalid type provided org.web3j.abi.datatypes.generated.StaticArray3
at org.web3j.abi.Utils.getParameterizedTypeName(Utils.java:95) ~[abi-4.8.8.jar:na]
at org.web3j.abi.Utils.getTypeName(Utils.java:50) ~[abi-4.8.8.jar:na]
at org.web3j.abi.EventEncoder.lambda$buildMethodSignature$0(EventEncoder.java:45) ~[abi-4.8.8.jar:na]
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[na:na]
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[na:na]
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[na:na]
at org.web3j.abi.EventEncoder.buildMethodSignature(EventEncoder.java:45) ~[abi-4.8.8.jar:na]
at org.web3j.abi.EventEncoder.encode(EventEncoder.java:33) ~[abi-4.8.8.jar:na]
Example:
public static final Event BADDEPOSIT_EVENT = new Event("BadDeposit",
Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<StaticArray3<Uint256>>() {}, new TypeReference<Uint256>() {}));
EventEncoder.encode(BADDEPOSIT_EVENT);
Version of web3j is 4.8.8
I would like to add that I run into a very similar issue if I try to decode a multi dimensional dynamic array:
java.lang.UnsupportedOperationException: Invalid class reference provided
at org.web3j.abi.Utils.getParameterizedTypeName(Utils.java:98)
at org.web3j.abi.Utils.getTypeName(Utils.java:50)
at org.web3j.abi.EventEncoder.lambda$buildMethodSignature$0(EventEncoder.java:45)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at org.web3j.abi.EventEncoder.buildMethodSignature(EventEncoder.java:45)
at org.web3j.abi.EventEncoder.encode(EventEncoder.java:33)
Example:
public static final Event TESTEVENT_EVENT = new Event("TestEvent",
Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<DynamicArray<Uint256>>>() {}));
EventEncoder.encode(TESTEVENT_EVENT);
Same here
Caused by: java.lang.UnsupportedOperationException: Invalid type provided org.web3j.abi.datatypes.generated.StaticArray2
at org.web3j.abi.Utils.getParameterizedTypeName(Utils.java:95)
at org.web3j.abi.Utils.getTypeName(Utils.java:50)
at org.web3j.abi.EventEncoder.lambda$buildMethodSignature$0(EventEncoder.java:45)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at org.web3j.abi.EventEncoder.buildMethodSignature(EventEncoder.java:45)
at org.web3j.abi.EventEncoder.encode(EventEncoder.java:33)
at org.web3j.tx.Contract.staticExtractEventParameters(Contract.java:742)
at org.web3j.tx.Contract.staticExtractEventParametersWithLog(Contract.java:782)
at org.web3j.tx.Contract.extractEventParametersWithLog(Contract.java:778)
Example:
public static final Event TESTEVENT_EVENT = new Event("TestEvent",
Arrays.<TypeReference<?>>asList(new TypeReference<StaticArray2<Uint256>>() {}));
EventEncoder.encode(TESTEVENT_EVENT);
web3j version: 4.9.4