Как мне кодировать массив значений Byte32 для Web3j для передачи в мой умный контракт? - PullRequest
0 голосов
/ 01 июля 2019

Функция контракта определяется как:

  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 голосов
/ 02 июля 2019

В некотором роде решил эту проблему следующим образом (хотя на самом деле искал решение с более динамичным размером)

новый StaticArray2 (Bytes32.class, Utils.typeMap (elements, Bytes32.class));

...