如何为Web3j编码一个Byte32值数组以传递到我的智能合约?

时间:2019-07-01 19:05:21

标签: web3-java

合同功能定义为:

  function createAggregate (string memory key, bytes32[2] memory part_array) public returns (bytes32)

并收到一份零件清单,定义为...

    List<Bytes32> elements

因此正试图使用​​:

    List<Type> items = new ArrayList<Type>();
    items.add(...);                    // user reference
    items.add(new DynamicArray<>(elements));

    final Function function = new Function("createAggregate", 
             items, 
             Arrays.asList(new TypeReference<Bytes32>() {})
            );
    ...

但是这不起作用,似乎是一个编码问题-对Bytes32进行编码正确是什么? (这似乎对字符串数组很好用)

1 个答案:

答案 0 :(得分:0)

通过以下方法解决此问题(尽管实际上是在寻找更具动态性的尺寸解决方案)

new StaticArray2(Bytes32.class,Utils.typeMap(elements,Bytes32.class));