Передача списка пользователей в смарт-контракт Solidity в конструкторе - PullRequest
0 голосов
/ 17 июня 2020

Я хочу создать смарт-контракт, в котором будет храниться список пользователей. У пользователей есть такие поля, как имя, телефон, идентификационная карта и т. Д. Я хотел бы передать список структур пользователя в качестве параметра конструктору контракта. Примерно так:

contract SomeContract {

    struct User{
        address payable account;
        string fullName;
        uint id;
        uint256 birthdate ;
        string telephoneNumber;
        ...
    }

    User[] public users;

    constructor(User[] memory usersList) public payable{
        users = usersList;
    }
}

Я пробовал это в Remix, но он показывает сообщение об ошибке, в котором говорится, что для поддержки этих типов в конструкторе необходимо использовать ABIEnconderV2. Я пробовал добавить pragma experimental ABIEnconderV2; в файл .sol, но кажется, что он тоже не поддерживается Remix.

Есть ли какой-нибудь «чистый» способ передачи объектно-подобных параметров, кроме передачи массивов для каждого поле отдельно, и это не требует слишком большого количества параметров?
Если нет, целесообразно ли использовать ABIEnconderV2, как его можно использовать?

...