Web3J - Создание кошелька Light занимает слишком много времени

Я создаю кошелек в своем приложении для Android, используя библиотеку Web3j: https://web3j.io/

См. код:

String seed = UUID.randomUUID().toString();
ECKeyPair exKey = Keys.createEcKeyPair();

WalletFile wallet = Wallet.createLight(seed,exKey);

Кошелек создается правильно, проблема в том, что процесс занимает много времени, около 10 минут.

Я делаю что-то неправильно?

Есть ли другой способ сделать это быстрее?


person Alex Bean    schedule 08.08.2018    source источник


Ответы (2)


Вы должны создать кошелек следующим образом:

try {
    ECKeyPair ecKeyPair = Keys.createEcKeyPair();
    BigInteger privateKeyInDec = ecKeyPair.getPrivateKey();
    String sPrivatekeyInHex = privateKeyInDec.toString(16);

    WalletFile aWallet = Wallet.createLight(UUID.randomUUID().toString(), ecKeyPair);
    String sAddress = aWallet.getAddress();
} catch (CipherException e | InvalidAlgorithmParameterException e | NoSuchAlgorithmException e | NoSuchProviderException e) {
    //
}
person James    schedule 08.08.2018
comment
Какая разница? В метод Wallet.createLight мы передаем те же аргументы. - person Alex Bean; 09.08.2018
comment
Разница в том, что в одном вы создаете легкий кошелек, а в другом нет. - person James; 09.08.2018
comment
Извините, возможно я что-то упустил, это ваша строка для создания кошелька: WalletFile aWallet = Wallet.createLight(UUID.randomUUID().toString(), ecKeyPair); А это мой WalletFile wallet = Wallet.createLight(seed,exKey); Где семя UUID.randomUUID().toString(), а exKey совпадает с exKeyPair - person Alex Bean; 09.08.2018
comment
Извините, вы правы. Я очнулся две минуты назад. Разница в том, что мой находится в методе try catch, поэтому, если есть ошибка, он поймает. - person James; 09.08.2018
comment
Не волнуйся jejeje. Теперь я вижу разницу, но это не моя проблема. Ошибки нет, кошелек генерируется нормально, но это занимает слишком много времени, поэтому он никогда не попадет в исключение. - person Alex Bean; 09.08.2018
comment
Можете ли вы вывести на консоль между каждой строкой и сказать мне, где это замедляется? - person James; 09.08.2018
comment
Именно в этой строчке тратится время: WalletFile wallet = Wallet.createLight(seed,exKey); - person Alex Bean; 09.08.2018
comment
Попробуйте изменить createLight на createStandard - person James; 09.08.2018
comment
Это вообще не работает, но благодаря этому совету я нашел решение: используйте Wallet.create без Light или createStandard. - person Alex Bean; 10.08.2018

Для создания кошелька я меняю метод:

WalletFile wallet = Wallet.createLight(String seed, ECKeyPair exKey);

Для следующего метода:

WalletFile wallet = Wallet.create(String seed,ECKeyPair exKey, int n, int p);

Что намного быстрее, чем createLight (было 10 минут, а сейчас несколько секунд).

person Alex Bean    schedule 10.08.2018